[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-vercel-chat-adapter-state-ioredis-th":3,"guides-for-vercel-chat-adapter-state-ioredis":231,"similar-k179hhmdxdrjeykjm29ahz1ta9866n8q":232},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":21,"identity":191,"isFallback":195,"parentExtension":196,"providers":197,"relations":201,"repo":203,"workflow":228},1778054052548.2278,"k179hhmdxdrjeykjm29ahz1ta9866n8q",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":12,"sourceUrl":13,"tags":14},"ioredis state adapter for chat (production)",{},"Chat ioredis State Adapter","https://github.com/vercel/chat/tree/HEAD/packages/state-ioredis",[15,16,17,18,19,20],"chat","state","ioredis","redis","typescript","production",{"_creationTime":22,"_id":23,"extensionId":5,"locale":24,"result":25,"trustSignals":179,"workflow":189},1778054107364.4434,"kn7c6kht90p7p7cqmj0jmkqaa1866rtw","en",{"checks":26,"evaluatedAt":169,"extensionSummary":170,"promptVersionExtension":171,"promptVersionScoring":172,"rationale":173,"score":174,"summary":175,"tags":176,"targetMarket":177,"tier":178},[27,32,35,38,42,45,50,54,57,60,64,69,72,76,79,82,85,88,91,94,98,102,106,110,114,117,120,124,128,131,134,137,140,143,147,150,153,156,159,162,166],{"category":28,"check":29,"severity":30,"summary":31},"Practical Utility","Problem relevance","pass","The description 'ioredis state adapter for chat (production)' clearly states the problem: providing an ioredis state adapter for chat applications, implying a need for a robust state management solution in a production environment.",{"category":28,"check":33,"severity":30,"summary":34},"Unique selling proposition","The extension offers a specific ioredis-based state adapter for the Chat SDK, providing an alternative to the default redis adapter and supporting features like Redis Cluster and Sentinel, which is a clear value proposition.",{"category":28,"check":36,"severity":30,"summary":37},"Production readiness","The extension provides a complete state adapter implementation, including connection management, subscription handling, locking, caching, and queueing, which are essential for production readiness.",{"category":39,"check":40,"severity":30,"summary":41},"Scope","Single responsibility principle","The extension focuses solely on providing a state adapter for the Chat SDK using ioredis, adhering to a single responsibility.",{"category":39,"check":43,"severity":30,"summary":44},"Description quality","The description 'ioredis state adapter for chat (production)' is concise, accurate, and directly reflects the functionality of the extension.",{"category":46,"check":47,"severity":48,"summary":49},"Invocation","Scoped tools","not_applicable","This extension is a state adapter and does not expose specific tools for an agent to select; it's integrated into the Chat SDK.",{"category":51,"check":52,"severity":30,"summary":53},"Documentation","Configuration & parameter reference","The README clearly documents the configuration options (`url`, `client`, `keyPrefix`), their requirements, and descriptions.",{"category":39,"check":55,"severity":48,"summary":56},"Tool naming","This extension is a state adapter and does not expose user-facing tools with names.",{"category":39,"check":58,"severity":48,"summary":59},"Minimal I/O surface","As a state adapter, it does not expose I/O surfaces directly to the user or agent; its interactions are internal to the Chat SDK.",{"category":61,"check":62,"severity":30,"summary":63},"License","License usability","The extension is licensed under the MIT license, which is a permissive open-source license.",{"category":65,"check":66,"severity":67,"summary":68},"Maintenance","Commit recency","warning","There are no commits on the default branch in the last 12 months, suggesting the project may be unmaintained or has stalled active development.",{"category":65,"check":70,"severity":30,"summary":71},"Dependency Management","The extension uses `tsup` for building and `vitest` for testing, which are standard tools. It lists `chat` as a workspace dependency and `ioredis` as a runtime dependency, with no complex dependency management issues apparent.",{"category":73,"check":74,"severity":30,"summary":75},"Security","Secret Management","The extension does not appear to handle or expose secrets directly. Connection URLs or existing clients are provided via configuration, and no sensitive data is logged to stdout/stderr.",{"category":73,"check":77,"severity":48,"summary":78},"Injection","This extension is a state adapter and does not load or execute external data or files that could be subject to injection attacks.",{"category":73,"check":80,"severity":30,"summary":81},"Transitive Supply-Chain Grenades","The extension's dependencies are managed via npm and workspace, and its code is self-contained. It does not fetch remote code or data at runtime.",{"category":73,"check":83,"severity":30,"summary":84},"Sandbox Isolation","As a state adapter, the extension primarily interacts with Redis and does not modify files outside of its designated scope.",{"category":73,"check":86,"severity":30,"summary":87},"Sandbox escape primitives","No detached process spawns or deny-retry loops were found in the provided code.",{"category":73,"check":89,"severity":30,"summary":90},"Data Exfiltration","The extension does not make outbound network calls for telemetry or data submission, and secrets are handled via configuration, not direct submission.",{"category":73,"check":92,"severity":30,"summary":93},"Hidden Text Tricks","The bundled files do not contain any hidden steering tricks, invisible characters, or obfuscated content.",{"category":95,"check":96,"severity":30,"summary":97},"Hooks","Opaque code execution","The bundled code is written in TypeScript and compiled to standard JavaScript, with no signs of obfuscation or runtime code fetching.",{"category":99,"check":100,"severity":30,"summary":101},"Portability","Structural Assumption","The extension relies on Redis and ioredis, which are external dependencies, but makes no assumptions about the user's project file structure beyond providing connection options.",{"category":103,"check":104,"severity":48,"summary":105},"Trust","Issues Attention","Issue data is not available for this repository.",{"category":107,"check":108,"severity":30,"summary":109},"Versioning","Release Management","The package.json file specifies a version number (4.27.0), and the CHANGELOG.md file tracks releases.",{"category":111,"check":112,"severity":48,"summary":113},"Code Execution","Validation","This extension primarily interacts with Redis and does not expose user-facing tools with complex input validation needs beyond connection parameters.",{"category":73,"check":115,"severity":30,"summary":116},"Unguarded Destructive Operations","The extension's operations on Redis, such as deleting keys or managing locks, are guarded by specific methods and do not appear to have unguarded destructive primitives.",{"category":111,"check":118,"severity":30,"summary":119},"Error Handling","The ioredis client has error listeners, and the adapter throws errors when not connected, indicating basic error handling.",{"category":111,"check":121,"severity":122,"summary":123},"Logging","info","The extension includes basic error logging for the ioredis client, but does not appear to have a comprehensive audit log for all actions.",{"category":125,"check":126,"severity":48,"summary":127},"Compliance","GDPR","The extension is a state adapter and does not directly handle personal data; its function is to store state for the Chat SDK.",{"category":125,"check":129,"severity":30,"summary":130},"Target market","The extension is a general-purpose Redis state adapter and does not have any region-specific logic, making it globally applicable.",{"category":99,"check":132,"severity":30,"summary":133},"Runtime stability","The extension relies on standard Node.js and ioredis, and is designed to be platform-agnostic as long as Redis is accessible.",{"category":46,"check":135,"severity":30,"summary":136},"Precise Purpose","The description 'ioredis state adapter for chat (production)' clearly states the artifact (ioredis state adapter) and its purpose (for chat applications in production).",{"category":46,"check":138,"severity":30,"summary":139},"Concise Frontmatter","The README frontmatter is concise and effectively summarizes the extension's purpose and installation.",{"category":51,"check":141,"severity":30,"summary":142},"Concise Body","The README body is concise, providing essential information without excessive detail.",{"category":144,"check":145,"severity":30,"summary":146},"Context","Progressive Disclosure","The README uses progressive disclosure, with clear sections for Installation, Usage, Configuration, and Key structure.",{"category":144,"check":148,"severity":48,"summary":149},"Forked exploration","This extension is a state adapter and does not involve exploration or code review workflows.",{"category":28,"check":151,"severity":30,"summary":152},"Usage examples","The README provides clear and ready-to-use examples for both URL-based and existing client instantiation.",{"category":28,"check":154,"severity":122,"summary":155},"Edge cases","While the README lists configuration options, it doesn't explicitly detail failure modes or recovery steps for scenarios like Redis connection issues.",{"category":111,"check":157,"severity":48,"summary":158},"Tool Fallback","This extension is a state adapter and does not rely on external tools or have fallbacks in that sense.",{"category":99,"check":160,"severity":30,"summary":161},"Stack assumptions","The extension clearly states its dependency on Node.js and ioredis, and its type is TypeScript, as indicated by the tsconfig and build configurations.",{"category":163,"check":164,"severity":30,"summary":165},"Safety","Halt on unexpected state","The adapter throws an error if not connected before executing operations, indicating it halts on unexpected pre-state.",{"category":99,"check":167,"severity":48,"summary":168},"Cross-skill coupling","This extension is a state adapter and does not interact with or depend on other skills directly.",1778054085084,"This extension provides a state management solution for the Chat SDK using the ioredis library. It supports Redis Cluster and Sentinel, integrates with existing ioredis clients, and offers features like subscriptions, distributed locking, and key-value caching.","2.0.0","3.4.0","The extension is a well-documented and production-ready ioredis state adapter for the Chat SDK. It adheres to single responsibility, provides clear usage examples, and has good code quality. The only minor drawback is the lack of recent commits, but this does not impact its functionality as a stable adapter.",90,"A production-ready ioredis state adapter for the Chat SDK, offering robust Redis integration.",[15,16,17,18,19,20],"global","verified",{"codeQuality":180,"collectedAt":181,"documentation":182,"maintenance":184,"security":185,"testCoverage":188},{},1778054071721,{"descriptionLength":183,"readmeSize":8},43,{},{"hasNpmPackage":186,"license":187,"smitheryVerified":186},false,"MIT",{"hasCi":186,"hasTests":186},{"updatedAt":190},1778054107364,{"githubOwner":192,"githubRepo":15,"locale":24,"slug":193,"type":194},"vercel","chat-adapter-state-ioredis","skill",true,null,{"extract":198,"llm":200},{"commitSha":199,"license":187},"3e4764db4d5c826cd0938cdcd0130d14eb8ed992",{"promptVersionExtension":171,"promptVersionScoring":172,"score":174,"targetMarket":177,"tier":178},{"repoId":202},"kd7ds766kaxjjf3s3hr8y7z2t9865yn3",{"_creationTime":204,"_id":202,"identity":205,"providers":207,"workflow":225},1777995558409.8787,{"githubOwner":192,"githubRepo":15,"sourceUrl":206},"https://github.com/vercel/chat",{"discover":208,"github":211},{"sources":209},[210],"skills-sh",{"closedIssues90d":212,"forks":213,"homepage":214,"license":187,"openIssues90d":215,"pushedAt":216,"readmeSize":217,"stars":218,"topics":219},77,192,"https://chat-sdk.dev/",11,1778027870000,3458,1917,[220,15,221,222,223,224,192],"ai","discord","google-chat","slack","teams",{"discoverAt":226,"extractAt":227,"githubAt":227,"updatedAt":227},1777995558409,1778054055543,{"anyEnrichmentAt":229,"extractAt":230,"githubAt":229,"llmAt":190,"updatedAt":190},1778054054404,1778054052548,[],[233,254,275,293,314,347],{"_creationTime":234,"_id":235,"community":236,"display":237,"identity":246,"providers":248,"relations":252,"workflow":253},1778054052548.222,"k17fard3a1kf7n7ybxjexq5k2h866rf5",{"reviewCount":8},{"description":238,"installMethods":239,"name":240,"sourceUrl":241,"tags":242},"Discord adapter for chat",{},"Discord Adapter","https://github.com/vercel/chat/tree/HEAD/packages/adapter-discord",[221,243,15,244,19,245],"adapter","sdk","nodejs",{"githubOwner":192,"githubRepo":15,"locale":24,"slug":247,"type":194},"chat-adapter-discord",{"extract":249,"llm":250},{"commitSha":199,"license":187},{"promptVersionExtension":171,"promptVersionScoring":172,"score":251,"targetMarket":177,"tier":178},98,{"repoId":202},{"anyEnrichmentAt":229,"extractAt":230,"githubAt":229,"llmAt":190,"updatedAt":190},{"_creationTime":255,"_id":256,"community":257,"display":258,"identity":268,"providers":270,"relations":273,"workflow":274},1778054052548.2288,"k176w64x0xqzqqadda9yb8vg45866vbk",{"reviewCount":8},{"description":259,"installMethods":260,"name":261,"sourceUrl":262,"tags":263},"Postgres state adapter for chat (production)",{},"Postgres State Adapter","https://github.com/vercel/chat/tree/HEAD/packages/state-pg",[264,265,19,20,266,267],"postgres","state-management","database","chat-sdk",{"githubOwner":192,"githubRepo":15,"locale":24,"slug":269,"type":194},"chat-adapter-state-pg",{"extract":271,"llm":272},{"commitSha":199,"license":187},{"promptVersionExtension":171,"promptVersionScoring":172,"score":251,"targetMarket":177,"tier":178},{"repoId":202},{"anyEnrichmentAt":229,"extractAt":230,"githubAt":229,"llmAt":190,"updatedAt":190},{"_creationTime":276,"_id":277,"community":278,"display":279,"identity":285,"providers":287,"relations":291,"workflow":292},1778054052548.2292,"k173xvd15t98pw88z3sq0bxpah867f8f",{"reviewCount":8},{"description":280,"installMethods":281,"name":282,"sourceUrl":283,"tags":284},"Redis state adapter for chat (production)",{},"Chat Redis State Adapter","https://github.com/vercel/chat/tree/HEAD/packages/state-redis",[18,265,19,20,267,243],{"githubOwner":192,"githubRepo":15,"locale":24,"slug":286,"type":194},"chat-adapter-state-redis",{"extract":288,"llm":289},{"commitSha":199,"license":187},{"promptVersionExtension":171,"promptVersionScoring":172,"score":290,"targetMarket":177,"tier":178},95,{"repoId":202},{"anyEnrichmentAt":229,"extractAt":230,"githubAt":229,"llmAt":190,"updatedAt":190},{"_creationTime":294,"_id":295,"community":296,"display":297,"identity":305,"providers":307,"relations":312,"workflow":313},1778054052548.2283,"k17fxwq9mzph37hyc2pr02cq8x866svj",{"reviewCount":8},{"description":298,"installMethods":299,"name":300,"sourceUrl":301,"tags":302},"In-memory state adapter for chat (development/testing)",{},"In-memory state adapter for chat","https://github.com/vercel/chat/tree/HEAD/packages/state-memory",[15,16,303,304,19,243],"memory","testing",{"githubOwner":192,"githubRepo":15,"locale":24,"slug":306,"type":194},"chat-adapter-state-memory",{"extract":308,"llm":309},{"commitSha":199,"license":187},{"promptVersionExtension":171,"promptVersionScoring":172,"score":310,"targetMarket":177,"tier":311},75,"flagged",{"repoId":202},{"anyEnrichmentAt":229,"extractAt":230,"githubAt":229,"llmAt":190,"updatedAt":190},{"_creationTime":315,"_id":316,"community":317,"display":318,"identity":329,"providers":333,"relations":340,"workflow":342},1777995614337.9844,"k17f0xfg2pkfqd1p5jjzh8sswh8645px",{"reviewCount":8},{"description":319,"installMethods":320,"name":321,"sourceUrl":322,"tags":323},"Scaffold an editable Tandem control panel app",{},"Tandem Panel Scaffold","https://github.com/frumu-ai/tandem/tree/HEAD/packages/create-tandem-panel",[324,325,326,19,327,328],"scaffolding","cli","react","vite","ui",{"githubOwner":330,"githubRepo":331,"locale":24,"slug":332,"type":194},"frumu-ai","tandem","create-tandem-panel",{"extract":334,"llm":337,"smithery":339},{"commitSha":335,"license":336},"25c8ae7c2f8b20d576a2b8d44946ac2e0ff9408d","MIT OR Apache-2.0",{"promptVersionExtension":171,"promptVersionScoring":172,"score":338,"targetMarket":177,"tier":178},100,{"qualityScore":8,"totalActivations":8,"uniqueUsers":8,"useCount":8,"verified":186},{"repoId":341},"kd72pd305er4m7vecv9p6mnd4s865kea",{"anyEnrichmentAt":343,"extractAt":344,"githubAt":345,"llmAt":346,"smitheryAt":343,"updatedAt":346},1777995723550,1777995614338,1777995614791,1777995897177,{"_creationTime":348,"_id":349,"community":350,"display":351,"identity":360,"providers":363,"relations":368,"workflow":370},1778054425877.1958,"k171ck7gyw157xcvkrk6k0r9y1866w01",{"reviewCount":8},{"description":352,"name":353,"sourceUrl":354,"tags":355},"ESLint rules for React Hooks","ESLint Plugin React Hooks","https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks",[326,356,357,358,359,19],"eslint","linting","hooks","javascript",{"githubOwner":361,"githubRepo":326,"locale":24,"slug":362,"type":194},"facebook","eslint-plugin-react-hooks",{"extract":364,"llm":366},{"commitSha":365,"license":187},"9635257c1b557acc81f95b1e974a54c752e703a2",{"promptVersionExtension":171,"promptVersionScoring":172,"score":367,"targetMarket":177,"tier":178},99,{"repoId":369},"kd73v9dy7vwq94hgzc7eh43b9s865rhq",{"anyEnrichmentAt":371,"extractAt":372,"githubAt":371,"llmAt":373,"updatedAt":373},1778054428301,1778054425877,1778054588390]