@desplega.ai/agent-swarm 2.5.3 → 2.6.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 +2 -2
- package/dist/{acp-adapter-gr2fcyyj.js → acp-adapter-dgfakfpw.js} +9 -9
- package/dist/{actions-wv766ghf.js → actions-fbqma8aa.js} +21 -21
- package/dist/{amp-adapter-speb906t.js → amp-adapter-en0jy6hs.js} +4 -4
- package/dist/{app-ag29n14f.js → app-k8a5cgpp.js} +3 -3
- package/dist/{assistant-3x8bz3eg.js → assistant-a16433gr.js} +30 -26
- package/dist/{boot-reembed-jsmfrpzf.js → boot-reembed-6c1sjfnr.js} +1 -1
- package/dist/{boot-reembed-5b3d2eea.js → boot-reembed-f4nn561n.js} +1 -1
- package/dist/{boot-scrub-sweep-s73gerxy.js → boot-scrub-sweep-d4w9gajf.js} +4 -4
- package/dist/{boot-seeds-5zmax2wr.js → boot-seeds-9bmkspyw.js} +4 -4
- package/dist/{claude-adapter-hswdnm3t.js → claude-adapter-nys1kjxa.js} +9 -9
- package/dist/{claude-managed-adapter-cvbzj1h6.js → claude-managed-adapter-55207973.js} +3 -3
- package/dist/{claude-managed-setup-3k8m3hhc.js → claude-managed-setup-3cm35gey.js} +11 -4
- package/dist/{claude-sdk-session-fkbyk66x.js → claude-sdk-session-nw5yd8cp.js} +9313 -9260
- package/dist/{cli-210xd1f4.js → cli-03gg9pd1.js} +4 -4
- package/dist/{cli-kxpfx2xr.js → cli-0z1xjzwa.js} +2 -2
- package/dist/cli-1tem6ns9.js +894 -0
- package/dist/{cli-25j01dpj.js → cli-24j1jeeb.js} +3 -3
- package/dist/{cli-ta8bd7th.js → cli-2sjhpsns.js} +2 -2
- package/dist/{cli-p859hcc8.js → cli-39aet655.js} +2 -2
- package/dist/{cli-g1cw7xtt.js → cli-39rrw8yp.js} +1 -1
- package/dist/{cli-e2ar4bp1.js → cli-3aqd4jaa.js} +121 -47
- package/dist/{cli-jjznk3f7.js → cli-3fwqy71j.js} +69 -35
- package/dist/{cli-p9rafdrb.js → cli-3gfvmzht.js} +7 -7
- package/dist/{cli-03vpq45j.js → cli-3ndmpxxv.js} +2 -2
- package/dist/{cli-aecdcr77.js → cli-4hxrf0p4.js} +228 -74
- package/dist/{cli-mz9afxxf.js → cli-4rf0f5vg.js} +15 -3
- package/dist/{cli-qzme5949.js → cli-5rj83bam.js} +284 -202
- package/dist/{cli-fsdprwrg.js → cli-5sckpqcx.js} +2 -2
- package/dist/{cli-cz5nmdxt.js → cli-683y0b3a.js} +2 -2
- package/dist/{cli-3ngdk5te.js → cli-6y51ryva.js} +2 -2
- package/dist/{cli-n4c8e3s5.js → cli-708wdy32.js} +1 -1
- package/dist/{cli-pasyvjmm.js → cli-737pyqxr.js} +1 -1
- package/dist/{cli-gx4rm0qx.js → cli-7enjwya9.js} +1 -1
- package/dist/{cli-6x9ma5w5.js → cli-803188pb.js} +1 -1
- package/dist/{cli-avdvgcay.js → cli-9abdgn5t.js} +28 -9
- package/dist/{cli-99xgw26r.js → cli-a2rr0fmg.js} +1 -1
- package/dist/{cli-e5bxnjps.js → cli-a34pr3w1.js} +7 -7
- package/dist/{cli-502eqv93.js → cli-abkm71vr.js} +1 -1
- package/dist/{cli-mmhj8vd7.js → cli-ag2yrnt5.js} +11 -2
- package/dist/{cli-n45mr7zh.js → cli-aj8djyqt.js} +5 -5
- package/dist/{cli-1fc85mvt.js → cli-art7c1zh.js} +5 -5
- package/dist/{cli-40jsnrjm.js → cli-az25fn5f.js} +10 -8
- package/dist/{cli-9s05422w.js → cli-bqztfyve.js} +1 -1
- package/dist/{cli-bn0rewsy.js → cli-c081bj3b.js} +2 -2
- package/dist/{cli-svrj71pg.js → cli-c2habvsf.js} +12 -12
- package/dist/{cli-s49hpn37.js → cli-ca6banwz.js} +85 -19
- package/dist/{cli-hhxjnjzs.js → cli-cz37jqss.js} +12 -10
- package/dist/{cli-6n8axjv1.js → cli-d2dpf95n.js} +2 -2
- package/dist/{cli-tx00c0h6.js → cli-dqygeeh5.js} +17 -1
- package/dist/{cli-z21whrrg.js → cli-emhjcj2y.js} +17 -17
- package/dist/{cli-e8jyq7d8.js → cli-esakngh8.js} +7 -3
- package/dist/{cli-ha9rmwgq.js → cli-fb8m699c.js} +2 -2
- package/dist/{cli-35gtk1p6.js → cli-ffvsj2qw.js} +44 -13
- package/dist/{cli-ce0ak9ms.js → cli-g20jjwt4.js} +26 -26
- package/dist/{cli-kxawjrxg.js → cli-g8ka5j4j.js} +772 -194
- package/dist/{cli-vwn81jbs.js → cli-gf95q3bm.js} +5 -5
- package/dist/{cli-s53vp709.js → cli-gnsb1zxa.js} +2 -2
- package/dist/{cli-nwyw3zhg.js → cli-gxee0bqa.js} +1 -1
- package/dist/{cli-gpv60278.js → cli-hfeb68z4.js} +7 -7
- package/dist/{cli-0ebey9hg.js → cli-j6rktc91.js} +1 -1
- package/dist/{cli-ewm3pwbq.js → cli-k21gx5ht.js} +46 -23
- package/dist/{cli-egjggehm.js → cli-kf4jree9.js} +2 -2
- package/dist/{cli-dabehxhp.js → cli-kt907da6.js} +1 -1
- package/dist/{cli-p0rzjkya.js → cli-m5a9m0ak.js} +32 -13
- package/dist/{cli-fzcn3d87.js → cli-m70bajzr.js} +3 -3
- package/dist/{cli-w1zwctj2.js → cli-mtnj4fwa.js} +11 -5
- package/dist/{cli-gpsz7g88.js → cli-mvjz5an3.js} +16 -12
- package/dist/{cli-hcpj2xqz.js → cli-n7asmce6.js} +225 -3
- package/dist/{cli-y561h5a9.js → cli-nn6vx2mq.js} +5 -5
- package/dist/cli-nq677csy.js +140 -0
- package/dist/{cli-a5ebc95n.js → cli-pfk92eqz.js} +18 -15
- package/dist/{cli-p6zs9h4y.js → cli-rr7zx19j.js} +767 -249
- package/dist/{cli-qgf8emrn.js → cli-sqma6vw1.js} +10 -7
- package/dist/{cli-0xk505e8.js → cli-sxgtf5fw.js} +1 -1
- package/dist/{cli-nzfnt2gs.js → cli-tf1n0r0b.js} +1 -1
- package/dist/{cli-qqzmjxkf.js → cli-v49fkghp.js} +11 -6
- package/dist/{cli-x77gen2p.js → cli-w2656ka1.js} +7 -7
- package/dist/{cli-5kqnemen.js → cli-yvy48785.js} +1 -1
- package/dist/{cli-8s5wx3nz.js → cli-zqne1qcj.js} +44 -17
- package/dist/cli.js +22 -22
- package/dist/{codex-adapter-n8ka66vf.js → codex-adapter-d95q4qsn.js} +7 -7
- package/dist/{codex-hook-e2he7aca.js → codex-hook-brpnycn5.js} +1 -1
- package/dist/{codex-login-rn7c5gxt.js → codex-login-8cg0vhf2.js} +1 -1
- package/dist/{codex-session-runner-fsebts37.js → codex-session-runner-gdwd8h0c.js} +8 -8
- package/dist/{commands-t04rt2pc.js → commands-jqmgk54b.js} +2 -2
- package/dist/{controller-rgna04r2.js → controller-z3jq589f.js} +30 -4
- package/dist/{controllers-connect-bqm1rtft.js → controllers-connect-r2za39ef.js} +23 -23
- package/dist/{cursor-adapter-swr2k95y.js → cursor-adapter-4mr4jgkw.js} +2 -3
- package/dist/{db-a4m7haw0.js → db-ppv2tze7.js} +3 -3
- package/dist/{db-24ck09xy.js → db-w36wwb5g.js} +4 -2
- package/dist/{devin-adapter-4ycy4vrf.js → devin-adapter-byen2cxt.js} +1 -1
- package/dist/{dispatcher-nwf9ss0q.js → dispatcher-pv5h77vf.js} +20 -20
- package/dist/{docker-nfy2gc8t.js → docker-fdzyewpz.js} +4 -4
- package/dist/{dsh-adapter-kpdnhjst.js → dsh-adapter-d4pdpb3r.js} +2 -3
- package/dist/{e2b-9gkdhm3c.js → e2b-222hsajc.js} +2 -2
- package/dist/{e2b-cjtf8k1z.js → e2b-fn3zacvt.js} +2 -2
- package/dist/{easter-egg-3d-e4qv8dxj.js → easter-egg-3d-4sp4dvmc.js} +1 -1
- package/dist/{event-bus-3z78ep5n.js → event-bus-pghg8hqy.js} +1 -1
- package/dist/{execute-0xpz8950.js → execute-jev839y1.js} +1 -1
- package/dist/{external-channel-j1e2p34p.js → external-channel-y6nkzhnn.js} +2 -2
- package/dist/{grok-adapter-qtjz0whk.js → grok-adapter-t08b9ntm.js} +10 -10
- package/dist/handlers-eqsnmv95.js +41 -0
- package/dist/{heartbeat-vtesda5d.js → heartbeat-vn31xwdk.js} +23 -23
- package/dist/{hook-b2hhj6rd.js → hook-6d0zbvvt.js} +6 -5
- package/dist/{hook-8wqaszda.js → hook-cpjs8q51.js} +13 -7
- package/dist/{http-mxcqhhcs.js → http-9c6medda.js} +1085 -136
- package/dist/{index-spwxjgay.js → index-38t35h0n.js} +20 -20
- package/dist/{index-1r8wfpzs.js → index-g6k9tctj.js} +1 -1
- package/dist/{index-srg522m6.js → index-k0yt1tvq.js} +20 -20
- package/dist/{index-31ceyf42.js → index-pkma1yf8.js} +1 -1
- package/dist/{index-n1vbvta9.js → index-qhjf2htm.js} +29 -24
- package/dist/index-yqgbfgaj.js +43 -0
- package/dist/{keepalive-dsd8rtgx.js → keepalive-em0117bp.js} +4 -4
- package/dist/lead-23e7z59t.js +79 -0
- package/dist/{maintenance-jqmqwnet.js → maintenance-kbme3qy9.js} +1 -1
- package/dist/{oauth-refresh-sweep-q2c3bnvm.js → oauth-refresh-sweep-xysj4yse.js} +3 -3
- package/dist/{onboard-w4yd7s8t.js → onboard-p6q0vz97.js} +3 -3
- package/dist/{opencode-adapter-9tppvxar.js → opencode-adapter-esv3k9yn.js} +7 -7
- package/dist/{otel-impl-f36byzbd.js → otel-impl-54qhqh1z.js} +2 -2
- package/dist/{pi-mono-adapter-tqsge1ay.js → pi-mono-adapter-mymbwhj0.js} +41 -14
- package/dist/{pricing-refresh-xvak5p4v.js → pricing-refresh-yb75wv33.js} +3 -3
- package/dist/{rbac-roles-gfn30fb8.js → rbac-roles-1vp2mw4p.js} +2 -2
- package/dist/{rbac-roles-682k2mt5.js → rbac-roles-dexhc9x8.js} +1 -1
- package/dist/render-v2-tjay5hhf.js +16 -0
- package/dist/{resume-2dvq348g.js → resume-8ayf37g5.js} +11 -9
- package/dist/{runtime-bt5pkpm1.js → runtime-hqe5cqcd.js} +1 -1
- package/dist/{session-access-7f21ekq9.js → session-access-fdhp987s.js} +4 -4
- package/dist/session-source-backfill-qgtc86z1.js +110 -0
- package/dist/{setup-epffxtbk.js → setup-4rrmqcq3.js} +1 -1
- package/dist/{virtual-modules-mnfbh5mr.js → virtual-modules-52km00d6.js} +2 -2
- package/dist/{work-objects-xz1a5rqk.js → work-objects-p28fgd70.js} +23 -23
- package/dist/worker-e3w7vye1.js +79 -0
- package/dist/{x-pbpezr0s.js → x-wxrzvzx8.js} +2 -2
- package/openapi.json +1323 -16
- package/package.json +5 -5
- package/plugin/commands/create-pr.md +2 -2
- package/plugin/pi-skills/create-pr/SKILL.md +2 -2
- package/src/assets/source-key.ts +95 -0
- package/src/be/db/api-keys.ts +80 -0
- package/src/be/db/approvals.ts +48 -0
- package/src/be/db/session-labels.ts +28 -0
- package/src/be/db/session-moves.ts +5 -6
- package/src/be/db/session-tree.ts +153 -14
- package/src/be/db/tasks/read.ts +11 -0
- package/src/be/db/tasks/write.ts +21 -6
- package/src/be/db/workflow-idempotency.ts +183 -0
- package/src/be/db/workflow-runs.ts +500 -7
- package/src/be/db-retention.ts +61 -6
- package/src/be/db.ts +126 -131
- package/src/be/memory/providers/openai-embedding.ts +5 -1
- package/src/be/migrations/242_workflow_idempotency_keys.sql +40 -0
- package/src/be/migrations/244_api_key_validation.sql +4 -0
- package/src/be/onboarding.ts +4 -0
- package/src/be/scripts/typecheck.ts +1 -1
- package/src/be/sealed-json.ts +1 -0
- package/src/be/seed-scripts/catalog/compound-insights.inline.ts +2 -2
- package/src/be/seed-scripts/catalog/compound-insights.ts +2 -2
- package/src/be/seed-skills/bundled-files.generated.json +1 -1
- package/src/be/session-source-backfill.ts +163 -0
- package/src/be/sql-connections.ts +7 -1
- package/src/be/swarm-config-guard.ts +3 -0
- package/src/be/users.ts +9 -0
- package/src/comb/review-batch.ts +28 -1
- package/src/comb/templates.ts +7 -2
- package/src/commands/claude-managed-setup.ts +7 -1
- package/src/commands/controller.ts +33 -0
- package/src/commands/credential-refresh.ts +76 -1
- package/src/commands/credential-wait.ts +2 -2
- package/src/commands/provider-credentials.ts +210 -170
- package/src/commands/runner.ts +31 -6
- package/src/extensions/apply-task-create.ts +64 -11
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/extensions/contract.ts +30 -0
- package/src/extensions/dispatcher.ts +4 -0
- package/src/extensions/post-bridge.ts +8 -0
- package/src/hooks/context-bound-note.ts +196 -0
- package/src/hooks/hook.ts +12 -0
- package/src/http/all-routes.ts +2 -0
- package/src/http/api-keys.ts +53 -0
- package/src/http/assets.ts +15 -0
- package/src/http/codex-oauth-accounts.ts +191 -0
- package/src/http/comb.ts +15 -2
- package/src/http/config.ts +49 -17
- package/src/http/core.ts +6 -0
- package/src/http/fleet-benchmark.ts +5 -2
- package/src/http/idempotency-key.ts +117 -0
- package/src/http/index.ts +11 -0
- package/src/http/integrations.ts +5 -1
- package/src/http/kv.ts +8 -3
- package/src/http/onboarding.ts +6 -1
- package/src/http/pool-keys.ts +354 -0
- package/src/http/sessions.ts +37 -12
- package/src/http/stats.ts +1 -0
- package/src/http/status.ts +26 -12
- package/src/http/tasks.ts +3 -0
- package/src/http/used-by.ts +7 -2
- package/src/http/workflows.ts +207 -33
- package/src/integrations/chat-sdk/inbound.ts +27 -0
- package/src/kv-reserved-namespaces.ts +19 -0
- package/src/prompts/context-bound-note.ts +48 -0
- package/src/prompts/session-templates.ts +25 -1
- package/src/providers/acp-targets.ts +1 -1
- package/src/providers/amp-adapter.ts +30 -8
- package/src/providers/claude-adapter.ts +34 -5
- package/src/providers/claude-managed-adapter.ts +42 -9
- package/src/providers/claude-sdk-session.ts +10 -0
- package/src/providers/claude-session-events.ts +13 -0
- package/src/providers/codex-adapter.ts +83 -11
- package/src/providers/opencode-adapter.ts +18 -0
- package/src/providers/pi-mono-adapter.ts +35 -0
- package/src/runtime-providers/docker.ts +6 -2
- package/src/scheduler/scheduler.ts +3 -2
- package/src/scripts-runtime/swarm-sdk.ts +7 -1
- package/src/scripts-runtime/types/stdlib.d.ts +1 -1
- package/src/scripts-runtime/types/swarm-extension.d.ts +52 -8
- package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -1
- package/src/slack/assistant.ts +7 -0
- package/src/slack/channel-labels.ts +74 -0
- package/src/slack/handlers.ts +8 -0
- package/src/slack/inbound-files.ts +5 -2
- package/src/slack/thread-buffer.ts +4 -0
- package/src/tasks/sibling-awareness.ts +12 -3
- package/src/telemetry-context.ts +5 -6
- package/src/telemetry-identity.ts +3 -3
- package/src/tests/amp-adapter.test.ts +97 -0
- package/src/tests/api-keys-validation.test.ts +170 -0
- package/src/tests/approval-requests.test.ts +10 -7
- package/src/tests/approval-sweeps.test.ts +12 -6
- package/src/tests/base-prompt.test.ts +1 -1
- package/src/tests/claude-hook-output.test.ts +79 -1
- package/src/tests/claude-managed-adapter.test.ts +321 -0
- package/src/tests/claude-routes-e2e.test.ts +7 -2
- package/src/tests/codex-adapter.test.ts +163 -0
- package/src/tests/codex-credential-pools.test.ts +120 -0
- package/src/tests/codex-gateway-route.test.ts +165 -0
- package/src/tests/codex-oauth-accounts.test.ts +357 -0
- package/src/tests/comb-review-batch.test.ts +63 -2
- package/src/tests/config-pool-keys.test.ts +533 -0
- package/src/tests/context-bound-note.test.ts +269 -0
- package/src/tests/credential-check.test.ts +290 -2
- package/src/tests/credential-refresh.test.ts +172 -1
- package/src/tests/db-retention.test.ts +9 -3
- package/src/tests/db-task-read-contract.test.ts +1 -0
- package/src/tests/db-task-write-contract.test.ts +1 -3
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/extensions-pre-task.test.ts +325 -0
- package/src/tests/fetch-resolved-env.test.ts +17 -0
- package/src/tests/fixtures/extensions/record-blocks/hooks.ts +10 -0
- package/src/tests/fixtures/extensions/record-blocks/manifest.json +7 -0
- package/src/tests/fixtures/extensions/record-task-create/hooks.ts +9 -0
- package/src/tests/fixtures/extensions/record-task-create/manifest.json +7 -0
- package/src/tests/fixtures/fake-amp.ts +22 -8
- package/src/tests/fixtures/held-template-render.ts +42 -0
- package/src/tests/fixtures/workflow-idempotency-trigger.child.ts +73 -0
- package/src/tests/fleet-benchmark.test.ts +8 -0
- package/src/tests/get-workflow-run-tool.test.ts +98 -0
- package/src/tests/integrations-http.test.ts +32 -2
- package/src/tests/internal-ai/complete-structured.test.ts +37 -1
- package/src/tests/internal-ai/credentials.test.ts +23 -0
- package/src/tests/kv-http.test.ts +32 -0
- package/src/tests/kv-tool.test.ts +25 -0
- package/src/tests/multi-runtime-registration.test.ts +12 -12
- package/src/tests/onboarding.test.ts +108 -1
- package/src/tests/openai-embedding-credentials.test.ts +35 -0
- package/src/tests/openapi-route-headers.test.ts +2 -0
- package/src/tests/opencode-adapter.test.ts +134 -0
- package/src/tests/openrouter-attribution-call-sites.test.ts +2 -2
- package/src/tests/org-website.test.ts +36 -0
- package/src/tests/pi-mono-adapter.test.ts +105 -0
- package/src/tests/prompt-template-session.test.ts +4 -3
- package/src/tests/provider-key-probes.test.ts +181 -0
- package/src/tests/rbac-e2e-helpers.test.ts +88 -1
- package/src/tests/rbac-e2e-helpers.ts +36 -11
- package/src/tests/runner-push-delivery.test.ts +25 -0
- package/src/tests/runtime-controller-liveness.test.ts +133 -0
- package/src/tests/runtime-providers-docker.test.ts +2 -0
- package/src/tests/script-connections.test.ts +5 -0
- package/src/tests/script-run-config-scope.test.ts +91 -3
- package/src/tests/script-runs-retention.test.ts +212 -0
- package/src/tests/sdk-allowlist.test.ts +39 -0
- package/src/tests/session-logs.test.ts +70 -0
- package/src/tests/session-source-backfill.test.ts +429 -0
- package/src/tests/session-source-keys.test.ts +236 -0
- package/src/tests/session-source-labels.test.ts +419 -0
- package/src/tests/sessions-detail-batch.test.ts +2 -0
- package/src/tests/sessions-move.test.ts +131 -0
- package/src/tests/sessions-tree.test.ts +336 -2
- package/src/tests/slack-inbound-files.test.ts +103 -23
- package/src/tests/status.test.ts +101 -18
- package/src/tests/tasks-workflow-run-filter.test.ts +146 -0
- package/src/tests/test-net.ts +31 -0
- package/src/tests/transcription.test.ts +8 -0
- package/src/tests/used-by-route.test.ts +11 -0
- package/src/tests/workflow-cascade-cancel.test.ts +1341 -0
- package/src/tests/workflow-foreach-supersede-retry.test.ts +488 -0
- package/src/tests/workflow-http-v2.test.ts +131 -0
- package/src/tests/workflow-idempotency.test.ts +915 -0
- package/src/tests/workflow-step-order.test.ts +92 -0
- package/src/tests/workflow-sub-workflow.test.ts +30 -0
- package/src/tools/get-tasks.ts +8 -0
- package/src/tools/kv/kv-read-auth.ts +4 -2
- package/src/tools/task-action.ts +1 -1
- package/src/tools/workflows/cancel-workflow-run.ts +1 -1
- package/src/tools/workflows/get-workflow-run.ts +14 -4
- package/src/types.ts +24 -0
- package/src/utils/company-profile.ts +51 -1
- package/src/utils/context-window.ts +8 -6
- package/src/utils/credentials.ts +5 -2
- package/src/utils/internal-ai/complete-structured.ts +5 -0
- package/src/utils/internal-ai/credentials.ts +4 -3
- package/src/utils/provider-key-probes.ts +328 -0
- package/src/utils/transcription.ts +4 -1
- package/src/workflows/approval-cancel.ts +15 -13
- package/src/workflows/approval-notifications.ts +5 -1
- package/src/workflows/checkpoint.ts +6 -3
- package/src/workflows/engine.ts +30 -8
- package/src/workflows/executors/foreach.ts +2 -2
- package/src/workflows/executors/sub-workflow.ts +8 -1
- package/src/workflows/foreach-driver.ts +10 -3
- package/src/workflows/foreach-join.ts +29 -6
- package/src/workflows/recovery.ts +6 -1
- package/src/workflows/resume.ts +168 -56
- package/src/workflows/retry-poller.ts +49 -3
- package/src/workflows/task-step-routing.ts +29 -7
- package/templates/ai-toolbox.manifest.json +8 -8
- package/templates/community/open-prompt-showreel/PLAYBOOK.md +5 -6
- package/templates/community/open-prompt-showreel/lead-prompt.md +1 -1
- package/templates/community/open-prompt-showreel/skills/open-prompt-showreel/SKILL.md +4 -4
- package/templates/skills/agent-browser/SKILL.md +4 -4
- package/templates/skills/agent-browser/content.md +4 -4
- package/templates/skills/code-quality/config.json +1 -1
- package/templates/skills/code-quality/content.md +2 -2
- package/templates/skills/delegate-work/content.md +29 -25
- package/templates/skills/delegate-work/files/scripts/codex-exec.sh +5 -5
- package/templates/skills/qa/content.md +2 -2
- package/templates/skills/researching/content.md +4 -0
- package/templates/skills/swarm-scripts/SKILL.md +1 -0
- package/templates/skills/swarm-scripts/content.md +1 -0
- package/templates/skills/work-on-task/SKILL.md +1 -1
- package/templates/skills/work-on-task/content.md +1 -1
- package/dist/cli-7421jzsw.js +0 -84
- package/dist/cli-e45e4m6b.js +0 -413
- package/dist/cli-zw88zjba.js +0 -307
- package/dist/handlers-19xr6dnz.js +0 -41
- package/dist/index-kw2mmat7.js +0 -43
- package/dist/lead-zyerk1x2.js +0 -79
- package/dist/render-v2-hgytz8nn.js +0 -12
- package/dist/worker-42t8emjt.js +0 -79
|
@@ -2,17 +2,17 @@ import {
|
|
|
2
2
|
getKv2,
|
|
3
3
|
upsertKv2,
|
|
4
4
|
init_db3
|
|
5
|
-
} from "./cli-
|
|
5
|
+
} from "./cli-g8ka5j4j.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveIdentity,
|
|
8
8
|
recordUnmappedIdentity
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-4hxrf0p4.js";
|
|
10
10
|
import {
|
|
11
11
|
findUserByExternalId,
|
|
12
12
|
findOrCreateUserByEmail,
|
|
13
13
|
linkIdentity,
|
|
14
14
|
init_users
|
|
15
|
-
} from "./cli-
|
|
15
|
+
} from "./cli-esakngh8.js";
|
|
16
16
|
|
|
17
17
|
// src/slack/enrich.ts
|
|
18
18
|
init_db3();
|
|
@@ -13,11 +13,11 @@ import {
|
|
|
13
13
|
claudeMdLineageOf,
|
|
14
14
|
planClaudeMdSync,
|
|
15
15
|
init_profile_sync
|
|
16
|
-
} from "./cli-
|
|
16
|
+
} from "./cli-hfeb68z4.js";
|
|
17
17
|
import {
|
|
18
18
|
scrubSecrets,
|
|
19
19
|
init_secret_scrubber
|
|
20
|
-
} from "./cli-
|
|
20
|
+
} from "./cli-708wdy32.js";
|
|
21
21
|
|
|
22
22
|
// src/commands/claude-md-session.ts
|
|
23
23
|
init_file_lock();
|
|
@@ -13,11 +13,11 @@ async function createRuntimeProvider(kind, target = {}) {
|
|
|
13
13
|
return new StaticRuntimeProvider;
|
|
14
14
|
}
|
|
15
15
|
case "docker": {
|
|
16
|
-
const { DockerRuntimeProvider } = await import("./docker-
|
|
16
|
+
const { DockerRuntimeProvider } = await import("./docker-fdzyewpz.js");
|
|
17
17
|
return new DockerRuntimeProvider;
|
|
18
18
|
}
|
|
19
19
|
case "e2b": {
|
|
20
|
-
const { E2BRuntimeProvider } = await import("./e2b-
|
|
20
|
+
const { E2BRuntimeProvider } = await import("./e2b-fn3zacvt.js");
|
|
21
21
|
return new E2BRuntimeProvider(target);
|
|
22
22
|
}
|
|
23
23
|
case "k8s":
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getDbClient2,
|
|
3
|
+
listUndeliveredCancelledApprovalRequestIds,
|
|
4
|
+
init_approvals,
|
|
3
5
|
getTaskById2,
|
|
4
6
|
cancelTask2,
|
|
7
|
+
getRunLineageBlock,
|
|
8
|
+
getWorkflowRunTreeIds,
|
|
9
|
+
getWorkflowRunStatus,
|
|
10
|
+
getOpenWorkflowTreeTaskIds,
|
|
11
|
+
getTaskIdsWithDependents,
|
|
12
|
+
workflowRunTreeHasOpenWork,
|
|
13
|
+
cancelOpenWorkflowTreeSteps,
|
|
14
|
+
disarmWorkflowTreeRetries,
|
|
15
|
+
cancelLiveWorkflowTreeRuns,
|
|
5
16
|
getChildWorkflowRunId,
|
|
6
17
|
getWorkflowRunLineage,
|
|
7
18
|
createForeachAttemptSteps,
|
|
@@ -15,14 +26,14 @@ import {
|
|
|
15
26
|
getCompletedStepNodeIds2,
|
|
16
27
|
getTaskByWorkflowRunStepId2,
|
|
17
28
|
detachTaskFromWorkflowRunStep2,
|
|
29
|
+
getApprovalRequestById2,
|
|
18
30
|
cancelPendingApprovalRequestsForRun2,
|
|
19
|
-
listCancelledApprovalRequestsForRun2,
|
|
20
31
|
getWaitStateById2,
|
|
21
32
|
getPendingEventWaitNames2,
|
|
22
33
|
getPendingWaitsByEvent2,
|
|
23
34
|
resolveWaitState2,
|
|
24
35
|
init_db3
|
|
25
|
-
} from "./cli-
|
|
36
|
+
} from "./cli-g8ka5j4j.js";
|
|
26
37
|
import {
|
|
27
38
|
BaseExecutor,
|
|
28
39
|
postApprovalCancellationUpdates,
|
|
@@ -42,6 +53,7 @@ import {
|
|
|
42
53
|
findReadyNodes,
|
|
43
54
|
startForeachDrive,
|
|
44
55
|
FOREACH_TERMINAL_STEP_STATUSES,
|
|
56
|
+
isRetryPending,
|
|
45
57
|
parseSyntheticNodeId,
|
|
46
58
|
resolveForeachParent,
|
|
47
59
|
settleForeachChild,
|
|
@@ -49,16 +61,16 @@ import {
|
|
|
49
61
|
stepFailureMode,
|
|
50
62
|
getNextTargets,
|
|
51
63
|
getSuccessors
|
|
52
|
-
} from "./cli-
|
|
64
|
+
} from "./cli-3fwqy71j.js";
|
|
53
65
|
import {
|
|
54
66
|
workflowEventBus2,
|
|
55
67
|
init_event_bus
|
|
56
|
-
} from "./cli-
|
|
68
|
+
} from "./cli-kt907da6.js";
|
|
57
69
|
import {
|
|
58
70
|
RetryPolicySchema,
|
|
59
71
|
SUPERSEDED_WORKFLOW_TASK_REASON,
|
|
60
72
|
init_types
|
|
61
|
-
} from "./cli-
|
|
73
|
+
} from "./cli-4rf0f5vg.js";
|
|
62
74
|
import {
|
|
63
75
|
init_zod
|
|
64
76
|
} from "./cli-4chz1hye.js";
|
|
@@ -76,7 +88,7 @@ import {
|
|
|
76
88
|
import {
|
|
77
89
|
scrubSecrets,
|
|
78
90
|
init_secret_scrubber
|
|
79
|
-
} from "./cli-
|
|
91
|
+
} from "./cli-708wdy32.js";
|
|
80
92
|
|
|
81
93
|
// src/workflows/approval-resolution.ts
|
|
82
94
|
function shapeApprovalResolution(registry, definition, nodeId, parkedOutput, approval) {
|
|
@@ -98,6 +110,7 @@ function shapeApprovalResolution(registry, definition, nodeId, parkedOutput, app
|
|
|
98
110
|
|
|
99
111
|
// src/workflows/resume.ts
|
|
100
112
|
init_db3();
|
|
113
|
+
init_approvals();
|
|
101
114
|
init_workflow_runs();
|
|
102
115
|
init_types();
|
|
103
116
|
init_secret_scrubber();
|
|
@@ -184,8 +197,13 @@ class SubWorkflowExecutor extends BaseExecutor {
|
|
|
184
197
|
throw err;
|
|
185
198
|
}
|
|
186
199
|
const child = await db.getWorkflowRun(childRunId);
|
|
187
|
-
if (!child)
|
|
188
|
-
return {
|
|
200
|
+
if (!child) {
|
|
201
|
+
return {
|
|
202
|
+
status: "failed",
|
|
203
|
+
error: `Child workflow run ${childRunId} not found`,
|
|
204
|
+
retryable: false
|
|
205
|
+
};
|
|
206
|
+
}
|
|
189
207
|
return this.settle(child, config.workflowId);
|
|
190
208
|
}
|
|
191
209
|
settle(child, workflowId) {
|
|
@@ -490,6 +508,7 @@ function computeNextPort(mode, status) {
|
|
|
490
508
|
|
|
491
509
|
// src/workflows/task-step-routing.ts
|
|
492
510
|
init_db3();
|
|
511
|
+
init_workflow_runs();
|
|
493
512
|
init_types();
|
|
494
513
|
var UNCLAIMED = {
|
|
495
514
|
claimed: false,
|
|
@@ -547,6 +566,8 @@ async function checkpointPortStepAndResolveSuccessors(def, runId, stepId, nodeId
|
|
|
547
566
|
if (!run || run.status !== "waiting" && run.status !== "running") {
|
|
548
567
|
return UNCLAIMED;
|
|
549
568
|
}
|
|
569
|
+
if (await getRunLineageBlock(runId))
|
|
570
|
+
return UNCLAIMED;
|
|
550
571
|
if (resolveForeachParent(def, nodeId)) {
|
|
551
572
|
return toRoutingResult(await settleForeachChild(def, runId, stepId, { status: "completed", output, nextPort }, ctx, {
|
|
552
573
|
registry
|
|
@@ -570,12 +591,14 @@ var SUPERSEDE_RETRY_POLICY = {
|
|
|
570
591
|
maxDelayMs: 30000
|
|
571
592
|
};
|
|
572
593
|
async function scheduleTaskStepRetry(def, runId, step, taskId, reason) {
|
|
573
|
-
const
|
|
594
|
+
const foreachParent = resolveForeachParent(def, step.nodeId);
|
|
595
|
+
const node = resolveStepNode(def, step.nodeId);
|
|
574
596
|
if (!node || node.type !== "agent-task")
|
|
575
597
|
return "not-eligible";
|
|
598
|
+
const declaredRetry = foreachParent ? foreachParent.retry : node.retry;
|
|
576
599
|
let policy;
|
|
577
|
-
if (
|
|
578
|
-
const parsed = RetryPolicySchema.safeParse(
|
|
600
|
+
if (declaredRetry) {
|
|
601
|
+
const parsed = RetryPolicySchema.safeParse(declaredRetry);
|
|
579
602
|
if (!parsed.success)
|
|
580
603
|
return "not-eligible";
|
|
581
604
|
policy = parsed.data;
|
|
@@ -590,6 +613,13 @@ async function scheduleTaskStepRetry(def, runId, step, taskId, reason) {
|
|
|
590
613
|
return "not-claimed";
|
|
591
614
|
if (!await isTaskBoundToStep(taskId, step.id))
|
|
592
615
|
return "not-claimed";
|
|
616
|
+
if (foreachParent) {
|
|
617
|
+
const run = await getWorkflowRun2(runId);
|
|
618
|
+
if (run?.status !== "running" && run?.status !== "waiting")
|
|
619
|
+
return "not-eligible";
|
|
620
|
+
}
|
|
621
|
+
if (await getRunLineageBlock(runId))
|
|
622
|
+
return "not-claimed";
|
|
593
623
|
if (current.retryCount >= policy.maxRetries)
|
|
594
624
|
return "not-eligible";
|
|
595
625
|
await detachTaskFromWorkflowRunStep2(taskId);
|
|
@@ -610,6 +640,8 @@ async function completeTaskStepAndResolveSuccessors(def, runId, step, output, ct
|
|
|
610
640
|
return UNCLAIMED;
|
|
611
641
|
if (ownerTaskId && !await isTaskBoundToStep(ownerTaskId, step.id))
|
|
612
642
|
return UNCLAIMED;
|
|
643
|
+
if (await getRunLineageBlock(runId))
|
|
644
|
+
return UNCLAIMED;
|
|
613
645
|
if (resolveForeachParent(def, step.nodeId)) {
|
|
614
646
|
return toRoutingResult(await settleForeachChild(def, runId, step.id, {
|
|
615
647
|
status: "completed",
|
|
@@ -750,10 +782,14 @@ async function resumeFromTaskCompletionUnguarded(event, registry) {
|
|
|
750
782
|
}
|
|
751
783
|
async function finalizeOrWait2(runId) {
|
|
752
784
|
await getDbClient2().transaction(async () => {
|
|
785
|
+
const status = await getWorkflowRunStatus(runId);
|
|
786
|
+
if (status !== "running" && status !== "waiting")
|
|
787
|
+
return;
|
|
788
|
+
if (await getRunLineageBlock(runId))
|
|
789
|
+
return;
|
|
753
790
|
const steps = await getWorkflowRunStepsByRunId2(runId);
|
|
754
791
|
if (hasRunningStep(steps)) {
|
|
755
|
-
|
|
756
|
-
if (run?.status === "waiting")
|
|
792
|
+
if (status === "waiting")
|
|
757
793
|
await updateWorkflowRun2(runId, { status: "running" });
|
|
758
794
|
return;
|
|
759
795
|
}
|
|
@@ -872,6 +908,9 @@ async function retryFailedRun2(runId, registry) {
|
|
|
872
908
|
const current = await getWorkflowRun2(runId);
|
|
873
909
|
if (!current || current.status !== "failed")
|
|
874
910
|
return null;
|
|
911
|
+
const blocked = await getRunLineageBlock(runId);
|
|
912
|
+
if (blocked)
|
|
913
|
+
throw new Error(`Retry not started, run left failed: ${blocked}`);
|
|
875
914
|
const currentSteps = await getWorkflowRunStepsByRunId2(runId);
|
|
876
915
|
const attempts = foreachRetryAttempts(workflow.definition, [
|
|
877
916
|
...latestStepPerNode(currentSteps).values()
|
|
@@ -879,6 +918,11 @@ async function retryFailedRun2(runId, registry) {
|
|
|
879
918
|
const capError = foreachRetryCapError(currentSteps.length, attempts);
|
|
880
919
|
if (capError)
|
|
881
920
|
throw new Error(`Retry not started, run left failed: ${capError}`);
|
|
921
|
+
for (const step of currentSteps) {
|
|
922
|
+
if (isRetryPending(step) && resolveForeachParent(workflow.definition, step.nodeId)) {
|
|
923
|
+
await updateWorkflowRunStep2(step.id, { nextRetryAt: null });
|
|
924
|
+
}
|
|
925
|
+
}
|
|
882
926
|
if (!foreachParent) {
|
|
883
927
|
await updateWorkflowRunStep2(failedStep.id, {
|
|
884
928
|
status: shouldRetryFailedNode ? "pending" : "cancelled",
|
|
@@ -941,52 +985,80 @@ function foreachRetryCapError(existingSteps, attempts) {
|
|
|
941
985
|
return null;
|
|
942
986
|
return `foreach retry would reach ${maxSteps} total steps (WORKFLOW_MAX_STEPS_PER_RUN): ${existingSteps} existing + ${added} new attempts leaves no room for the retry walk`;
|
|
943
987
|
}
|
|
988
|
+
var TERMINAL_RUN_STATUSES = new Set(["completed", "failed", "cancelled", "skipped"]);
|
|
944
989
|
async function cancelWorkflowRunRows2(runId, cancelReason) {
|
|
945
|
-
const terminalStatuses = ["completed", "failed", "cancelled", "skipped"];
|
|
946
990
|
const now = new Date().toISOString();
|
|
991
|
+
const settledTree = await getDbClient2().transaction(async () => {
|
|
992
|
+
if (await getWorkflowRunStatus(runId) !== "cancelled")
|
|
993
|
+
return null;
|
|
994
|
+
const ids = await getWorkflowRunTreeIds(runId);
|
|
995
|
+
return await workflowRunTreeHasOpenWork(ids) ? null : ids;
|
|
996
|
+
}, { readOnly: true });
|
|
997
|
+
if (settledTree)
|
|
998
|
+
return { cancelled: false, runIds: settledTree };
|
|
947
999
|
return await getDbClient2().transaction(async () => {
|
|
948
|
-
const
|
|
949
|
-
if (!
|
|
950
|
-
return false;
|
|
951
|
-
const steps = await getWorkflowRunStepsByRunId2(runId);
|
|
952
|
-
for (const step of steps) {
|
|
953
|
-
if (terminalStatuses.includes(step.status))
|
|
954
|
-
continue;
|
|
955
|
-
const task = await getTaskByWorkflowRunStepId2(step.id);
|
|
956
|
-
if (task) {
|
|
957
|
-
await cancelTask2(task.id, cancelReason);
|
|
958
|
-
}
|
|
959
|
-
await updateWorkflowRunStep2(step.id, {
|
|
960
|
-
status: "cancelled",
|
|
961
|
-
error: cancelReason,
|
|
962
|
-
finishedAt: now
|
|
963
|
-
});
|
|
1000
|
+
const rootStatus = await getWorkflowRunStatus(runId);
|
|
1001
|
+
if (!rootStatus || TERMINAL_RUN_STATUSES.has(rootStatus) && rootStatus !== "cancelled") {
|
|
1002
|
+
return { cancelled: false, runIds: [] };
|
|
964
1003
|
}
|
|
965
|
-
await
|
|
966
|
-
await
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
}
|
|
971
|
-
|
|
1004
|
+
const runIds = await getWorkflowRunTreeIds(runId);
|
|
1005
|
+
const openTaskIds = await getOpenWorkflowTreeTaskIds(runIds);
|
|
1006
|
+
const withDependents = openTaskIds.length > 0 ? await getTaskIdsWithDependents() : new Set;
|
|
1007
|
+
for (const taskId of openTaskIds) {
|
|
1008
|
+
await cancelTask2(taskId, cancelReason, { cascadeDependents: withDependents.has(taskId) });
|
|
1009
|
+
}
|
|
1010
|
+
await cancelOpenWorkflowTreeSteps(runIds, cancelReason, now);
|
|
1011
|
+
await disarmWorkflowTreeRetries(runIds, now);
|
|
1012
|
+
for (const id of runIds)
|
|
1013
|
+
await cancelPendingApprovalRequestsForRun2(id, cancelReason);
|
|
1014
|
+
await cancelLiveWorkflowTreeRuns(runIds.slice(1), cancelReason, now);
|
|
1015
|
+
if (rootStatus !== "cancelled") {
|
|
1016
|
+
await updateWorkflowRun2(runId, { status: "cancelled", error: cancelReason, finishedAt: now });
|
|
1017
|
+
}
|
|
1018
|
+
return { cancelled: rootStatus !== "cancelled", runIds };
|
|
972
1019
|
});
|
|
973
1020
|
}
|
|
974
|
-
|
|
975
|
-
|
|
1021
|
+
var inFlightCancels = new Map;
|
|
1022
|
+
function cancelWorkflowRun2(runId, reason) {
|
|
1023
|
+
const inFlight = inFlightCancels.get(runId);
|
|
1024
|
+
if (inFlight)
|
|
1025
|
+
return inFlight;
|
|
1026
|
+
const cancel = cancelWorkflowRunOnce(runId, reason).finally(() => {
|
|
1027
|
+
inFlightCancels.delete(runId);
|
|
1028
|
+
});
|
|
1029
|
+
inFlightCancels.set(runId, cancel);
|
|
1030
|
+
return cancel;
|
|
1031
|
+
}
|
|
1032
|
+
async function cancelWorkflowRunOnce(runId, reason) {
|
|
1033
|
+
const run = await getWorkflowRun2(runId, "display");
|
|
976
1034
|
if (!run)
|
|
977
1035
|
throw new Error("Workflow run not found");
|
|
978
|
-
|
|
979
|
-
if (terminalStatuses.includes(run.status) && run.status !== "cancelled") {
|
|
1036
|
+
if (TERMINAL_RUN_STATUSES.has(run.status) && run.status !== "cancelled") {
|
|
980
1037
|
throw new Error(`Cannot cancel run in '${run.status}' state`);
|
|
981
1038
|
}
|
|
982
1039
|
const cancelReason = reason ?? "Cancelled by user";
|
|
983
|
-
const
|
|
984
|
-
const
|
|
985
|
-
|
|
986
|
-
if (!applied && latestRun?.status !== "cancelled") {
|
|
1040
|
+
const { cancelled, runIds } = await cancelWorkflowRunRows2(runId, cancelReason);
|
|
1041
|
+
const latestRun = await getWorkflowRun2(runId, "display");
|
|
1042
|
+
if (!cancelled && latestRun?.status !== "cancelled") {
|
|
987
1043
|
throw new Error(`Cannot cancel run in '${latestRun?.status ?? "missing"}' state`);
|
|
988
1044
|
}
|
|
989
|
-
await
|
|
1045
|
+
await postTreeApprovalCancellations2(runIds, cancelled ? cancelReason : latestRun?.error ?? cancelReason);
|
|
1046
|
+
}
|
|
1047
|
+
async function postTreeApprovalCancellations2(runIds, reason, options = {}) {
|
|
1048
|
+
try {
|
|
1049
|
+
const approvals = [];
|
|
1050
|
+
for (const id of await listUndeliveredCancelledApprovalRequestIds(runIds)) {
|
|
1051
|
+
if (id === options.exceptRequestId)
|
|
1052
|
+
continue;
|
|
1053
|
+
const approval = await getApprovalRequestById2(id);
|
|
1054
|
+
if (approval)
|
|
1055
|
+
approvals.push(approval);
|
|
1056
|
+
}
|
|
1057
|
+
if (approvals.length > 0)
|
|
1058
|
+
await postApprovalCancellationUpdates(approvals, reason);
|
|
1059
|
+
} catch (err) {
|
|
1060
|
+
console.error("[workflows] approval cancellation updates not posted:", scrubSecrets(err instanceof Error ? err.message : String(err)));
|
|
1061
|
+
}
|
|
990
1062
|
}
|
|
991
1063
|
async function resumeFromApprovalResolution(event, registry) {
|
|
992
1064
|
await failClosedOnUnreadableReplay(event.workflowRunId, event.workflowRunStepId, () => resumeFromApprovalResolutionUnguarded(event, registry));
|
|
@@ -1084,6 +1156,8 @@ async function resumeFromChildRun2(parentStepId, registry) {
|
|
|
1084
1156
|
const current = await getWorkflowRunStep2(step.id);
|
|
1085
1157
|
if (!current || current.status !== "waiting")
|
|
1086
1158
|
return null;
|
|
1159
|
+
if (await getRunLineageBlock(run.id))
|
|
1160
|
+
return null;
|
|
1087
1161
|
const childId = await getChildWorkflowRunId(step.id, current.retryCount);
|
|
1088
1162
|
const child = childId ? await getWorkflowRun2(childId) : null;
|
|
1089
1163
|
const outcome = child ? childRunOutcome(child) : { error: `Child workflow run of step ${parentStepId} was deleted`, retryable: false };
|
|
@@ -1241,4 +1315,4 @@ function isPayloadInRun(payload, runId) {
|
|
|
1241
1315
|
const rec = payload;
|
|
1242
1316
|
return rec._runId === runId || rec.workflowRunId === runId;
|
|
1243
1317
|
}
|
|
1244
|
-
export { shapeApprovalResolution, SubWorkflowExecutor, WaitExecutor, failStepAndRunIfWaiting, checkpointPortStepAndResolveSuccessors, scheduleTaskStepRetry, completeTaskStepAndResolveSuccessors, setupWorkflowResumeListener2, finalizeOrWait2, retryFailedRun2, cancelWorkflowRunRows2, cancelWorkflowRun2, resumeWaitState2, recoverResolvedWaitState2, resumeFromChildRun2, initWaitBusSubscriptions2, subscribeWaitToBus2 };
|
|
1318
|
+
export { shapeApprovalResolution, SubWorkflowExecutor, WaitExecutor, failStepAndRunIfWaiting, checkpointPortStepAndResolveSuccessors, scheduleTaskStepRetry, completeTaskStepAndResolveSuccessors, setupWorkflowResumeListener2, finalizeOrWait2, retryFailedRun2, cancelWorkflowRunRows2, cancelWorkflowRun2, postTreeApprovalCancellations2, resumeWaitState2, recoverResolvedWaitState2, resumeFromChildRun2, initWaitBusSubscriptions2, subscribeWaitToBus2 };
|