zilmate 1.8.0 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/.agents/skills/copywriting/SKILL.md +252 -0
  2. package/.agents/skills/copywriting/evals/evals.json +111 -0
  3. package/.agents/skills/copywriting/references/copy-frameworks.md +344 -0
  4. package/.agents/skills/copywriting/references/natural-transitions.md +272 -0
  5. package/.agents/skills/firecrawl-deep-research/SKILL.md +108 -0
  6. package/.agents/skills/shadcn/SKILL.md +267 -0
  7. package/.agents/skills/shadcn/agents/openai.yml +5 -0
  8. package/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
  9. package/.agents/skills/shadcn/assets/shadcn.png +0 -0
  10. package/.agents/skills/shadcn/cli.md +290 -0
  11. package/.agents/skills/shadcn/customization.md +209 -0
  12. package/.agents/skills/shadcn/evals/evals.json +47 -0
  13. package/.agents/skills/shadcn/mcp.md +105 -0
  14. package/.agents/skills/shadcn/registry.md +277 -0
  15. package/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
  16. package/.agents/skills/shadcn/rules/composition.md +195 -0
  17. package/.agents/skills/shadcn/rules/forms.md +192 -0
  18. package/.agents/skills/shadcn/rules/icons.md +101 -0
  19. package/.agents/skills/shadcn/rules/styling.md +162 -0
  20. package/.agents/skills/tavily-research/SKILL.md +100 -0
  21. package/.agents/skills/upstash/SKILL.md +48 -0
  22. package/.agents/skills/upstash/upstash-box-js/overview.md +243 -0
  23. package/.agents/skills/upstash/upstash-box-py/overview.md +275 -0
  24. package/.agents/skills/upstash/upstash-cli/overview.md +138 -0
  25. package/.agents/skills/upstash/upstash-qstash-js/advanced/callbacks.md +147 -0
  26. package/.agents/skills/upstash/upstash-qstash-js/advanced/deduplication.md +86 -0
  27. package/.agents/skills/upstash/upstash-qstash-js/advanced/dlq.md +164 -0
  28. package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
  29. package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
  30. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/local-development.md +106 -0
  31. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
  32. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
  33. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/schedules.md +177 -0
  34. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/url-groups.md +127 -0
  35. package/.agents/skills/upstash/upstash-qstash-js/overview.md +81 -0
  36. package/.agents/skills/upstash/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
  37. package/.agents/skills/upstash/upstash-qstash-js/verification/receiver.md +213 -0
  38. package/.agents/skills/upstash/upstash-ratelimit-js/algorithms.md +84 -0
  39. package/.agents/skills/upstash/upstash-ratelimit-js/features.md +117 -0
  40. package/.agents/skills/upstash/upstash-ratelimit-js/methods-getting-started.md +77 -0
  41. package/.agents/skills/upstash/upstash-ratelimit-js/overview.md +26 -0
  42. package/.agents/skills/upstash/upstash-ratelimit-js/pricing-cost.md +146 -0
  43. package/.agents/skills/upstash/upstash-ratelimit-js/traffic-protection.md +77 -0
  44. package/.agents/skills/upstash/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
  45. package/.agents/skills/upstash/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
  46. package/.agents/skills/upstash/upstash-redis-js/advanced-features/scripting.md +124 -0
  47. package/.agents/skills/upstash/upstash-redis-js/data-structures/hashes.md +71 -0
  48. package/.agents/skills/upstash/upstash-redis-js/data-structures/json.md +133 -0
  49. package/.agents/skills/upstash/upstash-redis-js/data-structures/lists.md +72 -0
  50. package/.agents/skills/upstash/upstash-redis-js/data-structures/sets.md +90 -0
  51. package/.agents/skills/upstash/upstash-redis-js/data-structures/sorted-sets.md +126 -0
  52. package/.agents/skills/upstash/upstash-redis-js/data-structures/streams.md +196 -0
  53. package/.agents/skills/upstash/upstash-redis-js/data-structures/strings.md +73 -0
  54. package/.agents/skills/upstash/upstash-redis-js/migrations/from-ioredis.md +163 -0
  55. package/.agents/skills/upstash/upstash-redis-js/migrations/from-redis-node.md +205 -0
  56. package/.agents/skills/upstash/upstash-redis-js/overview.md +183 -0
  57. package/.agents/skills/upstash/upstash-redis-js/patterns/caching.md +58 -0
  58. package/.agents/skills/upstash/upstash-redis-js/patterns/distributed-locks.md +130 -0
  59. package/.agents/skills/upstash/upstash-redis-js/patterns/leaderboard.md +134 -0
  60. package/.agents/skills/upstash/upstash-redis-js/patterns/rate-limiting.md +187 -0
  61. package/.agents/skills/upstash/upstash-redis-js/patterns/session-management.md +217 -0
  62. package/.agents/skills/upstash/upstash-redis-js/performance/batching-operations.md +76 -0
  63. package/.agents/skills/upstash/upstash-redis-js/performance/data-serialization.md +134 -0
  64. package/.agents/skills/upstash/upstash-redis-js/performance/error-handling.md +118 -0
  65. package/.agents/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md +105 -0
  66. package/.agents/skills/upstash/upstash-redis-js/performance/redis-replicas.md +14 -0
  67. package/.agents/skills/upstash/upstash-redis-js/performance/ttl-expiration.md +32 -0
  68. package/.agents/skills/upstash/upstash-redis-js/search/adapters.md +99 -0
  69. package/.agents/skills/upstash/upstash-redis-js/search/commands/aggregating.md +234 -0
  70. package/.agents/skills/upstash/upstash-redis-js/search/commands/aliases.md +76 -0
  71. package/.agents/skills/upstash/upstash-redis-js/search/commands/index-management.md +124 -0
  72. package/.agents/skills/upstash/upstash-redis-js/search/commands/querying.md +315 -0
  73. package/.agents/skills/upstash/upstash-redis-js/search/overview.md +155 -0
  74. package/.agents/skills/upstash/upstash-redis-start/overview.md +71 -0
  75. package/.agents/skills/upstash/upstash-search-js/overview.md +48 -0
  76. package/.agents/skills/upstash/upstash-search-js/quick-start.md +158 -0
  77. package/.agents/skills/upstash/upstash-search-js/sdk-overview.md +158 -0
  78. package/.agents/skills/upstash/upstash-vector-js/features/filtering-and-metadata.md +82 -0
  79. package/.agents/skills/upstash/upstash-vector-js/features/index-structure.md +193 -0
  80. package/.agents/skills/upstash/upstash-vector-js/features/namespaces.md +32 -0
  81. package/.agents/skills/upstash/upstash-vector-js/overview.md +44 -0
  82. package/.agents/skills/upstash/upstash-vector-js/sdk-methods.md +210 -0
  83. package/.agents/skills/upstash/upstash-workflow-js/agents.md +248 -0
  84. package/.agents/skills/upstash/upstash-workflow-js/basics/client.md +180 -0
  85. package/.agents/skills/upstash/upstash-workflow-js/basics/context.md +230 -0
  86. package/.agents/skills/upstash/upstash-workflow-js/basics/serve.md +70 -0
  87. package/.agents/skills/upstash/upstash-workflow-js/features/flow-control.md +145 -0
  88. package/.agents/skills/upstash/upstash-workflow-js/features/invoke.md +97 -0
  89. package/.agents/skills/upstash/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
  90. package/.agents/skills/upstash/upstash-workflow-js/features/wait-for-event.md +97 -0
  91. package/.agents/skills/upstash/upstash-workflow-js/features/webhooks.md +79 -0
  92. package/.agents/skills/upstash/upstash-workflow-js/how-to/local-dev.md +177 -0
  93. package/.agents/skills/upstash/upstash-workflow-js/how-to/middleware.md +166 -0
  94. package/.agents/skills/upstash/upstash-workflow-js/how-to/migrations.md +201 -0
  95. package/.agents/skills/upstash/upstash-workflow-js/how-to/realtime.md +186 -0
  96. package/.agents/skills/upstash/upstash-workflow-js/overview.md +55 -0
  97. package/.agents/skills/upstash/upstash-workflow-js/rest-api.md +156 -0
  98. package/.agents/skills/upstash/upstash-workflow-js/troubleshooting.md +201 -0
  99. package/.agents/skills/upstash-box-js/SKILL.md +248 -0
  100. package/.agents/skills/upstash-box-py/SKILL.md +280 -0
  101. package/.agents/skills/upstash-cli/SKILL.md +143 -0
  102. package/.agents/skills/upstash-qstash-js/SKILL.md +86 -0
  103. package/.agents/skills/upstash-qstash-js/advanced/callbacks.md +147 -0
  104. package/.agents/skills/upstash-qstash-js/advanced/deduplication.md +86 -0
  105. package/.agents/skills/upstash-qstash-js/advanced/dlq.md +164 -0
  106. package/.agents/skills/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
  107. package/.agents/skills/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
  108. package/.agents/skills/upstash-qstash-js/fundamentals/local-development.md +106 -0
  109. package/.agents/skills/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
  110. package/.agents/skills/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
  111. package/.agents/skills/upstash-qstash-js/fundamentals/schedules.md +177 -0
  112. package/.agents/skills/upstash-qstash-js/fundamentals/url-groups.md +127 -0
  113. package/.agents/skills/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
  114. package/.agents/skills/upstash-qstash-js/verification/receiver.md +213 -0
  115. package/.agents/skills/upstash-ratelimit-js/SKILL.md +31 -0
  116. package/.agents/skills/upstash-ratelimit-js/algorithms.md +84 -0
  117. package/.agents/skills/upstash-ratelimit-js/features.md +117 -0
  118. package/.agents/skills/upstash-ratelimit-js/methods-getting-started.md +77 -0
  119. package/.agents/skills/upstash-ratelimit-js/pricing-cost.md +146 -0
  120. package/.agents/skills/upstash-ratelimit-js/traffic-protection.md +77 -0
  121. package/.agents/skills/upstash-redis-js/SKILL.md +188 -0
  122. package/.agents/skills/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
  123. package/.agents/skills/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
  124. package/.agents/skills/upstash-redis-js/advanced-features/scripting.md +124 -0
  125. package/.agents/skills/upstash-redis-js/data-structures/hashes.md +71 -0
  126. package/.agents/skills/upstash-redis-js/data-structures/json.md +133 -0
  127. package/.agents/skills/upstash-redis-js/data-structures/lists.md +72 -0
  128. package/.agents/skills/upstash-redis-js/data-structures/sets.md +90 -0
  129. package/.agents/skills/upstash-redis-js/data-structures/sorted-sets.md +126 -0
  130. package/.agents/skills/upstash-redis-js/data-structures/streams.md +196 -0
  131. package/.agents/skills/upstash-redis-js/data-structures/strings.md +73 -0
  132. package/.agents/skills/upstash-redis-js/migrations/from-ioredis.md +163 -0
  133. package/.agents/skills/upstash-redis-js/migrations/from-redis-node.md +205 -0
  134. package/.agents/skills/upstash-redis-js/patterns/caching.md +58 -0
  135. package/.agents/skills/upstash-redis-js/patterns/distributed-locks.md +130 -0
  136. package/.agents/skills/upstash-redis-js/patterns/leaderboard.md +134 -0
  137. package/.agents/skills/upstash-redis-js/patterns/rate-limiting.md +187 -0
  138. package/.agents/skills/upstash-redis-js/patterns/session-management.md +217 -0
  139. package/.agents/skills/upstash-redis-js/performance/batching-operations.md +76 -0
  140. package/.agents/skills/upstash-redis-js/performance/data-serialization.md +134 -0
  141. package/.agents/skills/upstash-redis-js/performance/error-handling.md +118 -0
  142. package/.agents/skills/upstash-redis-js/performance/pipeline-optimization.md +105 -0
  143. package/.agents/skills/upstash-redis-js/performance/redis-replicas.md +14 -0
  144. package/.agents/skills/upstash-redis-js/performance/ttl-expiration.md +32 -0
  145. package/.agents/skills/upstash-redis-js/search/adapters.md +99 -0
  146. package/.agents/skills/upstash-redis-js/search/commands/aggregating.md +234 -0
  147. package/.agents/skills/upstash-redis-js/search/commands/aliases.md +76 -0
  148. package/.agents/skills/upstash-redis-js/search/commands/index-management.md +124 -0
  149. package/.agents/skills/upstash-redis-js/search/commands/querying.md +315 -0
  150. package/.agents/skills/upstash-redis-js/search/overview.md +155 -0
  151. package/.agents/skills/upstash-redis-start/SKILL.md +76 -0
  152. package/.agents/skills/upstash-search-js/SKILL.md +53 -0
  153. package/.agents/skills/upstash-search-js/quick-start.md +158 -0
  154. package/.agents/skills/upstash-search-js/sdk-overview.md +158 -0
  155. package/.agents/skills/upstash-vector-js/SKILL.md +49 -0
  156. package/.agents/skills/upstash-vector-js/features/filtering-and-metadata.md +82 -0
  157. package/.agents/skills/upstash-vector-js/features/index-structure.md +193 -0
  158. package/.agents/skills/upstash-vector-js/features/namespaces.md +32 -0
  159. package/.agents/skills/upstash-vector-js/sdk-methods.md +210 -0
  160. package/.agents/skills/upstash-workflow-js/SKILL.md +60 -0
  161. package/.agents/skills/upstash-workflow-js/agents.md +248 -0
  162. package/.agents/skills/upstash-workflow-js/basics/client.md +180 -0
  163. package/.agents/skills/upstash-workflow-js/basics/context.md +230 -0
  164. package/.agents/skills/upstash-workflow-js/basics/serve.md +70 -0
  165. package/.agents/skills/upstash-workflow-js/features/flow-control.md +145 -0
  166. package/.agents/skills/upstash-workflow-js/features/invoke.md +97 -0
  167. package/.agents/skills/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
  168. package/.agents/skills/upstash-workflow-js/features/wait-for-event.md +97 -0
  169. package/.agents/skills/upstash-workflow-js/features/webhooks.md +79 -0
  170. package/.agents/skills/upstash-workflow-js/how-to/local-dev.md +177 -0
  171. package/.agents/skills/upstash-workflow-js/how-to/middleware.md +166 -0
  172. package/.agents/skills/upstash-workflow-js/how-to/migrations.md +201 -0
  173. package/.agents/skills/upstash-workflow-js/how-to/realtime.md +186 -0
  174. package/.agents/skills/upstash-workflow-js/rest-api.md +156 -0
  175. package/.agents/skills/upstash-workflow-js/troubleshooting.md +201 -0
  176. package/dist/agents/coding.agent.d.ts +185 -42
  177. package/dist/agents/coding.agent.d.ts.map +1 -1
  178. package/dist/agents/coding.agent.js +42 -5
  179. package/dist/agents/coding.agent.js.map +1 -1
  180. package/dist/agents/manager.d.ts +216 -41
  181. package/dist/agents/manager.d.ts.map +1 -1
  182. package/dist/agents/manager.js +103 -140
  183. package/dist/agents/manager.js.map +1 -1
  184. package/dist/agents/security.agent.d.ts +3 -3
  185. package/dist/agents/swarm/development/lead.d.ts +3 -0
  186. package/dist/agents/swarm/development/lead.d.ts.map +1 -0
  187. package/dist/agents/swarm/development/lead.js +24 -0
  188. package/dist/agents/swarm/development/lead.js.map +1 -0
  189. package/dist/agents/swarm/main.d.ts +69 -0
  190. package/dist/agents/swarm/main.d.ts.map +1 -1
  191. package/dist/agents/swarm/main.js +65 -11
  192. package/dist/agents/swarm/main.js.map +1 -1
  193. package/dist/agents/swarm/registry.d.ts +2 -1
  194. package/dist/agents/swarm/registry.d.ts.map +1 -1
  195. package/dist/agents/swarm/registry.js +225 -95
  196. package/dist/agents/swarm/registry.js.map +1 -1
  197. package/dist/cli/composer.d.ts.map +1 -1
  198. package/dist/cli/composer.js +85 -30
  199. package/dist/cli/composer.js.map +1 -1
  200. package/dist/cli/confirm.d.ts +2 -2
  201. package/dist/cli/confirm.d.ts.map +1 -1
  202. package/dist/cli/confirm.js +373 -4
  203. package/dist/cli/confirm.js.map +1 -1
  204. package/dist/cli/doctor.d.ts +1 -0
  205. package/dist/cli/doctor.d.ts.map +1 -1
  206. package/dist/cli/doctor.js +47 -2
  207. package/dist/cli/doctor.js.map +1 -1
  208. package/dist/cli/format.d.ts +4 -0
  209. package/dist/cli/format.d.ts.map +1 -1
  210. package/dist/cli/format.js +352 -65
  211. package/dist/cli/format.js.map +1 -1
  212. package/dist/cli/interactive.d.ts.map +1 -1
  213. package/dist/cli/interactive.js +80 -2
  214. package/dist/cli/interactive.js.map +1 -1
  215. package/dist/cli/menu.d.ts.map +1 -1
  216. package/dist/cli/menu.js +93 -83
  217. package/dist/cli/menu.js.map +1 -1
  218. package/dist/cli/render.d.ts.map +1 -1
  219. package/dist/cli/render.js +2 -1
  220. package/dist/cli/render.js.map +1 -1
  221. package/dist/cli/setup.d.ts.map +1 -1
  222. package/dist/cli/setup.js +262 -27
  223. package/dist/cli/setup.js.map +1 -1
  224. package/dist/cli/swarm.d.ts.map +1 -1
  225. package/dist/cli/swarm.js +13 -10
  226. package/dist/cli/swarm.js.map +1 -1
  227. package/dist/cli/theme.d.ts +7 -1
  228. package/dist/cli/theme.d.ts.map +1 -1
  229. package/dist/cli/theme.js +4 -16
  230. package/dist/cli/theme.js.map +1 -1
  231. package/dist/cli/update.d.ts.map +1 -1
  232. package/dist/cli/update.js +27 -4
  233. package/dist/cli/update.js.map +1 -1
  234. package/dist/config/env.d.ts +3 -1
  235. package/dist/config/env.d.ts.map +1 -1
  236. package/dist/config/env.js +22 -2
  237. package/dist/config/env.js.map +1 -1
  238. package/dist/config/models.d.ts +1 -0
  239. package/dist/config/models.d.ts.map +1 -1
  240. package/dist/config/models.js +17 -1
  241. package/dist/config/models.js.map +1 -1
  242. package/dist/documents/pdf.d.ts.map +1 -1
  243. package/dist/documents/pdf.js +282 -22
  244. package/dist/documents/pdf.js.map +1 -1
  245. package/dist/documents/slides.d.ts.map +1 -1
  246. package/dist/documents/slides.js +160 -30
  247. package/dist/documents/slides.js.map +1 -1
  248. package/dist/index.js +73 -18
  249. package/dist/index.js.map +1 -1
  250. package/dist/memory/history.js +1 -1
  251. package/dist/observability/doctor.d.ts.map +1 -1
  252. package/dist/observability/doctor.js +3 -0
  253. package/dist/observability/doctor.js.map +1 -1
  254. package/dist/runtime/progress.d.ts +5 -1
  255. package/dist/runtime/progress.d.ts.map +1 -1
  256. package/dist/runtime/progress.js.map +1 -1
  257. package/dist/runtime/swarm.d.ts +1 -1
  258. package/dist/runtime/swarm.d.ts.map +1 -1
  259. package/dist/runtime/swarm.js +19 -3
  260. package/dist/runtime/swarm.js.map +1 -1
  261. package/dist/runtime/tool-utils.d.ts +2 -0
  262. package/dist/runtime/tool-utils.d.ts.map +1 -1
  263. package/dist/runtime/tool-utils.js +91 -0
  264. package/dist/runtime/tool-utils.js.map +1 -1
  265. package/dist/server.js +1 -1
  266. package/dist/server.js.map +1 -1
  267. package/dist/skills/loader.d.ts.map +1 -1
  268. package/dist/skills/loader.js +16 -0
  269. package/dist/skills/loader.js.map +1 -1
  270. package/dist/test-call.d.ts +2 -0
  271. package/dist/test-call.d.ts.map +1 -0
  272. package/dist/test-call.js +29 -0
  273. package/dist/test-call.js.map +1 -0
  274. package/dist/test-manager-call.d.ts +2 -0
  275. package/dist/test-manager-call.d.ts.map +1 -0
  276. package/dist/test-manager-call.js +138 -0
  277. package/dist/test-manager-call.js.map +1 -0
  278. package/dist/test-manager-filtered.d.ts +2 -0
  279. package/dist/test-manager-filtered.d.ts.map +1 -0
  280. package/dist/test-manager-filtered.js +130 -0
  281. package/dist/test-manager-filtered.js.map +1 -0
  282. package/dist/test-mcp-call.d.ts +2 -0
  283. package/dist/test-mcp-call.d.ts.map +1 -0
  284. package/dist/test-mcp-call.js +103 -0
  285. package/dist/test-mcp-call.js.map +1 -0
  286. package/dist/tools/composio.tool.d.ts +1 -1
  287. package/dist/tools/composio.tool.d.ts.map +1 -1
  288. package/dist/tools/composio.tool.js +7 -16
  289. package/dist/tools/composio.tool.js.map +1 -1
  290. package/dist/tools/daytona-browser.tool.js +1 -1
  291. package/dist/tools/daytona-browser.tool.js.map +1 -1
  292. package/dist/tools/executive.tool.d.ts +40 -0
  293. package/dist/tools/executive.tool.d.ts.map +1 -0
  294. package/dist/tools/executive.tool.js +74 -0
  295. package/dist/tools/executive.tool.js.map +1 -0
  296. package/dist/tools/filesystem.tool.d.ts +183 -40
  297. package/dist/tools/filesystem.tool.d.ts.map +1 -1
  298. package/dist/tools/filesystem.tool.js +564 -111
  299. package/dist/tools/filesystem.tool.js.map +1 -1
  300. package/dist/tools/mcp.tool.d.ts +56 -0
  301. package/dist/tools/mcp.tool.d.ts.map +1 -0
  302. package/dist/tools/mcp.tool.js +285 -0
  303. package/dist/tools/mcp.tool.js.map +1 -0
  304. package/dist/tools/osint.tool.d.ts +4 -4
  305. package/dist/tools/pentest.tool.d.ts +2 -2
  306. package/dist/tools/setup-assistant.tool.d.ts +1 -1
  307. package/dist/tools/setup-assistant.tool.js +1 -1
  308. package/dist/tools/setup-assistant.tool.js.map +1 -1
  309. package/dist/workspace/paths.d.ts +1 -0
  310. package/dist/workspace/paths.d.ts.map +1 -1
  311. package/dist/workspace/paths.js +3 -4
  312. package/dist/workspace/paths.js.map +1 -1
  313. package/package.json +8 -4
  314. package/scripts/postinstall.mjs +19 -4
  315. package/scripts/release-github.mjs +11 -11
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: upstash-search-js
3
+ description: Skills covering Upstash Search quick starts, core concepts, and TypeScript/JavaScript SDK usage. Use when a user asks how to get started, how indexing works, or how to use the TS client.
4
+ ---
5
+
6
+ # Upstash Search Documentation
7
+
8
+ ## Quick Start
9
+
10
+ Install the TS SDK:
11
+
12
+ ```
13
+ npm install @upstash/search
14
+ ```
15
+
16
+ Create a client and perform a simple upsert + search:
17
+
18
+ ```
19
+ import { Search } from "@upstash/search";
20
+
21
+ const client = new Search({ url: process.env.UPSTASH_SEARCH_REST_URL, token: process.env.UPSTASH_SEARCH_REST_TOKEN });
22
+ const index = client.index("my-index");
23
+
24
+ await index.upsert({ id: "1", content: { text: "hello world" } });
25
+ const results = await index.search({ query: "hello" });
26
+ ```
27
+
28
+ Basic steps:
29
+ - Create an index
30
+ - Insert or update documents
31
+ - Run searches or filtered queries
32
+
33
+ ## Other Skill Files
34
+
35
+ ### sdk-overview
36
+ Provides detailed documentation for all TypeScript SDK commands. Includes:
37
+ - delete: Deleting documents
38
+ - fetch: Retrieving a document
39
+ - info: Index info
40
+ - range: Range queries
41
+ - reset: Clearing an index
42
+ - search: Search queries
43
+ - upsert: Adding/updating documents
44
+ - getting-started: Setup steps for the SDK
45
+
46
+ ### quick-start
47
+ Provides a fast, end-to-end workflow for creating a Search database, adding documents, and querying them. Covers essential concepts including:
48
+ - Creating a database and storing credentials
49
+ - Adding documents with content and metadata
50
+ - Understanding content vs metadata (searchability and filterability)
51
+ - Performing searches with optional reranking
52
+ - Filtering syntax with SQL-like or structured filters
53
+ - Common pitfalls and best practices
@@ -0,0 +1,158 @@
1
+ # Quick Start: Upstash Search
2
+
3
+ This Skill gives agents a fast, end‑to‑end workflow for creating a Search database, adding documents, and querying them. It also summarizes key concepts like **content vs metadata**, **filters**, and **reranking** so agents can use Search correctly.
4
+
5
+ ---
6
+
7
+ ## Create a Database
8
+ 1. Open the **Vector** tab → **Create → Search Database**.
9
+ 2. Provide a name (e.g., `product-search`) and region.
10
+ 3. Select a plan.
11
+
12
+ Agents should store:
13
+ - `UPSTASH_SEARCH_REST_URL`
14
+ - `UPSTASH_SEARCH_REST_TOKEN`
15
+
16
+ These values are required when constructing a Search client.
17
+
18
+ ---
19
+
20
+ ## Add Documents
21
+ Documents consist of:
22
+ - **id**: unique identifier
23
+ - **content** *(required)*: indexed and searchable
24
+ - **metadata** *(optional)*: **not searchable**, but retrievable and filterable
25
+
26
+ ### TypeScript / Python Example
27
+ ```ts
28
+ import { Search } from "@upstash/search";
29
+ const client = new Search({
30
+ url: process.env.UPSTASH_SEARCH_REST_URL,
31
+ token: process.env.UPSTASH_SEARCH_REST_TOKEN
32
+ });
33
+ const index = client.index("movies");
34
+ await index.upsert([
35
+ {
36
+ id: "star-wars",
37
+ content: { title: "Star Wars", genre: "sci-fi", category: "classic" },
38
+ metadata: { director: "George Lucas" }
39
+ }
40
+ ]);
41
+ ```
42
+ ```python
43
+ from upstash_search import Search
44
+ client = Search(url=URL, token=TOKEN)
45
+ index = client.index("movies")
46
+ index.upsert(documents=[{
47
+ "id": "movie-0",
48
+ "content": {
49
+ "title": "Star Wars",
50
+ "overview": "Sci-fi space opera",
51
+ "genre": "sci-fi",
52
+ "category": "classic",
53
+ },
54
+ "metadata": {"poster": "https://poster.link/starwars.jpg"}
55
+ }])
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Content vs Metadata (Essential Concepts)
61
+ - **Content**
62
+ - Required
63
+ - Indexed and searchable
64
+ - Can be used in filters
65
+ - Ideal for textual and semantic data
66
+
67
+ - **Metadata**
68
+ - Optional
69
+ - Not indexed → **cannot be searched**
70
+ - Still **filterable** using `@metadata.key`
71
+ - Used for contextual / reference fields
72
+
73
+ Example:
74
+ ```json
75
+ {
76
+ "content": { "title": "Star Wars", "genre": "sci-fi" },
77
+ "metadata": { "director": "George Lucas", "sku": "SW-001" }
78
+ }
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Search
84
+ Searching supports semantic + keyword hybrid search, optional reranking, and filters.
85
+
86
+ ### TypeScript / Python Example
87
+ ```ts
88
+ const res = await index.search({ query: "space opera", limit: 2, reranking: true });
89
+ ```
90
+ ```python
91
+ scores = index.search(query="space opera", limit=2, reranking=True)
92
+ ```
93
+
94
+ ---
95
+
96
+ ## Filtering
97
+ Filters restrict results using SQL‑like syntax or structured filters (TypeScript only). Both **content fields** and **metadata fields** can be used.
98
+
99
+ **Metadata fields require `@metadata.` prefix**.
100
+
101
+ ### Example (String Filters)
102
+ ```ts
103
+ await index.search({
104
+ query: "sony headphones",
105
+ filter: "warehouse_location = 'A3-15' AND @metadata.supplier_id = 'SUP-123'"
106
+ });
107
+ ```
108
+
109
+ ### Example (Type‑safe Filters, TS SDK)
110
+ ```ts
111
+ await index.search({
112
+ query: "sony headphones",
113
+ filter: {
114
+ AND: [
115
+ { category: { equals: "Electronics" } },
116
+ { "@metadata.count": { greaterThanOrEquals: 3 } }
117
+ ]
118
+ }
119
+ });
120
+ ```
121
+
122
+ Common operators:
123
+ - equals, not equals
124
+ - <, <=, >, >=
125
+ - glob / not glob
126
+ - in / not in
127
+ - contains / not contains (arrays)
128
+ - has field / has not field
129
+
130
+ ---
131
+
132
+ ## Reranking
133
+ Reranking reorders results using a high‑accuracy model.
134
+
135
+ - Disabled by default (`false`)
136
+ - When `true`, improves relevance but costs $1 per 1K reranked items
137
+
138
+ Example:
139
+ ```ts
140
+ await index.search({ query: "space opera", reranking: true });
141
+ ```
142
+ ```python
143
+ index.search(query="space opera", reranking=True)
144
+ ```
145
+
146
+ Use when:
147
+ - Precision is critical
148
+ - Results require more semantic depth
149
+ - Queries are ambiguous or conceptual
150
+
151
+ ---
152
+
153
+ ## Common Pitfalls
154
+ - Missing **content** field → upsert fails.
155
+ - Metadata fields are **not searchable**.
156
+ - Metadata must be prefixed as `@metadata.key` in filters.
157
+ - Filters may return fewer than `topK` results if too selective.
158
+ - Indexes are created automatically on first `upsert`.
@@ -0,0 +1,158 @@
1
+ # SDK Overview
2
+
3
+ This skill provides a concise but complete reference for using the Upstash Search TypeScript SDK. It focuses on practical usage patterns, common pitfalls, and efficient examples that combine multiple commands. Use this skill whenever interacting with the Upstash Search SDK, generating agents that must query, mutate, or paginate search indexes.
4
+
5
+ ---
6
+
7
+ ## Client Initialization
8
+
9
+ You must configure a Search client using either environment variables or a config object.
10
+
11
+ ```ts
12
+ import { Search } from "@upstash/search";
13
+
14
+ // Option 1: with explicit config
15
+ const client = new Search({
16
+ url: process.env.UPSTASH_SEARCH_REST_URL!,
17
+ token: process.env.UPSTASH_SEARCH_REST_TOKEN!
18
+ });
19
+ const index = client.index("movies");
20
+
21
+ // Option 2: using fromEnv (Node.js platform only)
22
+ // The constructor will automatically read from process.env if url/token not provided
23
+ const client2 = new Search({}); // reads UPSTASH_SEARCH_REST_URL and UPSTASH_SEARCH_REST_TOKEN
24
+ const index2 = client2.index("movies");
25
+ ```
26
+
27
+ Type-safe usage:
28
+ ```ts
29
+ type Content = { title: string, genre: string };
30
+ type Metadata = { year: number };
31
+ const indexTyped = client.index<Content, Metadata>("movies");
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Upsert (add or update documents)
37
+
38
+ Pitfalls:
39
+ - Document structure must match the index schema.
40
+ - Content/metadata types are enforced when using generics.
41
+
42
+ ```ts
43
+ // Single
44
+ await index.upsert({
45
+ id: "star-wars",
46
+ content: { title: "Star Wars", genre: "sci-fi" },
47
+ metadata: { year: 1977 }
48
+ });
49
+
50
+ // Multiple
51
+ await index.upsert([
52
+ { id: "inception", content: { title: "Inception", genre: "action" }, metadata: { year: 2010 } },
53
+ { id: "matrix", content: { title: "The Matrix", genre: "sci-fi" }, metadata: { year: 1999 } },
54
+ ]);
55
+
56
+ // Update
57
+ await index.upsert({ id: "star-wars", content: { title: "A New Hope" } });
58
+ ```
59
+
60
+ ---
61
+
62
+ ## Fetch (retrieve documents)
63
+
64
+ Pitfalls:
65
+ - Returns null for IDs not found.
66
+ - Supports prefix matching.
67
+
68
+ ```ts
69
+ // By IDs
70
+ const docs = await index.fetch({ ids: ["star-wars", "inception"] });
71
+
72
+ // By prefix
73
+ const sciFi = await index.fetch({ prefix: "star-" });
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Delete (IDs, prefix, or filter)
79
+
80
+ Pitfalls:
81
+ - **Filter deletion is O(N)** and slow on large indexes.
82
+ - Prefix deletion removes *all* matching documents.
83
+
84
+ ```ts
85
+ // ID list
86
+ await index.delete(["star-wars", "inception"]);
87
+
88
+ // Single ID
89
+ await index.delete("star-wars");
90
+
91
+ // Prefix
92
+ await index.delete({ prefix: "star-" });
93
+
94
+ // Filter — expensive
95
+ await index.delete({ filter: "age > 30" });
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Search (AI‑powered)
101
+
102
+ Pitfalls:
103
+ - Default `limit = 5`.
104
+ - Scores are 0–1.
105
+ - Use filters to restrict by document fields.
106
+
107
+ ```ts
108
+ // Basic
109
+ const results = await index.search({ query: "space opera", limit: 3 });
110
+
111
+ // With reranking
112
+ await index.search({ query: "space opera", limit: 3, reranking: true });
113
+
114
+ // With filter
115
+ await index.search({ query: "space", filter: "category = 'classic'" });
116
+
117
+ // Adjust semantic vs keyword weighting
118
+ await index.search({ query: "robots", semanticWeight: 0.2 });
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Range (cursor pagination)
124
+
125
+ Pitfalls:
126
+ - Stateless: you must pass all parameters every call.
127
+ - `cursor = "0"` for the first request.
128
+
129
+ ```ts
130
+ let cursor = "0";
131
+ while (cursor !== "") {
132
+ const res = await index.range({ cursor, limit: 2, prefix: "test-" });
133
+ cursor = res.nextCursor;
134
+ console.log(res.documents);
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Reset (delete all documents)
141
+
142
+ ```ts
143
+ await index.reset(); // "Success"
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Info (index or database level)
149
+
150
+ ```ts
151
+ // Index-level
152
+ const indexInfo = await index.info();
153
+ // { documentCount, pendingDocumentCount }
154
+
155
+ // Database-level
156
+ const dbInfo = await client.info();
157
+ // { documentCount, pendingDocumentCount, diskSize, indexes: {...} }
158
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: upstash-vector-js
3
+ description: Skills for Upstash Vector features, TypeScript/JavaScript SDK usage, and integrations. Use when users ask how to work with Vector, its TS SDK, features, or supported frameworks.
4
+ ---
5
+
6
+ # Vector Documentation Skill
7
+
8
+ ## Quick Start
9
+
10
+ Vector is a high‑performance vector database for storing, querying, and managing vector embeddings.
11
+
12
+ Basic workflow:
13
+
14
+ - Install the Vector TS SDK.
15
+ - Connect to a Vector instance.
16
+ - Upsert vectors, query them, and manage namespaces.
17
+
18
+ Example (TypeScript):
19
+
20
+ ```ts
21
+ import { Index } from "@upstash/vector";
22
+ const index = new Index({
23
+ url: process.env.UPSTASH_VECTOR_REST_URL!,
24
+ token: process.env.UPSTASH_VECTOR_REST_TOKEN!,
25
+ });
26
+
27
+ await index.upsert([{ id: "1", vector: [0.1, 0.2], metadata: { tag: "example" } }]);
28
+
29
+ const results = await index.query({
30
+ vector: [0.1, 0.2],
31
+ topK: 5,
32
+ });
33
+ ```
34
+
35
+ For full usage, refer to the linked skill files below.
36
+
37
+ ## Other Skill Files
38
+
39
+ ### TS SDK Reference
40
+
41
+ - `sdk-methods`: Explains SDK commands: delete, fetch, info, query, range, reset, resumable-query, upsert
42
+
43
+ ### Features
44
+
45
+ - `features/namespaces`: Explains namespaces and dataset organization.
46
+ - `features/index-structure`: Covers hybrid and sparse index structures.
47
+ - `features/filtering-and-metadata`: Details metadata storage and server-side filtering.
48
+
49
+ Use these files for deeper guidance on SDK usage, advanced configurations, algorithms, and integrations.
@@ -0,0 +1,82 @@
1
+ # Vector Feature: Filtering and Metadata
2
+
3
+ Upstash Vector supports attaching metadata and optional data to vectors. Metadata is structured JSON used for filtering; data is unstructured content returned in responses but not filterable.
4
+
5
+ Filtering uses a SQL‑like syntax and supports nested objects, array indexing, glob patterns, and boolean logic. The system applies both in‑filtering and post‑filtering according to a filtering budget, so highly selective filters may return fewer results than `topK`.
6
+
7
+ ## Setting Metadata and Data
8
+
9
+ You can upsert vectors with metadata and optional data. Metadata is any JSON structure; data is typically raw text.
10
+
11
+ ```ts
12
+ import { Index } from "@upstash/vector";
13
+
14
+ const index = new Index({ url: "...", token: "..." });
15
+
16
+ await index.upsert([
17
+ {
18
+ id: "v0",
19
+ vector: [0.1, 0.2],
20
+ metadata: { city: "Istanbul", population: 15460000 },
21
+ data: "Istanbul info",
22
+ },
23
+ {
24
+ id: "v1",
25
+ data: "Upstash is a serverless data platform.",
26
+ },
27
+ ]);
28
+ ```
29
+
30
+ ## Querying with Metadata Filters
31
+
32
+ Include metadata in results and apply filters using SQL‑like expressions.
33
+
34
+ ```ts
35
+ await index.query({
36
+ vector: [0.9, 0.3],
37
+ topK: 5,
38
+ includeMetadata: true,
39
+ filter: "population >= 1000000 AND geography.continent = 'Asia'",
40
+ });
41
+ ```
42
+
43
+ ### Supported Operators
44
+
45
+ - Equality: `=`, `!=`
46
+ - Numeric comparators: `<`, `<=`, `>`, `>=`
47
+ - Set membership: `IN`, `NOT IN`
48
+ - Array tests: `CONTAINS`, `NOT CONTAINS`
49
+ - Field existence: `HAS FIELD`, `HAS NOT FIELD`
50
+ - Glob string matching: `GLOB`, `NOT GLOB`
51
+
52
+ Glob wildcards: `*`, `?`, `[]`, `[^]`.
53
+
54
+ ### Boolean Logic
55
+
56
+ Use `AND` and `OR`, with parentheses for grouping. `AND` has higher precedence than `OR`.
57
+
58
+ ### Nested Objects and Arrays
59
+
60
+ - Access nested fields: `economy.currency`, `geography.coordinates.latitude`.
61
+ - Index arrays: `industries[0]` or from end: `industries[#-1]`.
62
+
63
+ Example:
64
+
65
+ ```SQL
66
+ economy.major_industries CONTAINS 'Tourism' AND geography.coordinates.latitude >= 35
67
+ ```
68
+
69
+ ## Retrieving Metadata and Data
70
+
71
+ ```ts
72
+ // query
73
+ await index.query({
74
+ vector: [0.9, 0.3],
75
+ topK: 5,
76
+ includeMetadata: true,
77
+ includeData: true,
78
+ });
79
+
80
+ // range
81
+ await index.range({ cursor: "0", limit: 3, includeMetadata: true });
82
+ ```
@@ -0,0 +1,193 @@
1
+ # Vector Feature: Index Structure
2
+
3
+ ## Overview
4
+
5
+ Upstash Vector supports three major index structures:
6
+
7
+ - **Dense indexes**: semantic matching via dense embeddings.
8
+ - **Sparse indexes**: exact/near-exact token and feature matching.
9
+ - **Hybrid indexes**: combine dense + sparse results, optionally reranked.
10
+
11
+ ---
12
+
13
+ ## Key Concepts
14
+
15
+ ### Sparse Vectors
16
+
17
+ - High‑dimensional, mostly‑zero representations.
18
+ - Represented as two equal‑length arrays:
19
+ - `indices`: int32 positions of non‑zero elements
20
+ - `values`: float32 values
21
+ - Upstash limit: **max 1,000 non‑zero entries per sparse vector**.
22
+ - Useful for exact token/word matching (BM25, SPLADE, etc.).
23
+
24
+ ### Hybrid Vectors
25
+
26
+ - Combine dense semantic vectors with sparse exact‑match vectors.
27
+ - Hybrid queries run both dense + sparse search and fuse results.
28
+ - Require **both** components (`vector` and `sparseVector`).
29
+
30
+ ### Fusion Algorithms
31
+
32
+ - **RRF (default)**: ranking‑based, simple, robust, ignores score magnitudes.
33
+ - **DBSF**: normalizes scores using distribution statistics; more sensitive to score ranges.
34
+
35
+ ---
36
+
37
+ ## Common Pitfalls
38
+
39
+ - **Hybrid upserts require both dense and sparse vectors**; omitting either fails.
40
+ - **Indexes with embedding models (dense, sparse or both)** let you upsert/query using text; indexes without embedding models do not.
41
+ - In Hybrin indexes, dense‑only or sparse‑only querying is allowed, but **fusion happens only when both are provided**.
42
+
43
+ ---
44
+
45
+ ## Usage with Embedding Models
46
+
47
+ ```ts
48
+ await index.upsert([
49
+ {
50
+ id: "t1",
51
+ data: "Upstash Vector provides sparse models.",
52
+ },
53
+ ]);
54
+
55
+ const results = await index.query({
56
+ data: "Upstash Vector",
57
+ topK: 5,
58
+ });
59
+
60
+ import { WeightingStrategy } from "@upstash/vector";
61
+ await index.query({
62
+ data: "Upstash Vector",
63
+ weightingStrategy: WeightingStrategy.IDF,
64
+ });
65
+ ```
66
+
67
+ ## Sparse Index Usage
68
+
69
+ ### Upserting Sparse Vectors
70
+
71
+ ```ts
72
+ await index.upsert([
73
+ {
74
+ id: "x1",
75
+ sparseVector: {
76
+ indices: [1, 2, 3],
77
+ values: [0.1, 0.2, 0.3],
78
+ },
79
+ },
80
+ ]);
81
+
82
+ const results = await index.query({
83
+ sparseVector: {
84
+ indices: [3, 5],
85
+ values: [0.3, 0.5],
86
+ },
87
+ topK: 5,
88
+ includeMetadata: true,
89
+ });
90
+ ```
91
+
92
+ - Scores use **inner product**, matching only overlapping indices.
93
+ - Results may be fewer than `top_k` if no overlapping dims exist.
94
+
95
+ ## Hybrid Index Usage
96
+
97
+ ### Upserting Dense + Sparse
98
+
99
+ ```ts
100
+ await index.upsert([
101
+ {
102
+ id: "h1",
103
+ vector: [0.1, 0.5],
104
+ sparseVector: {
105
+ indices: [1, 2],
106
+ values: [0.1, 0.2],
107
+ },
108
+ },
109
+ ]);
110
+
111
+ const results = await index.query({
112
+ vector: [0.5, 0.4],
113
+ sparseVector: {
114
+ indices: [3, 5],
115
+ values: [0.3, 0.5],
116
+ },
117
+ topK: 5,
118
+ });
119
+
120
+ import { FusionAlgorithm } from "@upstash/vector";
121
+ await index.query({
122
+ vector: [0.5, 0.4],
123
+ sparseVector: {
124
+ indices: [2, 3],
125
+ values: [0.1, 0.2],
126
+ },
127
+ fusionAlgorithm: FusionAlgorithm.RRF, // or FusionAlgorithm.DBSF
128
+ });
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Custom Reranking
134
+
135
+ Sometimes RRF/DBSF is insufficient (e.g., using bge‑reranker-v2-m3). Query dense and sparse portions separately and rerank in your own model.
136
+
137
+ ### Custom Rerank (vector input)
138
+
139
+ ```ts
140
+ // Dense-only
141
+ const dense = await index.query({
142
+ vector: [0.5, 0.4],
143
+ topK: 5,
144
+ });
145
+
146
+ // Sparse-only
147
+ const sparse = await index.query({
148
+ sparseVector: {
149
+ indices: [3, 5],
150
+ values: [0.3, 0.5],
151
+ },
152
+ topK: 5,
153
+ });
154
+
155
+ // Custom rerank dense + sparse...
156
+ ```
157
+
158
+ ### Custom Rerank (text input with hosted models)
159
+
160
+ ```ts
161
+ import { QueryMode } from "@upstash/vector";
162
+
163
+ const dense = await index.query({
164
+ data: "Upstash Vector",
165
+ queryMode: QueryMode.DENSE,
166
+ });
167
+
168
+ const sparse = await index.query({
169
+ data: "Upstash Vector",
170
+ queryMode: QueryMode.SPARSE,
171
+ });
172
+
173
+ // Rerank...
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Agent Implementation Notes
179
+
180
+ - Always check whether the index supports **hosted embeddings** before using `data=` fields.
181
+ - Use `await index.info()` to check: if `denseIndex?.embeddingModel` or `sparseIndex?.embeddingModel` exists, the index supports text-based embeddings via the `data` field.
182
+ - Example:
183
+ ```ts
184
+ const info = await index.info();
185
+ const hasDenseEmbedding = !!info.denseIndex?.embeddingModel;
186
+ const hasSparseEmbedding = !!info.sparseIndex?.embeddingModel;
187
+ ```
188
+ - For hybrid indexes:
189
+ - Always provide _both_ `vector` and `sparseVector` unless intentionally querying only one modality.
190
+ - For reranking workflows:
191
+ - Use dense-only + sparse-only queries, never hybrid queries (as fusion is already applied).
192
+ - When building sparse vectors manually:
193
+ - Ensure indices are sorted, unique, and below the model dimension.