@desplega.ai/agent-swarm 1.173.0 → 2.0.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/README.md +1 -1
- package/dist/{acp-adapter-ccm9xrep.js → acp-adapter-sj2g0m84.js} +17 -16
- package/dist/{actions-sgeyv08k.js → actions-fegk44gr.js} +39 -34
- package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-ad8ft89x.js} +8 -7
- package/dist/{app-km9qnv2f.js → app-kfvgbvzy.js} +18 -14
- package/dist/{assistant-5r8tcvvd.js → assistant-z7zdy9ja.js} +40 -35
- package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-5c2z0mbe.js} +10 -9
- package/dist/{boot-reembed-16rv9843.js → boot-reembed-j8xa181e.js} +10 -9
- package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-hnkn3rgt.js} +11 -10
- package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-kwjq4d2z.js} +14 -13
- package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-9vmvpvgd.js} +19 -18
- package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-k9qae05j.js} +7 -5
- package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-q54zx5q2.js} +6 -4
- package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-9jye6cxr.js} +11881 -11472
- package/dist/{cli-94b48jhk.js → cli-03gedhng.js} +16 -14
- package/dist/{cli-1w0vj3gw.js → cli-1e4b6bzh.js} +7 -7
- package/dist/{cli-d603qf86.js → cli-29jc5q7w.js} +10 -8
- package/dist/cli-2m1ktfzz.js +17795 -0
- package/dist/{cli-x119kdba.js → cli-3dj8k4vy.js} +1 -1
- package/dist/{cli-srqq3gc5.js → cli-3fbmmawm.js} +5 -5
- package/dist/{cli-gmdajfw5.js → cli-4jxm2qtz.js} +4987 -1708
- package/dist/{cli-tadfgd0t.js → cli-5hkm7whv.js} +33 -4
- package/dist/{cli-42qhyvwx.js → cli-5t4f29ez.js} +3 -3
- package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
- package/dist/cli-6cvfxs8r.js +47 -0
- package/dist/{cli-0kxf81jj.js → cli-6jyj59nb.js} +2 -2
- package/dist/{cli-w1apjecb.js → cli-6razj6t4.js} +2 -2
- package/dist/{cli-anzdk0z4.js → cli-74ahz61x.js} +2 -2
- package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
- package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
- package/dist/{cli-81r1wjyv.js → cli-9nfx44eh.js} +1 -1
- package/dist/cli-9traj3dn.js +638 -0
- package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
- package/dist/{cli-na2pxe4f.js → cli-apx87jne.js} +2 -2
- package/dist/{cli-rfz2ve55.js → cli-bzszjf2p.js} +2855 -862
- package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
- package/dist/{cli-hsem16hb.js → cli-cgtksawx.js} +7 -4
- package/dist/{cli-db3m6zdt.js → cli-d2qr7aj4.js} +1 -1
- package/dist/{cli-rfs4vddv.js → cli-d5f9ed5c.js} +5 -5
- package/dist/cli-e3g5mbkz.js +776 -0
- package/dist/{cli-7jykv7ef.js → cli-e6mpjhed.js} +1 -1
- package/dist/{cli-7a93cv8c.js → cli-ee9gtz70.js} +98 -23
- package/dist/{cli-3nxdmjrc.js → cli-eejsgvm4.js} +4 -4
- package/dist/{cli-fmhj1ehj.js → cli-ef1hg1wv.js} +470 -51
- package/dist/cli-f527ce74.js +781 -0
- package/dist/{cli-ppy4nnnh.js → cli-f7kr7svz.js} +2 -2
- package/dist/cli-hjwmhcg1.js +10622 -0
- package/dist/{cli-2bw3w47j.js → cli-hnhtk6cj.js} +1 -1
- package/dist/{cli-ywm1azg9.js → cli-hnmhtzvh.js} +6 -4
- package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
- package/dist/{cli-s8z6x4b4.js → cli-j0pfptdp.js} +218 -102
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-5er5gjbm.js → cli-k382tshb.js} +10 -11
- package/dist/{cli-v3zhnxsb.js → cli-k3dp5tpf.js} +2 -2
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-ne7smj1b.js → cli-ke896fcf.js} +10 -10
- package/dist/{cli-xc7p7s3g.js → cli-kt6zqg0e.js} +6 -6
- package/dist/{cli-wrh08zjd.js → cli-m50t4309.js} +5 -18
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-bv2etw2y.js → cli-n3hzg89b.js} +46 -15
- package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
- package/dist/{cli-qm1448f9.js → cli-ne236afy.js} +8 -8
- package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
- package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
- package/dist/{cli-0a7mm3zp.js → cli-q0ke1yww.js} +25 -21
- package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-phcqp1b9.js → cli-r2pnvj8g.js} +2 -2
- package/dist/{cli-jpc4r224.js → cli-r62a35ea.js} +19 -3
- package/dist/{cli-cd0hv9nh.js → cli-ra0xzggj.js} +2 -2
- package/dist/cli-rhs9pz33.js +294 -0
- package/dist/{cli-r4fqfpwf.js → cli-s2sp957d.js} +50 -27
- package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
- package/dist/{cli-6thk4jz3.js → cli-se8w6wny.js} +6 -6
- package/dist/cli-skxvvpap.js +10140 -0
- package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
- package/dist/{cli-0p3enk35.js → cli-tqaazemc.js} +9 -1
- package/dist/{cli-nwrdx840.js → cli-tr4sxp68.js} +3 -3
- package/dist/{cli-r0byd61h.js → cli-tsde1hdr.js} +15 -15
- package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
- package/dist/{cli-6r2f7edk.js → cli-v1yb0rqb.js} +6 -6
- package/dist/{cli-saqyage0.js → cli-vatyhshy.js} +179 -27
- package/dist/{cli-5wpw4rab.js → cli-vdach5a9.js} +5 -5
- package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
- package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
- package/dist/{cli-c3rk1v0x.js → cli-wayw93nt.js} +3 -3
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-9xf7fdtp.js → cli-z5jjpaxw.js} +29 -6
- package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
- package/dist/cli.js +29 -45
- package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-y81sssk0.js} +15 -14
- package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
- package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-8vx4j6a9.js} +15 -14
- package/dist/{commands-z8fq9qna.js → commands-kcpvpcrr.js} +11 -10
- package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
- package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-kwpvj3rf.js} +42 -37
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
- package/dist/{db-yyhqqrbf.js → db-k8ankj20.js} +12 -11
- package/dist/{db-qfpq4bt7.js → db-ww5d7jq3.js} +28 -9
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
- package/dist/{dispatcher-x0x7qfcq.js → dispatcher-e8gq5m68.js} +38 -33
- package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
- package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-3epjm3af.js} +7 -6
- package/dist/{e2b-66xra4az.js → e2b-8ygwhg0f.js} +4 -3
- package/dist/{e2b-xwhyj8cw.js → e2b-swhnpw3n.js} +4 -3
- package/dist/{event-bus-vjtv82gm.js → event-bus-6axnngdj.js} +3 -2
- package/dist/{external-channel-h1fjecwe.js → external-channel-h3359cwn.js} +11 -10
- package/dist/{google-generative-ai-szdxbpqg.js → google-generative-ai-g8db7x0f.js} +4 -2
- package/dist/{google-vertex-qzw3p36d.js → google-vertex-r2692q0r.js} +4 -2
- package/dist/{grok-adapter-e7mr287e.js → grok-adapter-0d4x7gkx.js} +18 -17
- package/dist/{handlers-znb9n7d4.js → handlers-an1gzv21.js} +41 -36
- package/dist/{heartbeat-bm4qkn8d.js → heartbeat-6dakeb61.js} +43 -38
- package/dist/{hook-254r4mza.js → hook-6v6cv6d5.js} +11 -23
- package/dist/{hook-xaa3q80s.js → hook-sa5xye4y.js} +12 -11
- package/dist/{http-3dgrgp8y.js → http-r7f3eky0.js} +1499 -251
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-fx3jqq1e.js → index-7ep4gzdk.js} +38 -33
- package/dist/index-9gw58n4k.js +193 -0
- package/dist/index-9j87mcm8.js +56305 -0
- package/dist/index-bsmcresk.js +79424 -0
- package/dist/index-mh85qhec.js +475 -0
- package/dist/{index-g2byveez.js → index-rmpw9a8q.js} +38 -33
- package/dist/{index-2ybk7khy.js → index-s2wxgzr0.js} +468 -683
- package/dist/{index-bdsqa799.js → index-v1v6n7hg.js} +43 -38
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{index-jd7sejm2.js → index-zk96aq1k.js} +10 -9
- package/dist/{keepalive-6ywhpja1.js → keepalive-be9vwy5h.js} +12 -11
- package/dist/{lead-cw45n21s.js → lead-0861cwrf.js} +61 -56
- package/dist/{maintenance-ss1a1ge9.js → maintenance-mzzgc8bn.js} +10 -9
- package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
- package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-cpdnfwdj.js} +11 -10
- package/dist/{onboard-8hzdhc1k.js → onboard-fh8qs4r3.js} +11 -3
- package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-nm42wwj8.js} +18 -13
- package/dist/{otel-impl-e6mnvc4v.js → otel-impl-x6c1c9g4.js} +242 -868
- package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-9n2ya240.js} +244 -106
- package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-qb0rv0ap.js} +12 -11
- package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-1gzdwbh1.js} +11 -10
- package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-3mraey52.js} +12 -11
- package/dist/{render-v2-907cy6sa.js → render-v2-agpa45zz.js} +18 -14
- package/dist/{resume-42stcaz0.js → resume-x0ydy9s9.js} +25 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-adbc1c10.js → setup-as9ga0d6.js} +2 -2
- package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
- package/dist/{work-objects-wpj8ck95.js → work-objects-y5g1y7ev.js} +41 -36
- package/dist/{worker-bzdra9rf.js → worker-860c3e38.js} +61 -56
- package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
- package/openapi.json +523 -344
- package/package.json +10 -11
- package/src/be/config-refs.ts +60 -0
- package/src/be/db/page-versions.ts +15 -0
- package/src/be/db/runtime.ts +35 -8
- package/src/be/db/skill-name-resolution.ts +36 -0
- package/src/be/db/tasks/read.ts +230 -0
- package/src/be/db/tasks/write.ts +7 -0
- package/src/be/db.ts +52 -7
- package/src/be/migrations/215_swarm_config_export_to_env.sql +34 -0
- package/src/be/migrations/216_task_resolved_effort.sql +5 -0
- package/src/be/migrations/217_chat_sdk_state.sql +104 -0
- package/src/be/model-catalog-store.ts +5 -1
- package/src/be/model-tier-resolution.ts +12 -1
- package/src/be/model-validation.ts +5 -2
- package/src/be/models-catalog.ts +26 -1
- package/src/be/modelsdev-cache.json +198 -63
- package/src/be/modelsdev-cache.ts +9 -1
- package/src/be/script-credential-broker.ts +39 -2
- package/src/be/scripts/run-saved.ts +1 -0
- package/src/be/scripts/typecheck.ts +10 -8
- package/src/be/seed/runner.ts +13 -1
- package/src/be/seed/state-db.ts +5 -0
- package/src/be/seed/types.ts +6 -0
- package/src/be/seed-pricing.ts +19 -2
- package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
- package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
- package/src/be/seed-skills/bundled-files.generated.json +0 -18
- package/src/be/seed-skills/index.ts +104 -3
- package/src/be/swarm-config-guard.ts +52 -0
- package/src/cli.tsx +0 -16
- package/src/commands/onboard/non-interactive.ts +4 -2
- package/src/commands/provider-credentials.ts +52 -6
- package/src/commands/runner.ts +190 -54
- package/src/e2b/env.ts +5 -0
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/extensions/contract.ts +45 -0
- package/src/extensions/dispatcher.ts +7 -0
- package/src/extensions/post-bridge.ts +40 -0
- package/src/github/handlers.ts +11 -4
- package/src/heartbeat/templates.ts +8 -5
- package/src/hooks/hook.ts +0 -26
- package/src/http/all-routes.ts +0 -1
- package/src/http/config.ts +36 -17
- package/src/http/core.ts +4 -0
- package/src/http/index.ts +14 -2
- package/src/http/integrations.ts +88 -1
- package/src/http/mcp.ts +15 -5
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +3 -3
- package/src/http/pages.ts +3 -13
- package/src/http/poll.ts +28 -68
- package/src/http/requested-by.ts +54 -0
- package/src/http/scripts.ts +1 -0
- package/src/http/stats.ts +1 -30
- package/src/http/tasks.ts +61 -5
- package/src/http/utils.ts +14 -0
- package/src/http/webhooks.ts +159 -1
- package/src/http/x.ts +1 -0
- package/src/integrations/chat-sdk/adapters.ts +129 -0
- package/src/integrations/chat-sdk/attachments.ts +232 -0
- package/src/integrations/chat-sdk/background.ts +36 -0
- package/src/integrations/chat-sdk/commands.ts +194 -0
- package/src/integrations/chat-sdk/config.ts +198 -0
- package/src/integrations/chat-sdk/discord-api.ts +63 -0
- package/src/integrations/chat-sdk/discord-gateway.ts +185 -0
- package/src/integrations/chat-sdk/handlers.ts +28 -0
- package/src/integrations/chat-sdk/inbound.ts +426 -0
- package/src/integrations/chat-sdk/limits.ts +48 -0
- package/src/integrations/chat-sdk/logger.ts +81 -0
- package/src/integrations/chat-sdk/outbound.ts +123 -0
- package/src/integrations/chat-sdk/relay.ts +172 -0
- package/src/integrations/chat-sdk/router.ts +169 -0
- package/src/integrations/chat-sdk/runtime.ts +351 -0
- package/src/integrations/chat-sdk/schema.ts +245 -0
- package/src/integrations/chat-sdk/state.ts +243 -0
- package/src/integrations/chat-sdk/status.ts +244 -0
- package/src/integrations/chat-sdk/steering.ts +58 -0
- package/src/integrations/chat-sdk/teams-origin.ts +77 -0
- package/src/integrations/chat-sdk/telegram-api.ts +56 -0
- package/src/integrations/chat-sdk/templates.ts +16 -0
- package/src/integrations/chat-sdk/test-hooks.ts +37 -0
- package/src/integrations/chat-sdk/thread-buffer.ts +100 -0
- package/src/integrations/chat-sdk/typing.ts +65 -0
- package/src/pages/version.ts +4 -5
- package/src/prompts/base-prompt.ts +111 -45
- package/src/providers/acp-target-catalog.ts +6 -0
- package/src/providers/acp-targets.ts +55 -2
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/claude-adapter.ts +1 -1
- package/src/providers/claude-flag-settings.ts +17 -5
- package/src/providers/claude-managed-adapter.ts +1 -1
- package/src/providers/claude-session-events.ts +6 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/providers/opencode-adapter.ts +243 -26
- package/src/providers/opencode-swarm-plugin.ts +31 -0
- package/src/providers/pi-mono-adapter.ts +398 -153
- package/src/providers/pricing-sources.md +33 -2
- package/src/providers/reasoning-effort.ts +27 -0
- package/src/providers/types.ts +6 -2
- package/src/rbac/legacy-policy.ts +8 -2
- package/src/rbac/permissions.ts +21 -0
- package/src/scheduler/scheduler.ts +4 -2
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/sdk-allowlist.ts +8 -6
- package/src/scripts-runtime/swarm-sdk.ts +0 -11
- package/src/scripts-runtime/types/stdlib.d.ts +27 -15
- package/src/scripts-runtime/types/swarm-extension.d.ts +63 -1
- package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -15
- package/src/server.ts +52 -18
- package/src/slack/event-dedup.ts +1 -1
- package/src/tasks/additive-buffer.ts +4 -2
- package/src/tasks/context-key.ts +60 -1
- package/src/tasks/model-pin.ts +67 -0
- package/src/tasks/worker-follow-up.ts +4 -31
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/base-prompt.test.ts +58 -54
- package/src/tests/chat-sdk-commands.test.ts +191 -0
- package/src/tests/chat-sdk-config.test.ts +334 -0
- package/src/tests/chat-sdk-discord-api.test.ts +68 -0
- package/src/tests/chat-sdk-discord-gateway.test.ts +252 -0
- package/src/tests/chat-sdk-discord-webhook.test.ts +126 -0
- package/src/tests/chat-sdk-fields-sync.test.ts +50 -0
- package/src/tests/chat-sdk-harness.ts +146 -0
- package/src/tests/chat-sdk-inbound.test.ts +363 -0
- package/src/tests/chat-sdk-relay.test.ts +470 -0
- package/src/tests/chat-sdk-reload.test.ts +128 -0
- package/src/tests/chat-sdk-shutdown.test.ts +220 -0
- package/src/tests/chat-sdk-slack.test.ts +268 -0
- package/src/tests/chat-sdk-state.test.ts +163 -0
- package/src/tests/chat-sdk-status-route.test.ts +382 -0
- package/src/tests/chat-sdk-teams.test.ts +277 -0
- package/src/tests/chat-sdk-tools.test.ts +520 -0
- package/src/tests/chat-sdk-typing.test.ts +120 -0
- package/src/tests/chat-sdk-webhook-telegram.test.ts +200 -0
- package/src/tests/claude-adapter-binary.test.ts +9 -4
- package/src/tests/claude-flag-settings.test.ts +11 -3
- package/src/tests/claude-managed-adapter.test.ts +1 -1
- package/src/tests/claude-sdk-lifecycle.test.ts +9 -3
- package/src/tests/claude-thinking-tokens.test.ts +57 -0
- package/src/tests/claude-worker-parity.test.ts +2 -7
- package/src/tests/config-env-export-chat-sdk.test.ts +11 -0
- package/src/tests/config-refs.test.ts +66 -0
- package/src/tests/context-key.test.ts +19 -0
- package/src/tests/cors-allowlist.test.ts +25 -0
- package/src/tests/create-page-tool.test.ts +18 -0
- package/src/tests/credential-check.test.ts +139 -0
- package/src/tests/credentials.test.ts +21 -0
- package/src/tests/db-runtime.test.ts +61 -0
- package/src/tests/db-task-read-contract.test.ts +20 -0
- package/src/tests/db-task-write-contract.test.ts +10 -0
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dsh-adapter.test.ts +1 -1
- package/src/tests/enabled-capabilities.test.ts +20 -0
- package/src/tests/entrypoint-api-readiness.test.ts +14 -8
- package/src/tests/entrypoint-config-env-export.test.ts +5 -2
- package/src/tests/entrypoint-export-to-env.test.ts +78 -0
- package/src/tests/explicit-model-validation.test.ts +105 -1
- package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
- package/src/tests/extensions-post-bridge.test.ts +51 -0
- package/src/tests/fetch-resolved-env.test.ts +128 -0
- package/src/tests/fixtures/chat-sdk/telegram-private-text.json +10 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/hooks.ts +27 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/manifest.json +9 -0
- package/src/tests/fixtures/openai-compatible-registry-extension.child.ts +146 -0
- package/src/tests/fixtures/runner-legacy-resume-prompt.ts +122 -0
- package/src/tests/github-handlers.test.ts +35 -0
- package/src/tests/harness-provider-resolution.test.ts +12 -0
- package/src/tests/heartbeat-checklist.test.ts +3 -2
- package/src/tests/hook-runtime-close.test.ts +0 -2
- package/src/tests/http-api-integration.test.ts +0 -25
- package/src/tests/migration-046-budgets.test.ts +17 -16
- package/src/tests/migration-217-chat-sdk-state.test.ts +113 -0
- package/src/tests/model-tier-resolution.test.ts +93 -0
- package/src/tests/models-catalog.test.ts +42 -1
- package/src/tests/openai-compatible-providers.test.ts +134 -0
- package/src/tests/openai-compatible-registry-extension.test.ts +42 -0
- package/src/tests/opencode-adapter.test.ts +216 -2
- package/src/tests/opencode-helmcode-sdk.test.ts +201 -0
- package/src/tests/opencode-shell-env.test.ts +145 -0
- package/src/tests/openrouter-base-url.test.ts +101 -151
- package/src/tests/page-proxy.test.ts +1 -1
- package/src/tests/pages-browser-sdk.test.ts +76 -0
- package/src/tests/pages-feedback.test.ts +1 -1
- package/src/tests/paused-tasks-requested-by.test.ts +102 -0
- package/src/tests/pi-custom-provider-fake-server.test.ts +442 -0
- package/src/tests/pi-mono-adapter.test.ts +385 -5
- package/src/tests/pi-shell-env.test.ts +170 -0
- package/src/tests/prompt-template-remaining.test.ts +35 -0
- package/src/tests/rbac-engine.test.ts +11 -3
- package/src/tests/runner-exit-after-tasks.test.ts +0 -4
- package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/scripts-http.test.ts +201 -1
- package/src/tests/scripts-only-gating.test.ts +2 -3
- package/src/tests/scripts-runtime.test.ts +58 -40
- package/src/tests/secret-scrubber.test.ts +86 -0
- package/src/tests/seed-skills-bundled-files.test.ts +45 -53
- package/src/tests/seed-skills-retire.test.ts +182 -0
- package/src/tests/send-task-requester-gate.test.ts +58 -0
- package/src/tests/session-cost-recompute-unit.test.ts +46 -0
- package/src/tests/skill-get-name-resolution.test.ts +137 -0
- package/src/tests/sonnet-5-5-registry.test.ts +9 -1
- package/src/tests/swarm-config-export-to-env.test.ts +267 -0
- package/src/tests/swarm-config-reserved-keys.test.ts +16 -0
- package/src/tests/swarm-diff.test.ts +1 -1
- package/src/tests/task-model-effort-rerun.test.ts +164 -0
- package/src/tests/task-session-prompts.test.ts +132 -0
- package/src/tests/task-tool-manifest.test.ts +14 -0
- package/src/tests/task-tools-ctx.test.ts +2 -0
- package/src/tests/tool-annotations.test.ts +6 -6
- package/src/tests/ui-logs-parser.test.ts +43 -0
- package/src/tests/used-by-route.test.ts +6 -0
- package/src/tests/vercel-ai-gateway.test.ts +149 -0
- package/src/tests/workflow-swarm-script.test.ts +38 -0
- package/src/tests/workflow-wait-filter.test.ts +5 -3
- package/src/tools/chat-access.ts +41 -0
- package/src/tools/chat-open-dm.ts +59 -0
- package/src/tools/chat-post.ts +74 -0
- package/src/tools/chat-read-thread.ts +100 -0
- package/src/tools/chat-reply.ts +75 -0
- package/src/tools/create-page.ts +3 -13
- package/src/tools/model-catalog/index.ts +2 -1
- package/src/tools/register-chat-channel.ts +139 -0
- package/src/tools/send-task.ts +24 -0
- package/src/tools/skills/skill-get.ts +17 -9
- package/src/tools/swarm-config/get-config.ts +2 -1
- package/src/tools/swarm-config/list-config.ts +2 -1
- package/src/tools/swarm-config/set-config.ts +16 -3
- package/src/tools/tool-config.ts +8 -6
- package/src/types.ts +12 -2
- package/src/utils/config-env-export.ts +74 -0
- package/src/utils/credentials.test.ts +92 -0
- package/src/utils/credentials.ts +52 -4
- package/src/utils/harness-provider.ts +15 -6
- package/src/utils/runtime-model-catalog.ts +11 -1
- package/src/utils/secret-scrubber.ts +71 -2
- package/src/utils/task-tool-manifest.ts +19 -2
- package/src/workflows/executors/swarm-script.ts +1 -0
- package/templates/skills/agent-browser/SKILL.md +1 -1
- package/templates/skills/agent-browser/content.md +1 -1
- package/templates/skills/apps/SKILL.md +8 -1
- package/templates/skills/apps/content.md +8 -1
- package/templates/skills/chat-sdk/config.json +14 -0
- package/templates/skills/chat-sdk/content.md +84 -0
- package/templates/skills/composio-gmail/content.md +7 -0
- package/templates/skills/composio-google-docs/content.md +1 -1
- package/templates/skills/email-domain-health/config.json +14 -0
- package/templates/skills/email-domain-health/content.md +131 -0
- package/templates/skills/kv-storage/content.md +2 -2
- package/templates/skills/pages/content.md +8 -10
- package/templates/skills/swarm-extensions/content.md +2 -0
- package/templates/skills/swarm-scripts/SKILL.md +4 -2
- package/templates/skills/swarm-scripts/config.json +1 -1
- package/templates/skills/swarm-scripts/content.md +4 -2
- package/templates/skills/workflow-iterate/content.md +38 -0
- package/dist/artifact-eczsknc3.js +0 -3843
- package/dist/cli-bd957dgb.js +0 -153
- package/dist/cli-q51yprfq.js +0 -1104
- package/dist/cli-t1ze64h3.js +0 -811
- package/dist/cli-tcc4wd5d.js +0 -56471
- package/dist/index-9ch1n761.js +0 -1102
- package/src/artifact-sdk/index.ts +0 -2
- package/src/artifact-sdk/localtunnel.d.ts +0 -20
- package/src/artifact-sdk/port.ts +0 -12
- package/src/artifact-sdk/server.ts +0 -183
- package/src/artifact-sdk/tunnel.ts +0 -19
- package/src/commands/artifact.ts +0 -249
- package/src/http/ecosystem.ts +0 -77
- package/src/tests/artifact-commands.test.ts +0 -92
- package/src/tests/artifact-sdk.test.ts +0 -793
- package/src/tests/register-service-security.test.ts +0 -194
- package/src/tools/list-services.ts +0 -107
- package/src/tools/register-service.ts +0 -177
- package/src/tools/unregister-service.ts +0 -73
- package/src/tools/update-service-status.ts +0 -96
- package/templates/skills/artifacts/config.json +0 -14
- package/templates/skills/artifacts/content.md +0 -344
- package/templates/skills/artifacts/files/examples/approval-flow.ts +0 -34
- package/templates/skills/artifacts/files/examples/hono-dashboard.ts +0 -31
- package/templates/skills/artifacts/files/examples/multi-artifact.ts +0 -20
- package/templates/skills/artifacts/files/examples/static-report.sh +0 -17
- /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
- /package/src/{artifact-sdk → pages}/feedback-overlay.ts +0 -0
|
@@ -1,12 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkGrokCredentials
|
|
3
|
+
} from "./cli-kt6zqg0e.js";
|
|
1
4
|
import {
|
|
2
5
|
renderSteeringDelivery
|
|
3
6
|
} from "./cli-19njxg5g.js";
|
|
4
7
|
import {
|
|
5
|
-
|
|
6
|
-
} from "./cli-
|
|
8
|
+
checkClaudeManagedCredentials
|
|
9
|
+
} from "./cli-29jc5q7w.js";
|
|
7
10
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./cli-
|
|
11
|
+
checkDevinCredentials
|
|
12
|
+
} from "./cli-q50942rs.js";
|
|
13
|
+
import {
|
|
14
|
+
checkOpencodeCredentials
|
|
15
|
+
} from "./cli-vatyhshy.js";
|
|
16
|
+
import {
|
|
17
|
+
checkDshCredentials
|
|
18
|
+
} from "./cli-3fbmmawm.js";
|
|
19
|
+
import {
|
|
20
|
+
checkAmpCredentials,
|
|
21
|
+
liveTestAmpCredentials
|
|
22
|
+
} from "./cli-vdach5a9.js";
|
|
23
|
+
import {
|
|
24
|
+
checkCursorCredentials
|
|
25
|
+
} from "./cli-s4setq91.js";
|
|
10
26
|
import {
|
|
11
27
|
createSkillInvokeTracker,
|
|
12
28
|
isSkillLoaderCall,
|
|
@@ -15,23 +31,13 @@ import {
|
|
|
15
31
|
import {
|
|
16
32
|
checkCodexCredentials,
|
|
17
33
|
codexUserHome
|
|
18
|
-
} from "./cli-
|
|
34
|
+
} from "./cli-03gedhng.js";
|
|
19
35
|
import {
|
|
20
|
-
|
|
21
|
-
} from "./cli-
|
|
22
|
-
import {
|
|
23
|
-
checkDevinCredentials
|
|
24
|
-
} from "./cli-e3pmyt39.js";
|
|
25
|
-
import {
|
|
26
|
-
checkOpencodeCredentials
|
|
27
|
-
} from "./cli-saqyage0.js";
|
|
28
|
-
import {
|
|
29
|
-
checkDshCredentials
|
|
30
|
-
} from "./cli-srqq3gc5.js";
|
|
36
|
+
checkClaudeCredentials
|
|
37
|
+
} from "./cli-q0ke1yww.js";
|
|
31
38
|
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
} from "./cli-5wpw4rab.js";
|
|
39
|
+
getContextWindowSize
|
|
40
|
+
} from "./cli-w1q7h2r2.js";
|
|
35
41
|
import {
|
|
36
42
|
isLeadChannelMonitoringEnabled,
|
|
37
43
|
isUnknownModelError,
|
|
@@ -41,19 +47,13 @@ import {
|
|
|
41
47
|
import {
|
|
42
48
|
ACP_TARGET_IDS,
|
|
43
49
|
isAcpTarget
|
|
44
|
-
} from "./cli-
|
|
50
|
+
} from "./cli-6cagzc96.js";
|
|
45
51
|
import {
|
|
46
52
|
CODEX_OAUTH_POOL_SLOTS_ENV,
|
|
47
53
|
countCodexOAuthPoolSlots,
|
|
48
54
|
hasCodexOAuthPoolSlots,
|
|
49
55
|
isCodexOAuthConfigKey
|
|
50
56
|
} from "./cli-bqjfjex4.js";
|
|
51
|
-
import {
|
|
52
|
-
checkClaudeCredentials
|
|
53
|
-
} from "./cli-0a7mm3zp.js";
|
|
54
|
-
import {
|
|
55
|
-
getContextWindowSize
|
|
56
|
-
} from "./cli-7avy4v8w.js";
|
|
57
57
|
import {
|
|
58
58
|
CODEX_CREDITS_EXHAUSTED_COOLDOWN_MS,
|
|
59
59
|
MAX_RATE_LIMIT_RESET_MS,
|
|
@@ -62,23 +62,27 @@ import {
|
|
|
62
62
|
parseRateLimitResetTime,
|
|
63
63
|
resolveCodexCreditsExhaustedCooldownMs
|
|
64
64
|
} from "./cli-2pdaysab.js";
|
|
65
|
+
import {
|
|
66
|
+
effectiveReasoningEffort
|
|
67
|
+
} from "./cli-n5vwg842.js";
|
|
65
68
|
import {
|
|
66
69
|
canonicalAzureDevOpsRepoUrl,
|
|
67
70
|
isAzureDevOpsUrl,
|
|
68
71
|
parseAzureDevOpsRepoUrl,
|
|
69
|
-
resolveScriptsOnlyMode
|
|
70
|
-
|
|
72
|
+
resolveScriptsOnlyMode,
|
|
73
|
+
resumedTaskModelSelection
|
|
74
|
+
} from "./cli-bzszjf2p.js";
|
|
71
75
|
import {
|
|
72
76
|
terminateRegisteredProcessGroups
|
|
73
77
|
} from "./cli-zt3w1cn1.js";
|
|
74
78
|
import {
|
|
75
79
|
validateJsonSchema
|
|
76
|
-
} from "./cli-
|
|
80
|
+
} from "./cli-1e4b6bzh.js";
|
|
77
81
|
import {
|
|
78
82
|
authJsonToCredentialSelection,
|
|
79
83
|
credentialsToAuthJson,
|
|
80
84
|
loadAllCodexOAuthSlots
|
|
81
|
-
} from "./cli-
|
|
85
|
+
} from "./cli-e6mpjhed.js";
|
|
82
86
|
import {
|
|
83
87
|
ensure,
|
|
84
88
|
initOtel,
|
|
@@ -88,20 +92,22 @@ import {
|
|
|
88
92
|
startSpan,
|
|
89
93
|
withSpan,
|
|
90
94
|
withSpanContext
|
|
91
|
-
} from "./cli-
|
|
95
|
+
} from "./cli-skxvvpap.js";
|
|
92
96
|
import {
|
|
93
97
|
MASKED_SECRET_VALUE,
|
|
94
98
|
initTelemetry,
|
|
95
99
|
init_api_drain,
|
|
96
100
|
init_codex_auth_failure,
|
|
101
|
+
init_config_env_export,
|
|
97
102
|
init_config_secrets,
|
|
98
103
|
init_telemetry,
|
|
99
104
|
init_telemetry_context,
|
|
100
105
|
isApiDrainingResponse,
|
|
101
106
|
isCodexAuthFailureReason,
|
|
107
|
+
isEnvExportRestrictedKey,
|
|
102
108
|
mapTriggerSurface,
|
|
103
109
|
telemetry
|
|
104
|
-
} from "./cli-
|
|
110
|
+
} from "./cli-ef1hg1wv.js";
|
|
105
111
|
import {
|
|
106
112
|
ProviderNameSchema,
|
|
107
113
|
WorkerNudgeSchema,
|
|
@@ -109,7 +115,7 @@ import {
|
|
|
109
115
|
isTerminalTaskStatus,
|
|
110
116
|
parseWorkerModelTierOverrides,
|
|
111
117
|
resolveTaskModelSelection
|
|
112
|
-
} from "./cli-
|
|
118
|
+
} from "./cli-cgtksawx.js";
|
|
113
119
|
import {
|
|
114
120
|
WORKSPACE_CLAUDE_MD_PATH,
|
|
115
121
|
buildContextPreamble,
|
|
@@ -120,6 +126,7 @@ import {
|
|
|
120
126
|
generateDefaultSoulMd,
|
|
121
127
|
generateDefaultToolsMd,
|
|
122
128
|
getBasePrompt,
|
|
129
|
+
getTaskContextPrompt,
|
|
123
130
|
init_base_prompt,
|
|
124
131
|
init_context_preamble,
|
|
125
132
|
init_defaults,
|
|
@@ -132,20 +139,21 @@ import {
|
|
|
132
139
|
taskAttachmentFetchCommand,
|
|
133
140
|
writeIdentityBaselines,
|
|
134
141
|
writeProfileFileFromDb
|
|
135
|
-
} from "./cli-
|
|
142
|
+
} from "./cli-s2sp957d.js";
|
|
136
143
|
import {
|
|
137
144
|
init_steering_enabled,
|
|
138
145
|
isSteeringEnabled
|
|
139
146
|
} from "./cli-7mm2r1kp.js";
|
|
140
|
-
import {
|
|
141
|
-
init_templates
|
|
142
|
-
} from "./cli-mvzyxwg3.js";
|
|
143
147
|
import {
|
|
144
148
|
CLAUDE_CREDENTIALS_HINT,
|
|
145
149
|
ModelWindowExhaustedError,
|
|
146
150
|
init_credentials,
|
|
151
|
+
normalizeProviderKeyAliases,
|
|
147
152
|
resolveCredentialPools
|
|
148
|
-
} from "./cli-
|
|
153
|
+
} from "./cli-5hkm7whv.js";
|
|
154
|
+
import {
|
|
155
|
+
init_templates
|
|
156
|
+
} from "./cli-mvzyxwg3.js";
|
|
149
157
|
import {
|
|
150
158
|
configureHttpResolver,
|
|
151
159
|
init_resolver,
|
|
@@ -162,7 +170,7 @@ import {
|
|
|
162
170
|
} from "./cli-ywybs5as.js";
|
|
163
171
|
import {
|
|
164
172
|
deriveDefaultRoute,
|
|
165
|
-
init_src,
|
|
173
|
+
init_src as init_src2,
|
|
166
174
|
validateRoute
|
|
167
175
|
} from "./cli-f9w1semm.js";
|
|
168
176
|
import {
|
|
@@ -171,12 +179,10 @@ import {
|
|
|
171
179
|
init_openrouter_base_url
|
|
172
180
|
} from "./cli-a35hzdve.js";
|
|
173
181
|
import {
|
|
174
|
-
harnessModelMismatch,
|
|
175
182
|
init_runtime_model_catalog,
|
|
176
|
-
init_src as init_src2,
|
|
177
183
|
refreshRuntimeModelCatalog,
|
|
178
184
|
runtimeHarnessSections
|
|
179
|
-
} from "./cli-
|
|
185
|
+
} from "./cli-stfs0k5s.js";
|
|
180
186
|
import {
|
|
181
187
|
getMcpBaseUrl,
|
|
182
188
|
init_constants
|
|
@@ -187,9 +193,18 @@ import {
|
|
|
187
193
|
} from "./cli-a1b9b32n.js";
|
|
188
194
|
import {
|
|
189
195
|
init_secret_scrubber,
|
|
196
|
+
registerEnvSecrets,
|
|
190
197
|
registerSensitiveKeyName,
|
|
191
198
|
scrubSecrets
|
|
192
|
-
} from "./cli-
|
|
199
|
+
} from "./cli-p1x85d2t.js";
|
|
200
|
+
import {
|
|
201
|
+
harnessModelMismatch,
|
|
202
|
+
init_src,
|
|
203
|
+
openAICompatibleKeyVars,
|
|
204
|
+
openAICompatibleProviders,
|
|
205
|
+
providerBaseUrl,
|
|
206
|
+
providerKeyFromEnv
|
|
207
|
+
} from "./cli-e3g5mbkz.js";
|
|
193
208
|
import {
|
|
194
209
|
__require
|
|
195
210
|
} from "./cli-bc05qbss.js";
|
|
@@ -226,47 +241,47 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
|
|
|
226
241
|
async function createProviderAdapter(provider) {
|
|
227
242
|
switch (provider) {
|
|
228
243
|
case "claude": {
|
|
229
|
-
const { ClaudeAdapter } = await import("./claude-adapter-
|
|
244
|
+
const { ClaudeAdapter } = await import("./claude-adapter-9vmvpvgd.js");
|
|
230
245
|
return new ClaudeAdapter;
|
|
231
246
|
}
|
|
232
247
|
case "pi": {
|
|
233
|
-
const { PiMonoAdapter } = await import("./pi-mono-adapter-
|
|
248
|
+
const { PiMonoAdapter } = await import("./pi-mono-adapter-9n2ya240.js");
|
|
234
249
|
return new PiMonoAdapter;
|
|
235
250
|
}
|
|
236
251
|
case "codex": {
|
|
237
|
-
const { CodexAdapter } = await import("./codex-adapter-
|
|
252
|
+
const { CodexAdapter } = await import("./codex-adapter-y81sssk0.js");
|
|
238
253
|
return new CodexAdapter;
|
|
239
254
|
}
|
|
240
255
|
case "claude-managed": {
|
|
241
|
-
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-
|
|
256
|
+
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-k9qae05j.js");
|
|
242
257
|
return new ClaudeManagedAdapter;
|
|
243
258
|
}
|
|
244
259
|
case "devin": {
|
|
245
|
-
const { DevinAdapter } = await import("./devin-adapter-
|
|
260
|
+
const { DevinAdapter } = await import("./devin-adapter-x1022qb1.js");
|
|
246
261
|
return new DevinAdapter;
|
|
247
262
|
}
|
|
248
263
|
case "opencode": {
|
|
249
|
-
const { OpencodeAdapter } = await import("./opencode-adapter-
|
|
264
|
+
const { OpencodeAdapter } = await import("./opencode-adapter-nm42wwj8.js");
|
|
250
265
|
return new OpencodeAdapter;
|
|
251
266
|
}
|
|
252
267
|
case "dsh": {
|
|
253
|
-
const { DshAdapter } = await import("./dsh-adapter-
|
|
268
|
+
const { DshAdapter } = await import("./dsh-adapter-3epjm3af.js");
|
|
254
269
|
return new DshAdapter;
|
|
255
270
|
}
|
|
256
271
|
case "amp": {
|
|
257
|
-
const { AmpAdapter } = await import("./amp-adapter-
|
|
272
|
+
const { AmpAdapter } = await import("./amp-adapter-ad8ft89x.js");
|
|
258
273
|
return new AmpAdapter;
|
|
259
274
|
}
|
|
260
275
|
case "cursor": {
|
|
261
|
-
const { CursorAdapter } = await import("./cursor-adapter-
|
|
276
|
+
const { CursorAdapter } = await import("./cursor-adapter-cehv1qns.js");
|
|
262
277
|
return new CursorAdapter;
|
|
263
278
|
}
|
|
264
279
|
case "grok": {
|
|
265
|
-
const { GrokAdapter } = await import("./grok-adapter-
|
|
280
|
+
const { GrokAdapter } = await import("./grok-adapter-0d4x7gkx.js");
|
|
266
281
|
return new GrokAdapter;
|
|
267
282
|
}
|
|
268
283
|
case "acp": {
|
|
269
|
-
const { ACPAdapter } = await import("./acp-adapter-
|
|
284
|
+
const { ACPAdapter } = await import("./acp-adapter-sj2g0m84.js");
|
|
270
285
|
return new ACPAdapter;
|
|
271
286
|
}
|
|
272
287
|
default:
|
|
@@ -454,6 +469,7 @@ function computeBudgetBackoffMs(consecutiveRefusals, basePollMs) {
|
|
|
454
469
|
|
|
455
470
|
// src/commands/runner.ts
|
|
456
471
|
init_codex_auth_failure();
|
|
472
|
+
init_config_env_export();
|
|
457
473
|
init_config_secrets();
|
|
458
474
|
init_constants();
|
|
459
475
|
init_credentials();
|
|
@@ -535,15 +551,17 @@ async function reportHarnessModelOutcome(opts) {
|
|
|
535
551
|
}
|
|
536
552
|
|
|
537
553
|
// src/utils/harness-provider.ts
|
|
554
|
+
init_src();
|
|
538
555
|
init_types();
|
|
539
556
|
var SUPPORTED_PROVIDERS = ProviderNameSchema.options;
|
|
540
557
|
function hasEnvValue(key, resolvedEnv, fallbackEnv) {
|
|
541
558
|
return !!(resolvedEnv[key]?.trim() || fallbackEnv[key]?.trim());
|
|
542
559
|
}
|
|
560
|
+
var PI_DEFAULT_KEY_VARS = ["OPENROUTER_API_KEY", ...openAICompatibleKeyVars()];
|
|
543
561
|
function credentialAwareDefault(resolvedEnv, fallbackEnv) {
|
|
544
|
-
const
|
|
562
|
+
const hasPiKey = PI_DEFAULT_KEY_VARS.some((key) => hasEnvValue(key, resolvedEnv, fallbackEnv));
|
|
545
563
|
const hasClaudeCredential = hasEnvValue("ANTHROPIC_API_KEY", resolvedEnv, fallbackEnv) || hasEnvValue("CLAUDE_CODE_OAUTH_TOKEN", resolvedEnv, fallbackEnv);
|
|
546
|
-
return
|
|
564
|
+
return hasPiKey && !hasClaudeCredential ? "pi" : "claude";
|
|
547
565
|
}
|
|
548
566
|
function resolveHarnessProvider(resolvedEnv, fallbackEnv = process.env) {
|
|
549
567
|
const candidate = resolvedEnv.HARNESS_PROVIDER?.trim() || fallbackEnv.HARNESS_PROVIDER?.trim();
|
|
@@ -866,7 +884,7 @@ async function refreshSkillsIfChanged(ctx, lastHashRef, homeOverride) {
|
|
|
866
884
|
}
|
|
867
885
|
|
|
868
886
|
// src/utils/spawn-model-guard.ts
|
|
869
|
-
|
|
887
|
+
init_src();
|
|
870
888
|
init_runtime_model_catalog();
|
|
871
889
|
function spawnHarnessMismatchReason(model, harness) {
|
|
872
890
|
return `[model-harness-mismatch] Model "${model}" does not run on the ${harness} harness of this worker. The task pinned a model from another harness family. Re-create the task with modelTier or with a ${harness} model.`;
|
|
@@ -1110,6 +1128,7 @@ async function reportCredentialOutcomeThenFinish(input, finish) {
|
|
|
1110
1128
|
|
|
1111
1129
|
// src/commands/provider-credentials.ts
|
|
1112
1130
|
init_src();
|
|
1131
|
+
init_src2();
|
|
1113
1132
|
init_credentials();
|
|
1114
1133
|
init_openrouter_base_url();
|
|
1115
1134
|
init_secret_scrubber();
|
|
@@ -1120,6 +1139,29 @@ function isBedrockMode(env) {
|
|
|
1120
1139
|
function shouldRefreshBedrockStatus(opts) {
|
|
1121
1140
|
return opts.harnessProvider === "pi" && isBedrockMode(opts.env) && opts.now - opts.lastRefreshAt > opts.intervalMs;
|
|
1122
1141
|
}
|
|
1142
|
+
var REQUIRED_CRED_VARS_BY_PROVIDER = {
|
|
1143
|
+
claude: ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"],
|
|
1144
|
+
"claude-managed": [
|
|
1145
|
+
"ANTHROPIC_API_KEY",
|
|
1146
|
+
"MANAGED_AGENT_ID",
|
|
1147
|
+
"MANAGED_ENVIRONMENT_ID",
|
|
1148
|
+
"MCP_BASE_URL"
|
|
1149
|
+
],
|
|
1150
|
+
codex: ["OPENAI_API_KEY", "CODEX_OAUTH"],
|
|
1151
|
+
devin: ["DEVIN_API_KEY", "DEVIN_ORG_ID"],
|
|
1152
|
+
opencode: [
|
|
1153
|
+
"OPENROUTER_API_KEY",
|
|
1154
|
+
"ANTHROPIC_API_KEY",
|
|
1155
|
+
"OPENAI_API_KEY",
|
|
1156
|
+
...openAICompatibleKeyVars()
|
|
1157
|
+
],
|
|
1158
|
+
pi: ["ANTHROPIC_API_KEY", "OPENROUTER_API_KEY", "OPENAI_API_KEY", ...openAICompatibleKeyVars()],
|
|
1159
|
+
acp: [],
|
|
1160
|
+
dsh: ["DEEPSEEK_API_KEY", "OPENROUTER_API_KEY"],
|
|
1161
|
+
amp: ["AMP_API_KEY"],
|
|
1162
|
+
cursor: ["CURSOR_API_KEY"],
|
|
1163
|
+
grok: ["XAI_API_KEY", "OPENROUTER_API_KEY"]
|
|
1164
|
+
};
|
|
1123
1165
|
var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
1124
1166
|
dsh: (env) => checkDshCredentials(env),
|
|
1125
1167
|
amp: (env) => checkAmpCredentials(env),
|
|
@@ -1131,7 +1173,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
|
1131
1173
|
devin: (env) => checkDevinCredentials(env),
|
|
1132
1174
|
opencode: (env, opts) => checkOpencodeCredentials(env, opts),
|
|
1133
1175
|
pi: async (env, opts) => {
|
|
1134
|
-
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-
|
|
1176
|
+
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-9n2ya240.js");
|
|
1135
1177
|
return checkPiMonoCredentials(env, opts);
|
|
1136
1178
|
},
|
|
1137
1179
|
acp: (env) => {
|
|
@@ -1246,6 +1288,19 @@ async function checkOpenRouter(apiKey) {
|
|
|
1246
1288
|
latency_ms: r.latency_ms
|
|
1247
1289
|
};
|
|
1248
1290
|
}
|
|
1291
|
+
async function checkOpenAICompatibleProvider(provider, apiKey, baseUrl = provider.baseUrl) {
|
|
1292
|
+
const r = await timedFetch(`${baseUrl.replace(/\/+$/, "")}/models`, {
|
|
1293
|
+
method: "GET",
|
|
1294
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
1295
|
+
});
|
|
1296
|
+
if (r.ok)
|
|
1297
|
+
return { ok: true, latency_ms: r.latency_ms };
|
|
1298
|
+
return {
|
|
1299
|
+
ok: false,
|
|
1300
|
+
error: scrubSecrets(`HTTP ${r.status}: ${r.bodyText.slice(0, 200)}`),
|
|
1301
|
+
latency_ms: r.latency_ms
|
|
1302
|
+
};
|
|
1303
|
+
}
|
|
1249
1304
|
function codexAuthFileExists(env) {
|
|
1250
1305
|
return checkCodexCredentials(env).satisfiedBy === "file";
|
|
1251
1306
|
}
|
|
@@ -1318,11 +1373,17 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1318
1373
|
return checkAnthropicApiKey(env.ANTHROPIC_API_KEY);
|
|
1319
1374
|
if (env.OPENAI_API_KEY)
|
|
1320
1375
|
return checkOpenAiApiKey(env.OPENAI_API_KEY);
|
|
1376
|
+
for (const direct of openAICompatibleProviders()) {
|
|
1377
|
+
const key = providerKeyFromEnv(direct, env);
|
|
1378
|
+
if (key) {
|
|
1379
|
+
return checkOpenAICompatibleProvider(direct, key, providerBaseUrl(direct, env));
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1321
1382
|
if (status.ready)
|
|
1322
1383
|
return presenceCheckOk();
|
|
1323
1384
|
return {
|
|
1324
1385
|
ok: false,
|
|
1325
|
-
error:
|
|
1386
|
+
error: `No usable credential found (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, ${openAICompatibleProviders().map((p) => p.envVar).join(", ").replace(/, (?=[^,]*$)/, ", or ")}).`,
|
|
1326
1387
|
latency_ms: Date.now() - startedAt
|
|
1327
1388
|
};
|
|
1328
1389
|
}
|
|
@@ -1381,7 +1442,7 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1381
1442
|
latency_ms: Date.now() - startedAt
|
|
1382
1443
|
};
|
|
1383
1444
|
}
|
|
1384
|
-
const { liveTestCursorKey } = await import("./cursor-adapter-
|
|
1445
|
+
const { liveTestCursorKey } = await import("./cursor-adapter-cehv1qns.js");
|
|
1385
1446
|
const result = await liveTestCursorKey(apiKey);
|
|
1386
1447
|
return result.ok ? { ok: true, latency_ms: Date.now() - startedAt } : { ok: false, error: result.error, latency_ms: Date.now() - startedAt };
|
|
1387
1448
|
}
|
|
@@ -1914,13 +1975,6 @@ function scheduleRunnerGc(reason) {
|
|
|
1914
1975
|
timer.unref?.();
|
|
1915
1976
|
return true;
|
|
1916
1977
|
}
|
|
1917
|
-
async function savePm2State(role) {
|
|
1918
|
-
try {
|
|
1919
|
-
console.log(`[${role}] Saving PM2 process list...`);
|
|
1920
|
-
await Bun.$`pm2 save`.quiet();
|
|
1921
|
-
console.log(`[${role}] PM2 state saved`);
|
|
1922
|
-
} catch {}
|
|
1923
|
-
}
|
|
1924
1978
|
async function fetchRepoConfig(apiUrl, apiKey, vcsRepo, requireExactMatch = false) {
|
|
1925
1979
|
try {
|
|
1926
1980
|
const requested = vcsRepo.trim().replace(/\/+$/, "").replace(/\.git$/, "");
|
|
@@ -2255,6 +2309,16 @@ async function exitAfterTasksIfFinished(state, limit, shutdown) {
|
|
|
2255
2309
|
}
|
|
2256
2310
|
var deploymentMemoryRaters = process.env.MEMORY_RATERS;
|
|
2257
2311
|
var rowOverriddenBootEnv = new Map;
|
|
2312
|
+
var lastWithheldEnvKeys = "";
|
|
2313
|
+
function logWithheldEnvKeys(keys) {
|
|
2314
|
+
const summary = [...keys].sort().join(", ");
|
|
2315
|
+
if (summary === lastWithheldEnvKeys)
|
|
2316
|
+
return;
|
|
2317
|
+
lastWithheldEnvKeys = summary;
|
|
2318
|
+
if (!summary)
|
|
2319
|
+
return;
|
|
2320
|
+
console.log(`[env-reload] Kept ${keys.length} config entries with exportToEnv=false out of the harness env: ${summary}`);
|
|
2321
|
+
}
|
|
2258
2322
|
async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env, taskModel, sessionContext) {
|
|
2259
2323
|
const env = { ...baseEnv };
|
|
2260
2324
|
for (const key of Object.keys(env)) {
|
|
@@ -2284,7 +2348,17 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2284
2348
|
if (data.configs?.length) {
|
|
2285
2349
|
const skippedSecretKeys = [];
|
|
2286
2350
|
scriptsOnlyConfigValue = data.configs.find((config) => config.key === "SCRIPTS_ONLY_MCP")?.value;
|
|
2351
|
+
const withheldEnvKeys = [];
|
|
2287
2352
|
for (const config of data.configs) {
|
|
2353
|
+
if (config.exportToEnv === false || isEnvExportRestrictedKey(config.key)) {
|
|
2354
|
+
if (config.isSecret)
|
|
2355
|
+
registerSensitiveKeyName(config.key);
|
|
2356
|
+
delete env[config.key];
|
|
2357
|
+
if (baseEnv === process.env)
|
|
2358
|
+
delete process.env[config.key];
|
|
2359
|
+
withheldEnvKeys.push(config.key);
|
|
2360
|
+
continue;
|
|
2361
|
+
}
|
|
2288
2362
|
if (config.isSecret && config.value === MASKED_SECRET_VALUE) {
|
|
2289
2363
|
skippedSecretKeys.push(config.key);
|
|
2290
2364
|
continue;
|
|
@@ -2302,6 +2376,7 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2302
2376
|
if (skippedSecretKeys.length) {
|
|
2303
2377
|
console.warn(scrubSecrets(`[env-reload] Skipped masked secrets: ${skippedSecretKeys.join(", ")}`));
|
|
2304
2378
|
}
|
|
2379
|
+
logWithheldEnvKeys(withheldEnvKeys);
|
|
2305
2380
|
console.log(`[env-reload] Loaded ${data.configs.length} config entries from API`);
|
|
2306
2381
|
}
|
|
2307
2382
|
const codexPoolSlots = countCodexOAuthPoolSlots(data.configs ?? []);
|
|
@@ -2311,6 +2386,8 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2311
2386
|
console.warn(`[env-reload] Could not fetch config, using current env: ${error}`);
|
|
2312
2387
|
}
|
|
2313
2388
|
}
|
|
2389
|
+
normalizeProviderKeyAliases(env);
|
|
2390
|
+
registerEnvSecrets(env);
|
|
2314
2391
|
const resolvedProvider = sessionContext?.provider ?? resolveHarnessProvider(env, baseEnv);
|
|
2315
2392
|
if (sessionContext?.provider)
|
|
2316
2393
|
env.HARNESS_PROVIDER = sessionContext.provider;
|
|
@@ -2511,10 +2588,6 @@ var SWARM_TOOL_LABELS = {
|
|
|
2511
2588
|
"create-channel": "\uD83D\uDCE2 Creating channel",
|
|
2512
2589
|
"list-channels": "\uD83D\uDCE2 Listing channels",
|
|
2513
2590
|
"delete-channel": "\uD83D\uDCE2 Deleting channel",
|
|
2514
|
-
"register-service": "\uD83D\uDD0C Registering service",
|
|
2515
|
-
"list-services": "\uD83D\uDD0C Listing services",
|
|
2516
|
-
"unregister-service": "\uD83D\uDD0C Unregistering service",
|
|
2517
|
-
"update-service-status": "\uD83D\uDD0C Updating service status",
|
|
2518
2591
|
"script-search": "\uD83D\uDCDC Searching scripts",
|
|
2519
2592
|
"script-run": "\uD83D\uDCDC Running script",
|
|
2520
2593
|
"script-upsert": "\uD83D\uDCDC Saving script",
|
|
@@ -3174,7 +3247,6 @@ function setupShutdownHandlers(role, apiConfig, getRunnerState, onShutdown) {
|
|
|
3174
3247
|
});
|
|
3175
3248
|
await closeAgent(apiConfig, role);
|
|
3176
3249
|
}
|
|
3177
|
-
await savePm2State(role);
|
|
3178
3250
|
process.exit(exitCode);
|
|
3179
3251
|
};
|
|
3180
3252
|
const beginShutdown = (signal, exitCode = 0) => shutdown(signal, exitCode).catch(async (error) => {
|
|
@@ -3254,11 +3326,13 @@ async function saveCostData(cost, apiUrl, apiKey, deadline) {
|
|
|
3254
3326
|
console.warn(scrubSecrets(`[runner] Error saving cost data: ${error}`));
|
|
3255
3327
|
}
|
|
3256
3328
|
}
|
|
3257
|
-
async function saveProviderSessionId(apiUrl, apiKey, taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta) {
|
|
3329
|
+
async function saveProviderSessionId(apiUrl, apiKey, taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta, effort) {
|
|
3258
3330
|
const headers = { "Content-Type": "application/json" };
|
|
3259
3331
|
if (apiKey)
|
|
3260
3332
|
headers.Authorization = `Bearer ${apiKey}`;
|
|
3261
3333
|
const body = { claudeSessionId };
|
|
3334
|
+
if (effort !== undefined && provider !== "devin")
|
|
3335
|
+
body.effort = effort;
|
|
3262
3336
|
if (provider !== undefined)
|
|
3263
3337
|
body.provider = provider;
|
|
3264
3338
|
if (providerMeta !== undefined)
|
|
@@ -3545,6 +3619,33 @@ ${notes}` : "";
|
|
|
3545
3619
|
});
|
|
3546
3620
|
return result.skipped ? "" : result.text.trim();
|
|
3547
3621
|
}
|
|
3622
|
+
function missingTaskDirWarning(taskDir, effectiveCwd) {
|
|
3623
|
+
return taskDir && !effectiveCwd ? `Note: The task requested working directory "${taskDir}" but it does not exist. Falling back to default directory.` : undefined;
|
|
3624
|
+
}
|
|
3625
|
+
async function buildTaskSessionPrompts(input) {
|
|
3626
|
+
const { basePromptArgs, additionalSystemPrompt, context } = input;
|
|
3627
|
+
const basePrompt = await getBasePrompt(basePromptArgs);
|
|
3628
|
+
const systemPrompt = additionalSystemPrompt ? `${basePrompt}
|
|
3629
|
+
|
|
3630
|
+
${additionalSystemPrompt}` : basePrompt;
|
|
3631
|
+
const taskContext = [
|
|
3632
|
+
await getTaskContextPrompt({
|
|
3633
|
+
...basePromptArgs,
|
|
3634
|
+
repoContext: context.repoContext,
|
|
3635
|
+
slackContext: context.slackContext
|
|
3636
|
+
}),
|
|
3637
|
+
await buildRequesterProfilePrompt(context.requestedBy),
|
|
3638
|
+
context.cwdWarning?.trim()
|
|
3639
|
+
].filter((part) => Boolean(part)).join(`
|
|
3640
|
+
|
|
3641
|
+
`);
|
|
3642
|
+
return {
|
|
3643
|
+
systemPrompt,
|
|
3644
|
+
prompt: taskContext ? `${input.taskPrompt}
|
|
3645
|
+
|
|
3646
|
+
${taskContext}` : input.taskPrompt
|
|
3647
|
+
};
|
|
3648
|
+
}
|
|
3548
3649
|
|
|
3549
3650
|
class AgentRegistrationHttpError extends Error {
|
|
3550
3651
|
status;
|
|
@@ -4077,6 +4178,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4077
4178
|
if (spawnModel.warning)
|
|
4078
4179
|
console.warn(spawnModel.warning);
|
|
4079
4180
|
const model = spawnModel.model;
|
|
4181
|
+
const sessionEffort = effectiveReasoningEffort(adapter.name, model, reasoningEffortOverride);
|
|
4080
4182
|
let oauthSelection;
|
|
4081
4183
|
let oauthIsPoolBacked = false;
|
|
4082
4184
|
if (adapter.name === "codex") {
|
|
@@ -4249,7 +4351,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4249
4351
|
}).catch((err) => console.warn(`[runner] Failed to report ACP options: ${err}`));
|
|
4250
4352
|
}
|
|
4251
4353
|
if (realTaskId) {
|
|
4252
|
-
saveProviderSessionId(opts.apiUrl, opts.apiKey, realTaskId, event.sessionId, event.provider, event.providerMeta, model, event.harnessVariant, event.harnessVariantMeta).catch((err) => console.warn(`[runner] Failed to save session ID: ${err}`));
|
|
4354
|
+
saveProviderSessionId(opts.apiUrl, opts.apiKey, realTaskId, event.sessionId, event.provider, event.providerMeta, model, event.harnessVariant, event.harnessVariantMeta, sessionEffort).catch((err) => console.warn(`[runner] Failed to save session ID: ${err}`));
|
|
4253
4355
|
} else {
|
|
4254
4356
|
saveProviderSessionIdOnActiveSession(opts.apiUrl, opts.apiKey, effectiveTaskId, event.sessionId).catch((err) => console.warn(`[runner] Failed to save provider session on active session: ${err}`));
|
|
4255
4357
|
}
|
|
@@ -5077,11 +5179,9 @@ async function runAgent(config, opts) {
|
|
|
5077
5179
|
let agentDescription;
|
|
5078
5180
|
let agentSkillsSummary;
|
|
5079
5181
|
let agentMcpServers;
|
|
5080
|
-
|
|
5081
|
-
let currentTaskSlackContext;
|
|
5082
|
-
const buildSystemPrompt = async () => {
|
|
5182
|
+
const basePromptArgs = () => {
|
|
5083
5183
|
const { traits } = adapter;
|
|
5084
|
-
return
|
|
5184
|
+
return {
|
|
5085
5185
|
role,
|
|
5086
5186
|
agentId,
|
|
5087
5187
|
capabilities,
|
|
@@ -5094,14 +5194,13 @@ async function runAgent(config, opts) {
|
|
|
5094
5194
|
soulMd: agentSoulMd,
|
|
5095
5195
|
identityMd: agentIdentityMd,
|
|
5096
5196
|
claudeMd: agentClaudeMd,
|
|
5097
|
-
repoContext: currentRepoContext,
|
|
5098
|
-
slackContext: currentTaskSlackContext,
|
|
5099
5197
|
...traits.hasMcp && {
|
|
5100
5198
|
skillsSummary: agentSkillsSummary,
|
|
5101
5199
|
mcpServers: agentMcpServers
|
|
5102
5200
|
}
|
|
5103
|
-
}
|
|
5201
|
+
};
|
|
5104
5202
|
};
|
|
5203
|
+
const buildSystemPrompt = async () => getBasePrompt(basePromptArgs());
|
|
5105
5204
|
let basePrompt = await buildSystemPrompt();
|
|
5106
5205
|
let additionalSystemPrompt;
|
|
5107
5206
|
const systemPromptText = opts.systemPrompt || process.env.SYSTEM_PROMPT;
|
|
@@ -5715,7 +5814,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5715
5814
|
console.warn(`[${role}] Failed to check resume task dir "${task.dir}", falling back to default cwd`);
|
|
5716
5815
|
}
|
|
5717
5816
|
}
|
|
5718
|
-
|
|
5817
|
+
let resumeRepoContext;
|
|
5818
|
+
if (task.vcsRepo && apiUrl) {
|
|
5719
5819
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, task.vcsRepo);
|
|
5720
5820
|
const effectiveConfig = repoConfig ?? {
|
|
5721
5821
|
url: task.vcsRepo,
|
|
@@ -5724,10 +5824,27 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5724
5824
|
defaultBranch: "main"
|
|
5725
5825
|
};
|
|
5726
5826
|
const repoContext = await ensureRepoForTask(effectiveConfig, role, false);
|
|
5727
|
-
|
|
5827
|
+
resumeRepoContext = { ...repoContext, guidelines: repoConfig?.guidelines ?? null };
|
|
5828
|
+
if (!resumeCwd && repoContext?.clonePath) {
|
|
5728
5829
|
resumeCwd = repoContext.clonePath;
|
|
5729
5830
|
}
|
|
5730
5831
|
}
|
|
5832
|
+
const resumeSlackChannelId = task.slackChannelId;
|
|
5833
|
+
const resumeSession = await buildTaskSessionPrompts({
|
|
5834
|
+
basePromptArgs: basePromptArgs(),
|
|
5835
|
+
additionalSystemPrompt,
|
|
5836
|
+
taskPrompt: resumePrompt,
|
|
5837
|
+
context: {
|
|
5838
|
+
repoContext: resumeRepoContext,
|
|
5839
|
+
slackContext: resumeSlackChannelId ? {
|
|
5840
|
+
channelId: resumeSlackChannelId,
|
|
5841
|
+
threadTs: task.slackThreadTs
|
|
5842
|
+
} : undefined,
|
|
5843
|
+
requestedBy: task.requestedBy,
|
|
5844
|
+
cwdWarning: missingTaskDirWarning(task.dir, resumeCwd)
|
|
5845
|
+
}
|
|
5846
|
+
});
|
|
5847
|
+
resumePrompt = resumeSession.prompt;
|
|
5731
5848
|
const resumeRunnerSessionId = crypto.randomUUID();
|
|
5732
5849
|
await registerActiveSession(apiConfig, {
|
|
5733
5850
|
taskId: task.id,
|
|
@@ -5740,7 +5857,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5740
5857
|
runningTask = await spawnProviderProcess(adapter, {
|
|
5741
5858
|
prompt: resumePrompt,
|
|
5742
5859
|
logFile,
|
|
5743
|
-
systemPrompt:
|
|
5860
|
+
systemPrompt: resumeSession.systemPrompt,
|
|
5744
5861
|
additionalArgs: opts.additionalArgs,
|
|
5745
5862
|
resumeSessionId: undefined,
|
|
5746
5863
|
role,
|
|
@@ -5750,10 +5867,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5750
5867
|
runnerSessionId: resumeRunnerSessionId,
|
|
5751
5868
|
iteration,
|
|
5752
5869
|
taskId: task.id,
|
|
5753
|
-
|
|
5870
|
+
...resumedTaskModelSelection(task),
|
|
5754
5871
|
modelTier: task.modelTier,
|
|
5755
|
-
resolvedModel: task.resolvedModel,
|
|
5756
|
-
modelSource: task.modelSource,
|
|
5757
5872
|
effort: task.effort,
|
|
5758
5873
|
harnessProvider: state.harnessProvider,
|
|
5759
5874
|
cwd: resumeCwd,
|
|
@@ -5980,7 +6095,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5980
6095
|
const taskContextKey = trigger.task?.contextKey;
|
|
5981
6096
|
const taskSlackChannelId = trigger.task?.slackChannelId;
|
|
5982
6097
|
const taskSlackThreadTs = trigger.task?.slackThreadTs;
|
|
5983
|
-
|
|
6098
|
+
const taskSlackContext = taskSlackChannelId ? { channelId: taskSlackChannelId, threadTs: taskSlackThreadTs } : undefined;
|
|
6099
|
+
let currentRepoContext;
|
|
5984
6100
|
const taskVcsRepo = trigger.task?.vcsRepo;
|
|
5985
6101
|
if (taskVcsRepo && apiUrl) {
|
|
5986
6102
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, taskVcsRepo);
|
|
@@ -5996,8 +6112,6 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5996
6112
|
...repoResult,
|
|
5997
6113
|
guidelines: repoConfig?.guidelines ?? null
|
|
5998
6114
|
};
|
|
5999
|
-
} else {
|
|
6000
|
-
currentRepoContext = undefined;
|
|
6001
6115
|
}
|
|
6002
6116
|
const taskDir = trigger.task?.dir;
|
|
6003
6117
|
let effectiveCwd;
|
|
@@ -6027,12 +6141,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
6027
6141
|
}
|
|
6028
6142
|
triggerPrompt += " You can still access any path on the filesystem — this is just your starting directory.";
|
|
6029
6143
|
}
|
|
6030
|
-
|
|
6031
|
-
if (taskDir && !effectiveCwd) {
|
|
6032
|
-
cwdWarning = `
|
|
6033
|
-
|
|
6034
|
-
Note: The task requested working directory "${taskDir}" but it does not exist. Falling back to default directory.`;
|
|
6035
|
-
}
|
|
6144
|
+
const cwdWarning = missingTaskDirWarning(taskDir, effectiveCwd);
|
|
6036
6145
|
if (state.harnessProvider !== "claude-managed") {
|
|
6037
6146
|
const skillResult = await refreshSkillsIfChanged({ apiUrl, swarmUrl, apiKey, agentId, role }, lastSkillHash);
|
|
6038
6147
|
if (skillResult.changed && skillResult.summary) {
|
|
@@ -6059,12 +6168,19 @@ Note: The task requested working directory "${taskDir}" but it does not exist. F
|
|
|
6059
6168
|
agentDescription = identityResult.fields.description;
|
|
6060
6169
|
console.log(`[${role}] Identity changed — refreshing system prompt (${identityResult.changedFields.join(", ")})`);
|
|
6061
6170
|
}
|
|
6062
|
-
const
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6171
|
+
const taskSession = await buildTaskSessionPrompts({
|
|
6172
|
+
basePromptArgs: basePromptArgs(),
|
|
6173
|
+
additionalSystemPrompt,
|
|
6174
|
+
taskPrompt: triggerPrompt,
|
|
6175
|
+
context: {
|
|
6176
|
+
repoContext: currentRepoContext,
|
|
6177
|
+
slackContext: taskSlackContext,
|
|
6178
|
+
requestedBy: trigger.requestedBy,
|
|
6179
|
+
cwdWarning
|
|
6180
|
+
}
|
|
6181
|
+
});
|
|
6182
|
+
const taskSystemPrompt = taskSession.systemPrompt;
|
|
6183
|
+
triggerPrompt = taskSession.prompt;
|
|
6068
6184
|
const modelUnsupported = trigger.task?.modelUnsupported;
|
|
6069
6185
|
if (trigger.taskId && modelUnsupported) {
|
|
6070
6186
|
console.log(`[${role}] ${modelUnsupported}`);
|