@desplega.ai/agent-swarm 1.158.0 → 1.160.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-xaq4n6pc.js → acp-adapter-2mjwcsfh.js} +124 -27
- package/dist/{actions-p9hz5yat.js → actions-e43rxskr.js} +35 -30
- package/dist/{anthropic-messages-51pz26qe.js → anthropic-messages-5qx80j9k.js} +106 -16
- package/dist/{app-g26wdcz6.js → app-mc7xfagn.js} +12 -10
- package/dist/{assistant-wydfqkb3.js → assistant-sedkzv3b.js} +42 -31
- package/dist/{azure-openai-responses-8gksqtmz.js → azure-openai-responses-nfb21z9a.js} +13 -14
- package/dist/{boot-reembed-se8zmdcp.js → boot-reembed-cqz9swn5.js} +13 -12
- package/dist/{boot-reembed-g5ckg9yb.js → boot-reembed-m3656j2n.js} +14 -13
- package/dist/{boot-scrub-logs-wfxqan61.js → boot-scrub-logs-xbxf5d7w.js} +11 -9
- package/dist/boot-seeds-gsetbs5y.js +28 -0
- package/dist/{claude-adapter-tv2x4f36.js → claude-adapter-dc6289mc.js} +28 -23
- package/dist/{claude-managed-adapter-41b2s7fd.js → claude-managed-adapter-naaw51me.js} +4 -3
- package/dist/{claude-managed-setup-60g8aazx.js → claude-managed-setup-eacvchx0.js} +12 -3
- package/dist/claude-sdk-session-bqp2xvym.js +29722 -0
- package/dist/{cli-987hg0aa.js → cli-0jwe9034.js} +2 -2
- package/dist/{cli-vj6h9kc2.js → cli-0m7wct0d.js} +59 -1
- package/dist/{cli-c07r9a2m.js → cli-0q3avq3s.js} +12 -11
- package/dist/{cli-19jenss3.js → cli-0wgxmwf6.js} +31 -10
- package/dist/cli-0x01kwrd.js +491 -0
- package/dist/cli-0xqde53b.js +176 -0
- package/dist/cli-10nhj6xq.js +8355 -0
- package/dist/{cli-tt9k8r35.js → cli-12tszpk9.js} +479 -910
- package/dist/{cli-5b6b62tz.js → cli-13hw4z91.js} +1 -1
- package/dist/{cli-cqt19wg6.js → cli-1a2j50m0.js} +11 -2
- package/dist/{cli-xberxa1r.js → cli-25fcq4b4.js} +2 -2
- package/dist/{cli-npssxgaz.js → cli-2pdaysab.js} +52 -2
- package/dist/cli-3qhyh31j.js +166 -0
- package/dist/cli-447dt1h3.js +3828 -0
- package/dist/cli-4derpgyk.js +115 -0
- package/dist/{cli-00w2c66p.js → cli-523679eh.js} +13 -2
- package/dist/{cli-y95wp3tg.js → cli-58e8yr0d.js} +1 -1
- package/dist/{cli-24k806sc.js → cli-5nbmpy8w.js} +3 -3
- package/dist/{cli-53sz8gkz.js → cli-6cs6wzxt.js} +1 -1
- package/dist/cli-741yb0xx.js +1027 -0
- package/dist/cli-74h9hscv.js +69 -0
- package/dist/cli-7cxw8b60.js +14910 -0
- package/dist/{cli-xhaeg2nc.js → cli-7e398j1h.js} +1 -1
- package/dist/cli-7kyk9jr3.js +22 -0
- package/dist/cli-89s4ngw3.js +183 -0
- package/dist/{cli-9b13ggd1.js → cli-89v6kyq7.js} +1 -0
- package/dist/{cli-ftfvggzx.js → cli-9hsgwz4w.js} +1045 -581
- package/dist/{cli-rqz8qbw7.js → cli-a8dvhzrt.js} +59 -20
- package/dist/{cli-j57qkrpq.js → cli-azhgzetg.js} +395 -56
- package/dist/cli-br0qdrnp.js +2150 -0
- package/dist/{cli-rj19hc34.js → cli-btfv8y88.js} +1 -1
- package/dist/{cli-8qmme6vd.js → cli-c8a36vcc.js} +2 -2
- package/dist/cli-cpvsaqsw.js +333 -0
- package/dist/cli-d5czme6m.js +17805 -0
- package/dist/{cli-h38x0qhg.js → cli-et8m9xsv.js} +4 -3
- package/dist/{cli-x24pshtq.js → cli-evvtk35y.js} +6 -6
- package/dist/{cli-7s3syk22.js → cli-f8gy6r2r.js} +5 -5
- package/dist/{cli-zt1227k1.js → cli-fkqhbg8g.js} +5 -3
- package/dist/{cli-9httdpyq.js → cli-g2whhdrf.js} +1 -1
- package/dist/cli-gt4hxb8p.js +99 -0
- package/dist/{cli-s8eet254.js → cli-jajnsm8q.js} +37184 -53838
- package/dist/{cli-7gtvvpbh.js → cli-jayjpjmb.js} +21 -12
- package/dist/{cli-68w09sjw.js → cli-jyk0ynw2.js} +27 -89
- package/dist/{cli-aehm1rbq.js → cli-jz4w45qt.js} +1152 -61
- package/dist/cli-kmcpfwn2.js +333856 -0
- package/dist/{cli-4198qc9v.js → cli-ktmyrtpn.js} +19 -3
- package/dist/{cli-j55n64b6.js → cli-mfe5btp9.js} +505 -189
- package/dist/{cli-q67y4wzm.js → cli-phsaj4xq.js} +24 -2
- package/dist/{cli-1hkrch3k.js → cli-pm1rst0h.js} +46 -7
- package/dist/{cli-pw9rj5t9.js → cli-pqetb83f.js} +1 -176
- package/dist/{cli-ggm92wcn.js → cli-ptr8h7kp.js} +20 -1
- package/dist/{cli-s8s499xy.js → cli-qbksc292.js} +3 -2
- package/dist/{cli-47m6dkd3.js → cli-qydf22qq.js} +597 -346
- package/dist/{cli-3gmcwfyx.js → cli-r1mxd1xh.js} +13 -6
- package/dist/cli-rb9m6rpe.js +4980 -0
- package/dist/cli-rykfmgwg.js +102 -0
- package/dist/{cli-5d10vd2m.js → cli-shkxm1vn.js} +6 -5
- package/dist/{cli-eetrvv91.js → cli-t3p77qk1.js} +1 -1
- package/dist/cli-tfky2838.js +756 -0
- package/dist/{cli-g8djp6qe.js → cli-tmqt7dpj.js} +40 -0
- package/dist/{cli-fgqxwrpv.js → cli-tpq83z89.js} +1631 -127
- package/dist/cli-trc24wk2.js +143 -0
- package/dist/{cli-aky8tctm.js → cli-tzx2ke1v.js} +3 -3
- package/dist/cli-v7fn5gms.js +1425 -0
- package/dist/{cli-wscdvcqz.js → cli-vctdqs5h.js} +1 -1
- package/dist/{cli-cw9zck8j.js → cli-xjcywfsf.js} +8 -4
- package/dist/{cli-k0g1sjzm.js → cli-ybgv4kw2.js} +18 -11
- package/dist/{cli-rjehvrts.js → cli-ydmcgve1.js} +8 -8
- package/dist/{cli-vhjwh6cz.js → cli-ygwm91nt.js} +1 -1
- package/dist/{cli-mcnhgnn1.js → cli-ykk5jaax.js} +184 -26
- package/dist/{cli-de1396j2.js → cli-ywybs5as.js} +7 -1
- package/dist/cli-zpep9q5e.js +491 -0
- package/dist/cli.js +41 -32
- package/dist/cloudflare-workers-ai-system-one-k6fbxw9d.js +46 -0
- package/dist/{codex-adapter-cnm8wk11.js → codex-adapter-nmxcatww.js} +26 -17
- package/dist/{codex-hook-9hptmdhj.js → codex-hook-20me6byw.js} +2 -2
- package/dist/{codex-login-x3jk4etn.js → codex-login-w6fz4xbz.js} +50 -5
- package/dist/{codex-session-runner-gfg547zj.js → codex-session-runner-90aa80ev.js} +24 -17
- package/dist/{commands-e3bn0p75.js → commands-8wcq1kn7.js} +11 -9
- package/dist/{db-03v9kzr2.js → db-j40kc4se.js} +25 -11
- package/dist/{devin-adapter-8vgkwh29.js → devin-adapter-dpsv6hd9.js} +1 -1
- package/dist/{dispatcher-nrmg8yht.js → dispatcher-4zqy768d.js} +34 -29
- package/dist/{dsh-adapter-k03nfqa6.js → dsh-adapter-mpnzgztj.js} +3 -3
- package/dist/{e2b-93x1k0j5.js → e2b-ez07znam.js} +4 -3
- package/dist/execute-6e7qeyk4.js +1017 -0
- package/dist/{google-generative-ai-bxmv50nc.js → google-generative-ai-k6n5nbpp.js} +6 -5
- package/dist/{google-vertex-809af514.js → google-vertex-44xxtcvp.js} +6 -5
- package/dist/{handlers-aqcedbyb.js → handlers-kjdce1w5.js} +37 -32
- package/dist/{hook-ybvmrmhq.js → hook-czx13n12.js} +19 -15
- package/dist/{hook-7vkskkre.js → hook-r2t4bqfg.js} +18 -14
- package/dist/{http-2eqa8t24.js → http-3bbb19be.js} +900 -145
- package/dist/{index-f6cryxwe.js → index-4a5njnm1.js} +2 -59
- package/dist/{index-x71bvq0p.js → index-668me3f0.js} +35 -30
- package/dist/{index-c6zsv1bd.js → index-7aj368tw.js} +13 -12
- package/dist/{index-1yks3qcr.js → index-fg0dsp6c.js} +34 -29
- package/dist/{index-chgdkq36.js → index-kkv84jq9.js} +34 -29
- package/dist/{index-a3vn96n8.js → index-zg7vp46x.js} +198 -54
- package/dist/{keepalive-vtkf5n99.js → keepalive-yra8dy57.js} +13 -11
- package/dist/{lead-h3sp357x.js → lead-va0pad2c.js} +54 -49
- package/dist/llama-cpp-classify-tgj35k8d.js +335 -0
- package/dist/{maintenance-jzeqtk3q.js → maintenance-hqewtmyg.js} +14 -13
- package/dist/{mistral-conversations-zx0kn554.js → mistral-conversations-pc3ntnxt.js} +14 -17
- package/dist/{oauth-refresh-sweep-qp3dzmdp.js → oauth-refresh-sweep-7rdt1m9n.js} +12 -10
- package/dist/{onboard-tmsp0qbz.js → onboard-j6ms6d0x.js} +6 -5
- package/dist/{openai-codex-responses-4vjqzvjp.js → openai-codex-responses-bbancrr0.js} +21 -8
- package/dist/{openai-completions-9hjrqbw8.js → openai-completions-jpaj5g2b.js} +9 -12
- package/dist/{openai-responses-7b1pn0xt.js → openai-responses-200k1wx4.js} +23 -18
- package/dist/{opencode-adapter-x6x2da1z.js → opencode-adapter-89rabkw2.js} +8 -7
- package/dist/{openrouter-images-9f9ek4rw.js → openrouter-images-8yx3487g.js} +5 -7
- package/dist/{otel-impl-9mz73q65.js → otel-impl-a792rjz0.js} +1 -1
- package/dist/{pi-messages-txpjj39q.js → pi-messages-vxdt8v7j.js} +2 -1
- package/dist/{pi-mono-adapter-m6dvv0dz.js → pi-mono-adapter-g7qzvr3v.js} +295 -70
- package/dist/pricing-refresh-wx0tp7cb.js +39 -0
- package/dist/quickjs-r1pq2107.wasm +0 -0
- package/dist/{rbac-roles-c9wqz83x.js → rbac-roles-8tzawacv.js} +12 -10
- package/dist/{render-v2-gryrh9h8.js → render-v2-mm7zswb8.js} +12 -10
- package/dist/runtime-zyssgse0.js +24 -0
- package/dist/{setup-q9720bt6.js → setup-8y70ys6t.js} +6 -5
- package/dist/typesafe-system-one-2ef30pec.js +27 -0
- package/dist/{virtual-modules-3htpgn8x.js → virtual-modules-6nmk7h3n.js} +22 -13
- package/dist/{work-objects-b76x7deb.js → work-objects-fg6xkb0n.js} +37 -32
- package/dist/{worker-6vrxbv41.js → worker-wmwhxsph.js} +54 -49
- package/openapi.json +1314 -91
- package/package.json +12 -11
- package/src/be/db/agents.ts +20 -0
- package/src/be/db/api-keys.ts +70 -0
- package/src/be/db/tasks/human-free.ts +442 -0
- package/src/be/db/tasks/read.ts +56 -1
- package/src/be/db/tasks/write.ts +107 -11
- package/src/be/db.ts +274 -188
- package/src/be/harness-model-support.ts +182 -0
- package/src/be/human-free-drain.ts +67 -0
- package/src/be/memory/providers/sqlite-store.ts +51 -15
- package/src/be/migrations/182_task_human_free_flag.sql +63 -0
- package/src/be/migrations/183_human_free_reclassify_queue.sql +25 -0
- package/src/be/migrations/184_model_catalog.sql +120 -0
- package/src/be/migrations/185_api_key_auth_failures.sql +6 -0
- package/src/be/migrations/186_api_key_seat_mismatch.sql +8 -0
- package/src/be/model-catalog-store.ts +644 -0
- package/src/be/model-tier-keys.ts +46 -0
- package/src/be/model-tier-resolution.ts +534 -0
- package/src/be/model-validation.ts +188 -0
- package/src/be/models-catalog.ts +61 -7
- package/src/be/modelsdev-cache.json +82 -0
- package/src/be/modelsdev-cache.ts +2 -0
- package/src/be/pricing-refresh.ts +154 -12
- package/src/be/scripts/typecheck.ts +15 -0
- package/src/be/seed/runner.ts +18 -12
- package/src/be/seed/types.ts +1 -0
- package/src/be/seed-scripts/catalog/task-failure-audit.ts +61 -9
- package/src/be/swarm-config-guard.ts +8 -0
- package/src/cli.tsx +10 -0
- package/src/commands/claude-managed-setup.ts +3 -1
- package/src/commands/codex-login.ts +67 -0
- package/src/commands/credential-outcome-report.ts +191 -0
- package/src/commands/rate-limit-outcome.ts +34 -4
- package/src/commands/runner.ts +357 -186
- package/src/commands/seat-mismatch-report.ts +46 -0
- package/src/extensions/apply-task-create.ts +27 -1
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/heartbeat/heartbeat.ts +79 -17
- package/src/heartbeat/templates.ts +2 -2
- package/src/http/agents.ts +62 -1
- package/src/http/api-keys.ts +140 -2
- package/src/http/codex-oauth-keep-warm.ts +3 -5
- package/src/http/index.ts +8 -0
- package/src/http/memory.ts +12 -5
- package/src/http/models-catalog.ts +357 -8
- package/src/http/poll.ts +54 -3
- package/src/http/schedules.ts +51 -6
- package/src/http/script-runs.ts +12 -0
- package/src/http/session-data.ts +2 -5
- package/src/http/stats.ts +6 -8
- package/src/http/status.ts +15 -1
- package/src/http/tasks.ts +90 -7
- package/src/http/usage-cache.ts +56 -15
- package/src/http/workflows.ts +46 -8
- package/src/mcp-client/http-client.ts +5 -0
- package/src/memory/recall-query.ts +74 -0
- package/src/prompts/base-prompt.ts +15 -4
- package/src/prompts/session-templates.ts +23 -1
- package/src/providers/acp-adapter.ts +1 -0
- package/src/providers/claude-adapter.ts +14 -5
- package/src/providers/claude-managed-adapter.ts +1 -0
- package/src/providers/claude-managed-models.ts +47 -161
- package/src/providers/claude-sdk-session.ts +3 -1
- package/src/providers/codex-adapter.ts +14 -14
- package/src/providers/codex-models.ts +65 -198
- package/src/providers/devin-adapter.ts +1 -0
- package/src/providers/dsh-adapter.ts +2 -1
- package/src/providers/harness-version.ts +83 -7
- package/src/providers/opencode-adapter.ts +53 -1
- package/src/providers/pi-binary-root/src/extensions/codemode/worker.ts +11 -0
- package/src/providers/pi-codemode-runtime.ts +17 -0
- package/src/providers/pi-mono-adapter.ts +361 -83
- package/src/providers/pi-mono-extension.ts +16 -1
- package/src/providers/reasoning-effort.ts +44 -140
- package/src/providers/types.ts +8 -0
- package/src/rbac/legacy-policy.ts +43 -0
- package/src/rbac/permissions.ts +15 -0
- package/src/scripts-runtime/sdk-allowlist.ts +4 -0
- package/src/scripts-runtime/types/stdlib.d.ts +15 -0
- package/src/scripts-runtime/types/swarm-extension.d.ts +3 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +15 -0
- package/src/server.ts +6 -0
- package/src/slack/assistant.ts +13 -0
- package/src/slack/message-text.ts +56 -2
- package/src/slack/render-v2.ts +87 -37
- package/src/slack/session-status.ts +541 -0
- package/src/slack/thread-buffer.ts +10 -2
- package/src/tasks/sibling-awareness.ts +3 -2
- package/src/telemetry.ts +5 -4
- package/src/templates.d.ts +6 -0
- package/src/tests/agents-list-model-display.test.ts +4 -6
- package/src/tests/api-key-auth-failure-route.test.ts +142 -0
- package/src/tests/api-key-tracking.test.ts +368 -1
- package/src/tests/base-prompt.test.ts +43 -2
- package/src/tests/claude-adapter.test.ts +68 -0
- package/src/tests/claude-managed-adapter.test.ts +12 -18
- package/src/tests/codex-adapter.test.ts +2 -1
- package/src/tests/codex-auth-failure.test.ts +52 -0
- package/src/tests/codex-gpt6-release.test.ts +66 -5
- package/src/tests/codex-login.test.ts +116 -0
- package/src/tests/context-window.test.ts +7 -5
- package/src/tests/credential-exhaustion-policy.test.ts +118 -3
- package/src/tests/credential-outcome-report.test.ts +171 -0
- package/src/tests/credential-status-api.test.ts +103 -2
- package/src/tests/db-extraction-contract.test.ts +1 -0
- package/src/tests/db-task-read-contract.test.ts +10 -1
- package/src/tests/db-task-write-contract.test.ts +535 -2
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dokploy-deploy.test.ts +315 -0
- package/src/tests/dsh-adapter.test.ts +1 -1
- package/src/tests/explicit-model-validation.test.ts +583 -0
- package/src/tests/extensions-pre-task.test.ts +73 -0
- package/src/tests/fetch-resolved-env.test.ts +46 -0
- package/src/tests/hang-watchdog-worker.ts +47 -0
- package/src/tests/hang-watchdog.test.ts +45 -0
- package/src/tests/hang-watchdog.ts +30 -0
- package/src/tests/harness-model-guard.test.ts +123 -0
- package/src/tests/harness-model-support.test.ts +374 -0
- package/src/tests/harness-version.test.ts +70 -3
- package/src/tests/heartbeat-checklist-config.test.ts +71 -0
- package/src/tests/heartbeat-checklist.test.ts +4 -2
- package/src/tests/heartbeat-orphan-resume.test.ts +48 -0
- package/src/tests/http-task-write-ownership.test.ts +172 -0
- package/src/tests/human-free-flag.test.ts +279 -0
- package/src/tests/human-free-oracle.ts +57 -0
- package/src/tests/human-free-reclassify.test.ts +669 -0
- package/src/tests/memory-fts-populate.test.ts +139 -0
- package/src/tests/memory-http-recall-gating.test.ts +125 -1
- package/src/tests/migration-046-budgets.test.ts +3 -3
- package/src/tests/model-catalog-migration.test.ts +134 -0
- package/src/tests/model-catalog-table.test.ts +249 -0
- package/src/tests/model-catalog-write-access.test.ts +387 -0
- package/src/tests/model-rate-limit-windows.test.ts +19 -0
- package/src/tests/model-tier-resolution.test.ts +611 -0
- package/src/tests/models-catalog.test.ts +1 -1
- package/src/tests/multi-runtime-enabled-stats.test.ts +65 -1
- package/src/tests/opencode-adapter.test.ts +157 -2
- package/src/tests/package-publish.test.ts +137 -36
- package/src/tests/pi-codemode.test.ts +246 -0
- package/src/tests/pi-mono-adapter.test.ts +3 -0
- package/src/tests/pi-native-mcp.test.ts +193 -0
- package/src/tests/pi-tool-exposure.test.ts +374 -0
- package/src/tests/preload.ts +3 -0
- package/src/tests/pricing-routes.test.ts +2 -2
- package/src/tests/prompt-template-session.test.ts +5 -3
- package/src/tests/rate-limit-event.test.ts +65 -0
- package/src/tests/rate-limit-outcome.test.ts +90 -0
- package/src/tests/rbac-engine.test.ts +77 -3
- package/src/tests/reasoning-effort.test.ts +109 -0
- package/src/tests/refresh-modelsdev-carryforward.test.ts +5 -5
- package/src/tests/runner-key-completion-outcome.test.ts +112 -0
- package/src/tests/runner-key-outcome-late-reset.test.ts +224 -0
- package/src/tests/runner-registration-retry.test.ts +149 -0
- package/src/tests/runtime-model-catalog.test.ts +86 -0
- package/src/tests/script-connections.test.ts +9 -0
- package/src/tests/seat-mismatch-report.test.ts +85 -0
- package/src/tests/seed-scripts.test.ts +138 -0
- package/src/tests/seed.test.ts +25 -0
- package/src/tests/session-costs.test.ts +14 -11
- package/src/tests/slack-message-text.test.ts +101 -0
- package/src/tests/slack-render-v2.test.ts +96 -0
- package/src/tests/slack-session-status.test.ts +626 -0
- package/src/tests/slack-thread-buffer-context.test.ts +93 -0
- package/src/tests/status.test.ts +29 -0
- package/src/tests/steering-promotion.test.ts +51 -0
- package/src/tests/store-progress-ownership.test.ts +136 -0
- package/src/tests/subscription-plans.test.ts +28 -0
- package/src/tests/task-cascade-fail.test.ts +148 -2
- package/src/tests/task-citations.test.ts +3 -2
- package/src/tests/tool-annotations.test.ts +1 -1
- package/src/tests/usage-cache.test.ts +166 -0
- package/src/tests/workflow-agent-task.test.ts +30 -0
- package/src/tests/workflow-executors.test.ts +5 -2
- package/src/tests/workflow-system-one-decision-review.test.ts +1021 -0
- package/src/tests/workflow-system-one-decision-save-warnings.test.ts +365 -0
- package/src/tests/workflow-system-one-decision.test.ts +2063 -0
- package/src/tests/workflow-triggers-v2.test.ts +320 -0
- package/src/tools/model-catalog/index.ts +137 -0
- package/src/tools/schedules/create-schedule.ts +17 -2
- package/src/tools/schedules/patch-schedule.ts +31 -1
- package/src/tools/schedules/update-schedule.ts +31 -1
- package/src/tools/send-task.ts +18 -1
- package/src/tools/store-progress.ts +49 -4
- package/src/tools/task-action.ts +14 -1
- package/src/tools/tool-config.ts +3 -1
- package/src/tools/workflows/create-workflow.ts +17 -4
- package/src/tools/workflows/patch-workflow-node.ts +17 -7
- package/src/tools/workflows/patch-workflow.ts +9 -2
- package/src/tools/workflows/update-workflow.ts +17 -4
- package/src/types.ts +41 -1
- package/src/utils/codex-auth-failure.ts +34 -0
- package/src/utils/context-window.ts +47 -53
- package/src/utils/credentials.ts +72 -30
- package/src/utils/error-tracker.ts +80 -0
- package/src/utils/harness-cli-version.ts +115 -0
- package/src/utils/harness-model-error.ts +33 -0
- package/src/utils/model-rate-limit-windows.ts +12 -0
- package/src/utils/runtime-model-catalog.ts +152 -0
- package/src/utils/spawn-model-guard.ts +43 -0
- package/src/utils/subscription-plans.ts +22 -0
- package/src/workflows/approval-resolution.ts +39 -0
- package/src/workflows/definition.ts +7 -0
- package/src/workflows/engine.ts +69 -1
- package/src/workflows/executors/agent-task.ts +16 -6
- package/src/workflows/executors/base.ts +53 -0
- package/src/workflows/executors/human-in-the-loop.ts +8 -8
- package/src/workflows/executors/index.ts +1 -0
- package/src/workflows/executors/registry.ts +2 -0
- package/src/workflows/executors/system-one-decision.ts +1232 -0
- package/src/workflows/executors/system-one-providers.ts +301 -0
- package/src/workflows/executors/workflow-llm.ts +13 -1
- package/src/workflows/model-validation.ts +45 -0
- package/src/workflows/patch-definition.ts +5 -0
- package/src/workflows/readiness.ts +86 -0
- package/src/workflows/recovery.ts +12 -12
- package/src/workflows/resume.ts +23 -9
- package/src/workflows/triggers.ts +85 -0
- package/templates/schedules/daily-blocker-digest/content.md +4 -5
- package/templates/skills/agent-browser/SKILL.md +6 -5
- package/templates/skills/agent-browser/content.md +6 -5
- package/templates/skills/heartbeat-runbook/config.json +1 -1
- package/templates/skills/heartbeat-runbook/content.md +2 -2
- package/templates/skills/swarm-scripts/SKILL.md +1 -1
- package/templates/skills/swarm-scripts/content.md +1 -1
- package/templates/skills/workflow-iterate/content.md +82 -1
- package/templates/workflows/claude-code-changelog-watch/content.md +2 -0
- package/templates/workflows/pr-review-status-sweep/content.md +2 -0
- package/dist/boot-seeds-s3q01xj3.js +0 -26
- package/dist/claude-sdk-session-t442qz6f.js +0 -39108
- package/dist/cli-0xjkj1j7.js +0 -61
- package/dist/cli-20cj37vt.js +0 -335561
- package/dist/cli-2djtr51b.js +0 -48
- package/dist/cli-65hjmev5.js +0 -1141
- package/dist/cli-aw1jwp1r.js +0 -14075
- package/dist/cli-h967nb6r.js +0 -6603
- package/dist/cli-vapyk8sw.js +0 -20
- package/dist/cli-ws6rqycm.js +0 -247
- package/dist/pricing-refresh-v1cbr9te.js +0 -27
- package/src/providers/modelsdev-reasoning.json +0 -6453
- package/dist/{index-f24115ge.js → index-2wsdsnmm.js} +3 -3
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ Or install it as a plugin in your harness:
|
|
|
74
74
|
| Harness | Command |
|
|
75
75
|
|---|---|
|
|
76
76
|
| Claude Code | `/plugin marketplace add desplega-ai/agent-swarm` then `/plugin install agent-swarm@agent-swarm` |
|
|
77
|
-
| Codex | `codex plugin add
|
|
77
|
+
| Codex | `codex plugin marketplace add desplega-ai/agent-swarm && codex plugin add agent-swarm@agent-swarm` (or use `npx skills` above) |
|
|
78
78
|
| Cursor | `/add-plugin desplega-ai/agent-swarm` |
|
|
79
79
|
| Gemini CLI | `gemini extensions install https://github.com/desplega-ai/agent-swarm` |
|
|
80
80
|
| Antigravity / Factory Droid | `droid plugin marketplace add https://github.com/desplega-ai/agent-swarm` then `droid plugin install agent-swarm@agent-swarm` |
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
import {
|
|
30
30
|
init_package,
|
|
31
31
|
package_default
|
|
32
|
-
} from "./cli-
|
|
32
|
+
} from "./cli-0q3avq3s.js";
|
|
33
33
|
import {
|
|
34
34
|
init_secret_scrubber,
|
|
35
35
|
scrubSecrets
|
|
@@ -1612,6 +1612,22 @@ var zUsageUpdate = object({
|
|
|
1612
1612
|
return;
|
|
1613
1613
|
})
|
|
1614
1614
|
});
|
|
1615
|
+
var zNoticeSeverity = union([
|
|
1616
|
+
literal("info"),
|
|
1617
|
+
literal("warning"),
|
|
1618
|
+
literal("error"),
|
|
1619
|
+
string()
|
|
1620
|
+
]);
|
|
1621
|
+
var zNotice = object({
|
|
1622
|
+
severity: zNoticeSeverity,
|
|
1623
|
+
title: string().min(1),
|
|
1624
|
+
description: defaultOnError(string().nullish(), () => {
|
|
1625
|
+
return;
|
|
1626
|
+
}),
|
|
1627
|
+
_meta: defaultOnError(record(string(), unknown()).nullish(), () => {
|
|
1628
|
+
return;
|
|
1629
|
+
})
|
|
1630
|
+
});
|
|
1615
1631
|
var zCompactionId = string();
|
|
1616
1632
|
var zCompactionStatus = union([
|
|
1617
1633
|
literal("in_progress"),
|
|
@@ -1680,6 +1696,9 @@ var zSessionUpdate = union([
|
|
|
1680
1696
|
zUsageUpdate.and(object({
|
|
1681
1697
|
sessionUpdate: literal("usage_update")
|
|
1682
1698
|
})),
|
|
1699
|
+
zNotice.and(object({
|
|
1700
|
+
sessionUpdate: literal("notice")
|
|
1701
|
+
})),
|
|
1683
1702
|
zCompactionUpdate.and(object({
|
|
1684
1703
|
sessionUpdate: literal("compaction_update")
|
|
1685
1704
|
})),
|
|
@@ -1741,6 +1760,7 @@ var zSessionConfigOptionsCapabilities = object({
|
|
|
1741
1760
|
return;
|
|
1742
1761
|
})
|
|
1743
1762
|
});
|
|
1763
|
+
var zNoticeCapabilities = record(string(), unknown());
|
|
1744
1764
|
var zClientSessionCapabilities = object({
|
|
1745
1765
|
compaction: defaultOnError(zCompactionCapabilities.nullish(), () => {
|
|
1746
1766
|
return;
|
|
@@ -1748,6 +1768,9 @@ var zClientSessionCapabilities = object({
|
|
|
1748
1768
|
configOptions: defaultOnError(zSessionConfigOptionsCapabilities.nullish(), () => {
|
|
1749
1769
|
return;
|
|
1750
1770
|
}),
|
|
1771
|
+
notices: defaultOnError(zNoticeCapabilities.nullish(), () => {
|
|
1772
|
+
return;
|
|
1773
|
+
}),
|
|
1751
1774
|
_meta: defaultOnError(record(string(), unknown()).nullish(), () => {
|
|
1752
1775
|
return;
|
|
1753
1776
|
})
|
|
@@ -3190,53 +3213,124 @@ function protocolErrorResponse(error) {
|
|
|
3190
3213
|
};
|
|
3191
3214
|
}
|
|
3192
3215
|
|
|
3216
|
+
// node_modules/@agentclientprotocol/sdk/dist/stream-limits.js
|
|
3217
|
+
var DEFAULT_MAX_MESSAGE_BYTES = 32 * 1024 * 1024;
|
|
3218
|
+
|
|
3219
|
+
class MessageTooLargeError extends Error {
|
|
3220
|
+
maxMessageBytes;
|
|
3221
|
+
constructor(maxMessageBytes) {
|
|
3222
|
+
super(`Incoming ACP data exceeds the configured ${maxMessageBytes} byte limit`);
|
|
3223
|
+
this.maxMessageBytes = maxMessageBytes;
|
|
3224
|
+
this.name = "MessageTooLargeError";
|
|
3225
|
+
}
|
|
3226
|
+
}
|
|
3227
|
+
function resolveMaxMessageBytes(value) {
|
|
3228
|
+
const maxMessageBytes = value ?? DEFAULT_MAX_MESSAGE_BYTES;
|
|
3229
|
+
if (!Number.isSafeInteger(maxMessageBytes) || maxMessageBytes <= 0) {
|
|
3230
|
+
throw new RangeError("maxMessageBytes must be a positive safe integer");
|
|
3231
|
+
}
|
|
3232
|
+
return maxMessageBytes;
|
|
3233
|
+
}
|
|
3234
|
+
|
|
3235
|
+
class MessageBuffer {
|
|
3236
|
+
#buffer = new Uint8Array(0);
|
|
3237
|
+
#length = 0;
|
|
3238
|
+
#maxMessageBytes;
|
|
3239
|
+
constructor(maxMessageBytes) {
|
|
3240
|
+
this.#maxMessageBytes = resolveMaxMessageBytes(maxMessageBytes);
|
|
3241
|
+
}
|
|
3242
|
+
get byteLength() {
|
|
3243
|
+
return this.#length;
|
|
3244
|
+
}
|
|
3245
|
+
get lastByte() {
|
|
3246
|
+
return this.#buffer[this.#length - 1];
|
|
3247
|
+
}
|
|
3248
|
+
#checkAppend(byteLength) {
|
|
3249
|
+
if (byteLength > this.#maxMessageBytes - this.#length) {
|
|
3250
|
+
this.clear();
|
|
3251
|
+
throw new MessageTooLargeError(this.#maxMessageBytes);
|
|
3252
|
+
}
|
|
3253
|
+
}
|
|
3254
|
+
append(bytes) {
|
|
3255
|
+
this.#checkAppend(bytes.byteLength);
|
|
3256
|
+
const length = this.#length + bytes.byteLength;
|
|
3257
|
+
if (length > this.#buffer.byteLength) {
|
|
3258
|
+
const capacity = Math.min(this.#maxMessageBytes, Math.max(length, this.#buffer.byteLength * 2, 1024));
|
|
3259
|
+
const buffer = new Uint8Array(capacity);
|
|
3260
|
+
buffer.set(this.#buffer.subarray(0, this.#length));
|
|
3261
|
+
this.#buffer = buffer;
|
|
3262
|
+
}
|
|
3263
|
+
this.#buffer.set(bytes, this.#length);
|
|
3264
|
+
this.#length = length;
|
|
3265
|
+
}
|
|
3266
|
+
take() {
|
|
3267
|
+
const bytes = this.#buffer.subarray(0, this.#length);
|
|
3268
|
+
this.clear();
|
|
3269
|
+
return bytes;
|
|
3270
|
+
}
|
|
3271
|
+
clear() {
|
|
3272
|
+
this.#buffer = new Uint8Array(0);
|
|
3273
|
+
this.#length = 0;
|
|
3274
|
+
}
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3193
3277
|
// node_modules/@agentclientprotocol/sdk/dist/line-buffer.js
|
|
3194
3278
|
var newline = 10;
|
|
3195
3279
|
|
|
3196
3280
|
class LineBuffer {
|
|
3197
|
-
#pending
|
|
3198
|
-
|
|
3199
|
-
|
|
3281
|
+
#pending;
|
|
3282
|
+
#maxMessageBytes;
|
|
3283
|
+
constructor(maxMessageBytes) {
|
|
3284
|
+
this.#maxMessageBytes = resolveMaxMessageBytes(maxMessageBytes);
|
|
3285
|
+
this.#pending = new MessageBuffer(Math.min(Number.MAX_SAFE_INTEGER, this.#maxMessageBytes + 1));
|
|
3286
|
+
}
|
|
3287
|
+
*push(chunk) {
|
|
3200
3288
|
let start = 0;
|
|
3201
3289
|
let newlineIndex = chunk.indexOf(newline, start);
|
|
3202
3290
|
while (newlineIndex !== -1) {
|
|
3203
|
-
|
|
3291
|
+
yield this.#takeLine(chunk.subarray(start, newlineIndex));
|
|
3204
3292
|
start = newlineIndex + 1;
|
|
3205
3293
|
newlineIndex = chunk.indexOf(newline, start);
|
|
3206
3294
|
}
|
|
3207
3295
|
if (start < chunk.byteLength) {
|
|
3208
|
-
|
|
3296
|
+
const tail = chunk.subarray(start);
|
|
3297
|
+
this.#checkLine(tail);
|
|
3298
|
+
this.#pending.append(tail);
|
|
3209
3299
|
}
|
|
3210
|
-
return lines;
|
|
3211
3300
|
}
|
|
3212
3301
|
flush() {
|
|
3213
|
-
if (this.#pending.
|
|
3302
|
+
if (this.#pending.byteLength === 0) {
|
|
3214
3303
|
return;
|
|
3215
3304
|
}
|
|
3216
|
-
return this.#
|
|
3305
|
+
return stripCarriageReturn(this.#pending.take());
|
|
3306
|
+
}
|
|
3307
|
+
clear() {
|
|
3308
|
+
this.#pending.clear();
|
|
3217
3309
|
}
|
|
3218
3310
|
#takeLine(tail) {
|
|
3219
|
-
|
|
3220
|
-
|
|
3311
|
+
this.#checkLine(tail);
|
|
3312
|
+
if (this.#pending.byteLength === 0) {
|
|
3313
|
+
return stripCarriageReturn(tail);
|
|
3221
3314
|
}
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3315
|
+
this.#pending.append(tail);
|
|
3316
|
+
return stripCarriageReturn(this.#pending.take());
|
|
3317
|
+
}
|
|
3318
|
+
#checkLine(tail) {
|
|
3319
|
+
const lastByte = tail.byteLength > 0 ? tail[tail.byteLength - 1] : this.#pending.lastByte;
|
|
3320
|
+
const byteLength = this.#pending.byteLength + tail.byteLength - (lastByte === 13 ? 1 : 0);
|
|
3321
|
+
if (byteLength > this.#maxMessageBytes) {
|
|
3322
|
+
this.clear();
|
|
3323
|
+
throw new MessageTooLargeError(this.#maxMessageBytes);
|
|
3225
3324
|
}
|
|
3226
|
-
const line = new Uint8Array(total);
|
|
3227
|
-
let offset = 0;
|
|
3228
|
-
for (const part of this.#pending) {
|
|
3229
|
-
line.set(part, offset);
|
|
3230
|
-
offset += part.byteLength;
|
|
3231
|
-
}
|
|
3232
|
-
line.set(tail, offset);
|
|
3233
|
-
this.#pending = [];
|
|
3234
|
-
return line;
|
|
3235
3325
|
}
|
|
3236
3326
|
}
|
|
3327
|
+
function stripCarriageReturn(line) {
|
|
3328
|
+
return line[line.byteLength - 1] === 13 ? line.subarray(0, -1) : line;
|
|
3329
|
+
}
|
|
3237
3330
|
|
|
3238
3331
|
// node_modules/@agentclientprotocol/sdk/dist/stream.js
|
|
3239
|
-
function ndJsonStream(output, input) {
|
|
3332
|
+
function ndJsonStream(output, input, options = {}) {
|
|
3333
|
+
const maxMessageBytes = resolveMaxMessageBytes(options.maxMessageBytes);
|
|
3240
3334
|
const textEncoder = new TextEncoder;
|
|
3241
3335
|
const textDecoder = new TextDecoder;
|
|
3242
3336
|
let cancelled = false;
|
|
@@ -3258,7 +3352,7 @@ function ndJsonStream(output, input) {
|
|
|
3258
3352
|
};
|
|
3259
3353
|
const readable = new ReadableStream({
|
|
3260
3354
|
async start(controller) {
|
|
3261
|
-
const lines = new LineBuffer;
|
|
3355
|
+
const lines = new LineBuffer(maxMessageBytes);
|
|
3262
3356
|
const enqueueLine = async (lineBytes) => {
|
|
3263
3357
|
const trimmedLine = textDecoder.decode(lineBytes).trim();
|
|
3264
3358
|
if (!trimmedLine) {
|
|
@@ -3310,8 +3404,10 @@ function ndJsonStream(output, input) {
|
|
|
3310
3404
|
return;
|
|
3311
3405
|
}
|
|
3312
3406
|
controller.error(err);
|
|
3407
|
+
reader.cancel(err).catch(() => {});
|
|
3313
3408
|
return;
|
|
3314
3409
|
} finally {
|
|
3410
|
+
lines.clear();
|
|
3315
3411
|
if (inputReader === reader) {
|
|
3316
3412
|
inputReader = undefined;
|
|
3317
3413
|
}
|
|
@@ -3353,8 +3449,8 @@ var zGuardCreateElicitationResponseCancel = object({
|
|
|
3353
3449
|
action: literal("cancel")
|
|
3354
3450
|
});
|
|
3355
3451
|
// node_modules/@agentclientprotocol/sdk/dist/acp.js
|
|
3356
|
-
function ndJsonStream2(output, input) {
|
|
3357
|
-
return ndJsonStream(output, input);
|
|
3452
|
+
function ndJsonStream2(output, input, options) {
|
|
3453
|
+
return ndJsonStream(output, input, options);
|
|
3358
3454
|
}
|
|
3359
3455
|
function emptyObjectResponse(response) {
|
|
3360
3456
|
return response ?? {};
|
|
@@ -4945,6 +5041,7 @@ class ACPAdapter {
|
|
|
4945
5041
|
name = "acp";
|
|
4946
5042
|
traits = {
|
|
4947
5043
|
hasMcp: true,
|
|
5044
|
+
hasToolSearch: false,
|
|
4948
5045
|
hasLocalEnvironment: true
|
|
4949
5046
|
};
|
|
4950
5047
|
async createSession(config) {
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveSlackUserId
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-c8a36vcc.js";
|
|
4
4
|
import {
|
|
5
5
|
createTaskWithSiblingAwareness
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-9hsgwz4w.js";
|
|
7
7
|
import"./cli-0z2v4nhw.js";
|
|
8
|
-
import"./cli-
|
|
9
|
-
import"./cli-vhjwh6cz.js";
|
|
8
|
+
import"./cli-cpvsaqsw.js";
|
|
10
9
|
import"./cli-re8z5p8p.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
15
|
-
import"./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-fgqxwrpv.js";
|
|
10
|
+
import"./cli-jsp14b6c.js";
|
|
11
|
+
import"./cli-tzx2ke1v.js";
|
|
12
|
+
import"./cli-tmqt7dpj.js";
|
|
13
|
+
import"./cli-tfky2838.js";
|
|
14
|
+
import"./cli-vctdqs5h.js";
|
|
15
|
+
import"./cli-tpq83z89.js";
|
|
18
16
|
import"./cli-epan13p1.js";
|
|
19
17
|
import"./cli-y89t4nca.js";
|
|
20
18
|
import"./cli-f14fvzag.js";
|
|
21
|
-
import"./cli-
|
|
22
|
-
import"./cli-
|
|
23
|
-
import"./cli-
|
|
24
|
-
import"./cli-
|
|
25
|
-
import"./cli-
|
|
26
|
-
import"./cli-
|
|
19
|
+
import"./cli-12tszpk9.js";
|
|
20
|
+
import"./cli-ygwm91nt.js";
|
|
21
|
+
import"./cli-3dpj7atn.js";
|
|
22
|
+
import"./cli-10nhj6xq.js";
|
|
23
|
+
import"./cli-rb9m6rpe.js";
|
|
24
|
+
import"./cli-rykfmgwg.js";
|
|
25
|
+
import"./cli-0jwe9034.js";
|
|
26
|
+
import"./cli-6cs6wzxt.js";
|
|
27
27
|
import"./cli-fad8m16k.js";
|
|
28
|
+
import"./cli-jz4w45qt.js";
|
|
29
|
+
import"./cli-25fcq4b4.js";
|
|
30
|
+
import"./cli-bsakbbkm.js";
|
|
31
|
+
import"./cli-trc24wk2.js";
|
|
28
32
|
import"./cli-51tf7ac3.js";
|
|
29
|
-
import"./cli-aehm1rbq.js";
|
|
30
33
|
import {
|
|
31
34
|
buildCancelledBlocks,
|
|
32
35
|
ensureSlackThreadTree,
|
|
@@ -34,7 +37,7 @@ import {
|
|
|
34
37
|
getAgentEmoji,
|
|
35
38
|
getTaskLink,
|
|
36
39
|
isSlackRenderV2Enabled
|
|
37
|
-
} from "./cli-
|
|
40
|
+
} from "./cli-azhgzetg.js";
|
|
38
41
|
import"./cli-q51yprfq.js";
|
|
39
42
|
import"./cli-3er6gcsn.js";
|
|
40
43
|
import"./cli-2658f6at.js";
|
|
@@ -47,24 +50,26 @@ import {
|
|
|
47
50
|
init_context_key,
|
|
48
51
|
init_db,
|
|
49
52
|
slackContextKey
|
|
50
|
-
} from "./cli-
|
|
51
|
-
import"./cli-
|
|
52
|
-
import"./cli-
|
|
53
|
-
import"./cli-
|
|
54
|
-
import"./cli-19jenss3.js";
|
|
55
|
-
import"./cli-dv6cdjs2.js";
|
|
53
|
+
} from "./cli-qydf22qq.js";
|
|
54
|
+
import"./cli-3qhyh31j.js";
|
|
55
|
+
import"./cli-ktmyrtpn.js";
|
|
56
|
+
import"./cli-r1mxd1xh.js";
|
|
56
57
|
import"./cli-n7h1kqpf.js";
|
|
57
|
-
import"./cli-
|
|
58
|
-
import"./cli-
|
|
58
|
+
import"./cli-ptr8h7kp.js";
|
|
59
|
+
import"./cli-dv6cdjs2.js";
|
|
60
|
+
import"./cli-1a2j50m0.js";
|
|
61
|
+
import"./cli-0wgxmwf6.js";
|
|
62
|
+
import"./cli-ywybs5as.js";
|
|
59
63
|
import"./cli-ej6gbxfb.js";
|
|
64
|
+
import"./cli-kmcpfwn2.js";
|
|
60
65
|
import"./cli-sd0mxa3c.js";
|
|
61
66
|
import"./cli-w5e1d1vv.js";
|
|
62
|
-
import"./cli-
|
|
67
|
+
import"./cli-0q3avq3s.js";
|
|
63
68
|
import"./cli-r2ap2czm.js";
|
|
64
|
-
import"./cli-
|
|
69
|
+
import"./cli-13hw4z91.js";
|
|
65
70
|
import"./cli-btbzvq95.js";
|
|
66
71
|
import"./cli-1m2e086m.js";
|
|
67
|
-
import"./cli-
|
|
72
|
+
import"./cli-ykk5jaax.js";
|
|
68
73
|
import"./cli-bzr0ftht.js";
|
|
69
74
|
import"./cli-bd957dgb.js";
|
|
70
75
|
import"./cli-pzxba7gw.js";
|
|
@@ -10,7 +10,14 @@ import {
|
|
|
10
10
|
} from "./cli-et1bbwqf.js";
|
|
11
11
|
import {
|
|
12
12
|
retryProviderRequest
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-qbksc292.js";
|
|
14
|
+
import {
|
|
15
|
+
ANTHROPIC_FEDERATION_RULE_ID_ENV,
|
|
16
|
+
ANTHROPIC_IDENTITY_TOKEN_FILE_ENV,
|
|
17
|
+
ANTHROPIC_ORGANIZATION_ID_ENV,
|
|
18
|
+
ANTHROPIC_SERVICE_ACCOUNT_ID_ENV,
|
|
19
|
+
ANTHROPIC_WORKSPACE_ID_ENV
|
|
20
|
+
} from "./cli-trc24wk2.js";
|
|
14
21
|
import"./cli-51tf7ac3.js";
|
|
15
22
|
import {
|
|
16
23
|
adjustMaxTokensForThinking,
|
|
@@ -19,13 +26,13 @@ import {
|
|
|
19
26
|
getJsonSchemaToolParameters,
|
|
20
27
|
resolveJsonSchemaStrictSampling,
|
|
21
28
|
transformMessages
|
|
22
|
-
} from "./cli-
|
|
29
|
+
} from "./cli-ybgv4kw2.js";
|
|
23
30
|
import {
|
|
24
31
|
sanitizeSurrogates
|
|
25
32
|
} from "./cli-y2apkfe2.js";
|
|
26
33
|
import {
|
|
27
34
|
headersToRecord
|
|
28
|
-
} from "./cli-
|
|
35
|
+
} from "./cli-7kyk9jr3.js";
|
|
29
36
|
import {
|
|
30
37
|
getProviderEnvValue
|
|
31
38
|
} from "./cli-btbzvq95.js";
|
|
@@ -42,7 +49,7 @@ import {
|
|
|
42
49
|
hasToolRedefinitions,
|
|
43
50
|
renderSystemMessageUpdate,
|
|
44
51
|
resolveTranscript
|
|
45
|
-
} from "./cli-
|
|
52
|
+
} from "./cli-ykk5jaax.js";
|
|
46
53
|
import {
|
|
47
54
|
AssistantMessageEventStream,
|
|
48
55
|
appendAssistantMessageDiagnostic
|
|
@@ -184,14 +191,39 @@ function hasHeader(headers, name) {
|
|
|
184
191
|
}
|
|
185
192
|
return false;
|
|
186
193
|
}
|
|
194
|
+
function hasRequestAuth(apiKey, headers) {
|
|
195
|
+
return !!apiKey || hasHeader(headers, "authorization") || hasHeader(headers, "x-api-key") || hasHeader(headers, "cf-aig-authorization");
|
|
196
|
+
}
|
|
187
197
|
function assertRequestAuth(provider, apiKey, headers) {
|
|
188
|
-
if (apiKey)
|
|
198
|
+
if (!hasRequestAuth(apiKey, headers))
|
|
199
|
+
throw new Error(`No API key for provider: ${provider}`);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
class PiAnthropic extends Anthropic {
|
|
203
|
+
_shouldResolveDefaultCredentials() {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function getAnthropicFederation(model, apiKey, headers, env) {
|
|
208
|
+
if (model.provider !== "anthropic" || hasRequestAuth(apiKey, headers))
|
|
189
209
|
return;
|
|
190
|
-
|
|
210
|
+
const federationRuleId = getProviderEnvValue(ANTHROPIC_FEDERATION_RULE_ID_ENV, env);
|
|
211
|
+
const organizationId = getProviderEnvValue(ANTHROPIC_ORGANIZATION_ID_ENV, env);
|
|
212
|
+
const identityTokenFile = getProviderEnvValue(ANTHROPIC_IDENTITY_TOKEN_FILE_ENV, env);
|
|
213
|
+
if (!federationRuleId || !organizationId || !identityTokenFile)
|
|
191
214
|
return;
|
|
192
|
-
|
|
193
|
-
|
|
215
|
+
return {
|
|
216
|
+
organization_id: organizationId,
|
|
217
|
+
workspace_id: getProviderEnvValue(ANTHROPIC_WORKSPACE_ID_ENV, env),
|
|
218
|
+
authentication: {
|
|
219
|
+
type: "oidc_federation",
|
|
220
|
+
federation_rule_id: federationRuleId,
|
|
221
|
+
service_account_id: getProviderEnvValue(ANTHROPIC_SERVICE_ACCOUNT_ID_ENV, env),
|
|
222
|
+
identity_token: { source: "file", path: identityTokenFile }
|
|
223
|
+
}
|
|
224
|
+
};
|
|
194
225
|
}
|
|
226
|
+
var federationClient;
|
|
195
227
|
var ANTHROPIC_MESSAGE_EVENTS = new Set([
|
|
196
228
|
"message_start",
|
|
197
229
|
"message_delta",
|
|
@@ -376,7 +408,9 @@ var stream = (model, context, options) => {
|
|
|
376
408
|
isOAuth = false;
|
|
377
409
|
} else {
|
|
378
410
|
const apiKey = options?.apiKey;
|
|
379
|
-
|
|
411
|
+
const federation = getAnthropicFederation(model, apiKey, options?.headers, options?.env);
|
|
412
|
+
if (!federation)
|
|
413
|
+
assertRequestAuth(model.provider, apiKey, options?.headers);
|
|
380
414
|
let copilotDynamicHeaders;
|
|
381
415
|
if (model.provider === "github-copilot") {
|
|
382
416
|
const hasImages = hasCopilotVisionInput(normalizedContext.messages);
|
|
@@ -387,7 +421,7 @@ var stream = (model, context, options) => {
|
|
|
387
421
|
}
|
|
388
422
|
const cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env);
|
|
389
423
|
const cacheSessionId = cacheRetention === "none" ? undefined : options?.sessionId;
|
|
390
|
-
const created = createClient(model, apiKey, options?.headers, options?.fetch, copilotDynamicHeaders, cacheSessionId);
|
|
424
|
+
const created = createClient(model, apiKey, options?.headers, options?.fetch, copilotDynamicHeaders, cacheSessionId, federation);
|
|
391
425
|
client = created.client;
|
|
392
426
|
isOAuth = created.isOAuthToken;
|
|
393
427
|
}
|
|
@@ -410,6 +444,7 @@ var stream = (model, context, options) => {
|
|
|
410
444
|
stream2.push({ type: "start", partial: output });
|
|
411
445
|
const blocks = output.content;
|
|
412
446
|
for await (const event of iterateAnthropicEvents(response, options?.signal)) {
|
|
447
|
+
await options?.onProviderStreamEvent?.(event, model);
|
|
413
448
|
if (event.type === "message_start") {
|
|
414
449
|
output.responseId = event.message.id;
|
|
415
450
|
const transformations = event.message.input_transformations;
|
|
@@ -574,6 +609,10 @@ var stream = (model, context, options) => {
|
|
|
574
609
|
if (event.usage.cache_creation_input_tokens != null) {
|
|
575
610
|
output.usage.cacheWrite = event.usage.cache_creation_input_tokens;
|
|
576
611
|
}
|
|
612
|
+
const cacheCreation = event.usage.cache_creation;
|
|
613
|
+
if (cacheCreation?.ephemeral_1h_input_tokens != null) {
|
|
614
|
+
output.usage.cacheWrite1h = cacheCreation.ephemeral_1h_input_tokens;
|
|
615
|
+
}
|
|
577
616
|
const thinkingTokens = event.usage.output_tokens_details?.thinking_tokens;
|
|
578
617
|
if (thinkingTokens != null) {
|
|
579
618
|
output.usage.reasoning = thinkingTokens;
|
|
@@ -637,7 +676,9 @@ function mapThinkingLevelToEffort(model, level) {
|
|
|
637
676
|
}
|
|
638
677
|
}
|
|
639
678
|
var streamSimple = (model, context, options) => {
|
|
640
|
-
|
|
679
|
+
if (!getAnthropicFederation(model, options?.apiKey, options?.headers, options?.env)) {
|
|
680
|
+
assertRequestAuth(model.provider, options?.apiKey, options?.headers);
|
|
681
|
+
}
|
|
641
682
|
const base = {
|
|
642
683
|
...buildBaseOptions(model, context, options, options?.apiKey),
|
|
643
684
|
toolChoice: options?.toolChoice
|
|
@@ -668,9 +709,9 @@ var streamSimple = (model, context, options) => {
|
|
|
668
709
|
function isOAuthToken(apiKey) {
|
|
669
710
|
return apiKey.includes("sk-ant-oat");
|
|
670
711
|
}
|
|
671
|
-
function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sessionId) {
|
|
712
|
+
function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sessionId, federation) {
|
|
672
713
|
if (model.provider === "github-copilot") {
|
|
673
|
-
const client2 = new
|
|
714
|
+
const client2 = new PiAnthropic({
|
|
674
715
|
apiKey: null,
|
|
675
716
|
authToken: apiKey ?? null,
|
|
676
717
|
baseURL: model.baseUrl,
|
|
@@ -684,7 +725,7 @@ function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sess
|
|
|
684
725
|
return { client: client2, isOAuthToken: false };
|
|
685
726
|
}
|
|
686
727
|
if (apiKey && isOAuthToken(apiKey)) {
|
|
687
|
-
const client2 = new
|
|
728
|
+
const client2 = new PiAnthropic({
|
|
688
729
|
apiKey: null,
|
|
689
730
|
authToken: apiKey,
|
|
690
731
|
baseURL: model.baseUrl,
|
|
@@ -709,7 +750,22 @@ function createClient(model, apiKey, optionsHeaders, fetch, dynamicHeaders, sess
|
|
|
709
750
|
accept: "application/json",
|
|
710
751
|
"anthropic-dangerous-direct-browser-access": "true"
|
|
711
752
|
}, sessionAffinityHeaders, model.headers, optionsHeaders);
|
|
712
|
-
|
|
753
|
+
if (federation) {
|
|
754
|
+
const key = JSON.stringify([model.baseUrl, federation]);
|
|
755
|
+
if (federationClient?.key !== key || federationClient.fetch !== fetch) {
|
|
756
|
+
const client2 = new PiAnthropic({
|
|
757
|
+
apiKey: null,
|
|
758
|
+
authToken: null,
|
|
759
|
+
config: federation,
|
|
760
|
+
baseURL: model.baseUrl,
|
|
761
|
+
dangerouslyAllowBrowser: true,
|
|
762
|
+
fetch
|
|
763
|
+
});
|
|
764
|
+
federationClient = { key, fetch, client: client2 };
|
|
765
|
+
}
|
|
766
|
+
return { client: federationClient.client.withOptions({ defaultHeaders }), isOAuthToken: false };
|
|
767
|
+
}
|
|
768
|
+
const client = new PiAnthropic({
|
|
713
769
|
apiKey: apiKey ?? null,
|
|
714
770
|
authToken: null,
|
|
715
771
|
baseURL: model.baseUrl,
|
|
@@ -1050,11 +1106,45 @@ function insertThinkingLevelMessages(converted, activeEffort) {
|
|
|
1050
1106
|
function shouldUseFineGrainedToolStreamingBeta(model, context) {
|
|
1051
1107
|
return getCurrentTools(context.messages).length > 0 && !getAnthropicCompat(model).supportsEagerToolInputStreaming;
|
|
1052
1108
|
}
|
|
1109
|
+
var ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS = new Set([
|
|
1110
|
+
"minimum",
|
|
1111
|
+
"maximum",
|
|
1112
|
+
"exclusiveMinimum",
|
|
1113
|
+
"exclusiveMaximum",
|
|
1114
|
+
"multipleOf",
|
|
1115
|
+
"maxItems",
|
|
1116
|
+
"uniqueItems",
|
|
1117
|
+
"minContains",
|
|
1118
|
+
"maxContains",
|
|
1119
|
+
"minProperties",
|
|
1120
|
+
"maxProperties"
|
|
1121
|
+
]);
|
|
1122
|
+
var ANTHROPIC_STRICT_STRING_FORMATS = new Set([
|
|
1123
|
+
"date-time",
|
|
1124
|
+
"time",
|
|
1125
|
+
"date",
|
|
1126
|
+
"duration",
|
|
1127
|
+
"email",
|
|
1128
|
+
"hostname",
|
|
1129
|
+
"uri",
|
|
1130
|
+
"ipv4",
|
|
1131
|
+
"ipv6",
|
|
1132
|
+
"uuid"
|
|
1133
|
+
]);
|
|
1134
|
+
var isAnthropicStrictUnsupportedKeyword = (key, value) => {
|
|
1135
|
+
if (ANTHROPIC_STRICT_UNSUPPORTED_KEYWORDS.has(key))
|
|
1136
|
+
return true;
|
|
1137
|
+
if (key === "minItems")
|
|
1138
|
+
return value !== 0 && value !== 1;
|
|
1139
|
+
if (key === "format")
|
|
1140
|
+
return typeof value !== "string" || !ANTHROPIC_STRICT_STRING_FORMATS.has(value);
|
|
1141
|
+
return false;
|
|
1142
|
+
};
|
|
1053
1143
|
function convertTools(tools, isOAuthToken2, supportsEagerToolInputStreaming, supportsStrictTools, cacheControl) {
|
|
1054
1144
|
if (!tools)
|
|
1055
1145
|
return [];
|
|
1056
1146
|
return tools.map((tool, index) => {
|
|
1057
|
-
const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools);
|
|
1147
|
+
const strict = resolveJsonSchemaStrictSampling(tool, supportsStrictTools, isAnthropicStrictUnsupportedKeyword);
|
|
1058
1148
|
const parameters = getJsonSchemaToolParameters(tool, strict);
|
|
1059
1149
|
const schema = parameters;
|
|
1060
1150
|
const legacyInputSchema = {
|
|
@@ -3,24 +3,26 @@ import {
|
|
|
3
3
|
initSlackApp,
|
|
4
4
|
startSlackApp,
|
|
5
5
|
stopSlackApp
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-azhgzetg.js";
|
|
7
7
|
import"./cli-q51yprfq.js";
|
|
8
8
|
import"./cli-3er6gcsn.js";
|
|
9
9
|
import"./cli-2658f6at.js";
|
|
10
10
|
import"./cli-yatxqynm.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
15
|
-
import"./cli-19jenss3.js";
|
|
16
|
-
import"./cli-dv6cdjs2.js";
|
|
11
|
+
import"./cli-qydf22qq.js";
|
|
12
|
+
import"./cli-3qhyh31j.js";
|
|
13
|
+
import"./cli-ktmyrtpn.js";
|
|
14
|
+
import"./cli-r1mxd1xh.js";
|
|
17
15
|
import"./cli-n7h1kqpf.js";
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
16
|
+
import"./cli-ptr8h7kp.js";
|
|
17
|
+
import"./cli-dv6cdjs2.js";
|
|
18
|
+
import"./cli-1a2j50m0.js";
|
|
19
|
+
import"./cli-0wgxmwf6.js";
|
|
20
|
+
import"./cli-ywybs5as.js";
|
|
20
21
|
import"./cli-ej6gbxfb.js";
|
|
22
|
+
import"./cli-kmcpfwn2.js";
|
|
21
23
|
import"./cli-sd0mxa3c.js";
|
|
22
24
|
import"./cli-w5e1d1vv.js";
|
|
23
|
-
import"./cli-
|
|
25
|
+
import"./cli-0q3avq3s.js";
|
|
24
26
|
import"./cli-r2ap2czm.js";
|
|
25
27
|
import"./cli-bd957dgb.js";
|
|
26
28
|
import"./cli-pzxba7gw.js";
|