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.
- package/.agents/skills/copywriting/SKILL.md +252 -0
- package/.agents/skills/copywriting/evals/evals.json +111 -0
- package/.agents/skills/copywriting/references/copy-frameworks.md +344 -0
- package/.agents/skills/copywriting/references/natural-transitions.md +272 -0
- package/.agents/skills/firecrawl-deep-research/SKILL.md +108 -0
- package/.agents/skills/shadcn/SKILL.md +267 -0
- package/.agents/skills/shadcn/agents/openai.yml +5 -0
- package/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
- package/.agents/skills/shadcn/assets/shadcn.png +0 -0
- package/.agents/skills/shadcn/cli.md +290 -0
- package/.agents/skills/shadcn/customization.md +209 -0
- package/.agents/skills/shadcn/evals/evals.json +47 -0
- package/.agents/skills/shadcn/mcp.md +105 -0
- package/.agents/skills/shadcn/registry.md +277 -0
- package/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
- package/.agents/skills/shadcn/rules/composition.md +195 -0
- package/.agents/skills/shadcn/rules/forms.md +192 -0
- package/.agents/skills/shadcn/rules/icons.md +101 -0
- package/.agents/skills/shadcn/rules/styling.md +162 -0
- package/.agents/skills/tavily-research/SKILL.md +100 -0
- package/.agents/skills/upstash/SKILL.md +48 -0
- package/.agents/skills/upstash/upstash-box-js/overview.md +243 -0
- package/.agents/skills/upstash/upstash-box-py/overview.md +275 -0
- package/.agents/skills/upstash/upstash-cli/overview.md +138 -0
- package/.agents/skills/upstash/upstash-qstash-js/advanced/callbacks.md +147 -0
- package/.agents/skills/upstash/upstash-qstash-js/advanced/deduplication.md +86 -0
- package/.agents/skills/upstash/upstash-qstash-js/advanced/dlq.md +164 -0
- package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
- package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
- package/.agents/skills/upstash/upstash-qstash-js/fundamentals/local-development.md +106 -0
- package/.agents/skills/upstash/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
- package/.agents/skills/upstash/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
- package/.agents/skills/upstash/upstash-qstash-js/fundamentals/schedules.md +177 -0
- package/.agents/skills/upstash/upstash-qstash-js/fundamentals/url-groups.md +127 -0
- package/.agents/skills/upstash/upstash-qstash-js/overview.md +81 -0
- package/.agents/skills/upstash/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
- package/.agents/skills/upstash/upstash-qstash-js/verification/receiver.md +213 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/algorithms.md +84 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/features.md +117 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/methods-getting-started.md +77 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/overview.md +26 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/pricing-cost.md +146 -0
- package/.agents/skills/upstash/upstash-ratelimit-js/traffic-protection.md +77 -0
- package/.agents/skills/upstash/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
- package/.agents/skills/upstash/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
- package/.agents/skills/upstash/upstash-redis-js/advanced-features/scripting.md +124 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/hashes.md +71 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/json.md +133 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/lists.md +72 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/sets.md +90 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/sorted-sets.md +126 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/streams.md +196 -0
- package/.agents/skills/upstash/upstash-redis-js/data-structures/strings.md +73 -0
- package/.agents/skills/upstash/upstash-redis-js/migrations/from-ioredis.md +163 -0
- package/.agents/skills/upstash/upstash-redis-js/migrations/from-redis-node.md +205 -0
- package/.agents/skills/upstash/upstash-redis-js/overview.md +183 -0
- package/.agents/skills/upstash/upstash-redis-js/patterns/caching.md +58 -0
- package/.agents/skills/upstash/upstash-redis-js/patterns/distributed-locks.md +130 -0
- package/.agents/skills/upstash/upstash-redis-js/patterns/leaderboard.md +134 -0
- package/.agents/skills/upstash/upstash-redis-js/patterns/rate-limiting.md +187 -0
- package/.agents/skills/upstash/upstash-redis-js/patterns/session-management.md +217 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/batching-operations.md +76 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/data-serialization.md +134 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/error-handling.md +118 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md +105 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/redis-replicas.md +14 -0
- package/.agents/skills/upstash/upstash-redis-js/performance/ttl-expiration.md +32 -0
- package/.agents/skills/upstash/upstash-redis-js/search/adapters.md +99 -0
- package/.agents/skills/upstash/upstash-redis-js/search/commands/aggregating.md +234 -0
- package/.agents/skills/upstash/upstash-redis-js/search/commands/aliases.md +76 -0
- package/.agents/skills/upstash/upstash-redis-js/search/commands/index-management.md +124 -0
- package/.agents/skills/upstash/upstash-redis-js/search/commands/querying.md +315 -0
- package/.agents/skills/upstash/upstash-redis-js/search/overview.md +155 -0
- package/.agents/skills/upstash/upstash-redis-start/overview.md +71 -0
- package/.agents/skills/upstash/upstash-search-js/overview.md +48 -0
- package/.agents/skills/upstash/upstash-search-js/quick-start.md +158 -0
- package/.agents/skills/upstash/upstash-search-js/sdk-overview.md +158 -0
- package/.agents/skills/upstash/upstash-vector-js/features/filtering-and-metadata.md +82 -0
- package/.agents/skills/upstash/upstash-vector-js/features/index-structure.md +193 -0
- package/.agents/skills/upstash/upstash-vector-js/features/namespaces.md +32 -0
- package/.agents/skills/upstash/upstash-vector-js/overview.md +44 -0
- package/.agents/skills/upstash/upstash-vector-js/sdk-methods.md +210 -0
- package/.agents/skills/upstash/upstash-workflow-js/agents.md +248 -0
- package/.agents/skills/upstash/upstash-workflow-js/basics/client.md +180 -0
- package/.agents/skills/upstash/upstash-workflow-js/basics/context.md +230 -0
- package/.agents/skills/upstash/upstash-workflow-js/basics/serve.md +70 -0
- package/.agents/skills/upstash/upstash-workflow-js/features/flow-control.md +145 -0
- package/.agents/skills/upstash/upstash-workflow-js/features/invoke.md +97 -0
- package/.agents/skills/upstash/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
- package/.agents/skills/upstash/upstash-workflow-js/features/wait-for-event.md +97 -0
- package/.agents/skills/upstash/upstash-workflow-js/features/webhooks.md +79 -0
- package/.agents/skills/upstash/upstash-workflow-js/how-to/local-dev.md +177 -0
- package/.agents/skills/upstash/upstash-workflow-js/how-to/middleware.md +166 -0
- package/.agents/skills/upstash/upstash-workflow-js/how-to/migrations.md +201 -0
- package/.agents/skills/upstash/upstash-workflow-js/how-to/realtime.md +186 -0
- package/.agents/skills/upstash/upstash-workflow-js/overview.md +55 -0
- package/.agents/skills/upstash/upstash-workflow-js/rest-api.md +156 -0
- package/.agents/skills/upstash/upstash-workflow-js/troubleshooting.md +201 -0
- package/.agents/skills/upstash-box-js/SKILL.md +248 -0
- package/.agents/skills/upstash-box-py/SKILL.md +280 -0
- package/.agents/skills/upstash-cli/SKILL.md +143 -0
- package/.agents/skills/upstash-qstash-js/SKILL.md +86 -0
- package/.agents/skills/upstash-qstash-js/advanced/callbacks.md +147 -0
- package/.agents/skills/upstash-qstash-js/advanced/deduplication.md +86 -0
- package/.agents/skills/upstash-qstash-js/advanced/dlq.md +164 -0
- package/.agents/skills/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
- package/.agents/skills/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
- package/.agents/skills/upstash-qstash-js/fundamentals/local-development.md +106 -0
- package/.agents/skills/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
- package/.agents/skills/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
- package/.agents/skills/upstash-qstash-js/fundamentals/schedules.md +177 -0
- package/.agents/skills/upstash-qstash-js/fundamentals/url-groups.md +127 -0
- package/.agents/skills/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
- package/.agents/skills/upstash-qstash-js/verification/receiver.md +213 -0
- package/.agents/skills/upstash-ratelimit-js/SKILL.md +31 -0
- package/.agents/skills/upstash-ratelimit-js/algorithms.md +84 -0
- package/.agents/skills/upstash-ratelimit-js/features.md +117 -0
- package/.agents/skills/upstash-ratelimit-js/methods-getting-started.md +77 -0
- package/.agents/skills/upstash-ratelimit-js/pricing-cost.md +146 -0
- package/.agents/skills/upstash-ratelimit-js/traffic-protection.md +77 -0
- package/.agents/skills/upstash-redis-js/SKILL.md +188 -0
- package/.agents/skills/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
- package/.agents/skills/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
- package/.agents/skills/upstash-redis-js/advanced-features/scripting.md +124 -0
- package/.agents/skills/upstash-redis-js/data-structures/hashes.md +71 -0
- package/.agents/skills/upstash-redis-js/data-structures/json.md +133 -0
- package/.agents/skills/upstash-redis-js/data-structures/lists.md +72 -0
- package/.agents/skills/upstash-redis-js/data-structures/sets.md +90 -0
- package/.agents/skills/upstash-redis-js/data-structures/sorted-sets.md +126 -0
- package/.agents/skills/upstash-redis-js/data-structures/streams.md +196 -0
- package/.agents/skills/upstash-redis-js/data-structures/strings.md +73 -0
- package/.agents/skills/upstash-redis-js/migrations/from-ioredis.md +163 -0
- package/.agents/skills/upstash-redis-js/migrations/from-redis-node.md +205 -0
- package/.agents/skills/upstash-redis-js/patterns/caching.md +58 -0
- package/.agents/skills/upstash-redis-js/patterns/distributed-locks.md +130 -0
- package/.agents/skills/upstash-redis-js/patterns/leaderboard.md +134 -0
- package/.agents/skills/upstash-redis-js/patterns/rate-limiting.md +187 -0
- package/.agents/skills/upstash-redis-js/patterns/session-management.md +217 -0
- package/.agents/skills/upstash-redis-js/performance/batching-operations.md +76 -0
- package/.agents/skills/upstash-redis-js/performance/data-serialization.md +134 -0
- package/.agents/skills/upstash-redis-js/performance/error-handling.md +118 -0
- package/.agents/skills/upstash-redis-js/performance/pipeline-optimization.md +105 -0
- package/.agents/skills/upstash-redis-js/performance/redis-replicas.md +14 -0
- package/.agents/skills/upstash-redis-js/performance/ttl-expiration.md +32 -0
- package/.agents/skills/upstash-redis-js/search/adapters.md +99 -0
- package/.agents/skills/upstash-redis-js/search/commands/aggregating.md +234 -0
- package/.agents/skills/upstash-redis-js/search/commands/aliases.md +76 -0
- package/.agents/skills/upstash-redis-js/search/commands/index-management.md +124 -0
- package/.agents/skills/upstash-redis-js/search/commands/querying.md +315 -0
- package/.agents/skills/upstash-redis-js/search/overview.md +155 -0
- package/.agents/skills/upstash-redis-start/SKILL.md +76 -0
- package/.agents/skills/upstash-search-js/SKILL.md +53 -0
- package/.agents/skills/upstash-search-js/quick-start.md +158 -0
- package/.agents/skills/upstash-search-js/sdk-overview.md +158 -0
- package/.agents/skills/upstash-vector-js/SKILL.md +49 -0
- package/.agents/skills/upstash-vector-js/features/filtering-and-metadata.md +82 -0
- package/.agents/skills/upstash-vector-js/features/index-structure.md +193 -0
- package/.agents/skills/upstash-vector-js/features/namespaces.md +32 -0
- package/.agents/skills/upstash-vector-js/sdk-methods.md +210 -0
- package/.agents/skills/upstash-workflow-js/SKILL.md +60 -0
- package/.agents/skills/upstash-workflow-js/agents.md +248 -0
- package/.agents/skills/upstash-workflow-js/basics/client.md +180 -0
- package/.agents/skills/upstash-workflow-js/basics/context.md +230 -0
- package/.agents/skills/upstash-workflow-js/basics/serve.md +70 -0
- package/.agents/skills/upstash-workflow-js/features/flow-control.md +145 -0
- package/.agents/skills/upstash-workflow-js/features/invoke.md +97 -0
- package/.agents/skills/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
- package/.agents/skills/upstash-workflow-js/features/wait-for-event.md +97 -0
- package/.agents/skills/upstash-workflow-js/features/webhooks.md +79 -0
- package/.agents/skills/upstash-workflow-js/how-to/local-dev.md +177 -0
- package/.agents/skills/upstash-workflow-js/how-to/middleware.md +166 -0
- package/.agents/skills/upstash-workflow-js/how-to/migrations.md +201 -0
- package/.agents/skills/upstash-workflow-js/how-to/realtime.md +186 -0
- package/.agents/skills/upstash-workflow-js/rest-api.md +156 -0
- package/.agents/skills/upstash-workflow-js/troubleshooting.md +201 -0
- package/dist/agents/coding.agent.d.ts +185 -42
- package/dist/agents/coding.agent.d.ts.map +1 -1
- package/dist/agents/coding.agent.js +42 -5
- package/dist/agents/coding.agent.js.map +1 -1
- package/dist/agents/manager.d.ts +216 -41
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +103 -140
- package/dist/agents/manager.js.map +1 -1
- package/dist/agents/security.agent.d.ts +3 -3
- package/dist/agents/swarm/development/lead.d.ts +3 -0
- package/dist/agents/swarm/development/lead.d.ts.map +1 -0
- package/dist/agents/swarm/development/lead.js +24 -0
- package/dist/agents/swarm/development/lead.js.map +1 -0
- package/dist/agents/swarm/main.d.ts +69 -0
- package/dist/agents/swarm/main.d.ts.map +1 -1
- package/dist/agents/swarm/main.js +65 -11
- package/dist/agents/swarm/main.js.map +1 -1
- package/dist/agents/swarm/registry.d.ts +2 -1
- package/dist/agents/swarm/registry.d.ts.map +1 -1
- package/dist/agents/swarm/registry.js +225 -95
- package/dist/agents/swarm/registry.js.map +1 -1
- package/dist/cli/composer.d.ts.map +1 -1
- package/dist/cli/composer.js +85 -30
- package/dist/cli/composer.js.map +1 -1
- package/dist/cli/confirm.d.ts +2 -2
- package/dist/cli/confirm.d.ts.map +1 -1
- package/dist/cli/confirm.js +373 -4
- package/dist/cli/confirm.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +47 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/format.d.ts +4 -0
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +352 -65
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +80 -2
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/menu.d.ts.map +1 -1
- package/dist/cli/menu.js +93 -83
- package/dist/cli/menu.js.map +1 -1
- package/dist/cli/render.d.ts.map +1 -1
- package/dist/cli/render.js +2 -1
- package/dist/cli/render.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +262 -27
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/swarm.d.ts.map +1 -1
- package/dist/cli/swarm.js +13 -10
- package/dist/cli/swarm.js.map +1 -1
- package/dist/cli/theme.d.ts +7 -1
- package/dist/cli/theme.d.ts.map +1 -1
- package/dist/cli/theme.js +4 -16
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +27 -4
- package/dist/cli/update.js.map +1 -1
- package/dist/config/env.d.ts +3 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +22 -2
- package/dist/config/env.js.map +1 -1
- package/dist/config/models.d.ts +1 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +17 -1
- package/dist/config/models.js.map +1 -1
- package/dist/documents/pdf.d.ts.map +1 -1
- package/dist/documents/pdf.js +282 -22
- package/dist/documents/pdf.js.map +1 -1
- package/dist/documents/slides.d.ts.map +1 -1
- package/dist/documents/slides.js +160 -30
- package/dist/documents/slides.js.map +1 -1
- package/dist/index.js +73 -18
- package/dist/index.js.map +1 -1
- package/dist/memory/history.js +1 -1
- package/dist/observability/doctor.d.ts.map +1 -1
- package/dist/observability/doctor.js +3 -0
- package/dist/observability/doctor.js.map +1 -1
- package/dist/runtime/progress.d.ts +5 -1
- package/dist/runtime/progress.d.ts.map +1 -1
- package/dist/runtime/progress.js.map +1 -1
- package/dist/runtime/swarm.d.ts +1 -1
- package/dist/runtime/swarm.d.ts.map +1 -1
- package/dist/runtime/swarm.js +19 -3
- package/dist/runtime/swarm.js.map +1 -1
- package/dist/runtime/tool-utils.d.ts +2 -0
- package/dist/runtime/tool-utils.d.ts.map +1 -1
- package/dist/runtime/tool-utils.js +91 -0
- package/dist/runtime/tool-utils.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +16 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/test-call.d.ts +2 -0
- package/dist/test-call.d.ts.map +1 -0
- package/dist/test-call.js +29 -0
- package/dist/test-call.js.map +1 -0
- package/dist/test-manager-call.d.ts +2 -0
- package/dist/test-manager-call.d.ts.map +1 -0
- package/dist/test-manager-call.js +138 -0
- package/dist/test-manager-call.js.map +1 -0
- package/dist/test-manager-filtered.d.ts +2 -0
- package/dist/test-manager-filtered.d.ts.map +1 -0
- package/dist/test-manager-filtered.js +130 -0
- package/dist/test-manager-filtered.js.map +1 -0
- package/dist/test-mcp-call.d.ts +2 -0
- package/dist/test-mcp-call.d.ts.map +1 -0
- package/dist/test-mcp-call.js +103 -0
- package/dist/test-mcp-call.js.map +1 -0
- package/dist/tools/composio.tool.d.ts +1 -1
- package/dist/tools/composio.tool.d.ts.map +1 -1
- package/dist/tools/composio.tool.js +7 -16
- package/dist/tools/composio.tool.js.map +1 -1
- package/dist/tools/daytona-browser.tool.js +1 -1
- package/dist/tools/daytona-browser.tool.js.map +1 -1
- package/dist/tools/executive.tool.d.ts +40 -0
- package/dist/tools/executive.tool.d.ts.map +1 -0
- package/dist/tools/executive.tool.js +74 -0
- package/dist/tools/executive.tool.js.map +1 -0
- package/dist/tools/filesystem.tool.d.ts +183 -40
- package/dist/tools/filesystem.tool.d.ts.map +1 -1
- package/dist/tools/filesystem.tool.js +564 -111
- package/dist/tools/filesystem.tool.js.map +1 -1
- package/dist/tools/mcp.tool.d.ts +56 -0
- package/dist/tools/mcp.tool.d.ts.map +1 -0
- package/dist/tools/mcp.tool.js +285 -0
- package/dist/tools/mcp.tool.js.map +1 -0
- package/dist/tools/osint.tool.d.ts +4 -4
- package/dist/tools/pentest.tool.d.ts +2 -2
- package/dist/tools/setup-assistant.tool.d.ts +1 -1
- package/dist/tools/setup-assistant.tool.js +1 -1
- package/dist/tools/setup-assistant.tool.js.map +1 -1
- package/dist/workspace/paths.d.ts +1 -0
- package/dist/workspace/paths.d.ts.map +1 -1
- package/dist/workspace/paths.js +3 -4
- package/dist/workspace/paths.js.map +1 -1
- package/package.json +8 -4
- package/scripts/postinstall.mjs +19 -4
- package/scripts/release-github.mjs +11 -11
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Vector Feature: Namespaces
|
|
2
|
+
|
|
3
|
+
Namespaces partition a single Upstash Vector index into fully isolated subsets. Each request executes only within its specified namespace.
|
|
4
|
+
|
|
5
|
+
## Key Concepts
|
|
6
|
+
|
|
7
|
+
- Every index has a default namespace named "" (empty string).
|
|
8
|
+
- Additional namespaces are created automatically on first upsert.
|
|
9
|
+
- If no namespace is provided, all operations use the default.
|
|
10
|
+
|
|
11
|
+
## Using Namespaces
|
|
12
|
+
|
|
13
|
+
Upsert and query operations scoped to a namespace automatically create it if missing.
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { Index } from "@upstash/vector";
|
|
17
|
+
const index = new Index({ url: "URL", token: "TOKEN" });
|
|
18
|
+
const ns = index.namespace("ns");
|
|
19
|
+
await ns.upsert({ id: "id-0", vector: [0.1, 0.2] });
|
|
20
|
+
await ns.query({ vector: [0.1, 0.2], topK: 5 });
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Operatoins
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
await index.deleteNamespace("ns");
|
|
27
|
+
await index.listNamespaces();
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Common Pitfalls
|
|
31
|
+
|
|
32
|
+
- Forgetting to specify `namespace` causes writes to go into the default namespace.
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Vector TS SDK
|
|
2
|
+
|
|
3
|
+
## Upsert
|
|
4
|
+
|
|
5
|
+
Add or update vectors. Also accepts raw text (`data`) to embed automatically.
|
|
6
|
+
|
|
7
|
+
**Pitfalls**
|
|
8
|
+
|
|
9
|
+
- Vector dimension must match index dimension.
|
|
10
|
+
- Passing both `vector` and `data` is invalid.
|
|
11
|
+
- Metadata is optional but recommended for filtering.
|
|
12
|
+
|
|
13
|
+
**Example (single + batch, mix of vector/data)**
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
// Single vector
|
|
17
|
+
await index.upsert({ id: "1", vector: [0.1, 0.2], metadata: { type: "doc" } });
|
|
18
|
+
|
|
19
|
+
// Multiple vectors
|
|
20
|
+
await index.upsert(
|
|
21
|
+
[
|
|
22
|
+
{ id: "2", vector: [0.2, 0.3] },
|
|
23
|
+
{ id: "3", vector: [0.3, 0.4], metadata: { tag: "a" } },
|
|
24
|
+
],
|
|
25
|
+
{ namespace: "ns" }
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
// Using data (auto‑embedding. Only works if the vector index has an embedding model)
|
|
29
|
+
await index.upsert({ id: "4", data: "A fantasy movie" });
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Fetch
|
|
35
|
+
|
|
36
|
+
Retrieve vectors by exact ID or prefix.
|
|
37
|
+
|
|
38
|
+
**Example**
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
// Exact
|
|
42
|
+
const out = await index.fetch(["1", "2"], { includeMetadata: true });
|
|
43
|
+
// → [{ id: "1", metadata: {...} }, null]
|
|
44
|
+
|
|
45
|
+
// Prefix
|
|
46
|
+
await index.fetch({ prefix: "user-" });
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Delete
|
|
52
|
+
|
|
53
|
+
Remove vectors by IDs, prefix, or metadata filter.
|
|
54
|
+
|
|
55
|
+
**Pitfalls**
|
|
56
|
+
|
|
57
|
+
- Only one of `ids`, `prefix`, or `filter` can be used.
|
|
58
|
+
- Using `filter` triggers an O(N) scan.
|
|
59
|
+
|
|
60
|
+
**Example**
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
await index.delete(["1", "2"]);
|
|
64
|
+
await index.delete({ prefix: "user-" });
|
|
65
|
+
await index.delete({ filter: "status = 'expired'" });
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Query
|
|
71
|
+
|
|
72
|
+
Find the top‑K most similar vectors. Supports dense, sparse, hybrid, and embedded-on-demand queries.
|
|
73
|
+
|
|
74
|
+
**Pitfalls**
|
|
75
|
+
|
|
76
|
+
- Query vector dimension must match index.
|
|
77
|
+
- Scores are normalized 0–1 no matter the similarity metric.
|
|
78
|
+
|
|
79
|
+
**Example**
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// Dense vector
|
|
83
|
+
const results = await index.query({
|
|
84
|
+
vector: [0.1, 0.2],
|
|
85
|
+
topK: 3,
|
|
86
|
+
includeMetadata: true,
|
|
87
|
+
filter: "genre = 'fantasy'",
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Data (auto‑embedding)
|
|
91
|
+
await index.query({ data: "epic fantasy adventure", topK: 2 });
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Resumable Query
|
|
97
|
+
|
|
98
|
+
Long-running, chunked queries with server-side state.
|
|
99
|
+
|
|
100
|
+
**Pitfalls**
|
|
101
|
+
|
|
102
|
+
- Remember to call `stop()` to free resources.
|
|
103
|
+
- `fetchNext(k)` retrieves N more results.
|
|
104
|
+
|
|
105
|
+
**Example**
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
const { result, fetchNext, stop } = await index.resumableQuery({
|
|
109
|
+
vector: [0.1, 0.2],
|
|
110
|
+
topK: 50,
|
|
111
|
+
maxIdle: 3600,
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const next = await fetchNext(10);
|
|
115
|
+
await stop();
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Range
|
|
121
|
+
|
|
122
|
+
Paginated, stateless scanning of vectors; recommended for large prefix fetches.
|
|
123
|
+
|
|
124
|
+
**Pitfalls**
|
|
125
|
+
|
|
126
|
+
- Always pass `cursor`; set to `0` initially.
|
|
127
|
+
|
|
128
|
+
**Example**
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
let cursor = 0;
|
|
132
|
+
while (cursor !== null) {
|
|
133
|
+
const page = await index.range({ cursor, limit: 100, includeMetadata: true });
|
|
134
|
+
console.log(page.vectors);
|
|
135
|
+
cursor = page.nextCursor;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Info
|
|
142
|
+
|
|
143
|
+
Retrieve index statistics.
|
|
144
|
+
|
|
145
|
+
**Example**
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
const info = await index.info();
|
|
149
|
+
/* Returns:
|
|
150
|
+
{
|
|
151
|
+
vectorCount: number;
|
|
152
|
+
pendingVectorCount: number;
|
|
153
|
+
indexSize: number;
|
|
154
|
+
dimension: number;
|
|
155
|
+
similarityFunction: "COSINE" | "EUCLIDEAN" | "DOT_PRODUCT";
|
|
156
|
+
denseIndex?: {
|
|
157
|
+
dimension: number;
|
|
158
|
+
similarityFunction: "COSINE" | "EUCLIDEAN" | "DOT_PRODUCT";
|
|
159
|
+
embeddingModel?: string;
|
|
160
|
+
};
|
|
161
|
+
sparseIndex?: {
|
|
162
|
+
embeddingModel?: string;
|
|
163
|
+
};
|
|
164
|
+
namespaces: Record<string, {
|
|
165
|
+
vectorCount: number;
|
|
166
|
+
pendingVectorCount: number;
|
|
167
|
+
}>;
|
|
168
|
+
}
|
|
169
|
+
*/
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Reset
|
|
175
|
+
|
|
176
|
+
Clear a namespace or the entire index.
|
|
177
|
+
|
|
178
|
+
**Pitfalls**
|
|
179
|
+
|
|
180
|
+
- `{ all: true }` must be explicit.
|
|
181
|
+
|
|
182
|
+
**Example**
|
|
183
|
+
|
|
184
|
+
```ts
|
|
185
|
+
await index.reset(); // default namespace
|
|
186
|
+
await index.reset({ namespace: "my-namespace" });
|
|
187
|
+
await index.reset({ all: true });
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Advanced
|
|
193
|
+
|
|
194
|
+
### Request Timeout
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
const index = new Index({
|
|
198
|
+
url,
|
|
199
|
+
token,
|
|
200
|
+
signal: () => AbortSignal.timeout(1000),
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Telemetry
|
|
205
|
+
|
|
206
|
+
Disable with env variable:
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
UPSTASH_DISABLE_TELEMETRY=1
|
|
210
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: upstash-workflow-js
|
|
3
|
+
description: Skills for the Upstash Workflow TypeScript/JavaScript SDK to define, trigger, and manage workflows. Use this Skill whenever a user wants to create workflow endpoints, run steps, or interact with the Upstash Workflow client.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Upstash Workflow SDK
|
|
7
|
+
|
|
8
|
+
## Quick Start
|
|
9
|
+
|
|
10
|
+
The Upstash Workflow SDK lets you expose serverless workflow endpoints and run them reliably using QStash under the hood.
|
|
11
|
+
|
|
12
|
+
Install:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @upstash/workflow
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Define a simple workflow endpoint:
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { serve } from "@upstash/workflow";
|
|
22
|
+
|
|
23
|
+
export const { POST } = serve(async (context) => {
|
|
24
|
+
await context.run("step-1", () => console.log("step 1"));
|
|
25
|
+
await context.run("step-2", () => console.log("step 2"));
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Trigger it from your backend:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { Client } from "@upstash/workflow";
|
|
33
|
+
|
|
34
|
+
const client = new Client({ token: process.env.QSTASH_TOKEN! });
|
|
35
|
+
await client.trigger({ url: "https://your-app.com/api/workflow" });
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Other Skill Files
|
|
39
|
+
|
|
40
|
+
These files contain the full documentation. Use them for details, patterns, and advanced behavior.
|
|
41
|
+
|
|
42
|
+
- basics:
|
|
43
|
+
- **basics/serve** – How to expose workflow endpoints.
|
|
44
|
+
- **basics/context** – Full API for workflow `context` (steps, waits, webhooks, events, invoke, etc.).
|
|
45
|
+
- **basics/client** – Using the Workflow client to trigger, cancel, inspect, and notify runs.
|
|
46
|
+
- features:
|
|
47
|
+
- **features/invoke** – Cross‑workflow invocation.
|
|
48
|
+
- **features/reliability** – Retries, failure callbacks, and DLQ.
|
|
49
|
+
- **features/flow-control** – Rate limits, concurrency, and parallelism.
|
|
50
|
+
- **features/wait-for-event** – Notify and wait-for-event patterns.
|
|
51
|
+
- **features/webhooks** – Webhook creation and consumption.
|
|
52
|
+
- how to:
|
|
53
|
+
- **how-to/local-dev** – Local QStash dev server (auto via `QSTASH_DEV=true`) and tunneling.
|
|
54
|
+
- **how-to/realtime** – Realtime and human‑in‑the‑loop workflows.
|
|
55
|
+
- **how-to/migrations** – Migrating workflows safely.
|
|
56
|
+
- **how-to/middleware** – Adding middleware to workflows.
|
|
57
|
+
- other files:
|
|
58
|
+
- **rest-api** – Low-level REST endpoints for interacting with QStash/Workflow.
|
|
59
|
+
- **troubleshooting** – Common debugging and environment issues.
|
|
60
|
+
- **agents** – Using Workflow with agents, orchestrators, and automation patterns.
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-agents
|
|
3
|
+
description: Skill for building, configuring, and orchestrating Upstash Workflow Agents. Use when the user mentions agent workflows, multi-agent collaboration, tools, tasks, Upstash Workflow, or patterns like evaluator-optimizer, prompt chaining, parallelization, or orchestrator-workers.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow Agents
|
|
7
|
+
|
|
8
|
+
This Skill provides guidance for defining and orchestrating agents, tools, models, and tasks inside **Upstash Workflow** using **TypeScript**. It explains core concepts, common patterns, workflow configuration, and pitfalls.
|
|
9
|
+
|
|
10
|
+
## Quick Overview
|
|
11
|
+
|
|
12
|
+
Use this Skill when:
|
|
13
|
+
|
|
14
|
+
- Building agents with tools and backgrounds
|
|
15
|
+
- Creating multi-step or multi-agent tasks
|
|
16
|
+
- Implementing patterns like evaluator-optimizer or prompt chaining
|
|
17
|
+
- Integrating LangChain or AI SDK tools
|
|
18
|
+
- Running workflows reliably inside Upstash Workflow
|
|
19
|
+
|
|
20
|
+
The Workflow Agents API centers around four elements:
|
|
21
|
+
|
|
22
|
+
- **Models** — LLM providers (OpenAI, Anthropic, or any AI SDK provider)
|
|
23
|
+
- **Tools** — Functions agents can call
|
|
24
|
+
- **Agents** — LLM instances with background, maxSteps, and tools
|
|
25
|
+
- **Tasks** — Executable prompts assigned to one or more agents
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Defining Models
|
|
30
|
+
|
|
31
|
+
A model defines which provider the agent uses and includes optional configuration for retries, timeouts, or rate‑limits.
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
const agents = agentWorkflow(context);
|
|
35
|
+
|
|
36
|
+
// Basic OpenAI model
|
|
37
|
+
const model = agents.openai("gpt-3.5-turbo");
|
|
38
|
+
|
|
39
|
+
// OpenAI-compatible provider
|
|
40
|
+
const deepseek = agents.openai("deepseek-chat", {
|
|
41
|
+
baseURL: "https://api.deepseek.com",
|
|
42
|
+
apiKey: process.env.DEEPSEEK_API_KEY,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// AI SDK provider (ex: Anthropic)
|
|
46
|
+
const anthropic = agents.AISDKModel({
|
|
47
|
+
context,
|
|
48
|
+
provider: createAnthropic, // imported from @ai-sdk/anthropic
|
|
49
|
+
providerParams: { apiKey: process.env.ANTHROPIC_KEY },
|
|
50
|
+
agentCallParams: {
|
|
51
|
+
timeout: 1000,
|
|
52
|
+
retries: 0,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Key parameters:**
|
|
58
|
+
|
|
59
|
+
- **callSettings / agentCallParams** — timeout, retries, flow control
|
|
60
|
+
- **provider / providerParams** — when using AI SDK providers
|
|
61
|
+
|
|
62
|
+
**Pitfall:** If you use an OpenAI-compatible provider, you **must** set `baseURL`.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
# Defining Tools
|
|
67
|
+
|
|
68
|
+
Tools extend what agents can do. Workflow supports:
|
|
69
|
+
|
|
70
|
+
- WorkflowTool (native)
|
|
71
|
+
- AI SDK tools
|
|
72
|
+
- LangChain tools
|
|
73
|
+
- Agentic toolkits
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
import { z } from "zod";
|
|
77
|
+
import { tool } from "ai";
|
|
78
|
+
import { WorkflowTool } from "@upstash/workflow-agents";
|
|
79
|
+
import { WikipediaQueryRun } from "@langchain/community/tools/wikipedia_query_run";
|
|
80
|
+
|
|
81
|
+
const mathTool = tool({
|
|
82
|
+
description: "Evaluate a math expression",
|
|
83
|
+
parameters: z.object({ expression: z.string() }),
|
|
84
|
+
execute: async ({ expression }) => mathjs.evaluate(expression),
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
const workflowMath = new WorkflowTool({
|
|
88
|
+
description: "Evaluate math (workflow step aware)",
|
|
89
|
+
schema: z.object({ expression: z.string() }),
|
|
90
|
+
invoke: async ({ expression }) => mathjs.evaluate(expression),
|
|
91
|
+
executeAsStep: false, // allows context.call, etc.
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const wikiTool = new WikipediaQueryRun({
|
|
95
|
+
topKResults: 1,
|
|
96
|
+
maxDocContentLength: 500,
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Common mistakes:**
|
|
101
|
+
|
|
102
|
+
- Workflow wraps execute/invoke in `context.run` by default, so you **cannot use context.call** unless `executeAsStep: false` is set.
|
|
103
|
+
- LangChain tools must return **strings**, not objects.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
# Defining Agents
|
|
108
|
+
|
|
109
|
+
Agents wrap a model and add behavior via:
|
|
110
|
+
|
|
111
|
+
- `maxSteps` — how many LLM calls the agent is allowed to make
|
|
112
|
+
- `background` — system prompt
|
|
113
|
+
- `tools` — available actions
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
const generator = agents.agent({
|
|
117
|
+
model,
|
|
118
|
+
name: "generator",
|
|
119
|
+
maxSteps: 1,
|
|
120
|
+
background: "Generate text from prompts.",
|
|
121
|
+
tools: {},
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const evaluator = agents.agent({
|
|
125
|
+
model,
|
|
126
|
+
name: "evaluator",
|
|
127
|
+
maxSteps: 1,
|
|
128
|
+
background: "Evaluate responses and give corrections.",
|
|
129
|
+
tools: {},
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Tips:**
|
|
134
|
+
|
|
135
|
+
- Pick maxSteps carefully; too low prevents tool use; too high increases cost.
|
|
136
|
+
- Names appear in Upstash Console logs; keep them descriptive.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
# Tasks (Single & Multi Agent)
|
|
141
|
+
|
|
142
|
+
A **task** is a single execution of an agent or a group of agents.
|
|
143
|
+
|
|
144
|
+
```ts
|
|
145
|
+
// Single agent task
|
|
146
|
+
const single = agents.task({
|
|
147
|
+
agent: generator,
|
|
148
|
+
prompt: "Explain quantum mechanics.",
|
|
149
|
+
});
|
|
150
|
+
const { text } = await single.run();
|
|
151
|
+
|
|
152
|
+
// Multi-agent with manager agent
|
|
153
|
+
const multi = agents.task({
|
|
154
|
+
model, // manager LLM
|
|
155
|
+
agents: [generator, evaluator],
|
|
156
|
+
maxSteps: 3,
|
|
157
|
+
prompt: "Generate text and refine it until quality improves.",
|
|
158
|
+
});
|
|
159
|
+
const result = await multi.run();
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Tip:** In multi-agent mode, the model becomes a "manager" system that decides which agent to call.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
# Common Agent Patterns
|
|
167
|
+
|
|
168
|
+
Below are the patterns supported by the source files in this skill.
|
|
169
|
+
|
|
170
|
+
## Prompt Chaining
|
|
171
|
+
|
|
172
|
+
Sequential agent calls where each output becomes the next input.
|
|
173
|
+
Useful for: stepwise research, multi‑stage content generation, breaking down complex tasks.
|
|
174
|
+
|
|
175
|
+
Pitfall: watch `maxSteps` for agents that need both tool calls and summarization.
|
|
176
|
+
|
|
177
|
+
## Evaluator‑Optimizer
|
|
178
|
+
|
|
179
|
+
Loop until evaluator returns a PASS. Simple feedback‑refinement pattern.
|
|
180
|
+
|
|
181
|
+
Pitfall: Always check evaluator output with `.includes("PASS")`, not strict equality.
|
|
182
|
+
|
|
183
|
+
## Parallelization
|
|
184
|
+
|
|
185
|
+
Use multiple agents with `Promise.all` and then aggregate.
|
|
186
|
+
|
|
187
|
+
Pitfall: Avoid extremely large aggregated prompts; summarizing before combining is recommended.
|
|
188
|
+
|
|
189
|
+
## Orchestrator‑Workers
|
|
190
|
+
|
|
191
|
+
Manager delegates sub‑tasks to specialized workers.
|
|
192
|
+
Useful for structured Q&A, multi‑topic analysis, or complex synthesis.
|
|
193
|
+
|
|
194
|
+
Pitfall: The manager must have enough `maxSteps` to orchestrate multiple workers.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
# Best Practices
|
|
199
|
+
|
|
200
|
+
- Give each agent a _clear_ background; ambiguous roles cause incorrect tool use.
|
|
201
|
+
- Define tools with strict schemas so LLMs call them reliably.
|
|
202
|
+
- Use multi-agent tasks when the problem requires specialization.
|
|
203
|
+
- Inspect console logs to debug tool calls and agent decisions.
|
|
204
|
+
- Use local QStash dev server during development to avoid rate limits.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
# Example: Combined Setup (models + tools + agents + tasks)
|
|
209
|
+
|
|
210
|
+
This shows all core fields together in one concise example.
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
export const { POST } = serve(async (context) => {
|
|
214
|
+
const agents = agentWorkflow(context);
|
|
215
|
+
const model = agents.openai("gpt-4o");
|
|
216
|
+
|
|
217
|
+
const mathTool = tool({
|
|
218
|
+
description: "Compute math",
|
|
219
|
+
parameters: z.object({ expression: z.string() }),
|
|
220
|
+
execute: async ({ expression }) => mathjs.evaluate(expression),
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
const researcher = agents.agent({
|
|
224
|
+
model,
|
|
225
|
+
name: "researcher",
|
|
226
|
+
maxSteps: 2,
|
|
227
|
+
background: "Research topics using wiki.",
|
|
228
|
+
tools: { wikiTool },
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
const mathematician = agents.agent({
|
|
232
|
+
model,
|
|
233
|
+
name: "math",
|
|
234
|
+
maxSteps: 2,
|
|
235
|
+
background: "Solve numeric problems.",
|
|
236
|
+
tools: { mathTool },
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
const task = agents.task({
|
|
240
|
+
model, // manager
|
|
241
|
+
agents: [researcher, mathematician],
|
|
242
|
+
maxSteps: 3,
|
|
243
|
+
prompt: "Tell me about 3 stars and compute the sum of their masses.",
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
return (await task.run()).text;
|
|
247
|
+
});
|
|
248
|
+
```
|