@desplega.ai/agent-swarm 1.172.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-fpecx1g1.js → acp-adapter-sj2g0m84.js} +18 -17
- package/dist/{actions-pw87a1a8.js → actions-fegk44gr.js} +65 -35
- package/dist/{amp-adapter-8jem2bc0.js → amp-adapter-ad8ft89x.js} +8 -7
- package/dist/{anthropic-messages-8ee2f22q.js → anthropic-messages-r6czkjv1.js} +7 -7
- package/dist/{app-wmf0m843.js → app-kfvgbvzy.js} +19 -13
- package/dist/{assistant-emp1e108.js → assistant-z7zdy9ja.js} +65 -38
- package/dist/{boot-reembed-1de4f4aj.js → boot-reembed-5c2z0mbe.js} +11 -9
- package/dist/{boot-reembed-4ymn9atn.js → boot-reembed-j8xa181e.js} +11 -9
- package/dist/{boot-scrub-sweep-adhk1s8c.js → boot-scrub-sweep-hnkn3rgt.js} +12 -10
- package/dist/{boot-seeds-8q637aew.js → boot-seeds-kwjq4d2z.js} +15 -13
- package/dist/{claude-adapter-t26cv8a4.js → claude-adapter-9vmvpvgd.js} +20 -19
- 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-gsfsh662.js → claude-sdk-session-9jye6cxr.js} +12698 -11995
- package/dist/{cli-k46r9hmk.js → cli-03gedhng.js} +16 -14
- package/dist/{cli-kb4ehzx5.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-8vs9trd4.js → cli-3dj8k4vy.js} +1 -1
- package/dist/{cli-zxm9p3x4.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-6jb2rf77.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-pj6x9qce.js → cli-6jyj59nb.js} +2 -2
- package/dist/{cli-388egyf6.js → cli-6razj6t4.js} +2 -2
- package/dist/{cli-qsztpfry.js → cli-74ahz61x.js} +2 -2
- package/dist/{cli-4nz8p1p5.js → cli-7x0g4sn1.js} +15474 -16082
- 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-bf7485pm.js → cli-apx87jne.js} +2 -2
- package/dist/{cli-ztrv9y21.js → cli-bzszjf2p.js} +3689 -1081
- 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-1hgat6pa.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-j6kpj9az.js → cli-ee9gtz70.js} +1553 -68
- package/dist/{cli-e0a9sk00.js → cli-eejsgvm4.js} +4 -4
- package/dist/{cli-tgpfnm6r.js → cli-ef1hg1wv.js} +518 -59
- 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-4fnb6884.js → cli-hvqbtna4.js} +7 -1259
- package/dist/{cli-pstq9888.js → cli-j0pfptdp.js} +220 -103
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-esnpehf5.js → cli-k382tshb.js} +12 -13
- package/dist/cli-k3dp5tpf.js +263 -0
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-prrt9fa0.js → cli-ke896fcf.js} +10 -10
- package/dist/{cli-nv4zd0b9.js → cli-kt6zqg0e.js} +6 -6
- package/dist/{cli-g6t9texm.js → cli-m50t4309.js} +5 -18
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-c2pq2rjb.js → cli-n3hzg89b.js} +46 -15
- package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
- package/dist/{cli-5rv1j9ga.js → cli-ne236afy.js} +53 -7
- package/dist/cli-p0sg24zp.js +16 -0
- package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
- package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
- package/dist/{cli-g4f5pj26.js → cli-q0ke1yww.js} +111 -25
- package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-gj81e47t.js → cli-r2pnvj8g.js} +2 -2
- package/dist/{cli-r8smj8b8.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-nyhb1r6x.js → cli-s2sp957d.js} +52 -29
- package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
- package/dist/{cli-xczpdp9e.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-cf69s3ew.js → cli-tr4sxp68.js} +3 -3
- package/dist/{cli-8hzfb6xz.js → cli-tsde1hdr.js} +15 -15
- package/dist/{cli-cceskcvt.js → cli-txqb9s38.js} +8 -8
- package/dist/{cli-aspcaef3.js → cli-v1yb0rqb.js} +6 -6
- package/dist/{cli-j1pmc07z.js → cli-vatyhshy.js} +268 -40
- package/dist/{cli-04emfe2q.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-hwwvy36w.js → cli-wayw93nt.js} +3 -3
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-gp1rtyvk.js → cli-z5jjpaxw.js} +29 -6
- package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
- package/dist/cli.js +32 -48
- package/dist/{codex-adapter-m4tgdysy.js → codex-adapter-y81sssk0.js} +16 -15
- package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
- package/dist/{codex-session-runner-ymwzm6ea.js → codex-session-runner-8vx4j6a9.js} +16 -15
- package/dist/{commands-n0hshcvs.js → commands-kcpvpcrr.js} +21 -10
- package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
- package/dist/{controllers-connect-y07cqcvy.js → controllers-connect-kwpvj3rf.js} +45 -38
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
- package/dist/{db-hkqvrdcb.js → db-k8ankj20.js} +13 -11
- package/dist/{db-4w7tmt1g.js → db-ww5d7jq3.js} +29 -9
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
- package/dist/{dispatcher-5sd69y14.js → dispatcher-e8gq5m68.js} +41 -34
- package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
- package/dist/{dsh-adapter-2h8m4cab.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-h3359cwn.js +52 -0
- package/dist/{google-generative-ai-7pavrbv7.js → google-generative-ai-g8db7x0f.js} +5 -3
- package/dist/{google-vertex-3f1jk41f.js → google-vertex-r2692q0r.js} +5 -3
- package/dist/{grok-adapter-8m9yqzbq.js → grok-adapter-0d4x7gkx.js} +19 -18
- package/dist/{handlers-s20xr10r.js → handlers-an1gzv21.js} +44 -37
- package/dist/{heartbeat-3k31q4g2.js → heartbeat-6dakeb61.js} +46 -39
- package/dist/{hook-gdn6a2fn.js → hook-6v6cv6d5.js} +12 -24
- package/dist/{hook-ygwerrdh.js → hook-sa5xye4y.js} +13 -12
- package/dist/{http-jdteeg81.js → http-r7f3eky0.js} +1598 -279
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-e0snym4t.js → index-7ep4gzdk.js} +41 -34
- 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-vm3bm9t7.js → index-rmpw9a8q.js} +41 -34
- package/dist/{index-6ksewd5y.js → index-s2wxgzr0.js} +1015 -732
- package/dist/{index-tsszt7g9.js → index-v1v6n7hg.js} +46 -39
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{index-ffqzqgwb.js → index-zk96aq1k.js} +11 -9
- package/dist/{keepalive-jekc896t.js → keepalive-be9vwy5h.js} +13 -11
- package/dist/{lead-4k9s9szx.js → lead-0861cwrf.js} +64 -57
- package/dist/{maintenance-shazch4n.js → maintenance-mzzgc8bn.js} +11 -9
- package/dist/node-c9we95xf.js +1 -1
- package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
- package/dist/{oauth-refresh-sweep-5gb36kn8.js → oauth-refresh-sweep-cpdnfwdj.js} +12 -10
- package/dist/{onboard-ydrbnvww.js → onboard-fh8qs4r3.js} +11 -3
- package/dist/{opencode-adapter-5zh0he20.js → opencode-adapter-nm42wwj8.js} +19 -14
- package/dist/{otel-impl-6pf5cv86.js → otel-impl-x6c1c9g4.js} +248 -869
- package/dist/{pi-mono-adapter-ef9wwx9m.js → pi-mono-adapter-9n2ya240.js} +245 -107
- package/dist/{pricing-refresh-s52nsa5q.js → pricing-refresh-qb0rv0ap.js} +13 -11
- package/dist/{rbac-roles-aq3msh4e.js → rbac-roles-1gzdwbh1.js} +12 -10
- package/dist/{rbac-roles-q5gb5e8v.js → rbac-roles-3mraey52.js} +13 -11
- package/dist/{render-v2-pd1rg54q.js → render-v2-agpa45zz.js} +19 -13
- package/dist/{resume-gw4a2c6v.js → resume-x0ydy9s9.js} +27 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-jda1ksdh.js → setup-as9ga0d6.js} +2 -2
- package/dist/{virtual-modules-b3ga2m65.js → virtual-modules-9gkxqrap.js} +7 -6
- package/dist/{work-objects-tb7ycye8.js → work-objects-y5g1y7ev.js} +49 -37
- package/dist/{worker-njjccz5d.js → worker-860c3e38.js} +64 -57
- package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
- package/openapi.json +951 -356
- package/package.json +12 -13
- package/src/apps/catalog.generated.json +1309 -53
- package/src/apps/page-validator.ts +93 -31
- package/src/azure-devops/api.ts +94 -18
- package/src/azure-devops/auth.ts +32 -0
- package/src/azure-devops/boards-sync.ts +708 -0
- package/src/azure-devops/handlers.ts +52 -8
- package/src/azure-devops/html.ts +26 -0
- package/src/azure-devops/index.ts +15 -0
- package/src/azure-devops/templates.ts +86 -0
- package/src/azure-devops/types.ts +65 -1
- 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 +74 -13
- package/src/be/migrations/213_script_connections_sql.sql +79 -0
- 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-connections.ts +47 -8
- 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 +10 -18
- package/src/be/seed-skills/index.ts +107 -3
- package/src/be/sql-connections.ts +118 -0
- package/src/be/swarm-config-guard.ts +53 -0
- package/src/cli.tsx +0 -16
- package/src/commands/onboard/non-interactive.ts +4 -2
- package/src/commands/profile-sync.ts +5 -3
- package/src/commands/provider-credentials.ts +52 -6
- package/src/commands/runner.ts +196 -56
- 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-oauth.ts +6 -13
- package/src/http/mcp.ts +15 -5
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +6 -5
- package/src/http/pages.ts +5 -14
- package/src/http/poll.ts +28 -68
- package/src/http/requested-by.ts +54 -0
- package/src/http/route-def.ts +7 -6
- package/src/http/script-connection-proxy.ts +51 -4
- package/src/http/script-connections.ts +5 -2
- package/src/http/scripts.ts +1 -0
- package/src/http/session-cost-recompute.ts +12 -2
- package/src/http/session-data.ts +4 -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 +183 -2
- 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/jira/adf.ts +3 -1
- package/src/kv-reserved-namespaces.ts +2 -0
- package/src/oauth/mcp-wrapper.ts +10 -6
- package/src/otel-impl.ts +2 -1
- 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 +56 -3
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/claude-adapter.ts +27 -2
- package/src/providers/claude-flag-settings.ts +133 -0
- package/src/providers/claude-managed-adapter.ts +1 -1
- package/src/providers/claude-sdk-session.ts +7 -0
- package/src/providers/claude-session-events.ts +6 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/providers/opencode-adapter.ts +268 -37
- package/src/providers/opencode-billing.ts +86 -0
- package/src/providers/opencode-swarm-plugin.ts +51 -0
- package/src/providers/pi-mono-adapter.ts +398 -153
- package/src/providers/pricing-sources.md +37 -3
- package/src/providers/reasoning-effort.ts +27 -0
- package/src/providers/types.ts +11 -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/api-client.ts +15 -1
- package/src/scripts-runtime/api-types.ts +9 -1
- package/src/scripts-runtime/ctx.ts +1 -1
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/mcp-client.ts +30 -19
- 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/actions.ts +29 -1
- package/src/slack/app.ts +14 -2
- package/src/slack/assistant.ts +36 -2
- package/src/slack/channel-join.ts +3 -16
- package/src/slack/commands.ts +9 -1
- package/src/slack/event-dedup.ts +1 -1
- package/src/slack/external-channel-egress.ts +113 -0
- package/src/slack/external-channel.ts +309 -0
- package/src/slack/handlers.ts +61 -0
- package/src/slack/render-v2.ts +40 -47
- package/src/slack/work-objects.ts +5 -0
- package/src/tasks/additive-buffer.ts +4 -2
- package/src/tasks/context-key.ts +94 -2
- package/src/tasks/model-pin.ts +67 -0
- package/src/tasks/worker-follow-up.ts +4 -31
- package/src/telemetry.ts +2 -1
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/apps-catalog-feedback.test.ts +310 -0
- package/src/tests/apps-catalog-inputs.test.ts +70 -0
- package/src/tests/apps-catalog-table.test.ts +113 -0
- package/src/tests/azure-devops-boards-sync.test.ts +584 -0
- package/src/tests/azure-devops-html.test.ts +13 -0
- package/src/tests/azure-devops-webhook-malformed.test.ts +4 -0
- 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 +144 -0
- package/src/tests/claude-flag-settings.test.ts +114 -0
- package/src/tests/claude-managed-adapter.test.ts +1 -1
- package/src/tests/claude-sdk-lifecycle.test.ts +148 -1
- package/src/tests/claude-sdk-process.fixture.ts +7 -0
- 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 +51 -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/deferred-task-wake.test.ts +52 -4
- 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/azure-boards/workitem.commented.json +89 -0
- package/src/tests/fixtures/azure-boards/workitem.created.json +81 -0
- package/src/tests/fixtures/azure-boards/workitem.deleted.json +70 -0
- package/src/tests/fixtures/azure-boards/workitem.restored.json +82 -0
- package/src/tests/fixtures/azure-boards/workitem.updated.json +130 -0
- package/src/tests/fixtures/catalog-feedback-definition.json.txt +860 -0
- package/src/tests/fixtures/catalog-inputs-definition.json.txt +910 -0
- package/src/tests/fixtures/catalog-table-definition.json.txt +468 -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-identity-refresh.ts +3 -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/node-env-runtime.test.ts +98 -0
- 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 +348 -3
- package/src/tests/opencode-billing.test.ts +28 -0
- 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-identity-refresh.test.ts +3 -0
- package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
- package/src/tests/script-connections-sql.test.ts +675 -0
- package/src/tests/script-connections.test.ts +7 -1
- 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 +94 -0
- package/src/tests/skill-get-name-resolution.test.ts +137 -0
- package/src/tests/slack-channel-join.test.ts +4 -1
- package/src/tests/slack-external-channel-config.test.ts +65 -0
- package/src/tests/slack-external-channel-egress.test.ts +237 -0
- package/src/tests/slack-external-channel-guard.test.ts +280 -0
- package/src/tests/slack-external-channel-tools.test.ts +173 -0
- package/src/tests/slack-external-channel.test.ts +370 -0
- package/src/tests/slack-render-v2.test.ts +86 -10
- package/src/tests/sonnet-5-5-registry.test.ts +9 -1
- package/src/tests/spec-base-url.test.ts +16 -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/vendored-openapi.test.ts +16 -1
- 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/defer-task.ts +17 -0
- 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/slack-post.ts +6 -0
- package/src/tools/slack-read.ts +8 -0
- package/src/tools/slack-reply.ts +6 -0
- package/src/tools/slack-start-thread.ts +6 -0
- package/src/tools/slack-update.ts +6 -0
- package/src/tools/slack-upload-file.ts +6 -0
- 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/node-env.ts +24 -0
- 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 +749 -0
- package/templates/skills/apps/content.md +60 -22
- 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/qa-loom/config.json +14 -0
- package/templates/skills/qa-loom/content.md +187 -0
- package/templates/skills/qa-loom/files/build-loom.mjs +221 -0
- package/templates/skills/qa-loom/files/run-qa.sh +57 -0
- package/templates/skills/slack-interaction/content.md +4 -0
- 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-9xsmdpdt.js +0 -56377
- package/dist/cli-bd957dgb.js +0 -153
- package/dist/cli-q51yprfq.js +0 -1104
- package/dist/cli-t1ze64h3.js +0 -811
- 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/dist/{azure-openai-responses-ap1gwxgr.js → azure-openai-responses-ygfreq4t.js} +5 -5
- package/dist/{cli-5rqrj7q0.js → cli-pw7ebjdt.js} +0 -0
- package/dist/{openai-codex-responses-33qhkkdy.js → openai-codex-responses-3bk0grnr.js} +4 -4
- package/dist/{openai-completions-s88xm3ns.js → openai-completions-5d4jpakc.js} +9 -9
- package/dist/{openai-responses-7xd2f2e2.js → openai-responses-krb51f59.js} +5 -5
- package/dist/{pi-messages-xszk613n.js → pi-messages-x9gzynm1.js} +3 -3
- /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-j1pmc07z.js";
|
|
28
|
-
import {
|
|
29
|
-
checkDshCredentials
|
|
30
|
-
} from "./cli-zxm9p3x4.js";
|
|
36
|
+
checkClaudeCredentials
|
|
37
|
+
} from "./cli-q0ke1yww.js";
|
|
31
38
|
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
} from "./cli-04emfe2q.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-g4f5pj26.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,8 +115,9 @@ import {
|
|
|
109
115
|
isTerminalTaskStatus,
|
|
110
116
|
parseWorkerModelTierOverrides,
|
|
111
117
|
resolveTaskModelSelection
|
|
112
|
-
} from "./cli-
|
|
118
|
+
} from "./cli-cgtksawx.js";
|
|
113
119
|
import {
|
|
120
|
+
WORKSPACE_CLAUDE_MD_PATH,
|
|
114
121
|
buildContextPreamble,
|
|
115
122
|
buildResumeContextPreamble,
|
|
116
123
|
contentSha256,
|
|
@@ -119,6 +126,7 @@ import {
|
|
|
119
126
|
generateDefaultSoulMd,
|
|
120
127
|
generateDefaultToolsMd,
|
|
121
128
|
getBasePrompt,
|
|
129
|
+
getTaskContextPrompt,
|
|
122
130
|
init_base_prompt,
|
|
123
131
|
init_context_preamble,
|
|
124
132
|
init_defaults,
|
|
@@ -131,20 +139,21 @@ import {
|
|
|
131
139
|
taskAttachmentFetchCommand,
|
|
132
140
|
writeIdentityBaselines,
|
|
133
141
|
writeProfileFileFromDb
|
|
134
|
-
} from "./cli-
|
|
142
|
+
} from "./cli-s2sp957d.js";
|
|
135
143
|
import {
|
|
136
144
|
init_steering_enabled,
|
|
137
145
|
isSteeringEnabled
|
|
138
146
|
} from "./cli-7mm2r1kp.js";
|
|
139
|
-
import {
|
|
140
|
-
init_templates
|
|
141
|
-
} from "./cli-mvzyxwg3.js";
|
|
142
147
|
import {
|
|
143
148
|
CLAUDE_CREDENTIALS_HINT,
|
|
144
149
|
ModelWindowExhaustedError,
|
|
145
150
|
init_credentials,
|
|
151
|
+
normalizeProviderKeyAliases,
|
|
146
152
|
resolveCredentialPools
|
|
147
|
-
} from "./cli-
|
|
153
|
+
} from "./cli-5hkm7whv.js";
|
|
154
|
+
import {
|
|
155
|
+
init_templates
|
|
156
|
+
} from "./cli-mvzyxwg3.js";
|
|
148
157
|
import {
|
|
149
158
|
configureHttpResolver,
|
|
150
159
|
init_resolver,
|
|
@@ -161,7 +170,7 @@ import {
|
|
|
161
170
|
} from "./cli-ywybs5as.js";
|
|
162
171
|
import {
|
|
163
172
|
deriveDefaultRoute,
|
|
164
|
-
init_src,
|
|
173
|
+
init_src as init_src2,
|
|
165
174
|
validateRoute
|
|
166
175
|
} from "./cli-f9w1semm.js";
|
|
167
176
|
import {
|
|
@@ -170,12 +179,10 @@ import {
|
|
|
170
179
|
init_openrouter_base_url
|
|
171
180
|
} from "./cli-a35hzdve.js";
|
|
172
181
|
import {
|
|
173
|
-
harnessModelMismatch,
|
|
174
182
|
init_runtime_model_catalog,
|
|
175
|
-
init_src as init_src2,
|
|
176
183
|
refreshRuntimeModelCatalog,
|
|
177
184
|
runtimeHarnessSections
|
|
178
|
-
} from "./cli-
|
|
185
|
+
} from "./cli-stfs0k5s.js";
|
|
179
186
|
import {
|
|
180
187
|
getMcpBaseUrl,
|
|
181
188
|
init_constants
|
|
@@ -186,9 +193,18 @@ import {
|
|
|
186
193
|
} from "./cli-a1b9b32n.js";
|
|
187
194
|
import {
|
|
188
195
|
init_secret_scrubber,
|
|
196
|
+
registerEnvSecrets,
|
|
189
197
|
registerSensitiveKeyName,
|
|
190
198
|
scrubSecrets
|
|
191
|
-
} 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";
|
|
192
208
|
import {
|
|
193
209
|
__require
|
|
194
210
|
} from "./cli-bc05qbss.js";
|
|
@@ -225,47 +241,47 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
|
|
|
225
241
|
async function createProviderAdapter(provider) {
|
|
226
242
|
switch (provider) {
|
|
227
243
|
case "claude": {
|
|
228
|
-
const { ClaudeAdapter } = await import("./claude-adapter-
|
|
244
|
+
const { ClaudeAdapter } = await import("./claude-adapter-9vmvpvgd.js");
|
|
229
245
|
return new ClaudeAdapter;
|
|
230
246
|
}
|
|
231
247
|
case "pi": {
|
|
232
|
-
const { PiMonoAdapter } = await import("./pi-mono-adapter-
|
|
248
|
+
const { PiMonoAdapter } = await import("./pi-mono-adapter-9n2ya240.js");
|
|
233
249
|
return new PiMonoAdapter;
|
|
234
250
|
}
|
|
235
251
|
case "codex": {
|
|
236
|
-
const { CodexAdapter } = await import("./codex-adapter-
|
|
252
|
+
const { CodexAdapter } = await import("./codex-adapter-y81sssk0.js");
|
|
237
253
|
return new CodexAdapter;
|
|
238
254
|
}
|
|
239
255
|
case "claude-managed": {
|
|
240
|
-
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-
|
|
256
|
+
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-k9qae05j.js");
|
|
241
257
|
return new ClaudeManagedAdapter;
|
|
242
258
|
}
|
|
243
259
|
case "devin": {
|
|
244
|
-
const { DevinAdapter } = await import("./devin-adapter-
|
|
260
|
+
const { DevinAdapter } = await import("./devin-adapter-x1022qb1.js");
|
|
245
261
|
return new DevinAdapter;
|
|
246
262
|
}
|
|
247
263
|
case "opencode": {
|
|
248
|
-
const { OpencodeAdapter } = await import("./opencode-adapter-
|
|
264
|
+
const { OpencodeAdapter } = await import("./opencode-adapter-nm42wwj8.js");
|
|
249
265
|
return new OpencodeAdapter;
|
|
250
266
|
}
|
|
251
267
|
case "dsh": {
|
|
252
|
-
const { DshAdapter } = await import("./dsh-adapter-
|
|
268
|
+
const { DshAdapter } = await import("./dsh-adapter-3epjm3af.js");
|
|
253
269
|
return new DshAdapter;
|
|
254
270
|
}
|
|
255
271
|
case "amp": {
|
|
256
|
-
const { AmpAdapter } = await import("./amp-adapter-
|
|
272
|
+
const { AmpAdapter } = await import("./amp-adapter-ad8ft89x.js");
|
|
257
273
|
return new AmpAdapter;
|
|
258
274
|
}
|
|
259
275
|
case "cursor": {
|
|
260
|
-
const { CursorAdapter } = await import("./cursor-adapter-
|
|
276
|
+
const { CursorAdapter } = await import("./cursor-adapter-cehv1qns.js");
|
|
261
277
|
return new CursorAdapter;
|
|
262
278
|
}
|
|
263
279
|
case "grok": {
|
|
264
|
-
const { GrokAdapter } = await import("./grok-adapter-
|
|
280
|
+
const { GrokAdapter } = await import("./grok-adapter-0d4x7gkx.js");
|
|
265
281
|
return new GrokAdapter;
|
|
266
282
|
}
|
|
267
283
|
case "acp": {
|
|
268
|
-
const { ACPAdapter } = await import("./acp-adapter-
|
|
284
|
+
const { ACPAdapter } = await import("./acp-adapter-sj2g0m84.js");
|
|
269
285
|
return new ACPAdapter;
|
|
270
286
|
}
|
|
271
287
|
default:
|
|
@@ -453,6 +469,7 @@ function computeBudgetBackoffMs(consecutiveRefusals, basePollMs) {
|
|
|
453
469
|
|
|
454
470
|
// src/commands/runner.ts
|
|
455
471
|
init_codex_auth_failure();
|
|
472
|
+
init_config_env_export();
|
|
456
473
|
init_config_secrets();
|
|
457
474
|
init_constants();
|
|
458
475
|
init_credentials();
|
|
@@ -534,15 +551,17 @@ async function reportHarnessModelOutcome(opts) {
|
|
|
534
551
|
}
|
|
535
552
|
|
|
536
553
|
// src/utils/harness-provider.ts
|
|
554
|
+
init_src();
|
|
537
555
|
init_types();
|
|
538
556
|
var SUPPORTED_PROVIDERS = ProviderNameSchema.options;
|
|
539
557
|
function hasEnvValue(key, resolvedEnv, fallbackEnv) {
|
|
540
558
|
return !!(resolvedEnv[key]?.trim() || fallbackEnv[key]?.trim());
|
|
541
559
|
}
|
|
560
|
+
var PI_DEFAULT_KEY_VARS = ["OPENROUTER_API_KEY", ...openAICompatibleKeyVars()];
|
|
542
561
|
function credentialAwareDefault(resolvedEnv, fallbackEnv) {
|
|
543
|
-
const
|
|
562
|
+
const hasPiKey = PI_DEFAULT_KEY_VARS.some((key) => hasEnvValue(key, resolvedEnv, fallbackEnv));
|
|
544
563
|
const hasClaudeCredential = hasEnvValue("ANTHROPIC_API_KEY", resolvedEnv, fallbackEnv) || hasEnvValue("CLAUDE_CODE_OAUTH_TOKEN", resolvedEnv, fallbackEnv);
|
|
545
|
-
return
|
|
564
|
+
return hasPiKey && !hasClaudeCredential ? "pi" : "claude";
|
|
546
565
|
}
|
|
547
566
|
function resolveHarnessProvider(resolvedEnv, fallbackEnv = process.env) {
|
|
548
567
|
const candidate = resolvedEnv.HARNESS_PROVIDER?.trim() || fallbackEnv.HARNESS_PROVIDER?.trim();
|
|
@@ -865,7 +884,7 @@ async function refreshSkillsIfChanged(ctx, lastHashRef, homeOverride) {
|
|
|
865
884
|
}
|
|
866
885
|
|
|
867
886
|
// src/utils/spawn-model-guard.ts
|
|
868
|
-
|
|
887
|
+
init_src();
|
|
869
888
|
init_runtime_model_catalog();
|
|
870
889
|
function spawnHarnessMismatchReason(model, harness) {
|
|
871
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.`;
|
|
@@ -1109,6 +1128,7 @@ async function reportCredentialOutcomeThenFinish(input, finish) {
|
|
|
1109
1128
|
|
|
1110
1129
|
// src/commands/provider-credentials.ts
|
|
1111
1130
|
init_src();
|
|
1131
|
+
init_src2();
|
|
1112
1132
|
init_credentials();
|
|
1113
1133
|
init_openrouter_base_url();
|
|
1114
1134
|
init_secret_scrubber();
|
|
@@ -1119,6 +1139,29 @@ function isBedrockMode(env) {
|
|
|
1119
1139
|
function shouldRefreshBedrockStatus(opts) {
|
|
1120
1140
|
return opts.harnessProvider === "pi" && isBedrockMode(opts.env) && opts.now - opts.lastRefreshAt > opts.intervalMs;
|
|
1121
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
|
+
};
|
|
1122
1165
|
var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
1123
1166
|
dsh: (env) => checkDshCredentials(env),
|
|
1124
1167
|
amp: (env) => checkAmpCredentials(env),
|
|
@@ -1130,7 +1173,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
|
1130
1173
|
devin: (env) => checkDevinCredentials(env),
|
|
1131
1174
|
opencode: (env, opts) => checkOpencodeCredentials(env, opts),
|
|
1132
1175
|
pi: async (env, opts) => {
|
|
1133
|
-
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-
|
|
1176
|
+
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-9n2ya240.js");
|
|
1134
1177
|
return checkPiMonoCredentials(env, opts);
|
|
1135
1178
|
},
|
|
1136
1179
|
acp: (env) => {
|
|
@@ -1245,6 +1288,19 @@ async function checkOpenRouter(apiKey) {
|
|
|
1245
1288
|
latency_ms: r.latency_ms
|
|
1246
1289
|
};
|
|
1247
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
|
+
}
|
|
1248
1304
|
function codexAuthFileExists(env) {
|
|
1249
1305
|
return checkCodexCredentials(env).satisfiedBy === "file";
|
|
1250
1306
|
}
|
|
@@ -1317,11 +1373,17 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1317
1373
|
return checkAnthropicApiKey(env.ANTHROPIC_API_KEY);
|
|
1318
1374
|
if (env.OPENAI_API_KEY)
|
|
1319
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
|
+
}
|
|
1320
1382
|
if (status.ready)
|
|
1321
1383
|
return presenceCheckOk();
|
|
1322
1384
|
return {
|
|
1323
1385
|
ok: false,
|
|
1324
|
-
error:
|
|
1386
|
+
error: `No usable credential found (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, ${openAICompatibleProviders().map((p) => p.envVar).join(", ").replace(/, (?=[^,]*$)/, ", or ")}).`,
|
|
1325
1387
|
latency_ms: Date.now() - startedAt
|
|
1326
1388
|
};
|
|
1327
1389
|
}
|
|
@@ -1380,7 +1442,7 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1380
1442
|
latency_ms: Date.now() - startedAt
|
|
1381
1443
|
};
|
|
1382
1444
|
}
|
|
1383
|
-
const { liveTestCursorKey } = await import("./cursor-adapter-
|
|
1445
|
+
const { liveTestCursorKey } = await import("./cursor-adapter-cehv1qns.js");
|
|
1384
1446
|
const result = await liveTestCursorKey(apiKey);
|
|
1385
1447
|
return result.ok ? { ok: true, latency_ms: Date.now() - startedAt } : { ok: false, error: result.error, latency_ms: Date.now() - startedAt };
|
|
1386
1448
|
}
|
|
@@ -1913,13 +1975,6 @@ function scheduleRunnerGc(reason) {
|
|
|
1913
1975
|
timer.unref?.();
|
|
1914
1976
|
return true;
|
|
1915
1977
|
}
|
|
1916
|
-
async function savePm2State(role) {
|
|
1917
|
-
try {
|
|
1918
|
-
console.log(`[${role}] Saving PM2 process list...`);
|
|
1919
|
-
await Bun.$`pm2 save`.quiet();
|
|
1920
|
-
console.log(`[${role}] PM2 state saved`);
|
|
1921
|
-
} catch {}
|
|
1922
|
-
}
|
|
1923
1978
|
async function fetchRepoConfig(apiUrl, apiKey, vcsRepo, requireExactMatch = false) {
|
|
1924
1979
|
try {
|
|
1925
1980
|
const requested = vcsRepo.trim().replace(/\/+$/, "").replace(/\.git$/, "");
|
|
@@ -2254,6 +2309,16 @@ async function exitAfterTasksIfFinished(state, limit, shutdown) {
|
|
|
2254
2309
|
}
|
|
2255
2310
|
var deploymentMemoryRaters = process.env.MEMORY_RATERS;
|
|
2256
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
|
+
}
|
|
2257
2322
|
async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env, taskModel, sessionContext) {
|
|
2258
2323
|
const env = { ...baseEnv };
|
|
2259
2324
|
for (const key of Object.keys(env)) {
|
|
@@ -2283,7 +2348,17 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2283
2348
|
if (data.configs?.length) {
|
|
2284
2349
|
const skippedSecretKeys = [];
|
|
2285
2350
|
scriptsOnlyConfigValue = data.configs.find((config) => config.key === "SCRIPTS_ONLY_MCP")?.value;
|
|
2351
|
+
const withheldEnvKeys = [];
|
|
2286
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
|
+
}
|
|
2287
2362
|
if (config.isSecret && config.value === MASKED_SECRET_VALUE) {
|
|
2288
2363
|
skippedSecretKeys.push(config.key);
|
|
2289
2364
|
continue;
|
|
@@ -2301,6 +2376,7 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2301
2376
|
if (skippedSecretKeys.length) {
|
|
2302
2377
|
console.warn(scrubSecrets(`[env-reload] Skipped masked secrets: ${skippedSecretKeys.join(", ")}`));
|
|
2303
2378
|
}
|
|
2379
|
+
logWithheldEnvKeys(withheldEnvKeys);
|
|
2304
2380
|
console.log(`[env-reload] Loaded ${data.configs.length} config entries from API`);
|
|
2305
2381
|
}
|
|
2306
2382
|
const codexPoolSlots = countCodexOAuthPoolSlots(data.configs ?? []);
|
|
@@ -2310,6 +2386,8 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2310
2386
|
console.warn(`[env-reload] Could not fetch config, using current env: ${error}`);
|
|
2311
2387
|
}
|
|
2312
2388
|
}
|
|
2389
|
+
normalizeProviderKeyAliases(env);
|
|
2390
|
+
registerEnvSecrets(env);
|
|
2313
2391
|
const resolvedProvider = sessionContext?.provider ?? resolveHarnessProvider(env, baseEnv);
|
|
2314
2392
|
if (sessionContext?.provider)
|
|
2315
2393
|
env.HARNESS_PROVIDER = sessionContext.provider;
|
|
@@ -2510,10 +2588,6 @@ var SWARM_TOOL_LABELS = {
|
|
|
2510
2588
|
"create-channel": "\uD83D\uDCE2 Creating channel",
|
|
2511
2589
|
"list-channels": "\uD83D\uDCE2 Listing channels",
|
|
2512
2590
|
"delete-channel": "\uD83D\uDCE2 Deleting channel",
|
|
2513
|
-
"register-service": "\uD83D\uDD0C Registering service",
|
|
2514
|
-
"list-services": "\uD83D\uDD0C Listing services",
|
|
2515
|
-
"unregister-service": "\uD83D\uDD0C Unregistering service",
|
|
2516
|
-
"update-service-status": "\uD83D\uDD0C Updating service status",
|
|
2517
2591
|
"script-search": "\uD83D\uDCDC Searching scripts",
|
|
2518
2592
|
"script-run": "\uD83D\uDCDC Running script",
|
|
2519
2593
|
"script-upsert": "\uD83D\uDCDC Saving script",
|
|
@@ -3173,7 +3247,6 @@ function setupShutdownHandlers(role, apiConfig, getRunnerState, onShutdown) {
|
|
|
3173
3247
|
});
|
|
3174
3248
|
await closeAgent(apiConfig, role);
|
|
3175
3249
|
}
|
|
3176
|
-
await savePm2State(role);
|
|
3177
3250
|
process.exit(exitCode);
|
|
3178
3251
|
};
|
|
3179
3252
|
const beginShutdown = (signal, exitCode = 0) => shutdown(signal, exitCode).catch(async (error) => {
|
|
@@ -3253,11 +3326,13 @@ async function saveCostData(cost, apiUrl, apiKey, deadline) {
|
|
|
3253
3326
|
console.warn(scrubSecrets(`[runner] Error saving cost data: ${error}`));
|
|
3254
3327
|
}
|
|
3255
3328
|
}
|
|
3256
|
-
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) {
|
|
3257
3330
|
const headers = { "Content-Type": "application/json" };
|
|
3258
3331
|
if (apiKey)
|
|
3259
3332
|
headers.Authorization = `Bearer ${apiKey}`;
|
|
3260
3333
|
const body = { claudeSessionId };
|
|
3334
|
+
if (effort !== undefined && provider !== "devin")
|
|
3335
|
+
body.effort = effort;
|
|
3261
3336
|
if (provider !== undefined)
|
|
3262
3337
|
body.provider = provider;
|
|
3263
3338
|
if (providerMeta !== undefined)
|
|
@@ -3544,6 +3619,33 @@ ${notes}` : "";
|
|
|
3544
3619
|
});
|
|
3545
3620
|
return result.skipped ? "" : result.text.trim();
|
|
3546
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
|
+
}
|
|
3547
3649
|
|
|
3548
3650
|
class AgentRegistrationHttpError extends Error {
|
|
3549
3651
|
status;
|
|
@@ -4076,6 +4178,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4076
4178
|
if (spawnModel.warning)
|
|
4077
4179
|
console.warn(spawnModel.warning);
|
|
4078
4180
|
const model = spawnModel.model;
|
|
4181
|
+
const sessionEffort = effectiveReasoningEffort(adapter.name, model, reasoningEffortOverride);
|
|
4079
4182
|
let oauthSelection;
|
|
4080
4183
|
let oauthIsPoolBacked = false;
|
|
4081
4184
|
if (adapter.name === "codex") {
|
|
@@ -4248,7 +4351,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4248
4351
|
}).catch((err) => console.warn(`[runner] Failed to report ACP options: ${err}`));
|
|
4249
4352
|
}
|
|
4250
4353
|
if (realTaskId) {
|
|
4251
|
-
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}`));
|
|
4252
4355
|
} else {
|
|
4253
4356
|
saveProviderSessionIdOnActiveSession(opts.apiUrl, opts.apiKey, effectiveTaskId, event.sessionId).catch((err) => console.warn(`[runner] Failed to save provider session on active session: ${err}`));
|
|
4254
4357
|
}
|
|
@@ -5076,11 +5179,9 @@ async function runAgent(config, opts) {
|
|
|
5076
5179
|
let agentDescription;
|
|
5077
5180
|
let agentSkillsSummary;
|
|
5078
5181
|
let agentMcpServers;
|
|
5079
|
-
|
|
5080
|
-
let currentTaskSlackContext;
|
|
5081
|
-
const buildSystemPrompt = async () => {
|
|
5182
|
+
const basePromptArgs = () => {
|
|
5082
5183
|
const { traits } = adapter;
|
|
5083
|
-
return
|
|
5184
|
+
return {
|
|
5084
5185
|
role,
|
|
5085
5186
|
agentId,
|
|
5086
5187
|
capabilities,
|
|
@@ -5093,14 +5194,13 @@ async function runAgent(config, opts) {
|
|
|
5093
5194
|
soulMd: agentSoulMd,
|
|
5094
5195
|
identityMd: agentIdentityMd,
|
|
5095
5196
|
claudeMd: agentClaudeMd,
|
|
5096
|
-
repoContext: currentRepoContext,
|
|
5097
|
-
slackContext: currentTaskSlackContext,
|
|
5098
5197
|
...traits.hasMcp && {
|
|
5099
5198
|
skillsSummary: agentSkillsSummary,
|
|
5100
5199
|
mcpServers: agentMcpServers
|
|
5101
5200
|
}
|
|
5102
|
-
}
|
|
5201
|
+
};
|
|
5103
5202
|
};
|
|
5203
|
+
const buildSystemPrompt = async () => getBasePrompt(basePromptArgs());
|
|
5104
5204
|
let basePrompt = await buildSystemPrompt();
|
|
5105
5205
|
let additionalSystemPrompt;
|
|
5106
5206
|
const systemPromptText = opts.systemPrompt || process.env.SYSTEM_PROMPT;
|
|
@@ -5577,7 +5677,7 @@ ${agentSetupScript}
|
|
|
5577
5677
|
}
|
|
5578
5678
|
if (agentClaudeMd) {
|
|
5579
5679
|
try {
|
|
5580
|
-
const backupPath = await writeProfileFileFromDb(
|
|
5680
|
+
const backupPath = await writeProfileFileFromDb(WORKSPACE_CLAUDE_MD_PATH, agentClaudeMd);
|
|
5581
5681
|
if (backupPath)
|
|
5582
5682
|
console.warn(`[${role}] Archived differing CLAUDE.md at ${backupPath}`);
|
|
5583
5683
|
console.log(`[${role}] Wrote CLAUDE.md to workspace`);
|
|
@@ -5714,7 +5814,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5714
5814
|
console.warn(`[${role}] Failed to check resume task dir "${task.dir}", falling back to default cwd`);
|
|
5715
5815
|
}
|
|
5716
5816
|
}
|
|
5717
|
-
|
|
5817
|
+
let resumeRepoContext;
|
|
5818
|
+
if (task.vcsRepo && apiUrl) {
|
|
5718
5819
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, task.vcsRepo);
|
|
5719
5820
|
const effectiveConfig = repoConfig ?? {
|
|
5720
5821
|
url: task.vcsRepo,
|
|
@@ -5723,10 +5824,27 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5723
5824
|
defaultBranch: "main"
|
|
5724
5825
|
};
|
|
5725
5826
|
const repoContext = await ensureRepoForTask(effectiveConfig, role, false);
|
|
5726
|
-
|
|
5827
|
+
resumeRepoContext = { ...repoContext, guidelines: repoConfig?.guidelines ?? null };
|
|
5828
|
+
if (!resumeCwd && repoContext?.clonePath) {
|
|
5727
5829
|
resumeCwd = repoContext.clonePath;
|
|
5728
5830
|
}
|
|
5729
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;
|
|
5730
5848
|
const resumeRunnerSessionId = crypto.randomUUID();
|
|
5731
5849
|
await registerActiveSession(apiConfig, {
|
|
5732
5850
|
taskId: task.id,
|
|
@@ -5739,7 +5857,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5739
5857
|
runningTask = await spawnProviderProcess(adapter, {
|
|
5740
5858
|
prompt: resumePrompt,
|
|
5741
5859
|
logFile,
|
|
5742
|
-
systemPrompt:
|
|
5860
|
+
systemPrompt: resumeSession.systemPrompt,
|
|
5743
5861
|
additionalArgs: opts.additionalArgs,
|
|
5744
5862
|
resumeSessionId: undefined,
|
|
5745
5863
|
role,
|
|
@@ -5749,10 +5867,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5749
5867
|
runnerSessionId: resumeRunnerSessionId,
|
|
5750
5868
|
iteration,
|
|
5751
5869
|
taskId: task.id,
|
|
5752
|
-
|
|
5870
|
+
...resumedTaskModelSelection(task),
|
|
5753
5871
|
modelTier: task.modelTier,
|
|
5754
|
-
resolvedModel: task.resolvedModel,
|
|
5755
|
-
modelSource: task.modelSource,
|
|
5756
5872
|
effort: task.effort,
|
|
5757
5873
|
harnessProvider: state.harnessProvider,
|
|
5758
5874
|
cwd: resumeCwd,
|
|
@@ -5979,7 +6095,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5979
6095
|
const taskContextKey = trigger.task?.contextKey;
|
|
5980
6096
|
const taskSlackChannelId = trigger.task?.slackChannelId;
|
|
5981
6097
|
const taskSlackThreadTs = trigger.task?.slackThreadTs;
|
|
5982
|
-
|
|
6098
|
+
const taskSlackContext = taskSlackChannelId ? { channelId: taskSlackChannelId, threadTs: taskSlackThreadTs } : undefined;
|
|
6099
|
+
let currentRepoContext;
|
|
5983
6100
|
const taskVcsRepo = trigger.task?.vcsRepo;
|
|
5984
6101
|
if (taskVcsRepo && apiUrl) {
|
|
5985
6102
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, taskVcsRepo);
|
|
@@ -5995,8 +6112,6 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5995
6112
|
...repoResult,
|
|
5996
6113
|
guidelines: repoConfig?.guidelines ?? null
|
|
5997
6114
|
};
|
|
5998
|
-
} else {
|
|
5999
|
-
currentRepoContext = undefined;
|
|
6000
6115
|
}
|
|
6001
6116
|
const taskDir = trigger.task?.dir;
|
|
6002
6117
|
let effectiveCwd;
|
|
@@ -6026,12 +6141,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
6026
6141
|
}
|
|
6027
6142
|
triggerPrompt += " You can still access any path on the filesystem — this is just your starting directory.";
|
|
6028
6143
|
}
|
|
6029
|
-
|
|
6030
|
-
if (taskDir && !effectiveCwd) {
|
|
6031
|
-
cwdWarning = `
|
|
6032
|
-
|
|
6033
|
-
Note: The task requested working directory "${taskDir}" but it does not exist. Falling back to default directory.`;
|
|
6034
|
-
}
|
|
6144
|
+
const cwdWarning = missingTaskDirWarning(taskDir, effectiveCwd);
|
|
6035
6145
|
if (state.harnessProvider !== "claude-managed") {
|
|
6036
6146
|
const skillResult = await refreshSkillsIfChanged({ apiUrl, swarmUrl, apiKey, agentId, role }, lastSkillHash);
|
|
6037
6147
|
if (skillResult.changed && skillResult.summary) {
|
|
@@ -6058,12 +6168,19 @@ Note: The task requested working directory "${taskDir}" but it does not exist. F
|
|
|
6058
6168
|
agentDescription = identityResult.fields.description;
|
|
6059
6169
|
console.log(`[${role}] Identity changed — refreshing system prompt (${identityResult.changedFields.join(", ")})`);
|
|
6060
6170
|
}
|
|
6061
|
-
const
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
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;
|
|
6067
6184
|
const modelUnsupported = trigger.task?.modelUnsupported;
|
|
6068
6185
|
if (trigger.taskId && modelUnsupported) {
|
|
6069
6186
|
console.log(`[${role}] ${modelUnsupported}`);
|