@desplega.ai/agent-swarm 1.173.0 → 2.1.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-kr4abrsk.js} +17 -16
- package/dist/{actions-sgeyv08k.js → actions-eh4g6w2r.js} +39 -34
- package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-7h7wdt8q.js} +8 -7
- package/dist/{app-km9qnv2f.js → app-7k8s9w5p.js} +18 -14
- package/dist/{assistant-5r8tcvvd.js → assistant-wswt2y7p.js} +40 -35
- package/dist/{boot-reembed-16rv9843.js → boot-reembed-9apm9qw6.js} +10 -9
- package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-whzbdthj.js} +10 -9
- package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-ndzmvmgt.js} +11 -10
- package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-e9sta0yt.js} +16 -13
- package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-4mqd3r6r.js} +19 -18
- package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-9wswb52m.js} +7 -5
- package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-tpe1effx.js} +6 -4
- package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-q49ghmh9.js} +12402 -11850
- package/dist/{cli-ne7smj1b.js → cli-01xvj1rq.js} +10 -10
- package/dist/{cli-nwrdx840.js → cli-035vekcw.js} +3 -3
- package/dist/{cli-9xf7fdtp.js → cli-0pd8hzhc.js} +29 -6
- package/dist/{cli-tmhsxhb8.js → cli-0veb92a3.js} +28 -6
- package/dist/{cli-c3rk1v0x.js → cli-10jesr25.js} +3 -3
- package/dist/{cli-6thk4jz3.js → cli-1y7yywmj.js} +6 -6
- package/dist/{cli-6r2f7edk.js → cli-20krdhz5.js} +47 -19
- package/dist/{cli-rfs4vddv.js → cli-29rja109.js} +39 -20
- package/dist/cli-2m1ktfzz.js +17795 -0
- package/dist/{cli-na2pxe4f.js → cli-2pwa0q4d.js} +15 -4
- package/dist/{cli-7a93cv8c.js → cli-4mengw46.js} +441 -43
- package/dist/{cli-94b48jhk.js → cli-5twdke5x.js} +16 -14
- package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
- package/dist/cli-6cvfxs8r.js +47 -0
- package/dist/{cli-w1apjecb.js → cli-711vwbxn.js} +2 -2
- package/dist/{cli-r4fqfpwf.js → cli-78vv7446.js} +50 -27
- package/dist/{cli-srqq3gc5.js → cli-7n6s5man.js} +5 -5
- package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
- package/dist/{cli-2bw3w47j.js → cli-8wwxw8a3.js} +1 -1
- package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
- package/dist/{cli-ywm1azg9.js → cli-9jzdj90z.js} +8 -4
- package/dist/cli-9traj3dn.js +638 -0
- package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
- package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
- package/dist/cli-cvv9k0hh.js +10143 -0
- package/dist/{cli-anzdk0z4.js → cli-d9286m9h.js} +2 -2
- package/dist/cli-e3g5mbkz.js +776 -0
- package/dist/cli-f527ce74.js +781 -0
- package/dist/{cli-gmdajfw5.js → cli-gxzkg1de.js} +5020 -1729
- package/dist/{cli-451ks6aw.js → cli-h1arqn31.js} +1 -1
- package/dist/cli-hjwmhcg1.js +10622 -0
- package/dist/{cli-jpc4r224.js → cli-hqr88ew6.js} +19 -3
- package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
- package/dist/{cli-cd0hv9nh.js → cli-j67mh2vg.js} +2 -2
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-d603qf86.js → cli-ksphgh48.js} +10 -8
- package/dist/{cli-3nxdmjrc.js → cli-mgz4nbgg.js} +4 -4
- package/dist/{cli-saqyage0.js → cli-mz5as5ha.js} +179 -27
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-ppy4nnnh.js → cli-n8ndw8j7.js} +2 -2
- package/dist/{cli-1w0vj3gw.js → cli-naqzr17j.js} +7 -7
- package/dist/{cli-0a7mm3zp.js → cli-nm1p8jfr.js} +25 -21
- package/dist/{cli-wrh08zjd.js → cli-p3zbc1rw.js} +5 -18
- package/dist/{cli-hsem16hb.js → cli-pe05f8yk.js} +29 -6
- package/dist/{cli-5wpw4rab.js → cli-qmzsbkvy.js} +5 -5
- package/dist/{cli-bv2etw2y.js → cli-qnm4e9e4.js} +99 -590
- package/dist/{cli-1x7da0de.js → cli-qqy4q48b.js} +8 -8
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-5er5gjbm.js → cli-r35rw5de.js} +15 -15
- package/dist/{cli-v3zhnxsb.js → cli-r610p9bs.js} +2 -2
- package/dist/{cli-7jykv7ef.js → cli-rc6pf5kv.js} +1 -1
- package/dist/{cli-x119kdba.js → cli-rdxm77k3.js} +1 -1
- package/dist/cli-rhs9pz33.js +294 -0
- package/dist/{cli-0p3enk35.js → cli-s69nfyeh.js} +9 -1
- package/dist/{cli-0kxf81jj.js → cli-sawv63e8.js} +2 -2
- package/dist/{cli-e3pmyt39.js → cli-sg19gbf0.js} +1 -1
- package/dist/{cli-d161g69q.js → cli-shk7r5cs.js} +57 -6
- package/dist/{cli-7pz3b7x5.js → cli-sksetb2q.js} +36 -1
- package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
- package/dist/{cli-db3m6zdt.js → cli-t02z59f2.js} +1 -1
- package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
- package/dist/{cli-s8z6x4b4.js → cli-v7g551te.js} +225 -113
- package/dist/{cli-rfz2ve55.js → cli-vgqzp4em.js} +3341 -955
- package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
- package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
- package/dist/cli-wfnemr1t.js +86 -0
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-qm1448f9.js → cli-wms6x9db.js} +8 -8
- package/dist/{cli-tadfgd0t.js → cli-x1r545x8.js} +33 -4
- package/dist/{cli-xc7p7s3g.js → cli-xczsgshn.js} +6 -6
- package/dist/{cli-fmhj1ehj.js → cli-y3167wt1.js} +882 -271
- package/dist/{cli-r0byd61h.js → cli-yjmqpxt3.js} +17 -16
- package/dist/{cli-81r1wjyv.js → cli-z780ec7c.js} +1 -1
- package/dist/{cli-phcqp1b9.js → cli-zm9t2vde.js} +2 -2
- package/dist/cli.js +34 -49
- package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-4z16v9n0.js} +15 -14
- package/dist/{codex-login-841kv5fk.js → codex-login-pkepy2j1.js} +3 -2
- package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-rvms9y2x.js} +15 -14
- package/dist/{commands-z8fq9qna.js → commands-2a9rtyat.js} +11 -10
- package/dist/{controller-hq5ggpcp.js → controller-3k3madbn.js} +5 -4
- package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-v9yn8zb9.js} +42 -37
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-98gbhyzn.js} +7 -6
- package/dist/{db-qfpq4bt7.js → db-eywwsnjw.js} +30 -9
- package/dist/{db-yyhqqrbf.js → db-ncypk9np.js} +12 -11
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-zeq8b9gz.js} +3 -2
- package/dist/{dispatcher-x0x7qfcq.js → dispatcher-w94kc575.js} +38 -33
- package/dist/{docker-f503k9p0.js → docker-b1e4cqab.js} +3 -2
- package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-47ztej36.js} +7 -6
- package/dist/{e2b-66xra4az.js → e2b-bbt8ey45.js} +4 -3
- package/dist/{e2b-xwhyj8cw.js → e2b-dp804sen.js} +4 -3
- package/dist/{event-bus-vjtv82gm.js → event-bus-j2jdg3qb.js} +3 -2
- package/dist/{external-channel-h1fjecwe.js → external-channel-zrkg8ar9.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-s9ncp9vy.js} +18 -17
- package/dist/{handlers-znb9n7d4.js → handlers-kqftvjgw.js} +41 -36
- package/dist/{heartbeat-bm4qkn8d.js → heartbeat-9q96p8v9.js} +43 -38
- package/dist/{hook-254r4mza.js → hook-56qe10dp.js} +11 -23
- package/dist/{hook-xaa3q80s.js → hook-yy6rw42k.js} +12 -11
- package/dist/{http-3dgrgp8y.js → http-r2dnb8f8.js} +2411 -275
- package/dist/{index-fx3jqq1e.js → index-3gtmkhc6.js} +38 -33
- package/dist/{index-bdsqa799.js → index-3k5hkz7r.js} +43 -38
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-g2byveez.js → index-5e101240.js} +38 -33
- package/dist/{index-2ybk7khy.js → index-5wyfjc2c.js} +845 -683
- 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-jd7sejm2.js → index-vxvhxxbn.js} +10 -9
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{keepalive-6ywhpja1.js → keepalive-psj6j54c.js} +12 -11
- package/dist/{lead-cw45n21s.js → lead-hajz4688.js} +61 -56
- package/dist/{maintenance-ss1a1ge9.js → maintenance-ps02sb5m.js} +10 -9
- package/dist/{node-fkajaq96.js → node-mwb5r697.js} +2 -1
- package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-0284h93b.js} +11 -10
- package/dist/{onboard-8hzdhc1k.js → onboard-rbf6bg01.js} +11 -3
- package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-13dcatgq.js} +18 -13
- package/dist/{otel-impl-e6mnvc4v.js → otel-impl-zvqcbhp7.js} +242 -868
- package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-xxy47q4v.js} +244 -106
- package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-kefx9v3t.js} +12 -11
- package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-3m36rxm2.js} +11 -10
- package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-z76xv0hq.js} +12 -11
- package/dist/{render-v2-907cy6sa.js → render-v2-wz73bs25.js} +18 -14
- package/dist/{resume-42stcaz0.js → resume-k4wzge8w.js} +25 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-adbc1c10.js → setup-2fp2pypp.js} +2 -2
- package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
- package/dist/{work-objects-wpj8ck95.js → work-objects-6k0ywz3m.js} +41 -36
- package/dist/{worker-bzdra9rf.js → worker-5v3rxsdh.js} +61 -56
- package/dist/{x-qfmygqqv.js → x-4mtdeym1.js} +3 -2
- package/openapi.json +1279 -329
- package/package.json +15 -15
- package/src/agentmail/handlers.ts +21 -11
- package/src/apps/definition.ts +16 -0
- package/src/azure-devops/api.ts +52 -2
- package/src/azure-devops/boards-sync.ts +50 -20
- package/src/azure-devops/index.ts +1 -0
- package/src/azure-devops/outbound.ts +95 -0
- package/src/be/boot-seeds.ts +11 -0
- package/src/be/config-refs.ts +60 -0
- package/src/be/db/model-profiles.ts +315 -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 +237 -0
- package/src/be/db/tasks/write.ts +7 -0
- package/src/be/db.ts +87 -36
- 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/migrations/219_relabel_pi_context_compactions.sql +22 -0
- package/src/be/migrations/220_model_profiles.sql +137 -0
- package/src/be/model-catalog-store.ts +5 -1
- package/src/be/model-tier-resolution.ts +155 -10
- package/src/be/model-validation.ts +12 -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 +22 -8
- package/src/be/secret-registry.ts +6 -2
- 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-model-profiles.ts +41 -0
- package/src/be/seed-pricing.ts +19 -2
- package/src/be/seed-scripts/catalog/heartbeat-jev-gate.ts +368 -0
- 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-scripts/index.ts +9 -0
- 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 +53 -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 +193 -71
- package/src/e2b/env.ts +5 -0
- package/src/extensions/catalog.generated.json +17 -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/loader.ts +10 -5
- package/src/extensions/post-bridge.ts +40 -0
- package/src/github/handlers.ts +11 -4
- package/src/heartbeat/heartbeat.ts +2 -1
- package/src/heartbeat/templates.ts +8 -5
- package/src/hooks/hook.ts +0 -26
- package/src/http/agents.ts +49 -2
- package/src/http/all-routes.ts +1 -1
- package/src/http/apps.ts +30 -3
- package/src/http/config.ts +62 -19
- package/src/http/core.ts +8 -0
- package/src/http/index.ts +25 -3
- package/src/http/integrations.ts +88 -1
- package/src/http/mcp.ts +15 -5
- package/src/http/model-profiles.ts +303 -0
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +13 -7
- package/src/http/pages.ts +3 -13
- package/src/http/poll.ts +42 -71
- package/src/http/requested-by.ts +54 -0
- package/src/http/script-runs.ts +1 -1
- package/src/http/scripts.ts +26 -2
- package/src/http/stats.ts +1 -30
- package/src/http/tasks.ts +79 -5
- package/src/http/utils.ts +14 -0
- package/src/http/webhooks.ts +160 -3
- 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/{artifact-sdk → pages}/feedback-overlay.ts +65 -6
- 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 +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/pi-mono-extension.ts +17 -3
- package/src/providers/pricing-sources.md +33 -2
- package/src/providers/reasoning-effort.ts +37 -0
- package/src/providers/types.ts +6 -2
- package/src/rbac/legacy-policy.ts +16 -2
- package/src/rbac/permissions.ts +26 -0
- package/src/scheduler/deferred-task-waits.ts +18 -5
- package/src/scheduler/scheduler.ts +11 -3
- package/src/scripts-runtime/executors/quickjs-prelude.ts +75 -6
- package/src/scripts-runtime/executors/quickjs-runner.ts +85 -8
- package/src/scripts-runtime/executors/quickjs-web-shims.ts +1041 -0
- package/src/scripts-runtime/extract-args-schema.ts +9 -8
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/quickjs-compat.ts +464 -0
- package/src/scripts-runtime/sdk-allowlist.ts +12 -6
- package/src/scripts-runtime/swarm-sdk.ts +0 -11
- package/src/scripts-runtime/types/stdlib.d.ts +39 -15
- package/src/scripts-runtime/types/swarm-extension.d.ts +66 -1
- package/src/scripts-runtime/types/swarm-sdk.d.ts +39 -15
- package/src/server.ts +62 -19
- package/src/slack/blocks.ts +4 -2
- package/src/slack/event-dedup.ts +1 -1
- package/src/slack/reaction-shortcode.ts +14 -0
- package/src/slack/render-v2.ts +12 -7
- package/src/slack/responses.ts +5 -4
- package/src/slack/thread-buffer.ts +41 -22
- 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 +15 -33
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/agentmail-filters.test.ts +47 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/apps-spike2.test.ts +35 -0
- package/src/tests/azure-devops-outbound.test.ts +420 -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 +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 +22 -0
- package/src/tests/db-task-write-contract.test.ts +11 -0
- package/src/tests/deferred-task-wake.test.ts +78 -1
- 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/env-flag.test.ts +1 -0
- package/src/tests/explicit-model-validation.test.ts +105 -1
- package/src/tests/extensions-catalog.test.ts +1 -0
- package/src/tests/extensions-example-comms-adherence-gate.test.ts +413 -0
- package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
- package/src/tests/extensions-loader.test.ts +15 -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/heartbeat-jev-gate-credentials.test.ts +168 -0
- package/src/tests/heartbeat-jev-gate.test.ts +385 -0
- 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-profile-backcompat.test.ts +327 -0
- package/src/tests/model-profile-providers.test.ts +302 -0
- package/src/tests/model-profile-runtime-secrets.test.ts +223 -0
- package/src/tests/model-profiles-api.test.ts +614 -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-keys.test.ts +121 -0
- package/src/tests/pages-feedback.test.ts +4 -1
- package/src/tests/paused-tasks-requested-by.test.ts +102 -0
- package/src/tests/pi-context-compaction.test.ts +193 -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/profile-claim.test.ts +269 -0
- package/src/tests/prompt-template-remaining.test.ts +35 -0
- package/src/tests/quickjs-compat.test.ts +213 -0
- package/src/tests/rbac-engine.test.ts +32 -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 +6 -0
- package/src/tests/script-executor-conformance.test.ts +252 -1
- package/src/tests/script-executor-quickjs.test.ts +96 -0
- package/src/tests/script-runs-http.test.ts +89 -0
- package/src/tests/scripts-http.test.ts +217 -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 +96 -0
- package/src/tests/seed-model-profiles.test.ts +174 -0
- package/src/tests/seed-scripts.test.ts +2 -2
- 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/skill-invocations.test.ts +4 -2
- package/src/tests/slack-blocks.test.ts +36 -0
- package/src/tests/slack-inline-output.test.ts +14 -0
- package/src/tests/slack-reaction-config.test.ts +20 -0
- package/src/tests/slack-render-v2.test.ts +37 -0
- package/src/tests/slack-thread-buffer.test.ts +98 -1
- 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-llm.test.ts +61 -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/model-profiles/list-model-profiles.ts +54 -0
- package/src/tools/register-chat-channel.ts +139 -0
- package/src/tools/request-human-input.ts +11 -3
- package/src/tools/script-apis.ts +5 -1
- package/src/tools/script-upsert.ts +4 -1
- package/src/tools/send-task.ts +48 -1
- 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/system-one-decide.ts +104 -0
- package/src/tools/task-action.ts +22 -1
- package/src/tools/tool-config.ts +14 -6
- package/src/types.ts +48 -3
- 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 +86 -10
- package/src/utils/task-tool-manifest.ts +19 -2
- package/src/utils/vcs-repo-match.ts +29 -0
- package/src/workflows/executors/raw-llm.ts +8 -3
- package/src/workflows/executors/swarm-script.ts +1 -0
- package/src/workflows/executors/system-one-decision.ts +21 -11
- package/src/workflows/executors/workflow-llm.ts +22 -0
- package/src/workflows/index.ts +21 -12
- package/templates/extensions/README.md +1 -0
- package/templates/extensions/comms-adherence-gate/README.md +88 -0
- package/templates/extensions/comms-adherence-gate/hooks.ts +489 -0
- package/templates/extensions/comms-adherence-gate/manifest.json +8 -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-42qhyvwx.js +0 -33
- 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
|
@@ -1,12 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkGrokCredentials
|
|
3
|
+
} from "./cli-xczsgshn.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-ksphgh48.js";
|
|
7
10
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./cli-
|
|
11
|
+
checkDevinCredentials
|
|
12
|
+
} from "./cli-sg19gbf0.js";
|
|
13
|
+
import {
|
|
14
|
+
checkOpencodeCredentials
|
|
15
|
+
} from "./cli-mz5as5ha.js";
|
|
16
|
+
import {
|
|
17
|
+
checkDshCredentials
|
|
18
|
+
} from "./cli-7n6s5man.js";
|
|
19
|
+
import {
|
|
20
|
+
checkAmpCredentials,
|
|
21
|
+
liveTestAmpCredentials
|
|
22
|
+
} from "./cli-qmzsbkvy.js";
|
|
23
|
+
import {
|
|
24
|
+
checkCursorCredentials
|
|
25
|
+
} from "./cli-qqy4q48b.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-5twdke5x.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-nm1p8jfr.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-0veb92a3.js";
|
|
65
68
|
import {
|
|
66
69
|
canonicalAzureDevOpsRepoUrl,
|
|
67
70
|
isAzureDevOpsUrl,
|
|
68
71
|
parseAzureDevOpsRepoUrl,
|
|
69
|
-
resolveScriptsOnlyMode
|
|
70
|
-
|
|
72
|
+
resolveScriptsOnlyMode,
|
|
73
|
+
resumedTaskModelSelection
|
|
74
|
+
} from "./cli-vgqzp4em.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-naqzr17j.js";
|
|
77
81
|
import {
|
|
78
82
|
authJsonToCredentialSelection,
|
|
79
83
|
credentialsToAuthJson,
|
|
80
84
|
loadAllCodexOAuthSlots
|
|
81
|
-
} from "./cli-
|
|
85
|
+
} from "./cli-rc6pf5kv.js";
|
|
82
86
|
import {
|
|
83
87
|
ensure,
|
|
84
88
|
initOtel,
|
|
@@ -88,20 +92,25 @@ import {
|
|
|
88
92
|
startSpan,
|
|
89
93
|
withSpan,
|
|
90
94
|
withSpanContext
|
|
91
|
-
} from "./cli-
|
|
95
|
+
} from "./cli-cvv9k0hh.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,
|
|
105
|
+
init_vcs_repo_match,
|
|
100
106
|
isApiDrainingResponse,
|
|
101
107
|
isCodexAuthFailureReason,
|
|
108
|
+
isEnvExportRestrictedKey,
|
|
102
109
|
mapTriggerSurface,
|
|
103
|
-
telemetry
|
|
104
|
-
|
|
110
|
+
telemetry,
|
|
111
|
+
vcsRepoName,
|
|
112
|
+
vcsRepoUrlMatches
|
|
113
|
+
} from "./cli-y3167wt1.js";
|
|
105
114
|
import {
|
|
106
115
|
ProviderNameSchema,
|
|
107
116
|
WorkerNudgeSchema,
|
|
@@ -109,7 +118,7 @@ import {
|
|
|
109
118
|
isTerminalTaskStatus,
|
|
110
119
|
parseWorkerModelTierOverrides,
|
|
111
120
|
resolveTaskModelSelection
|
|
112
|
-
} from "./cli-
|
|
121
|
+
} from "./cli-pe05f8yk.js";
|
|
113
122
|
import {
|
|
114
123
|
WORKSPACE_CLAUDE_MD_PATH,
|
|
115
124
|
buildContextPreamble,
|
|
@@ -120,6 +129,7 @@ import {
|
|
|
120
129
|
generateDefaultSoulMd,
|
|
121
130
|
generateDefaultToolsMd,
|
|
122
131
|
getBasePrompt,
|
|
132
|
+
getTaskContextPrompt,
|
|
123
133
|
init_base_prompt,
|
|
124
134
|
init_context_preamble,
|
|
125
135
|
init_defaults,
|
|
@@ -132,20 +142,21 @@ import {
|
|
|
132
142
|
taskAttachmentFetchCommand,
|
|
133
143
|
writeIdentityBaselines,
|
|
134
144
|
writeProfileFileFromDb
|
|
135
|
-
} from "./cli-
|
|
145
|
+
} from "./cli-78vv7446.js";
|
|
136
146
|
import {
|
|
137
147
|
init_steering_enabled,
|
|
138
148
|
isSteeringEnabled
|
|
139
149
|
} from "./cli-7mm2r1kp.js";
|
|
140
|
-
import {
|
|
141
|
-
init_templates
|
|
142
|
-
} from "./cli-mvzyxwg3.js";
|
|
143
150
|
import {
|
|
144
151
|
CLAUDE_CREDENTIALS_HINT,
|
|
145
152
|
ModelWindowExhaustedError,
|
|
146
153
|
init_credentials,
|
|
154
|
+
normalizeProviderKeyAliases,
|
|
147
155
|
resolveCredentialPools
|
|
148
|
-
} from "./cli-
|
|
156
|
+
} from "./cli-x1r545x8.js";
|
|
157
|
+
import {
|
|
158
|
+
init_templates
|
|
159
|
+
} from "./cli-mvzyxwg3.js";
|
|
149
160
|
import {
|
|
150
161
|
configureHttpResolver,
|
|
151
162
|
init_resolver,
|
|
@@ -162,7 +173,7 @@ import {
|
|
|
162
173
|
} from "./cli-ywybs5as.js";
|
|
163
174
|
import {
|
|
164
175
|
deriveDefaultRoute,
|
|
165
|
-
init_src,
|
|
176
|
+
init_src as init_src2,
|
|
166
177
|
validateRoute
|
|
167
178
|
} from "./cli-f9w1semm.js";
|
|
168
179
|
import {
|
|
@@ -171,12 +182,10 @@ import {
|
|
|
171
182
|
init_openrouter_base_url
|
|
172
183
|
} from "./cli-a35hzdve.js";
|
|
173
184
|
import {
|
|
174
|
-
harnessModelMismatch,
|
|
175
185
|
init_runtime_model_catalog,
|
|
176
|
-
init_src as init_src2,
|
|
177
186
|
refreshRuntimeModelCatalog,
|
|
178
187
|
runtimeHarnessSections
|
|
179
|
-
} from "./cli-
|
|
188
|
+
} from "./cli-stfs0k5s.js";
|
|
180
189
|
import {
|
|
181
190
|
getMcpBaseUrl,
|
|
182
191
|
init_constants
|
|
@@ -187,9 +196,18 @@ import {
|
|
|
187
196
|
} from "./cli-a1b9b32n.js";
|
|
188
197
|
import {
|
|
189
198
|
init_secret_scrubber,
|
|
199
|
+
registerEnvSecrets,
|
|
190
200
|
registerSensitiveKeyName,
|
|
191
201
|
scrubSecrets
|
|
192
|
-
} from "./cli-
|
|
202
|
+
} from "./cli-shk7r5cs.js";
|
|
203
|
+
import {
|
|
204
|
+
harnessModelMismatch,
|
|
205
|
+
init_src,
|
|
206
|
+
openAICompatibleKeyVars,
|
|
207
|
+
openAICompatibleProviders,
|
|
208
|
+
providerBaseUrl,
|
|
209
|
+
providerKeyFromEnv
|
|
210
|
+
} from "./cli-e3g5mbkz.js";
|
|
193
211
|
import {
|
|
194
212
|
__require
|
|
195
213
|
} from "./cli-bc05qbss.js";
|
|
@@ -226,47 +244,47 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
|
|
|
226
244
|
async function createProviderAdapter(provider) {
|
|
227
245
|
switch (provider) {
|
|
228
246
|
case "claude": {
|
|
229
|
-
const { ClaudeAdapter } = await import("./claude-adapter-
|
|
247
|
+
const { ClaudeAdapter } = await import("./claude-adapter-4mqd3r6r.js");
|
|
230
248
|
return new ClaudeAdapter;
|
|
231
249
|
}
|
|
232
250
|
case "pi": {
|
|
233
|
-
const { PiMonoAdapter } = await import("./pi-mono-adapter-
|
|
251
|
+
const { PiMonoAdapter } = await import("./pi-mono-adapter-xxy47q4v.js");
|
|
234
252
|
return new PiMonoAdapter;
|
|
235
253
|
}
|
|
236
254
|
case "codex": {
|
|
237
|
-
const { CodexAdapter } = await import("./codex-adapter-
|
|
255
|
+
const { CodexAdapter } = await import("./codex-adapter-4z16v9n0.js");
|
|
238
256
|
return new CodexAdapter;
|
|
239
257
|
}
|
|
240
258
|
case "claude-managed": {
|
|
241
|
-
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-
|
|
259
|
+
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-9wswb52m.js");
|
|
242
260
|
return new ClaudeManagedAdapter;
|
|
243
261
|
}
|
|
244
262
|
case "devin": {
|
|
245
|
-
const { DevinAdapter } = await import("./devin-adapter-
|
|
263
|
+
const { DevinAdapter } = await import("./devin-adapter-zeq8b9gz.js");
|
|
246
264
|
return new DevinAdapter;
|
|
247
265
|
}
|
|
248
266
|
case "opencode": {
|
|
249
|
-
const { OpencodeAdapter } = await import("./opencode-adapter-
|
|
267
|
+
const { OpencodeAdapter } = await import("./opencode-adapter-13dcatgq.js");
|
|
250
268
|
return new OpencodeAdapter;
|
|
251
269
|
}
|
|
252
270
|
case "dsh": {
|
|
253
|
-
const { DshAdapter } = await import("./dsh-adapter-
|
|
271
|
+
const { DshAdapter } = await import("./dsh-adapter-47ztej36.js");
|
|
254
272
|
return new DshAdapter;
|
|
255
273
|
}
|
|
256
274
|
case "amp": {
|
|
257
|
-
const { AmpAdapter } = await import("./amp-adapter-
|
|
275
|
+
const { AmpAdapter } = await import("./amp-adapter-7h7wdt8q.js");
|
|
258
276
|
return new AmpAdapter;
|
|
259
277
|
}
|
|
260
278
|
case "cursor": {
|
|
261
|
-
const { CursorAdapter } = await import("./cursor-adapter-
|
|
279
|
+
const { CursorAdapter } = await import("./cursor-adapter-98gbhyzn.js");
|
|
262
280
|
return new CursorAdapter;
|
|
263
281
|
}
|
|
264
282
|
case "grok": {
|
|
265
|
-
const { GrokAdapter } = await import("./grok-adapter-
|
|
283
|
+
const { GrokAdapter } = await import("./grok-adapter-s9ncp9vy.js");
|
|
266
284
|
return new GrokAdapter;
|
|
267
285
|
}
|
|
268
286
|
case "acp": {
|
|
269
|
-
const { ACPAdapter } = await import("./acp-adapter-
|
|
287
|
+
const { ACPAdapter } = await import("./acp-adapter-kr4abrsk.js");
|
|
270
288
|
return new ACPAdapter;
|
|
271
289
|
}
|
|
272
290
|
default:
|
|
@@ -454,6 +472,7 @@ function computeBudgetBackoffMs(consecutiveRefusals, basePollMs) {
|
|
|
454
472
|
|
|
455
473
|
// src/commands/runner.ts
|
|
456
474
|
init_codex_auth_failure();
|
|
475
|
+
init_config_env_export();
|
|
457
476
|
init_config_secrets();
|
|
458
477
|
init_constants();
|
|
459
478
|
init_credentials();
|
|
@@ -535,15 +554,17 @@ async function reportHarnessModelOutcome(opts) {
|
|
|
535
554
|
}
|
|
536
555
|
|
|
537
556
|
// src/utils/harness-provider.ts
|
|
557
|
+
init_src();
|
|
538
558
|
init_types();
|
|
539
559
|
var SUPPORTED_PROVIDERS = ProviderNameSchema.options;
|
|
540
560
|
function hasEnvValue(key, resolvedEnv, fallbackEnv) {
|
|
541
561
|
return !!(resolvedEnv[key]?.trim() || fallbackEnv[key]?.trim());
|
|
542
562
|
}
|
|
563
|
+
var PI_DEFAULT_KEY_VARS = ["OPENROUTER_API_KEY", ...openAICompatibleKeyVars()];
|
|
543
564
|
function credentialAwareDefault(resolvedEnv, fallbackEnv) {
|
|
544
|
-
const
|
|
565
|
+
const hasPiKey = PI_DEFAULT_KEY_VARS.some((key) => hasEnvValue(key, resolvedEnv, fallbackEnv));
|
|
545
566
|
const hasClaudeCredential = hasEnvValue("ANTHROPIC_API_KEY", resolvedEnv, fallbackEnv) || hasEnvValue("CLAUDE_CODE_OAUTH_TOKEN", resolvedEnv, fallbackEnv);
|
|
546
|
-
return
|
|
567
|
+
return hasPiKey && !hasClaudeCredential ? "pi" : "claude";
|
|
547
568
|
}
|
|
548
569
|
function resolveHarnessProvider(resolvedEnv, fallbackEnv = process.env) {
|
|
549
570
|
const candidate = resolvedEnv.HARNESS_PROVIDER?.trim() || fallbackEnv.HARNESS_PROVIDER?.trim();
|
|
@@ -866,7 +887,7 @@ async function refreshSkillsIfChanged(ctx, lastHashRef, homeOverride) {
|
|
|
866
887
|
}
|
|
867
888
|
|
|
868
889
|
// src/utils/spawn-model-guard.ts
|
|
869
|
-
|
|
890
|
+
init_src();
|
|
870
891
|
init_runtime_model_catalog();
|
|
871
892
|
function spawnHarnessMismatchReason(model, harness) {
|
|
872
893
|
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.`;
|
|
@@ -890,6 +911,7 @@ function guardSpawnModel(input) {
|
|
|
890
911
|
// src/commands/runner.ts
|
|
891
912
|
init_steering_enabled();
|
|
892
913
|
init_template();
|
|
914
|
+
init_vcs_repo_match();
|
|
893
915
|
|
|
894
916
|
// src/vcs/index.ts
|
|
895
917
|
function detectVcsProvider(url) {
|
|
@@ -1110,6 +1132,7 @@ async function reportCredentialOutcomeThenFinish(input, finish) {
|
|
|
1110
1132
|
|
|
1111
1133
|
// src/commands/provider-credentials.ts
|
|
1112
1134
|
init_src();
|
|
1135
|
+
init_src2();
|
|
1113
1136
|
init_credentials();
|
|
1114
1137
|
init_openrouter_base_url();
|
|
1115
1138
|
init_secret_scrubber();
|
|
@@ -1120,6 +1143,29 @@ function isBedrockMode(env) {
|
|
|
1120
1143
|
function shouldRefreshBedrockStatus(opts) {
|
|
1121
1144
|
return opts.harnessProvider === "pi" && isBedrockMode(opts.env) && opts.now - opts.lastRefreshAt > opts.intervalMs;
|
|
1122
1145
|
}
|
|
1146
|
+
var REQUIRED_CRED_VARS_BY_PROVIDER = {
|
|
1147
|
+
claude: ["CLAUDE_CODE_OAUTH_TOKEN", "ANTHROPIC_API_KEY"],
|
|
1148
|
+
"claude-managed": [
|
|
1149
|
+
"ANTHROPIC_API_KEY",
|
|
1150
|
+
"MANAGED_AGENT_ID",
|
|
1151
|
+
"MANAGED_ENVIRONMENT_ID",
|
|
1152
|
+
"MCP_BASE_URL"
|
|
1153
|
+
],
|
|
1154
|
+
codex: ["OPENAI_API_KEY", "CODEX_OAUTH"],
|
|
1155
|
+
devin: ["DEVIN_API_KEY", "DEVIN_ORG_ID"],
|
|
1156
|
+
opencode: [
|
|
1157
|
+
"OPENROUTER_API_KEY",
|
|
1158
|
+
"ANTHROPIC_API_KEY",
|
|
1159
|
+
"OPENAI_API_KEY",
|
|
1160
|
+
...openAICompatibleKeyVars()
|
|
1161
|
+
],
|
|
1162
|
+
pi: ["ANTHROPIC_API_KEY", "OPENROUTER_API_KEY", "OPENAI_API_KEY", ...openAICompatibleKeyVars()],
|
|
1163
|
+
acp: [],
|
|
1164
|
+
dsh: ["DEEPSEEK_API_KEY", "OPENROUTER_API_KEY"],
|
|
1165
|
+
amp: ["AMP_API_KEY"],
|
|
1166
|
+
cursor: ["CURSOR_API_KEY"],
|
|
1167
|
+
grok: ["XAI_API_KEY", "OPENROUTER_API_KEY"]
|
|
1168
|
+
};
|
|
1123
1169
|
var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
1124
1170
|
dsh: (env) => checkDshCredentials(env),
|
|
1125
1171
|
amp: (env) => checkAmpCredentials(env),
|
|
@@ -1131,7 +1177,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
|
1131
1177
|
devin: (env) => checkDevinCredentials(env),
|
|
1132
1178
|
opencode: (env, opts) => checkOpencodeCredentials(env, opts),
|
|
1133
1179
|
pi: async (env, opts) => {
|
|
1134
|
-
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-
|
|
1180
|
+
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-xxy47q4v.js");
|
|
1135
1181
|
return checkPiMonoCredentials(env, opts);
|
|
1136
1182
|
},
|
|
1137
1183
|
acp: (env) => {
|
|
@@ -1246,6 +1292,19 @@ async function checkOpenRouter(apiKey) {
|
|
|
1246
1292
|
latency_ms: r.latency_ms
|
|
1247
1293
|
};
|
|
1248
1294
|
}
|
|
1295
|
+
async function checkOpenAICompatibleProvider(provider, apiKey, baseUrl = provider.baseUrl) {
|
|
1296
|
+
const r = await timedFetch(`${baseUrl.replace(/\/+$/, "")}/models`, {
|
|
1297
|
+
method: "GET",
|
|
1298
|
+
headers: { Authorization: `Bearer ${apiKey}` }
|
|
1299
|
+
});
|
|
1300
|
+
if (r.ok)
|
|
1301
|
+
return { ok: true, latency_ms: r.latency_ms };
|
|
1302
|
+
return {
|
|
1303
|
+
ok: false,
|
|
1304
|
+
error: scrubSecrets(`HTTP ${r.status}: ${r.bodyText.slice(0, 200)}`),
|
|
1305
|
+
latency_ms: r.latency_ms
|
|
1306
|
+
};
|
|
1307
|
+
}
|
|
1249
1308
|
function codexAuthFileExists(env) {
|
|
1250
1309
|
return checkCodexCredentials(env).satisfiedBy === "file";
|
|
1251
1310
|
}
|
|
@@ -1318,11 +1377,17 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1318
1377
|
return checkAnthropicApiKey(env.ANTHROPIC_API_KEY);
|
|
1319
1378
|
if (env.OPENAI_API_KEY)
|
|
1320
1379
|
return checkOpenAiApiKey(env.OPENAI_API_KEY);
|
|
1380
|
+
for (const direct of openAICompatibleProviders()) {
|
|
1381
|
+
const key = providerKeyFromEnv(direct, env);
|
|
1382
|
+
if (key) {
|
|
1383
|
+
return checkOpenAICompatibleProvider(direct, key, providerBaseUrl(direct, env));
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1321
1386
|
if (status.ready)
|
|
1322
1387
|
return presenceCheckOk();
|
|
1323
1388
|
return {
|
|
1324
1389
|
ok: false,
|
|
1325
|
-
error:
|
|
1390
|
+
error: `No usable credential found (OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, ${openAICompatibleProviders().map((p) => p.envVar).join(", ").replace(/, (?=[^,]*$)/, ", or ")}).`,
|
|
1326
1391
|
latency_ms: Date.now() - startedAt
|
|
1327
1392
|
};
|
|
1328
1393
|
}
|
|
@@ -1381,7 +1446,7 @@ async function validateProviderCredentials(provider, env = process.env, presence
|
|
|
1381
1446
|
latency_ms: Date.now() - startedAt
|
|
1382
1447
|
};
|
|
1383
1448
|
}
|
|
1384
|
-
const { liveTestCursorKey } = await import("./cursor-adapter-
|
|
1449
|
+
const { liveTestCursorKey } = await import("./cursor-adapter-98gbhyzn.js");
|
|
1385
1450
|
const result = await liveTestCursorKey(apiKey);
|
|
1386
1451
|
return result.ok ? { ok: true, latency_ms: Date.now() - startedAt } : { ok: false, error: result.error, latency_ms: Date.now() - startedAt };
|
|
1387
1452
|
}
|
|
@@ -1914,17 +1979,9 @@ function scheduleRunnerGc(reason) {
|
|
|
1914
1979
|
timer.unref?.();
|
|
1915
1980
|
return true;
|
|
1916
1981
|
}
|
|
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
1982
|
async function fetchRepoConfig(apiUrl, apiKey, vcsRepo, requireExactMatch = false) {
|
|
1925
1983
|
try {
|
|
1926
|
-
const
|
|
1927
|
-
const repoName = requested.split("/").pop() || requested;
|
|
1984
|
+
const repoName = vcsRepoName(vcsRepo);
|
|
1928
1985
|
const resp = await fetch(`${apiUrl}/api/repos?name=${encodeURIComponent(repoName)}`, {
|
|
1929
1986
|
headers: { Authorization: `Bearer ${apiKey}` }
|
|
1930
1987
|
});
|
|
@@ -1932,14 +1989,7 @@ async function fetchRepoConfig(apiUrl, apiKey, vcsRepo, requireExactMatch = fals
|
|
|
1932
1989
|
return null;
|
|
1933
1990
|
const data = await resp.json();
|
|
1934
1991
|
if (requireExactMatch) {
|
|
1935
|
-
return data.repos.find((r) =>
|
|
1936
|
-
const normalized = r.url.trim().replace(/\/+$/, "").replace(/\.git$/, "");
|
|
1937
|
-
if (normalized === requested)
|
|
1938
|
-
return true;
|
|
1939
|
-
if (requested.includes(":"))
|
|
1940
|
-
return false;
|
|
1941
|
-
return normalized.endsWith(`/${requested}`) || normalized.endsWith(`:${requested}`);
|
|
1942
|
-
}) ?? null;
|
|
1992
|
+
return data.repos.find((r) => vcsRepoUrlMatches(r.url, vcsRepo)) ?? null;
|
|
1943
1993
|
}
|
|
1944
1994
|
return data.repos.find((r) => r.url.includes(vcsRepo)) ?? data.repos[0] ?? null;
|
|
1945
1995
|
} catch {
|
|
@@ -2255,6 +2305,16 @@ async function exitAfterTasksIfFinished(state, limit, shutdown) {
|
|
|
2255
2305
|
}
|
|
2256
2306
|
var deploymentMemoryRaters = process.env.MEMORY_RATERS;
|
|
2257
2307
|
var rowOverriddenBootEnv = new Map;
|
|
2308
|
+
var lastWithheldEnvKeys = "";
|
|
2309
|
+
function logWithheldEnvKeys(keys) {
|
|
2310
|
+
const summary = [...keys].sort().join(", ");
|
|
2311
|
+
if (summary === lastWithheldEnvKeys)
|
|
2312
|
+
return;
|
|
2313
|
+
lastWithheldEnvKeys = summary;
|
|
2314
|
+
if (!summary)
|
|
2315
|
+
return;
|
|
2316
|
+
console.log(`[env-reload] Kept ${keys.length} config entries with exportToEnv=false out of the harness env: ${summary}`);
|
|
2317
|
+
}
|
|
2258
2318
|
async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env, taskModel, sessionContext) {
|
|
2259
2319
|
const env = { ...baseEnv };
|
|
2260
2320
|
for (const key of Object.keys(env)) {
|
|
@@ -2284,7 +2344,17 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2284
2344
|
if (data.configs?.length) {
|
|
2285
2345
|
const skippedSecretKeys = [];
|
|
2286
2346
|
scriptsOnlyConfigValue = data.configs.find((config) => config.key === "SCRIPTS_ONLY_MCP")?.value;
|
|
2347
|
+
const withheldEnvKeys = [];
|
|
2287
2348
|
for (const config of data.configs) {
|
|
2349
|
+
if (config.exportToEnv === false || isEnvExportRestrictedKey(config.key)) {
|
|
2350
|
+
if (config.isSecret)
|
|
2351
|
+
registerSensitiveKeyName(config.key);
|
|
2352
|
+
delete env[config.key];
|
|
2353
|
+
if (baseEnv === process.env)
|
|
2354
|
+
delete process.env[config.key];
|
|
2355
|
+
withheldEnvKeys.push(config.key);
|
|
2356
|
+
continue;
|
|
2357
|
+
}
|
|
2288
2358
|
if (config.isSecret && config.value === MASKED_SECRET_VALUE) {
|
|
2289
2359
|
skippedSecretKeys.push(config.key);
|
|
2290
2360
|
continue;
|
|
@@ -2302,6 +2372,7 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2302
2372
|
if (skippedSecretKeys.length) {
|
|
2303
2373
|
console.warn(scrubSecrets(`[env-reload] Skipped masked secrets: ${skippedSecretKeys.join(", ")}`));
|
|
2304
2374
|
}
|
|
2375
|
+
logWithheldEnvKeys(withheldEnvKeys);
|
|
2305
2376
|
console.log(`[env-reload] Loaded ${data.configs.length} config entries from API`);
|
|
2306
2377
|
}
|
|
2307
2378
|
const codexPoolSlots = countCodexOAuthPoolSlots(data.configs ?? []);
|
|
@@ -2311,6 +2382,8 @@ async function fetchResolvedEnv(apiUrl, apiKey, agentId, baseEnv = process.env,
|
|
|
2311
2382
|
console.warn(`[env-reload] Could not fetch config, using current env: ${error}`);
|
|
2312
2383
|
}
|
|
2313
2384
|
}
|
|
2385
|
+
normalizeProviderKeyAliases(env);
|
|
2386
|
+
registerEnvSecrets(env);
|
|
2314
2387
|
const resolvedProvider = sessionContext?.provider ?? resolveHarnessProvider(env, baseEnv);
|
|
2315
2388
|
if (sessionContext?.provider)
|
|
2316
2389
|
env.HARNESS_PROVIDER = sessionContext.provider;
|
|
@@ -2511,10 +2584,6 @@ var SWARM_TOOL_LABELS = {
|
|
|
2511
2584
|
"create-channel": "\uD83D\uDCE2 Creating channel",
|
|
2512
2585
|
"list-channels": "\uD83D\uDCE2 Listing channels",
|
|
2513
2586
|
"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
2587
|
"script-search": "\uD83D\uDCDC Searching scripts",
|
|
2519
2588
|
"script-run": "\uD83D\uDCDC Running script",
|
|
2520
2589
|
"script-upsert": "\uD83D\uDCDC Saving script",
|
|
@@ -3174,7 +3243,6 @@ function setupShutdownHandlers(role, apiConfig, getRunnerState, onShutdown) {
|
|
|
3174
3243
|
});
|
|
3175
3244
|
await closeAgent(apiConfig, role);
|
|
3176
3245
|
}
|
|
3177
|
-
await savePm2State(role);
|
|
3178
3246
|
process.exit(exitCode);
|
|
3179
3247
|
};
|
|
3180
3248
|
const beginShutdown = (signal, exitCode = 0) => shutdown(signal, exitCode).catch(async (error) => {
|
|
@@ -3254,11 +3322,13 @@ async function saveCostData(cost, apiUrl, apiKey, deadline) {
|
|
|
3254
3322
|
console.warn(scrubSecrets(`[runner] Error saving cost data: ${error}`));
|
|
3255
3323
|
}
|
|
3256
3324
|
}
|
|
3257
|
-
async function saveProviderSessionId(apiUrl, apiKey, taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta) {
|
|
3325
|
+
async function saveProviderSessionId(apiUrl, apiKey, taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta, effort) {
|
|
3258
3326
|
const headers = { "Content-Type": "application/json" };
|
|
3259
3327
|
if (apiKey)
|
|
3260
3328
|
headers.Authorization = `Bearer ${apiKey}`;
|
|
3261
3329
|
const body = { claudeSessionId };
|
|
3330
|
+
if (effort !== undefined && provider !== "devin")
|
|
3331
|
+
body.effort = effort;
|
|
3262
3332
|
if (provider !== undefined)
|
|
3263
3333
|
body.provider = provider;
|
|
3264
3334
|
if (providerMeta !== undefined)
|
|
@@ -3545,6 +3615,33 @@ ${notes}` : "";
|
|
|
3545
3615
|
});
|
|
3546
3616
|
return result.skipped ? "" : result.text.trim();
|
|
3547
3617
|
}
|
|
3618
|
+
function missingTaskDirWarning(taskDir, effectiveCwd) {
|
|
3619
|
+
return taskDir && !effectiveCwd ? `Note: The task requested working directory "${taskDir}" but it does not exist. Falling back to default directory.` : undefined;
|
|
3620
|
+
}
|
|
3621
|
+
async function buildTaskSessionPrompts(input) {
|
|
3622
|
+
const { basePromptArgs, additionalSystemPrompt, context } = input;
|
|
3623
|
+
const basePrompt = await getBasePrompt(basePromptArgs);
|
|
3624
|
+
const systemPrompt = additionalSystemPrompt ? `${basePrompt}
|
|
3625
|
+
|
|
3626
|
+
${additionalSystemPrompt}` : basePrompt;
|
|
3627
|
+
const taskContext = [
|
|
3628
|
+
await getTaskContextPrompt({
|
|
3629
|
+
...basePromptArgs,
|
|
3630
|
+
repoContext: context.repoContext,
|
|
3631
|
+
slackContext: context.slackContext
|
|
3632
|
+
}),
|
|
3633
|
+
await buildRequesterProfilePrompt(context.requestedBy),
|
|
3634
|
+
context.cwdWarning?.trim()
|
|
3635
|
+
].filter((part) => Boolean(part)).join(`
|
|
3636
|
+
|
|
3637
|
+
`);
|
|
3638
|
+
return {
|
|
3639
|
+
systemPrompt,
|
|
3640
|
+
prompt: taskContext ? `${input.taskPrompt}
|
|
3641
|
+
|
|
3642
|
+
${taskContext}` : input.taskPrompt
|
|
3643
|
+
};
|
|
3644
|
+
}
|
|
3548
3645
|
|
|
3549
3646
|
class AgentRegistrationHttpError extends Error {
|
|
3550
3647
|
status;
|
|
@@ -4077,6 +4174,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4077
4174
|
if (spawnModel.warning)
|
|
4078
4175
|
console.warn(spawnModel.warning);
|
|
4079
4176
|
const model = spawnModel.model;
|
|
4177
|
+
const sessionEffort = effectiveReasoningEffort(adapter.name, model, reasoningEffortOverride);
|
|
4080
4178
|
let oauthSelection;
|
|
4081
4179
|
let oauthIsPoolBacked = false;
|
|
4082
4180
|
if (adapter.name === "codex") {
|
|
@@ -4249,7 +4347,7 @@ async function spawnProviderProcess(adapter, opts, logDir, isYolo) {
|
|
|
4249
4347
|
}).catch((err) => console.warn(`[runner] Failed to report ACP options: ${err}`));
|
|
4250
4348
|
}
|
|
4251
4349
|
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}`));
|
|
4350
|
+
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
4351
|
} else {
|
|
4254
4352
|
saveProviderSessionIdOnActiveSession(opts.apiUrl, opts.apiKey, effectiveTaskId, event.sessionId).catch((err) => console.warn(`[runner] Failed to save provider session on active session: ${err}`));
|
|
4255
4353
|
}
|
|
@@ -5077,11 +5175,9 @@ async function runAgent(config, opts) {
|
|
|
5077
5175
|
let agentDescription;
|
|
5078
5176
|
let agentSkillsSummary;
|
|
5079
5177
|
let agentMcpServers;
|
|
5080
|
-
|
|
5081
|
-
let currentTaskSlackContext;
|
|
5082
|
-
const buildSystemPrompt = async () => {
|
|
5178
|
+
const basePromptArgs = () => {
|
|
5083
5179
|
const { traits } = adapter;
|
|
5084
|
-
return
|
|
5180
|
+
return {
|
|
5085
5181
|
role,
|
|
5086
5182
|
agentId,
|
|
5087
5183
|
capabilities,
|
|
@@ -5094,14 +5190,13 @@ async function runAgent(config, opts) {
|
|
|
5094
5190
|
soulMd: agentSoulMd,
|
|
5095
5191
|
identityMd: agentIdentityMd,
|
|
5096
5192
|
claudeMd: agentClaudeMd,
|
|
5097
|
-
repoContext: currentRepoContext,
|
|
5098
|
-
slackContext: currentTaskSlackContext,
|
|
5099
5193
|
...traits.hasMcp && {
|
|
5100
5194
|
skillsSummary: agentSkillsSummary,
|
|
5101
5195
|
mcpServers: agentMcpServers
|
|
5102
5196
|
}
|
|
5103
|
-
}
|
|
5197
|
+
};
|
|
5104
5198
|
};
|
|
5199
|
+
const buildSystemPrompt = async () => getBasePrompt(basePromptArgs());
|
|
5105
5200
|
let basePrompt = await buildSystemPrompt();
|
|
5106
5201
|
let additionalSystemPrompt;
|
|
5107
5202
|
const systemPromptText = opts.systemPrompt || process.env.SYSTEM_PROMPT;
|
|
@@ -5715,7 +5810,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5715
5810
|
console.warn(`[${role}] Failed to check resume task dir "${task.dir}", falling back to default cwd`);
|
|
5716
5811
|
}
|
|
5717
5812
|
}
|
|
5718
|
-
|
|
5813
|
+
let resumeRepoContext;
|
|
5814
|
+
if (task.vcsRepo && apiUrl) {
|
|
5719
5815
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, task.vcsRepo);
|
|
5720
5816
|
const effectiveConfig = repoConfig ?? {
|
|
5721
5817
|
url: task.vcsRepo,
|
|
@@ -5724,10 +5820,27 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5724
5820
|
defaultBranch: "main"
|
|
5725
5821
|
};
|
|
5726
5822
|
const repoContext = await ensureRepoForTask(effectiveConfig, role, false);
|
|
5727
|
-
|
|
5823
|
+
resumeRepoContext = { ...repoContext, guidelines: repoConfig?.guidelines ?? null };
|
|
5824
|
+
if (!resumeCwd && repoContext?.clonePath) {
|
|
5728
5825
|
resumeCwd = repoContext.clonePath;
|
|
5729
5826
|
}
|
|
5730
5827
|
}
|
|
5828
|
+
const resumeSlackChannelId = task.slackChannelId;
|
|
5829
|
+
const resumeSession = await buildTaskSessionPrompts({
|
|
5830
|
+
basePromptArgs: basePromptArgs(),
|
|
5831
|
+
additionalSystemPrompt,
|
|
5832
|
+
taskPrompt: resumePrompt,
|
|
5833
|
+
context: {
|
|
5834
|
+
repoContext: resumeRepoContext,
|
|
5835
|
+
slackContext: resumeSlackChannelId ? {
|
|
5836
|
+
channelId: resumeSlackChannelId,
|
|
5837
|
+
threadTs: task.slackThreadTs
|
|
5838
|
+
} : undefined,
|
|
5839
|
+
requestedBy: task.requestedBy,
|
|
5840
|
+
cwdWarning: missingTaskDirWarning(task.dir, resumeCwd)
|
|
5841
|
+
}
|
|
5842
|
+
});
|
|
5843
|
+
resumePrompt = resumeSession.prompt;
|
|
5731
5844
|
const resumeRunnerSessionId = crypto.randomUUID();
|
|
5732
5845
|
await registerActiveSession(apiConfig, {
|
|
5733
5846
|
taskId: task.id,
|
|
@@ -5740,7 +5853,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5740
5853
|
runningTask = await spawnProviderProcess(adapter, {
|
|
5741
5854
|
prompt: resumePrompt,
|
|
5742
5855
|
logFile,
|
|
5743
|
-
systemPrompt:
|
|
5856
|
+
systemPrompt: resumeSession.systemPrompt,
|
|
5744
5857
|
additionalArgs: opts.additionalArgs,
|
|
5745
5858
|
resumeSessionId: undefined,
|
|
5746
5859
|
role,
|
|
@@ -5750,10 +5863,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5750
5863
|
runnerSessionId: resumeRunnerSessionId,
|
|
5751
5864
|
iteration,
|
|
5752
5865
|
taskId: task.id,
|
|
5753
|
-
|
|
5866
|
+
...resumedTaskModelSelection(task),
|
|
5754
5867
|
modelTier: task.modelTier,
|
|
5755
|
-
resolvedModel: task.resolvedModel,
|
|
5756
|
-
modelSource: task.modelSource,
|
|
5757
5868
|
effort: task.effort,
|
|
5758
5869
|
harnessProvider: state.harnessProvider,
|
|
5759
5870
|
cwd: resumeCwd,
|
|
@@ -5980,7 +6091,8 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5980
6091
|
const taskContextKey = trigger.task?.contextKey;
|
|
5981
6092
|
const taskSlackChannelId = trigger.task?.slackChannelId;
|
|
5982
6093
|
const taskSlackThreadTs = trigger.task?.slackThreadTs;
|
|
5983
|
-
|
|
6094
|
+
const taskSlackContext = taskSlackChannelId ? { channelId: taskSlackChannelId, threadTs: taskSlackThreadTs } : undefined;
|
|
6095
|
+
let currentRepoContext;
|
|
5984
6096
|
const taskVcsRepo = trigger.task?.vcsRepo;
|
|
5985
6097
|
if (taskVcsRepo && apiUrl) {
|
|
5986
6098
|
const repoConfig = await fetchRepoConfig(apiUrl, apiKey, taskVcsRepo);
|
|
@@ -5996,8 +6108,6 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
5996
6108
|
...repoResult,
|
|
5997
6109
|
guidelines: repoConfig?.guidelines ?? null
|
|
5998
6110
|
};
|
|
5999
|
-
} else {
|
|
6000
|
-
currentRepoContext = undefined;
|
|
6001
6111
|
}
|
|
6002
6112
|
const taskDir = trigger.task?.dir;
|
|
6003
6113
|
let effectiveCwd;
|
|
@@ -6027,12 +6137,7 @@ ${additionalSystemPrompt}` : basePrompt;
|
|
|
6027
6137
|
}
|
|
6028
6138
|
triggerPrompt += " You can still access any path on the filesystem — this is just your starting directory.";
|
|
6029
6139
|
}
|
|
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
|
-
}
|
|
6140
|
+
const cwdWarning = missingTaskDirWarning(taskDir, effectiveCwd);
|
|
6036
6141
|
if (state.harnessProvider !== "claude-managed") {
|
|
6037
6142
|
const skillResult = await refreshSkillsIfChanged({ apiUrl, swarmUrl, apiKey, agentId, role }, lastSkillHash);
|
|
6038
6143
|
if (skillResult.changed && skillResult.summary) {
|
|
@@ -6059,12 +6164,19 @@ Note: The task requested working directory "${taskDir}" but it does not exist. F
|
|
|
6059
6164
|
agentDescription = identityResult.fields.description;
|
|
6060
6165
|
console.log(`[${role}] Identity changed — refreshing system prompt (${identityResult.changedFields.join(", ")})`);
|
|
6061
6166
|
}
|
|
6062
|
-
const
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6167
|
+
const taskSession = await buildTaskSessionPrompts({
|
|
6168
|
+
basePromptArgs: basePromptArgs(),
|
|
6169
|
+
additionalSystemPrompt,
|
|
6170
|
+
taskPrompt: triggerPrompt,
|
|
6171
|
+
context: {
|
|
6172
|
+
repoContext: currentRepoContext,
|
|
6173
|
+
slackContext: taskSlackContext,
|
|
6174
|
+
requestedBy: trigger.requestedBy,
|
|
6175
|
+
cwdWarning
|
|
6176
|
+
}
|
|
6177
|
+
});
|
|
6178
|
+
const taskSystemPrompt = taskSession.systemPrompt;
|
|
6179
|
+
triggerPrompt = taskSession.prompt;
|
|
6068
6180
|
const modelUnsupported = trigger.task?.modelUnsupported;
|
|
6069
6181
|
if (trigger.taskId && modelUnsupported) {
|
|
6070
6182
|
console.log(`[${role}] ${modelUnsupported}`);
|