cartethyia 2.7.8 → 2.8.0
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/.env.example +3 -3
- package/README.md +29 -59
- package/dist/dashboard/assets/BannedPage-Cc0vKpMG.js +1 -0
- package/dist/dashboard/assets/BannedPage-Cc0vKpMG.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolDetailPage-BRWKPQPf.js → CliToolDetailPage-Bqj2aa1T.js} +1 -1
- package/dist/dashboard/assets/CliToolDetailPage-Bqj2aa1T.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolsPage-BP-Y5iHN.js → CliToolsPage-CXsaOAO2.js} +1 -1
- package/dist/dashboard/assets/CliToolsPage-CXsaOAO2.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-BeLpJ4ma.js +1 -0
- package/dist/dashboard/assets/CombosPage-BeLpJ4ma.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-DnV0uZ3m.js +1 -0
- package/dist/dashboard/assets/ConsoleLogPage-DnV0uZ3m.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-CBxAjo63.js +1 -0
- package/dist/dashboard/assets/CustomizationPage-CBxAjo63.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-B5yEE0k6.js +1 -0
- package/dist/dashboard/assets/HealthEventsModal-B5yEE0k6.js.gz +0 -0
- package/dist/dashboard/assets/{InjectSystemPromptPanel-Cv-2Ol_K.js → InjectSystemPromptPanel-BWFLECmz.js} +2 -2
- package/dist/dashboard/assets/InjectSystemPromptPanel-BWFLECmz.js.gz +0 -0
- package/dist/dashboard/assets/{LoginPage-bKfz_b1K.js → LoginPage-CgoPc5B9.js} +1 -1
- package/dist/dashboard/assets/LoginPage-CgoPc5B9.js.gz +0 -0
- package/dist/dashboard/assets/{ModelPicker-B-WQxx_H.js → ModelPicker-D9bFQern.js} +1 -1
- package/dist/dashboard/assets/ModelPicker-D9bFQern.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-B_p4tL8k.js +1 -0
- package/dist/dashboard/assets/OverviewPage-B_p4tL8k.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-rs5E2rxv.js +8 -0
- package/dist/dashboard/assets/ProviderDetailPage-rs5E2rxv.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-D_0PiZtg.js +1 -0
- package/dist/dashboard/assets/ProviderIcon-D_0PiZtg.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-CLI2bJTK.js +1 -0
- package/dist/dashboard/assets/ProvidersPage-CLI2bJTK.js.gz +0 -0
- package/dist/dashboard/assets/{ProxyPage-emlTuxz6.js → ProxyPage-BwNC_-Cx.js} +1 -1
- package/dist/dashboard/assets/ProxyPage-BwNC_-Cx.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-DA-a1iSN.js +1 -0
- package/dist/dashboard/assets/QuotaPage-DA-a1iSN.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-CctTga2C.js +1 -0
- package/dist/dashboard/assets/SettingsPage-CctTga2C.js.gz +0 -0
- package/dist/dashboard/assets/{SetupPage-CUZrKs9r.js → SetupPage-febLU4r1.js} +1 -1
- package/dist/dashboard/assets/SetupPage-febLU4r1.js.gz +0 -0
- package/dist/dashboard/assets/{StudioPage-jWmUdDpy.js → StudioPage-M6fvR5Wz.js} +1 -1
- package/dist/dashboard/assets/StudioPage-M6fvR5Wz.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-nyeuRqz9.js +56 -0
- package/dist/dashboard/assets/UsagePage-nyeuRqz9.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-BFOlvrJC.js +1 -0
- package/dist/dashboard/assets/api-keys-BFOlvrJC.js.gz +0 -0
- package/dist/dashboard/assets/app-Dx2QgsNj.css +2 -0
- package/dist/dashboard/assets/app-Dx2QgsNj.css.gz +0 -0
- package/dist/dashboard/assets/{assert-CidQVoNo.js → assert-CqTLw5e7.js} +1 -1
- package/dist/dashboard/assets/assert-CqTLw5e7.js.gz +0 -0
- package/dist/dashboard/assets/{badge-DyI_mJfi.js → badge-C83EqLB0.js} +1 -1
- package/dist/dashboard/assets/badge-C83EqLB0.js.gz +0 -0
- package/dist/dashboard/assets/ban-durations-B58FyRxC.js +1 -0
- package/dist/dashboard/assets/ban-durations-B58FyRxC.js.gz +0 -0
- package/dist/dashboard/assets/{banner-B-yXtCqb.js → banner-D1xn7pIe.js} +1 -1
- package/dist/dashboard/assets/banner-D1xn7pIe.js.gz +0 -0
- package/dist/dashboard/assets/brand/bansos_page.webp +0 -0
- package/dist/dashboard/assets/brand/denia_bansos.webp +0 -0
- package/dist/dashboard/assets/brand/favicon.webp +0 -0
- package/dist/dashboard/assets/brand/login_register.webp +0 -0
- package/dist/dashboard/assets/brand/login_register_initial.webp +0 -0
- package/dist/dashboard/assets/brand/og_bansos.webp +0 -0
- package/dist/dashboard/assets/brand/og_image.webp +0 -0
- package/dist/dashboard/assets/brand/sidebar_ico.webp +0 -0
- package/dist/dashboard/assets/{card-_HwAEqFF.js → card-DU3Lq5Lm.js} +1 -1
- package/dist/dashboard/assets/card-DU3Lq5Lm.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-Dw1U_drK.js +1 -0
- package/dist/dashboard/assets/cli-tools-Dw1U_drK.js.gz +0 -0
- package/dist/dashboard/assets/{clipboard-button-ByjCk0o9.js → clipboard-button-CEL5Sg_J.js} +1 -1
- package/dist/dashboard/assets/clipboard-button-CEL5Sg_J.js.gz +0 -0
- package/dist/dashboard/assets/{dialog-BZhOlfz-.js → dialog-BjFR5UHy.js} +1 -1
- package/dist/dashboard/assets/dialog-BjFR5UHy.js.gz +0 -0
- package/dist/dashboard/assets/{drawer-BADqIRYP.js → drawer-HvBW0AjI.js} +1 -1
- package/dist/dashboard/assets/drawer-HvBW0AjI.js.gz +0 -0
- package/dist/dashboard/assets/entry-BSu3gFlt.js +4 -0
- package/dist/dashboard/assets/entry-BSu3gFlt.js.gz +0 -0
- package/dist/dashboard/assets/{entry-COaC-irN.js → entry-CECVELyy.js} +1 -1
- package/dist/dashboard/assets/entry-CECVELyy.js.gz +0 -0
- package/dist/dashboard/assets/entry-DYYofQ7W.js +1 -0
- package/dist/dashboard/assets/entry-DYYofQ7W.js.gz +0 -0
- package/dist/dashboard/assets/{formatters-DcHJyRiu.js → formatters-DLW4i8zK.js} +1 -1
- package/dist/dashboard/assets/formatters-DLW4i8zK.js.gz +0 -0
- package/dist/dashboard/assets/{index-CgKmFngv.js → index-1-fCqe64.js} +2 -2
- package/dist/dashboard/assets/index-1-fCqe64.js.gz +0 -0
- package/dist/dashboard/assets/{inline-B2BirKry.js → inline-DGvU2oLK.js} +1 -1
- package/dist/dashboard/assets/inline-DGvU2oLK.js.gz +0 -0
- package/dist/dashboard/assets/{input-D-qV9dKY.js → input-iNnO1X2K.js} +1 -1
- package/dist/dashboard/assets/input-iNnO1X2K.js.gz +0 -0
- package/dist/dashboard/assets/{layout-B7tVWhtV.js → layout-0q8UGypb.js} +1 -1
- package/dist/dashboard/assets/layout-0q8UGypb.js.gz +0 -0
- package/dist/dashboard/assets/{list-row-CtkGE3bF.js → list-row-C0w2bQjJ.js} +1 -1
- package/dist/dashboard/assets/list-row-C0w2bQjJ.js.gz +0 -0
- package/dist/dashboard/assets/{live-DGizF06-.js → live-M5aJ_xCa.js} +1 -1
- package/dist/dashboard/assets/live-M5aJ_xCa.js.gz +0 -0
- package/dist/dashboard/assets/{mutation-GU7XdEjz.js → mutation-BQ0ccH_A.js} +1 -1
- package/dist/dashboard/assets/mutation-BQ0ccH_A.js.gz +0 -0
- package/dist/dashboard/assets/{network-C9UE-bOr.js → network-BKeQGT3K.js} +1 -1
- package/dist/dashboard/assets/network-BKeQGT3K.js.gz +0 -0
- package/dist/dashboard/assets/{numbers-BnAd22a_.js → numbers-CivAk3da.js} +1 -1
- package/dist/dashboard/assets/numbers-CivAk3da.js.gz +0 -0
- package/dist/dashboard/assets/{pagination-BAywyMzS.js → pagination-CpzvI5ep.js} +1 -1
- package/dist/dashboard/assets/pagination-CpzvI5ep.js.gz +0 -0
- package/dist/dashboard/assets/providers/devin.svg +9 -0
- package/dist/dashboard/assets/providers/devin.svg.gz +0 -0
- package/dist/dashboard/assets/providers/windsurf.svg +10 -0
- package/dist/dashboard/assets/providers/windsurf.svg.gz +0 -0
- package/dist/dashboard/assets/providers/zro.svg +3 -0
- package/dist/dashboard/assets/providers/zro.svg.gz +0 -0
- package/dist/dashboard/assets/{query-keys-YSoQOUh6.js → query-keys-IKLh0YFd.js} +1 -1
- package/dist/dashboard/assets/query-keys-IKLh0YFd.js.gz +0 -0
- package/dist/dashboard/assets/quota-DiPD6UKH.js +1 -0
- package/dist/dashboard/assets/quota-DiPD6UKH.js.gz +0 -0
- package/dist/dashboard/assets/routing-BFQX2VBc.js +1 -0
- package/dist/dashboard/assets/routing-BFQX2VBc.js.gz +0 -0
- package/dist/dashboard/assets/{select-BCOcv8WK.js → select-CXbck0jG.js} +2 -2
- package/dist/dashboard/assets/select-CXbck0jG.js.gz +0 -0
- package/dist/dashboard/assets/settings-C_XvMHh9.js +1 -0
- package/dist/dashboard/assets/settings-C_XvMHh9.js.gz +0 -0
- package/dist/dashboard/assets/{stack-ByKt3Q1g.js → stack-DggRiCxE.js} +1 -1
- package/dist/dashboard/assets/stack-DggRiCxE.js.gz +0 -0
- package/dist/dashboard/assets/{state-DXbGTx7N.js → state-ClFzfbYp.js} +1 -1
- package/dist/dashboard/assets/state-ClFzfbYp.js.gz +0 -0
- package/dist/dashboard/assets/story/25817331.webp +0 -0
- package/dist/dashboard/assets/story/Shorekeeper.webp +0 -0
- package/dist/dashboard/assets/story/cartethyia-god.webp +0 -0
- package/dist/dashboard/assets/story/fleurdelys_plus.webp +0 -0
- package/dist/dashboard/assets/story/jinhsi-blossom.webp +0 -0
- package/dist/dashboard/assets/story/phrolova-a.webp +0 -0
- package/dist/dashboard/assets/story/requestdeniawokkjpg.webp +0 -0
- package/dist/dashboard/assets/story/wuthering-waves-hiyuki-aemeath-hiyuki-rover.webp +0 -0
- package/dist/dashboard/assets/{switch-ZeTsW623.js → switch-CTIFxKqS.js} +1 -1
- package/dist/dashboard/assets/switch-CTIFxKqS.js.gz +0 -0
- package/dist/dashboard/assets/{useMutation-CbCP4w1o.js → useMutation-BClG3yWj.js} +1 -1
- package/dist/dashboard/assets/useMutation-BClG3yWj.js.gz +0 -0
- package/dist/dashboard/console-backgrounds.webp +0 -0
- package/dist/dashboard/console-backgrounds_initial.webp +0 -0
- package/dist/dashboard/donation/qris-risun-marke.webp +0 -0
- package/dist/dashboard/index.html +3 -3
- package/dist/dashboard/index.html.gz +0 -0
- package/dist/dashboard/precompressed-assets.json +59 -56
- package/migrations/full-postgres/0044_add_models_warning_metadata.sql +10 -0
- package/migrations/full-postgres/0045_migrate_workbuddy_to_codebuddy.sql +156 -0
- package/migrations/full-postgres/0046_add_accounts_quota_plan_fetched_at.sql +7 -0
- package/migrations/lite-sqlite3/0044_add_models_warning_metadata.sql +11 -0
- package/migrations/lite-sqlite3/0045_migrate_workbuddy_to_codebuddy.sql +156 -0
- package/migrations/lite-sqlite3/0046_add_accounts_quota_plan_fetched_at.sql +4 -0
- package/package.json +1 -1
- package/src/boot/app.ts +10 -13
- package/src/boot/dependencies.ts +12 -4
- package/src/boot/flush.ts +20 -0
- package/src/boot/lifecycle.ts +7 -5
- package/src/config/cooldowns.ts +1 -1
- package/src/config/routing.ts +26 -0
- package/src/config/spec-metadata.ts +72 -0
- package/src/config/spec.ts +20 -6
- package/src/console/api-keys/contracts.ts +12 -1
- package/src/console/api-keys/routes.ts +50 -31
- package/src/console/auth/account-reset.ts +7 -9
- package/src/console/backup/contracts.ts +4 -0
- package/src/console/backup/export-endpoint.ts +7 -5
- package/src/console/cli-tools/service.ts +6 -12
- package/src/console/console-router-guards.ts +23 -16
- package/src/console/console-router.ts +7 -0
- package/src/console/dashboard-assets.ts +5 -5
- package/src/console/domain-registration.ts +27 -2
- package/src/console/inferhub/normalize.ts +24 -28
- package/src/console/inferhub/types.ts +3 -0
- package/src/console/ip-bans/routes.ts +93 -0
- package/src/console/observability/store.ts +0 -53
- package/src/console/providers/catalog/catalog-projections.ts +5 -2
- package/src/console/providers/catalog/contracts.ts +123 -0
- package/src/console/providers/catalog/discover-constants.ts +6 -0
- package/src/console/providers/catalog/model-operations.ts +122 -10
- package/src/console/providers/catalog/provider-operations.ts +116 -8
- package/src/console/providers/catalog/public-model-store.ts +0 -0
- package/src/console/providers/catalog/routes.ts +65 -4
- package/src/console/providers/catalog/store-helpers.ts +30 -1
- package/src/console/providers/catalog/store.ts +249 -4
- package/src/console/quota/account-quota-global.ts +97 -19
- package/src/console/quota/account-quota-shared.ts +49 -0
- package/src/console/quota/account-quota-tenant.ts +6 -18
- package/src/console/quota/native-identity.ts +2 -0
- package/src/console/quota/quota-view.ts +19 -3
- package/src/console/routing/pools/operations.ts +31 -46
- package/src/console/settings/contracts.ts +18 -0
- package/src/console/settings/store.ts +32 -0
- package/src/console/shared/errors.ts +33 -6
- package/src/console/system-prompt/contracts.ts +0 -1
- package/src/main.ts +3 -3
- package/src/network/pool/byte-accounting.ts +3 -2
- package/src/network/pool/selector.ts +182 -39
- package/src/network/pool-cooldown-store.ts +89 -14
- package/src/network/pool-health.ts +49 -61
- package/src/network/rate-limit-verdict.ts +1 -1
- package/src/network/ssrf.ts +6 -6
- package/src/observability/event-log.ts +7 -361
- package/src/observability/event-query.ts +18 -4
- package/src/observability/performance-metrics.ts +9 -0
- package/src/observability/runtime-metrics.ts +14 -9
- package/src/observability/telemetry-buffer.ts +15 -25
- package/src/observability/telemetry-reconciliation.ts +9 -37
- package/src/observability/telemetry-row.ts +125 -0
- package/src/persistence/db-mode.ts +4 -1
- package/src/persistence/dialect.ts +30 -0
- package/src/persistence/migrate.ts +6 -3
- package/src/persistence/schema.ts +28 -2
- package/src/persistence/ttl-cache.ts +20 -2
- package/src/protocol/codecs.ts +1 -1
- package/src/protocol/dsml.ts +35 -87
- package/src/protocol/gateway-error.ts +1 -0
- package/src/protocol/markup-stream-parser.ts +195 -0
- package/src/protocol/reasoning-text.ts +19 -0
- package/src/protocol/reasoning.ts +1 -1
- package/src/protocol/request/chat.ts +14 -14
- package/src/protocol/request/gemini.ts +8 -2
- package/src/protocol/request/messages.ts +4 -5
- package/src/protocol/response/chat.ts +12 -20
- package/src/protocol/response/gemini.ts +6 -1
- package/src/protocol/response/omp-tool-call-markup.ts +43 -86
- package/src/protocol/response/responses.ts +18 -2
- package/src/protocol/sse-decoder.ts +25 -8
- package/src/protocol/stop-reason.ts +23 -1
- package/src/protocol/stream-error-frames.ts +13 -3
- package/src/protocol/think-split.ts +112 -0
- package/src/protocol/translation/dialect/qwen.ts +26 -58
- package/src/protocol/translation/quirks.ts +1 -1
- package/src/protocol/translation/tool-repair.ts +2 -2
- package/src/protocol/upstream/send-claude-messages.ts +15 -4
- package/src/protocol/upstream-parsing.ts +1 -1
- package/src/providers/adapters/compatible-adapter.ts +78 -17
- package/src/providers/authentication/oauth-client.ts +1 -1
- package/src/providers/authentication/oauth-device-flow.ts +98 -8
- package/src/providers/authentication/oauth-refresh-service.ts +153 -59
- package/src/providers/configured-provider.ts +148 -0
- package/src/providers/default-registry.ts +117 -27
- package/src/providers/discovery/discovery-types.ts +12 -0
- package/src/providers/discovery/probe-phases.ts +74 -33
- package/src/providers/discovery/probing-service.ts +293 -165
- package/src/providers/integrations/alibabacp/alibabacp-models.ts +1 -2
- package/src/providers/integrations/{dashscope-models.ts → alibabacp/dashscope-models.ts} +2 -2
- package/src/providers/integrations/antigravity/antigravity-protocol.ts +121 -2
- package/src/providers/integrations/antigravity/antigravity.ts +13 -2
- package/src/providers/integrations/buddy/buddy-catalog-shared.ts +72 -34
- package/src/providers/integrations/buddy/buddy-chat-shared.ts +191 -35
- package/src/providers/integrations/buddy/buddy-checkin.ts +17 -39
- package/src/providers/integrations/buddy/buddy-conversation-headers.ts +2 -2
- package/src/providers/integrations/buddy/buddy-discovery-shared.ts +5 -5
- package/src/providers/integrations/buddy/buddy-identity.ts +89 -6
- package/src/providers/integrations/buddy/buddy-media.ts +4 -5
- package/src/providers/integrations/buddy/buddy-oauth-shared.ts +2 -2
- package/src/providers/integrations/buddy/buddy-quota-shared.ts +1 -1
- package/src/providers/integrations/buddy/buddy-usage-shared.ts +1 -3
- package/src/providers/integrations/buddy/capabilities.ts +6 -43
- package/src/providers/integrations/buddy/codebuddy/cn-catalog.ts +2 -1
- package/src/providers/integrations/buddy/codebuddy/cn-provider.ts +23 -1
- package/src/providers/integrations/buddy/codebuddy/provider.ts +6 -2
- package/src/providers/integrations/buddy/codebuddy/shared.ts +38 -27
- package/src/providers/integrations/claude/claude-quota.ts +14 -17
- package/src/providers/integrations/cline/cline.ts +2 -2
- package/src/providers/integrations/commandcode/quota.ts +22 -28
- package/src/providers/integrations/cursor/cursor-auth.ts +0 -8
- package/src/providers/integrations/cursor/cursor-catalog.ts +2 -0
- package/src/providers/integrations/cursor/cursor-exec.ts +745 -0
- package/src/providers/integrations/cursor/cursor-http2.ts +2 -0
- package/src/providers/integrations/cursor/cursor-request.ts +35 -20
- package/src/providers/integrations/cursor/cursor-shared.ts +26 -5
- package/src/providers/integrations/cursor/cursor.ts +139 -70
- package/src/providers/integrations/cursor/protocol/messages.ts +22 -29
- package/src/providers/integrations/cursor/protocol/protobuf-schema.ts +37 -0
- package/src/providers/integrations/cursor/protocol/tool-canonical.ts +26 -100
- package/src/providers/integrations/devin/devin-auth.ts +353 -0
- package/src/providers/integrations/devin/devin-catalog.ts +207 -0
- package/src/providers/integrations/devin/devin-http.ts +91 -0
- package/src/providers/integrations/devin/devin-quota.ts +214 -0
- package/src/providers/integrations/devin/devin-shared.ts +111 -0
- package/src/providers/integrations/devin/devin.ts +539 -0
- package/src/providers/integrations/devin/protocol/devin-proto.ts +558 -0
- package/src/providers/integrations/devin/protocol/framing.ts +124 -0
- package/src/providers/integrations/factory/factory-oauth.ts +17 -44
- package/src/providers/integrations/factory/factory.ts +2 -2
- package/src/providers/integrations/freebuff/assets/official-system-manager.txt +88 -0
- package/src/providers/integrations/freebuff/assets/official-system-worker.txt +57 -0
- package/src/providers/integrations/freebuff/assets/official-tools.json +1070 -0
- package/src/providers/integrations/freebuff/freebuff-catalog.ts +120 -0
- package/src/providers/integrations/freebuff/freebuff-constants.ts +1233 -0
- package/src/providers/integrations/freebuff/freebuff-discovery.ts +108 -0
- package/src/providers/integrations/freebuff/freebuff-oauth.ts +240 -0
- package/src/providers/integrations/freebuff/freebuff-quota.ts +260 -0
- package/src/providers/integrations/freebuff/freebuff-virtual.ts +89 -0
- package/src/providers/integrations/freebuff/freebuff.ts +682 -0
- package/src/providers/integrations/freepi/freepi-catalog.ts +60 -0
- package/src/providers/integrations/freepi/freepi-discovery.ts +82 -0
- package/src/providers/integrations/freepi/freepi-headers.ts +21 -0
- package/src/providers/integrations/freepi/freepi-oauth.ts +142 -0
- package/src/providers/integrations/freepi/freepi-protocol.ts +242 -0
- package/src/providers/integrations/freepi/freepi-quota.ts +126 -0
- package/src/providers/integrations/freepi/freepi-realm.ts +35 -0
- package/src/providers/integrations/freepi/freepi.ts +292 -0
- package/src/providers/integrations/gemini.ts +2 -2
- package/src/providers/integrations/grok/grok-oauth.ts +48 -45
- package/src/providers/integrations/grok/grok-ratelimit-store.ts +10 -17
- package/src/providers/integrations/grok/grok-turn-index.ts +11 -16
- package/src/providers/integrations/hermes/hermes-oauth.ts +94 -0
- package/src/providers/integrations/{hermes.ts → hermes/hermes.ts} +13 -21
- package/src/providers/integrations/hermes/index.ts +2 -0
- package/src/providers/integrations/kiro/kiro-catalog.ts +17 -1
- package/src/providers/integrations/kiro/kiro-discovery.ts +10 -12
- package/src/providers/integrations/kiro/kiro-quota.ts +8 -4
- package/src/providers/integrations/kiro/kiro.ts +15 -19
- package/src/providers/integrations/ollamacloud/index.ts +2 -0
- package/src/providers/integrations/{ollamacloud-models.ts → ollamacloud/models.ts} +2 -2
- package/src/providers/integrations/{ollamacloud-quota.ts → ollamacloud/quota.ts} +3 -3
- package/src/providers/integrations/opencode/fingerprint.ts +1 -1
- package/src/providers/integrations/opencode/opencode-go-quota.ts +2 -8
- package/src/providers/integrations/perch/perch-catalog.ts +105 -0
- package/src/providers/integrations/perch/perch-credential.ts +25 -0
- package/src/providers/integrations/perch/perch-oauth.ts +170 -0
- package/src/providers/integrations/perch/perch-protocol.ts +208 -0
- package/src/providers/integrations/perch/perch-quota.ts +123 -0
- package/src/providers/integrations/perch/perch-realm.ts +82 -0
- package/src/providers/integrations/perch/perch-system-prompt.ts +13 -0
- package/src/providers/integrations/perch/perch.ts +305 -0
- package/src/providers/integrations/perch/saffron-system-prompt.txt +8 -0
- package/src/providers/integrations/qoder/chat-proto.ts +328 -328
- package/src/providers/integrations/qoder/claim-qoder-credits.ts +19 -60
- package/src/providers/integrations/qoder/qoder-adapter.ts +90 -40
- package/src/providers/integrations/qoder/qoder-auth.ts +101 -29
- package/src/providers/integrations/qoder/qoder-cache.ts +32 -0
- package/src/providers/integrations/qoder/qoder-catalog.ts +26 -6
- package/src/providers/integrations/qoder/qoder-chat.ts +7 -21
- package/src/providers/integrations/qoder/qoder-checkin.ts +6 -6
- package/src/providers/integrations/qoder/qoder-grpc.ts +210 -7
- package/src/providers/integrations/qoder/qoder-ide.ts +5 -108
- package/src/providers/integrations/qoder/qoder-identity-cache.ts +184 -0
- package/src/providers/integrations/qoder/qoder-native-identity-store.ts +83 -18
- package/src/providers/integrations/qoder/qoder-realm.ts +9 -6
- package/src/providers/integrations/qoder/qoder-umid.ts +109 -342
- package/src/providers/integrations/qoder/qoder-virtual.ts +33 -1
- package/src/providers/integrations/qoder/qoder.ts +3 -7
- package/src/providers/integrations/trae/trae-catalog.ts +9 -14
- package/src/providers/integrations/trae/trae-headers.ts +36 -11
- package/src/providers/integrations/trae/trae-oauth.ts +14 -17
- package/src/providers/integrations/trae/trae-protocol.ts +12 -11
- package/src/providers/integrations/trae/trae-quota.ts +96 -36
- package/src/providers/integrations/trae/trae-realm.ts +74 -15
- package/src/providers/integrations/trae/trae.ts +99 -26
- package/src/providers/integrations/zcode-start-plan/provider.ts +226 -23
- package/src/providers/integrations/zcode-start-plan/quota.ts +19 -2
- package/src/providers/integrations/zro/zro.ts +204 -0
- package/src/providers/operations/account-error-classification.ts +235 -278
- package/src/providers/operations/account-health-service.ts +273 -26
- package/src/providers/operations/account-refresh-status.ts +269 -0
- package/src/providers/operations/account-tier.ts +66 -0
- package/src/providers/operations/client-version-resolver.ts +1 -1
- package/src/providers/operations/client-versions.ts +42 -150
- package/src/providers/operations/cooldown-rules.ts +56 -0
- package/src/providers/operations/{model-catalog-cache.ts → provider-caches.ts} +68 -16
- package/src/providers/operations/provider-catalog-seeder.ts +4 -0
- package/src/providers/operations/provider-catalog-service.ts +1 -1
- package/src/providers/operations/provider-credential-service.ts +102 -32
- package/src/providers/operations/provider-rules/github.ts +48 -0
- package/src/providers/operations/provider-rules/grok.ts +33 -0
- package/src/providers/operations/provider-rules/inception.ts +49 -0
- package/src/providers/operations/provider-rules/index.ts +32 -0
- package/src/providers/operations/provider-rules/perch.ts +37 -0
- package/src/providers/operations/provider-rules/qoder.ts +70 -0
- package/src/providers/operations/provider-rules/trae.ts +81 -0
- package/src/providers/provider-contracts.ts +33 -2
- package/src/providers/{provider-credential-resolver.ts → provider-credentials.ts} +40 -3
- package/src/providers/provider-metadata.ts +99 -14
- package/src/providers/provider-model-definition.ts +36 -0
- package/src/providers/provider-probe.ts +15 -1
- package/src/providers/provider-registry.ts +42 -33
- package/src/providers/quota/quota-limit-windows.ts +16 -5
- package/src/providers/quota/quota-support.ts +1 -1
- package/src/providers/quota/quota-window-parser.ts +90 -18
- package/src/providers/quota/refresh.ts +96 -18
- package/src/security/abuse.ts +71 -0
- package/src/security/api-key-auth-cache.ts +1 -1
- package/src/security/api-key-auth.ts +6 -2
- package/src/transport/dispatch/attempt-finalize.ts +14 -13
- package/src/transport/dispatch/attempt-loop.ts +71 -17
- package/src/transport/dispatch/generation.ts +2 -8
- package/src/transport/dispatch/native-shared.ts +25 -0
- package/src/transport/dispatch/proxy-request.ts +9 -46
- package/src/transport/dispatch/responses-compact.ts +2 -8
- package/src/transport/dispatch/streaming/finalize.ts +9 -6
- package/src/transport/dispatch/streaming/stream.ts +9 -36
- package/src/transport/dispatch/systemone.ts +2 -8
- package/src/transport/dispatch/token-count.ts +2 -6
- package/src/transport/dispatch/upstream.ts +67 -1
- package/src/transport/drain-endpoint.ts +31 -4
- package/src/transport/failure-policy.ts +129 -37
- package/src/transport/guards/body-policy.ts +7 -1
- package/src/transport/guards/error-lifecycle.ts +13 -1
- package/src/transport/guards/request-context.ts +22 -14
- package/src/transport/request/preparer.ts +81 -71
- package/src/transport/routing/bounded-lru.ts +14 -0
- package/src/transport/routing/drain-reserve.ts +129 -0
- package/src/transport/routing/plan-gate.ts +7 -1
- package/src/transport/routing/round-robin.ts +60 -0
- package/src/transport/routing/route-catalog.ts +123 -111
- package/src/transport/routing/route-model.ts +51 -9
- package/src/transport/routing/router.ts +418 -33
- package/src/transport/surface/adapters.ts +11 -2
- package/src/transport/surface/chat/adapter.ts +2 -2
- package/src/transport/surface/chat/encode.ts +47 -4
- package/src/transport/surface/chat/parse.ts +2 -12
- package/src/transport/surface/completion.ts +44 -33
- package/src/transport/surface/content-parts.ts +21 -0
- package/src/transport/surface/messages/adapter.ts +9 -2
- package/src/transport/surface/messages/encode.ts +11 -3
- package/src/transport/surface/messages/parse.ts +2 -1
- package/src/transport/surface/messages/stream.ts +33 -17
- package/src/transport/surface/responses/encode.ts +34 -6
- package/src/transport/surface/responses/parse.ts +3 -11
- package/src/workers/daily-checkin.ts +1 -1
- package/src/workers/quota-refresh-sweep.ts +1 -1
- package/src/workers/scheduler.ts +22 -4
- package/dist/dashboard/assets/BannedPage-DeIbIiBU.js +0 -1
- package/dist/dashboard/assets/BannedPage-DeIbIiBU.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-BRWKPQPf.js.gz +0 -0
- package/dist/dashboard/assets/CliToolsPage-BP-Y5iHN.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-B7JHozVa.js +0 -1
- package/dist/dashboard/assets/CombosPage-B7JHozVa.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-GX7iGGcu.js +0 -1
- package/dist/dashboard/assets/ConsoleLogPage-GX7iGGcu.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-HVonbGEa.js +0 -1
- package/dist/dashboard/assets/CustomizationPage-HVonbGEa.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-xaut4OJ9.js +0 -1
- package/dist/dashboard/assets/HealthEventsModal-xaut4OJ9.js.gz +0 -0
- package/dist/dashboard/assets/InjectSystemPromptPanel-Cv-2Ol_K.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-bKfz_b1K.js.gz +0 -0
- package/dist/dashboard/assets/ModelPicker-B-WQxx_H.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-Z9pJZFo8.js +0 -1
- package/dist/dashboard/assets/OverviewPage-Z9pJZFo8.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-CMeDBxR1.js +0 -7
- package/dist/dashboard/assets/ProviderDetailPage-CMeDBxR1.js.gz +0 -0
- package/dist/dashboard/assets/ProviderIcon-jjqXJDA3.js +0 -1
- package/dist/dashboard/assets/ProviderIcon-jjqXJDA3.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-BXPdOpG4.js +0 -1
- package/dist/dashboard/assets/ProvidersPage-BXPdOpG4.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-emlTuxz6.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-CMJKNYWb.js +0 -1
- package/dist/dashboard/assets/QuotaPage-CMJKNYWb.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-BSy7EwGo.js +0 -1
- package/dist/dashboard/assets/SettingsPage-BSy7EwGo.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-CUZrKs9r.js.gz +0 -0
- package/dist/dashboard/assets/StudioPage-jWmUdDpy.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-5F9tGVGG.js +0 -56
- package/dist/dashboard/assets/UsagePage-5F9tGVGG.js.gz +0 -0
- package/dist/dashboard/assets/api-keys-KvX83mRe.js +0 -1
- package/dist/dashboard/assets/api-keys-KvX83mRe.js.gz +0 -0
- package/dist/dashboard/assets/app-BEsU8hKs.css +0 -2
- package/dist/dashboard/assets/app-BEsU8hKs.css.gz +0 -0
- package/dist/dashboard/assets/assert-CidQVoNo.js.gz +0 -0
- package/dist/dashboard/assets/badge-DyI_mJfi.js.gz +0 -0
- package/dist/dashboard/assets/banner-B-yXtCqb.js.gz +0 -0
- package/dist/dashboard/assets/brand/bansos_page.png +0 -0
- package/dist/dashboard/assets/brand/denia_bansos.jpg +0 -0
- package/dist/dashboard/assets/brand/favicon.jpg +0 -0
- package/dist/dashboard/assets/brand/login_register.jpg +0 -0
- package/dist/dashboard/assets/brand/login_register_initial.jpg +0 -0
- package/dist/dashboard/assets/brand/og_bansos.jpg +0 -0
- package/dist/dashboard/assets/brand/og_image.jpg +0 -0
- package/dist/dashboard/assets/brand/sidebar_ico.jpg +0 -0
- package/dist/dashboard/assets/card-_HwAEqFF.js.gz +0 -0
- package/dist/dashboard/assets/cli-tools-Bwv5-zGZ.js +0 -1
- package/dist/dashboard/assets/cli-tools-Bwv5-zGZ.js.gz +0 -0
- package/dist/dashboard/assets/clipboard-button-ByjCk0o9.js.gz +0 -0
- package/dist/dashboard/assets/dialog-BZhOlfz-.js.gz +0 -0
- package/dist/dashboard/assets/drawer-BADqIRYP.js.gz +0 -0
- package/dist/dashboard/assets/entry-COaC-irN.js.gz +0 -0
- package/dist/dashboard/assets/entry-Ca7LSCet.js +0 -4
- package/dist/dashboard/assets/entry-Ca7LSCet.js.gz +0 -0
- package/dist/dashboard/assets/entry-PDd27uCd.js +0 -1
- package/dist/dashboard/assets/entry-PDd27uCd.js.gz +0 -0
- package/dist/dashboard/assets/formatters-DcHJyRiu.js.gz +0 -0
- package/dist/dashboard/assets/index-CgKmFngv.js.gz +0 -0
- package/dist/dashboard/assets/inline-B2BirKry.js.gz +0 -0
- package/dist/dashboard/assets/input-D-qV9dKY.js.gz +0 -0
- package/dist/dashboard/assets/layout-B7tVWhtV.js.gz +0 -0
- package/dist/dashboard/assets/list-row-CtkGE3bF.js.gz +0 -0
- package/dist/dashboard/assets/live-DGizF06-.js.gz +0 -0
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js +0 -1
- package/dist/dashboard/assets/minimize-2-BTmMTK4o.js.gz +0 -0
- package/dist/dashboard/assets/mutation-GU7XdEjz.js.gz +0 -0
- package/dist/dashboard/assets/network-C9UE-bOr.js.gz +0 -0
- package/dist/dashboard/assets/numbers-BnAd22a_.js.gz +0 -0
- package/dist/dashboard/assets/pagination-BAywyMzS.js.gz +0 -0
- package/dist/dashboard/assets/query-keys-YSoQOUh6.js.gz +0 -0
- package/dist/dashboard/assets/quota-DJ1QlAOq.js +0 -1
- package/dist/dashboard/assets/quota-DJ1QlAOq.js.gz +0 -0
- package/dist/dashboard/assets/routing-fnCsxgNO.js +0 -1
- package/dist/dashboard/assets/routing-fnCsxgNO.js.gz +0 -0
- package/dist/dashboard/assets/select-BCOcv8WK.js.gz +0 -0
- package/dist/dashboard/assets/settings-BxslsErn.js +0 -1
- package/dist/dashboard/assets/settings-BxslsErn.js.gz +0 -0
- package/dist/dashboard/assets/stack-ByKt3Q1g.js.gz +0 -0
- package/dist/dashboard/assets/state-DXbGTx7N.js.gz +0 -0
- package/dist/dashboard/assets/switch-ZeTsW623.js.gz +0 -0
- package/dist/dashboard/assets/useMutation-CbCP4w1o.js.gz +0 -0
- package/dist/dashboard/console-backgrounds.jpg +0 -0
- package/dist/dashboard/console-backgrounds_initial.jpg +0 -0
- package/dist/dashboard/donation/qris-risun-marke.png +0 -0
- package/src/providers/bundled-discovery-providers.ts +0 -98
- package/src/providers/configured-openai-providers.ts +0 -120
- package/src/providers/integrations/buddy/turing-device-token.ts +0 -262
- package/src/providers/integrations/buddy/workbuddy/cn-oauth.ts +0 -30
- package/src/providers/integrations/buddy/workbuddy/cn-provider.ts +0 -58
- package/src/providers/integrations/buddy/workbuddy/oauth.ts +0 -31
- package/src/providers/integrations/buddy/workbuddy/provider.ts +0 -209
- package/src/providers/integrations/buddy/workbuddy/quota.ts +0 -161
- package/src/providers/integrations/buddy/workbuddy/shared.ts +0 -285
- package/src/providers/operations/model-discovery-cache.ts +0 -34
- package/src/providers/operations/probe-fetch.ts +0 -15
- package/src/providers/operations/provider-version-cache.ts +0 -30
- package/src/providers/provider-capabilities.ts +0 -33
- package/src/providers/provider-credential-envelope.ts +0 -43
- /package/dist/dashboard/assets/{app-CTxoqyYB.js → app-DIXLjojg.js} +0 -0
- /package/dist/dashboard/assets/{app-CTxoqyYB.js.gz → app-DIXLjojg.js.gz} +0 -0
|
@@ -0,0 +1,1070 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"type": "function",
|
|
4
|
+
"function": {
|
|
5
|
+
"name": "read_files",
|
|
6
|
+
"description": "Example:\n<read_files_params_example>\n{\n \"paths\": [\n \"path/to/file1.ts\",\n \"path/to/file2.ts\"\n ]\n}\n</read_files_params_example>",
|
|
7
|
+
"parameters": {
|
|
8
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
9
|
+
"description": "Read files from disk. List several paths to read several files in one call. Large files are cut off after 2,000 lines, with a note telling you the file's total line count. Don't read a large file whole: use code_search to locate the part you need (matches come with line numbers), then read a window around it with { path, offset, limit }. Avoid tiny repeated slices; when in doubt, take a window of a few hundred lines.",
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"paths": {
|
|
13
|
+
"description": "List of files to read. Each entry is either a file path, or an object { path, offset, limit } to read a specific line range of that file.",
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"anyOf": [
|
|
17
|
+
{
|
|
18
|
+
"description": "File path to read. Prefer paths relative to the **project root**; absolute paths inside the project are accepted, but paths outside the project will not work.",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"minLength": 1
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "object",
|
|
24
|
+
"properties": {
|
|
25
|
+
"path": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"minLength": 1
|
|
28
|
+
},
|
|
29
|
+
"offset": {
|
|
30
|
+
"description": "Line number to start reading from (1-indexed).",
|
|
31
|
+
"type": "integer",
|
|
32
|
+
"minimum": 1,
|
|
33
|
+
"maximum": 9007199254740991
|
|
34
|
+
},
|
|
35
|
+
"limit": {
|
|
36
|
+
"description": "Maximum number of lines to read (defaults to 2,000).",
|
|
37
|
+
"type": "integer",
|
|
38
|
+
"exclusiveMinimum": 0,
|
|
39
|
+
"maximum": 9007199254740991
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"required": [
|
|
43
|
+
"path"
|
|
44
|
+
],
|
|
45
|
+
"additionalProperties": false
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"required": [
|
|
52
|
+
"paths"
|
|
53
|
+
],
|
|
54
|
+
"additionalProperties": false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "function",
|
|
60
|
+
"function": {
|
|
61
|
+
"name": "str_replace",
|
|
62
|
+
"description": "Use this tool to make edits within existing files.\n\nImportant:\nIf you are making multiple edits in a row to a file, use only one str_replace call with multiple replacements instead of multiple str_replace tool calls.\n\nExample:\n<str_replace_params_example>\n{\n \"path\": \"path/to/file\",\n \"replacements\": [\n {\n \"oldString\": \"This is the old string\",\n \"newString\": \"This is the new string\"\n },\n {\n \"oldString\": \"\\n\\t\\t// @codebuff delete this log line please\\n\\t\\tconsole.log(\\\"Hello, world!\\\");\\n\",\n \"newString\": \"\\n\"\n },\n {\n \"oldString\": \"\\nfoo:\",\n \"newString\": \"\\nbar:\",\n \"allowMultiple\": true\n }\n ]\n}\n</str_replace_params_example>",
|
|
63
|
+
"parameters": {
|
|
64
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
65
|
+
"description": "Replace strings in a file with new strings.",
|
|
66
|
+
"type": "object",
|
|
67
|
+
"properties": {
|
|
68
|
+
"path": {
|
|
69
|
+
"description": "The path to the file to edit.",
|
|
70
|
+
"type": "string",
|
|
71
|
+
"minLength": 1
|
|
72
|
+
},
|
|
73
|
+
"replacements": {
|
|
74
|
+
"description": "Array of replacements to make.",
|
|
75
|
+
"minItems": 1,
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": {
|
|
78
|
+
"description": "Pair of oldString and newString values.",
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"oldString": {
|
|
82
|
+
"description": "The string to replace. This must be an *exact match* of the string you want to replace, including whitespace and punctuation.",
|
|
83
|
+
"type": "string",
|
|
84
|
+
"minLength": 1
|
|
85
|
+
},
|
|
86
|
+
"newString": {
|
|
87
|
+
"description": "The string to replace the corresponding oldString with. Can be empty to delete.",
|
|
88
|
+
"type": "string"
|
|
89
|
+
},
|
|
90
|
+
"allowMultiple": {
|
|
91
|
+
"description": "Whether to allow multiple replacements of oldString.",
|
|
92
|
+
"default": false,
|
|
93
|
+
"type": "boolean"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"required": [
|
|
97
|
+
"oldString",
|
|
98
|
+
"newString"
|
|
99
|
+
],
|
|
100
|
+
"additionalProperties": false
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"required": [
|
|
105
|
+
"path",
|
|
106
|
+
"replacements"
|
|
107
|
+
],
|
|
108
|
+
"additionalProperties": false
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"type": "function",
|
|
114
|
+
"function": {
|
|
115
|
+
"name": "write_file",
|
|
116
|
+
"description": "Create or replace a file with the given content.\n\nFormat the `content` parameter with the entire content of the file.\n\n#### Additional Info\n\nDo not use this tool to delete or rename a file. Instead run a terminal command for that.\n\nExamples:\n\nExample 1 - Simple file creation:\n<write_file_params_example>\n{\n \"path\": \"new-file.ts\",\n \"instructions\": \"Prints Hello, world\",\n \"content\": \"console.log(\\\"Hello, world!\\\");\"\n}\n</write_file_params_example>\n\nExample 2 - Overwriting a file:\n<write_file_params_example>\n{\n \"path\": \"foo.ts\",\n \"instructions\": \"Update foo function\",\n \"content\": \"function foo() {\\n doSomethingNew();\\n}\\n \\nfunction bar() {\\n doSomethingOld();\\n}\\n\"\n}\n</write_file_params_example>",
|
|
117
|
+
"parameters": {
|
|
118
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
119
|
+
"description": "Create or overwrite a file with the given content.",
|
|
120
|
+
"type": "object",
|
|
121
|
+
"properties": {
|
|
122
|
+
"path": {
|
|
123
|
+
"description": "Path to the file relative to the **project root**",
|
|
124
|
+
"type": "string",
|
|
125
|
+
"minLength": 1
|
|
126
|
+
},
|
|
127
|
+
"instructions": {
|
|
128
|
+
"description": "What the change is intended to do in only one sentence.",
|
|
129
|
+
"type": "string"
|
|
130
|
+
},
|
|
131
|
+
"content": {
|
|
132
|
+
"description": "Complete file content to write to the file.",
|
|
133
|
+
"type": "string"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"required": [
|
|
137
|
+
"path",
|
|
138
|
+
"instructions",
|
|
139
|
+
"content"
|
|
140
|
+
],
|
|
141
|
+
"additionalProperties": false
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"type": "function",
|
|
147
|
+
"function": {
|
|
148
|
+
"name": "run_terminal_command",
|
|
149
|
+
"description": "Stick to these use cases:\n1. Typechecking the project or running build (e.g., \"npm run build\"). Reading the output can help you edit code to fix build errors. If possible, use an option that performs checks but doesn't emit files, e.g. `tsc --noEmit`.\n2. Running tests (e.g., \"npm test\"). Reading the output can help you edit code to fix failing tests. Or, you could write new unit tests and then run them.\n3. Moving, renaming, or deleting files and directories. These actions can be vital for refactoring requests. Use `mv` or `rm` (commands run in bash on every OS, including Windows — do not use `move`/`del`).\n\nMost likely, you should ask for permission for any other type of command you want to run. If asking for permission, show the user the command you want to run using ``` tags and *do not* use the tool call format, e.g.:\n```bash\ngit branch -D foo\n```\n\nDO NOT do any of the following:\n1. Run commands that can modify files outside of the project directory, install packages globally, install virtual environments, or have significant side effects outside of the project directory, unless you have explicit permission from the user. Treat anything outside of the project directory as read-only.\n2. Run `git push` because it can break production (!) if the user was not expecting it. Don't run `git commit`, `git rebase`, or related commands unless you get explicit permission. If a user asks to commit changes, you can do so, but you should not invoke any further git commands beyond the git commit command.\n3. Run scripts without asking. Especially don't run scripts that could run against the production environment or have permanent effects without explicit permission from the user.\n4. Be careful with any command that has big or irreversible effects. Anything that touches a production environment, servers, the database, or other systems that could be affected by a command should be run with explicit permission from the user.\n5. Use the run_terminal_command tool to create or edit files. Do not use `cat` or `echo` to create or edit files. You should instead use other tools for creating or editing files.\n6. Use the wrong package manager for the project. For example, if the project uses `pnpm` or `bun` or `yarn`, you should not use `npm`. Similarly not everyone uses `pip` for python, etc.\n\nDo:\n- If there's an opportunity to use \"-y\" or \"--yes\" flags, use them. Any command that prompts for confirmation will hang if you don't use the flags.\n\nNotes:\n- If the user references a specific file, it could be either from their cwd or from the project root. You **must** determine which they are referring to (either infer or ask). Then, you must specify the path relative to the project root (or use the cwd parameter)\n- Commands can succeed without giving any output, e.g. if no type errors were found.\n\n\n### Using git to commit changes\n\nWhen the user requests a new git commit, please follow these steps closely:\n\n1. **Run two run_terminal_command tool calls:**\n - Run `git diff` to review both staged and unstaged modifications.\n - Run `git log` to check recent commit messages, ensuring consistency with this repository's style.\n\n2. **Select relevant files to include in the commit:**\n Use the git context established at the start of this conversation to decide which files are pertinent to the changes. Stage any new untracked files that are relevant, but avoid committing previously modified files (from the beginning of the conversation) unless they directly relate to this commit.\n\n3. **Analyze the staged changes and compose a commit message:**\n Enclose your analysis in <commit_analysis> tags. Within these tags, you should:\n - Note which files have been altered or added.\n - Categorize the nature of the changes (e.g., new feature, fix, refactor, documentation, etc.).\n - Consider the purpose or motivation behind the alterations.\n - Refrain from using tools to inspect code beyond what is presented in the git context.\n - Evaluate the overall impact on the project.\n - Check for sensitive details that should not be committed.\n - Draft a concise, one- to two-sentence commit message focusing on the “why” rather than the “what.”\n - Use precise, straightforward language that accurately represents the changes.\n - Ensure the message provides clarity—avoid generic or vague terms like “Update” or “Fix” without context.\n - Revisit your draft to confirm it truly reflects the changes and their intention.\n\n4. **Create the commit, ending with this specific footer:**\n ```\n Generated with Codebuff 🤖\n Co-Authored-By: Codebuff <noreply@codebuff.com>\n ```\n Commands run in bash on every OS (Git Bash on Windows), so always use HEREDOC syntax to format the message:\n ```\n git commit -m \"$(cat <<'EOF'\n Your commit message here.\n\n 🤖 Generated with Codebuff\n Co-Authored-By: Codebuff <noreply@codebuff.com>\n EOF\n )\"\n ```\n\n**Important details**\n\n- When feasible, use a single `git commit -am` command to add and commit together, but do not accidentally stage unrelated files.\n- Never alter the git config.\n- Do not push to the remote repository.\n- Avoid using interactive flags (e.g., `-i`) that require unsupported interactive input.\n- Do not create an empty commit if there are no changes.\n- Make sure your commit message is concise yet descriptive, focusing on the intention behind the changes rather than merely describing them.\n\n\nExample:\n<run_terminal_command_params_example>\n{\n \"command\": \"echo \\\"hello world\\\"\"\n}\n</run_terminal_command_params_example>\n\n<run_terminal_command_params_example>\n{\n \"command\": \"git commit -m \\\"Your commit message here.\\n\\n🤖 Generated with Codebuff\\nCo-Authored-By: Codebuff <noreply@codebuff.com>\\\"\"\n}\n</run_terminal_command_params_example>",
|
|
150
|
+
"parameters": {
|
|
151
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
152
|
+
"description": "Execute a CLI command from the **project root** (different from the user's cwd).",
|
|
153
|
+
"type": "object",
|
|
154
|
+
"properties": {
|
|
155
|
+
"command": {
|
|
156
|
+
"description": "CLI command. Always executed with bash (Git Bash on Windows), so use POSIX syntax on every OS: `mv`/`rm`, `/dev/null`, heredocs. Never use cmd.exe syntax like `del`, `move`, or `> nul` — on Windows `> nul` creates a literal file named \"nul\" that is very hard to delete.",
|
|
157
|
+
"type": "string",
|
|
158
|
+
"minLength": 1
|
|
159
|
+
},
|
|
160
|
+
"process_type": {
|
|
161
|
+
"description": "Either SYNC (waits, returns output) or BACKGROUND (runs in background). Default SYNC",
|
|
162
|
+
"default": "SYNC",
|
|
163
|
+
"type": "string",
|
|
164
|
+
"enum": [
|
|
165
|
+
"SYNC",
|
|
166
|
+
"BACKGROUND"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"cwd": {
|
|
170
|
+
"description": "The working directory to run the command in. Default is the project root.",
|
|
171
|
+
"type": "string"
|
|
172
|
+
},
|
|
173
|
+
"timeout_seconds": {
|
|
174
|
+
"description": "How long to wait, in seconds. Default 30, which is right for almost everything — omit this field unless the command genuinely runs longer. Budget for the command you are actually running (a typecheck or test run is tens of seconds, not minutes); an over-long value does not make a command safer, it just means you wait that long when something hangs. Values above 600 (10 minutes) are clamped. Set to -1 to wait indefinitely, for genuinely open-ended commands only. Does not apply for BACKGROUND commands — use those for long-running processes instead.",
|
|
175
|
+
"default": 30,
|
|
176
|
+
"type": "number"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": [
|
|
180
|
+
"command"
|
|
181
|
+
],
|
|
182
|
+
"additionalProperties": false
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"type": "function",
|
|
188
|
+
"function": {
|
|
189
|
+
"name": "code_search",
|
|
190
|
+
"description": "Purpose: Search through code files to find files with specific text patterns, function names, variable names, and more.\n\nMatches are returned with their line numbers, so in a large file you can search first and then read a window around a match with read_files { path, offset, limit } instead of reading the whole file.\n\nUse cases:\n1. Finding all references to a function, class, or variable name across the codebase\n2. Searching for specific code patterns or implementations\n3. Looking up where certain strings or text appear\n4. Finding files that contain specific imports or dependencies\n5. Locating configuration settings or environment variables\n\nThe pattern supports regular expressions and will search recursively through all files in the project by default. Some tips:\n- Be as constraining in the pattern as possible to limit the number of files returned, e.g. if searching for the definition of a function, use \"(function foo|const foo)\" or \"def foo\" instead of merely \"foo\".\n- Use Rust-style regex, not grep-style, PCRE, RE2 or JavaScript regex - you must always escape special characters like { and }\n- Be as constraining as possible to limit results, e.g. use \"(function foo|const foo)\" or \"def foo\" instead of merely \"foo\"\n- Add context to your search with surrounding terms (e.g., \"function handleAuth\" rather than just \"handleAuth\")\n- Use word boundaries (\\b) to match whole words only\n- Use the cwd parameter to narrow your search to specific directories\n- For case-sensitive searches like constants (e.g., ERROR vs error), omit the \"-i\" flag\n- Searches file content and filenames\n- Automatically ignores binary files, hidden files, and files in .gitignore\n\n\nAdvanced ripgrep flags (use the flags parameter):\n\n- Case sensitivity: \"-i\" for case-insensitive search\n- File type filtering: \"-t ts -t js\" (TypeScript and JavaScript), \"-t py\" (Python), etc.\n- Exclude file types: \"--type-not py\" to exclude Python files\n- Context lines: \"-A 3\" (3 lines after), \"-B 2\" (2 lines before), \"-C 2\" (2 lines before and after)\n- Line numbers: \"-n\" to show line numbers\n- Count matches: \"-c\" to count matches per file\n- Only filenames: \"-l\" to show only filenames with matches\n- Invert match: \"-v\" to show lines that don't match\n- Word boundaries: \"-w\" to match whole words only\n- Fixed strings: \"-F\" to treat pattern as literal string (not regex)\n\nNote: Do not use the end_turn tool after this tool! You will want to see the output of this tool before ending your turn.\n\nRESULT LIMITING:\n\n- The maxResults parameter limits the number of results shown per file (default: 15)\n- There is also a global limit of 250 total results across all files\n- These limits allow you to see results across multiple files without being overwhelmed by matches in a single file\n- If a file has more matches than maxResults, you'll see a truncation notice indicating how many results were found\n- If the global limit is reached, remaining files will be skipped\n\nExamples:\n<code_search_params_example>\n{\n \"pattern\": \"foo\"\n}\n</code_search_params_example>\n<code_search_params_example>\n{\n \"pattern\": \"foo\\\\.bar = 1\\\\.0\"\n}\n</code_search_params_example>\n<code_search_params_example>\n{\n \"pattern\": \"import.*foo\",\n \"cwd\": \"src\"\n}\n</code_search_params_example>\n<code_search_params_example>\n{\n \"pattern\": \"function.*authenticate\",\n \"flags\": \"-i -t ts -t js\"\n}\n</code_search_params_example>\n<code_search_params_example>\n{\n \"pattern\": \"TODO\",\n \"flags\": \"-n --type-not py\"\n}\n</code_search_params_example>\n<code_search_params_example>\n{\n \"pattern\": \"getUserData\",\n \"maxResults\": 10\n}\n</code_search_params_example>",
|
|
191
|
+
"parameters": {
|
|
192
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
193
|
+
"description": "Search for string patterns in the project's files. This tool uses ripgrep (rg), a fast line-oriented search tool.",
|
|
194
|
+
"type": "object",
|
|
195
|
+
"properties": {
|
|
196
|
+
"pattern": {
|
|
197
|
+
"description": "The pattern to search for.",
|
|
198
|
+
"type": "string",
|
|
199
|
+
"minLength": 1
|
|
200
|
+
},
|
|
201
|
+
"flags": {
|
|
202
|
+
"description": "Optional ripgrep flags to customize the search (e.g., \"-i\" for case-insensitive, \"-g *.ts -g *.js\" for TypeScript and JavaScript files only, \"-g !*.test.ts\" to exclude Typescript test files, \"-A 3\" for 3 lines after match, \"-B 2\" for 2 lines before match).",
|
|
203
|
+
"type": "string"
|
|
204
|
+
},
|
|
205
|
+
"cwd": {
|
|
206
|
+
"description": "Optional working directory to search within, relative to the project root. Defaults to searching the entire project.",
|
|
207
|
+
"type": "string"
|
|
208
|
+
},
|
|
209
|
+
"maxResults": {
|
|
210
|
+
"description": "Maximum number of results to return per file. Defaults to 15. There is also a global limit of 250 results across all files.",
|
|
211
|
+
"default": 15,
|
|
212
|
+
"type": "integer",
|
|
213
|
+
"exclusiveMinimum": 0,
|
|
214
|
+
"maximum": 9007199254740991
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"required": [
|
|
218
|
+
"pattern"
|
|
219
|
+
],
|
|
220
|
+
"additionalProperties": false
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"type": "function",
|
|
226
|
+
"function": {
|
|
227
|
+
"name": "glob",
|
|
228
|
+
"description": "Example:\n<glob_params_example>\n{\n \"pattern\": \"**/*.test.ts\"\n}\n</glob_params_example>\n\nPurpose: Search for files matching a glob pattern to discover files by name patterns rather than content.\nUse cases:\n- Find all files with a specific extension (e.g., \"*.js\", \"*.test.ts\")\n- Locate files in specific directories (e.g., \"src/**/*.ts\")\n- Find files with specific naming patterns (e.g., \"**/test_*.go\", \"**/*-config.json\")\n- Discover test files, configuration files, or other files with predictable naming\n\nGlob patterns support:\n- * matches any characters except /\n- ** matches any characters including /\n- ? matches a single character\n- [abc] matches one of the characters in brackets\n- {a,b} matches one of the comma-separated patterns\n\nThis tool is fast and works well for discovering files by name patterns.",
|
|
229
|
+
"parameters": {
|
|
230
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
231
|
+
"description": "Search for files matching a glob pattern. Returns matching file paths sorted by modification time.",
|
|
232
|
+
"type": "object",
|
|
233
|
+
"properties": {
|
|
234
|
+
"pattern": {
|
|
235
|
+
"description": "Glob pattern to match files against (e.g., *.js, src/glob/*.ts, glob/test/glob/*.go).",
|
|
236
|
+
"type": "string",
|
|
237
|
+
"minLength": 1
|
|
238
|
+
},
|
|
239
|
+
"cwd": {
|
|
240
|
+
"description": "Optional working directory to search within, relative to project root. If not provided, searches from project root.",
|
|
241
|
+
"type": "string"
|
|
242
|
+
},
|
|
243
|
+
"max_results": {
|
|
244
|
+
"description": "Maximum number of matching paths to return.",
|
|
245
|
+
"type": "integer",
|
|
246
|
+
"exclusiveMinimum": 0,
|
|
247
|
+
"maximum": 9007199254740991
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"required": [
|
|
251
|
+
"pattern"
|
|
252
|
+
],
|
|
253
|
+
"additionalProperties": false
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"type": "function",
|
|
259
|
+
"function": {
|
|
260
|
+
"name": "list_directory",
|
|
261
|
+
"description": "Lists all files and directories in the specified path. Useful for exploring directory structure and finding files.\n\nExample:\n<list_directory_params_example>\n{\n \"path\": \"src/components\"\n}\n</list_directory_params_example>\n\n<list_directory_params_example>\n{\n \"path\": \".\"\n}\n</list_directory_params_example>",
|
|
262
|
+
"parameters": {
|
|
263
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
264
|
+
"description": "List files and directories in the specified path. Returns separate arrays of file names and directory names.",
|
|
265
|
+
"type": "object",
|
|
266
|
+
"properties": {
|
|
267
|
+
"path": {
|
|
268
|
+
"description": "Directory path to list, relative to the project root.",
|
|
269
|
+
"type": "string"
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
"required": [
|
|
273
|
+
"path"
|
|
274
|
+
],
|
|
275
|
+
"additionalProperties": false
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"type": "function",
|
|
281
|
+
"function": {
|
|
282
|
+
"name": "write_todos",
|
|
283
|
+
"description": "Use this tool to track your objectives through an ordered step-by-step plan. Call this tool after you have gathered context on the user's request to plan out the implementation steps for the user's request.\n\nAfter completing each todo step, call this tool again to update the list and mark that task as completed. Note that each time you call this tool, rewrite ALL todos with their current status.\n\nUse this tool frequently as you work through tasks to update the list of todos with their current status. Doing this is extremely useful because it helps you stay on track and complete all the requirements of the user's request. It also helps inform the user of your plans and the current progress, which they want to know at all times.\n\nExample:\n<write_todos_params_example>\n{\n \"todos\": [\n {\n \"task\": \"Create new implementation in foo.ts\",\n \"completed\": true\n },\n {\n \"task\": \"Update bar.ts to use the new implementation\",\n \"completed\": false\n },\n {\n \"task\": \"Write tests for the new implementation\",\n \"completed\": false\n },\n {\n \"task\": \"Run the tests to verify the new implementation\",\n \"completed\": false\n }\n ]\n}\n</write_todos_params_example>",
|
|
284
|
+
"parameters": {
|
|
285
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
286
|
+
"description": "Write a todo list to track tasks for multi-step implementations. Use this frequently to maintain an updated step-by-step plan.",
|
|
287
|
+
"type": "object",
|
|
288
|
+
"properties": {
|
|
289
|
+
"todos": {
|
|
290
|
+
"description": "List of todos with their completion status. Add ALL of the applicable tasks to the list, so you don't forget to do anything. Try to order the todos the same way you will complete them. Do not mark todos as completed if you have not completed them yet!",
|
|
291
|
+
"type": "array",
|
|
292
|
+
"items": {
|
|
293
|
+
"type": "object",
|
|
294
|
+
"properties": {
|
|
295
|
+
"task": {
|
|
296
|
+
"description": "Description of the task",
|
|
297
|
+
"type": "string"
|
|
298
|
+
},
|
|
299
|
+
"completed": {
|
|
300
|
+
"description": "Whether the task is completed",
|
|
301
|
+
"type": "boolean"
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"required": [
|
|
305
|
+
"task",
|
|
306
|
+
"completed"
|
|
307
|
+
],
|
|
308
|
+
"additionalProperties": false
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"required": [
|
|
313
|
+
"todos"
|
|
314
|
+
],
|
|
315
|
+
"additionalProperties": false
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"type": "function",
|
|
321
|
+
"function": {
|
|
322
|
+
"name": "run_file_change_hooks",
|
|
323
|
+
"description": "Purpose: Trigger client-configured file change hooks for the specified files. This tool allows the backend to request the client to run its configured file change hooks (like tests, linting, type checking) after file changes have been applied.\n\nUse cases:\n- After making code changes, trigger the relevant tests and checks\n- Ensure code quality by running configured linters and type checkers\n- Validate that changes don't break the build\n\nThe client will run only the hooks whose filePattern matches the provided files.\n\nExample:\n<run_file_change_hooks_params_example>\n{\n \"files\": [\n \"src/components/Button.tsx\",\n \"src/utils/helpers.ts\"\n ]\n}\n</run_file_change_hooks_params_example>",
|
|
324
|
+
"parameters": {
|
|
325
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
326
|
+
"type": "object",
|
|
327
|
+
"properties": {
|
|
328
|
+
"files": {
|
|
329
|
+
"description": "List of file paths that were changed and should trigger file change hooks",
|
|
330
|
+
"type": "array",
|
|
331
|
+
"items": {
|
|
332
|
+
"type": "string"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"required": [
|
|
337
|
+
"files"
|
|
338
|
+
],
|
|
339
|
+
"additionalProperties": false
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"type": "function",
|
|
345
|
+
"function": {
|
|
346
|
+
"name": "end_turn",
|
|
347
|
+
"description": "Only use this tool to hand control back to the user.\n\n- When to use: after you have completed a meaningful chunk of work and you are either (a) fully done, or (b) explicitly waiting for the user's next message.\n- Do NOT use: as a stop token mid-work, to pause between tool calls, to wait for tool results, or to \"check in\" unnecessarily.\n- Before calling: finish all pending steps, resolve tool results, and include any outputs the user needs to review.\n- Effect: Signals the UI to wait for the user's reply; any pending tool results will be ignored.\n\n*INCORRECT USAGE*:\n<some_tool_that_produces_results_params_example>\n{\n \"query\": \"some example search term\"\n}\n</some_tool_that_produces_results_params_example>\n\n<end_turn_params_example>\n{}\n</end_turn_params_example>\n\n*CORRECT USAGE*:\nAll done! Would you like some more help with xyz?\n\n<end_turn_params_example>\n{}\n</end_turn_params_example>",
|
|
348
|
+
"parameters": {
|
|
349
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
350
|
+
"description": "End your turn, regardless of any new tool results that might be coming. This will allow the user to type another prompt.",
|
|
351
|
+
"type": "object",
|
|
352
|
+
"properties": {},
|
|
353
|
+
"additionalProperties": false
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"type": "function",
|
|
359
|
+
"function": {
|
|
360
|
+
"name": "web_search",
|
|
361
|
+
"description": "Purpose: Search the web for current, up-to-date information on any topic. This tool uses Serper's Google Search API to find relevant content from across the internet.\n\nUse cases:\n- Finding current information about technologies, libraries, or frameworks\n- Researching best practices and solutions\n- Getting up-to-date news or documentation\n- Finding examples and tutorials\n- Checking current status of services or APIs\n\nThe tool will return JSON search results with titles, URLs, content snippets, and other available SERP fields such as answer boxes or related questions.\n\nExample:\n<web_search_params_example>\n{\n \"query\": \"Next.js 15 new features\",\n \"depth\": \"standard\"\n}\n</web_search_params_example>\n\n<web_search_params_example>\n{\n \"query\": \"React Server Components tutorial\",\n \"depth\": \"deep\"\n}\n</web_search_params_example>",
|
|
362
|
+
"parameters": {
|
|
363
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
364
|
+
"description": "Search the web for current information using Serper API.",
|
|
365
|
+
"type": "object",
|
|
366
|
+
"properties": {
|
|
367
|
+
"query": {
|
|
368
|
+
"description": "The search query to find relevant web content",
|
|
369
|
+
"type": "string",
|
|
370
|
+
"minLength": 1
|
|
371
|
+
},
|
|
372
|
+
"depth": {
|
|
373
|
+
"description": "Search depth - 'standard' for quick results, 'deep' for more comprehensive search. Default is 'standard'.",
|
|
374
|
+
"default": "standard",
|
|
375
|
+
"type": "string",
|
|
376
|
+
"enum": [
|
|
377
|
+
"standard",
|
|
378
|
+
"deep"
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"required": [
|
|
383
|
+
"query"
|
|
384
|
+
],
|
|
385
|
+
"additionalProperties": false
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"type": "function",
|
|
391
|
+
"function": {
|
|
392
|
+
"name": "read_url",
|
|
393
|
+
"description": "Purpose: Fetch a URL returned by web_search and extract the readable page text so you can answer with source-backed evidence.\n\nUse this after web_search when snippets are not enough. Prefer authoritative, relevant pages from the search results. The tool follows redirects, extracts titles and metadata, strips scripts/styles/navigation boilerplate from HTML, and returns normalized readable text.\n\nDo not use run_terminal_command with curl just to inspect web pages; use read_url instead. If read_url reports unsupported content or extraction failure, then choose a different search result or explain the limitation.\n\nExample:\n<read_url_params_example>\n{\n \"url\": \"https://react.dev/reference/react/useActionState\",\n \"max_chars\": 12000\n}\n</read_url_params_example>",
|
|
394
|
+
"parameters": {
|
|
395
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
396
|
+
"description": "Fetch a URL and extract readable text from the page.",
|
|
397
|
+
"type": "object",
|
|
398
|
+
"properties": {
|
|
399
|
+
"url": {
|
|
400
|
+
"description": "The full http:// or https:// URL to fetch and extract readable text from.",
|
|
401
|
+
"type": "string",
|
|
402
|
+
"format": "uri"
|
|
403
|
+
},
|
|
404
|
+
"max_chars": {
|
|
405
|
+
"description": "Maximum number of extracted text characters to return. Defaults to 20000.",
|
|
406
|
+
"default": 20000,
|
|
407
|
+
"type": "integer",
|
|
408
|
+
"minimum": 1000,
|
|
409
|
+
"maximum": 50000
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"required": [
|
|
413
|
+
"url"
|
|
414
|
+
],
|
|
415
|
+
"additionalProperties": false
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"type": "function",
|
|
421
|
+
"function": {
|
|
422
|
+
"name": "report_project_profile",
|
|
423
|
+
"description": "Internal tool. Call it only when a message explicitly asks you to report the project profile. Never call it otherwise, and never mention it to the user.",
|
|
424
|
+
"parameters": {
|
|
425
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
426
|
+
"description": "Report what kind of project this is and what it is built with.",
|
|
427
|
+
"type": "object",
|
|
428
|
+
"properties": {
|
|
429
|
+
"status": {
|
|
430
|
+
"description": "unchanged: the current profile is correct. updated: send the new profile. not_enough_context: you have not seen enough of the project yet.",
|
|
431
|
+
"type": "string",
|
|
432
|
+
"enum": [
|
|
433
|
+
"unchanged",
|
|
434
|
+
"updated",
|
|
435
|
+
"not_enough_context"
|
|
436
|
+
]
|
|
437
|
+
},
|
|
438
|
+
"app_kinds": {
|
|
439
|
+
"description": "Required when status is updated.",
|
|
440
|
+
"type": "array",
|
|
441
|
+
"items": {
|
|
442
|
+
"type": "string",
|
|
443
|
+
"enum": [
|
|
444
|
+
"Web app",
|
|
445
|
+
"Mobile app",
|
|
446
|
+
"Desktop app",
|
|
447
|
+
"Backend / API",
|
|
448
|
+
"CLI tool",
|
|
449
|
+
"Library / package",
|
|
450
|
+
"Game",
|
|
451
|
+
"Data / ML",
|
|
452
|
+
"Other"
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
"technologies": {
|
|
457
|
+
"description": "Required when status is updated. The complete list; it replaces the old one.",
|
|
458
|
+
"type": "array",
|
|
459
|
+
"items": {
|
|
460
|
+
"type": "string"
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"required": [
|
|
465
|
+
"status"
|
|
466
|
+
],
|
|
467
|
+
"additionalProperties": false
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
"type": "function",
|
|
473
|
+
"function": {
|
|
474
|
+
"name": "suggest_prompts",
|
|
475
|
+
"description": "Propose follow-up prompts, rendered inline as clickable cards at this exact point. Call this before ending almost every substantive turn — offer two to four follow-ups, including bold ideas that branch beyond the immediate change, not just the obvious next step. Introduce each idea in a new prose paragraph immediately before the call, and start later prose in another paragraph. Usually pass one prompt, calling this tool again for each distinct idea; group only alternatives or closely related options. Merely rendering a prompt does not run it. Do not restate your answer here. Keep each prompt short and goal-oriented — one sentence naming the outcome, not the files, steps, or design decisions — so the agent that receives it is free to choose the approach. It must still stand alone when clicked. Give each a short label.",
|
|
476
|
+
"parameters": {
|
|
477
|
+
"type": "object",
|
|
478
|
+
"properties": {
|
|
479
|
+
"prompts": {
|
|
480
|
+
"type": "array",
|
|
481
|
+
"items": {
|
|
482
|
+
"type": "object",
|
|
483
|
+
"properties": {
|
|
484
|
+
"prompt": {
|
|
485
|
+
"type": "string"
|
|
486
|
+
},
|
|
487
|
+
"label": {
|
|
488
|
+
"type": "string"
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
"required": [
|
|
492
|
+
"prompt"
|
|
493
|
+
]
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
"required": [
|
|
498
|
+
"prompts"
|
|
499
|
+
]
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"type": "function",
|
|
505
|
+
"function": {
|
|
506
|
+
"name": "ask_questions",
|
|
507
|
+
"description": "Ask the user one or more structured questions and wait for their answers. Each question shows its options as clickable choices plus a free-text field, so use it whenever a real decision is the user’s to make — choosing between approaches, clarifying an ambiguous request, confirming something consequential — instead of guessing or asking in prose. Give each question a short header and 2–4 concrete options (label + one-line description), recommended option first with \"(Recommended)\" in its label; never add an \"Other\" option. The turn pauses until the user answers or skips.",
|
|
508
|
+
"parameters": {
|
|
509
|
+
"type": "object",
|
|
510
|
+
"properties": {
|
|
511
|
+
"questions": {
|
|
512
|
+
"minItems": 1,
|
|
513
|
+
"type": "array",
|
|
514
|
+
"items": {
|
|
515
|
+
"type": "object",
|
|
516
|
+
"properties": {
|
|
517
|
+
"question": {
|
|
518
|
+
"type": "string",
|
|
519
|
+
"minLength": 1
|
|
520
|
+
},
|
|
521
|
+
"header": {
|
|
522
|
+
"type": "string"
|
|
523
|
+
},
|
|
524
|
+
"options": {
|
|
525
|
+
"type": "array",
|
|
526
|
+
"items": {
|
|
527
|
+
"type": "object",
|
|
528
|
+
"properties": {
|
|
529
|
+
"label": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"minLength": 1
|
|
532
|
+
},
|
|
533
|
+
"description": {
|
|
534
|
+
"type": "string"
|
|
535
|
+
}
|
|
536
|
+
},
|
|
537
|
+
"required": [
|
|
538
|
+
"label"
|
|
539
|
+
]
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
"multiSelect": {
|
|
543
|
+
"type": "boolean"
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"required": [
|
|
547
|
+
"question"
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"required": [
|
|
553
|
+
"questions"
|
|
554
|
+
]
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"type": "function",
|
|
560
|
+
"function": {
|
|
561
|
+
"name": "read_thread_context",
|
|
562
|
+
"description": "Read a bounded, persisted transcript excerpt and workspace/delivery metadata from another thread in this project. The user must explicitly reference the thread in the current prompt with an @ thread mention; pass the full threadId from the prompt's resolved thread references. This never returns provider session state or an in-progress response. Defaults to the latest 20 usable messages (24,000 text characters total; 8,000 per message). This is only a starting excerpt: when earlier context matters, search the ENTIRE saved conversation with query or follow nextBeforeSeq with beforeSeq. For overall background, also inspect the opening exchange using aroundSeq: firstMessageSeq. Use aroundSeq to read a search hit with neighboring messages. Read clipped text with messageSeq and offset (nextOffset continues the message; 0 starts it). Do not conclude that an earlier decision is absent from only the recent page. Tool calls/results, reasoning and attachment contents are omitted.",
|
|
563
|
+
"parameters": {
|
|
564
|
+
"type": "object",
|
|
565
|
+
"properties": {
|
|
566
|
+
"threadId": {
|
|
567
|
+
"type": "string",
|
|
568
|
+
"minLength": 1
|
|
569
|
+
},
|
|
570
|
+
"beforeSeq": {
|
|
571
|
+
"description": "Read messages older than this exclusive message ID. Use nextBeforeSeq from a previous page; also works with query.",
|
|
572
|
+
"type": "integer",
|
|
573
|
+
"exclusiveMinimum": 0,
|
|
574
|
+
"maximum": 9007199254740991
|
|
575
|
+
},
|
|
576
|
+
"query": {
|
|
577
|
+
"description": "Case-insensitive literal text search (maximum 200 characters) across the entire persisted conversation and attachment names. Results include excerpts around matches.",
|
|
578
|
+
"type": "string",
|
|
579
|
+
"minLength": 1
|
|
580
|
+
},
|
|
581
|
+
"aroundSeq": {
|
|
582
|
+
"description": "Read a search hit in context: this message and up to two usable messages on either side. Use alone.",
|
|
583
|
+
"type": "integer",
|
|
584
|
+
"exclusiveMinimum": 0,
|
|
585
|
+
"maximum": 9007199254740991
|
|
586
|
+
},
|
|
587
|
+
"messageSeq": {
|
|
588
|
+
"description": "Read one message by its ID, including text clipped in an earlier excerpt. Use alone or with offset.",
|
|
589
|
+
"type": "integer",
|
|
590
|
+
"exclusiveMinimum": 0,
|
|
591
|
+
"maximum": 9007199254740991
|
|
592
|
+
},
|
|
593
|
+
"offset": {
|
|
594
|
+
"description": "Text offset for messageSeq. Use the returned nextOffset to continue a long message.",
|
|
595
|
+
"type": "integer",
|
|
596
|
+
"minimum": 0,
|
|
597
|
+
"maximum": 9007199254740991
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
"required": [
|
|
601
|
+
"threadId"
|
|
602
|
+
]
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
"type": "function",
|
|
608
|
+
"function": {
|
|
609
|
+
"name": "request_elevation",
|
|
610
|
+
"description": "Request explicit user approval to run one command with operating-system administrator privileges. The app shows the exact command and reason, then invokes the native OS elevation prompt only if approved. Never include sudo/doas/pkexec in the command.",
|
|
611
|
+
"parameters": {
|
|
612
|
+
"type": "object",
|
|
613
|
+
"properties": {
|
|
614
|
+
"command": {
|
|
615
|
+
"type": "string",
|
|
616
|
+
"minLength": 1
|
|
617
|
+
},
|
|
618
|
+
"reason": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"minLength": 1
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"required": [
|
|
624
|
+
"command",
|
|
625
|
+
"reason"
|
|
626
|
+
]
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"type": "function",
|
|
632
|
+
"function": {
|
|
633
|
+
"name": "register_preview",
|
|
634
|
+
"description": "Show content in this thread's Preview tab. Choose exactly one mode: (1) pass `url` and `pid` for a running dev server, after it answers HTTP; or (2) pass `htmlPath` for a complete local .html/.htm file inside this thread's workspace, which the app serves safely without a separate process. Dev-server URLs must be loopback addresses. Set `replace: true` only when intentionally replacing the thread's current live preview; this stops its registered server when applicable. Otherwise a live-preview conflict is rejected. Registering the live preview again re-shows it.",
|
|
635
|
+
"parameters": {
|
|
636
|
+
"type": "object",
|
|
637
|
+
"properties": {
|
|
638
|
+
"url": {
|
|
639
|
+
"type": "string"
|
|
640
|
+
},
|
|
641
|
+
"pid": {
|
|
642
|
+
"type": "integer",
|
|
643
|
+
"minimum": -9007199254740991,
|
|
644
|
+
"maximum": 9007199254740991
|
|
645
|
+
},
|
|
646
|
+
"htmlPath": {
|
|
647
|
+
"type": "string"
|
|
648
|
+
},
|
|
649
|
+
"replace": {
|
|
650
|
+
"type": "boolean"
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"type": "function",
|
|
658
|
+
"function": {
|
|
659
|
+
"name": "preview_open",
|
|
660
|
+
"description": "Open a Chromium browser tab in this task, showing the same page to the user. Public HTTP(S) URLs and localhost are supported. No dev-server process is required. Returns tab id; pass it to subsequent tools. Reuse navigates the agent’s current tab or the supplied tabId instead of creating another.",
|
|
661
|
+
"parameters": {
|
|
662
|
+
"type": "object",
|
|
663
|
+
"properties": {
|
|
664
|
+
"url": {
|
|
665
|
+
"type": "string"
|
|
666
|
+
},
|
|
667
|
+
"profileId": {
|
|
668
|
+
"type": "string"
|
|
669
|
+
},
|
|
670
|
+
"incognito": {
|
|
671
|
+
"type": "boolean"
|
|
672
|
+
},
|
|
673
|
+
"reuse": {
|
|
674
|
+
"type": "boolean"
|
|
675
|
+
},
|
|
676
|
+
"tabId": {
|
|
677
|
+
"type": "string"
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
"type": "function",
|
|
685
|
+
"function": {
|
|
686
|
+
"name": "preview_status",
|
|
687
|
+
"description": "List this task’s browser tabs and current page state.",
|
|
688
|
+
"parameters": {
|
|
689
|
+
"type": "object",
|
|
690
|
+
"properties": {}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
"type": "function",
|
|
696
|
+
"function": {
|
|
697
|
+
"name": "preview_close",
|
|
698
|
+
"description": "Close one browser tab without stopping its dev server.",
|
|
699
|
+
"parameters": {
|
|
700
|
+
"type": "object",
|
|
701
|
+
"properties": {
|
|
702
|
+
"tabId": {
|
|
703
|
+
"type": "string"
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
"type": "function",
|
|
711
|
+
"function": {
|
|
712
|
+
"name": "preview_press",
|
|
713
|
+
"description": "Press a real browser key, e.g. Enter, Tab, Escape, ArrowDown, Control+a or Meta+a.",
|
|
714
|
+
"parameters": {
|
|
715
|
+
"type": "object",
|
|
716
|
+
"properties": {
|
|
717
|
+
"tabId": {
|
|
718
|
+
"type": "string"
|
|
719
|
+
},
|
|
720
|
+
"key": {
|
|
721
|
+
"type": "string",
|
|
722
|
+
"minLength": 1
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
"required": [
|
|
726
|
+
"key"
|
|
727
|
+
]
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"type": "function",
|
|
733
|
+
"function": {
|
|
734
|
+
"name": "preview_scroll",
|
|
735
|
+
"description": "Scroll the browser with real wheel input; x/y are pixel deltas.",
|
|
736
|
+
"parameters": {
|
|
737
|
+
"type": "object",
|
|
738
|
+
"properties": {
|
|
739
|
+
"tabId": {
|
|
740
|
+
"type": "string"
|
|
741
|
+
},
|
|
742
|
+
"x": {
|
|
743
|
+
"type": "number"
|
|
744
|
+
},
|
|
745
|
+
"y": {
|
|
746
|
+
"type": "number"
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
"type": "function",
|
|
754
|
+
"function": {
|
|
755
|
+
"name": "preview_wait",
|
|
756
|
+
"description": "Wait until all supplied conditions match the page: CSS selector, visible text, URL substring. Bounded and interrupted when the human takes control.",
|
|
757
|
+
"parameters": {
|
|
758
|
+
"type": "object",
|
|
759
|
+
"properties": {
|
|
760
|
+
"tabId": {
|
|
761
|
+
"type": "string"
|
|
762
|
+
},
|
|
763
|
+
"selector": {
|
|
764
|
+
"type": "string"
|
|
765
|
+
},
|
|
766
|
+
"text": {
|
|
767
|
+
"type": "string"
|
|
768
|
+
},
|
|
769
|
+
"urlIncludes": {
|
|
770
|
+
"type": "string"
|
|
771
|
+
},
|
|
772
|
+
"timeoutMs": {
|
|
773
|
+
"type": "integer",
|
|
774
|
+
"minimum": 100,
|
|
775
|
+
"maximum": 60000
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"type": "function",
|
|
783
|
+
"function": {
|
|
784
|
+
"name": "preview_resize",
|
|
785
|
+
"description": "Set the browser viewport in CSS pixels. Set fill:true to fill the panel instead.",
|
|
786
|
+
"parameters": {
|
|
787
|
+
"type": "object",
|
|
788
|
+
"properties": {
|
|
789
|
+
"tabId": {
|
|
790
|
+
"type": "string"
|
|
791
|
+
},
|
|
792
|
+
"width": {
|
|
793
|
+
"type": "integer",
|
|
794
|
+
"minimum": 240,
|
|
795
|
+
"maximum": 3840
|
|
796
|
+
},
|
|
797
|
+
"height": {
|
|
798
|
+
"type": "integer",
|
|
799
|
+
"minimum": 240,
|
|
800
|
+
"maximum": 2160
|
|
801
|
+
},
|
|
802
|
+
"fill": {
|
|
803
|
+
"type": "boolean"
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"type": "function",
|
|
811
|
+
"function": {
|
|
812
|
+
"name": "preview_set_color_scheme",
|
|
813
|
+
"description": "Emulate the page’s light/dark appearance.",
|
|
814
|
+
"parameters": {
|
|
815
|
+
"type": "object",
|
|
816
|
+
"properties": {
|
|
817
|
+
"tabId": {
|
|
818
|
+
"type": "string"
|
|
819
|
+
},
|
|
820
|
+
"colorScheme": {
|
|
821
|
+
"type": "string",
|
|
822
|
+
"enum": [
|
|
823
|
+
"system",
|
|
824
|
+
"light",
|
|
825
|
+
"dark"
|
|
826
|
+
]
|
|
827
|
+
}
|
|
828
|
+
},
|
|
829
|
+
"required": [
|
|
830
|
+
"colorScheme"
|
|
831
|
+
]
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
"type": "function",
|
|
837
|
+
"function": {
|
|
838
|
+
"name": "preview_recording_start",
|
|
839
|
+
"description": "Record this browser tab as a local WebM video (up to five minutes).",
|
|
840
|
+
"parameters": {
|
|
841
|
+
"type": "object",
|
|
842
|
+
"properties": {
|
|
843
|
+
"tabId": {
|
|
844
|
+
"type": "string"
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
{
|
|
851
|
+
"type": "function",
|
|
852
|
+
"function": {
|
|
853
|
+
"name": "preview_recording_stop",
|
|
854
|
+
"description": "Stop recording and return the local video artifact path.",
|
|
855
|
+
"parameters": {
|
|
856
|
+
"type": "object",
|
|
857
|
+
"properties": {
|
|
858
|
+
"tabId": {
|
|
859
|
+
"type": "string"
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"type": "function",
|
|
867
|
+
"function": {
|
|
868
|
+
"name": "preview_snapshot",
|
|
869
|
+
"description": "Read this thread's running preview page as a text accessibility tree. Each interactive node carries a `uid=` handle that preview_click / preview_type accept. Uids expire whenever the page changes (navigation, re-render, or a newer snapshot) — take a fresh snapshot before acting if in doubt. Open a browser with preview_open or register_preview. Omit tabId for the active tab in the desktop app.",
|
|
870
|
+
"parameters": {
|
|
871
|
+
"type": "object",
|
|
872
|
+
"properties": {
|
|
873
|
+
"tabId": {
|
|
874
|
+
"type": "string"
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"type": "function",
|
|
882
|
+
"function": {
|
|
883
|
+
"name": "preview_screenshot",
|
|
884
|
+
"description": "Capture a PNG screenshot of this thread's running preview page. Use it to SEE what the user sees — layout, styling, rendering glitches that no DOM reading reveals. Captures the viewport; fullPage tries for the whole scrollable page but often degrades to the viewport (it needs the page to hold still), so scroll with preview_evaluate to survey a long page.",
|
|
885
|
+
"parameters": {
|
|
886
|
+
"type": "object",
|
|
887
|
+
"properties": {
|
|
888
|
+
"tabId": {
|
|
889
|
+
"type": "string"
|
|
890
|
+
},
|
|
891
|
+
"fullPage": {
|
|
892
|
+
"type": "boolean"
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
"type": "function",
|
|
900
|
+
"function": {
|
|
901
|
+
"name": "preview_click",
|
|
902
|
+
"description": "Click an element in the running preview page, addressed by a `uid` from the latest preview_snapshot, or a Playwright locator (e.g. role=button[name=\"Save\"]). Provide exactly one. Scrolls the element into view first. A stale-uid error means the page changed — re-snapshot and retry with a fresh uid. If the click navigates, this waits for the new page to load and answers `navigated: true` with its url; the DOM is then current, but rendering can lag it briefly, so trust preview_snapshot over an immediate screenshot.",
|
|
903
|
+
"parameters": {
|
|
904
|
+
"type": "object",
|
|
905
|
+
"properties": {
|
|
906
|
+
"tabId": {
|
|
907
|
+
"type": "string"
|
|
908
|
+
},
|
|
909
|
+
"uid": {
|
|
910
|
+
"type": "string"
|
|
911
|
+
},
|
|
912
|
+
"locator": {
|
|
913
|
+
"type": "string"
|
|
914
|
+
},
|
|
915
|
+
"dblClick": {
|
|
916
|
+
"type": "boolean"
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
"type": "function",
|
|
924
|
+
"function": {
|
|
925
|
+
"name": "preview_type",
|
|
926
|
+
"description": "Type text into a browser element using uid from preview_snapshot OR a Playwright locator. Focuses the element, clears its current value by default (clear:false to append), inserts the text through real input events, and optionally presses Enter to submit.",
|
|
927
|
+
"parameters": {
|
|
928
|
+
"type": "object",
|
|
929
|
+
"properties": {
|
|
930
|
+
"tabId": {
|
|
931
|
+
"type": "string"
|
|
932
|
+
},
|
|
933
|
+
"uid": {
|
|
934
|
+
"type": "string"
|
|
935
|
+
},
|
|
936
|
+
"locator": {
|
|
937
|
+
"type": "string"
|
|
938
|
+
},
|
|
939
|
+
"text": {
|
|
940
|
+
"type": "string"
|
|
941
|
+
},
|
|
942
|
+
"clear": {
|
|
943
|
+
"type": "boolean"
|
|
944
|
+
},
|
|
945
|
+
"pressEnter": {
|
|
946
|
+
"type": "boolean"
|
|
947
|
+
}
|
|
948
|
+
},
|
|
949
|
+
"required": [
|
|
950
|
+
"text"
|
|
951
|
+
]
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"type": "function",
|
|
957
|
+
"function": {
|
|
958
|
+
"name": "preview_navigate",
|
|
959
|
+
"description": "Navigate a browser tab: `to` is an HTTP(S) URL, or one of \"reload\", \"back\", \"forward\". Waits briefly for the page to load. All previous snapshot uids become stale after navigating.",
|
|
960
|
+
"parameters": {
|
|
961
|
+
"type": "object",
|
|
962
|
+
"properties": {
|
|
963
|
+
"tabId": {
|
|
964
|
+
"type": "string"
|
|
965
|
+
},
|
|
966
|
+
"to": {
|
|
967
|
+
"type": "string",
|
|
968
|
+
"minLength": 1
|
|
969
|
+
}
|
|
970
|
+
},
|
|
971
|
+
"required": [
|
|
972
|
+
"to"
|
|
973
|
+
]
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"type": "function",
|
|
979
|
+
"function": {
|
|
980
|
+
"name": "preview_evaluate",
|
|
981
|
+
"description": "Evaluate a JavaScript expression in the running preview page and return its JSON-serialized result (promises are awaited). Use it to probe state the snapshot cannot show — computed styles, app store contents, function results. Prefer read-only expressions; use preview_click/preview_type for user-like interaction.",
|
|
982
|
+
"parameters": {
|
|
983
|
+
"type": "object",
|
|
984
|
+
"properties": {
|
|
985
|
+
"tabId": {
|
|
986
|
+
"type": "string"
|
|
987
|
+
},
|
|
988
|
+
"expression": {
|
|
989
|
+
"type": "string",
|
|
990
|
+
"minLength": 1
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
"required": [
|
|
994
|
+
"expression"
|
|
995
|
+
]
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
"type": "function",
|
|
1001
|
+
"function": {
|
|
1002
|
+
"name": "preview_logs",
|
|
1003
|
+
"description": "Read the running preview page's console messages and network requests captured since the preview attached (or since the last clear). Check this after interactions to catch errors, failed requests, and warnings the page produced.",
|
|
1004
|
+
"parameters": {
|
|
1005
|
+
"type": "object",
|
|
1006
|
+
"properties": {
|
|
1007
|
+
"tabId": {
|
|
1008
|
+
"type": "string"
|
|
1009
|
+
},
|
|
1010
|
+
"kind": {
|
|
1011
|
+
"type": "string",
|
|
1012
|
+
"enum": [
|
|
1013
|
+
"console",
|
|
1014
|
+
"network",
|
|
1015
|
+
"all"
|
|
1016
|
+
]
|
|
1017
|
+
},
|
|
1018
|
+
"limit": {
|
|
1019
|
+
"type": "integer",
|
|
1020
|
+
"exclusiveMinimum": 0,
|
|
1021
|
+
"maximum": 9007199254740991
|
|
1022
|
+
},
|
|
1023
|
+
"clear": {
|
|
1024
|
+
"type": "boolean"
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"type": "function",
|
|
1032
|
+
"function": {
|
|
1033
|
+
"name": "browser_check",
|
|
1034
|
+
"description": "Unavailable in this build — use your normal tools (or ask the user to look at the Preview tab) instead.",
|
|
1035
|
+
"parameters": {
|
|
1036
|
+
"type": "object",
|
|
1037
|
+
"properties": {}
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
},
|
|
1041
|
+
{
|
|
1042
|
+
"type": "function",
|
|
1043
|
+
"function": {
|
|
1044
|
+
"name": "write_doc",
|
|
1045
|
+
"description": "Unavailable in this build — write markdown files with your normal file tools instead.",
|
|
1046
|
+
"parameters": {
|
|
1047
|
+
"type": "object",
|
|
1048
|
+
"properties": {
|
|
1049
|
+
"name": {
|
|
1050
|
+
"type": "string"
|
|
1051
|
+
},
|
|
1052
|
+
"content": {
|
|
1053
|
+
"type": "string"
|
|
1054
|
+
},
|
|
1055
|
+
"mode": {
|
|
1056
|
+
"type": "string",
|
|
1057
|
+
"enum": [
|
|
1058
|
+
"append",
|
|
1059
|
+
"replace"
|
|
1060
|
+
]
|
|
1061
|
+
}
|
|
1062
|
+
},
|
|
1063
|
+
"required": [
|
|
1064
|
+
"name",
|
|
1065
|
+
"content"
|
|
1066
|
+
]
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
]
|