@alumbwe/anvil 1.0.20 → 1.0.21
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/package.json +6 -2
- package/src/agents/bundled-agents.generated.ts +4 -4
- package/src/chat.tsx +1703 -1698
- package/src/cli-args.ts +134 -134
- package/src/components/status-bar.tsx +331 -313
- package/src/hooks/helpers/send-message.ts +663 -654
- package/src/hooks/use-send-message.ts +806 -773
- package/src/index.tsx +473 -473
- package/src/state/chat-store.ts +553 -544
- package/src/utils/create-run-config.ts +121 -121
- package/src/utils/format-compact-number.ts +37 -0
- package/vendor/@anvil/common/package.json +27 -0
- package/vendor/@anvil/common/src/__tests__/agent-validation.test.ts +846 -0
- package/vendor/@anvil/common/src/__tests__/anvil-model-availability.test.ts +101 -0
- package/vendor/@anvil/common/src/__tests__/anvil-models.test.ts +1408 -0
- package/vendor/@anvil/common/src/__tests__/anvil-public-data-use-copy.test.ts +258 -0
- package/vendor/@anvil/common/src/__tests__/anvil-referral-tiers.test.ts +48 -0
- package/vendor/@anvil/common/src/__tests__/anvil-spend-ceilings.test.ts +282 -0
- package/vendor/@anvil/common/src/__tests__/anvil-trust.test.ts +526 -0
- package/vendor/@anvil/common/src/__tests__/deepseek-direct.test.ts +68 -0
- package/vendor/@anvil/common/src/__tests__/disposable-email.test.ts +132 -0
- package/vendor/@anvil/common/src/__tests__/dynamic-agent-template-schema.test.ts +422 -0
- package/vendor/@anvil/common/src/__tests__/env-ci.test.ts +167 -0
- package/vendor/@anvil/common/src/__tests__/env-process.test.ts +145 -0
- package/vendor/@anvil/common/src/__tests__/foreign-client-shipped-agents.test.ts +234 -0
- package/vendor/@anvil/common/src/__tests__/foreign-client-signals.test.ts +379 -0
- package/vendor/@anvil/common/src/__tests__/free-agents.test.ts +807 -0
- package/vendor/@anvil/common/src/__tests__/gravity-capi.test.ts +154 -0
- package/vendor/@anvil/common/src/__tests__/handlesteps-parsing.test.ts +246 -0
- package/vendor/@anvil/common/src/__tests__/kimi-k3-god-only.test.ts +77 -0
- package/vendor/@anvil/common/src/__tests__/model-config.test.ts +89 -0
- package/vendor/@anvil/common/src/__tests__/project-file-tree.test.ts +298 -0
- package/vendor/@anvil/common/src/__tests__/provisioned-model-tiers.test.ts +116 -0
- package/vendor/@anvil/common/src/__tests__/reasoning-effort.test.ts +167 -0
- package/vendor/@anvil/common/src/__tests__/reddit-capi.test.ts +132 -0
- package/vendor/@anvil/common/src/__tests__/response-ad-positions.test.ts +72 -0
- package/vendor/@anvil/common/src/__tests__/user-state.test.ts +30 -0
- package/vendor/@anvil/common/src/actions.ts +215 -0
- package/vendor/@anvil/common/src/analytics-core.ts +69 -0
- package/vendor/@anvil/common/src/analytics.ts +93 -0
- package/vendor/@anvil/common/src/api-keys/constants.ts +26 -0
- package/vendor/@anvil/common/src/browser-actions.ts +413 -0
- package/vendor/@anvil/common/src/constants/__tests__/anvil-onboarding-gate.test.ts +63 -0
- package/vendor/@anvil/common/src/constants/__tests__/anvil-onboarding.test.ts +246 -0
- package/vendor/@anvil/common/src/constants/__tests__/cf-worker-signals.test.ts +106 -0
- package/vendor/@anvil/common/src/constants/agents.ts +99 -0
- package/vendor/@anvil/common/src/constants/analytics-events.ts +435 -0
- package/vendor/@anvil/common/src/constants/anthropic.ts +73 -0
- package/vendor/@anvil/common/src/constants/anvil-data-use.ts +81 -0
- package/vendor/@anvil/common/src/constants/anvil-errors.ts +7 -0
- package/vendor/@anvil/common/src/constants/anvil-gemini-thinker.ts +21 -0
- package/vendor/@anvil/common/src/constants/anvil-model-ids.ts +11 -0
- package/vendor/@anvil/common/src/constants/anvil-models.ts +2130 -0
- package/vendor/@anvil/common/src/constants/anvil-onboarding-gate.ts +55 -0
- package/vendor/@anvil/common/src/constants/anvil-onboarding.ts +307 -0
- package/vendor/@anvil/common/src/constants/anvil-referral-tiers.ts +87 -0
- package/vendor/@anvil/common/src/constants/anvil-signup-block.ts +68 -0
- package/vendor/@anvil/common/src/constants/anvil-spend-ceilings.ts +450 -0
- package/vendor/@anvil/common/src/constants/anvil-trust.ts +976 -0
- package/vendor/@anvil/common/src/constants/auth.ts +18 -0
- package/vendor/@anvil/common/src/constants/byok.ts +2 -0
- package/vendor/@anvil/common/src/constants/cf-worker-signals.ts +132 -0
- package/vendor/@anvil/common/src/constants/composio.ts +34 -0
- package/vendor/@anvil/common/src/constants/deepseek-direct.ts +55 -0
- package/vendor/@anvil/common/src/constants/feedback.ts +13 -0
- package/vendor/@anvil/common/src/constants/foreign-client-signals.ts +272 -0
- package/vendor/@anvil/common/src/constants/free-agents.ts +777 -0
- package/vendor/@anvil/common/src/constants/gemini.ts +15 -0
- package/vendor/@anvil/common/src/constants/grant-priorities.ts +13 -0
- package/vendor/@anvil/common/src/constants/hosts.ts +6 -0
- package/vendor/@anvil/common/src/constants/images.ts +51 -0
- package/vendor/@anvil/common/src/constants/index.ts +7 -0
- package/vendor/@anvil/common/src/constants/knowledge.ts +35 -0
- package/vendor/@anvil/common/src/constants/limits.ts +23 -0
- package/vendor/@anvil/common/src/constants/model-config.ts +277 -0
- package/vendor/@anvil/common/src/constants/openrouter-attribution.ts +8 -0
- package/vendor/@anvil/common/src/constants/paths.ts +69 -0
- package/vendor/@anvil/common/src/constants/provider-routes.ts +317 -0
- package/vendor/@anvil/common/src/constants/reasoning-effort.ts +79 -0
- package/vendor/@anvil/common/src/constants/skills.ts +60 -0
- package/vendor/@anvil/common/src/constants/subscription-plans.ts +49 -0
- package/vendor/@anvil/common/src/constants/ui.ts +25 -0
- package/vendor/@anvil/common/src/env-ci.ts +36 -0
- package/vendor/@anvil/common/src/env-process.ts +95 -0
- package/vendor/@anvil/common/src/env-schema.ts +95 -0
- package/vendor/@anvil/common/src/env.ts +24 -0
- package/vendor/@anvil/common/src/gravity-capi.ts +207 -0
- package/vendor/@anvil/common/src/mcp/client.ts +233 -0
- package/vendor/@anvil/common/src/old-constants.ts +10 -0
- package/vendor/@anvil/common/src/project-file-tree.ts +355 -0
- package/vendor/@anvil/common/src/reddit-capi.ts +254 -0
- package/vendor/@anvil/common/src/schemas/feedback.ts +52 -0
- package/vendor/@anvil/common/src/schemas/logs.ts +66 -0
- package/vendor/@anvil/common/src/templates/agent-validation.ts +392 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/LICENSE +202 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/README.md +294 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/01-basic-diff-reviewer.ts +17 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/02-intermediate-git-committer.ts +78 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/03-advanced-file-explorer.ts +73 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/my-custom-agent.ts +40 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/package.json +6 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/skills/README.md +65 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/skills/example-skill/SKILL.md +29 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/types/agent-definition.ts +497 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/types/tools.ts +444 -0
- package/vendor/@anvil/common/src/templates/initial-agents-dir/types/util-types.ts +178 -0
- package/vendor/@anvil/common/src/testing/TESTING_PATTERNS.md +351 -0
- package/vendor/@anvil/common/src/testing/anvil-offer-invariants.ts +169 -0
- package/vendor/@anvil/common/src/testing/errors.ts +33 -0
- package/vendor/@anvil/common/src/testing/fixtures/agent-runtime.ts +334 -0
- package/vendor/@anvil/common/src/testing/impl/agent-runtime.ts +6 -0
- package/vendor/@anvil/common/src/testing/index.ts +84 -0
- package/vendor/@anvil/common/src/testing/mock-modules.ts +53 -0
- package/vendor/@anvil/common/src/testing/mock-types.ts +123 -0
- package/vendor/@anvil/common/src/testing/mocks/analytics.ts +261 -0
- package/vendor/@anvil/common/src/testing/mocks/child-process.ts +93 -0
- package/vendor/@anvil/common/src/testing/mocks/crypto.ts +218 -0
- package/vendor/@anvil/common/src/testing/mocks/database.ts +337 -0
- package/vendor/@anvil/common/src/testing/mocks/fetch.ts +219 -0
- package/vendor/@anvil/common/src/testing/mocks/filesystem.ts +166 -0
- package/vendor/@anvil/common/src/testing/mocks/index.ts +101 -0
- package/vendor/@anvil/common/src/testing/mocks/logger.ts +135 -0
- package/vendor/@anvil/common/src/testing/mocks/stream.ts +313 -0
- package/vendor/@anvil/common/src/testing/mocks/timers.ts +132 -0
- package/vendor/@anvil/common/src/testing/mocks/tree-sitter.ts +127 -0
- package/vendor/@anvil/common/src/testing/setup.ts +282 -0
- package/vendor/@anvil/common/src/testing-env-ci.ts +15 -0
- package/vendor/@anvil/common/src/testing-env-process.ts +78 -0
- package/vendor/@anvil/common/src/tools/__tests__/compile-tool-definitions.test.ts +34 -0
- package/vendor/@anvil/common/src/tools/compile-tool-definitions.ts +157 -0
- package/vendor/@anvil/common/src/tools/constants.ts +117 -0
- package/vendor/@anvil/common/src/tools/list.ts +190 -0
- package/vendor/@anvil/common/src/tools/params/__tests__/coerce-to-array.test.ts +213 -0
- package/vendor/@anvil/common/src/tools/params/__tests__/read-docs.test.ts +47 -0
- package/vendor/@anvil/common/src/tools/params/__tests__/render-ui.test.ts +65 -0
- package/vendor/@anvil/common/src/tools/params/tool/__tests__/run-terminal-command-timeout.test.ts +49 -0
- package/vendor/@anvil/common/src/tools/params/tool/add-message.ts +39 -0
- package/vendor/@anvil/common/src/tools/params/tool/add-subgoal.ts +57 -0
- package/vendor/@anvil/common/src/tools/params/tool/apply-patch.ts +110 -0
- package/vendor/@anvil/common/src/tools/params/tool/ask-user.ts +181 -0
- package/vendor/@anvil/common/src/tools/params/tool/browser-logs.ts +85 -0
- package/vendor/@anvil/common/src/tools/params/tool/cloud-plan-ready.ts +94 -0
- package/vendor/@anvil/common/src/tools/params/tool/code-search.ts +159 -0
- package/vendor/@anvil/common/src/tools/params/tool/composio.ts +131 -0
- package/vendor/@anvil/common/src/tools/params/tool/create-plan.ts +80 -0
- package/vendor/@anvil/common/src/tools/params/tool/end-turn.ts +57 -0
- package/vendor/@anvil/common/src/tools/params/tool/find-files.ts +60 -0
- package/vendor/@anvil/common/src/tools/params/tool/glob.ts +80 -0
- package/vendor/@anvil/common/src/tools/params/tool/gravity-index.ts +93 -0
- package/vendor/@anvil/common/src/tools/params/tool/list-directory.ts +58 -0
- package/vendor/@anvil/common/src/tools/params/tool/lookup-agent-info.ts +37 -0
- package/vendor/@anvil/common/src/tools/params/tool/propose-str-replace.ts +103 -0
- package/vendor/@anvil/common/src/tools/params/tool/propose-write-file.ts +71 -0
- package/vendor/@anvil/common/src/tools/params/tool/read-docs.ts +90 -0
- package/vendor/@anvil/common/src/tools/params/tool/read-files.ts +109 -0
- package/vendor/@anvil/common/src/tools/params/tool/read-subtree.ts +79 -0
- package/vendor/@anvil/common/src/tools/params/tool/read-url.ts +81 -0
- package/vendor/@anvil/common/src/tools/params/tool/render-ui.ts +168 -0
- package/vendor/@anvil/common/src/tools/params/tool/run-file-change-hooks.ts +57 -0
- package/vendor/@anvil/common/src/tools/params/tool/run-terminal-command.ts +211 -0
- package/vendor/@anvil/common/src/tools/params/tool/screenshot.ts +97 -0
- package/vendor/@anvil/common/src/tools/params/tool/set-messages.ts +44 -0
- package/vendor/@anvil/common/src/tools/params/tool/set-output.ts +61 -0
- package/vendor/@anvil/common/src/tools/params/tool/skill.ts +59 -0
- package/vendor/@anvil/common/src/tools/params/tool/spawn-agent-inline.ts +56 -0
- package/vendor/@anvil/common/src/tools/params/tool/spawn-agents.ts +154 -0
- package/vendor/@anvil/common/src/tools/params/tool/str-replace.ts +107 -0
- package/vendor/@anvil/common/src/tools/params/tool/suggest-followups.ts +97 -0
- package/vendor/@anvil/common/src/tools/params/tool/task-completed.ts +61 -0
- package/vendor/@anvil/common/src/tools/params/tool/think-deeply.ts +56 -0
- package/vendor/@anvil/common/src/tools/params/tool/update-subgoal.ts +89 -0
- package/vendor/@anvil/common/src/tools/params/tool/vision-analyze.ts +82 -0
- package/vendor/@anvil/common/src/tools/params/tool/web-search.ts +73 -0
- package/vendor/@anvil/common/src/tools/params/tool/write-file.ts +71 -0
- package/vendor/@anvil/common/src/tools/params/tool/write-todos.ts +67 -0
- package/vendor/@anvil/common/src/tools/params/utils.ts +150 -0
- package/vendor/@anvil/common/src/tools/utils.ts +24 -0
- package/vendor/@anvil/common/src/types/__tests__/dynamic-agent-template.test.ts +20 -0
- package/vendor/@anvil/common/src/types/agent-template.ts +215 -0
- package/vendor/@anvil/common/src/types/anvil-session.ts +535 -0
- package/vendor/@anvil/common/src/types/anvil-streak.ts +6 -0
- package/vendor/@anvil/common/src/types/anvil-usage.ts +64 -0
- package/vendor/@anvil/common/src/types/api/agents/publish.ts +61 -0
- package/vendor/@anvil/common/src/types/bun-test.d.ts +5 -0
- package/vendor/@anvil/common/src/types/contracts/agent-runtime.ts +75 -0
- package/vendor/@anvil/common/src/types/contracts/analytics.ts +9 -0
- package/vendor/@anvil/common/src/types/contracts/bigquery.ts +55 -0
- package/vendor/@anvil/common/src/types/contracts/billing.ts +46 -0
- package/vendor/@anvil/common/src/types/contracts/client.ts +53 -0
- package/vendor/@anvil/common/src/types/contracts/database.ts +112 -0
- package/vendor/@anvil/common/src/types/contracts/env.ts +203 -0
- package/vendor/@anvil/common/src/types/contracts/llm.ts +191 -0
- package/vendor/@anvil/common/src/types/contracts/logger.ts +14 -0
- package/vendor/@anvil/common/src/types/contracts/logs.ts +34 -0
- package/vendor/@anvil/common/src/types/contracts/trace.ts +21 -0
- package/vendor/@anvil/common/src/types/dynamic-agent-template.ts +328 -0
- package/vendor/@anvil/common/src/types/filesystem.ts +10 -0
- package/vendor/@anvil/common/src/types/function-params.ts +33 -0
- package/vendor/@anvil/common/src/types/grant.ts +20 -0
- package/vendor/@anvil/common/src/types/gravity-index.ts +170 -0
- package/vendor/@anvil/common/src/types/json.ts +29 -0
- package/vendor/@anvil/common/src/types/mcp.ts +24 -0
- package/vendor/@anvil/common/src/types/messages/anvil-message.ts +58 -0
- package/vendor/@anvil/common/src/types/messages/content-part.ts +59 -0
- package/vendor/@anvil/common/src/types/messages/data-content.ts +14 -0
- package/vendor/@anvil/common/src/types/messages/provider-metadata.ts +13 -0
- package/vendor/@anvil/common/src/types/organization.ts +118 -0
- package/vendor/@anvil/common/src/types/print-mode.ts +121 -0
- package/vendor/@anvil/common/src/types/publisher.ts +67 -0
- package/vendor/@anvil/common/src/types/session-state.ts +149 -0
- package/vendor/@anvil/common/src/types/skill.ts +86 -0
- package/vendor/@anvil/common/src/types/source.ts +11 -0
- package/vendor/@anvil/common/src/types/spawn.ts +13 -0
- package/vendor/@anvil/common/src/types/subscription.ts +67 -0
- package/vendor/@anvil/common/src/types/usage.ts +16 -0
- package/vendor/@anvil/common/src/types/util.ts +3 -0
- package/vendor/@anvil/common/src/util/__tests__/ad-user-agent.test.ts +26 -0
- package/vendor/@anvil/common/src/util/__tests__/analytics-dispatcher.test.ts +122 -0
- package/vendor/@anvil/common/src/util/__tests__/analytics-log.test.ts +102 -0
- package/vendor/@anvil/common/src/util/__tests__/analytics-sampling.test.ts +143 -0
- package/vendor/@anvil/common/src/util/__tests__/anvil-streak.test.ts +202 -0
- package/vendor/@anvil/common/src/util/__tests__/anvil-usage-summary.test.ts +193 -0
- package/vendor/@anvil/common/src/util/__tests__/axiom-only-log.test.ts +140 -0
- package/vendor/@anvil/common/src/util/__tests__/client-user-agent.test.ts +148 -0
- package/vendor/@anvil/common/src/util/__tests__/engagement-tracker.test.ts +115 -0
- package/vendor/@anvil/common/src/util/__tests__/env-file-path.test.ts +57 -0
- package/vendor/@anvil/common/src/util/__tests__/error-abort.test.ts +774 -0
- package/vendor/@anvil/common/src/util/__tests__/error-api-details.test.ts +206 -0
- package/vendor/@anvil/common/src/util/__tests__/file-read-limits.test.ts +173 -0
- package/vendor/@anvil/common/src/util/__tests__/format-code-search.test.ts +60 -0
- package/vendor/@anvil/common/src/util/__tests__/log-mirror.test.ts +31 -0
- package/vendor/@anvil/common/src/util/__tests__/messages.test.ts +1252 -0
- package/vendor/@anvil/common/src/util/__tests__/partial-json-delta.test.ts +505 -0
- package/vendor/@anvil/common/src/util/__tests__/path.test.ts +22 -0
- package/vendor/@anvil/common/src/util/__tests__/project-ignore.test.ts +90 -0
- package/vendor/@anvil/common/src/util/__tests__/promise.test.ts +325 -0
- package/vendor/@anvil/common/src/util/__tests__/rate-limit.test.ts +28 -0
- package/vendor/@anvil/common/src/util/__tests__/reddit-anvil-retention.test.ts +130 -0
- package/vendor/@anvil/common/src/util/__tests__/saxy.test.ts +1008 -0
- package/vendor/@anvil/common/src/util/__tests__/split-data.test.ts +289 -0
- package/vendor/@anvil/common/src/util/__tests__/string.test.ts +239 -0
- package/vendor/@anvil/common/src/util/__tests__/thread-title.test.ts +70 -0
- package/vendor/@anvil/common/src/util/__tests__/tool-result-media-order.test.ts +108 -0
- package/vendor/@anvil/common/src/util/__tests__/ttft-histogram.test.ts +180 -0
- package/vendor/@anvil/common/src/util/__tests__/with-timeout.test.ts +24 -0
- package/vendor/@anvil/common/src/util/__tests__/zoned-time.test.ts +88 -0
- package/vendor/@anvil/common/src/util/ad-user-agent.ts +25 -0
- package/vendor/@anvil/common/src/util/agent-file-utils.ts +110 -0
- package/vendor/@anvil/common/src/util/agent-id-parsing.ts +136 -0
- package/vendor/@anvil/common/src/util/agent-name-normalization.ts +38 -0
- package/vendor/@anvil/common/src/util/agent-name-resolver.ts +86 -0
- package/vendor/@anvil/common/src/util/analytics-dispatcher.ts +82 -0
- package/vendor/@anvil/common/src/util/analytics-log.ts +78 -0
- package/vendor/@anvil/common/src/util/analytics-sampling.ts +255 -0
- package/vendor/@anvil/common/src/util/anvil-model-availability.ts +102 -0
- package/vendor/@anvil/common/src/util/anvil-privacy.ts +82 -0
- package/vendor/@anvil/common/src/util/anvil-streak-line.ts +103 -0
- package/vendor/@anvil/common/src/util/anvil-streak.ts +156 -0
- package/vendor/@anvil/common/src/util/anvil-usage-summary.ts +125 -0
- package/vendor/@anvil/common/src/util/array.ts +31 -0
- package/vendor/@anvil/common/src/util/axiom-only-log.ts +124 -0
- package/vendor/@anvil/common/src/util/cache-debug.ts +171 -0
- package/vendor/@anvil/common/src/util/client-user-agent.ts +114 -0
- package/vendor/@anvil/common/src/util/credentials.ts +26 -0
- package/vendor/@anvil/common/src/util/currency.ts +25 -0
- package/vendor/@anvil/common/src/util/dates.ts +81 -0
- package/vendor/@anvil/common/src/util/disposable-email.ts +277 -0
- package/vendor/@anvil/common/src/util/engagement-tracker.ts +129 -0
- package/vendor/@anvil/common/src/util/env-file-path.ts +40 -0
- package/vendor/@anvil/common/src/util/error.ts +562 -0
- package/vendor/@anvil/common/src/util/file-read-limits.ts +236 -0
- package/vendor/@anvil/common/src/util/file.ts +339 -0
- package/vendor/@anvil/common/src/util/format-code-search.ts +115 -0
- package/vendor/@anvil/common/src/util/lazy-response-ads.ts +92 -0
- package/vendor/@anvil/common/src/util/log-data.ts +57 -0
- package/vendor/@anvil/common/src/util/log-ingest.ts +58 -0
- package/vendor/@anvil/common/src/util/log-mirror.ts +34 -0
- package/vendor/@anvil/common/src/util/lru-cache.ts +67 -0
- package/vendor/@anvil/common/src/util/messages.ts +685 -0
- package/vendor/@anvil/common/src/util/min-heap.ts +87 -0
- package/vendor/@anvil/common/src/util/model-utils.ts +4 -0
- package/vendor/@anvil/common/src/util/object.ts +128 -0
- package/vendor/@anvil/common/src/util/partial-json-delta.ts +89 -0
- package/vendor/@anvil/common/src/util/path.ts +15 -0
- package/vendor/@anvil/common/src/util/project-ignore.ts +119 -0
- package/vendor/@anvil/common/src/util/promise.ts +73 -0
- package/vendor/@anvil/common/src/util/random.ts +15 -0
- package/vendor/@anvil/common/src/util/rate-limit.ts +56 -0
- package/vendor/@anvil/common/src/util/reddit-anvil-retention.ts +60 -0
- package/vendor/@anvil/common/src/util/reddit-capi-events.ts +36 -0
- package/vendor/@anvil/common/src/util/response-ad-positions.ts +54 -0
- package/vendor/@anvil/common/src/util/saxy.ts +741 -0
- package/vendor/@anvil/common/src/util/skills.test.ts +44 -0
- package/vendor/@anvil/common/src/util/skills.ts +36 -0
- package/vendor/@anvil/common/src/util/split-data.ts +259 -0
- package/vendor/@anvil/common/src/util/stop-sequence.ts +61 -0
- package/vendor/@anvil/common/src/util/string.ts +426 -0
- package/vendor/@anvil/common/src/util/system-info.ts +53 -0
- package/vendor/@anvil/common/src/util/thread-title.ts +46 -0
- package/vendor/@anvil/common/src/util/ttft-histogram.ts +73 -0
- package/vendor/@anvil/common/src/util/xml-parser.ts +27 -0
- package/vendor/@anvil/common/src/util/xml.ts +17 -0
- package/vendor/@anvil/common/src/util/zod-schema.ts +25 -0
- package/vendor/@anvil/common/src/util/zoned-time.ts +136 -0
- package/vendor/@anvil/common/src/utils/ask-user-bridge.ts +44 -0
- package/vendor/@anvil/sdk/dist/index.cjs +52297 -0
- package/vendor/@anvil/sdk/dist/index.cjs.map +440 -0
- package/vendor/@anvil/sdk/dist/index.d.ts +4277 -0
- package/vendor/@anvil/sdk/dist/index.mjs +52290 -0
- package/vendor/@anvil/sdk/dist/index.mjs.map +440 -0
- package/vendor/@anvil/sdk/dist/vendor/ai.cjs +30886 -0
- package/vendor/@anvil/sdk/dist/vendor/ripgrep/arm64-darwin/rg +0 -0
- package/vendor/@anvil/sdk/dist/vendor/ripgrep/arm64-linux/rg +0 -0
- package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-darwin/rg +0 -0
- package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-linux/rg +0 -0
- package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-win32/rg.exe +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-c-sharp.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-cpp.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-go.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-java.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-javascript.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-python.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-ruby.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-rust.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-tsx.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter-typescript.wasm +0 -0
- package/vendor/@anvil/sdk/dist/wasm/tree-sitter.wasm +0 -0
- package/vendor/@anvil/sdk/package.json +21 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
$getNativeToolCallExampleString,
|
|
5
|
+
textToolResultSchema,
|
|
6
|
+
} from '../utils'
|
|
7
|
+
|
|
8
|
+
import type { $ToolParams } from '../../constants'
|
|
9
|
+
|
|
10
|
+
const toolName = 'add_message'
|
|
11
|
+
const endsAgentStep = true
|
|
12
|
+
const inputSchema = z
|
|
13
|
+
.object({
|
|
14
|
+
role: z.enum(['user', 'assistant']),
|
|
15
|
+
content: z.string(),
|
|
16
|
+
})
|
|
17
|
+
.describe(
|
|
18
|
+
`Add a new message to the conversation history. To be used for complex requests that can't be solved in a single step, as you may forget what happened!`,
|
|
19
|
+
)
|
|
20
|
+
const description = `
|
|
21
|
+
Example:
|
|
22
|
+
${$getNativeToolCallExampleString({
|
|
23
|
+
toolName,
|
|
24
|
+
inputSchema,
|
|
25
|
+
input: {
|
|
26
|
+
role: 'user',
|
|
27
|
+
content: 'Hello, how are you?',
|
|
28
|
+
},
|
|
29
|
+
endsAgentStep,
|
|
30
|
+
})}
|
|
31
|
+
`.trim()
|
|
32
|
+
|
|
33
|
+
export const addMessageParams = {
|
|
34
|
+
toolName,
|
|
35
|
+
endsAgentStep,
|
|
36
|
+
description,
|
|
37
|
+
inputSchema,
|
|
38
|
+
outputSchema: textToolResultSchema(),
|
|
39
|
+
} satisfies $ToolParams
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
|
|
4
|
+
|
|
5
|
+
import type { $ToolParams } from '../../constants'
|
|
6
|
+
|
|
7
|
+
const toolName = 'add_subgoal'
|
|
8
|
+
const endsAgentStep = false
|
|
9
|
+
const inputSchema = z
|
|
10
|
+
.object({
|
|
11
|
+
id: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1, 'Id cannot be empty')
|
|
14
|
+
.describe(
|
|
15
|
+
`A unique identifier for the subgoal. Try to choose the next sequential integer that is not already in use.`,
|
|
16
|
+
),
|
|
17
|
+
objective: z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1, 'Objective cannot be empty')
|
|
20
|
+
.describe(`The objective of the subgoal, concisely and clearly stated.`),
|
|
21
|
+
status: z
|
|
22
|
+
.enum(['NOT_STARTED', 'IN_PROGRESS', 'COMPLETE', 'ABORTED'])
|
|
23
|
+
.describe(`The status of the subgoal.`),
|
|
24
|
+
plan: z.string().optional().describe('A plan for the subgoal.'),
|
|
25
|
+
log: z
|
|
26
|
+
.string()
|
|
27
|
+
.optional()
|
|
28
|
+
.describe('A log message for the subgoal progress.'),
|
|
29
|
+
})
|
|
30
|
+
.describe(
|
|
31
|
+
`Add a new subgoal for tracking progress. To be used for complex requests that can't be solved in a single step, as you may forget what happened!`,
|
|
32
|
+
)
|
|
33
|
+
const description = `
|
|
34
|
+
Example:
|
|
35
|
+
${$getNativeToolCallExampleString({
|
|
36
|
+
toolName,
|
|
37
|
+
inputSchema,
|
|
38
|
+
input: {
|
|
39
|
+
id: '1',
|
|
40
|
+
objective: 'Add a new "deploy api" subgoal',
|
|
41
|
+
status: 'IN_PROGRESS',
|
|
42
|
+
},
|
|
43
|
+
endsAgentStep,
|
|
44
|
+
})}
|
|
45
|
+
`.trim()
|
|
46
|
+
|
|
47
|
+
export const addSubgoalParams = {
|
|
48
|
+
toolName,
|
|
49
|
+
endsAgentStep,
|
|
50
|
+
description,
|
|
51
|
+
inputSchema,
|
|
52
|
+
outputSchema: jsonToolResultSchema(
|
|
53
|
+
z.object({
|
|
54
|
+
message: z.string(),
|
|
55
|
+
}),
|
|
56
|
+
),
|
|
57
|
+
} satisfies $ToolParams
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
|
|
4
|
+
|
|
5
|
+
import type { $ToolParams } from '../../constants'
|
|
6
|
+
|
|
7
|
+
export const applyPatchResultSchema = z.union([
|
|
8
|
+
z.object({
|
|
9
|
+
message: z.string(),
|
|
10
|
+
applied: z.array(
|
|
11
|
+
z.object({
|
|
12
|
+
file: z.string(),
|
|
13
|
+
action: z.enum(['add', 'update', 'delete']),
|
|
14
|
+
}),
|
|
15
|
+
),
|
|
16
|
+
}),
|
|
17
|
+
z.object({
|
|
18
|
+
errorMessage: z.string(),
|
|
19
|
+
}),
|
|
20
|
+
])
|
|
21
|
+
|
|
22
|
+
const toolName = 'apply_patch'
|
|
23
|
+
const endsAgentStep = false
|
|
24
|
+
|
|
25
|
+
const operationSchema = z.discriminatedUnion('type', [
|
|
26
|
+
z.object({
|
|
27
|
+
type: z.literal('create_file'),
|
|
28
|
+
path: z.string().min(1, 'Path cannot be empty'),
|
|
29
|
+
diff: z.string().min(1, 'Diff cannot be empty'),
|
|
30
|
+
}),
|
|
31
|
+
z.object({
|
|
32
|
+
type: z.literal('update_file'),
|
|
33
|
+
path: z.string().min(1, 'Path cannot be empty'),
|
|
34
|
+
diff: z.string().min(1, 'Diff cannot be empty'),
|
|
35
|
+
}),
|
|
36
|
+
z.object({
|
|
37
|
+
type: z.literal('delete_file'),
|
|
38
|
+
path: z.string().min(1, 'Path cannot be empty'),
|
|
39
|
+
}),
|
|
40
|
+
])
|
|
41
|
+
|
|
42
|
+
export type ApplyPatchOperation = z.infer<typeof operationSchema>
|
|
43
|
+
|
|
44
|
+
const inputSchema = z
|
|
45
|
+
.object({
|
|
46
|
+
operation: operationSchema.describe(
|
|
47
|
+
'The file operation to perform. type is one of create_file, update_file, or delete_file.',
|
|
48
|
+
),
|
|
49
|
+
})
|
|
50
|
+
.describe('Apply a file operation (create, update, or delete).')
|
|
51
|
+
|
|
52
|
+
const description = `
|
|
53
|
+
Use this tool to apply file operations using Codex-style apply_patch format.
|
|
54
|
+
|
|
55
|
+
Each call performs a single operation on one file.
|
|
56
|
+
|
|
57
|
+
Operation types:
|
|
58
|
+
- create_file: Create a new file. Requires path and diff (lines prefixed with +).
|
|
59
|
+
- update_file: Update an existing file. Requires path and diff (unified diff with @@ hunks).
|
|
60
|
+
- delete_file: Delete a file. Requires only path.
|
|
61
|
+
|
|
62
|
+
Example (create):
|
|
63
|
+
${$getNativeToolCallExampleString({
|
|
64
|
+
toolName,
|
|
65
|
+
inputSchema,
|
|
66
|
+
input: {
|
|
67
|
+
operation: {
|
|
68
|
+
type: 'create_file',
|
|
69
|
+
path: 'hello.txt',
|
|
70
|
+
diff: '@@\n+Hello world\n',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
endsAgentStep,
|
|
74
|
+
})}
|
|
75
|
+
|
|
76
|
+
Example (update):
|
|
77
|
+
${$getNativeToolCallExampleString({
|
|
78
|
+
toolName,
|
|
79
|
+
inputSchema,
|
|
80
|
+
input: {
|
|
81
|
+
operation: {
|
|
82
|
+
type: 'update_file',
|
|
83
|
+
path: 'lib/fib.py',
|
|
84
|
+
diff: '@@\n-def fib(n):\n+def fibonacci(n):\n if n <= 1:\n return n\n- return fib(n-1) + fib(n-2)\n+ return fibonacci(n-1) + fibonacci(n-2)\n',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
endsAgentStep,
|
|
88
|
+
})}
|
|
89
|
+
|
|
90
|
+
Example (delete):
|
|
91
|
+
${$getNativeToolCallExampleString({
|
|
92
|
+
toolName,
|
|
93
|
+
inputSchema,
|
|
94
|
+
input: {
|
|
95
|
+
operation: {
|
|
96
|
+
type: 'delete_file',
|
|
97
|
+
path: 'old-file.txt',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
endsAgentStep,
|
|
101
|
+
})}
|
|
102
|
+
`.trim()
|
|
103
|
+
|
|
104
|
+
export const applyPatchParams = {
|
|
105
|
+
toolName,
|
|
106
|
+
endsAgentStep,
|
|
107
|
+
description,
|
|
108
|
+
inputSchema,
|
|
109
|
+
outputSchema: jsonToolResultSchema(applyPatchResultSchema),
|
|
110
|
+
} satisfies $ToolParams
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import { $getNativeToolCallExampleString, coerceToArray, jsonToolResultSchema } from '../utils'
|
|
4
|
+
|
|
5
|
+
import type { $ToolParams } from '../../constants'
|
|
6
|
+
|
|
7
|
+
export const questionSchema = z.object({
|
|
8
|
+
question: z.string().describe('The question to ask the user'),
|
|
9
|
+
header: z
|
|
10
|
+
.string()
|
|
11
|
+
.max(18)
|
|
12
|
+
.optional()
|
|
13
|
+
.describe(
|
|
14
|
+
// Tell the llm 12 chars so that if it goes over slightly, it will still be under the max.
|
|
15
|
+
'Short label (max 12 chars) displayed as a chip/tag. Example: "Auth method"',
|
|
16
|
+
),
|
|
17
|
+
options: z
|
|
18
|
+
.preprocess(
|
|
19
|
+
coerceToArray,
|
|
20
|
+
z
|
|
21
|
+
.object({
|
|
22
|
+
label: z.string().describe('The display text for this option'),
|
|
23
|
+
description: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Explanation shown when option is focused'),
|
|
27
|
+
})
|
|
28
|
+
.array()
|
|
29
|
+
.refine((opts) => opts.length >= 2, {
|
|
30
|
+
message: 'Each question must have at least 2 options',
|
|
31
|
+
}),
|
|
32
|
+
)
|
|
33
|
+
.describe('Array of answer options with label and optional description.'),
|
|
34
|
+
|
|
35
|
+
multiSelect: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.default(false)
|
|
38
|
+
.describe(
|
|
39
|
+
'If true, allows selecting multiple options (checkbox). If false, single selection only (radio).',
|
|
40
|
+
),
|
|
41
|
+
validation: z
|
|
42
|
+
.object({
|
|
43
|
+
maxLength: z
|
|
44
|
+
.number()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Maximum length for "Other" text input'),
|
|
47
|
+
minLength: z
|
|
48
|
+
.number()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('Minimum length for "Other" text input'),
|
|
51
|
+
pattern: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('Regex pattern for "Other" text input'),
|
|
55
|
+
patternError: z
|
|
56
|
+
.string()
|
|
57
|
+
.optional()
|
|
58
|
+
.describe('Custom error message when pattern fails'),
|
|
59
|
+
})
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Validation rules for "Other" text input'),
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
export type AskUserQuestion = z.infer<typeof questionSchema>
|
|
65
|
+
|
|
66
|
+
const toolName = 'ask_user'
|
|
67
|
+
const endsAgentStep = true
|
|
68
|
+
const inputSchema = z
|
|
69
|
+
.object({
|
|
70
|
+
questions: z
|
|
71
|
+
.preprocess(
|
|
72
|
+
coerceToArray,
|
|
73
|
+
z
|
|
74
|
+
.array(questionSchema)
|
|
75
|
+
.min(1, 'Must provide at least one question'),
|
|
76
|
+
)
|
|
77
|
+
.describe('List of multiple choice questions to ask the user'),
|
|
78
|
+
})
|
|
79
|
+
.describe(
|
|
80
|
+
'Ask the user a list of multiple choice questions. Each question must have at least 2 options. The agent execution will pause until the user submits their answers.',
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
const outputSchema = z.object({
|
|
84
|
+
answers: z
|
|
85
|
+
.array(
|
|
86
|
+
z.object({
|
|
87
|
+
questionIndex: z.number(),
|
|
88
|
+
selectedOption: z
|
|
89
|
+
.string()
|
|
90
|
+
.optional()
|
|
91
|
+
.describe('The selected option text (single-select mode)'),
|
|
92
|
+
selectedOptions: z
|
|
93
|
+
.array(z.string())
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Array of selected option texts (multi-select mode)'),
|
|
96
|
+
otherText: z
|
|
97
|
+
.string()
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('Custom text input (if user typed their own answer)'),
|
|
100
|
+
}),
|
|
101
|
+
)
|
|
102
|
+
.optional()
|
|
103
|
+
.describe(
|
|
104
|
+
'Array of user answers, one per question. Each answer has either selectedOption (single), selectedOptions (multi), or otherText.',
|
|
105
|
+
),
|
|
106
|
+
skipped: z
|
|
107
|
+
.boolean()
|
|
108
|
+
.optional()
|
|
109
|
+
.describe('True if user skipped the questions'),
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
const description = `
|
|
113
|
+
Ask the user multiple choice questions and pause execution until they respond. Supports both single-select (radio) and multi-select (checkbox) modes.
|
|
114
|
+
|
|
115
|
+
The user can either:
|
|
116
|
+
- Select one option (single-select mode, default)
|
|
117
|
+
- Select multiple options (multi-select mode, set multiSelect: true)
|
|
118
|
+
- Type a custom answer in the "Other" text field
|
|
119
|
+
- Skip the questions to provide different instructions instead
|
|
120
|
+
|
|
121
|
+
IMPORTANT: Do NOT include options like "Custom", "Other", "None of the above", or similar catch-all options. The UI automatically provides a "Custom" text input field for users to type their own answer. Including such options would be redundant and confusing.
|
|
122
|
+
|
|
123
|
+
Single-select example:
|
|
124
|
+
${$getNativeToolCallExampleString({
|
|
125
|
+
toolName,
|
|
126
|
+
inputSchema,
|
|
127
|
+
input: {
|
|
128
|
+
questions: [
|
|
129
|
+
{
|
|
130
|
+
question: 'Which authentication method should we use?',
|
|
131
|
+
header: 'Auth method',
|
|
132
|
+
options: [
|
|
133
|
+
{
|
|
134
|
+
label: 'JWT tokens',
|
|
135
|
+
description: 'Stateless tokens stored in localStorage',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
label: 'Session cookies',
|
|
139
|
+
description: 'Server-side sessions with httpOnly cookies',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
label: 'OAuth2',
|
|
143
|
+
description: 'Third-party authentication (Google, GitHub, etc.)',
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
endsAgentStep,
|
|
150
|
+
})}
|
|
151
|
+
|
|
152
|
+
Multi-select example:
|
|
153
|
+
${$getNativeToolCallExampleString({
|
|
154
|
+
toolName,
|
|
155
|
+
inputSchema,
|
|
156
|
+
input: {
|
|
157
|
+
questions: [
|
|
158
|
+
{
|
|
159
|
+
question: 'Which features should we implement?',
|
|
160
|
+
header: 'Features',
|
|
161
|
+
options: [
|
|
162
|
+
{ label: 'Rate limiting' },
|
|
163
|
+
{ label: 'Caching' },
|
|
164
|
+
{ label: 'Logging' },
|
|
165
|
+
{ label: 'Monitoring' },
|
|
166
|
+
],
|
|
167
|
+
multiSelect: true,
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
},
|
|
171
|
+
endsAgentStep,
|
|
172
|
+
})}
|
|
173
|
+
`.trim()
|
|
174
|
+
|
|
175
|
+
export const askUserParams = {
|
|
176
|
+
toolName,
|
|
177
|
+
endsAgentStep,
|
|
178
|
+
description,
|
|
179
|
+
inputSchema,
|
|
180
|
+
outputSchema: jsonToolResultSchema(outputSchema),
|
|
181
|
+
} satisfies $ToolParams
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import { BrowserResponseSchema } from '../../../browser-actions'
|
|
4
|
+
import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
|
|
5
|
+
|
|
6
|
+
import type { $ToolParams } from '../../constants'
|
|
7
|
+
|
|
8
|
+
const toolName = 'browser_logs'
|
|
9
|
+
const endsAgentStep = true
|
|
10
|
+
const inputSchema = z.object({
|
|
11
|
+
type: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1, 'Type cannot be empty')
|
|
14
|
+
.describe('The type of browser action to perform (e.g., "navigate").'),
|
|
15
|
+
url: z
|
|
16
|
+
.string()
|
|
17
|
+
.min(1, 'URL cannot be empty')
|
|
18
|
+
.describe('The URL to navigate to.'),
|
|
19
|
+
waitUntil: z
|
|
20
|
+
.enum(['load', 'domcontentloaded', 'networkidle0'])
|
|
21
|
+
.optional()
|
|
22
|
+
.describe("When to consider navigation successful. Defaults to 'load'."),
|
|
23
|
+
})
|
|
24
|
+
const description = `
|
|
25
|
+
Purpose: Use this tool to check the output of console.log or errors in order to debug issues, test functionality, or verify expected behavior.
|
|
26
|
+
|
|
27
|
+
IMPORTANT: Assume the user's development server is ALREADY running and active, unless you see logs indicating otherwise. Never start the user's development server for them, unless they ask you to do so.
|
|
28
|
+
Never offer to interact with the website aside from reading them (see available actions below). The user will manipulate the website themselves and bring you to the UI they want you to interact with.
|
|
29
|
+
|
|
30
|
+
### Response Analysis
|
|
31
|
+
|
|
32
|
+
After each action, you'll receive:
|
|
33
|
+
1. Success/failure status
|
|
34
|
+
2. New console logs since last action
|
|
35
|
+
3. Network requests and responses
|
|
36
|
+
4. JavaScript errors with stack traces
|
|
37
|
+
|
|
38
|
+
Use this data to:
|
|
39
|
+
- Verify expected behavior
|
|
40
|
+
- Debug issues
|
|
41
|
+
- Guide next actions
|
|
42
|
+
- Make informed decisions about fixes
|
|
43
|
+
|
|
44
|
+
### Best Practices
|
|
45
|
+
|
|
46
|
+
**Workflow**
|
|
47
|
+
- Navigate to the user's website, probably on localhost, but you can compare with the production site if you want.
|
|
48
|
+
- Scroll to the relevant section
|
|
49
|
+
- Take screenshots and analyze confirm changes
|
|
50
|
+
- Check network requests for anomalies
|
|
51
|
+
|
|
52
|
+
**Debugging Flow**
|
|
53
|
+
- Start with minimal reproduction steps
|
|
54
|
+
- Collect data at each step
|
|
55
|
+
- Analyze results before next action
|
|
56
|
+
- Take screenshots to track your changes after each UI change you make
|
|
57
|
+
|
|
58
|
+
There is currently only one type of browser action available:
|
|
59
|
+
Navigate:
|
|
60
|
+
- Load a new URL in the current browser window and get the logs after page load.
|
|
61
|
+
Params:
|
|
62
|
+
- \`type\`: (required) Must be equal to 'navigate'
|
|
63
|
+
- \`url\`: (required) The URL to navigate to.
|
|
64
|
+
- \`waitUntil\`: (required) One of 'load', 'domcontentloaded', 'networkidle0'
|
|
65
|
+
|
|
66
|
+
Example:
|
|
67
|
+
${$getNativeToolCallExampleString({
|
|
68
|
+
toolName,
|
|
69
|
+
inputSchema,
|
|
70
|
+
input: {
|
|
71
|
+
type: 'navigate',
|
|
72
|
+
url: 'localhost:3000',
|
|
73
|
+
waitUntil: 'domcontentloaded',
|
|
74
|
+
},
|
|
75
|
+
endsAgentStep,
|
|
76
|
+
})}
|
|
77
|
+
`.trim()
|
|
78
|
+
|
|
79
|
+
export const browserLogsParams = {
|
|
80
|
+
toolName,
|
|
81
|
+
endsAgentStep,
|
|
82
|
+
description,
|
|
83
|
+
inputSchema,
|
|
84
|
+
outputSchema: jsonToolResultSchema(BrowserResponseSchema),
|
|
85
|
+
} satisfies $ToolParams
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import z from 'zod/v4'
|
|
2
|
+
|
|
3
|
+
import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
|
|
4
|
+
|
|
5
|
+
import type { $ToolParams } from '../../constants'
|
|
6
|
+
|
|
7
|
+
const toolName = 'cloud_plan_ready'
|
|
8
|
+
const endsAgentStep = true
|
|
9
|
+
|
|
10
|
+
const inputSchema = z.object({
|
|
11
|
+
summary: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.describe(
|
|
15
|
+
'One short user-facing sentence describing the agreed product. Put implementation detail in build_prompt.',
|
|
16
|
+
),
|
|
17
|
+
stack: z
|
|
18
|
+
.array(z.string().min(1))
|
|
19
|
+
.min(1)
|
|
20
|
+
.describe('The agreed frameworks, services, and infrastructure choices.'),
|
|
21
|
+
build_prompt: z
|
|
22
|
+
.string()
|
|
23
|
+
.min(1)
|
|
24
|
+
.describe(
|
|
25
|
+
'A complete implementation brief for the coding agent that will build the project.',
|
|
26
|
+
),
|
|
27
|
+
required_integrations: z
|
|
28
|
+
.array(
|
|
29
|
+
z.object({
|
|
30
|
+
search_id: z
|
|
31
|
+
.string()
|
|
32
|
+
.trim()
|
|
33
|
+
.min(1)
|
|
34
|
+
.describe(
|
|
35
|
+
'The exact search_id from the Gravity search that recommended this service.',
|
|
36
|
+
),
|
|
37
|
+
slug: z
|
|
38
|
+
.string()
|
|
39
|
+
.trim()
|
|
40
|
+
.min(1)
|
|
41
|
+
.describe('The exact Gravity recommendation slug.'),
|
|
42
|
+
}),
|
|
43
|
+
)
|
|
44
|
+
// Defaulted rather than required: a planner that cannot cite a search_id
|
|
45
|
+
// must still be able to finalize. An incomplete credential list only costs
|
|
46
|
+
// the user a manual env var later, while a blocked call costs them the
|
|
47
|
+
// Start building button entirely.
|
|
48
|
+
.default([])
|
|
49
|
+
.describe(
|
|
50
|
+
'Every selected Gravity service whose recommendation returned required API keys or environment variables. Pass [] when the plan needs no credential-bearing external service, or when you have no exact search_id to cite.',
|
|
51
|
+
),
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
const outputSchema = z.object({ message: z.string() })
|
|
55
|
+
|
|
56
|
+
const description = `
|
|
57
|
+
Mark a blank Anvil Cloud project plan as ready for the user to approve.
|
|
58
|
+
|
|
59
|
+
Call this once you know what the product does and which technologies it uses:
|
|
60
|
+
- You understand the product, its users, and its core flows.
|
|
61
|
+
- You chose every technology in the stack with gravity_index.
|
|
62
|
+
- You presented the stack and answered the user's questions about it.
|
|
63
|
+
|
|
64
|
+
This does not start implementation. It makes a "Start building" button appear
|
|
65
|
+
for the user, and that button is how the user approves the plan — do not ask
|
|
66
|
+
them to confirm the plan before calling this, and never end a turn saying you
|
|
67
|
+
are ready to finalize instead of calling it.
|
|
68
|
+
|
|
69
|
+
${$getNativeToolCallExampleString({
|
|
70
|
+
toolName,
|
|
71
|
+
inputSchema,
|
|
72
|
+
input: {
|
|
73
|
+
summary: 'A collaborative booking app for independent music teachers.',
|
|
74
|
+
stack: ['React', 'Vite', 'Supabase', 'Resend'],
|
|
75
|
+
build_prompt:
|
|
76
|
+
'Build the agreed booking app with teacher availability, student booking, authentication, and transactional email.',
|
|
77
|
+
required_integrations: [
|
|
78
|
+
{
|
|
79
|
+
search_id: 'search_id_from_gravity_index',
|
|
80
|
+
slug: 'resend',
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
endsAgentStep,
|
|
85
|
+
})}
|
|
86
|
+
`.trim()
|
|
87
|
+
|
|
88
|
+
export const cloudPlanReadyParams = {
|
|
89
|
+
toolName,
|
|
90
|
+
endsAgentStep,
|
|
91
|
+
description,
|
|
92
|
+
inputSchema,
|
|
93
|
+
outputSchema: jsonToolResultSchema(outputSchema),
|
|
94
|
+
} satisfies $ToolParams
|