@desplega.ai/agent-swarm 1.159.0 → 1.161.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/{acp-adapter-qhch0n2v.js → acp-adapter-xx489vvb.js} +286 -75
- package/dist/{actions-dtsh1mfb.js → actions-ykjkn0m9.js} +32 -30
- package/dist/{anthropic-messages-f2h06k64.js → anthropic-messages-5qx80j9k.js} +99 -14
- package/dist/{app-y1b9srva.js → app-0hdqa4k1.js} +13 -11
- package/dist/{assistant-31hwy5xj.js → assistant-am2g5g8a.js} +40 -32
- package/dist/{azure-openai-responses-0k1mfax5.js → azure-openai-responses-fszbkp0e.js} +3 -3
- package/dist/{boot-reembed-48d2qpkt.js → boot-reembed-gt5gjkt4.js} +14 -12
- package/dist/{boot-reembed-w0bryhkr.js → boot-reembed-xy9t7avg.js} +15 -13
- package/dist/{boot-scrub-logs-t65wbrn7.js → boot-scrub-logs-9x0985y5.js} +12 -10
- package/dist/boot-seeds-trv0d4vg.js +29 -0
- package/dist/{claude-adapter-1t6611ne.js → claude-adapter-jb6e1e54.js} +32 -26
- package/dist/{claude-managed-adapter-werp659j.js → claude-managed-adapter-yxkfxg8j.js} +7 -7
- package/dist/{claude-managed-setup-y6rdgbc1.js → claude-managed-setup-d1q9hv2b.js} +26 -27
- package/dist/{claude-sdk-session-zhkyk8yw.js → claude-sdk-session-zga700s2.js} +11737 -11256
- package/dist/{cli-79aq9cgb.js → cli-0383bp7f.js} +1222 -406
- package/dist/{cli-xgpf00sk.js → cli-0c7ata9h.js} +24 -23
- package/dist/{cli-qjxy52w7.js → cli-121ph74b.js} +2 -2
- package/dist/{cli-20035trh.js → cli-17xpf7cm.js} +14 -7
- package/dist/{cli-cqt19wg6.js → cli-1a2j50m0.js} +11 -2
- package/dist/{cli-g9df2m37.js → cli-1cz0c18q.js} +249 -200
- package/dist/{cli-fjtp3463.js → cli-1er0rhz8.js} +13 -12
- package/dist/{cli-ca2w7zv7.js → cli-2hhfhfq5.js} +11 -6
- package/dist/{cli-npssxgaz.js → cli-2pdaysab.js} +52 -2
- package/dist/{cli-rykfmgwg.js → cli-2x0e561b.js} +1 -1
- package/dist/{cli-503ya656.js → cli-35pj2yva.js} +20 -150
- package/dist/cli-3qhyh31j.js +166 -0
- package/dist/{cli-cygyqj3b.js → cli-3zc55ctx.js} +8 -6
- package/dist/{cli-96qd5psa.js → cli-58e8yr0d.js} +1 -1
- package/dist/{cli-4aj25szq.js → cli-5nbmpy8w.js} +2 -2
- package/dist/{cli-mg24hkt4.js → cli-5p3x4zna.js} +2 -2
- package/dist/{cli-vwbbaecp.js → cli-7119ja3w.js} +3 -3
- package/dist/{cli-mzkqpxee.js → cli-798vkbks.js} +2 -2
- package/dist/{cli-3gvrr8vj.js → cli-82c1pacn.js} +111 -54
- package/dist/{cli-hgqfttfc.js → cli-89s4ngw3.js} +1 -1
- package/dist/{cli-9b13ggd1.js → cli-89v6kyq7.js} +1 -0
- package/dist/{cli-b6thtzac.js → cli-8g6mc14k.js} +7 -7
- package/dist/{cli-eg7cdg68.js → cli-9m03pzga.js} +5 -5
- package/dist/cli-9s68w752.js +303 -0
- package/dist/{cli-48527fpw.js → cli-a8c82p2t.js} +16 -15
- package/dist/{cli-5f2hq128.js → cli-ad4qxm6j.js} +12 -11
- package/dist/{cli-e4xnc0qp.js → cli-akfj32vj.js} +33 -7
- package/dist/{cli-ejpygnqz.js → cli-bh7jed3k.js} +212 -22
- package/dist/{cli-0z2v4nhw.js → cli-cat6h73s.js} +1 -1
- package/dist/{cli-e0ndxhtk.js → cli-cfkrztza.js} +190 -13
- package/dist/{cli-kc3dp84d.js → cli-d56tgd45.js} +216 -59
- package/dist/cli-dbmwby6a.js +9 -0
- package/dist/{cli-0n2e4x49.js → cli-ecfxwnyb.js} +15 -2
- package/dist/{cli-gzyh0j0g.js → cli-ee8bc46j.js} +66 -166
- package/dist/{cli-kdnehe0t.js → cli-et8m9xsv.js} +1 -1
- package/dist/cli-f9w1semm.js +413 -0
- package/dist/cli-gt4hxb8p.js +99 -0
- package/dist/{cli-qv4jv8bx.js → cli-hgmnf38m.js} +2 -2
- package/dist/{cli-10ym38qc.js → cli-hn04t9db.js} +3 -3
- package/dist/{cli-qvnnx4ct.js → cli-jpf7e1zq.js} +105 -243
- package/dist/cli-jyy6pm2f.js +333872 -0
- package/dist/{cli-dvjpkkjd.js → cli-kgd3p0bm.js} +7 -7
- package/dist/cli-ma3zvh39.js +10404 -0
- package/dist/{cli-r2ap2czm.js → cli-nexqx4ve.js} +6 -0
- package/dist/{cli-j9z8mfx3.js → cli-nsdxtcbg.js} +37 -20
- package/dist/{cli-wgjx0q33.js → cli-phfg8vy8.js} +392 -53
- package/dist/{cli-rgjprct3.js → cli-ptr8h7kp.js} +19 -1
- package/dist/{cli-s8s499xy.js → cli-qbksc292.js} +3 -2
- package/dist/{cli-bv0a38v9.js → cli-qwsnmjdd.js} +515 -229
- package/dist/{cli-68bmme5p.js → cli-r6fsxc76.js} +40018 -52654
- package/dist/{cli-rrqmqr1s.js → cli-rtx9dygp.js} +1 -1
- package/dist/{cli-rfezr056.js → cli-sqm3r5ps.js} +83 -15
- package/dist/{cli-zw65mab6.js → cli-t6v2ah3r.js} +67 -13
- package/dist/{cli-vn0qv9cj.js → cli-t845n9xk.js} +28 -14
- package/dist/cli-trc24wk2.js +143 -0
- package/dist/{cli-wd9hz40d.js → cli-tre4bdgq.js} +5 -5
- package/dist/{cli-9yg65c1j.js → cli-tsk3nz8a.js} +29 -1
- package/dist/{cli-phsaj4xq.js → cli-v0pvvhfq.js} +1 -1
- package/dist/{cli-hj65wsts.js → cli-vnnz5ncg.js} +4695 -4915
- package/dist/{cli-cpvsaqsw.js → cli-w0bwte75.js} +8 -5
- package/dist/{cli-z9x0sh1t.js → cli-we0q7t0e.js} +3 -3
- package/dist/{cli-r94z9p1z.js → cli-wgbezhw2.js} +3 -0
- package/dist/{cli-19jenss3.js → cli-xk79303e.js} +51 -17
- package/dist/{cli-31nkw3g3.js → cli-ybgv4kw2.js} +15 -8
- package/dist/{cli-ardpzhjm.js → cli-yrg7c73k.js} +13 -6
- package/dist/{cli-de1396j2.js → cli-ywybs5as.js} +7 -1
- package/dist/{cli-vhjwh6cz.js → cli-yy6dew39.js} +2 -2
- package/dist/{cli-bgv70kym.js → cli-zb6xbk61.js} +3 -2
- package/dist/{cli-4tvgz99m.js → cli-ze1d3wzv.js} +79 -27
- package/dist/cli.js +33 -32
- package/dist/{cloudflare-workers-ai-system-one-1sg586qv.js → cloudflare-workers-ai-system-one-k6fbxw9d.js} +2 -2
- package/dist/{codex-adapter-jqfqqa21.js → codex-adapter-04v97vep.js} +23 -20
- package/dist/{codex-hook-5eys3dya.js → codex-hook-20me6byw.js} +2 -2
- package/dist/{codex-login-he9vrn90.js → codex-login-cf7mzsgg.js} +48 -3
- package/dist/{codex-session-runner-zd341dsm.js → codex-session-runner-ax69mqq3.js} +21 -20
- package/dist/{commands-vfsysz4s.js → commands-18gy08n1.js} +12 -10
- package/dist/{db-s3znhvbn.js → db-d2pvjpyt.js} +22 -10
- package/dist/{devin-adapter-8vgkwh29.js → devin-adapter-dpsv6hd9.js} +1 -1
- package/dist/{dispatcher-5xn0c7rf.js → dispatcher-8wbwyzjg.js} +31 -29
- package/dist/{dsh-adapter-894mgfvs.js → dsh-adapter-ysqk9snv.js} +9 -4
- package/dist/{e2b-ez07znam.js → e2b-esmt1r16.js} +3 -1
- package/dist/{execute-71ysgv35.js → execute-cmagrbrz.js} +235 -52
- package/dist/{google-generative-ai-1nfcdphp.js → google-generative-ai-k6n5nbpp.js} +3 -3
- package/dist/{google-vertex-1tqcd7b1.js → google-vertex-44xxtcvp.js} +3 -3
- package/dist/{handlers-5w4jwycr.js → handlers-6b69m5kp.js} +34 -32
- package/dist/{hook-z0hbxj85.js → hook-k3mydf2n.js} +16 -14
- package/dist/{hook-853bxrr6.js → hook-srnkt0hb.js} +16 -14
- package/dist/{http-akc3wy3m.js → http-hrf80ca1.js} +836 -189
- package/dist/{index-ttpbhnjg.js → index-1asbaj62.js} +32 -30
- package/dist/{index-cd151qkq.js → index-45evq4ee.js} +31 -29
- package/dist/{index-k661dzzr.js → index-9rxdvj6w.js} +32 -30
- package/dist/index-k4nj18qs.js +31 -0
- package/dist/{index-5sz16ksh.js → index-xmevk2b9.js} +89 -61
- package/dist/{keepalive-8p9rpvz5.js → keepalive-sfdz6ksp.js} +14 -12
- package/dist/{lead-jp69z5h3.js → lead-ej91e9hw.js} +52 -50
- package/dist/{llama-cpp-classify-t2tccams.js → llama-cpp-classify-tgj35k8d.js} +1 -1
- package/dist/{maintenance-fwx4ev0k.js → maintenance-80dnd7ke.js} +15 -13
- package/dist/{mistral-conversations-bhvwqcnk.js → mistral-conversations-pc3ntnxt.js} +1 -1
- package/dist/node-f0ykebbv.js +2107 -0
- package/dist/node-wyamey5r.js +19 -0
- package/dist/{oauth-refresh-sweep-cwcq1ctx.js → oauth-refresh-sweep-m1etk2mx.js} +13 -11
- package/dist/{onboard-2b4q0t84.js → onboard-0q8sdfqc.js} +2 -2
- package/dist/{openai-codex-responses-nekthgks.js → openai-codex-responses-n7n683p2.js} +2 -2
- package/dist/{openai-completions-hxtzwj0s.js → openai-completions-jpaj5g2b.js} +2 -2
- package/dist/{openai-responses-w4r118w7.js → openai-responses-9a3nme9j.js} +3 -3
- package/dist/{opencode-adapter-zz7xvjj6.js → opencode-adapter-4wcgmvgf.js} +13 -11
- package/dist/{openrouter-images-b6sqqjgn.js → openrouter-images-8yx3487g.js} +1 -1
- package/dist/{otel-impl-g8rs4vwr.js → otel-impl-hnqm9mxq.js} +2 -2
- package/dist/pi-logo-animation-e9a0t68z.js +1003 -0
- package/dist/{pi-mono-adapter-n0me28wt.js → pi-mono-adapter-d6sqm9wr.js} +301 -78
- package/dist/{pricing-refresh-0v77385v.js → pricing-refresh-y60z64pm.js} +14 -13
- package/dist/quickjs-r1pq2107.wasm +0 -0
- package/dist/{rbac-roles-krjyazbj.js → rbac-roles-8pa0754b.js} +13 -11
- package/dist/{render-v2-3wjsp9aw.js → render-v2-418s1vj7.js} +13 -11
- package/dist/{runtime-ktjysacx.js → runtime-3pknc168.js} +5 -4
- package/dist/{setup-yeqryke6.js → setup-yghdkj4x.js} +2 -2
- package/dist/{typesafe-system-one-96960jxp.js → typesafe-system-one-2ef30pec.js} +2 -2
- package/dist/{virtual-modules-dzdeq1sf.js → virtual-modules-jcceevt5.js} +8 -6
- package/dist/{work-objects-3pakpkw0.js → work-objects-j1sz20v9.js} +34 -32
- package/dist/{worker-85testgj.js → worker-d4gcvkjt.js} +52 -50
- package/dist/{x-n3e0v3xa.js → x-f1gt1pz3.js} +2 -2
- package/openapi.json +587 -19
- package/package.json +16 -15
- package/src/azure-devops/api.ts +121 -0
- package/src/azure-devops/auth.ts +78 -0
- package/src/azure-devops/handlers.ts +413 -0
- package/src/azure-devops/index.ts +27 -0
- package/src/azure-devops/templates.ts +108 -0
- package/src/azure-devops/types.ts +90 -0
- package/src/be/db/api-keys.ts +70 -0
- package/src/be/db/tasks/read.ts +1 -1
- package/src/be/db/tasks/write.ts +16 -0
- package/src/be/db-client.ts +11 -2
- package/src/be/db-retention.ts +95 -32
- package/src/be/db.ts +187 -24
- package/src/be/memory/constants.ts +16 -0
- package/src/be/memory/graph-expansion.ts +8 -1
- package/src/be/memory/index-content.ts +20 -1
- package/src/be/memory/key-guard.ts +93 -0
- package/src/be/memory/key-paths.ts +103 -0
- package/src/be/memory/providers/sqlite-store.ts +203 -60
- package/src/be/memory/raters/llm-summarizer.ts +10 -4
- package/src/be/memory/raters/llm.ts +15 -5
- package/src/be/memory/raters/store.ts +6 -3
- package/src/be/memory/raters/types.ts +11 -0
- package/src/be/memory/reranker.ts +38 -7
- package/src/be/memory/types.ts +12 -1
- package/src/be/migrations/185_api_key_auth_failures.sql +6 -0
- package/src/be/migrations/186_api_key_seat_mismatch.sql +8 -0
- package/src/be/migrations/190_memory_rating_model.sql +7 -0
- package/src/be/migrations/191_context_versions_previous_index.sql +8 -0
- package/src/be/model-tier-keys.ts +16 -1
- package/src/be/model-tier-resolution.ts +63 -18
- package/src/be/model-validation.ts +86 -10
- package/src/be/pricing-normalize.ts +4 -2
- package/src/be/scripts/typecheck.ts +4 -3
- package/src/be/seed/runner.ts +18 -12
- package/src/be/seed/types.ts +1 -0
- package/src/be/seed-pricing.ts +16 -0
- package/src/be/seed-scripts/catalog/task-failure-audit.ts +26 -26
- package/src/be/swarm-config-guard.ts +13 -1
- package/src/commands/claude-managed-setup.ts +33 -31
- package/src/commands/codex-login.ts +67 -0
- package/src/commands/credential-outcome-report.ts +191 -0
- package/src/commands/provider-credentials.ts +28 -15
- package/src/commands/rate-limit-outcome.ts +34 -4
- package/src/commands/runner.ts +479 -228
- package/src/commands/seat-mismatch-report.ts +46 -0
- package/src/e2b/env.ts +2 -0
- package/src/extensions/apply-task-create.ts +27 -1
- package/src/extensions/catalog.generated.json +17 -0
- package/src/extensions/contract-types.generated.ts +1 -1
- package/src/github/handlers.ts +10 -74
- package/src/github/reactions.ts +119 -138
- package/src/github/task-reactions.ts +34 -11
- package/src/heartbeat/heartbeat.ts +15 -2
- package/src/hooks/hook.ts +1 -1
- package/src/http/agents.ts +15 -2
- package/src/http/api-keys.ts +140 -2
- package/src/http/codex-oauth-keep-warm.ts +3 -5
- package/src/http/core.ts +12 -0
- package/src/http/extensions.ts +51 -27
- package/src/http/index.ts +4 -0
- package/src/http/mcp-user.ts +8 -13
- package/src/http/mcp.ts +19 -12
- package/src/http/memory.ts +91 -18
- package/src/http/poll.ts +9 -1
- package/src/http/schedules.ts +17 -2
- package/src/http/script-runs.ts +12 -0
- package/src/http/session-data.ts +6 -4
- package/src/http/stats.ts +1 -0
- package/src/http/status.ts +15 -1
- package/src/http/tasks.ts +80 -8
- package/src/http/users.ts +1 -1
- package/src/http/webhooks.ts +120 -2
- package/src/http/workflows.ts +11 -0
- package/src/mcp-client/http-client.ts +5 -0
- package/src/memory/recall-query.ts +74 -0
- package/src/prompts/base-prompt.ts +15 -4
- package/src/prompts/session-templates.ts +22 -1
- package/src/providers/acp-adapter.ts +1 -0
- package/src/providers/claude-adapter.ts +98 -21
- package/src/providers/claude-managed-adapter.ts +30 -2
- package/src/providers/claude-sdk-session.ts +3 -1
- package/src/providers/codex-adapter.ts +11 -11
- package/src/providers/codex-skill-resolver.ts +6 -0
- package/src/providers/devin-adapter.ts +1 -0
- package/src/providers/dsh-adapter.ts +205 -7
- package/src/providers/harness-version.ts +83 -7
- package/src/providers/opencode-adapter.ts +77 -4
- package/src/providers/pi-binary-root/src/extensions/codemode/worker.ts +11 -0
- package/src/providers/pi-codemode-runtime.ts +17 -0
- package/src/providers/pi-mono-adapter.ts +387 -83
- package/src/providers/pi-mono-extension.ts +17 -2
- package/src/providers/pricing-sources.md +5 -1
- package/src/providers/reasoning-effort.ts +10 -2
- package/src/providers/types.ts +9 -1
- package/src/rbac/legacy-policy.ts +20 -0
- package/src/rbac/permissions.ts +15 -0
- package/src/scripts-runtime/types/stdlib.d.ts +13 -5
- package/src/scripts-runtime/types/swarm-extension.d.ts +4 -2
- package/src/scripts-runtime/types/swarm-sdk.d.ts +13 -5
- package/src/slack/assistant.ts +13 -0
- package/src/slack/render-v2.ts +87 -37
- package/src/slack/session-status.ts +541 -0
- package/src/tasks/context-key.ts +38 -1
- package/src/tasks/sibling-awareness.ts +3 -2
- package/src/telemetry.ts +5 -4
- package/src/templates.d.ts +6 -0
- package/src/tests/api-key-auth-failure-route.test.ts +142 -0
- package/src/tests/api-key-tracking.test.ts +368 -1
- package/src/tests/azure-devops-auth.test.ts +100 -0
- package/src/tests/azure-devops-handlers.test.ts +324 -0
- package/src/tests/azure-devops-webhook-malformed.test.ts +96 -0
- package/src/tests/base-prompt.test.ts +40 -2
- package/src/tests/claude-adapter.test.ts +58 -0
- package/src/tests/claude-default-route.test.ts +260 -0
- package/src/tests/claude-managed-adapter.test.ts +47 -0
- package/src/tests/claude-managed-setup.test.ts +48 -0
- package/src/tests/claude-prompt-body-once.test.ts +117 -0
- package/src/tests/claude-routes-e2e.test.ts +316 -0
- package/src/tests/codex-auth-failure.test.ts +52 -0
- package/src/tests/codex-login.test.ts +116 -0
- package/src/tests/context-versions-retention.test.ts +314 -0
- package/src/tests/core-auth.test.ts +7 -0
- package/src/tests/credential-exhaustion-policy.test.ts +118 -3
- package/src/tests/credential-outcome-report.test.ts +171 -0
- package/src/tests/credential-status-api.test.ts +103 -2
- package/src/tests/db-retention.test.ts +14 -14
- package/src/tests/db-task-read-contract.test.ts +6 -0
- package/src/tests/db-task-write-contract.test.ts +533 -1
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dokploy-deploy.test.ts +315 -0
- package/src/tests/dsh-adapter.test.ts +134 -2
- package/src/tests/dsh-usage.test.ts +153 -0
- package/src/tests/explicit-model-validation.test.ts +253 -2
- package/src/tests/extensions-catalog.test.ts +1 -0
- package/src/tests/extensions-example-deploy-awareness.test.ts +301 -0
- package/src/tests/extensions-http.test.ts +137 -10
- package/src/tests/extensions-mcp-tools.test.ts +28 -0
- package/src/tests/extensions-pre-task.test.ts +73 -0
- package/src/tests/fetch-resolved-env.test.ts +70 -0
- package/src/tests/fixtures/azure-devops/pull-request-commented.json +129 -0
- package/src/tests/fixtures/azure-devops/pull-request-created.json +88 -0
- package/src/tests/fixtures/fake-claude-routes.ts +229 -0
- package/src/tests/github-handlers-reactions.test.ts +486 -0
- package/src/tests/github-reactions.test.ts +280 -0
- package/src/tests/hang-watchdog-worker.ts +47 -0
- package/src/tests/hang-watchdog.test.ts +45 -0
- package/src/tests/hang-watchdog.ts +30 -0
- package/src/tests/harness-cli-version.test.ts +62 -0
- package/src/tests/harness-model-guard.test.ts +123 -0
- package/src/tests/harness-version.test.ts +70 -3
- package/src/tests/http-api-integration.test.ts +21 -0
- package/src/tests/http-task-write-ownership.test.ts +195 -0
- package/src/tests/internal-ai/complete-structured.test.ts +94 -0
- package/src/tests/internal-ai/credentials.test.ts +22 -0
- package/src/tests/internal-ai/models.test.ts +36 -2
- package/src/tests/internal-ai/schema-parity.test.ts +25 -1
- package/src/tests/internal-ai/summarize-session.test.ts +23 -7
- package/src/tests/mcp-user-route.test.ts +133 -0
- package/src/tests/memory-fts-populate.test.ts +139 -0
- package/src/tests/memory-http-recall-gating.test.ts +125 -1
- package/src/tests/memory-key-paths.test.ts +1055 -0
- package/src/tests/memory-rate-endpoint.test.ts +66 -0
- package/src/tests/memory-rater-llm-summarizer.test.ts +2 -1
- package/src/tests/memory-rater-llm.test.ts +73 -0
- package/src/tests/memory-rater-store.test.ts +31 -0
- package/src/tests/memory-reranker.test.ts +40 -0
- package/src/tests/model-rate-limit-windows.test.ts +19 -0
- package/src/tests/model-tier-resolution.test.ts +92 -0
- package/src/tests/opencode-adapter.test.ts +214 -2
- package/src/tests/opencode-plugin.test.ts +4 -0
- package/src/tests/pi-codemode.test.ts +324 -0
- package/src/tests/pi-mono-adapter.test.ts +3 -0
- package/src/tests/pi-native-mcp.test.ts +193 -0
- package/src/tests/pi-tool-exposure.test.ts +374 -0
- package/src/tests/preload.ts +9 -0
- package/src/tests/prompt-template-session.test.ts +5 -3
- package/src/tests/provider-registration.test.ts +0 -2
- package/src/tests/providers/pi-cost.test.ts +190 -4
- package/src/tests/rate-limit-event.test.ts +65 -0
- package/src/tests/rate-limit-outcome.test.ts +90 -0
- package/src/tests/rbac-engine.test.ts +41 -2
- package/src/tests/runner-key-completion-outcome.test.ts +112 -0
- package/src/tests/runner-key-outcome-late-reset.test.ts +224 -0
- package/src/tests/runner-registration-retry.test.ts +149 -0
- package/src/tests/runner-slot-reconcile.test.ts +199 -0
- package/src/tests/script-connections.test.ts +8 -0
- package/src/tests/seat-mismatch-report.test.ts +85 -0
- package/src/tests/seed-scripts.test.ts +49 -0
- package/src/tests/seed.test.ts +25 -0
- package/src/tests/session-costs-recompute-all-providers.test.ts +23 -0
- package/src/tests/slack-render-v2.test.ts +96 -0
- package/src/tests/slack-session-status.test.ts +626 -0
- package/src/tests/status.test.ts +29 -0
- package/src/tests/steering-promotion.test.ts +51 -0
- package/src/tests/store-progress-ownership.test.ts +136 -0
- package/src/tests/subscription-plans.test.ts +28 -0
- package/src/tests/task-citations.test.ts +3 -2
- package/src/tests/task-reactions.test.ts +29 -6
- package/src/tests/vcs-azure-devops.test.ts +73 -0
- package/src/tests/webhooks-task-blocked.test.ts +23 -0
- package/src/tests/workflow-agent-task.test.ts +30 -0
- package/src/tests/workflow-llm.test.ts +14 -0
- package/src/tests/workflow-triggers-v2.test.ts +320 -0
- package/src/tools/context-diff.ts +20 -0
- package/src/tools/extension-install.ts +27 -16
- package/src/tools/memory-edit.ts +47 -3
- package/src/tools/memory-search.ts +13 -1
- package/src/tools/memory-store.ts +55 -3
- package/src/tools/schedules/create-schedule.ts +1 -1
- package/src/tools/schedules/patch-schedule.ts +16 -3
- package/src/tools/schedules/update-schedule.ts +16 -3
- package/src/tools/send-task.ts +10 -7
- package/src/tools/store-progress.ts +49 -4
- package/src/tools/task-action.ts +2 -1
- package/src/tools/workflows/create-workflow.ts +8 -2
- package/src/tools/workflows/update-workflow.ts +8 -2
- package/src/types.ts +54 -7
- package/src/utils/codex-auth-failure.ts +34 -0
- package/src/utils/credentials.test.ts +31 -1
- package/src/utils/credentials.ts +92 -39
- package/src/utils/dsh-usage.ts +53 -0
- package/src/utils/error-tracker.ts +80 -0
- package/src/utils/harness-cli-version.ts +6 -4
- package/src/utils/internal-ai/complete-structured.ts +26 -3
- package/src/utils/internal-ai/credentials.ts +23 -9
- package/src/utils/internal-ai/index.ts +8 -1
- package/src/utils/internal-ai/models.ts +34 -8
- package/src/utils/internal-ai/summarize-session.ts +22 -8
- package/src/utils/model-rate-limit-windows.ts +12 -0
- package/src/utils/runtime-model-catalog.ts +15 -0
- package/src/utils/secret-scrubber.ts +8 -0
- package/src/utils/spawn-model-guard.ts +43 -0
- package/src/utils/subscription-plans.ts +22 -0
- package/src/vcs/azure-devops.ts +80 -0
- package/src/vcs/index.ts +5 -1
- package/src/vcs/types.ts +2 -2
- package/src/workflows/executors/agent-task.ts +7 -6
- package/src/workflows/model-validation.ts +45 -0
- package/src/workflows/patch-definition.ts +5 -0
- package/src/workflows/triggers.ts +85 -0
- package/templates/community/open-prompt-showreel/PLAYBOOK.md +336 -0
- package/templates/community/open-prompt-showreel/README.md +33 -0
- package/templates/community/open-prompt-showreel/example/tla-races/facts.ts +145 -0
- package/templates/community/open-prompt-showreel/example/tla-races/facts.v3.json +140 -0
- package/templates/community/open-prompt-showreel/example/tla-races/music.mist-city.json +8 -0
- package/templates/community/open-prompt-showreel/example/tla-races/reel.html +805 -0
- package/templates/community/open-prompt-showreel/example/tla-races/smoke.sh +48 -0
- package/templates/community/open-prompt-showreel/lead-prompt.md +89 -0
- package/templates/community/open-prompt-showreel/setup.sh +167 -0
- package/templates/community/open-prompt-showreel/skills/motion-design-replication/SKILL.md +85 -0
- package/templates/community/open-prompt-showreel/skills/motion-design-video-analysis/SKILL.md +115 -0
- package/templates/community/open-prompt-showreel/skills/open-prompt-showreel/SKILL.md +147 -0
- package/templates/community/open-prompt-showreel/skills/video-generation/SKILL.md +195 -0
- package/templates/community/open-prompt-showreel/tools/fetch-music.sh +65 -0
- package/templates/community/open-prompt-showreel/tools/music-analyze.py +69 -0
- package/templates/community/open-prompt-showreel/tools/music-current.sh +34 -0
- package/templates/community/open-prompt-showreel/tools/music-cut.sh +36 -0
- package/templates/community/open-prompt-showreel/tools/music-refine.py +39 -0
- package/templates/community/open-prompt-showreel/tools/render.mjs +157 -0
- package/templates/community/open-prompt-showreel/tools/sheet.sh +44 -0
- package/templates/community/open-prompt-showreel/tools/web-compress.sh +17 -0
- package/templates/community/open-prompt-showreel/tools/x-reencode.sh +21 -0
- package/templates/extensions/README.md +1 -0
- package/templates/extensions/deploy-awareness/README.md +28 -0
- package/templates/extensions/deploy-awareness/hooks.ts +152 -0
- package/templates/extensions/deploy-awareness/manifest.json +8 -0
- package/templates/skills/memory/config.json +2 -2
- package/templates/skills/memory/content.md +59 -5
- package/templates/skills/swarm-extensions/config.json +1 -1
- package/templates/skills/swarm-extensions/content.md +28 -5
- package/templates/skills/workflow-iterate/content.md +1 -0
- package/dist/boot-seeds-h7c32hvm.js +0 -27
- package/dist/cli-2djtr51b.js +0 -48
- package/dist/cli-7zttzetj.js +0 -324
- package/dist/cli-j490egb5.js +0 -5632
- package/dist/cli-m4excttz.js +0 -333481
- package/dist/index-bjmjh9h4.js +0 -29
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ALL_TOOLS,
|
|
3
|
+
init_tool_config
|
|
4
|
+
} from "./cli-3qhyh31j.js";
|
|
1
5
|
import {
|
|
2
6
|
AgentAvatarSchema,
|
|
3
7
|
CreateTaskOptionsSchema,
|
|
@@ -18,7 +22,7 @@ import {
|
|
|
18
22
|
normalizeAssetKey,
|
|
19
23
|
parseAssetKey,
|
|
20
24
|
parseModelTier
|
|
21
|
-
} from "./cli-
|
|
25
|
+
} from "./cli-akfj32vj.js";
|
|
22
26
|
import {
|
|
23
27
|
IdentityFieldBudgetError,
|
|
24
28
|
checkIdentityFieldBudget,
|
|
@@ -31,11 +35,7 @@ import {
|
|
|
31
35
|
init_templates,
|
|
32
36
|
matchesDefaultClaudeMd,
|
|
33
37
|
matchesDefaultIdentityMd
|
|
34
|
-
} from "./cli-
|
|
35
|
-
import {
|
|
36
|
-
init_config,
|
|
37
|
-
isSlackConfigured
|
|
38
|
-
} from "./cli-n7h1kqpf.js";
|
|
38
|
+
} from "./cli-yrg7c73k.js";
|
|
39
39
|
import {
|
|
40
40
|
configureDbResolver,
|
|
41
41
|
getAllTemplateDefinitions,
|
|
@@ -45,29 +45,37 @@ import {
|
|
|
45
45
|
init_steering_enabled,
|
|
46
46
|
isSteeringEnabled,
|
|
47
47
|
registerTemplate
|
|
48
|
-
} from "./cli-
|
|
49
|
-
import {
|
|
50
|
-
SUBSCRIPTION_KEY_TYPES,
|
|
51
|
-
estimateClaudePlan,
|
|
52
|
-
init_subscription_plans
|
|
53
|
-
} from "./cli-cqt19wg6.js";
|
|
48
|
+
} from "./cli-ptr8h7kp.js";
|
|
54
49
|
import {
|
|
55
50
|
deriveProviderFromKeyType,
|
|
56
51
|
init_credentials
|
|
57
|
-
} from "./cli-
|
|
52
|
+
} from "./cli-xk79303e.js";
|
|
53
|
+
import {
|
|
54
|
+
init_config,
|
|
55
|
+
isSlackConfigured
|
|
56
|
+
} from "./cli-n7h1kqpf.js";
|
|
58
57
|
import {
|
|
59
58
|
activeModelBlock,
|
|
60
59
|
init_model_rate_limit_windows
|
|
61
|
-
} from "./cli-
|
|
60
|
+
} from "./cli-ywybs5as.js";
|
|
61
|
+
import {
|
|
62
|
+
SUBSCRIPTION_KEY_TYPES,
|
|
63
|
+
estimateClaudePlan,
|
|
64
|
+
init_subscription_plans,
|
|
65
|
+
planAllowsModelFamily
|
|
66
|
+
} from "./cli-1a2j50m0.js";
|
|
62
67
|
import {
|
|
63
68
|
init_env_flag,
|
|
64
69
|
isEnvFlagEnabled
|
|
65
70
|
} from "./cli-ej6gbxfb.js";
|
|
66
71
|
import {
|
|
72
|
+
harnessModelMismatch,
|
|
73
|
+
init_runtime_model_catalog,
|
|
67
74
|
init_src,
|
|
68
75
|
isAlias,
|
|
69
|
-
parseAlias
|
|
70
|
-
|
|
76
|
+
parseAlias,
|
|
77
|
+
runtimeHarnessSections
|
|
78
|
+
} from "./cli-jyy6pm2f.js";
|
|
71
79
|
import {
|
|
72
80
|
init_zod
|
|
73
81
|
} from "./cli-sd0mxa3c.js";
|
|
@@ -83,12 +91,12 @@ import {
|
|
|
83
91
|
import {
|
|
84
92
|
init_package,
|
|
85
93
|
package_default
|
|
86
|
-
} from "./cli-
|
|
94
|
+
} from "./cli-a8c82p2t.js";
|
|
87
95
|
import {
|
|
88
96
|
init_secret_scrubber,
|
|
89
97
|
registerVolatileSecret,
|
|
90
98
|
scrubSecrets
|
|
91
|
-
} from "./cli-
|
|
99
|
+
} from "./cli-nexqx4ve.js";
|
|
92
100
|
import {
|
|
93
101
|
init_bus,
|
|
94
102
|
realtimeBus
|
|
@@ -149,6 +157,14 @@ function gitlabContextKey(input) {
|
|
|
149
157
|
}
|
|
150
158
|
return ["task", "trackers", "gitlab", projectId, kind, iid].join(SEPARATOR);
|
|
151
159
|
}
|
|
160
|
+
function azureDevOpsContextKey(input) {
|
|
161
|
+
const repositoryId = assertSafePart(input.repositoryId, "repositoryId");
|
|
162
|
+
const pullRequestId = assertSafePart(input.pullRequestId, "pullRequestId");
|
|
163
|
+
if (!/^\d+$/.test(pullRequestId)) {
|
|
164
|
+
throw new Error(`context-key: azure-devops "pullRequestId" must be a positive integer (got ${JSON.stringify(pullRequestId)})`);
|
|
165
|
+
}
|
|
166
|
+
return ["task", "trackers", "azure-devops", repositoryId, "pr", pullRequestId].join(SEPARATOR);
|
|
167
|
+
}
|
|
152
168
|
function linearContextKey(input) {
|
|
153
169
|
const issueIdentifier = assertSafePart(input.issueIdentifier, "issueIdentifier");
|
|
154
170
|
return ["task", "trackers", "linear", issueIdentifier].join(SEPARATOR);
|
|
@@ -253,6 +269,21 @@ function parseContextKey(key) {
|
|
|
253
269
|
parts: { projectId, kind, iid }
|
|
254
270
|
};
|
|
255
271
|
}
|
|
272
|
+
if (subFamily === "azure-devops") {
|
|
273
|
+
if (parts.length !== 6 || parts[4] !== "pr") {
|
|
274
|
+
throw new Error(`context-key: malformed azure-devops key: ${JSON.stringify(key)}`);
|
|
275
|
+
}
|
|
276
|
+
const idStr = parts[5];
|
|
277
|
+
const pullRequestId = Number.parseInt(idStr, 10);
|
|
278
|
+
if (!Number.isFinite(pullRequestId)) {
|
|
279
|
+
throw new Error(`context-key: malformed azure-devops pullRequestId "${idStr}": ${JSON.stringify(key)}`);
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
family: "trackers",
|
|
283
|
+
subFamily: "azure-devops",
|
|
284
|
+
parts: { repositoryId: parts[3], kind: "pr", pullRequestId }
|
|
285
|
+
};
|
|
286
|
+
}
|
|
256
287
|
if (subFamily === "linear") {
|
|
257
288
|
if (parts.length !== 4) {
|
|
258
289
|
throw new Error(`context-key: malformed linear key: ${JSON.stringify(key)}`);
|
|
@@ -361,7 +392,7 @@ var init_slack_routing = __esm(() => {
|
|
|
361
392
|
|
|
362
393
|
// src/telemetry.ts
|
|
363
394
|
import { randomUUID } from "node:crypto";
|
|
364
|
-
function
|
|
395
|
+
function isTelemetryEnabled() {
|
|
365
396
|
return isEnvFlagEnabled("ANONYMIZED_TELEMETRY", true);
|
|
366
397
|
}
|
|
367
398
|
function isCloudHostname(hostname) {
|
|
@@ -432,7 +463,7 @@ function _hasEmailChannel(env = process.env) {
|
|
|
432
463
|
return !!env.AGENTMAIL_WEBHOOK_SECRET && !isEnvFlagEnabled("AGENTMAIL_DISABLE", false, env);
|
|
433
464
|
}
|
|
434
465
|
async function initTelemetry(sourceId, getConfig, setConfig, options = {}) {
|
|
435
|
-
if (!
|
|
466
|
+
if (!isTelemetryEnabled())
|
|
436
467
|
return;
|
|
437
468
|
source = sourceId;
|
|
438
469
|
const generateIfMissing = options.generateIfMissing === true;
|
|
@@ -495,7 +526,7 @@ function getTelemetryEnvironment() {
|
|
|
495
526
|
return "production";
|
|
496
527
|
}
|
|
497
528
|
function track(options) {
|
|
498
|
-
if (!
|
|
529
|
+
if (!isTelemetryEnabled() || !installationId)
|
|
499
530
|
return;
|
|
500
531
|
try {
|
|
501
532
|
const payload = {
|
|
@@ -536,7 +567,7 @@ function track(options) {
|
|
|
536
567
|
} catch {}
|
|
537
568
|
}
|
|
538
569
|
function emitIntegrationConnected(type, providerSlug, firstOfType) {
|
|
539
|
-
if (!
|
|
570
|
+
if (!isTelemetryEnabled() || !installationId)
|
|
540
571
|
return false;
|
|
541
572
|
const provider = _resolveIntegrationProvider(providerSlug);
|
|
542
573
|
telemetry.integration("connected", {
|
|
@@ -658,6 +689,27 @@ var init_telemetry = __esm(() => {
|
|
|
658
689
|
};
|
|
659
690
|
});
|
|
660
691
|
|
|
692
|
+
// src/utils/codex-auth-failure.ts
|
|
693
|
+
function isCodexAuthFailureReason(failureReason) {
|
|
694
|
+
if (!failureReason || !failureReason.includes("[auth-error]"))
|
|
695
|
+
return false;
|
|
696
|
+
const lower = failureReason.toLowerCase();
|
|
697
|
+
return !TRANSIENT_AUTH_ERROR_MARKERS.some((m) => lower.includes(m));
|
|
698
|
+
}
|
|
699
|
+
var CODEX_AUTH_FAILURE_BENCH_THRESHOLD = 2, CODEX_AUTH_FAILURE_BENCH_MS, CODEX_AUTH_WATCH_NAMESPACE = "codex-auth-watch", codexAuthBenchMarkerKey = (keySuffix) => `bench:${keySuffix}`, TRANSIENT_AUTH_ERROR_MARKERS;
|
|
700
|
+
var init_codex_auth_failure = __esm(() => {
|
|
701
|
+
CODEX_AUTH_FAILURE_BENCH_MS = 365 * 24 * 60 * 60 * 1000;
|
|
702
|
+
TRANSIENT_AUTH_ERROR_MARKERS = [
|
|
703
|
+
"waiting for the refresh lock",
|
|
704
|
+
"refresh rejected (429",
|
|
705
|
+
"refresh rejected (5",
|
|
706
|
+
"refresh rejected (unknown status",
|
|
707
|
+
"out of credits",
|
|
708
|
+
"no credentials found in config store",
|
|
709
|
+
"not a confirmed auth rejection"
|
|
710
|
+
];
|
|
711
|
+
});
|
|
712
|
+
|
|
661
713
|
// src/utils/github-pull-request.ts
|
|
662
714
|
function parseGitHubPullRequestToken(token) {
|
|
663
715
|
const candidate = token.replace(TRAILING_PROSE_PUNCTUATION_RE, "");
|
|
@@ -1423,8 +1475,9 @@ class BunSqliteClient {
|
|
|
1423
1475
|
async runTimed(sql, params = []) {
|
|
1424
1476
|
let executionMs = 0;
|
|
1425
1477
|
const result = await this.execute(sql, (db) => {
|
|
1426
|
-
|
|
1427
|
-
|
|
1478
|
+
db.query(sql).run(...params);
|
|
1479
|
+
const own = db.query("SELECT changes() AS n").get();
|
|
1480
|
+
return { changes: own?.n ?? 0 };
|
|
1428
1481
|
}, (ms) => {
|
|
1429
1482
|
executionMs += ms;
|
|
1430
1483
|
});
|
|
@@ -3940,6 +3993,12 @@ async function updateTaskClaudeSessionId(taskId, claudeSessionId, provider, prov
|
|
|
3940
3993
|
const row = await getDbClient().get(`UPDATE agent_tasks SET ${setClauses.join(", ")} WHERE id = ? RETURNING *`, params);
|
|
3941
3994
|
return row ? rowToAgentTask(row) : null;
|
|
3942
3995
|
}
|
|
3996
|
+
async function recordTaskProviderIfUnset(taskId, provider) {
|
|
3997
|
+
await getDbClient().run("UPDATE agent_tasks SET provider = ? WHERE id = ? AND provider IS NULL", [
|
|
3998
|
+
provider,
|
|
3999
|
+
taskId
|
|
4000
|
+
]);
|
|
4001
|
+
}
|
|
3943
4002
|
async function updateTaskTitle(taskId, title2) {
|
|
3944
4003
|
const normalized = title2 === null ? null : title2.trim() || null;
|
|
3945
4004
|
const row = await getDbClient().get("UPDATE agent_tasks SET title = ? WHERE id = ? RETURNING *", [normalized, taskId]);
|
|
@@ -4628,167 +4687,6 @@ var init_reaction_shortcode = __esm(() => {
|
|
|
4628
4687
|
SLACK_REACTION_SHORTCODE_PATTERN = /^[a-z0-9_+'-]+(::skin-tone-[2-6])?$/;
|
|
4629
4688
|
});
|
|
4630
4689
|
|
|
4631
|
-
// src/tools/tool-config.ts
|
|
4632
|
-
var CORE_TOOLS, DEFERRED_TOOLS, ALL_TOOLS;
|
|
4633
|
-
var init_tool_config = __esm(() => {
|
|
4634
|
-
CORE_TOOLS = new Set([
|
|
4635
|
-
"join-swarm",
|
|
4636
|
-
"my-agent-info",
|
|
4637
|
-
"poll-task",
|
|
4638
|
-
"get-task-details",
|
|
4639
|
-
"store-progress",
|
|
4640
|
-
"task-action",
|
|
4641
|
-
"send-task",
|
|
4642
|
-
"get-tasks",
|
|
4643
|
-
"defer-task",
|
|
4644
|
-
"memory-search",
|
|
4645
|
-
"memory-get",
|
|
4646
|
-
"memory-store",
|
|
4647
|
-
"memory-delete",
|
|
4648
|
-
"memory_rate",
|
|
4649
|
-
"get-swarm",
|
|
4650
|
-
"script-run",
|
|
4651
|
-
"db-query",
|
|
4652
|
-
"kv-get",
|
|
4653
|
-
"script-query-types",
|
|
4654
|
-
"get-repos",
|
|
4655
|
-
"accept-steer",
|
|
4656
|
-
"memory-edit",
|
|
4657
|
-
"script-search",
|
|
4658
|
-
"steer-task",
|
|
4659
|
-
"kv-list",
|
|
4660
|
-
"get-config"
|
|
4661
|
-
]);
|
|
4662
|
-
DEFERRED_TOOLS = new Set([
|
|
4663
|
-
"list-schedules",
|
|
4664
|
-
"create-schedule",
|
|
4665
|
-
"update-schedule",
|
|
4666
|
-
"patch-schedule",
|
|
4667
|
-
"delete-schedule",
|
|
4668
|
-
"run-schedule-now",
|
|
4669
|
-
"create-workflow",
|
|
4670
|
-
"list-workflows",
|
|
4671
|
-
"get-workflow",
|
|
4672
|
-
"update-workflow",
|
|
4673
|
-
"patch-workflow",
|
|
4674
|
-
"patch-workflow-node",
|
|
4675
|
-
"delete-workflow",
|
|
4676
|
-
"trigger-workflow",
|
|
4677
|
-
"list-workflow-runs",
|
|
4678
|
-
"get-workflow-run",
|
|
4679
|
-
"retry-workflow-run",
|
|
4680
|
-
"cancel-workflow-run",
|
|
4681
|
-
"register-service",
|
|
4682
|
-
"unregister-service",
|
|
4683
|
-
"list-services",
|
|
4684
|
-
"update-service-status",
|
|
4685
|
-
"set-config",
|
|
4686
|
-
"list-config",
|
|
4687
|
-
"delete-config",
|
|
4688
|
-
"credential-bindings",
|
|
4689
|
-
"script-connections",
|
|
4690
|
-
"model-catalog-refresh",
|
|
4691
|
-
"model-catalog-overlay-upsert",
|
|
4692
|
-
"update-repo",
|
|
4693
|
-
"update-profile",
|
|
4694
|
-
"context-history",
|
|
4695
|
-
"context-diff",
|
|
4696
|
-
"read-messages",
|
|
4697
|
-
"post-message",
|
|
4698
|
-
"slack-reply",
|
|
4699
|
-
"slack-read",
|
|
4700
|
-
"slack-upload-file",
|
|
4701
|
-
"slack-download-file",
|
|
4702
|
-
"slack-list-channels",
|
|
4703
|
-
"slack-post",
|
|
4704
|
-
"slack-start-thread",
|
|
4705
|
-
"slack-create-channel",
|
|
4706
|
-
"slack-invite-to-channel",
|
|
4707
|
-
"slack-archive-channel",
|
|
4708
|
-
"slack-delete",
|
|
4709
|
-
"slack-update",
|
|
4710
|
-
"create-channel",
|
|
4711
|
-
"delete-channel",
|
|
4712
|
-
"list-channels",
|
|
4713
|
-
"register-agentmail-inbox",
|
|
4714
|
-
"register-kapso-number",
|
|
4715
|
-
"unregister-kapso-number",
|
|
4716
|
-
"send-whatsapp-message",
|
|
4717
|
-
"reply-whatsapp-message",
|
|
4718
|
-
"tracker-status",
|
|
4719
|
-
"get-oauth-access-token",
|
|
4720
|
-
"tracker-link-task",
|
|
4721
|
-
"tracker-unlink",
|
|
4722
|
-
"tracker-sync-status",
|
|
4723
|
-
"tracker-map-agent",
|
|
4724
|
-
"list-prompt-templates",
|
|
4725
|
-
"get-prompt-template",
|
|
4726
|
-
"set-prompt-template",
|
|
4727
|
-
"delete-prompt-template",
|
|
4728
|
-
"preview-prompt-template",
|
|
4729
|
-
"create_metric",
|
|
4730
|
-
"request-human-input",
|
|
4731
|
-
"cancel-approval-request",
|
|
4732
|
-
"skill-create",
|
|
4733
|
-
"skill-update",
|
|
4734
|
-
"skill-delete",
|
|
4735
|
-
"skill-get",
|
|
4736
|
-
"skill-get-file",
|
|
4737
|
-
"skill-list",
|
|
4738
|
-
"skill-search",
|
|
4739
|
-
"skill-install",
|
|
4740
|
-
"skill-uninstall",
|
|
4741
|
-
"skill-install-remote",
|
|
4742
|
-
"skill-sync-remote",
|
|
4743
|
-
"skill-publish",
|
|
4744
|
-
"mcp-server-create",
|
|
4745
|
-
"mcp-server-delete",
|
|
4746
|
-
"mcp-server-get",
|
|
4747
|
-
"mcp-server-install",
|
|
4748
|
-
"mcp-server-list",
|
|
4749
|
-
"mcp-server-uninstall",
|
|
4750
|
-
"mcp-server-update",
|
|
4751
|
-
"resolve-user",
|
|
4752
|
-
"manage-user",
|
|
4753
|
-
"app-get",
|
|
4754
|
-
"app-list",
|
|
4755
|
-
"app-patch",
|
|
4756
|
-
"app-query",
|
|
4757
|
-
"app-sync",
|
|
4758
|
-
"app-upsert",
|
|
4759
|
-
"app-history",
|
|
4760
|
-
"app-diff",
|
|
4761
|
-
"app-rollback",
|
|
4762
|
-
"create_page",
|
|
4763
|
-
"delete-page",
|
|
4764
|
-
"kv-set",
|
|
4765
|
-
"kv-delete",
|
|
4766
|
-
"kv-incr",
|
|
4767
|
-
"room-get",
|
|
4768
|
-
"room-change",
|
|
4769
|
-
"room-reset",
|
|
4770
|
-
"room-decode",
|
|
4771
|
-
"script-upsert",
|
|
4772
|
-
"script-delete",
|
|
4773
|
-
"script-apis",
|
|
4774
|
-
"launch-script-run",
|
|
4775
|
-
"get-script-run",
|
|
4776
|
-
"list-script-runs",
|
|
4777
|
-
"extension-delete",
|
|
4778
|
-
"extension-enable",
|
|
4779
|
-
"extension-disable",
|
|
4780
|
-
"extension-activate-version",
|
|
4781
|
-
"extension-catalog",
|
|
4782
|
-
"extension-install",
|
|
4783
|
-
"extension-list",
|
|
4784
|
-
"swarm_x",
|
|
4785
|
-
"cancel-task",
|
|
4786
|
-
"inject-learning",
|
|
4787
|
-
"get-metrics"
|
|
4788
|
-
]);
|
|
4789
|
-
ALL_TOOLS = new Set([...CORE_TOOLS, ...DEFERRED_TOOLS]);
|
|
4790
|
-
});
|
|
4791
|
-
|
|
4792
4690
|
// src/utils/task-tool-manifest.ts
|
|
4793
4691
|
function parseTaskToolManifest(value) {
|
|
4794
4692
|
return taskToolManifestSchema.parse(JSON.parse(value));
|
|
@@ -4816,6 +4714,12 @@ function tierConfigKey(provider, tier) {
|
|
|
4816
4714
|
function isTierConfigKey(key) {
|
|
4817
4715
|
return TIER_CONFIG_KEY_RE.test(key.toUpperCase());
|
|
4818
4716
|
}
|
|
4717
|
+
function tierConfigKeyProvider(key) {
|
|
4718
|
+
const match = TIER_CONFIG_KEY_RE.exec(key.toUpperCase());
|
|
4719
|
+
if (!match)
|
|
4720
|
+
return null;
|
|
4721
|
+
return ProviderNameSchema.options.find((p) => p.toUpperCase().replace(/-/g, "_") === match[1]) ?? null;
|
|
4722
|
+
}
|
|
4819
4723
|
function validateTierConfigValue(key, value) {
|
|
4820
4724
|
const message = `Invalid ${key} (expected a model id, a CLI alias such as "opus", or latest:<anthropic|openai|openrouter>/<target>[@stable|@any])`;
|
|
4821
4725
|
if (typeof value !== "string")
|
|
@@ -4825,12 +4729,17 @@ function validateTierConfigValue(key, value) {
|
|
|
4825
4729
|
return message;
|
|
4826
4730
|
if (isAlias(trimmed) && !parseAlias(trimmed))
|
|
4827
4731
|
return message;
|
|
4732
|
+
const provider = tierConfigKeyProvider(key);
|
|
4733
|
+
if (provider && harnessModelMismatch(trimmed, provider, runtimeHarnessSections())) {
|
|
4734
|
+
return `Invalid ${key}: model "${trimmed}" does not run on the ${provider} harness.`;
|
|
4735
|
+
}
|
|
4828
4736
|
return null;
|
|
4829
4737
|
}
|
|
4830
4738
|
var TIER_CONFIG_KEY_RE;
|
|
4831
4739
|
var init_model_tier_keys = __esm(() => {
|
|
4832
4740
|
init_src();
|
|
4833
4741
|
init_types();
|
|
4742
|
+
init_runtime_model_catalog();
|
|
4834
4743
|
TIER_CONFIG_KEY_RE = new RegExp(`^MODEL_TIER_(${ProviderNameSchema.options.map((p) => p.toUpperCase().replace(/-/g, "_")).join("|")})_(${MODEL_TIERS.map((t) => t.toUpperCase()).join("|")})$`);
|
|
4835
4744
|
});
|
|
4836
4745
|
|
|
@@ -5029,11 +4938,15 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
5029
4938
|
"POOL_AFFINITY_ENFORCEMENT",
|
|
5030
4939
|
"SCRIPTS_ONLY_MCP",
|
|
5031
4940
|
"TASK_TOOL_PRELOAD_ENABLED",
|
|
4941
|
+
"PI_TOOL_DEFERRAL",
|
|
4942
|
+
"PI_CODEMODE",
|
|
4943
|
+
"PI_CODEMODE_MODELS",
|
|
5032
4944
|
"SLACK_DISABLE",
|
|
5033
4945
|
"SLACK_RENDER_V2",
|
|
5034
4946
|
"SLACK_RENDER_V2_DELEGATION",
|
|
5035
4947
|
"GITHUB_DISABLE",
|
|
5036
4948
|
"GITLAB_DISABLE",
|
|
4949
|
+
"AZURE_DEVOPS_DISABLE",
|
|
5037
4950
|
"LINEAR_DISABLE",
|
|
5038
4951
|
"JIRA_DISABLE",
|
|
5039
4952
|
"AGENTMAIL_DISABLE",
|
|
@@ -5042,6 +4955,7 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
5042
4955
|
"RBAC_ENABLED",
|
|
5043
4956
|
"SEED_AUTOMATIONS_ENABLED",
|
|
5044
4957
|
"RBAC_AUDIT_DISABLED",
|
|
4958
|
+
"EXTENSION_ALLOW_INLINE_INSTALL",
|
|
5045
4959
|
"BUDGET_ADMISSION_DISABLED",
|
|
5046
4960
|
"MCP_OAUTH_ALLOW_PRIVATE_HOSTS",
|
|
5047
4961
|
"OTEL_TRACE_POLL",
|
|
@@ -5089,7 +5003,12 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
5089
5003
|
"SLACK_TREE_STALL_MIN"
|
|
5090
5004
|
], 1),
|
|
5091
5005
|
...boundedIntegerValidatorsFor(DB_RETENTION_TUNING_BOUNDS),
|
|
5092
|
-
...boundedIntegerValidators([
|
|
5006
|
+
...boundedIntegerValidators([
|
|
5007
|
+
"SESSION_LOG_RETENTION_DAYS",
|
|
5008
|
+
"AGENT_LOG_RETENTION_DAYS",
|
|
5009
|
+
"EVENTS_RETENTION_DAYS",
|
|
5010
|
+
"CONTEXT_VERSIONS_KEEP_LATEST"
|
|
5011
|
+
], 1, MAX_DB_RETENTION_DAYS),
|
|
5093
5012
|
...integerValidators(["HEARTBEAT_MAX_AUTO_ASSIGN"], 0),
|
|
5094
5013
|
...integerValidators(["MODEL_LATEST_SOAK_DAYS"], 0),
|
|
5095
5014
|
...integerValidators(["APPROVAL_REQUEST_AUTO_CANCELLATION_DAYS"], 0),
|
|
@@ -5099,6 +5018,43 @@ var init_swarm_config_guard = __esm(() => {
|
|
|
5099
5018
|
};
|
|
5100
5019
|
});
|
|
5101
5020
|
|
|
5021
|
+
// src/be/db/api-keys.ts
|
|
5022
|
+
async function recordKeySeatMismatch(keyType, keySuffix, keyIndex, model, scope = "global", scopeId = null) {
|
|
5023
|
+
const now = new Date().toISOString();
|
|
5024
|
+
const effectiveScopeId = scopeId ?? "";
|
|
5025
|
+
const provider = deriveProviderFromKeyType(keyType);
|
|
5026
|
+
return getDbClient().transaction(async (tx) => {
|
|
5027
|
+
await tx.run(`INSERT INTO api_key_status (keyType, keySuffix, keyIndex, scope, scopeId, provider, updatedAt)
|
|
5028
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
5029
|
+
ON CONFLICT(keyType, keySuffix, scope, scopeId)
|
|
5030
|
+
DO UPDATE SET
|
|
5031
|
+
keyIndex = excluded.keyIndex,
|
|
5032
|
+
provider = excluded.provider,
|
|
5033
|
+
updatedAt = excluded.updatedAt`, [keyType, keySuffix, keyIndex, scope, effectiveScopeId, provider, now]);
|
|
5034
|
+
await tx.run(`UPDATE api_key_status SET lastSeatMismatchAt = ?, lastSeatMismatchModel = ?
|
|
5035
|
+
WHERE keyType = ? AND keySuffix = ?`, [now, model, keyType, keySuffix]);
|
|
5036
|
+
let planChanged = false;
|
|
5037
|
+
if (keyType === "CLAUDE_CODE_OAUTH_TOKEN" && !planAllowsModelFamily("claude_team_standard", model)) {
|
|
5038
|
+
const result = await tx.run(`UPDATE api_key_status SET plan = 'claude_team_standard', planSource = 'detected'
|
|
5039
|
+
WHERE keyType = ? AND keySuffix = ? AND COALESCE(planSource, '') != 'manual'`, [keyType, keySuffix]);
|
|
5040
|
+
planChanged = result.changes > 0;
|
|
5041
|
+
}
|
|
5042
|
+
if (!planChanged) {
|
|
5043
|
+
const stored = await tx.get(`SELECT plan FROM api_key_status
|
|
5044
|
+
WHERE keyType = ? AND keySuffix = ? AND scope = ? AND scopeId = ?`, [keyType, keySuffix, scope, effectiveScopeId]);
|
|
5045
|
+
if (planAllowsModelFamily(stored?.plan, model)) {
|
|
5046
|
+
console.warn(`[api-keys] seat mismatch: key ...${keySuffix} (${keyType}) has plan ${stored?.plan ?? "none"} but cannot run ${model}`);
|
|
5047
|
+
}
|
|
5048
|
+
}
|
|
5049
|
+
return { planChanged };
|
|
5050
|
+
});
|
|
5051
|
+
}
|
|
5052
|
+
var init_api_keys = __esm(() => {
|
|
5053
|
+
init_credentials();
|
|
5054
|
+
init_subscription_plans();
|
|
5055
|
+
init_runtime();
|
|
5056
|
+
});
|
|
5057
|
+
|
|
5102
5058
|
// src/be/db.ts
|
|
5103
5059
|
var exports_db = {};
|
|
5104
5060
|
__export(exports_db, {
|
|
@@ -5446,6 +5402,7 @@ __export(exports_db, {
|
|
|
5446
5402
|
isPendingSlackMessage: () => isPendingSlackMessage,
|
|
5447
5403
|
isPoolAffinityEnforcementEnabled: () => isPoolAffinityEnforcementEnabled,
|
|
5448
5404
|
isSettledSlackMessage: () => isSettledSlackMessage,
|
|
5405
|
+
isSlackThreadAwaitingHuman: () => isSlackThreadAwaitingHuman,
|
|
5449
5406
|
isSqliteVecAvailable: () => isSqliteVecAvailable,
|
|
5450
5407
|
kvPrefixUpperBound: () => kvPrefixUpperBound,
|
|
5451
5408
|
listAgentsWithCredStatusByProvider: () => listAgentsWithCredStatusByProvider,
|
|
@@ -5467,6 +5424,7 @@ __export(exports_db, {
|
|
|
5467
5424
|
listScriptRuns: () => listScriptRuns,
|
|
5468
5425
|
listSkillFileManifest: () => listSkillFileManifest,
|
|
5469
5426
|
listSkills: () => listSkills,
|
|
5427
|
+
listSlackThreadsAwaitingHuman: () => listSlackThreadsAwaitingHuman,
|
|
5470
5428
|
listTaskTemplates: () => listTaskTemplates,
|
|
5471
5429
|
listUserFavorites: () => listUserFavorites,
|
|
5472
5430
|
listWorkflowRuns: () => listWorkflowRuns,
|
|
@@ -5500,9 +5458,12 @@ __export(exports_db, {
|
|
|
5500
5458
|
reassociateSessionLogs: () => reassociateSessionLogs,
|
|
5501
5459
|
recordBudgetRefusalNotification: () => recordBudgetRefusalNotification,
|
|
5502
5460
|
recordInlineScriptRun: () => recordInlineScriptRun,
|
|
5461
|
+
recordKeyAuthFailure: () => recordKeyAuthFailure,
|
|
5503
5462
|
recordKeyRateLimitWindows: () => recordKeyRateLimitWindows,
|
|
5463
|
+
recordKeySeatMismatch: () => recordKeySeatMismatch,
|
|
5504
5464
|
recordKeyUsage: () => recordKeyUsage,
|
|
5505
5465
|
recordSlackMessage: () => recordSlackMessage,
|
|
5466
|
+
recordTaskProviderIfUnset: () => recordTaskProviderIfUnset,
|
|
5506
5467
|
recordTaskPullRequestAttachments: () => recordTaskPullRequestAttachments,
|
|
5507
5468
|
refreshDraftTaskLease: () => refreshDraftTaskLease,
|
|
5508
5469
|
rejectTask: () => rejectTask,
|
|
@@ -5910,6 +5871,26 @@ async function getSlackTasksInThread(channelId, threadTs) {
|
|
|
5910
5871
|
ORDER BY createdAt ASC, rowid ASC`, [channelId, threadTs]);
|
|
5911
5872
|
return rows.map(rowToAgentTask);
|
|
5912
5873
|
}
|
|
5874
|
+
async function listSlackThreadsAwaitingHuman() {
|
|
5875
|
+
return getDbClient().query(`SELECT DISTINCT task.slackChannelId AS channelId, task.slackThreadTs AS threadTs
|
|
5876
|
+
FROM approval_requests request
|
|
5877
|
+
JOIN agent_tasks task ON task.id = request.sourceTaskId
|
|
5878
|
+
WHERE request.status = 'pending'
|
|
5879
|
+
AND (request.expiresAt IS NULL OR request.expiresAt > strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
5880
|
+
AND task.slackChannelId IS NOT NULL
|
|
5881
|
+
AND task.slackThreadTs IS NOT NULL`);
|
|
5882
|
+
}
|
|
5883
|
+
async function isSlackThreadAwaitingHuman(channelId, threadTs) {
|
|
5884
|
+
const row = await getDbClient().get(`SELECT 1 AS waiting
|
|
5885
|
+
FROM approval_requests request
|
|
5886
|
+
JOIN agent_tasks task ON task.id = request.sourceTaskId
|
|
5887
|
+
WHERE request.status = 'pending'
|
|
5888
|
+
AND (request.expiresAt IS NULL OR request.expiresAt > strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
5889
|
+
AND task.slackChannelId = ?
|
|
5890
|
+
AND task.slackThreadTs = ?
|
|
5891
|
+
LIMIT 1`, [channelId, threadTs]);
|
|
5892
|
+
return !!row;
|
|
5893
|
+
}
|
|
5913
5894
|
async function markTaskSlackReplySent(taskId) {
|
|
5914
5895
|
await getDbClient().run(`UPDATE agent_tasks SET slackReplySent = 1 WHERE id = ?`, [taskId]);
|
|
5915
5896
|
}
|
|
@@ -7356,7 +7337,7 @@ async function getUnassignedTaskIds(limit = 10) {
|
|
|
7356
7337
|
const rows = await getDbClient().query("SELECT id FROM agent_tasks WHERE status = 'unassigned' ORDER BY priority DESC, createdAt ASC, rowid ASC LIMIT ?", [limit]);
|
|
7357
7338
|
return rows.map((r) => r.id);
|
|
7358
7339
|
}
|
|
7359
|
-
async function getUnassignedTaskIdsForAgent(agentId, limit = 10) {
|
|
7340
|
+
async function getUnassignedTaskIdsForAgent(agentId, limit = 10, accept) {
|
|
7360
7341
|
const agent = await getAgentById(agentId);
|
|
7361
7342
|
if (!agent)
|
|
7362
7343
|
return [];
|
|
@@ -7369,7 +7350,7 @@ async function getUnassignedTaskIdsForAgent(agentId, limit = 10) {
|
|
|
7369
7350
|
break;
|
|
7370
7351
|
for (const row of rows) {
|
|
7371
7352
|
const task = rowToAgentTask(row);
|
|
7372
|
-
if (isAgentEligibleForTask(agent, task)) {
|
|
7353
|
+
if (isAgentEligibleForTask(agent, task) && (!accept || await accept(task))) {
|
|
7373
7354
|
eligible.push(task.id);
|
|
7374
7355
|
if (eligible.length >= limit)
|
|
7375
7356
|
break;
|
|
@@ -11650,8 +11631,8 @@ async function getAvailableKeyIndices(keyType, totalKeys, scope = "global", scop
|
|
|
11650
11631
|
await client.run(`UPDATE api_key_status
|
|
11651
11632
|
SET status = 'available', rateLimitedUntil = NULL, updatedAt = ?
|
|
11652
11633
|
WHERE keyType = ? AND scope = ? AND scopeId = ?
|
|
11653
|
-
AND status = 'rate_limited' AND rateLimitedUntil
|
|
11654
|
-
const rows = await client.query(`SELECT keyIndex, status, rateLimitWindows FROM api_key_status
|
|
11634
|
+
AND status = 'rate_limited' AND rateLimitedUntil <= ? AND consecutiveAuthFailures < ?`, [now, keyType, scope, effectiveScopeId, now, CODEX_AUTH_FAILURE_BENCH_THRESHOLD]);
|
|
11635
|
+
const rows = await client.query(`SELECT keyIndex, status, rateLimitWindows, plan, authFailureSeq FROM api_key_status
|
|
11655
11636
|
WHERE keyType = ? AND scope = ? AND scopeId = ?`, [keyType, scope, effectiveScopeId]);
|
|
11656
11637
|
const blockedIndices = new Set(rows.filter((r) => r.status === "rate_limited").map((r) => r.keyIndex));
|
|
11657
11638
|
const modelBlockedIndices = [];
|
|
@@ -11670,16 +11651,26 @@ async function getAvailableKeyIndices(keyType, totalKeys, scope = "global", scop
|
|
|
11670
11651
|
}
|
|
11671
11652
|
}
|
|
11672
11653
|
const modelBlockedSet = new Set(modelBlockedIndices);
|
|
11654
|
+
const seatBlockedIndices = [];
|
|
11655
|
+
if (modelFamily) {
|
|
11656
|
+
for (const row of rows) {
|
|
11657
|
+
if (!planAllowsModelFamily(row.plan, modelFamily))
|
|
11658
|
+
seatBlockedIndices.push(row.keyIndex);
|
|
11659
|
+
}
|
|
11660
|
+
}
|
|
11661
|
+
const seatBlockedSet = new Set(seatBlockedIndices);
|
|
11673
11662
|
const availableIndices = [];
|
|
11674
11663
|
for (let i = 0;i < totalKeys; i++) {
|
|
11675
|
-
if (blockedIndices.has(i) || modelBlockedSet.has(i))
|
|
11664
|
+
if (blockedIndices.has(i) || modelBlockedSet.has(i) || seatBlockedSet.has(i))
|
|
11676
11665
|
continue;
|
|
11677
11666
|
availableIndices.push(i);
|
|
11678
11667
|
}
|
|
11679
11668
|
return {
|
|
11680
11669
|
availableIndices,
|
|
11681
11670
|
modelBlockedIndices,
|
|
11682
|
-
|
|
11671
|
+
seatBlockedIndices,
|
|
11672
|
+
earliestModelResetAt: earliestModelResetsAtSec !== undefined ? new Date(earliestModelResetsAtSec * 1000).toISOString() : null,
|
|
11673
|
+
authFailureFence: Math.max(0, ...rows.map((r) => r.authFailureSeq))
|
|
11683
11674
|
};
|
|
11684
11675
|
}
|
|
11685
11676
|
async function recordKeyUsage(keyType, keySuffix, keyIndex, taskId, scope = "global", scopeId = null, plan = null) {
|
|
@@ -11726,12 +11717,50 @@ async function markKeyRateLimited(keyType, keySuffix, keyIndex, rateLimitedUntil
|
|
|
11726
11717
|
ON CONFLICT(keyType, keySuffix, scope, scopeId)
|
|
11727
11718
|
DO UPDATE SET
|
|
11728
11719
|
status = 'rate_limited',
|
|
11729
|
-
rateLimitedUntil = excluded.rateLimitedUntil,
|
|
11720
|
+
rateLimitedUntil = CASE WHEN status = 'rate_limited' AND consecutiveAuthFailures >= ${CODEX_AUTH_FAILURE_BENCH_THRESHOLD} THEN MAX(COALESCE(rateLimitedUntil, ''), excluded.rateLimitedUntil) ELSE excluded.rateLimitedUntil END,
|
|
11730
11721
|
lastRateLimitAt = excluded.lastRateLimitAt,
|
|
11731
11722
|
rateLimitCount = rateLimitCount + 1,
|
|
11732
11723
|
keyIndex = excluded.keyIndex,
|
|
11733
11724
|
updatedAt = excluded.updatedAt`, [keyType, keySuffix, keyIndex, scope, effectiveScopeId, rateLimitedUntil, now, provider, now]);
|
|
11734
11725
|
}
|
|
11726
|
+
async function recordKeyAuthFailure(keyType, keySuffix, keyIndex, scope = "global", scopeId = null) {
|
|
11727
|
+
const effectiveScopeId = scopeId ?? "";
|
|
11728
|
+
const provider = deriveProviderFromKeyType(keyType);
|
|
11729
|
+
return await getDbClient().transaction(async (tx) => {
|
|
11730
|
+
const now = new Date().toISOString();
|
|
11731
|
+
const source2 = "report-auth-failure";
|
|
11732
|
+
const row = await tx.get(`INSERT INTO api_key_status (keyType, keySuffix, keyIndex, scope, scopeId, status, consecutiveAuthFailures, lastAuthFailureAt, authFailureSeq, provider, updatedAt)
|
|
11733
|
+
VALUES (?, ?, ?, ?, ?, 'available', 1, ?, (SELECT COALESCE(MAX(authFailureSeq), 0) + 1 FROM api_key_status), ?, ?)
|
|
11734
|
+
ON CONFLICT(keyType, keySuffix, scope, scopeId)
|
|
11735
|
+
DO UPDATE SET
|
|
11736
|
+
consecutiveAuthFailures = consecutiveAuthFailures + 1,
|
|
11737
|
+
lastAuthFailureAt = excluded.lastAuthFailureAt, authFailureSeq = excluded.authFailureSeq,
|
|
11738
|
+
keyIndex = excluded.keyIndex, updatedAt = excluded.updatedAt
|
|
11739
|
+
RETURNING consecutiveAuthFailures, rateLimitedUntil`, [keyType, keySuffix, keyIndex, scope, effectiveScopeId, now, provider, now]);
|
|
11740
|
+
if (!row)
|
|
11741
|
+
throw new Error("Failed to record auth failure");
|
|
11742
|
+
const { consecutiveAuthFailures } = row;
|
|
11743
|
+
if (consecutiveAuthFailures < CODEX_AUTH_FAILURE_BENCH_THRESHOLD) {
|
|
11744
|
+
return { consecutiveAuthFailures, benched: false, rateLimitedUntil: row.rateLimitedUntil };
|
|
11745
|
+
}
|
|
11746
|
+
let benchedUntil = new Date(Date.parse(now) + CODEX_AUTH_FAILURE_BENCH_MS).toISOString();
|
|
11747
|
+
if (row.rateLimitedUntil && Date.parse(row.rateLimitedUntil) > Date.parse(benchedUntil)) {
|
|
11748
|
+
benchedUntil = row.rateLimitedUntil;
|
|
11749
|
+
}
|
|
11750
|
+
await tx.run(`UPDATE api_key_status
|
|
11751
|
+
SET status = 'rate_limited', rateLimitedUntil = ?, lastRateLimitAt = ?,
|
|
11752
|
+
rateLimitCount = rateLimitCount + 1, updatedAt = ?
|
|
11753
|
+
WHERE keyType = ? AND keySuffix = ? AND scope = ? AND scopeId = ?`, [benchedUntil, now, now, keyType, keySuffix, scope, effectiveScopeId]);
|
|
11754
|
+
await upsertKv({
|
|
11755
|
+
namespace: CODEX_AUTH_WATCH_NAMESPACE,
|
|
11756
|
+
key: codexAuthBenchMarkerKey(keySuffix),
|
|
11757
|
+
valueType: "json",
|
|
11758
|
+
value: { keyIndex, keyType, benchedAt: now, benchedUntil, lastFailAt: now, source: source2 },
|
|
11759
|
+
expiresAt: Date.parse(benchedUntil) + 86400000
|
|
11760
|
+
});
|
|
11761
|
+
return { consecutiveAuthFailures, benched: true, rateLimitedUntil: benchedUntil };
|
|
11762
|
+
});
|
|
11763
|
+
}
|
|
11735
11764
|
function mergeRateLimitWindowTelemetry(stored, reported) {
|
|
11736
11765
|
const merged = { ...stored };
|
|
11737
11766
|
for (const [type, entry] of Object.entries(reported)) {
|
|
@@ -11798,14 +11827,32 @@ async function setApiKeyName(keyType, keySuffix, name, scope = "global", scopeId
|
|
|
11798
11827
|
WHERE keyType = ? AND keySuffix = ? AND scope = ? AND scopeId = ?`, [name, new Date().toISOString(), keyType, keySuffix, scope, scopeId ?? ""]);
|
|
11799
11828
|
return result.changes > 0;
|
|
11800
11829
|
}
|
|
11801
|
-
async function clearKeyRateLimit(keyType, keySuffix, scope = "global", scopeId = null) {
|
|
11830
|
+
async function clearKeyRateLimit(keyType, keySuffix, scope = "global", scopeId = null, opts = {}) {
|
|
11802
11831
|
const now = new Date().toISOString();
|
|
11803
11832
|
const effectiveScopeId = scopeId ?? "";
|
|
11804
|
-
const
|
|
11805
|
-
|
|
11806
|
-
|
|
11807
|
-
|
|
11808
|
-
|
|
11833
|
+
const { keyIndex = -1, authFence = null } = opts;
|
|
11834
|
+
const clearAuthBench = opts.clearAuthBench === true && authFence !== null;
|
|
11835
|
+
const key = [keyType, keySuffix, scope, effectiveScopeId];
|
|
11836
|
+
return await getDbClient().transaction(async (tx) => {
|
|
11837
|
+
const result = await tx.run(`UPDATE api_key_status
|
|
11838
|
+
SET status = 'available', rateLimitedUntil = NULL, updatedAt = ?
|
|
11839
|
+
WHERE keyType = ? AND keySuffix = ? AND scope = ? AND scopeId = ?
|
|
11840
|
+
AND status = 'rate_limited' AND ((? AND authFailureSeq <= ?) OR consecutiveAuthFailures < ?)`, [now, ...key, clearAuthBench ? 1 : 0, authFence, CODEX_AUTH_FAILURE_BENCH_THRESHOLD]);
|
|
11841
|
+
const cleared = result.changes > 0;
|
|
11842
|
+
if (!clearAuthBench)
|
|
11843
|
+
return cleared;
|
|
11844
|
+
const lifted = await tx.query(`UPDATE api_key_status SET consecutiveAuthFailures = 0, updatedAt = ?1,
|
|
11845
|
+
status = CASE WHEN keySuffix = ?2 THEN status ELSE 'available' END, rateLimitedUntil = CASE WHEN keySuffix = ?2 THEN rateLimitedUntil END
|
|
11846
|
+
WHERE keyType = ?3 AND scope = ?4 AND scopeId = ?5 AND (consecutiveAuthFailures > 0 OR status = 'rate_limited')
|
|
11847
|
+
AND ((keySuffix = ?2 AND authFailureSeq <= ?7) OR (keySuffix != ?2 AND keyIndex = ?6)) RETURNING keySuffix`, [now, keySuffix, keyType, scope, effectiveScopeId, keyIndex, authFence]);
|
|
11848
|
+
const retired = lifted.filter((row) => row.keySuffix !== keySuffix);
|
|
11849
|
+
if (keyType === "CODEX_OAUTH") {
|
|
11850
|
+
for (const suffix of [...cleared ? [keySuffix] : [], ...retired.map((r) => r.keySuffix)]) {
|
|
11851
|
+
await deleteKv(CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey(suffix));
|
|
11852
|
+
}
|
|
11853
|
+
}
|
|
11854
|
+
return cleared || retired.length > 0;
|
|
11855
|
+
});
|
|
11809
11856
|
}
|
|
11810
11857
|
async function getKeyStatuses(keyType, scope, scopeId) {
|
|
11811
11858
|
const conditions = [];
|
|
@@ -12998,6 +13045,7 @@ var init_db = __esm(() => {
|
|
|
12998
13045
|
init_slack_routing();
|
|
12999
13046
|
init_telemetry();
|
|
13000
13047
|
init_types();
|
|
13048
|
+
init_codex_auth_failure();
|
|
13001
13049
|
init_credentials();
|
|
13002
13050
|
init_github_pull_request();
|
|
13003
13051
|
init_heartbeat_expiry();
|
|
@@ -13020,6 +13068,7 @@ var init_db = __esm(() => {
|
|
|
13020
13068
|
init_swarm_config_guard();
|
|
13021
13069
|
init_task_lifecycle_events();
|
|
13022
13070
|
init_agents();
|
|
13071
|
+
init_api_keys();
|
|
13023
13072
|
init_approvals();
|
|
13024
13073
|
init_context_versions();
|
|
13025
13074
|
init_runtime();
|
|
@@ -13076,4 +13125,4 @@ var init_db = __esm(() => {
|
|
|
13076
13125
|
};
|
|
13077
13126
|
});
|
|
13078
13127
|
|
|
13079
|
-
export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, telemetry, emitIntegrationConnected, init_telemetry, HeartbeatExpiryError, init_heartbeat_expiry, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, init_request_auth_context, auditAssetKeys, init_asset_key_audit, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, normalizeDate, normalizeDateRequired, init_date_utils, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, isInTransaction, init_db_client, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, 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, listApprovalRequestSummaries, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, 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, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, onTaskStarted, init_task_lifecycle_events, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateConfigValue, init_swarm_config_guard, getSlackRenderV2ActivatedAt, ensureSlackRenderV2Activation, getSlackDelegationActivatedAt, ensureSlackDelegationActivation, isPendingSlackMessage, isSettledSlackMessage, recordSlackMessage, reserveSlackMessage, bindSlackMessageTimestamp, updateSlackMessageRecord, markSlackTreeRendered, deleteSlackMessageRecord, getSlackTreeMessage, getSlackTreeMessageByThread, getSlackOutcomeMessage, getResolvableDeferralOutcomes, markSlackDeferralResolved, noteSlackOutcomeDeliveryFailure, abandonSlackOutcomeDelivery, getSlackTreeMessages, getSlackMessageByChannelTs, getSlackTasksInThread, 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, 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_db };
|
|
13128
|
+
export { slackContextKey, agentmailContextKey, githubContextKey, gitlabContextKey, azureDevOpsContextKey, linearContextKey, buildJiraContextKey, scheduleContextKey, workflowContextKey, agentContextKey, pageContextKey, init_context_key, checkSlackRoutingCoherence, init_slack_routing, isTelemetryEnabled, _resolveIntegrationType, _resolveIntegrationProvider, initTelemetry, telemetry, emitIntegrationConnected, init_telemetry, CODEX_AUTH_WATCH_NAMESPACE, codexAuthBenchMarkerKey, isCodexAuthFailureReason, init_codex_auth_failure, HeartbeatExpiryError, init_heartbeat_expiry, beginRequestAuthScope, setRequestAuth, getRequestAuth, getCurrentRequestAuth, runWithoutRequestAuth, init_request_auth_context, auditAssetKeys, init_asset_key_audit, encryptSecret, decryptSecret, getEncryptionKey, init_crypto, normalizeDate, normalizeDateRequired, init_date_utils, CredentialBindingSchema, placeholderForConfigKey, CredentialBroker, DEFAULT_CREDENTIAL_BINDINGS, init_credential_broker, isInTransaction, init_db_client, getPromptTemplateDefaultDrift, init_default_drift, init_templates2 as init_templates, isSqliteVecAvailable, resolveSqliteVecExtensionPath, __resetSqliteVecExtensionPathCacheForTests, initDb, getDb, closeDb, getDbClient, 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, listApprovalRequestSummaries, computeContentHash, createContextVersion, getLatestContextVersion, getContextVersion, getContextVersionHistory, setHumanFreeQueueListener, drainHumanFreeReclassifyQueue, init_human_free, 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, findExistingLinearTrackerContextWork, getLatestTaskByContextKey, getLatestScriptRunStepTaskByContextKey, getAgentWorkingOnThread, getLatestActiveTaskInThread, getLatestLeadTaskInThread, getMostRecentTaskInThread, findCompletedTaskInThread, findRecentCancelledTaskInThread, onTaskStarted, init_task_lifecycle_events, createTask, getPendingTaskForAgent, assignUnassignedTaskPending, startTask, updateTaskClaudeSessionId, recordTaskProviderIfUnset, updateTaskTitle, completeTask, failTask, overwriteTerminalTaskResultText, cancelTask, supersedeTask, settleSupersededTaskDependents, backfillSupersedeTaskResumeTaskId, pauseTask, resumeTask, getPausedTasksForAgent, getOrphanedInProgressTasksForAgent, resetOrphanedInProgressTasksForAgent, getRecentlyCancelledTasksForAgent, deleteTask, updateTaskProgress, SteeringRequestError, isSteeringEnabled2 as isSteeringEnabled, getTaskSteeringFields, getTaskSteeringFieldsForTasks, promotePendingSteeringForTask, markSteeringUndeliverable, requestSteering, init_steering, SLACK_REACTION_DEFAULTS, SLACK_REACTION_CONFIG_KEYS, reactionName, init_reaction_shortcode, parseTaskToolManifest, selectTaskTools, init_task_tool_manifest, tierConfigKey, init_model_tier_keys, isInternalConfigKey, internalConfigKeyError, isReservedConfigKey, reservedKeyError, MAX_DB_RETENTION_DAYS, DB_RETENTION_TUNING_BOUNDS, validateConfigValue, init_swarm_config_guard, recordKeySeatMismatch, 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_db };
|