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,201 @@
|
|
|
1
|
+
# Workflow Troubleshooting (TypeScript)
|
|
2
|
+
|
|
3
|
+
This guide provides clear, TypeScript‑focused patterns for diagnosing and fixing common issues in Upstash Workflow. It highlights correct usage of core workflow features and shows how to avoid pitfalls that commonly occur in real applications.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Steps Inside try/catch
|
|
8
|
+
|
|
9
|
+
Workflow steps (`context.run`, `context.sleep`, `context.sleepUntil`, `context.call`) intentionally throw `WorkflowAbort` after completing. Catching this error prevents the workflow engine from progressing.
|
|
10
|
+
|
|
11
|
+
**Correct pattern:** rethrow `WorkflowAbort` or avoid `try/catch` around steps.
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
import { WorkflowAbort } from "@upstash/workflow";
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
// Any step will throw WorkflowAbort
|
|
18
|
+
const result = await context.run("step", () => "ok");
|
|
19
|
+
} catch (err) {
|
|
20
|
+
if (err instanceof WorkflowAbort) throw err; // required
|
|
21
|
+
// handle real errors
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If you _must_ handle errors, move the `try/catch` into the function passed to `context.run`.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## requestPayload Becoming Undefined
|
|
30
|
+
|
|
31
|
+
During `context.call`, the workflow endpoint is invoked multiple times internally. Before the first step executes, `context.requestPayload` may appear `undefined`.
|
|
32
|
+
|
|
33
|
+
**Fix:** capture the payload via a step:
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
export const { POST } = serve(async (context) => {
|
|
37
|
+
const payload = await context.run("get-payload", () => context.requestPayload);
|
|
38
|
+
|
|
39
|
+
// payload remains stable even during context.call
|
|
40
|
+
await context.call("my-call", {
|
|
41
|
+
url: "https://example.com",
|
|
42
|
+
body: payload,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Header considerations:** When triggering workflows, ensure payload‑friendly headers like:
|
|
48
|
+
|
|
49
|
+
- `Content-Type: text/plain`
|
|
50
|
+
- `Content-Type: application/json`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Signature Verification Failures
|
|
55
|
+
|
|
56
|
+
If QStash request verification fails:
|
|
57
|
+
|
|
58
|
+
- Ensure the workflow is triggered through QStash (`client.trigger` or publish)
|
|
59
|
+
- Verify `QSTASH_CURRENT_SIGNING_KEY` and `QSTASH_NEXT_SIGNING_KEY`
|
|
60
|
+
- Pass appropriate `Content-Type` headers when triggering
|
|
61
|
+
|
|
62
|
+
Error looks like:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
Failed to verify that the Workflow request comes from QStash: ...
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Authorization Errors from Early Returns
|
|
71
|
+
|
|
72
|
+
If your workflow returns **before running any step**, the SDK interprets this as failed authorization:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
HTTP 400 – Failed to authenticate Workflow request.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
To safely perform non‑deterministic checks, wrap them in a step:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
export const { POST } = serve(async (context) => {
|
|
82
|
+
const shouldExit = await context.run("check-condition", () => Math.random() > 0.5);
|
|
83
|
+
if (shouldExit) return;
|
|
84
|
+
|
|
85
|
+
// remaining workflow
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Retry Configuration
|
|
92
|
+
|
|
93
|
+
Retries come from two locations:
|
|
94
|
+
|
|
95
|
+
- Workflow start (`client.trigger`): default **3**, applies to workflow steps
|
|
96
|
+
- `context.call`: default **0**
|
|
97
|
+
- `context.invoke`: default **0**
|
|
98
|
+
|
|
99
|
+
Use these in combination to tune behavior correctly.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Verbose Mode Diagnostics
|
|
104
|
+
|
|
105
|
+
Enable verbose logging to debug rare edge cases:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
serve(handler, { verbose: true });
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Useful warnings include:
|
|
112
|
+
|
|
113
|
+
- Localhost in workflow URL
|
|
114
|
+
- Duplicate step execution
|
|
115
|
+
- Network response anomalies
|
|
116
|
+
- Parallel `context.call` race warnings
|
|
117
|
+
|
|
118
|
+
Each of these indicates environmental or routing issues rather than workflow logic problems.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## HTTPS Protocol Issues (Proxy Environments)
|
|
123
|
+
|
|
124
|
+
If deployed behind a proxy that downgrades HTTPS → HTTP (e.g., Railway), the SDK may infer the wrong protocol.
|
|
125
|
+
|
|
126
|
+
**Fix:** explicitly set:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
UPSTASH_WORKFLOW_URL=https://your-deployment-url
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Workflow Stuck on First Step
|
|
135
|
+
|
|
136
|
+
If the first step appears stuck:
|
|
137
|
+
|
|
138
|
+
- Check step logs in the dashboard
|
|
139
|
+
- Ensure the endpoint URL is correct and reachable
|
|
140
|
+
- Verify SDK versions
|
|
141
|
+
- If inference is failing, explicitly set `baseUrl`:
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
serve(handler, { baseUrl: "https://your-url" });
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Non‑workflow Destination Error
|
|
150
|
+
|
|
151
|
+
Occurs when triggering a non‑workflow endpoint or using mismatched SDK versions.
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
detected a non-workflow destination for trigger/invoke
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Ensure:**
|
|
158
|
+
|
|
159
|
+
- The URL points to a `serve()` workflow endpoint
|
|
160
|
+
- Both caller and workflow endpoint use the latest SDK
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Vercel Preview Deployment Protection
|
|
165
|
+
|
|
166
|
+
Preview deployments block external requests unless bypassed.
|
|
167
|
+
|
|
168
|
+
**Steps:**
|
|
169
|
+
|
|
170
|
+
1. Create a bypass secret in Vercel → Deployment Protection
|
|
171
|
+
2. Add it to the QStash client + pass it when triggering
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
import { Client as QStash } from "@upstash/qstash";
|
|
175
|
+
import { serve } from "@upstash/workflow/nextjs";
|
|
176
|
+
|
|
177
|
+
export const { POST } = serve(
|
|
178
|
+
async (context) => {
|
|
179
|
+
// workflow logic
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
qstashClient: new QStash({
|
|
183
|
+
token: process.env.QSTASH_TOKEN!,
|
|
184
|
+
headers: {
|
|
185
|
+
"x-vercel-protection-bypass": process.env.VERCEL_AUTOMATION_BYPASS_SECRET!,
|
|
186
|
+
},
|
|
187
|
+
}),
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
// Triggering
|
|
192
|
+
await client.trigger({
|
|
193
|
+
url: "https://preview.vercel.app/workflow",
|
|
194
|
+
headers: {
|
|
195
|
+
"x-vercel-protection-bypass": process.env.VERCEL_AUTOMATION_BYPASS_SECRET!,
|
|
196
|
+
},
|
|
197
|
+
body: "hello",
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Both trigger header and client header are required.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ToolLoopAgent } from 'ai';
|
|
2
|
-
export declare function createCodingAgent(runId?: string): ToolLoopAgent<never, {
|
|
2
|
+
export declare function createCodingAgent(runId?: string): Promise<ToolLoopAgent<never, {
|
|
3
3
|
readScratchpad: import("ai").Tool<Record<string, never>, string>;
|
|
4
4
|
appendScratchpad: import("ai").Tool<{
|
|
5
5
|
note: string;
|
|
@@ -189,25 +189,93 @@ export declare function createCodingAgent(runId?: string): ToolLoopAgent<never,
|
|
|
189
189
|
size: number;
|
|
190
190
|
modifiedAt: string;
|
|
191
191
|
}[]>;
|
|
192
|
+
listDirectory: import("ai").Tool<{
|
|
193
|
+
path: string;
|
|
194
|
+
filter?: string | undefined;
|
|
195
|
+
includeHidden?: boolean | undefined;
|
|
196
|
+
maxDepth?: number | undefined;
|
|
197
|
+
limit?: number | undefined;
|
|
198
|
+
sortBy?: "name" | "size" | "modified" | undefined;
|
|
199
|
+
}, {
|
|
200
|
+
directory: string;
|
|
201
|
+
absolutePath: string;
|
|
202
|
+
entries: {
|
|
203
|
+
path: string;
|
|
204
|
+
absolutePath: string;
|
|
205
|
+
type: "file" | "directory";
|
|
206
|
+
size: number;
|
|
207
|
+
modifiedAt: string;
|
|
208
|
+
}[];
|
|
209
|
+
count: number;
|
|
210
|
+
filtered: boolean;
|
|
211
|
+
}>;
|
|
212
|
+
treeView: import("ai").Tool<{
|
|
213
|
+
path?: string | undefined;
|
|
214
|
+
maxDepth?: number | undefined;
|
|
215
|
+
includeHidden?: boolean | undefined;
|
|
216
|
+
foldersOnly?: boolean | undefined;
|
|
217
|
+
}, {
|
|
218
|
+
tree: string;
|
|
219
|
+
directories: number;
|
|
220
|
+
files: number;
|
|
221
|
+
root: string;
|
|
222
|
+
}>;
|
|
192
223
|
readFile: import("ai").Tool<{
|
|
193
224
|
path: string;
|
|
194
225
|
maxBytes?: number | undefined;
|
|
226
|
+
startLine?: number | undefined;
|
|
227
|
+
endLine?: number | undefined;
|
|
195
228
|
}, {
|
|
196
229
|
path: string;
|
|
197
230
|
size: number;
|
|
198
231
|
modifiedAt: string;
|
|
199
232
|
truncated: boolean;
|
|
200
233
|
content: string;
|
|
234
|
+
lineCount: number;
|
|
201
235
|
}>;
|
|
202
236
|
writeFile: import("ai").Tool<{
|
|
203
237
|
path: string;
|
|
204
238
|
content: string;
|
|
205
239
|
mode?: "append" | "overwrite" | undefined;
|
|
240
|
+
createDirs?: boolean | undefined;
|
|
206
241
|
}, {
|
|
207
242
|
path: string;
|
|
208
243
|
bytes: number;
|
|
209
244
|
mode: "append" | "overwrite";
|
|
210
245
|
}>;
|
|
246
|
+
patchFile: import("ai").Tool<{
|
|
247
|
+
path: string;
|
|
248
|
+
find?: string | undefined;
|
|
249
|
+
replace?: string | undefined;
|
|
250
|
+
startLine?: number | undefined;
|
|
251
|
+
endLine?: number | undefined;
|
|
252
|
+
newContent?: string | undefined;
|
|
253
|
+
replaceAll?: boolean | undefined;
|
|
254
|
+
}, {
|
|
255
|
+
path: string;
|
|
256
|
+
changed: boolean;
|
|
257
|
+
bytesBefore: number;
|
|
258
|
+
bytesAfter: number;
|
|
259
|
+
}>;
|
|
260
|
+
grepFiles: import("ai").Tool<{
|
|
261
|
+
pattern: string;
|
|
262
|
+
root?: string | undefined;
|
|
263
|
+
filePattern?: string | undefined;
|
|
264
|
+
isRegex?: boolean | undefined;
|
|
265
|
+
caseSensitive?: boolean | undefined;
|
|
266
|
+
maxResults?: number | undefined;
|
|
267
|
+
contextLines?: number | undefined;
|
|
268
|
+
maxDepth?: number | undefined;
|
|
269
|
+
}, {
|
|
270
|
+
pattern: string;
|
|
271
|
+
matches: {
|
|
272
|
+
file: string;
|
|
273
|
+
lineNumber: number;
|
|
274
|
+
line: string;
|
|
275
|
+
context: string[];
|
|
276
|
+
}[];
|
|
277
|
+
total: number;
|
|
278
|
+
}>;
|
|
211
279
|
createFolder: import("ai").Tool<{
|
|
212
280
|
path: string;
|
|
213
281
|
}, {
|
|
@@ -224,6 +292,53 @@ export declare function createCodingAgent(runId?: string): ToolLoopAgent<never,
|
|
|
224
292
|
from: string;
|
|
225
293
|
to: string;
|
|
226
294
|
}>;
|
|
295
|
+
bulkMove: import("ai").Tool<{
|
|
296
|
+
paths: string[];
|
|
297
|
+
to: string;
|
|
298
|
+
operation: "move" | "copy";
|
|
299
|
+
overwrite?: boolean | undefined;
|
|
300
|
+
}, {
|
|
301
|
+
operation: "move" | "copy";
|
|
302
|
+
destination: string;
|
|
303
|
+
results: {
|
|
304
|
+
from: string;
|
|
305
|
+
to: string;
|
|
306
|
+
status: "ok" | "error";
|
|
307
|
+
error?: string;
|
|
308
|
+
}[];
|
|
309
|
+
}>;
|
|
310
|
+
deleteFile: import("ai").Tool<{
|
|
311
|
+
path: string;
|
|
312
|
+
}, {
|
|
313
|
+
deleted: boolean;
|
|
314
|
+
path: string;
|
|
315
|
+
size: number;
|
|
316
|
+
}>;
|
|
317
|
+
deleteFolder: import("ai").Tool<{
|
|
318
|
+
path: string;
|
|
319
|
+
}, {
|
|
320
|
+
deleted: boolean;
|
|
321
|
+
path: string;
|
|
322
|
+
}>;
|
|
323
|
+
getFileInfo: import("ai").Tool<{
|
|
324
|
+
path: string;
|
|
325
|
+
}, {
|
|
326
|
+
path: string;
|
|
327
|
+
absolutePath: string;
|
|
328
|
+
type: string;
|
|
329
|
+
extension: string | undefined;
|
|
330
|
+
size: number;
|
|
331
|
+
sizeKB: string;
|
|
332
|
+
sizeMB: string;
|
|
333
|
+
created: string;
|
|
334
|
+
modified: string;
|
|
335
|
+
accessed: string;
|
|
336
|
+
isFile: boolean;
|
|
337
|
+
isDirectory: boolean;
|
|
338
|
+
isSymlink: boolean;
|
|
339
|
+
mode: string;
|
|
340
|
+
lineCount: number | undefined;
|
|
341
|
+
}>;
|
|
227
342
|
summarizeDocument: import("ai").Tool<{
|
|
228
343
|
path: string;
|
|
229
344
|
maxBytes?: number | undefined;
|
|
@@ -234,17 +349,41 @@ export declare function createCodingAgent(runId?: string): ToolLoopAgent<never,
|
|
|
234
349
|
path: string;
|
|
235
350
|
truncated: boolean;
|
|
236
351
|
}>;
|
|
237
|
-
|
|
352
|
+
diffFiles: import("ai").Tool<{
|
|
353
|
+
fileA: string;
|
|
354
|
+
fileB: string;
|
|
355
|
+
contextLines?: number | undefined;
|
|
356
|
+
}, {
|
|
357
|
+
fileA: string;
|
|
358
|
+
fileB: string;
|
|
359
|
+
added: number;
|
|
360
|
+
removed: number;
|
|
361
|
+
unchanged: number;
|
|
362
|
+
diff: string;
|
|
363
|
+
identical: boolean;
|
|
364
|
+
}>;
|
|
365
|
+
diskUsage: import("ai").Tool<{
|
|
238
366
|
path?: string | undefined;
|
|
239
|
-
watchName?: string | undefined;
|
|
240
|
-
reset?: boolean | undefined;
|
|
241
367
|
maxDepth?: number | undefined;
|
|
368
|
+
topN?: number | undefined;
|
|
242
369
|
}, {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
370
|
+
root: string;
|
|
371
|
+
totalBytes: number;
|
|
372
|
+
totalKB: string;
|
|
373
|
+
totalMB: string;
|
|
374
|
+
fileCount: number;
|
|
375
|
+
dirCount: number;
|
|
376
|
+
topFiles: {
|
|
377
|
+
path: string;
|
|
378
|
+
size: number;
|
|
379
|
+
sizeKB: string;
|
|
380
|
+
}[];
|
|
381
|
+
topDirs: {
|
|
382
|
+
dir: string;
|
|
383
|
+
size: number;
|
|
384
|
+
sizeKB: string;
|
|
385
|
+
sizeMB: string;
|
|
386
|
+
}[];
|
|
248
387
|
}>;
|
|
249
388
|
findDuplicateLargeFiles: import("ai").Tool<{
|
|
250
389
|
root?: string | undefined;
|
|
@@ -264,53 +403,57 @@ export declare function createCodingAgent(runId?: string): ToolLoopAgent<never,
|
|
|
264
403
|
files: string[];
|
|
265
404
|
}[];
|
|
266
405
|
}>;
|
|
267
|
-
|
|
268
|
-
path
|
|
269
|
-
|
|
406
|
+
watchFolderChanges: import("ai").Tool<{
|
|
407
|
+
path?: string | undefined;
|
|
408
|
+
watchName?: string | undefined;
|
|
409
|
+
reset?: boolean | undefined;
|
|
410
|
+
maxDepth?: number | undefined;
|
|
270
411
|
}, {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
412
|
+
watchName: string;
|
|
413
|
+
baselineSaved: boolean;
|
|
414
|
+
added: string[];
|
|
415
|
+
changed: string[];
|
|
416
|
+
removed: string[];
|
|
274
417
|
}>;
|
|
275
|
-
|
|
418
|
+
touchFile: import("ai").Tool<{
|
|
276
419
|
path: string;
|
|
277
|
-
confirm: boolean;
|
|
278
420
|
}, {
|
|
279
|
-
deleted: boolean;
|
|
280
421
|
path: string;
|
|
422
|
+
created: boolean;
|
|
281
423
|
}>;
|
|
282
|
-
|
|
424
|
+
createSymlink: import("ai").Tool<{
|
|
425
|
+
target: string;
|
|
426
|
+
link: string;
|
|
427
|
+
}, {
|
|
428
|
+
link: string;
|
|
429
|
+
target: string;
|
|
430
|
+
}>;
|
|
431
|
+
readSymlink: import("ai").Tool<{
|
|
283
432
|
path: string;
|
|
284
|
-
filter?: string | undefined;
|
|
285
|
-
includeHidden?: boolean | undefined;
|
|
286
|
-
maxDepth?: number | undefined;
|
|
287
|
-
limit?: number | undefined;
|
|
288
433
|
}, {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
path: string;
|
|
292
|
-
absolutePath: string;
|
|
293
|
-
type: "file" | "directory";
|
|
294
|
-
size: number;
|
|
295
|
-
modifiedAt: string;
|
|
296
|
-
}[];
|
|
297
|
-
count: number;
|
|
298
|
-
filtered: boolean;
|
|
434
|
+
link: string;
|
|
435
|
+
target: string;
|
|
299
436
|
}>;
|
|
300
|
-
|
|
437
|
+
checkFileExists: import("ai").Tool<{
|
|
301
438
|
path: string;
|
|
302
439
|
}, {
|
|
440
|
+
exists: boolean;
|
|
441
|
+
path: string;
|
|
442
|
+
type?: never;
|
|
443
|
+
size?: never;
|
|
444
|
+
modified?: never;
|
|
445
|
+
} | {
|
|
446
|
+
exists: boolean;
|
|
303
447
|
path: string;
|
|
304
448
|
type: string;
|
|
305
449
|
size: number;
|
|
306
|
-
sizeKB: string;
|
|
307
|
-
sizeMB: string;
|
|
308
|
-
created: string;
|
|
309
450
|
modified: string;
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
451
|
+
}>;
|
|
452
|
+
chmodFile: import("ai").Tool<{
|
|
453
|
+
path: string;
|
|
454
|
+
mode: string;
|
|
455
|
+
}, {
|
|
456
|
+
path: string;
|
|
314
457
|
mode: string;
|
|
315
458
|
}>;
|
|
316
459
|
grepCodebase: import("ai").Tool<{
|
|
@@ -468,5 +611,5 @@ export declare function createCodingAgent(runId?: string): ToolLoopAgent<never,
|
|
|
468
611
|
task: string;
|
|
469
612
|
context?: string | undefined;
|
|
470
613
|
}, string>;
|
|
471
|
-
}, never
|
|
614
|
+
}, never>>;
|
|
472
615
|
//# sourceMappingURL=coding.agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding.agent.d.ts","sourceRoot":"","sources":["../../src/agents/coding.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAQ,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"coding.agent.d.ts","sourceRoot":"","sources":["../../src/agents/coding.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAQ,MAAM,IAAI,CAAC;AA6HtD,wBAAsB,iBAAiB,CAAC,KAAK,SAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuCxD"}
|
|
@@ -11,12 +11,35 @@ import { skillTools } from '../tools/skills.tool.js';
|
|
|
11
11
|
import { timeTools } from '../tools/time.tool.js';
|
|
12
12
|
import { limits } from '../safety/limits.js';
|
|
13
13
|
import { emitProgress } from '../runtime/progress.js';
|
|
14
|
-
|
|
14
|
+
import { createComposioTools } from '../tools/composio.tool.js';
|
|
15
|
+
import { createMCPTools } from '../tools/mcp.tool.js';
|
|
16
|
+
async function createAppBuilderAgent(runId = 'default') {
|
|
15
17
|
const scratchpadTools = createScratchpadTools(`${runId}:app-builder`);
|
|
18
|
+
const composioTools = await createComposioTools(runId);
|
|
19
|
+
const mcpTools = await createMCPTools({
|
|
20
|
+
excludeServers: ['filesystem', 'git', 'playwright']
|
|
21
|
+
});
|
|
16
22
|
return new ToolLoopAgent({
|
|
17
23
|
model: models.coding,
|
|
18
24
|
instructions: [
|
|
19
25
|
'You are ZilMate App Builder, an internal coding subagent for building complete apps, games, tools, and software projects end to end.',
|
|
26
|
+
'CORE CAPABILITIES:',
|
|
27
|
+
'1. Full-stack scaffolding (Next.js, Vite, React Native).',
|
|
28
|
+
'2. Legacy code refactoring & bug fixing.',
|
|
29
|
+
'3. Database design & migrations (Supabase, Neon, PostgreSQL).',
|
|
30
|
+
'4. Third-party API & Webhook integration.',
|
|
31
|
+
'5. High-fidelity UI/UX (shadcn/ui, Tailwind).',
|
|
32
|
+
'6. Auth & RBAC (Supabase Auth).',
|
|
33
|
+
'7. Payments & Subscriptions (Stripe).',
|
|
34
|
+
'8. State management (Zustand, Query).',
|
|
35
|
+
'9. CI/CD & Deployment (Vercel, Render, Netlify).',
|
|
36
|
+
'10. Automated testing (Playwright, Jest).',
|
|
37
|
+
'11. Game development (Game loops, Canvas).',
|
|
38
|
+
'12. Time-series data & analytics (Sleep tracking).',
|
|
39
|
+
'13. Edge & Serverless functions.',
|
|
40
|
+
'14. Real-time sync (WebSockets).',
|
|
41
|
+
'15. Technical documentation.',
|
|
42
|
+
'',
|
|
20
43
|
'Use skills first when the task matches a framework or domain: searchSkills/readSkill before designing Vite, Next.js, React, shadcn, ai-elements, AI SDK, Composio, Supabase, games, or desktop workflows.',
|
|
21
44
|
'Choose the existing stack when inside a repo. For new frontend apps, prefer Vite for lightweight apps/games and Next.js when routing, server APIs, auth, SDK routes, or deployment structure matter.',
|
|
22
45
|
'Implement real working screens and workflows, not placeholder landing pages. For games, build actual gameplay. For apps, build the usable first screen and the expected controls/states.',
|
|
@@ -32,12 +55,18 @@ function createAppBuilderAgent(runId = 'default') {
|
|
|
32
55
|
...skillTools,
|
|
33
56
|
...notebookTools,
|
|
34
57
|
...scratchpadTools,
|
|
58
|
+
...composioTools,
|
|
59
|
+
...mcpTools,
|
|
35
60
|
},
|
|
36
61
|
stopWhen: stepCountIs(limits.subagentSteps),
|
|
37
62
|
});
|
|
38
63
|
}
|
|
39
|
-
function createQaIntegrationAgent(runId = 'default') {
|
|
64
|
+
async function createQaIntegrationAgent(runId = 'default') {
|
|
40
65
|
const scratchpadTools = createScratchpadTools(`${runId}:qa`);
|
|
66
|
+
const composioTools = await createComposioTools(runId);
|
|
67
|
+
const mcpTools = await createMCPTools({
|
|
68
|
+
excludeServers: ['filesystem', 'git', 'playwright']
|
|
69
|
+
});
|
|
41
70
|
return new ToolLoopAgent({
|
|
42
71
|
model: models.coding,
|
|
43
72
|
instructions: [
|
|
@@ -58,6 +87,8 @@ function createQaIntegrationAgent(runId = 'default') {
|
|
|
58
87
|
...skillTools,
|
|
59
88
|
...notebookTools,
|
|
60
89
|
...scratchpadTools,
|
|
90
|
+
...composioTools,
|
|
91
|
+
...mcpTools,
|
|
61
92
|
},
|
|
62
93
|
stopWhen: stepCountIs(limits.subagentSteps),
|
|
63
94
|
});
|
|
@@ -82,10 +113,14 @@ function codingDelegateTool(name, description, agent) {
|
|
|
82
113
|
},
|
|
83
114
|
});
|
|
84
115
|
}
|
|
85
|
-
export function createCodingAgent(runId = 'default') {
|
|
116
|
+
export async function createCodingAgent(runId = 'default') {
|
|
86
117
|
const scratchpadTools = createScratchpadTools(runId);
|
|
87
|
-
const appBuilder = createAppBuilderAgent(runId);
|
|
88
|
-
const qaBuilder = createQaIntegrationAgent(runId);
|
|
118
|
+
const appBuilder = await createAppBuilderAgent(runId);
|
|
119
|
+
const qaBuilder = await createQaIntegrationAgent(runId);
|
|
120
|
+
const composioTools = await createComposioTools(runId);
|
|
121
|
+
const mcpTools = await createMCPTools({
|
|
122
|
+
excludeServers: ['filesystem', 'git', 'playwright']
|
|
123
|
+
});
|
|
89
124
|
return new ToolLoopAgent({
|
|
90
125
|
model: models.coding,
|
|
91
126
|
instructions: [
|
|
@@ -111,6 +146,8 @@ export function createCodingAgent(runId = 'default') {
|
|
|
111
146
|
...skillTools,
|
|
112
147
|
...notebookTools,
|
|
113
148
|
...scratchpadTools,
|
|
149
|
+
...composioTools,
|
|
150
|
+
...mcpTools,
|
|
114
151
|
},
|
|
115
152
|
stopWhen: stepCountIs(limits.subagentSteps),
|
|
116
153
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding.agent.js","sourceRoot":"","sources":["../../src/agents/coding.agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"coding.agent.js","sourceRoot":"","sources":["../../src/agents/coding.agent.ts"],"names":[],"mappings":"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"}
|