@desplega.ai/agent-swarm 1.173.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{acp-adapter-ccm9xrep.js → acp-adapter-sj2g0m84.js} +17 -16
- package/dist/{actions-sgeyv08k.js → actions-fegk44gr.js} +39 -34
- package/dist/{amp-adapter-gpxp3kc9.js → amp-adapter-ad8ft89x.js} +8 -7
- package/dist/{app-km9qnv2f.js → app-kfvgbvzy.js} +18 -14
- package/dist/{assistant-5r8tcvvd.js → assistant-z7zdy9ja.js} +40 -35
- package/dist/{boot-reembed-swwzdgd7.js → boot-reembed-5c2z0mbe.js} +10 -9
- package/dist/{boot-reembed-16rv9843.js → boot-reembed-j8xa181e.js} +10 -9
- package/dist/{boot-scrub-sweep-zkr6vkqb.js → boot-scrub-sweep-hnkn3rgt.js} +11 -10
- package/dist/{boot-seeds-d8sp49t2.js → boot-seeds-kwjq4d2z.js} +14 -13
- package/dist/{claude-adapter-yzzzh8jp.js → claude-adapter-9vmvpvgd.js} +19 -18
- package/dist/{claude-managed-adapter-xgxhqrt2.js → claude-managed-adapter-k9qae05j.js} +7 -5
- package/dist/{claude-managed-setup-bnmjarjc.js → claude-managed-setup-q54zx5q2.js} +6 -4
- package/dist/{claude-sdk-session-4whxere4.js → claude-sdk-session-9jye6cxr.js} +11881 -11472
- package/dist/{cli-94b48jhk.js → cli-03gedhng.js} +16 -14
- package/dist/{cli-1w0vj3gw.js → cli-1e4b6bzh.js} +7 -7
- package/dist/{cli-d603qf86.js → cli-29jc5q7w.js} +10 -8
- package/dist/cli-2m1ktfzz.js +17795 -0
- package/dist/{cli-x119kdba.js → cli-3dj8k4vy.js} +1 -1
- package/dist/{cli-srqq3gc5.js → cli-3fbmmawm.js} +5 -5
- package/dist/{cli-gmdajfw5.js → cli-4jxm2qtz.js} +4987 -1708
- package/dist/{cli-tadfgd0t.js → cli-5hkm7whv.js} +33 -4
- package/dist/{cli-42qhyvwx.js → cli-5t4f29ez.js} +3 -3
- package/dist/{cli-7a0sde2x.js → cli-6cagzc96.js} +9 -0
- package/dist/cli-6cvfxs8r.js +47 -0
- package/dist/{cli-0kxf81jj.js → cli-6jyj59nb.js} +2 -2
- package/dist/{cli-w1apjecb.js → cli-6razj6t4.js} +2 -2
- package/dist/{cli-anzdk0z4.js → cli-74ahz61x.js} +2 -2
- package/dist/{cli-m89t9jdf.js → cli-7x0g4sn1.js} +15416 -16024
- package/dist/{cli-yatxqynm.js → cli-9ha6hs2d.js} +1 -290
- package/dist/{cli-81r1wjyv.js → cli-9nfx44eh.js} +1 -1
- package/dist/cli-9traj3dn.js +638 -0
- package/dist/{cli-smcrrmhy.js → cli-agzebbd5.js} +9 -9
- package/dist/{cli-na2pxe4f.js → cli-apx87jne.js} +2 -2
- package/dist/{cli-rfz2ve55.js → cli-bzszjf2p.js} +2855 -862
- package/dist/{cli-c5km5znr.js → cli-c8r3kzzb.js} +1 -1
- package/dist/{cli-hsem16hb.js → cli-cgtksawx.js} +7 -4
- package/dist/{cli-db3m6zdt.js → cli-d2qr7aj4.js} +1 -1
- package/dist/{cli-rfs4vddv.js → cli-d5f9ed5c.js} +5 -5
- package/dist/cli-e3g5mbkz.js +776 -0
- package/dist/{cli-7jykv7ef.js → cli-e6mpjhed.js} +1 -1
- package/dist/{cli-7a93cv8c.js → cli-ee9gtz70.js} +98 -23
- package/dist/{cli-3nxdmjrc.js → cli-eejsgvm4.js} +4 -4
- package/dist/{cli-fmhj1ehj.js → cli-ef1hg1wv.js} +470 -51
- package/dist/cli-f527ce74.js +781 -0
- package/dist/{cli-ppy4nnnh.js → cli-f7kr7svz.js} +2 -2
- package/dist/cli-hjwmhcg1.js +10622 -0
- package/dist/{cli-2bw3w47j.js → cli-hnhtk6cj.js} +1 -1
- package/dist/{cli-ywm1azg9.js → cli-hnmhtzvh.js} +6 -4
- package/dist/{cli-h7k0xtry.js → cli-hvqbtna4.js} +4 -1256
- package/dist/{cli-s8z6x4b4.js → cli-j0pfptdp.js} +218 -102
- package/dist/cli-jta2eyzc.js +619 -0
- package/dist/{cli-5er5gjbm.js → cli-k382tshb.js} +10 -11
- package/dist/{cli-v3zhnxsb.js → cli-k3dp5tpf.js} +2 -2
- package/dist/{cli-wd0hz6ah.js → cli-kbrt8gqa.js} +9 -91
- package/dist/cli-kceah1eh.js +92 -0
- package/dist/{cli-ne7smj1b.js → cli-ke896fcf.js} +10 -10
- package/dist/{cli-xc7p7s3g.js → cli-kt6zqg0e.js} +6 -6
- package/dist/{cli-wrh08zjd.js → cli-m50t4309.js} +5 -18
- package/dist/cli-n2wq4j7m.js +6985 -0
- package/dist/{cli-bv2etw2y.js → cli-n3hzg89b.js} +46 -15
- package/dist/{cli-tmhsxhb8.js → cli-n5vwg842.js} +23 -6
- package/dist/{cli-qm1448f9.js → cli-ne236afy.js} +8 -8
- package/dist/{cli-d161g69q.js → cli-p1x85d2t.js} +50 -2
- package/dist/{cli-7pz3b7x5.js → cli-przpmdgr.js} +25 -0
- package/dist/{cli-0a7mm3zp.js → cli-q0ke1yww.js} +25 -21
- package/dist/{cli-e3pmyt39.js → cli-q50942rs.js} +1 -1
- package/dist/{cli-r44t9wqc.js → cli-r106725k.js} +2 -2
- package/dist/{cli-phcqp1b9.js → cli-r2pnvj8g.js} +2 -2
- package/dist/{cli-jpc4r224.js → cli-r62a35ea.js} +19 -3
- package/dist/{cli-cd0hv9nh.js → cli-ra0xzggj.js} +2 -2
- package/dist/cli-rhs9pz33.js +294 -0
- package/dist/{cli-r4fqfpwf.js → cli-s2sp957d.js} +50 -27
- package/dist/{cli-1x7da0de.js → cli-s4setq91.js} +8 -8
- package/dist/{cli-6thk4jz3.js → cli-se8w6wny.js} +6 -6
- package/dist/cli-skxvvpap.js +10140 -0
- package/dist/{cli-014vns2y.js → cli-stfs0k5s.js} +208 -525
- package/dist/{cli-0p3enk35.js → cli-tqaazemc.js} +9 -1
- package/dist/{cli-nwrdx840.js → cli-tr4sxp68.js} +3 -3
- package/dist/{cli-r0byd61h.js → cli-tsde1hdr.js} +15 -15
- package/dist/{cli-b07hr3bt.js → cli-txqb9s38.js} +2 -2
- package/dist/{cli-6r2f7edk.js → cli-v1yb0rqb.js} +6 -6
- package/dist/{cli-saqyage0.js → cli-vatyhshy.js} +179 -27
- package/dist/{cli-5wpw4rab.js → cli-vdach5a9.js} +5 -5
- package/dist/{cli-7avy4v8w.js → cli-w1q7h2r2.js} +5 -3
- package/dist/{cli-rcp5aqdw.js → cli-w7m81tb7.js} +1 -1
- package/dist/{cli-c3rk1v0x.js → cli-wayw93nt.js} +3 -3
- package/dist/cli-wmgrkscj.js +23254 -0
- package/dist/{cli-9xf7fdtp.js → cli-z5jjpaxw.js} +29 -6
- package/dist/{cli-451ks6aw.js → cli-zkpks3r3.js} +1 -1
- package/dist/cli.js +29 -45
- package/dist/{codex-adapter-r3dn4fp5.js → codex-adapter-y81sssk0.js} +15 -14
- package/dist/{codex-login-841kv5fk.js → codex-login-f2rcfpp9.js} +3 -2
- package/dist/{codex-session-runner-fwt793h4.js → codex-session-runner-8vx4j6a9.js} +15 -14
- package/dist/{commands-z8fq9qna.js → commands-kcpvpcrr.js} +11 -10
- package/dist/{controller-hq5ggpcp.js → controller-ywrmt6yd.js} +5 -4
- package/dist/{controllers-connect-3mf2btyj.js → controllers-connect-kwpvj3rf.js} +42 -37
- package/dist/{cursor-adapter-q8pgv5qa.js → cursor-adapter-cehv1qns.js} +7 -6
- package/dist/{db-yyhqqrbf.js → db-k8ankj20.js} +12 -11
- package/dist/{db-qfpq4bt7.js → db-ww5d7jq3.js} +28 -9
- package/dist/{devin-adapter-xgtj680j.js → devin-adapter-x1022qb1.js} +3 -2
- package/dist/{dispatcher-x0x7qfcq.js → dispatcher-e8gq5m68.js} +38 -33
- package/dist/{docker-f503k9p0.js → docker-ff6y1190.js} +3 -2
- package/dist/{dsh-adapter-34etvb5m.js → dsh-adapter-3epjm3af.js} +7 -6
- package/dist/{e2b-66xra4az.js → e2b-8ygwhg0f.js} +4 -3
- package/dist/{e2b-xwhyj8cw.js → e2b-swhnpw3n.js} +4 -3
- package/dist/{event-bus-vjtv82gm.js → event-bus-6axnngdj.js} +3 -2
- package/dist/{external-channel-h1fjecwe.js → external-channel-h3359cwn.js} +11 -10
- package/dist/{google-generative-ai-szdxbpqg.js → google-generative-ai-g8db7x0f.js} +4 -2
- package/dist/{google-vertex-qzw3p36d.js → google-vertex-r2692q0r.js} +4 -2
- package/dist/{grok-adapter-e7mr287e.js → grok-adapter-0d4x7gkx.js} +18 -17
- package/dist/{handlers-znb9n7d4.js → handlers-an1gzv21.js} +41 -36
- package/dist/{heartbeat-bm4qkn8d.js → heartbeat-6dakeb61.js} +43 -38
- package/dist/{hook-254r4mza.js → hook-6v6cv6d5.js} +11 -23
- package/dist/{hook-xaa3q80s.js → hook-sa5xye4y.js} +12 -11
- package/dist/{http-3dgrgp8y.js → http-r7f3eky0.js} +1499 -251
- package/dist/index-52j1aja4.js +3465 -0
- package/dist/{index-fx3jqq1e.js → index-7ep4gzdk.js} +38 -33
- package/dist/index-9gw58n4k.js +193 -0
- package/dist/index-9j87mcm8.js +56305 -0
- package/dist/index-bsmcresk.js +79424 -0
- package/dist/index-mh85qhec.js +475 -0
- package/dist/{index-g2byveez.js → index-rmpw9a8q.js} +38 -33
- package/dist/{index-2ybk7khy.js → index-s2wxgzr0.js} +468 -683
- package/dist/{index-bdsqa799.js → index-v1v6n7hg.js} +43 -38
- package/dist/index-we27kd31.js +12810 -0
- package/dist/{index-jd7sejm2.js → index-zk96aq1k.js} +10 -9
- package/dist/{keepalive-6ywhpja1.js → keepalive-be9vwy5h.js} +12 -11
- package/dist/{lead-cw45n21s.js → lead-0861cwrf.js} +61 -56
- package/dist/{maintenance-ss1a1ge9.js → maintenance-mzzgc8bn.js} +10 -9
- package/dist/{node-fkajaq96.js → node-mn1zs7an.js} +2 -1
- package/dist/{oauth-refresh-sweep-3c6f8vyy.js → oauth-refresh-sweep-cpdnfwdj.js} +11 -10
- package/dist/{onboard-8hzdhc1k.js → onboard-fh8qs4r3.js} +11 -3
- package/dist/{opencode-adapter-qbchbcfz.js → opencode-adapter-nm42wwj8.js} +18 -13
- package/dist/{otel-impl-e6mnvc4v.js → otel-impl-x6c1c9g4.js} +242 -868
- package/dist/{pi-mono-adapter-3c9g9snh.js → pi-mono-adapter-9n2ya240.js} +244 -106
- package/dist/{pricing-refresh-gedkjdw0.js → pricing-refresh-qb0rv0ap.js} +12 -11
- package/dist/{rbac-roles-dt4vh1yy.js → rbac-roles-1gzdwbh1.js} +11 -10
- package/dist/{rbac-roles-eszdg6pm.js → rbac-roles-3mraey52.js} +12 -11
- package/dist/{render-v2-907cy6sa.js → render-v2-agpa45zz.js} +18 -14
- package/dist/{resume-42stcaz0.js → resume-x0ydy9s9.js} +25 -21
- package/dist/{runtime-qfry88v2.js → runtime-sa2vr16g.js} +2 -2
- package/dist/{setup-adbc1c10.js → setup-as9ga0d6.js} +2 -2
- package/dist/{virtual-modules-rtmt494q.js → virtual-modules-9gkxqrap.js} +6 -5
- package/dist/{work-objects-wpj8ck95.js → work-objects-y5g1y7ev.js} +41 -36
- package/dist/{worker-bzdra9rf.js → worker-860c3e38.js} +61 -56
- package/dist/{x-qfmygqqv.js → x-m477fr0h.js} +3 -2
- package/openapi.json +523 -344
- package/package.json +10 -11
- package/src/be/config-refs.ts +60 -0
- package/src/be/db/page-versions.ts +15 -0
- package/src/be/db/runtime.ts +35 -8
- package/src/be/db/skill-name-resolution.ts +36 -0
- package/src/be/db/tasks/read.ts +230 -0
- package/src/be/db/tasks/write.ts +7 -0
- package/src/be/db.ts +52 -7
- package/src/be/migrations/215_swarm_config_export_to_env.sql +34 -0
- package/src/be/migrations/216_task_resolved_effort.sql +5 -0
- package/src/be/migrations/217_chat_sdk_state.sql +104 -0
- package/src/be/model-catalog-store.ts +5 -1
- package/src/be/model-tier-resolution.ts +12 -1
- package/src/be/model-validation.ts +5 -2
- package/src/be/models-catalog.ts +26 -1
- package/src/be/modelsdev-cache.json +198 -63
- package/src/be/modelsdev-cache.ts +9 -1
- package/src/be/script-credential-broker.ts +39 -2
- package/src/be/scripts/run-saved.ts +1 -0
- package/src/be/scripts/typecheck.ts +10 -8
- package/src/be/seed/runner.ts +13 -1
- package/src/be/seed/state-db.ts +5 -0
- package/src/be/seed/types.ts +6 -0
- package/src/be/seed-pricing.ts +19 -2
- package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
- package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
- package/src/be/seed-skills/bundled-files.generated.json +0 -18
- package/src/be/seed-skills/index.ts +104 -3
- package/src/be/swarm-config-guard.ts +52 -0
- package/src/cli.tsx +0 -16
- package/src/commands/onboard/non-interactive.ts +4 -2
- package/src/commands/provider-credentials.ts +52 -6
- package/src/commands/runner.ts +190 -54
- package/src/e2b/env.ts +5 -0
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/extensions/contract.ts +45 -0
- package/src/extensions/dispatcher.ts +7 -0
- package/src/extensions/post-bridge.ts +40 -0
- package/src/github/handlers.ts +11 -4
- package/src/heartbeat/templates.ts +8 -5
- package/src/hooks/hook.ts +0 -26
- package/src/http/all-routes.ts +0 -1
- package/src/http/config.ts +36 -17
- package/src/http/core.ts +4 -0
- package/src/http/index.ts +14 -2
- package/src/http/integrations.ts +88 -1
- package/src/http/mcp.ts +15 -5
- package/src/http/page-proxy.ts +2 -4
- package/src/http/pages-public.ts +3 -3
- package/src/http/pages.ts +3 -13
- package/src/http/poll.ts +28 -68
- package/src/http/requested-by.ts +54 -0
- package/src/http/scripts.ts +1 -0
- package/src/http/stats.ts +1 -30
- package/src/http/tasks.ts +61 -5
- package/src/http/utils.ts +14 -0
- package/src/http/webhooks.ts +159 -1
- package/src/http/x.ts +1 -0
- package/src/integrations/chat-sdk/adapters.ts +129 -0
- package/src/integrations/chat-sdk/attachments.ts +232 -0
- package/src/integrations/chat-sdk/background.ts +36 -0
- package/src/integrations/chat-sdk/commands.ts +194 -0
- package/src/integrations/chat-sdk/config.ts +198 -0
- package/src/integrations/chat-sdk/discord-api.ts +63 -0
- package/src/integrations/chat-sdk/discord-gateway.ts +185 -0
- package/src/integrations/chat-sdk/handlers.ts +28 -0
- package/src/integrations/chat-sdk/inbound.ts +426 -0
- package/src/integrations/chat-sdk/limits.ts +48 -0
- package/src/integrations/chat-sdk/logger.ts +81 -0
- package/src/integrations/chat-sdk/outbound.ts +123 -0
- package/src/integrations/chat-sdk/relay.ts +172 -0
- package/src/integrations/chat-sdk/router.ts +169 -0
- package/src/integrations/chat-sdk/runtime.ts +351 -0
- package/src/integrations/chat-sdk/schema.ts +245 -0
- package/src/integrations/chat-sdk/state.ts +243 -0
- package/src/integrations/chat-sdk/status.ts +244 -0
- package/src/integrations/chat-sdk/steering.ts +58 -0
- package/src/integrations/chat-sdk/teams-origin.ts +77 -0
- package/src/integrations/chat-sdk/telegram-api.ts +56 -0
- package/src/integrations/chat-sdk/templates.ts +16 -0
- package/src/integrations/chat-sdk/test-hooks.ts +37 -0
- package/src/integrations/chat-sdk/thread-buffer.ts +100 -0
- package/src/integrations/chat-sdk/typing.ts +65 -0
- package/src/pages/version.ts +4 -5
- package/src/prompts/base-prompt.ts +111 -45
- package/src/providers/acp-target-catalog.ts +6 -0
- package/src/providers/acp-targets.ts +55 -2
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/claude-adapter.ts +1 -1
- package/src/providers/claude-flag-settings.ts +17 -5
- package/src/providers/claude-managed-adapter.ts +1 -1
- package/src/providers/claude-session-events.ts +6 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/providers/opencode-adapter.ts +243 -26
- package/src/providers/opencode-swarm-plugin.ts +31 -0
- package/src/providers/pi-mono-adapter.ts +398 -153
- package/src/providers/pricing-sources.md +33 -2
- package/src/providers/reasoning-effort.ts +27 -0
- package/src/providers/types.ts +6 -2
- package/src/rbac/legacy-policy.ts +8 -2
- package/src/rbac/permissions.ts +21 -0
- package/src/scheduler/scheduler.ts +4 -2
- package/src/scripts-runtime/loader.ts +19 -7
- package/src/scripts-runtime/sdk-allowlist.ts +8 -6
- package/src/scripts-runtime/swarm-sdk.ts +0 -11
- package/src/scripts-runtime/types/stdlib.d.ts +27 -15
- package/src/scripts-runtime/types/swarm-extension.d.ts +63 -1
- package/src/scripts-runtime/types/swarm-sdk.d.ts +27 -15
- package/src/server.ts +52 -18
- package/src/slack/event-dedup.ts +1 -1
- package/src/tasks/additive-buffer.ts +4 -2
- package/src/tasks/context-key.ts +60 -1
- package/src/tasks/model-pin.ts +67 -0
- package/src/tasks/worker-follow-up.ts +4 -31
- package/src/tests/acp-adapter.test.ts +42 -0
- package/src/tests/api-drain-worker-e2e.test.ts +1 -6
- package/src/tests/base-prompt.test.ts +58 -54
- package/src/tests/chat-sdk-commands.test.ts +191 -0
- package/src/tests/chat-sdk-config.test.ts +334 -0
- package/src/tests/chat-sdk-discord-api.test.ts +68 -0
- package/src/tests/chat-sdk-discord-gateway.test.ts +252 -0
- package/src/tests/chat-sdk-discord-webhook.test.ts +126 -0
- package/src/tests/chat-sdk-fields-sync.test.ts +50 -0
- package/src/tests/chat-sdk-harness.ts +146 -0
- package/src/tests/chat-sdk-inbound.test.ts +363 -0
- package/src/tests/chat-sdk-relay.test.ts +470 -0
- package/src/tests/chat-sdk-reload.test.ts +128 -0
- package/src/tests/chat-sdk-shutdown.test.ts +220 -0
- package/src/tests/chat-sdk-slack.test.ts +268 -0
- package/src/tests/chat-sdk-state.test.ts +163 -0
- package/src/tests/chat-sdk-status-route.test.ts +382 -0
- package/src/tests/chat-sdk-teams.test.ts +277 -0
- package/src/tests/chat-sdk-tools.test.ts +520 -0
- package/src/tests/chat-sdk-typing.test.ts +120 -0
- package/src/tests/chat-sdk-webhook-telegram.test.ts +200 -0
- package/src/tests/claude-adapter-binary.test.ts +9 -4
- package/src/tests/claude-flag-settings.test.ts +11 -3
- package/src/tests/claude-managed-adapter.test.ts +1 -1
- package/src/tests/claude-sdk-lifecycle.test.ts +9 -3
- package/src/tests/claude-thinking-tokens.test.ts +57 -0
- package/src/tests/claude-worker-parity.test.ts +2 -7
- package/src/tests/config-env-export-chat-sdk.test.ts +11 -0
- package/src/tests/config-refs.test.ts +66 -0
- package/src/tests/context-key.test.ts +19 -0
- package/src/tests/cors-allowlist.test.ts +25 -0
- package/src/tests/create-page-tool.test.ts +18 -0
- package/src/tests/credential-check.test.ts +139 -0
- package/src/tests/credentials.test.ts +21 -0
- package/src/tests/db-runtime.test.ts +61 -0
- package/src/tests/db-task-read-contract.test.ts +20 -0
- package/src/tests/db-task-write-contract.test.ts +10 -0
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dsh-adapter.test.ts +1 -1
- package/src/tests/enabled-capabilities.test.ts +20 -0
- package/src/tests/entrypoint-api-readiness.test.ts +14 -8
- package/src/tests/entrypoint-config-env-export.test.ts +5 -2
- package/src/tests/entrypoint-export-to-env.test.ts +78 -0
- package/src/tests/explicit-model-validation.test.ts +105 -1
- package/src/tests/extensions-example-route-chat-channel.test.ts +154 -0
- package/src/tests/extensions-post-bridge.test.ts +51 -0
- package/src/tests/fetch-resolved-env.test.ts +128 -0
- package/src/tests/fixtures/chat-sdk/telegram-private-text.json +10 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/hooks.ts +27 -0
- package/src/tests/fixtures/extensions/route-chat-channel-to-agent/manifest.json +9 -0
- package/src/tests/fixtures/openai-compatible-registry-extension.child.ts +146 -0
- package/src/tests/fixtures/runner-legacy-resume-prompt.ts +122 -0
- package/src/tests/github-handlers.test.ts +35 -0
- package/src/tests/harness-provider-resolution.test.ts +12 -0
- package/src/tests/heartbeat-checklist.test.ts +3 -2
- package/src/tests/hook-runtime-close.test.ts +0 -2
- package/src/tests/http-api-integration.test.ts +0 -25
- package/src/tests/migration-046-budgets.test.ts +17 -16
- package/src/tests/migration-217-chat-sdk-state.test.ts +113 -0
- package/src/tests/model-tier-resolution.test.ts +93 -0
- package/src/tests/models-catalog.test.ts +42 -1
- package/src/tests/openai-compatible-providers.test.ts +134 -0
- package/src/tests/openai-compatible-registry-extension.test.ts +42 -0
- package/src/tests/opencode-adapter.test.ts +216 -2
- package/src/tests/opencode-helmcode-sdk.test.ts +201 -0
- package/src/tests/opencode-shell-env.test.ts +145 -0
- package/src/tests/openrouter-base-url.test.ts +101 -151
- package/src/tests/page-proxy.test.ts +1 -1
- package/src/tests/pages-browser-sdk.test.ts +76 -0
- package/src/tests/pages-feedback.test.ts +1 -1
- package/src/tests/paused-tasks-requested-by.test.ts +102 -0
- package/src/tests/pi-custom-provider-fake-server.test.ts +442 -0
- package/src/tests/pi-mono-adapter.test.ts +385 -5
- package/src/tests/pi-shell-env.test.ts +170 -0
- package/src/tests/prompt-template-remaining.test.ts +35 -0
- package/src/tests/rbac-engine.test.ts +11 -3
- package/src/tests/runner-exit-after-tasks.test.ts +0 -4
- package/src/tests/runner-legacy-resume-prompt.test.ts +64 -0
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/scripts-http.test.ts +201 -1
- package/src/tests/scripts-only-gating.test.ts +2 -3
- package/src/tests/scripts-runtime.test.ts +58 -40
- package/src/tests/secret-scrubber.test.ts +86 -0
- package/src/tests/seed-skills-bundled-files.test.ts +45 -53
- package/src/tests/seed-skills-retire.test.ts +182 -0
- package/src/tests/send-task-requester-gate.test.ts +58 -0
- package/src/tests/session-cost-recompute-unit.test.ts +46 -0
- package/src/tests/skill-get-name-resolution.test.ts +137 -0
- package/src/tests/sonnet-5-5-registry.test.ts +9 -1
- package/src/tests/swarm-config-export-to-env.test.ts +267 -0
- package/src/tests/swarm-config-reserved-keys.test.ts +16 -0
- package/src/tests/swarm-diff.test.ts +1 -1
- package/src/tests/task-model-effort-rerun.test.ts +164 -0
- package/src/tests/task-session-prompts.test.ts +132 -0
- package/src/tests/task-tool-manifest.test.ts +14 -0
- package/src/tests/task-tools-ctx.test.ts +2 -0
- package/src/tests/tool-annotations.test.ts +6 -6
- package/src/tests/ui-logs-parser.test.ts +43 -0
- package/src/tests/used-by-route.test.ts +6 -0
- package/src/tests/vercel-ai-gateway.test.ts +149 -0
- package/src/tests/workflow-swarm-script.test.ts +38 -0
- package/src/tests/workflow-wait-filter.test.ts +5 -3
- package/src/tools/chat-access.ts +41 -0
- package/src/tools/chat-open-dm.ts +59 -0
- package/src/tools/chat-post.ts +74 -0
- package/src/tools/chat-read-thread.ts +100 -0
- package/src/tools/chat-reply.ts +75 -0
- package/src/tools/create-page.ts +3 -13
- package/src/tools/model-catalog/index.ts +2 -1
- package/src/tools/register-chat-channel.ts +139 -0
- package/src/tools/send-task.ts +24 -0
- package/src/tools/skills/skill-get.ts +17 -9
- package/src/tools/swarm-config/get-config.ts +2 -1
- package/src/tools/swarm-config/list-config.ts +2 -1
- package/src/tools/swarm-config/set-config.ts +16 -3
- package/src/tools/tool-config.ts +8 -6
- package/src/types.ts +12 -2
- package/src/utils/config-env-export.ts +74 -0
- package/src/utils/credentials.test.ts +92 -0
- package/src/utils/credentials.ts +52 -4
- package/src/utils/harness-provider.ts +15 -6
- package/src/utils/runtime-model-catalog.ts +11 -1
- package/src/utils/secret-scrubber.ts +71 -2
- package/src/utils/task-tool-manifest.ts +19 -2
- package/src/workflows/executors/swarm-script.ts +1 -0
- package/templates/skills/agent-browser/SKILL.md +1 -1
- package/templates/skills/agent-browser/content.md +1 -1
- package/templates/skills/apps/SKILL.md +8 -1
- package/templates/skills/apps/content.md +8 -1
- package/templates/skills/chat-sdk/config.json +14 -0
- package/templates/skills/chat-sdk/content.md +84 -0
- package/templates/skills/composio-gmail/content.md +7 -0
- package/templates/skills/composio-google-docs/content.md +1 -1
- package/templates/skills/email-domain-health/config.json +14 -0
- package/templates/skills/email-domain-health/content.md +131 -0
- package/templates/skills/kv-storage/content.md +2 -2
- package/templates/skills/pages/content.md +8 -10
- package/templates/skills/swarm-extensions/content.md +2 -0
- package/templates/skills/swarm-scripts/SKILL.md +4 -2
- package/templates/skills/swarm-scripts/config.json +1 -1
- package/templates/skills/swarm-scripts/content.md +4 -2
- package/templates/skills/workflow-iterate/content.md +38 -0
- package/dist/artifact-eczsknc3.js +0 -3843
- package/dist/cli-bd957dgb.js +0 -153
- package/dist/cli-q51yprfq.js +0 -1104
- package/dist/cli-t1ze64h3.js +0 -811
- package/dist/cli-tcc4wd5d.js +0 -56471
- package/dist/index-9ch1n761.js +0 -1102
- package/src/artifact-sdk/index.ts +0 -2
- package/src/artifact-sdk/localtunnel.d.ts +0 -20
- package/src/artifact-sdk/port.ts +0 -12
- package/src/artifact-sdk/server.ts +0 -183
- package/src/artifact-sdk/tunnel.ts +0 -19
- package/src/commands/artifact.ts +0 -249
- package/src/http/ecosystem.ts +0 -77
- package/src/tests/artifact-commands.test.ts +0 -92
- package/src/tests/artifact-sdk.test.ts +0 -793
- package/src/tests/register-service-security.test.ts +0 -194
- package/src/tools/list-services.ts +0 -107
- package/src/tools/register-service.ts +0 -177
- package/src/tools/unregister-service.ts +0 -73
- package/src/tools/update-service-status.ts +0 -96
- package/templates/skills/artifacts/config.json +0 -14
- package/templates/skills/artifacts/content.md +0 -344
- package/templates/skills/artifacts/files/examples/approval-flow.ts +0 -34
- package/templates/skills/artifacts/files/examples/hono-dashboard.ts +0 -31
- package/templates/skills/artifacts/files/examples/multi-artifact.ts +0 -20
- package/templates/skills/artifacts/files/examples/static-report.sh +0 -17
- /package/src/{artifact-sdk → pages}/browser-sdk.ts +0 -0
- /package/src/{artifact-sdk → pages}/feedback-overlay.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ALL_TOOLS,
|
|
3
3
|
init_tool_config
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-hnmhtzvh.js";
|
|
5
5
|
import {
|
|
6
6
|
AgentAvatarSchema,
|
|
7
7
|
CreateTaskOptionsSchema,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
normalizeAssetKey,
|
|
23
23
|
parseAssetKey,
|
|
24
24
|
parseModelTier
|
|
25
|
-
} from "./cli-
|
|
25
|
+
} from "./cli-cgtksawx.js";
|
|
26
26
|
import {
|
|
27
27
|
IdentityFieldBudgetError,
|
|
28
28
|
checkIdentityFieldBudget,
|
|
@@ -36,22 +36,22 @@ import {
|
|
|
36
36
|
init_profile_sync,
|
|
37
37
|
matchesDefaultClaudeMd,
|
|
38
38
|
matchesDefaultIdentityMd
|
|
39
|
-
} from "./cli-
|
|
40
|
-
import {
|
|
41
|
-
init_steering_enabled,
|
|
42
|
-
isSteeringEnabled
|
|
43
|
-
} from "./cli-7mm2r1kp.js";
|
|
39
|
+
} from "./cli-s2sp957d.js";
|
|
44
40
|
import {
|
|
45
41
|
init_config,
|
|
46
42
|
isSlackConfigured
|
|
47
43
|
} from "./cli-dmtrxqhg.js";
|
|
48
44
|
import {
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
init_steering_enabled,
|
|
46
|
+
isSteeringEnabled
|
|
47
|
+
} from "./cli-7mm2r1kp.js";
|
|
51
48
|
import {
|
|
52
49
|
deriveProviderFromKeyType,
|
|
53
50
|
init_credentials
|
|
54
|
-
} from "./cli-
|
|
51
|
+
} from "./cli-5hkm7whv.js";
|
|
52
|
+
import {
|
|
53
|
+
init_templates
|
|
54
|
+
} from "./cli-mvzyxwg3.js";
|
|
55
55
|
import {
|
|
56
56
|
configureDbResolver,
|
|
57
57
|
getAllTemplateDefinitions,
|
|
@@ -75,13 +75,9 @@ import {
|
|
|
75
75
|
init_openrouter_base_url
|
|
76
76
|
} from "./cli-a35hzdve.js";
|
|
77
77
|
import {
|
|
78
|
-
harnessModelMismatch,
|
|
79
78
|
init_runtime_model_catalog,
|
|
80
|
-
init_src,
|
|
81
|
-
isAlias,
|
|
82
|
-
parseAlias,
|
|
83
79
|
runtimeHarnessSections
|
|
84
|
-
} from "./cli-
|
|
80
|
+
} from "./cli-stfs0k5s.js";
|
|
85
81
|
import {
|
|
86
82
|
init_zod
|
|
87
83
|
} from "./cli-sd0mxa3c.js";
|
|
@@ -101,7 +97,7 @@ import {
|
|
|
101
97
|
import {
|
|
102
98
|
init_package,
|
|
103
99
|
package_default
|
|
104
|
-
} from "./cli-
|
|
100
|
+
} from "./cli-k382tshb.js";
|
|
105
101
|
import {
|
|
106
102
|
init_bus,
|
|
107
103
|
realtimeBus
|
|
@@ -116,7 +112,13 @@ import {
|
|
|
116
112
|
registerVolatileSecret,
|
|
117
113
|
scrubObject,
|
|
118
114
|
scrubSecrets
|
|
119
|
-
} from "./cli-
|
|
115
|
+
} from "./cli-p1x85d2t.js";
|
|
116
|
+
import {
|
|
117
|
+
harnessModelMismatch,
|
|
118
|
+
init_src,
|
|
119
|
+
isAlias,
|
|
120
|
+
parseAlias
|
|
121
|
+
} from "./cli-e3g5mbkz.js";
|
|
120
122
|
import {
|
|
121
123
|
__commonJS,
|
|
122
124
|
__esm,
|
|
@@ -8294,6 +8296,26 @@ function slackContextKey(input) {
|
|
|
8294
8296
|
const threadTs = assertSafePart(input.threadTs, "threadTs");
|
|
8295
8297
|
return ["task", "slack", channelId, threadTs].join(SEPARATOR);
|
|
8296
8298
|
}
|
|
8299
|
+
function chatSdkContextKey(threadId) {
|
|
8300
|
+
const raw = typeof threadId === "string" ? threadId : "";
|
|
8301
|
+
const separatorIndex = raw.indexOf(SEPARATOR);
|
|
8302
|
+
if (separatorIndex <= 0 || separatorIndex === raw.length - 1) {
|
|
8303
|
+
throw new Error(`context-key: chat-sdk thread id must be "<adapter>:<id>" (got ${JSON.stringify(threadId)})`);
|
|
8304
|
+
}
|
|
8305
|
+
const adapter = assertSafePart(raw.slice(0, separatorIndex), "adapter");
|
|
8306
|
+
const rest = encodeURIComponent(raw.slice(separatorIndex + 1));
|
|
8307
|
+
return ["task", "chat-sdk", adapter, rest].join(SEPARATOR);
|
|
8308
|
+
}
|
|
8309
|
+
function chatThreadOfContextKey(key) {
|
|
8310
|
+
if (!key)
|
|
8311
|
+
return null;
|
|
8312
|
+
try {
|
|
8313
|
+
const parsed = parseContextKey(key);
|
|
8314
|
+
return parsed.family === "chat-sdk" ? parsed.parts : null;
|
|
8315
|
+
} catch {
|
|
8316
|
+
return null;
|
|
8317
|
+
}
|
|
8318
|
+
}
|
|
8297
8319
|
function agentmailContextKey(input) {
|
|
8298
8320
|
const threadId = assertSafePart(input.threadId, "threadId");
|
|
8299
8321
|
return ["task", "agentmail", threadId].join(SEPARATOR);
|
|
@@ -8388,6 +8410,19 @@ function parseContextKey(key) {
|
|
|
8388
8410
|
}
|
|
8389
8411
|
return { family: "agentmail", parts: { threadId: parts[2] } };
|
|
8390
8412
|
}
|
|
8413
|
+
case "chat-sdk": {
|
|
8414
|
+
if (parts.length !== 4 || !parts[2] || !parts[3]) {
|
|
8415
|
+
throw new Error(`context-key: malformed chat-sdk key: ${JSON.stringify(key)}`);
|
|
8416
|
+
}
|
|
8417
|
+
const adapter = parts[2];
|
|
8418
|
+
let rest;
|
|
8419
|
+
try {
|
|
8420
|
+
rest = decodeURIComponent(parts[3]);
|
|
8421
|
+
} catch {
|
|
8422
|
+
throw new Error(`context-key: malformed chat-sdk key: ${JSON.stringify(key)}`);
|
|
8423
|
+
}
|
|
8424
|
+
return { family: "chat-sdk", parts: { adapter, threadId: `${adapter}:${rest}` } };
|
|
8425
|
+
}
|
|
8391
8426
|
case "schedule": {
|
|
8392
8427
|
if (parts.length !== 3) {
|
|
8393
8428
|
throw new Error(`context-key: malformed schedule key: ${JSON.stringify(key)}`);
|
|
@@ -12222,7 +12257,20 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
|
|
|
12222
12257
|
}
|
|
12223
12258
|
db = new Database(dbPath, { create: true });
|
|
12224
12259
|
console.log(`Database initialized at ${dbPath}`);
|
|
12225
|
-
const
|
|
12260
|
+
const opened = db;
|
|
12261
|
+
try {
|
|
12262
|
+
return bootOpenedDb(opened, dbPath, resolvePromptTemplate, autoEncryptLegacyPlaintextSecrets);
|
|
12263
|
+
} catch (error2) {
|
|
12264
|
+
if (db === opened) {
|
|
12265
|
+
db = null;
|
|
12266
|
+
try {
|
|
12267
|
+
opened.close();
|
|
12268
|
+
} catch {}
|
|
12269
|
+
}
|
|
12270
|
+
throw error2;
|
|
12271
|
+
}
|
|
12272
|
+
}
|
|
12273
|
+
function bootOpenedDb(database, dbPath, resolvePromptTemplate, autoEncryptLegacyPlaintextSecrets) {
|
|
12226
12274
|
database.run("PRAGMA journal_mode = WAL;");
|
|
12227
12275
|
database.run("PRAGMA busy_timeout = 5000;");
|
|
12228
12276
|
database.run("PRAGMA foreign_keys = ON;");
|
|
@@ -12244,20 +12292,20 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
|
|
|
12244
12292
|
}
|
|
12245
12293
|
ensureAgentProfileColumns(database);
|
|
12246
12294
|
try {
|
|
12247
|
-
const taskSchemaInfo =
|
|
12295
|
+
const taskSchemaInfo = database.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'agent_tasks'").get();
|
|
12248
12296
|
const schemaSql = taskSchemaInfo?.sql ?? "";
|
|
12249
12297
|
const hasStatusCheck = /status\s+TEXT\b[^,]*\bCHECK\s*\(\s*status\s+IN\s*\(/i.test(schemaSql);
|
|
12250
12298
|
const statusAllowsCancelled = /status\s+IN\s*\([^)]*'cancelled'/i.test(schemaSql);
|
|
12251
12299
|
const needsStatusMigration = hasStatusCheck && !statusAllowsCancelled;
|
|
12252
12300
|
if (needsStatusMigration) {
|
|
12253
12301
|
console.log("[Migration] Removing restrictive CHECK constraint on agent_tasks.status");
|
|
12254
|
-
|
|
12302
|
+
database.run("PRAGMA foreign_keys=off");
|
|
12255
12303
|
const rebuiltSchemaSql = schemaSql.replace(/^(CREATE TABLE\s+(?:IF NOT EXISTS\s+)?)(?:"agent_tasks"|agent_tasks)/i, "$1agent_tasks_new").replace(/\s+CHECK\s*\(\s*status\s+IN\s*\([^)]*\)\s*\)/i, "");
|
|
12256
12304
|
if (rebuiltSchemaSql === schemaSql || !/agent_tasks_new/i.test(rebuiltSchemaSql)) {
|
|
12257
12305
|
throw new Error("Could not derive agent_tasks schema without legacy status CHECK");
|
|
12258
12306
|
}
|
|
12259
|
-
const columns =
|
|
12260
|
-
const schemaObjects =
|
|
12307
|
+
const columns = database.prepare('PRAGMA table_info("agent_tasks")').all().map((column) => `"${column.name.replaceAll('"', '""')}"`).join(", ");
|
|
12308
|
+
const schemaObjects = database.prepare(`SELECT sql FROM sqlite_master
|
|
12261
12309
|
WHERE tbl_name = 'agent_tasks'
|
|
12262
12310
|
AND type IN ('index', 'trigger')
|
|
12263
12311
|
AND sql IS NOT NULL
|
|
@@ -12271,13 +12319,13 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
|
|
|
12271
12319
|
for (const sql of schemaObjects)
|
|
12272
12320
|
database.run(sql);
|
|
12273
12321
|
})();
|
|
12274
|
-
|
|
12322
|
+
database.run("PRAGMA foreign_keys=on");
|
|
12275
12323
|
console.log("[Migration] Successfully removed CHECK constraint on agent_tasks.status");
|
|
12276
12324
|
}
|
|
12277
12325
|
} catch (e) {
|
|
12278
12326
|
console.error("[Migration] Failed to update agent_tasks CHECK constraint:", e);
|
|
12279
12327
|
try {
|
|
12280
|
-
|
|
12328
|
+
database.run("PRAGMA foreign_keys=on");
|
|
12281
12329
|
} catch (cleanupError) {
|
|
12282
12330
|
console.error("[Migration] Failed to re-enable SQLite foreign_keys pragma:", cleanupError);
|
|
12283
12331
|
}
|
|
@@ -12318,7 +12366,7 @@ function initDb(dbPath = "./agent-swarm-db.sqlite") {
|
|
|
12318
12366
|
console.error(`[credential-bindings] FATAL: failed to migrate legacy credential binding blob: ${err.message}`);
|
|
12319
12367
|
throw err;
|
|
12320
12368
|
}
|
|
12321
|
-
return
|
|
12369
|
+
return database;
|
|
12322
12370
|
}
|
|
12323
12371
|
function getDb(path3) {
|
|
12324
12372
|
if (!db) {
|
|
@@ -12394,7 +12442,7 @@ var init_runtime = __esm(() => {
|
|
|
12394
12442
|
// src/telemetry-identity.ts
|
|
12395
12443
|
async function loadUserRole(userId) {
|
|
12396
12444
|
try {
|
|
12397
|
-
const { getUserGrant } = await import("./rbac-roles-
|
|
12445
|
+
const { getUserGrant } = await import("./rbac-roles-3mraey52.js");
|
|
12398
12446
|
const grant = await getUserGrant(userId);
|
|
12399
12447
|
const role = grant.grantsAll ? "admin" : "member";
|
|
12400
12448
|
if (roleCache.size >= ROLE_CACHE_LIMIT) {
|
|
@@ -12554,6 +12602,47 @@ var init_codex_auth_failure = __esm(() => {
|
|
|
12554
12602
|
];
|
|
12555
12603
|
});
|
|
12556
12604
|
|
|
12605
|
+
// src/utils/config-env-export.ts
|
|
12606
|
+
function isEnvExportRestrictedKey(key) {
|
|
12607
|
+
return ENV_EXPORT_RESTRICTED_KEYS.has(key.toUpperCase()) || CONNECTION_SECRET_KEY.test(key);
|
|
12608
|
+
}
|
|
12609
|
+
function defaultExportToEnv(key) {
|
|
12610
|
+
const upper = key.toUpperCase();
|
|
12611
|
+
return !isEnvExportRestrictedKey(key) && !ENV_EXPORT_DEFAULT_OFF_KEYS.has(upper) && !ENV_EXPORT_DEFAULT_OFF_PREFIXES.some((prefix) => upper.startsWith(prefix));
|
|
12612
|
+
}
|
|
12613
|
+
function envExportRestrictedError(key) {
|
|
12614
|
+
return `Key '${key}' is read only by the API server and can never be exported to agent env; store it with exportToEnv: false.`;
|
|
12615
|
+
}
|
|
12616
|
+
function effectiveExportToEnv(key, stored) {
|
|
12617
|
+
return stored && !isEnvExportRestrictedKey(key);
|
|
12618
|
+
}
|
|
12619
|
+
var ENV_EXPORT_RESTRICTED_KEYS, ENV_EXPORT_DEFAULT_OFF_KEYS, CONNECTION_SECRET_KEY, ENV_EXPORT_DEFAULT_OFF_PREFIXES;
|
|
12620
|
+
var init_config_env_export = __esm(() => {
|
|
12621
|
+
ENV_EXPORT_RESTRICTED_KEYS = new Set([
|
|
12622
|
+
"SLACK_APP_TOKEN",
|
|
12623
|
+
"SLACK_SIGNING_SECRET",
|
|
12624
|
+
"GITHUB_APP_PRIVATE_KEY",
|
|
12625
|
+
"GITHUB_WEBHOOK_SECRET",
|
|
12626
|
+
"GITLAB_WEBHOOK_SECRET",
|
|
12627
|
+
"LINEAR_CLIENT_SECRET",
|
|
12628
|
+
"LINEAR_SIGNING_SECRET",
|
|
12629
|
+
"JIRA_CLIENT_SECRET",
|
|
12630
|
+
"JIRA_WEBHOOK_TOKEN",
|
|
12631
|
+
"AZURE_DEVOPS_WEBHOOK_SECRET",
|
|
12632
|
+
"AGENTMAIL_WEBHOOK_SECRET",
|
|
12633
|
+
"API_AGENT_FS_API_KEY"
|
|
12634
|
+
]);
|
|
12635
|
+
ENV_EXPORT_DEFAULT_OFF_KEYS = new Set([
|
|
12636
|
+
"KAPSO_WEBHOOK_HMAC_SECRET",
|
|
12637
|
+
"SENTRY_TEST_APP_WEBHOOK_SECRET",
|
|
12638
|
+
"TELEMETRY_CH_AUTH",
|
|
12639
|
+
"HACK_AGENT_FS_ADMIN_KEY",
|
|
12640
|
+
"X_CLIENT_SECRET"
|
|
12641
|
+
]);
|
|
12642
|
+
CONNECTION_SECRET_KEY = /^connection\..+\.secret$/;
|
|
12643
|
+
ENV_EXPORT_DEFAULT_OFF_PREFIXES = ["CHAT_SDK_"];
|
|
12644
|
+
});
|
|
12645
|
+
|
|
12557
12646
|
// src/utils/config-secrets.ts
|
|
12558
12647
|
var MASKED_SECRET_VALUE = "********";
|
|
12559
12648
|
var init_config_secrets = () => {};
|
|
@@ -13436,6 +13525,7 @@ function rowToAgentTask(row) {
|
|
|
13436
13525
|
modelSource: row.modelSource ?? undefined,
|
|
13437
13526
|
modelAlias: row.modelAlias ?? undefined,
|
|
13438
13527
|
effort: ReasoningEffortSchema.safeParse(row.effort).success ? row.effort : undefined,
|
|
13528
|
+
resolvedEffort: ReasoningEffortSchema.safeParse(row.resolvedEffort).success ? row.resolvedEffort : undefined,
|
|
13439
13529
|
scheduleId: row.scheduleId ?? undefined,
|
|
13440
13530
|
workflowRunId: row.workflowRunId ?? undefined,
|
|
13441
13531
|
workflowRunStepId: row.workflowRunStepId ?? undefined,
|
|
@@ -13492,6 +13582,7 @@ function rowToAgentTaskSummary(row) {
|
|
|
13492
13582
|
modelSource: row.modelSource ?? undefined,
|
|
13493
13583
|
modelAlias: row.modelAlias ?? undefined,
|
|
13494
13584
|
effort: ReasoningEffortSchema.safeParse(row.effort).success ? row.effort : undefined,
|
|
13585
|
+
resolvedEffort: ReasoningEffortSchema.safeParse(row.resolvedEffort).success ? row.resolvedEffort : undefined,
|
|
13495
13586
|
provider: row.provider ?? undefined,
|
|
13496
13587
|
requestedByUserId: row.requestedByUserId ?? undefined,
|
|
13497
13588
|
progress: row.progress ?? undefined,
|
|
@@ -13864,6 +13955,78 @@ async function markFinalizedSlackRelaysDelivered() {
|
|
|
13864
13955
|
)`, [now, now]);
|
|
13865
13956
|
return result.changes;
|
|
13866
13957
|
}
|
|
13958
|
+
async function getPendingChatRelayTasks(now = Date.now(), limit2 = 200, adapters = []) {
|
|
13959
|
+
if (adapters.length === 0)
|
|
13960
|
+
return [];
|
|
13961
|
+
for (const adapter of adapters) {
|
|
13962
|
+
if (!/^[a-z]+$/.test(adapter))
|
|
13963
|
+
throw new Error(`invalid chat adapter name: ${adapter}`);
|
|
13964
|
+
}
|
|
13965
|
+
const adapterFilter = adapters.map(() => "task.contextKey GLOB ?").join(" OR ");
|
|
13966
|
+
const rows = await getDbClient().query(`SELECT task.*,
|
|
13967
|
+
obligation.created_at AS relay_created_at,
|
|
13968
|
+
obligation.last_error AS relay_last_error
|
|
13969
|
+
FROM chat_relay_obligations obligation
|
|
13970
|
+
JOIN agent_tasks task ON task.id = obligation.task_id
|
|
13971
|
+
WHERE obligation.delivered_at IS NULL
|
|
13972
|
+
AND obligation.given_up_at IS NULL
|
|
13973
|
+
AND task.status IN ('completed', 'failed', 'cancelled')
|
|
13974
|
+
AND (${adapterFilter})
|
|
13975
|
+
AND ${CHAT_RELAY_ELIGIBLE_SQL}
|
|
13976
|
+
ORDER BY obligation.last_attempt_at IS NOT NULL,
|
|
13977
|
+
obligation.last_attempt_at ASC,
|
|
13978
|
+
obligation.created_at ASC
|
|
13979
|
+
LIMIT ?`, [
|
|
13980
|
+
...adapters.map((adapter) => `task:chat-sdk:${adapter}:*`),
|
|
13981
|
+
new Date(now).toISOString(),
|
|
13982
|
+
limit2
|
|
13983
|
+
]);
|
|
13984
|
+
return rows.map((row) => ({
|
|
13985
|
+
task: rowToAgentTask(row),
|
|
13986
|
+
createdAt: row.relay_created_at,
|
|
13987
|
+
lastError: row.relay_last_error
|
|
13988
|
+
}));
|
|
13989
|
+
}
|
|
13990
|
+
async function giveUpStaleChatRelays(now, olderThanMs) {
|
|
13991
|
+
const at = new Date(now).toISOString();
|
|
13992
|
+
const cutoff = new Date(now - olderThanMs).toISOString();
|
|
13993
|
+
const result = await getDbClient().run(`UPDATE chat_relay_obligations
|
|
13994
|
+
SET given_up_at = ?, last_error = 'gave up: older than 24h', updated_at = ?
|
|
13995
|
+
WHERE delivered_at IS NULL AND given_up_at IS NULL AND created_at < ?`, [at, at, cutoff]);
|
|
13996
|
+
return result.changes;
|
|
13997
|
+
}
|
|
13998
|
+
async function markChatRelayAttempted(taskId, now = Date.now()) {
|
|
13999
|
+
const at = new Date(now).toISOString();
|
|
14000
|
+
const result = await getDbClient().run(`UPDATE chat_relay_obligations AS obligation
|
|
14001
|
+
SET attempt_count = attempt_count + 1,
|
|
14002
|
+
last_attempt_at = ?,
|
|
14003
|
+
updated_at = ?
|
|
14004
|
+
WHERE task_id = ?
|
|
14005
|
+
AND delivered_at IS NULL
|
|
14006
|
+
AND given_up_at IS NULL
|
|
14007
|
+
AND ${CHAT_RELAY_ELIGIBLE_SQL}`, [at, at, taskId, at]);
|
|
14008
|
+
return result.changes > 0;
|
|
14009
|
+
}
|
|
14010
|
+
async function recordChatRelayError(taskId, error2, now = Date.now()) {
|
|
14011
|
+
const result = await getDbClient().run(`UPDATE chat_relay_obligations
|
|
14012
|
+
SET last_error = ?, updated_at = ?
|
|
14013
|
+
WHERE task_id = ? AND delivered_at IS NULL`, [scrubSecrets(error2), new Date(now).toISOString(), taskId]);
|
|
14014
|
+
return result.changes > 0;
|
|
14015
|
+
}
|
|
14016
|
+
async function markChatRelayDelivered(taskId, now = Date.now()) {
|
|
14017
|
+
const at = new Date(now).toISOString();
|
|
14018
|
+
const result = await getDbClient().run(`UPDATE chat_relay_obligations
|
|
14019
|
+
SET delivered_at = ?, updated_at = ?
|
|
14020
|
+
WHERE task_id = ? AND delivered_at IS NULL`, [at, at, taskId]);
|
|
14021
|
+
return result.changes > 0;
|
|
14022
|
+
}
|
|
14023
|
+
async function markChatRelayGivenUp(taskId, error2, now = Date.now()) {
|
|
14024
|
+
const at = new Date(now).toISOString();
|
|
14025
|
+
const result = await getDbClient().run(`UPDATE chat_relay_obligations
|
|
14026
|
+
SET given_up_at = ?, last_error = ?, updated_at = ?
|
|
14027
|
+
WHERE task_id = ? AND delivered_at IS NULL AND given_up_at IS NULL`, [at, scrubSecrets(error2), at, taskId]);
|
|
14028
|
+
return result.changes > 0;
|
|
14029
|
+
}
|
|
13867
14030
|
async function getRecentlyFinishedWorkerTasks() {
|
|
13868
14031
|
const rows = await getDbClient().query(`SELECT t.* FROM agent_tasks t
|
|
13869
14032
|
LEFT JOIN agents a ON t.agentId = a.id
|
|
@@ -14035,6 +14198,36 @@ async function getLatestLeadTaskInThread(channelId, threadTs) {
|
|
|
14035
14198
|
LIMIT 1`, [channelId, threadTs]);
|
|
14036
14199
|
return row ? rowToAgentTask(row) : null;
|
|
14037
14200
|
}
|
|
14201
|
+
async function getAgentWorkingOnContextKey(contextKey, source2) {
|
|
14202
|
+
const taskRow = await getDbClient().get(`SELECT agentId FROM agent_tasks
|
|
14203
|
+
WHERE contextKey = ?
|
|
14204
|
+
AND (? IS NULL OR source = ?)
|
|
14205
|
+
ORDER BY createdAt DESC, rowid DESC
|
|
14206
|
+
LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
|
|
14207
|
+
if (taskRow?.agentId)
|
|
14208
|
+
return getAgentById(taskRow.agentId);
|
|
14209
|
+
return null;
|
|
14210
|
+
}
|
|
14211
|
+
async function getLatestActiveTaskByContextKey(contextKey, source2) {
|
|
14212
|
+
const row = await getDbClient().get(`SELECT * FROM agent_tasks
|
|
14213
|
+
WHERE contextKey = ?
|
|
14214
|
+
AND (? IS NULL OR source = ?)
|
|
14215
|
+
AND status IN ('in_progress', 'pending')
|
|
14216
|
+
ORDER BY createdAt DESC, rowid DESC
|
|
14217
|
+
LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
|
|
14218
|
+
return row ? rowToAgentTask(row) : null;
|
|
14219
|
+
}
|
|
14220
|
+
async function getLatestLeadTaskByContextKey(contextKey, source2) {
|
|
14221
|
+
const row = await getDbClient().get(`SELECT t.*
|
|
14222
|
+
FROM agent_tasks t
|
|
14223
|
+
JOIN agents a ON a.id = t.agentId
|
|
14224
|
+
WHERE t.contextKey = ?
|
|
14225
|
+
AND (? IS NULL OR t.source = ?)
|
|
14226
|
+
AND a.isLead = 1
|
|
14227
|
+
ORDER BY t.createdAt DESC, t.rowid DESC
|
|
14228
|
+
LIMIT 1`, [contextKey, source2 ?? null, source2 ?? null]);
|
|
14229
|
+
return row ? rowToAgentTask(row) : null;
|
|
14230
|
+
}
|
|
14038
14231
|
async function getMostRecentTaskInThread(channelId, threadTs) {
|
|
14039
14232
|
const row = await getDbClient().get(`SELECT * FROM agent_tasks
|
|
14040
14233
|
WHERE slackChannelId = ?
|
|
@@ -14076,11 +14269,15 @@ async function findRecentCancelledTaskInThread(channelId, threadTs, windowMinute
|
|
|
14076
14269
|
LIMIT 1`, [channelId, threadTs, since]);
|
|
14077
14270
|
return row ? rowToAgentTask(row) : null;
|
|
14078
14271
|
}
|
|
14079
|
-
var dependencies2, TASK_PREVIEW_LENGTH = 300, TASK_PREVIEW_BYTES, TASK_PREVIEW_SQL, taskPreviewDecoder, LIST_COLUMNS, NEVER_STARTED_TASK_STATUSES, findTaskByGitHub,
|
|
14272
|
+
var dependencies2, TASK_PREVIEW_LENGTH = 300, TASK_PREVIEW_BYTES, TASK_PREVIEW_SQL, taskPreviewDecoder, LIST_COLUMNS, NEVER_STARTED_TASK_STATUSES, findTaskByGitHub, CHAT_RELAY_ELIGIBLE_SQL = `(obligation.last_attempt_at IS NULL
|
|
14273
|
+
OR (julianday(?) - julianday(obligation.last_attempt_at)) * 86400000.0 >=
|
|
14274
|
+
CASE WHEN obligation.attempt_count >= 8 THEN 600000
|
|
14275
|
+
ELSE 3000 * (1 << obligation.attempt_count) END)`, LINEAR_TRACKER_CONTEXT_KEY_PREFIX = "task:trackers:linear:";
|
|
14080
14276
|
var init_read = __esm(() => {
|
|
14081
14277
|
init_key();
|
|
14082
14278
|
init_types();
|
|
14083
14279
|
init_provider_metadata();
|
|
14280
|
+
init_secret_scrubber();
|
|
14084
14281
|
init_agents();
|
|
14085
14282
|
init_runtime();
|
|
14086
14283
|
TASK_PREVIEW_BYTES = 4 * (TASK_PREVIEW_LENGTH + 1);
|
|
@@ -14094,6 +14291,7 @@ var init_read = __esm(() => {
|
|
|
14094
14291
|
agent_tasks.offeredTo, agent_tasks.acceptedAt, agent_tasks.parentTaskId,
|
|
14095
14292
|
agent_tasks.scheduleId, agent_tasks.model, agent_tasks.modelTier,
|
|
14096
14293
|
agent_tasks.resolvedModel, agent_tasks.modelSource, agent_tasks.modelAlias, agent_tasks.effort,
|
|
14294
|
+
agent_tasks.resolvedEffort,
|
|
14097
14295
|
agent_tasks.provider, agent_tasks.requestedByUserId, agent_tasks.progress,
|
|
14098
14296
|
agent_tasks.createdAt, agent_tasks.lastUpdatedAt, agent_tasks.finishedAt,
|
|
14099
14297
|
agent_tasks.peakContextPercent`,
|
|
@@ -14334,7 +14532,7 @@ async function startTask(taskId) {
|
|
|
14334
14532
|
}
|
|
14335
14533
|
return result;
|
|
14336
14534
|
}
|
|
14337
|
-
async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta) {
|
|
14535
|
+
async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, providerMeta, model, harnessVariant, harnessVariantMeta, resolvedEffort) {
|
|
14338
14536
|
const setClauses = ["claudeSessionId = ?", "lastUpdatedAt = ?"];
|
|
14339
14537
|
const params = [claudeSessionId, new Date().toISOString()];
|
|
14340
14538
|
if (provider !== undefined) {
|
|
@@ -14357,6 +14555,10 @@ async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, prov
|
|
|
14357
14555
|
setClauses.push("harnessVariantMeta = ?");
|
|
14358
14556
|
params.push(JSON.stringify(harnessVariantMeta));
|
|
14359
14557
|
}
|
|
14558
|
+
if (resolvedEffort !== undefined) {
|
|
14559
|
+
setClauses.push("resolvedEffort = ?");
|
|
14560
|
+
params.push(resolvedEffort);
|
|
14561
|
+
}
|
|
14360
14562
|
params.push(taskId);
|
|
14361
14563
|
const row = await getDbClient().get(`UPDATE agent_tasks SET ${setClauses.join(", ")} WHERE id = ? RETURNING *`, params);
|
|
14362
14564
|
return row ? rowToAgentTask(row) : null;
|
|
@@ -14430,7 +14632,7 @@ async function completeTask(id, output, options) {
|
|
|
14430
14632
|
});
|
|
14431
14633
|
} catch {}
|
|
14432
14634
|
getDbClient().afterCommit(() => {
|
|
14433
|
-
import("./event-bus-
|
|
14635
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14434
14636
|
workflowEventBus.emit("task.completed", {
|
|
14435
14637
|
taskId: id,
|
|
14436
14638
|
output: scrubbedOutput,
|
|
@@ -14485,7 +14687,7 @@ async function failTask(id, reason, opts = {}) {
|
|
|
14485
14687
|
});
|
|
14486
14688
|
} catch {}
|
|
14487
14689
|
getDbClient().afterCommit(() => {
|
|
14488
|
-
import("./event-bus-
|
|
14690
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14489
14691
|
workflowEventBus.emit("task.failed", {
|
|
14490
14692
|
taskId: id,
|
|
14491
14693
|
failureReason: scrubbedReason,
|
|
@@ -14567,7 +14769,7 @@ async function cancelTask(id, reason) {
|
|
|
14567
14769
|
});
|
|
14568
14770
|
} catch {}
|
|
14569
14771
|
getDbClient().afterCommit(() => {
|
|
14570
|
-
import("./event-bus-
|
|
14772
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14571
14773
|
workflowEventBus.emit("task.cancelled", {
|
|
14572
14774
|
taskId: id,
|
|
14573
14775
|
agentId: row.agentId,
|
|
@@ -14624,7 +14826,7 @@ async function supersedeTask(id, args) {
|
|
|
14624
14826
|
});
|
|
14625
14827
|
} catch {}
|
|
14626
14828
|
getDbClient().afterCommit(() => {
|
|
14627
|
-
import("./event-bus-
|
|
14829
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14628
14830
|
workflowEventBus.emit("task.superseded", {
|
|
14629
14831
|
taskId: id,
|
|
14630
14832
|
reason: args.reason,
|
|
@@ -14836,7 +15038,7 @@ async function updateTaskProgress(id, progress) {
|
|
|
14836
15038
|
});
|
|
14837
15039
|
} catch {}
|
|
14838
15040
|
getDbClient().afterCommit(() => {
|
|
14839
|
-
import("./event-bus-
|
|
15041
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14840
15042
|
workflowEventBus.emit("task.progress", {
|
|
14841
15043
|
taskId: id,
|
|
14842
15044
|
progress: scrubbedProgress,
|
|
@@ -14907,7 +15109,7 @@ function emitChildRunFinished(childRunId, parentStepId, status) {
|
|
|
14907
15109
|
}
|
|
14908
15110
|
function emitAfterCommit(childRunId, parentStepId) {
|
|
14909
15111
|
getDbClient().afterCommit(() => {
|
|
14910
|
-
import("./event-bus-
|
|
15112
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
14911
15113
|
workflowEventBus.emit("workflow.child.finished", { childRunId, parentStepId });
|
|
14912
15114
|
}).catch((err) => console.error("[db] workflow.child.finished event not emitted:", scrubSecrets(err instanceof Error ? err.message : String(err))));
|
|
14913
15115
|
});
|
|
@@ -14924,6 +15126,164 @@ var init_workflow_runs = __esm(() => {
|
|
|
14924
15126
|
]);
|
|
14925
15127
|
});
|
|
14926
15128
|
|
|
15129
|
+
// src/integrations/chat-sdk/schema.ts
|
|
15130
|
+
function forbiddenKeyIssues(value, ctx) {
|
|
15131
|
+
for (const key of FORBIDDEN_ADAPTER_KEYS) {
|
|
15132
|
+
if (key in value) {
|
|
15133
|
+
ctx.addIssue({
|
|
15134
|
+
code: "custom",
|
|
15135
|
+
path: [key],
|
|
15136
|
+
message: `${key} is not allowed in CHAT_SDK_ADAPTERS`
|
|
15137
|
+
});
|
|
15138
|
+
}
|
|
15139
|
+
}
|
|
15140
|
+
}
|
|
15141
|
+
function adapterSchema(shape) {
|
|
15142
|
+
return exports_external.looseObject({ ...shape, ...COMMON_SHAPE }).superRefine(forbiddenKeyIssues);
|
|
15143
|
+
}
|
|
15144
|
+
function draftShape(shape) {
|
|
15145
|
+
return Object.fromEntries(Object.entries(shape).map(([key, field]) => [key, field.optional()]));
|
|
15146
|
+
}
|
|
15147
|
+
function discordPublicKeyIssue(value, ctx) {
|
|
15148
|
+
if (typeof value.publicKey === "string" && !DISCORD_PUBLIC_KEY_PATTERN.test(value.publicKey)) {
|
|
15149
|
+
ctx.addIssue({
|
|
15150
|
+
code: "custom",
|
|
15151
|
+
path: ["publicKey"],
|
|
15152
|
+
message: "publicKey must be 64 hex characters (the application's Ed25519 public key)"
|
|
15153
|
+
});
|
|
15154
|
+
}
|
|
15155
|
+
}
|
|
15156
|
+
function valueAt(input, path3) {
|
|
15157
|
+
let current = input;
|
|
15158
|
+
for (const key of path3) {
|
|
15159
|
+
if (current === null || typeof current !== "object")
|
|
15160
|
+
return;
|
|
15161
|
+
current = current[key];
|
|
15162
|
+
}
|
|
15163
|
+
return current;
|
|
15164
|
+
}
|
|
15165
|
+
function firstIssueText(error2, prefix = "CHAT_SDK_ADAPTERS", input) {
|
|
15166
|
+
const issue = error2.issues[0];
|
|
15167
|
+
if (!issue)
|
|
15168
|
+
return `${prefix} is invalid`;
|
|
15169
|
+
const path3 = issue.path.length > 0 ? issue.path.join(".") : "(root)";
|
|
15170
|
+
const missing = input !== undefined && issue.path.length > 0 && valueAt(input, issue.path) === undefined;
|
|
15171
|
+
return `${prefix}.${path3}: ${missing ? "required" : issue.message}`;
|
|
15172
|
+
}
|
|
15173
|
+
function formFields(shape) {
|
|
15174
|
+
return Object.keys(shape).filter((key) => key !== "enabled");
|
|
15175
|
+
}
|
|
15176
|
+
function isAdapterEntryEnabled(entry) {
|
|
15177
|
+
return entry !== undefined && entry.enabled !== false;
|
|
15178
|
+
}
|
|
15179
|
+
function validateChatSdkAdaptersValue(value) {
|
|
15180
|
+
if (typeof value !== "string")
|
|
15181
|
+
return "CHAT_SDK_ADAPTERS must be a JSON string";
|
|
15182
|
+
let parsed;
|
|
15183
|
+
try {
|
|
15184
|
+
parsed = JSON.parse(value);
|
|
15185
|
+
} catch (error2) {
|
|
15186
|
+
return `CHAT_SDK_ADAPTERS is not valid JSON: ${error2 instanceof Error ? error2.message : String(error2)}`;
|
|
15187
|
+
}
|
|
15188
|
+
const result = ChatSdkAdaptersDraftSchema.safeParse(parsed);
|
|
15189
|
+
return result.success ? null : firstIssueText(result.error);
|
|
15190
|
+
}
|
|
15191
|
+
var CHAT_SDK_ADAPTER_NAMES, ConfigRefSchema, Str, FORBIDDEN_ADAPTER_KEYS, COMMON_SHAPE, TELEGRAM_SHAPE, SLACK_SHAPE, TelegramAdapterSchema, SlackAdapterSchema, DISCORD_PUBLIC_KEY_PATTERN, DISCORD_SHAPE, DiscordAdapterSchema, TEAMS_SHAPE, TeamsAdapterSchema, ChatSdkAdaptersSchema, CHAT_SDK_ADAPTER_SCHEMAS, ChatSdkAdaptersDraftSchema, CHAT_SDK_ADAPTER_FIELDS;
|
|
15192
|
+
var init_schema = __esm(() => {
|
|
15193
|
+
init_zod();
|
|
15194
|
+
CHAT_SDK_ADAPTER_NAMES = ["telegram", "slack", "discord", "teams"];
|
|
15195
|
+
ConfigRefSchema = exports_external.strictObject({ $config: exports_external.string().min(1) });
|
|
15196
|
+
Str = exports_external.union([exports_external.string().trim().min(1), ConfigRefSchema]);
|
|
15197
|
+
FORBIDDEN_ADAPTER_KEYS = [
|
|
15198
|
+
"apiUrl",
|
|
15199
|
+
"apiBaseUrl",
|
|
15200
|
+
"webhookVerifier",
|
|
15201
|
+
"allowUnverifiedWebhooks"
|
|
15202
|
+
];
|
|
15203
|
+
COMMON_SHAPE = {
|
|
15204
|
+
userName: exports_external.string().min(1).optional(),
|
|
15205
|
+
enabled: exports_external.boolean().optional()
|
|
15206
|
+
};
|
|
15207
|
+
TELEGRAM_SHAPE = {
|
|
15208
|
+
botToken: Str,
|
|
15209
|
+
secretToken: Str.optional(),
|
|
15210
|
+
mode: exports_external.enum(["webhook", "polling"]).default("webhook"),
|
|
15211
|
+
allowedUserIds: exports_external.array(exports_external.union([exports_external.string(), exports_external.number()])).optional()
|
|
15212
|
+
};
|
|
15213
|
+
SLACK_SHAPE = {
|
|
15214
|
+
botToken: Str,
|
|
15215
|
+
signingSecret: Str.optional(),
|
|
15216
|
+
appToken: Str.optional(),
|
|
15217
|
+
mode: exports_external.enum(["webhook", "socket"]).default("webhook")
|
|
15218
|
+
};
|
|
15219
|
+
TelegramAdapterSchema = adapterSchema(TELEGRAM_SHAPE);
|
|
15220
|
+
SlackAdapterSchema = adapterSchema(SLACK_SHAPE).superRefine((value, ctx) => {
|
|
15221
|
+
if (value.mode === "webhook" && value.signingSecret === undefined) {
|
|
15222
|
+
ctx.addIssue({
|
|
15223
|
+
code: "custom",
|
|
15224
|
+
path: ["signingSecret"],
|
|
15225
|
+
message: "signingSecret is required in webhook mode"
|
|
15226
|
+
});
|
|
15227
|
+
}
|
|
15228
|
+
if (value.mode === "socket" && value.appToken === undefined) {
|
|
15229
|
+
ctx.addIssue({
|
|
15230
|
+
code: "custom",
|
|
15231
|
+
path: ["appToken"],
|
|
15232
|
+
message: "appToken is required in socket mode"
|
|
15233
|
+
});
|
|
15234
|
+
}
|
|
15235
|
+
});
|
|
15236
|
+
DISCORD_PUBLIC_KEY_PATTERN = /^[0-9a-fA-F]{64}$/;
|
|
15237
|
+
DISCORD_SHAPE = {
|
|
15238
|
+
botToken: Str,
|
|
15239
|
+
publicKey: Str,
|
|
15240
|
+
applicationId: Str,
|
|
15241
|
+
respondToChannelIds: exports_external.array(exports_external.string()).optional(),
|
|
15242
|
+
respondToGlobalMentions: exports_external.boolean().optional(),
|
|
15243
|
+
mentionRoleIds: exports_external.array(exports_external.string()).optional()
|
|
15244
|
+
};
|
|
15245
|
+
DiscordAdapterSchema = adapterSchema(DISCORD_SHAPE).superRefine(discordPublicKeyIssue);
|
|
15246
|
+
TEAMS_SHAPE = {
|
|
15247
|
+
appId: Str,
|
|
15248
|
+
appPassword: Str,
|
|
15249
|
+
appTenantId: Str.optional(),
|
|
15250
|
+
appType: exports_external.enum(["MultiTenant", "SingleTenant"]).default("MultiTenant")
|
|
15251
|
+
};
|
|
15252
|
+
TeamsAdapterSchema = adapterSchema(TEAMS_SHAPE).superRefine((value, ctx) => {
|
|
15253
|
+
if (value.appType === "SingleTenant" && value.appTenantId === undefined) {
|
|
15254
|
+
ctx.addIssue({
|
|
15255
|
+
code: "custom",
|
|
15256
|
+
path: ["appTenantId"],
|
|
15257
|
+
message: "appTenantId is required for a SingleTenant app"
|
|
15258
|
+
});
|
|
15259
|
+
}
|
|
15260
|
+
});
|
|
15261
|
+
ChatSdkAdaptersSchema = exports_external.strictObject({
|
|
15262
|
+
telegram: TelegramAdapterSchema,
|
|
15263
|
+
slack: SlackAdapterSchema,
|
|
15264
|
+
discord: DiscordAdapterSchema,
|
|
15265
|
+
teams: TeamsAdapterSchema
|
|
15266
|
+
}).partial();
|
|
15267
|
+
CHAT_SDK_ADAPTER_SCHEMAS = {
|
|
15268
|
+
telegram: TelegramAdapterSchema,
|
|
15269
|
+
slack: SlackAdapterSchema,
|
|
15270
|
+
discord: DiscordAdapterSchema,
|
|
15271
|
+
teams: TeamsAdapterSchema
|
|
15272
|
+
};
|
|
15273
|
+
ChatSdkAdaptersDraftSchema = exports_external.strictObject({
|
|
15274
|
+
telegram: adapterSchema(draftShape(TELEGRAM_SHAPE)),
|
|
15275
|
+
slack: adapterSchema(draftShape(SLACK_SHAPE)),
|
|
15276
|
+
discord: adapterSchema(draftShape(DISCORD_SHAPE)).superRefine(discordPublicKeyIssue),
|
|
15277
|
+
teams: adapterSchema(draftShape(TEAMS_SHAPE))
|
|
15278
|
+
}).partial();
|
|
15279
|
+
CHAT_SDK_ADAPTER_FIELDS = {
|
|
15280
|
+
telegram: formFields(TelegramAdapterSchema.shape),
|
|
15281
|
+
slack: formFields(SlackAdapterSchema.shape),
|
|
15282
|
+
discord: formFields(DiscordAdapterSchema.shape),
|
|
15283
|
+
teams: formFields(TeamsAdapterSchema.shape)
|
|
15284
|
+
};
|
|
15285
|
+
});
|
|
15286
|
+
|
|
14927
15287
|
// src/scripts-runtime/executors/quickjs-pool-config.ts
|
|
14928
15288
|
function validateQuickJSPoolSize(value) {
|
|
14929
15289
|
const error2 = `Invalid SCRIPT_QUICKJS_POOL_SIZE (must be an integer between 1 and ${MAX_QUICKJS_POOL_SIZE})`;
|
|
@@ -15015,20 +15375,26 @@ var init_enabled_tools = () => {};
|
|
|
15015
15375
|
function parseTaskToolManifest(value) {
|
|
15016
15376
|
return taskToolManifestSchema.parse(JSON.parse(value));
|
|
15017
15377
|
}
|
|
15378
|
+
function isChatSdkTask(task) {
|
|
15379
|
+
return chatThreadOfContextKey(task.contextKey) !== null;
|
|
15380
|
+
}
|
|
15018
15381
|
function selectTaskTools(manifest, task) {
|
|
15019
15382
|
const fromSchedule = task.scheduleId && Object.hasOwn(manifest.schedules ?? {}, task.scheduleId) ? manifest.schedules?.[task.scheduleId] : undefined;
|
|
15020
15383
|
const fromType = task.taskType && Object.hasOwn(manifest.taskTypes ?? {}, task.taskType) ? manifest.taskTypes?.[task.taskType] : undefined;
|
|
15021
|
-
|
|
15384
|
+
const chatTask = isChatSdkTask(task);
|
|
15385
|
+
return [...new Set(fromSchedule ?? fromType ?? [])].filter((name) => (!name.startsWith("slack-") || Boolean(task.slackChannelId)) && (chatTask || !CHAT_TASK_ONLY_TOOLS.includes(name)));
|
|
15022
15386
|
}
|
|
15023
|
-
var toolNames, taskToolManifestSchema;
|
|
15387
|
+
var toolNames, taskToolManifestSchema, CHAT_TASK_ONLY_TOOLS;
|
|
15024
15388
|
var init_task_tool_manifest = __esm(() => {
|
|
15025
15389
|
init_zod();
|
|
15390
|
+
init_context_key();
|
|
15026
15391
|
init_tool_config();
|
|
15027
15392
|
toolNames = exports_external.array(exports_external.string().refine((name) => ALL_TOOLS.has(name), "Unknown swarm tool")).max(16);
|
|
15028
15393
|
taskToolManifestSchema = exports_external.strictObject({
|
|
15029
15394
|
taskTypes: exports_external.record(exports_external.string().min(1).max(50), toolNames).optional(),
|
|
15030
15395
|
schedules: exports_external.record(exports_external.uuid(), toolNames).optional()
|
|
15031
15396
|
});
|
|
15397
|
+
CHAT_TASK_ONLY_TOOLS = ["chat-reply"];
|
|
15032
15398
|
});
|
|
15033
15399
|
|
|
15034
15400
|
// src/be/model-tier-keys.ts
|
|
@@ -15068,6 +15434,12 @@ var init_model_tier_keys = __esm(() => {
|
|
|
15068
15434
|
});
|
|
15069
15435
|
|
|
15070
15436
|
// src/be/swarm-config-guard.ts
|
|
15437
|
+
function teamsSdkEnvKeysSql() {
|
|
15438
|
+
return TEAMS_SDK_ENV_KEYS.map((key) => `'${key}'`).join(", ");
|
|
15439
|
+
}
|
|
15440
|
+
function isApiOnlyConfigKey(key) {
|
|
15441
|
+
return API_ONLY_CONFIG_KEYS.has(key);
|
|
15442
|
+
}
|
|
15071
15443
|
function isInternalConfigKey(key) {
|
|
15072
15444
|
return INTERNAL_CONFIG_KEYS.has(key.toLowerCase());
|
|
15073
15445
|
}
|
|
@@ -15175,22 +15547,37 @@ function validateConfigValue(key, value) {
|
|
|
15175
15547
|
const validator = VALIDATED_KEYS[key.toUpperCase()];
|
|
15176
15548
|
return validator ? validator(value) : null;
|
|
15177
15549
|
}
|
|
15178
|
-
|
|
15550
|
+
function validateExportToEnv(key, exportToEnv) {
|
|
15551
|
+
return exportToEnv === true && isEnvExportRestrictedKey(key) ? envExportRestrictedError(key) : null;
|
|
15552
|
+
}
|
|
15553
|
+
var TEAMS_SDK_ENV_KEYS, RESERVED_KEYS, API_ONLY_CONFIG_KEYS, INTERNAL_CONFIG_KEYS, BOOLEAN_LITERALS, MAX_DB_RETENTION_DAYS = 1e6, DB_RETENTION_TUNING_BOUNDS, validateControllerTokenTtlDays, validateControllerGraceSec, VALIDATED_KEYS;
|
|
15179
15554
|
var init_swarm_config_guard = __esm(() => {
|
|
15555
|
+
init_schema();
|
|
15180
15556
|
init_quickjs_pool_config();
|
|
15181
15557
|
init_reaction_shortcode();
|
|
15182
15558
|
init_types();
|
|
15183
15559
|
init_api_drain();
|
|
15560
|
+
init_config_env_export();
|
|
15184
15561
|
init_enabled_tools();
|
|
15185
15562
|
init_org_website();
|
|
15186
15563
|
init_task_tool_manifest();
|
|
15187
15564
|
init_model_tier_keys();
|
|
15565
|
+
TEAMS_SDK_ENV_KEYS = [
|
|
15566
|
+
"SERVICE_URL",
|
|
15567
|
+
"TENANT_ID",
|
|
15568
|
+
"CLIENT_ID",
|
|
15569
|
+
"CLIENT_SECRET",
|
|
15570
|
+
"MANAGED_IDENTITY_CLIENT_ID",
|
|
15571
|
+
"CLOUD"
|
|
15572
|
+
];
|
|
15188
15573
|
RESERVED_KEYS = new Set([
|
|
15189
15574
|
"API_KEY",
|
|
15190
15575
|
"SECRETS_ENCRYPTION_KEY",
|
|
15191
15576
|
"CORS_ALLOW_ANY_ORIGIN",
|
|
15192
|
-
"EXTENSION_ALLOW_LEAD_ACTIVATION"
|
|
15577
|
+
"EXTENSION_ALLOW_LEAD_ACTIVATION",
|
|
15578
|
+
"CHAT_SDK_API_URL_OVERRIDES"
|
|
15193
15579
|
]);
|
|
15580
|
+
API_ONLY_CONFIG_KEYS = new Set(["API_AGENT_FS_API_KEY", "SLACK_SIGNING_SECRET"]);
|
|
15194
15581
|
INTERNAL_CONFIG_KEYS = new Set(["onboarding_state", "runtime_owner_id"]);
|
|
15195
15582
|
BOOLEAN_LITERALS = ["true", "false", "1", "0"];
|
|
15196
15583
|
DB_RETENTION_TUNING_BOUNDS = {
|
|
@@ -15222,6 +15609,7 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
15222
15609
|
], 1),
|
|
15223
15610
|
...integerValidators(["RUNTIME_SOCKET_GRACE_SEC"], 0),
|
|
15224
15611
|
...integerValidators(["RUNTIME_WAKE_GRACE_SEC", "RUNTIME_WAKE_REROUTE_SEC", "RUNTIME_ROUTING_INTERVAL_MS"], 0),
|
|
15612
|
+
CHAT_SDK_ADAPTERS: validateChatSdkAdaptersValue,
|
|
15225
15613
|
TASK_TOOL_MANIFESTS: (value) => {
|
|
15226
15614
|
try {
|
|
15227
15615
|
if (typeof value !== "string")
|
|
@@ -15319,6 +15707,7 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
15319
15707
|
"OPENROUTER_APP_ATTRIBUTION",
|
|
15320
15708
|
"CURSOR_NATIVE_SYSTEM_PROMPT",
|
|
15321
15709
|
"SLACK_DISABLE",
|
|
15710
|
+
"CHAT_SDK_ENABLED",
|
|
15322
15711
|
"SLACK_RENDER_V2",
|
|
15323
15712
|
"SLACK_RENDER_V2_DELEGATION",
|
|
15324
15713
|
"SLACK_BLOCK_EXTERNAL_CHANNELS",
|
|
@@ -15393,6 +15782,7 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
15393
15782
|
...integerValidators(["MODEL_LATEST_SOAK_DAYS"], 0),
|
|
15394
15783
|
...integerValidators(["APPROVAL_REQUEST_AUTO_CANCELLATION_DAYS"], 0),
|
|
15395
15784
|
...boundedIntegerValidators(["API_DRAIN_MAX_MS"], 0, API_DRAIN_MAX_MS_LIMIT),
|
|
15785
|
+
...boundedIntegerValidators(["CHAT_SDK_BUFFER_MS"], 1, 600000),
|
|
15396
15786
|
...boundedIntegerValidators(["CONTEXT_PREAMBLE_MAX_TOKENS"], 100, 20000),
|
|
15397
15787
|
MEMORY_MIN_SIMILARITY: (value) => validateFloatRange("MEMORY_MIN_SIMILARITY", value, 0, 1, "between 0 and 1 inclusive"),
|
|
15398
15788
|
MEMORY_ACCESS_BOOST_MAX: (value) => validateFloatRange("MEMORY_ACCESS_BOOST_MAX", value, 1, Number.POSITIVE_INFINITY, "a number >= 1")
|
|
@@ -16605,7 +16995,7 @@ async function loadSecretRegistry() {
|
|
|
16605
16995
|
result.failed += 1;
|
|
16606
16996
|
}
|
|
16607
16997
|
try {
|
|
16608
|
-
const { loadRuntimeControllerSecrets } = await import("./db-
|
|
16998
|
+
const { loadRuntimeControllerSecrets } = await import("./db-k8ankj20.js");
|
|
16609
16999
|
const loaded = await loadRuntimeControllerSecrets();
|
|
16610
17000
|
result.runtimeController = loaded.count;
|
|
16611
17001
|
result.failed += loaded.failed;
|
|
@@ -17028,6 +17418,7 @@ __export(exports_db, {
|
|
|
17028
17418
|
getAgentSkills: () => getAgentSkills,
|
|
17029
17419
|
getAgentStatusCounts: () => getAgentStatusCounts,
|
|
17030
17420
|
getAgentWithTasks: () => getAgentWithTasks,
|
|
17421
|
+
getAgentWorkingOnContextKey: () => getAgentWorkingOnContextKey,
|
|
17031
17422
|
getAgentWorkingOnThread: () => getAgentWorkingOnThread,
|
|
17032
17423
|
getAllAgentMailInboxMappings: () => getAllAgentMailInboxMappings,
|
|
17033
17424
|
getAllAgents: () => getAllAgents,
|
|
@@ -17089,8 +17480,10 @@ __export(exports_db, {
|
|
|
17089
17480
|
getLastReadAt: () => getLastReadAt,
|
|
17090
17481
|
getLastRunStart: () => getLastRunStart,
|
|
17091
17482
|
getLastSuccessfulRun: () => getLastSuccessfulRun,
|
|
17483
|
+
getLatestActiveTaskByContextKey: () => getLatestActiveTaskByContextKey,
|
|
17092
17484
|
getLatestActiveTaskInThread: () => getLatestActiveTaskInThread,
|
|
17093
17485
|
getLatestContextVersion: () => getLatestContextVersion,
|
|
17486
|
+
getLatestLeadTaskByContextKey: () => getLatestLeadTaskByContextKey,
|
|
17094
17487
|
getLatestLeadTaskInThread: () => getLatestLeadTaskInThread,
|
|
17095
17488
|
getLatestPageBySlug: () => getLatestPageBySlug,
|
|
17096
17489
|
getLatestScriptRunStepTaskByContextKey: () => getLatestScriptRunStepTaskByContextKey,
|
|
@@ -17120,6 +17513,7 @@ __export(exports_db, {
|
|
|
17120
17513
|
getPageVersions: () => getPageVersions,
|
|
17121
17514
|
getPausedTasksForAgent: () => getPausedTasksForAgent,
|
|
17122
17515
|
getPendingApprovalVoteState: () => getPendingApprovalVoteState,
|
|
17516
|
+
getPendingChatRelayTasks: () => getPendingChatRelayTasks,
|
|
17123
17517
|
getPendingEventWaitNames: () => getPendingEventWaitNames,
|
|
17124
17518
|
getPendingSlackRelayTasks: () => getPendingSlackRelayTasks,
|
|
17125
17519
|
getPendingSteeringForAgent: () => getPendingSteeringForAgent,
|
|
@@ -17217,6 +17611,7 @@ __export(exports_db, {
|
|
|
17217
17611
|
getWorkflowVersion: () => getWorkflowVersion,
|
|
17218
17612
|
getWorkflowVersions: () => getWorkflowVersions,
|
|
17219
17613
|
getWorkflowsByScheduleId: () => getWorkflowsByScheduleId,
|
|
17614
|
+
giveUpStaleChatRelays: () => giveUpStaleChatRelays,
|
|
17220
17615
|
hasBudgetRefusalNotificationToday: () => hasBudgetRefusalNotificationToday,
|
|
17221
17616
|
hasCapacity: () => hasCapacity,
|
|
17222
17617
|
hasFirstCompletedTask: () => hasFirstCompletedTask,
|
|
@@ -17268,6 +17663,9 @@ __export(exports_db, {
|
|
|
17268
17663
|
listWorkflowRuns: () => listWorkflowRuns,
|
|
17269
17664
|
listWorkflowRunsPage: () => listWorkflowRunsPage,
|
|
17270
17665
|
listWorkflows: () => listWorkflows,
|
|
17666
|
+
markChatRelayAttempted: () => markChatRelayAttempted,
|
|
17667
|
+
markChatRelayDelivered: () => markChatRelayDelivered,
|
|
17668
|
+
markChatRelayGivenUp: () => markChatRelayGivenUp,
|
|
17271
17669
|
markFinalizedSlackRelaysDelivered: () => markFinalizedSlackRelaysDelivered,
|
|
17272
17670
|
markInboxMessageDelegated: () => markInboxMessageDelegated,
|
|
17273
17671
|
markInboxMessageRead: () => markInboxMessageRead,
|
|
@@ -17296,6 +17694,7 @@ __export(exports_db, {
|
|
|
17296
17694
|
reassociateSessionLogs: () => reassociateSessionLogs,
|
|
17297
17695
|
recordApprovalVotes: () => recordApprovalVotes,
|
|
17298
17696
|
recordBudgetRefusalNotification: () => recordBudgetRefusalNotification,
|
|
17697
|
+
recordChatRelayError: () => recordChatRelayError,
|
|
17299
17698
|
recordInlineScriptRun: () => recordInlineScriptRun,
|
|
17300
17699
|
recordKeyAuthFailure: () => recordKeyAuthFailure,
|
|
17301
17700
|
recordKeyRateLimitWindows: () => recordKeyRateLimitWindows,
|
|
@@ -18903,7 +19302,7 @@ async function createTaskExtended(task, options) {
|
|
|
18903
19302
|
priority: row.priority
|
|
18904
19303
|
}, (task2) => task2 !== null, row.requestedByUserId);
|
|
18905
19304
|
getDbClient().afterCommit(() => {
|
|
18906
|
-
import("./event-bus-
|
|
19305
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => {
|
|
18907
19306
|
workflowEventBus.emit("task.created", {
|
|
18908
19307
|
taskId: row.id,
|
|
18909
19308
|
task: row.task,
|
|
@@ -18985,7 +19384,7 @@ async function releaseTask(taskId, wakeSnapshot) {
|
|
|
18985
19384
|
} catch {}
|
|
18986
19385
|
if (isRuntimePoolsEnabled() && !wakeSnapshot)
|
|
18987
19386
|
getDbClient().afterCommit(() => {
|
|
18988
|
-
import("./event-bus-
|
|
19387
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
|
|
18989
19388
|
});
|
|
18990
19389
|
}
|
|
18991
19390
|
return row ? rowToAgentTask(row) : null;
|
|
@@ -19055,7 +19454,7 @@ async function rejectTask(taskId, agentId, reason) {
|
|
|
19055
19454
|
} catch {}
|
|
19056
19455
|
if (isRuntimePoolsEnabled())
|
|
19057
19456
|
getDbClient().afterCommit(() => {
|
|
19058
|
-
import("./event-bus-
|
|
19457
|
+
import("./event-bus-6axnngdj.js").then(({ workflowEventBus }) => workflowEventBus.emit("task.unassigned", { taskId })).catch((error2) => console.error("[db] Routing event failed:", scrubSecrets(String(error2))));
|
|
19059
19458
|
});
|
|
19060
19459
|
}
|
|
19061
19460
|
return row ? rowToAgentTask(row) : null;
|
|
@@ -20733,7 +21132,8 @@ function rowToSwarmConfig(row) {
|
|
|
20733
21132
|
description: row.description ?? null,
|
|
20734
21133
|
createdAt: row.createdAt,
|
|
20735
21134
|
lastUpdatedAt: row.lastUpdatedAt,
|
|
20736
|
-
encrypted: isEncrypted
|
|
21135
|
+
encrypted: isEncrypted,
|
|
21136
|
+
exportToEnv: effectiveExportToEnv(row.key, row.exportToEnv !== 0)
|
|
20737
21137
|
};
|
|
20738
21138
|
}
|
|
20739
21139
|
let value = row.value;
|
|
@@ -20755,7 +21155,8 @@ function rowToSwarmConfig(row) {
|
|
|
20755
21155
|
description: row.description ?? null,
|
|
20756
21156
|
createdAt: row.createdAt,
|
|
20757
21157
|
lastUpdatedAt: row.lastUpdatedAt,
|
|
20758
|
-
encrypted: isEncrypted
|
|
21158
|
+
encrypted: isEncrypted,
|
|
21159
|
+
exportToEnv: effectiveExportToEnv(row.key, row.exportToEnv !== 0)
|
|
20759
21160
|
};
|
|
20760
21161
|
}
|
|
20761
21162
|
function autoEncryptLegacyPlaintextSecrets(database, dbPath, options = {}) {
|
|
@@ -20856,7 +21257,7 @@ async function getSwarmConfigs(filters) {
|
|
|
20856
21257
|
async function getInjectableGlobalConfigs() {
|
|
20857
21258
|
const rows = await getDbClient().query(`SELECT * FROM swarm_config
|
|
20858
21259
|
WHERE scope = 'global'
|
|
20859
|
-
AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN', 'EXTENSION_ALLOW_LEAD_ACTIVATION')
|
|
21260
|
+
AND UPPER(key) NOT IN ('API_KEY', 'SECRETS_ENCRYPTION_KEY', 'CORS_ALLOW_ANY_ORIGIN', 'EXTENSION_ALLOW_LEAD_ACTIVATION', 'CHAT_SDK_API_URL_OVERRIDES', ${teamsSdkEnvKeysSql()})
|
|
20860
21261
|
ORDER BY key ASC`);
|
|
20861
21262
|
return rows.filter((row) => !isInternalConfigKey(row.key)).map(rowToSwarmConfig);
|
|
20862
21263
|
}
|
|
@@ -20883,6 +21284,10 @@ async function upsertSwarmConfig(data) {
|
|
|
20883
21284
|
if (isReservedConfigKey(data.key)) {
|
|
20884
21285
|
throw reservedKeyError(data.key);
|
|
20885
21286
|
}
|
|
21287
|
+
if (data.exportToEnv === true && isEnvExportRestrictedKey(data.key)) {
|
|
21288
|
+
throw new Error(envExportRestrictedError(data.key));
|
|
21289
|
+
}
|
|
21290
|
+
const restricted = isEnvExportRestrictedKey(data.key);
|
|
20886
21291
|
const now = new Date().toISOString();
|
|
20887
21292
|
const scopeId = data.scope === "global" ? null : data.scopeId ?? null;
|
|
20888
21293
|
const isSecret = data.isSecret ? 1 : 0;
|
|
@@ -20893,12 +21298,24 @@ async function upsertSwarmConfig(data) {
|
|
|
20893
21298
|
const row = await getDbClient().transaction(async () => {
|
|
20894
21299
|
const existing = scopeId === null ? await getDbClient().get("SELECT id FROM swarm_config WHERE scope = ? AND scopeId IS NULL AND key = ?", [data.scope, data.key]) : await getDbClient().get("SELECT id FROM swarm_config WHERE scope = ? AND scopeId = ? AND key = ?", [data.scope, scopeId, data.key]);
|
|
20895
21300
|
if (existing) {
|
|
20896
|
-
return await getDbClient().get(`UPDATE swarm_config SET value = ?, isSecret = ?, envPath = ?, description = ?, encrypted = ?, lastUpdatedAt =
|
|
20897
|
-
|
|
21301
|
+
return await getDbClient().get(`UPDATE swarm_config SET value = ?, isSecret = ?, envPath = ?, description = ?, encrypted = ?, lastUpdatedAt = ?,
|
|
21302
|
+
exportToEnv = CASE WHEN ? THEN 0 ELSE COALESCE(?, exportToEnv) END
|
|
21303
|
+
WHERE id = ? RETURNING *`, [
|
|
21304
|
+
storedValue,
|
|
21305
|
+
isSecret,
|
|
21306
|
+
envPath,
|
|
21307
|
+
description,
|
|
21308
|
+
encryptedFlag,
|
|
21309
|
+
now,
|
|
21310
|
+
restricted ? 1 : 0,
|
|
21311
|
+
data.exportToEnv === undefined ? null : data.exportToEnv ? 1 : 0,
|
|
21312
|
+
existing.id
|
|
21313
|
+
]);
|
|
20898
21314
|
}
|
|
20899
21315
|
const id = crypto.randomUUID();
|
|
20900
|
-
|
|
20901
|
-
|
|
21316
|
+
const exportToEnv = restricted ? 0 : data.exportToEnv ?? defaultExportToEnv(data.key) ? 1 : 0;
|
|
21317
|
+
return await getDbClient().get(`INSERT INTO swarm_config (id, scope, scopeId, key, value, isSecret, envPath, description, createdAt, lastUpdatedAt, encrypted, exportToEnv)
|
|
21318
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING *`, [
|
|
20902
21319
|
id,
|
|
20903
21320
|
data.scope,
|
|
20904
21321
|
scopeId,
|
|
@@ -20909,7 +21326,8 @@ async function upsertSwarmConfig(data) {
|
|
|
20909
21326
|
description,
|
|
20910
21327
|
now,
|
|
20911
21328
|
now,
|
|
20912
|
-
encryptedFlag
|
|
21329
|
+
encryptedFlag,
|
|
21330
|
+
exportToEnv
|
|
20913
21331
|
]);
|
|
20914
21332
|
});
|
|
20915
21333
|
if (!row)
|
|
@@ -24982,6 +25400,7 @@ var init_db2 = __esm(() => {
|
|
|
24982
25400
|
init_telemetry_trigger();
|
|
24983
25401
|
init_types();
|
|
24984
25402
|
init_codex_auth_failure();
|
|
25403
|
+
init_config_env_export();
|
|
24985
25404
|
init_config_secrets();
|
|
24986
25405
|
init_credentials();
|
|
24987
25406
|
init_github_pull_request();
|
|
@@ -26191,4 +26610,4 @@ function getMemoryStore() {
|
|
|
26191
26610
|
var embeddingProvider2 = null, memoryStore = null;
|
|
26192
26611
|
var init_memory = () => {};
|
|
26193
26612
|
|
|
26194
|
-
export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, azureDevOpsWorkItemContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, init_catalog, catalog_default, mapTriggerSurface, init_telemetry_context, TELEMETRY_PROXY_ORIGIN, normalizeOrgWebsite, orgLogoUrl, isFilledOrgLogoUrl, init_org_website, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, setTelemetryIngestObserver, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, track, trackRelayed, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, MASKED_SECRET_VALUE, init_config_secrets, HeartbeatExpiryError, init_heartbeat_expiry, isRuntimePoolsEnabled, init_runtime_pools_flag, normalizeDate, normalizeDateRequired, init_date_utils, rowToAgent, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, init_agents, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, rowToAgentTask, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, init_read, onTaskStarted, init_task_lifecycle_events, channelTopic, addWorkerSubscription, removeWorkerSubscription, listSubscribedWorkerAgents, init_channels, publishWorkerNudge, init_worker_nudges, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, getChildWorkflowRunId, getWorkflowRunParent, getWorkflowRunLineage, getSettledChildRunParentSteps, init_workflow_runs, resolveQuickJSPoolSize, init_quickjs_pool_config, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseEnabledTools, init_enabled_tools, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateRuntimeTokenTtlHours, validateControllerTokenTtlDays, validateControllerGraceSec, validateConfigValue, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };
|
|
26613
|
+
export { slackContextKey, chatSdkContextKey, chatThreadOfContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, azureDevOpsWorkItemContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, init_catalog, catalog_default, mapTriggerSurface, init_telemetry_context, TELEMETRY_PROXY_ORIGIN, normalizeOrgWebsite, orgLogoUrl, isFilledOrgLogoUrl, init_org_website, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, getCurrentRequestUserId, init_request_auth_context, setTelemetryIngestObserver, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, setTelemetryRoleResolver, isTelemetryReady, track, trackRelayed, telemetry, emitIntegrationConnected, init_telemetry, auditAssetKeys, init_asset_key_audit, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, isInTransaction, init_db_client, breaksJsonValidity, scrubJsonValue, init_scrub_json, sealJson, init_sealed_json, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, init_templates3 as init_templates1, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, init_runtime, cachedUserRole, configureOrgDomainPersistence, recomputeOrgDomain, scheduleOrgDomainRecompute, init_telemetry_identity, resolveTriggerSurface, emitTaskTelemetry, init_telemetry_trigger, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, isEnvExportRestrictedKey, init_config_env_export, MASKED_SECRET_VALUE, init_config_secrets, HeartbeatExpiryError, init_heartbeat_expiry, isRuntimePoolsEnabled, init_runtime_pools_flag, normalizeDate, normalizeDateRequired, init_date_utils, rowToAgent, updateAgentCredentialState, updateAgentCredentialMissing, createAgent, getAgentById, EXTENSION_AGENT_ROLE, NOT_EXTENSION_AGENT_SQL, isExtensionAgent, extensionAgentAssignmentError, ReservedAgentRoleError, reservedRoleViolation, ExtensionAgentAssignmentError, getAllAgents, getAgentStatusCounts, getLeadAgent, updateAgentStatus, updateAgentMaxTasks, updateAgentProvider, setAgentHarnessProvider, updateAgentCredStatus, listAgentsWithCredStatusByProvider, getAgentHarnessProviders, updateAgentActivity, MAX_EMPTY_POLLS, incrementEmptyPollCount, resetEmptyPollCount, shouldBlockPolling, deleteAgent, getActiveTaskCount, hasCapacity, getRemainingCapacity, updateAgentStatusFromCapacity, isPoolAffinityEnforcementEnabled, buildRoutingAffinityFromAgent, isAgentEligibleForTask, getAgentDailyTaskCounts, init_agents, listApprovalRequestSummaries, getPendingApprovalVoteState, recordApprovalVotes, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, rowToAgentTask, getTaskById, getChildTasks, hasNonTerminalResumeChild, getSupersededTasksWithoutResume, getSupersededTasksWithUnsettledDependents, hasNonTerminalRerouteDecisionChild, getTasksByAgentId, getAgentCurrentTask, getTasksByStatus, findTaskByVcs, findTaskByGitHub, getAllTasks, getTasksCount, getTaskStats, getCompletedSlackTasks, getPendingSlackRelayTasks, markSlackRelayAttempted, markSlackRelayDelivered, markFinalizedSlackRelaysDelivered, getPendingChatRelayTasks, giveUpStaleChatRelays, markChatRelayAttempted, recordChatRelayError, markChatRelayDelivered, markChatRelayGivenUp, getRecentlyFinishedWorkerTasks, markTasksNotified, resetTasksNotified, getInProgressSlackTasks, getSlackTasksMissingTree, getInProgressTasksByContextKey, isLinearTrackerContextKey, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getAgentWorkingOnContextKey, getLatestActiveTaskByContextKey, getLatestLeadTaskByContextKey, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, init_read, onTaskStarted, init_task_lifecycle_events, channelTopic, addWorkerSubscription, removeWorkerSubscription, listSubscribedWorkerAgents, init_channels, publishWorkerNudge, init_worker_nudges, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, getChildWorkflowRunId, getWorkflowRunParent, getWorkflowRunLineage, getSettledChildRunParentSteps, init_workflow_runs, CHAT_SDK_ADAPTER_NAMES, CHAT_SDK_ADAPTER_SCHEMAS, ChatSdkAdaptersDraftSchema, firstIssueText, isAdapterEntryEnabled, init_schema, resolveQuickJSPoolSize, init_quickjs_pool_config, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, API_DRAINING_HEADER, API_DRAIN_MAX_MS_LIMIT, isApiDrainingResponse, init_api_drain, parseEnabledTools, init_enabled_tools, parseTaskToolManifest, CHAT_TASK_ONLY_TOOLS, isChatSdkTask, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isApiOnlyConfigKey, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateRuntimeTokenTtlHours, validateControllerTokenTtlDays, validateControllerGraceSec, validateConfigValue, validateExportToEnv, init_swarm_config_guard, getDefaultAuthorizationIdForProvider, getOAuthApp, getOAuthAppById, getOAuthAppIdByProvider, createOAuthApp, updateOAuthAppById, upsertOAuthApp, listAuthorizationsForApp, getAuthorizationById, upsertAuthorization, updateAuthorizationTokens, updateAuthorizationIdentity, deleteAuthorizationById, deleteAuthorizationsForApp, createOAuthPending, consumeOAuthPending, gcOAuthPending, markAuthorizationRefreshFailed, getOAuthTokens, listAuthorizationSweepRows, listKeepAliveAuthorizations, deleteOAuthTokens, acquireOAuthRefreshLock, releaseOAuthRefreshLock, init_oauth, OpenAI, init_openai, CANDIDATE_SET_MULTIPLIER, isGraphExpansionEnabled, EMBEDDING_DIMENSIONS, init_constants, LONGTERM_ROOT, MEMORY_KEY_PATTERN, MEMORY_KEY_PATTERN_MESSAGE, MEMORY_KEY_MAX_LENGTH, isLongtermKey, longtermKeyError, isConsolidatedKey, consolidatedKeyMessage, resolveStoreKey, init_key_paths, computeScore, rerank, init_reranker, rowToCandidate, init_sqlite_store, getEmbeddingProvider, resetEmbeddingProvider, getMemoryStore, init_memory, embeddingProvider, embedScript, searchScripts, reembedAllScripts, init_embeddings2 as init_embeddings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, init_db, oauthSecretName, registerStoredSecret, loadSecretRegistry, init_secret_registry, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, WorkflowReplayStateError, init_workflow_replay, SESSION_ACTIVITY_REFRESH_MIN_INTERVAL_MS, refreshActiveSessionOnActivity, recordKeySeatMismatch, getScriptRunExecutionArgs, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, listSlackThreadsAwaitingHuman, isSlackThreadAwaitingHuman, markTaskSlackReplySent, setSlackMessageTracking, updateTaskVcs, insertTaskAttachment, recordTaskPullRequestAttachments, getAssetKeyMappingByProvider, upsertAssetKeyMapping, getAssetKeyMapping, listAssetSummaries, moveAssetKey, deleteTaskAttachment, replaceTaskAttachment, getTaskAttachments, createSteeringMessage, getSteeringMessagesForTask, getSteeringMessageById, getPendingSteeringForTask, getPendingSteeringForAgent, markSteeringDelivered, markSteeringHandled, markSteeringPromoted, cancelPendingSteeringForTask, hasPendingSteering, getAgentWithTasks, getAllAgentsWithTasks, createLogEntry, getLogsByAgentId, getLogsByTaskId, getLogsByTaskIdAndEventType, getLogsByTaskIdChronological, getLogsByEventType, getAllLogs, findRecentSimilarTasks, createTaskExtended, claimTask, releaseTask, acceptTask, rejectTask, moveTaskToBacklog, moveTaskFromBacklog, promoteDraftTask, refreshDraftTaskLease, promoteAbandonedDraftTasks, releaseStaleReviewingTasks, releaseStaleOfferedTasksForOfflineAgents, getOfferedTasksForAgent, claimOfferedTask, getUnassignedTasksCount, getUnassignedTaskIds, getUnassignedTaskIdsForAgent, checkDependencies, getDependentTasks, cascadeFailDependents, updateAgentProfile, updateAgentName, createChannel, getMessageById, getChannelById, getChannelByName, getAllChannels, deleteChannel, postMessage, getChannelMessages, updateReadState, getLastReadAt, getUnreadMessages, getMentionsForAgent, getInboxSummary, claimMentions, releaseMentionProcessing, releaseStaleMentionProcessing, createService, getServiceById, getServiceByAgentAndName, getServicesByAgentId, getAllServices, updateServiceStatus, deleteService, upsertService, deleteServicesByAgentId, createSessionLogs, getSessionLogsByTaskId, getSessionLogsBySession, createSessionCost, getSessionCostsByTaskId, getSessionCostsByAgentId, getAllSessionCosts, getSessionCostsFiltered, UNATTRIBUTED_USER_ID, getSessionCostSummary, getAttributionByPerson, getDashboardCostSummary, createInboxMessage, getInboxMessageById, getUnreadInboxMessages, claimInboxMessages, markInboxMessageRead, markInboxMessageResponded, markInboxMessageDelegated, releaseStaleProcessingInbox, getConcurrentContext, getScheduledTasks, getScheduledTaskById, getScheduledTaskByName, createScheduledTask, updateScheduledTask, deleteScheduledTask, getDueScheduledTasks, autoEncryptLegacyPlaintextSecrets, maskSecrets, getSwarmConfigs, getInjectableGlobalConfigs, getSwarmConfigById, getSwarmConfigLookupById, upsertSwarmConfig, emitBuiltInIntegrationConnectedOnce, deleteSwarmConfig, deleteSwarmConfigByKey, getResolvedConfig, getSwarmRepos, getSwarmRepoById, getSwarmRepoByName, getSwarmRepoByUrl, createSwarmRepo, updateSwarmRepo, deleteSwarmRepo, getAgentMailInboxMapping, getAgentMailInboxMappingsByAgent, getAllAgentMailInboxMappings, createAgentMailInboxMapping, deleteAgentMailInboxMapping, findTaskByAgentMailThread, insertActiveSession, deleteActiveSession, deleteActiveSessionById, getActiveSessions, heartbeatActiveSession, cleanupStaleSessions, cleanupAgentSessions, updateActiveSessionProviderSessionId, getActiveSessionForTask, reassociateSessionLogs, getStalledInProgressTasks, getStalePinnedResumes, failPendingResumeIfUnclaimed, getIdleWorkersWithCapacity, getUnassignedPoolTasks, getStaleUnassignedAffinityTasks, getRecentFailedTasks, getRecentCompletedCount, getRecentFailedCount, createWorkflow, getWorkflow, listWorkflows, updateWorkflow, deleteWorkflow, getWorkflowsByScheduleId, createWorkflowRun, getWorkflowRun, updateWorkflowRun, listWorkflowRuns, countWorkflowRuns, listWorkflowRunsPage, createWorkflowRunStep, getWorkflowRunStep, updateWorkflowRunStep, getWorkflowRunStepsByRunId, getStuckWorkflowRuns, getLastSuccessfulRun, getLastRunStart, getRetryableSteps, getCompletedStepNodeIds, getTaskByWorkflowRunStepId, detachTaskFromWorkflowRunStep, getStepByIdempotencyKey, getStepCountForNode, getLatestStepForNode, getCurrentStepForNode, createWorkflowVersion, getWorkflowVersions, getWorkflowVersion, createAppVersion, getAppVersions, getAppVersion, createPage, getPage, getPageBySlug, getLatestPageBySlug, listPagesByAgent, listAllPages, countAllPages, countPagesByAgent, updatePage, deletePage, incrementPageViewCount, createPageVersion, getPageVersions, getPageVersion, createMetric, getMetric, getMetricBySlug, listMetricsByAgent, listAllMetrics, countAllMetrics, countMetricsByAgent, updateMetric, deleteMetric, createMetricVersion, getMetricVersions, getMetricVersion, getPromptTemplates, getPromptTemplateById, upsertPromptTemplate, deletePromptTemplate, resetPromptTemplateToDefault, getPromptTemplateHistory, resolvePromptTemplate, checkoutPromptTemplate, getAllChannelActivityCursors, getChannelActivityCursor, upsertChannelActivityCursor, createApprovalRequest, getApprovalRequestById, resolveApprovalRequest, cancelApprovalRequestById, cancelPendingApprovalRequestsForRun, listCancelledApprovalRequestsForRun, listCancelledApprovalRequestsForStep, claimApprovalCancellationNotification, completeApprovalCancellationNotificationClaim, releaseApprovalCancellationNotificationClaim, updateApprovalRequestNotifications, listApprovalRequests, getStuckApprovalRuns, getApprovalRequestByStepId, getExpiredPendingApprovals, getStaleApprovalRequests, createWaitState, getWaitStateById, getWaitStateByStepId, getDueWaitStates, getPendingEventWaitNames, getPendingWaitsByEvent, resolveWaitState, getStuckWaitRuns, SKILL_FILE_LIMITS, normalizeSkillFilePath, createSkill, updateSkill, listSkillFileManifest, getSkillFiles, getSkillFile, upsertSkillFile, upsertSkillFiles, deleteSkillFile, deleteSkill, getSkillById, getSkillByName, listSkills, searchSkills, installSkill, getSystemDefaultSkills, installSystemDefaultSkillsForAgent, uninstallSkill, getAgentSkills, toggleAgentSkill, createMcpServer, emitMcpServerConnectedTelemetry, updateMcpServer, deleteMcpServer, getMcpServerById, getMcpServerByName, listMcpServers, installMcpServer, uninstallMcpServer, getAgentMcpServers, createContextSnapshot, getContextSnapshotsByTaskId, getContextSnapshotsBySessionId, getContextSummaryByTaskId, getAvailableKeyIndices, recordKeyUsage, setApiKeyPlan, markKeyRateLimited, recordKeyAuthFailure, recordKeyRateLimitWindows, setApiKeyName, clearKeyRateLimit, getKeyStatuses, getKeyCostSummary, getUserById, getAllUsers, createUser, updateUser, deleteUser, listInboxState, upsertInboxState, listFavorites, listUserFavorites, getFavoriteItemIdSet, setFavorite, setUserFavorite, withFavoriteFlags, listTaskTemplates, getRootTaskChain, listRecentSessions, countSessions, getBudget, getBudgets, upsertBudget, deleteBudget, getAllPricingRows, getPricingRows, getActivePricingRow, insertPricingRow, deletePricingRow, getDailySpendForAgent, getDailySpendGlobal, getDailySpendForUser, recordBudgetRefusalNotification, getBudgetRefusalNotification, getRecentBudgetRefusalNotifications, hasBudgetRefusalNotificationToday, setBudgetRefusalFollowUpTaskId, getLiveAgentCounts, getReadyAgentCounts, getInstanceActivity, getSwarmMetrics, hasFirstCompletedTask, getKv, sweepExpiredKv, sweepExpiredKvPrefix, upsertKv, claimKv, deleteKv, KvTypeCollisionError, incrKv, kvPrefixUpperBound, listKv, countKv, createScriptRun, recordInlineScriptRun, getScriptRun, getScriptRunByIdempotencyKey, listScriptRuns, countScriptRuns, countActiveScriptRuns, updateScriptRun, updateScriptRunIfNotTerminal, updateScriptRunIfRunning, getRunningScriptRuns, getScriptRunJournalStep, upsertScriptRunJournalStep, listScriptRunJournalSteps, countScriptRunJournalSteps, countScriptRunJournalAgentTaskSteps, exports_db, init_db2 as init_db1 };
|