@desplega.ai/agent-swarm 1.158.0 → 1.160.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-xaq4n6pc.js → acp-adapter-2mjwcsfh.js} +124 -27
  3. package/dist/{actions-p9hz5yat.js → actions-e43rxskr.js} +35 -30
  4. package/dist/{anthropic-messages-51pz26qe.js → anthropic-messages-5qx80j9k.js} +106 -16
  5. package/dist/{app-g26wdcz6.js → app-mc7xfagn.js} +12 -10
  6. package/dist/{assistant-wydfqkb3.js → assistant-sedkzv3b.js} +42 -31
  7. package/dist/{azure-openai-responses-8gksqtmz.js → azure-openai-responses-nfb21z9a.js} +13 -14
  8. package/dist/{boot-reembed-se8zmdcp.js → boot-reembed-cqz9swn5.js} +13 -12
  9. package/dist/{boot-reembed-g5ckg9yb.js → boot-reembed-m3656j2n.js} +14 -13
  10. package/dist/{boot-scrub-logs-wfxqan61.js → boot-scrub-logs-xbxf5d7w.js} +11 -9
  11. package/dist/boot-seeds-gsetbs5y.js +28 -0
  12. package/dist/{claude-adapter-tv2x4f36.js → claude-adapter-dc6289mc.js} +28 -23
  13. package/dist/{claude-managed-adapter-41b2s7fd.js → claude-managed-adapter-naaw51me.js} +4 -3
  14. package/dist/{claude-managed-setup-60g8aazx.js → claude-managed-setup-eacvchx0.js} +12 -3
  15. package/dist/claude-sdk-session-bqp2xvym.js +29722 -0
  16. package/dist/{cli-987hg0aa.js → cli-0jwe9034.js} +2 -2
  17. package/dist/{cli-vj6h9kc2.js → cli-0m7wct0d.js} +59 -1
  18. package/dist/{cli-c07r9a2m.js → cli-0q3avq3s.js} +12 -11
  19. package/dist/{cli-19jenss3.js → cli-0wgxmwf6.js} +31 -10
  20. package/dist/cli-0x01kwrd.js +491 -0
  21. package/dist/cli-0xqde53b.js +176 -0
  22. package/dist/cli-10nhj6xq.js +8355 -0
  23. package/dist/{cli-tt9k8r35.js → cli-12tszpk9.js} +479 -910
  24. package/dist/{cli-5b6b62tz.js → cli-13hw4z91.js} +1 -1
  25. package/dist/{cli-cqt19wg6.js → cli-1a2j50m0.js} +11 -2
  26. package/dist/{cli-xberxa1r.js → cli-25fcq4b4.js} +2 -2
  27. package/dist/{cli-npssxgaz.js → cli-2pdaysab.js} +52 -2
  28. package/dist/cli-3qhyh31j.js +166 -0
  29. package/dist/cli-447dt1h3.js +3828 -0
  30. package/dist/cli-4derpgyk.js +115 -0
  31. package/dist/{cli-00w2c66p.js → cli-523679eh.js} +13 -2
  32. package/dist/{cli-y95wp3tg.js → cli-58e8yr0d.js} +1 -1
  33. package/dist/{cli-24k806sc.js → cli-5nbmpy8w.js} +3 -3
  34. package/dist/{cli-53sz8gkz.js → cli-6cs6wzxt.js} +1 -1
  35. package/dist/cli-741yb0xx.js +1027 -0
  36. package/dist/cli-74h9hscv.js +69 -0
  37. package/dist/cli-7cxw8b60.js +14910 -0
  38. package/dist/{cli-xhaeg2nc.js → cli-7e398j1h.js} +1 -1
  39. package/dist/cli-7kyk9jr3.js +22 -0
  40. package/dist/cli-89s4ngw3.js +183 -0
  41. package/dist/{cli-9b13ggd1.js → cli-89v6kyq7.js} +1 -0
  42. package/dist/{cli-ftfvggzx.js → cli-9hsgwz4w.js} +1045 -581
  43. package/dist/{cli-rqz8qbw7.js → cli-a8dvhzrt.js} +59 -20
  44. package/dist/{cli-j57qkrpq.js → cli-azhgzetg.js} +395 -56
  45. package/dist/cli-br0qdrnp.js +2150 -0
  46. package/dist/{cli-rj19hc34.js → cli-btfv8y88.js} +1 -1
  47. package/dist/{cli-8qmme6vd.js → cli-c8a36vcc.js} +2 -2
  48. package/dist/cli-cpvsaqsw.js +333 -0
  49. package/dist/cli-d5czme6m.js +17805 -0
  50. package/dist/{cli-h38x0qhg.js → cli-et8m9xsv.js} +4 -3
  51. package/dist/{cli-x24pshtq.js → cli-evvtk35y.js} +6 -6
  52. package/dist/{cli-7s3syk22.js → cli-f8gy6r2r.js} +5 -5
  53. package/dist/{cli-zt1227k1.js → cli-fkqhbg8g.js} +5 -3
  54. package/dist/{cli-9httdpyq.js → cli-g2whhdrf.js} +1 -1
  55. package/dist/cli-gt4hxb8p.js +99 -0
  56. package/dist/{cli-s8eet254.js → cli-jajnsm8q.js} +37184 -53838
  57. package/dist/{cli-7gtvvpbh.js → cli-jayjpjmb.js} +21 -12
  58. package/dist/{cli-68w09sjw.js → cli-jyk0ynw2.js} +27 -89
  59. package/dist/{cli-aehm1rbq.js → cli-jz4w45qt.js} +1152 -61
  60. package/dist/cli-kmcpfwn2.js +333856 -0
  61. package/dist/{cli-4198qc9v.js → cli-ktmyrtpn.js} +19 -3
  62. package/dist/{cli-j55n64b6.js → cli-mfe5btp9.js} +505 -189
  63. package/dist/{cli-q67y4wzm.js → cli-phsaj4xq.js} +24 -2
  64. package/dist/{cli-1hkrch3k.js → cli-pm1rst0h.js} +46 -7
  65. package/dist/{cli-pw9rj5t9.js → cli-pqetb83f.js} +1 -176
  66. package/dist/{cli-ggm92wcn.js → cli-ptr8h7kp.js} +20 -1
  67. package/dist/{cli-s8s499xy.js → cli-qbksc292.js} +3 -2
  68. package/dist/{cli-47m6dkd3.js → cli-qydf22qq.js} +597 -346
  69. package/dist/{cli-3gmcwfyx.js → cli-r1mxd1xh.js} +13 -6
  70. package/dist/cli-rb9m6rpe.js +4980 -0
  71. package/dist/cli-rykfmgwg.js +102 -0
  72. package/dist/{cli-5d10vd2m.js → cli-shkxm1vn.js} +6 -5
  73. package/dist/{cli-eetrvv91.js → cli-t3p77qk1.js} +1 -1
  74. package/dist/cli-tfky2838.js +756 -0
  75. package/dist/{cli-g8djp6qe.js → cli-tmqt7dpj.js} +40 -0
  76. package/dist/{cli-fgqxwrpv.js → cli-tpq83z89.js} +1631 -127
  77. package/dist/cli-trc24wk2.js +143 -0
  78. package/dist/{cli-aky8tctm.js → cli-tzx2ke1v.js} +3 -3
  79. package/dist/cli-v7fn5gms.js +1425 -0
  80. package/dist/{cli-wscdvcqz.js → cli-vctdqs5h.js} +1 -1
  81. package/dist/{cli-cw9zck8j.js → cli-xjcywfsf.js} +8 -4
  82. package/dist/{cli-k0g1sjzm.js → cli-ybgv4kw2.js} +18 -11
  83. package/dist/{cli-rjehvrts.js → cli-ydmcgve1.js} +8 -8
  84. package/dist/{cli-vhjwh6cz.js → cli-ygwm91nt.js} +1 -1
  85. package/dist/{cli-mcnhgnn1.js → cli-ykk5jaax.js} +184 -26
  86. package/dist/{cli-de1396j2.js → cli-ywybs5as.js} +7 -1
  87. package/dist/cli-zpep9q5e.js +491 -0
  88. package/dist/cli.js +41 -32
  89. package/dist/cloudflare-workers-ai-system-one-k6fbxw9d.js +46 -0
  90. package/dist/{codex-adapter-cnm8wk11.js → codex-adapter-nmxcatww.js} +26 -17
  91. package/dist/{codex-hook-9hptmdhj.js → codex-hook-20me6byw.js} +2 -2
  92. package/dist/{codex-login-x3jk4etn.js → codex-login-w6fz4xbz.js} +50 -5
  93. package/dist/{codex-session-runner-gfg547zj.js → codex-session-runner-90aa80ev.js} +24 -17
  94. package/dist/{commands-e3bn0p75.js → commands-8wcq1kn7.js} +11 -9
  95. package/dist/{db-03v9kzr2.js → db-j40kc4se.js} +25 -11
  96. package/dist/{devin-adapter-8vgkwh29.js → devin-adapter-dpsv6hd9.js} +1 -1
  97. package/dist/{dispatcher-nrmg8yht.js → dispatcher-4zqy768d.js} +34 -29
  98. package/dist/{dsh-adapter-k03nfqa6.js → dsh-adapter-mpnzgztj.js} +3 -3
  99. package/dist/{e2b-93x1k0j5.js → e2b-ez07znam.js} +4 -3
  100. package/dist/execute-6e7qeyk4.js +1017 -0
  101. package/dist/{google-generative-ai-bxmv50nc.js → google-generative-ai-k6n5nbpp.js} +6 -5
  102. package/dist/{google-vertex-809af514.js → google-vertex-44xxtcvp.js} +6 -5
  103. package/dist/{handlers-aqcedbyb.js → handlers-kjdce1w5.js} +37 -32
  104. package/dist/{hook-ybvmrmhq.js → hook-czx13n12.js} +19 -15
  105. package/dist/{hook-7vkskkre.js → hook-r2t4bqfg.js} +18 -14
  106. package/dist/{http-2eqa8t24.js → http-3bbb19be.js} +900 -145
  107. package/dist/{index-f6cryxwe.js → index-4a5njnm1.js} +2 -59
  108. package/dist/{index-x71bvq0p.js → index-668me3f0.js} +35 -30
  109. package/dist/{index-c6zsv1bd.js → index-7aj368tw.js} +13 -12
  110. package/dist/{index-1yks3qcr.js → index-fg0dsp6c.js} +34 -29
  111. package/dist/{index-chgdkq36.js → index-kkv84jq9.js} +34 -29
  112. package/dist/{index-a3vn96n8.js → index-zg7vp46x.js} +198 -54
  113. package/dist/{keepalive-vtkf5n99.js → keepalive-yra8dy57.js} +13 -11
  114. package/dist/{lead-h3sp357x.js → lead-va0pad2c.js} +54 -49
  115. package/dist/llama-cpp-classify-tgj35k8d.js +335 -0
  116. package/dist/{maintenance-jzeqtk3q.js → maintenance-hqewtmyg.js} +14 -13
  117. package/dist/{mistral-conversations-zx0kn554.js → mistral-conversations-pc3ntnxt.js} +14 -17
  118. package/dist/{oauth-refresh-sweep-qp3dzmdp.js → oauth-refresh-sweep-7rdt1m9n.js} +12 -10
  119. package/dist/{onboard-tmsp0qbz.js → onboard-j6ms6d0x.js} +6 -5
  120. package/dist/{openai-codex-responses-4vjqzvjp.js → openai-codex-responses-bbancrr0.js} +21 -8
  121. package/dist/{openai-completions-9hjrqbw8.js → openai-completions-jpaj5g2b.js} +9 -12
  122. package/dist/{openai-responses-7b1pn0xt.js → openai-responses-200k1wx4.js} +23 -18
  123. package/dist/{opencode-adapter-x6x2da1z.js → opencode-adapter-89rabkw2.js} +8 -7
  124. package/dist/{openrouter-images-9f9ek4rw.js → openrouter-images-8yx3487g.js} +5 -7
  125. package/dist/{otel-impl-9mz73q65.js → otel-impl-a792rjz0.js} +1 -1
  126. package/dist/{pi-messages-txpjj39q.js → pi-messages-vxdt8v7j.js} +2 -1
  127. package/dist/{pi-mono-adapter-m6dvv0dz.js → pi-mono-adapter-g7qzvr3v.js} +295 -70
  128. package/dist/pricing-refresh-wx0tp7cb.js +39 -0
  129. package/dist/quickjs-r1pq2107.wasm +0 -0
  130. package/dist/{rbac-roles-c9wqz83x.js → rbac-roles-8tzawacv.js} +12 -10
  131. package/dist/{render-v2-gryrh9h8.js → render-v2-mm7zswb8.js} +12 -10
  132. package/dist/runtime-zyssgse0.js +24 -0
  133. package/dist/{setup-q9720bt6.js → setup-8y70ys6t.js} +6 -5
  134. package/dist/typesafe-system-one-2ef30pec.js +27 -0
  135. package/dist/{virtual-modules-3htpgn8x.js → virtual-modules-6nmk7h3n.js} +22 -13
  136. package/dist/{work-objects-b76x7deb.js → work-objects-fg6xkb0n.js} +37 -32
  137. package/dist/{worker-6vrxbv41.js → worker-wmwhxsph.js} +54 -49
  138. package/openapi.json +1314 -91
  139. package/package.json +12 -11
  140. package/src/be/db/agents.ts +20 -0
  141. package/src/be/db/api-keys.ts +70 -0
  142. package/src/be/db/tasks/human-free.ts +442 -0
  143. package/src/be/db/tasks/read.ts +56 -1
  144. package/src/be/db/tasks/write.ts +107 -11
  145. package/src/be/db.ts +274 -188
  146. package/src/be/harness-model-support.ts +182 -0
  147. package/src/be/human-free-drain.ts +67 -0
  148. package/src/be/memory/providers/sqlite-store.ts +51 -15
  149. package/src/be/migrations/182_task_human_free_flag.sql +63 -0
  150. package/src/be/migrations/183_human_free_reclassify_queue.sql +25 -0
  151. package/src/be/migrations/184_model_catalog.sql +120 -0
  152. package/src/be/migrations/185_api_key_auth_failures.sql +6 -0
  153. package/src/be/migrations/186_api_key_seat_mismatch.sql +8 -0
  154. package/src/be/model-catalog-store.ts +644 -0
  155. package/src/be/model-tier-keys.ts +46 -0
  156. package/src/be/model-tier-resolution.ts +534 -0
  157. package/src/be/model-validation.ts +188 -0
  158. package/src/be/models-catalog.ts +61 -7
  159. package/src/be/modelsdev-cache.json +82 -0
  160. package/src/be/modelsdev-cache.ts +2 -0
  161. package/src/be/pricing-refresh.ts +154 -12
  162. package/src/be/scripts/typecheck.ts +15 -0
  163. package/src/be/seed/runner.ts +18 -12
  164. package/src/be/seed/types.ts +1 -0
  165. package/src/be/seed-scripts/catalog/task-failure-audit.ts +61 -9
  166. package/src/be/swarm-config-guard.ts +8 -0
  167. package/src/cli.tsx +10 -0
  168. package/src/commands/claude-managed-setup.ts +3 -1
  169. package/src/commands/codex-login.ts +67 -0
  170. package/src/commands/credential-outcome-report.ts +191 -0
  171. package/src/commands/rate-limit-outcome.ts +34 -4
  172. package/src/commands/runner.ts +357 -186
  173. package/src/commands/seat-mismatch-report.ts +46 -0
  174. package/src/extensions/apply-task-create.ts +27 -1
  175. package/src/extensions/contract-types.generated.ts +1 -1
  176. package/src/heartbeat/heartbeat.ts +79 -17
  177. package/src/heartbeat/templates.ts +2 -2
  178. package/src/http/agents.ts +62 -1
  179. package/src/http/api-keys.ts +140 -2
  180. package/src/http/codex-oauth-keep-warm.ts +3 -5
  181. package/src/http/index.ts +8 -0
  182. package/src/http/memory.ts +12 -5
  183. package/src/http/models-catalog.ts +357 -8
  184. package/src/http/poll.ts +54 -3
  185. package/src/http/schedules.ts +51 -6
  186. package/src/http/script-runs.ts +12 -0
  187. package/src/http/session-data.ts +2 -5
  188. package/src/http/stats.ts +6 -8
  189. package/src/http/status.ts +15 -1
  190. package/src/http/tasks.ts +90 -7
  191. package/src/http/usage-cache.ts +56 -15
  192. package/src/http/workflows.ts +46 -8
  193. package/src/mcp-client/http-client.ts +5 -0
  194. package/src/memory/recall-query.ts +74 -0
  195. package/src/prompts/base-prompt.ts +15 -4
  196. package/src/prompts/session-templates.ts +23 -1
  197. package/src/providers/acp-adapter.ts +1 -0
  198. package/src/providers/claude-adapter.ts +14 -5
  199. package/src/providers/claude-managed-adapter.ts +1 -0
  200. package/src/providers/claude-managed-models.ts +47 -161
  201. package/src/providers/claude-sdk-session.ts +3 -1
  202. package/src/providers/codex-adapter.ts +14 -14
  203. package/src/providers/codex-models.ts +65 -198
  204. package/src/providers/devin-adapter.ts +1 -0
  205. package/src/providers/dsh-adapter.ts +2 -1
  206. package/src/providers/harness-version.ts +83 -7
  207. package/src/providers/opencode-adapter.ts +53 -1
  208. package/src/providers/pi-binary-root/src/extensions/codemode/worker.ts +11 -0
  209. package/src/providers/pi-codemode-runtime.ts +17 -0
  210. package/src/providers/pi-mono-adapter.ts +361 -83
  211. package/src/providers/pi-mono-extension.ts +16 -1
  212. package/src/providers/reasoning-effort.ts +44 -140
  213. package/src/providers/types.ts +8 -0
  214. package/src/rbac/legacy-policy.ts +43 -0
  215. package/src/rbac/permissions.ts +15 -0
  216. package/src/scripts-runtime/sdk-allowlist.ts +4 -0
  217. package/src/scripts-runtime/types/stdlib.d.ts +15 -0
  218. package/src/scripts-runtime/types/swarm-extension.d.ts +3 -0
  219. package/src/scripts-runtime/types/swarm-sdk.d.ts +15 -0
  220. package/src/server.ts +6 -0
  221. package/src/slack/assistant.ts +13 -0
  222. package/src/slack/message-text.ts +56 -2
  223. package/src/slack/render-v2.ts +87 -37
  224. package/src/slack/session-status.ts +541 -0
  225. package/src/slack/thread-buffer.ts +10 -2
  226. package/src/tasks/sibling-awareness.ts +3 -2
  227. package/src/telemetry.ts +5 -4
  228. package/src/templates.d.ts +6 -0
  229. package/src/tests/agents-list-model-display.test.ts +4 -6
  230. package/src/tests/api-key-auth-failure-route.test.ts +142 -0
  231. package/src/tests/api-key-tracking.test.ts +368 -1
  232. package/src/tests/base-prompt.test.ts +43 -2
  233. package/src/tests/claude-adapter.test.ts +68 -0
  234. package/src/tests/claude-managed-adapter.test.ts +12 -18
  235. package/src/tests/codex-adapter.test.ts +2 -1
  236. package/src/tests/codex-auth-failure.test.ts +52 -0
  237. package/src/tests/codex-gpt6-release.test.ts +66 -5
  238. package/src/tests/codex-login.test.ts +116 -0
  239. package/src/tests/context-window.test.ts +7 -5
  240. package/src/tests/credential-exhaustion-policy.test.ts +118 -3
  241. package/src/tests/credential-outcome-report.test.ts +171 -0
  242. package/src/tests/credential-status-api.test.ts +103 -2
  243. package/src/tests/db-extraction-contract.test.ts +1 -0
  244. package/src/tests/db-task-read-contract.test.ts +10 -1
  245. package/src/tests/db-task-write-contract.test.ts +535 -2
  246. package/src/tests/docs-index-footprint.test.js +3 -3
  247. package/src/tests/dokploy-deploy.test.ts +315 -0
  248. package/src/tests/dsh-adapter.test.ts +1 -1
  249. package/src/tests/explicit-model-validation.test.ts +583 -0
  250. package/src/tests/extensions-pre-task.test.ts +73 -0
  251. package/src/tests/fetch-resolved-env.test.ts +46 -0
  252. package/src/tests/hang-watchdog-worker.ts +47 -0
  253. package/src/tests/hang-watchdog.test.ts +45 -0
  254. package/src/tests/hang-watchdog.ts +30 -0
  255. package/src/tests/harness-model-guard.test.ts +123 -0
  256. package/src/tests/harness-model-support.test.ts +374 -0
  257. package/src/tests/harness-version.test.ts +70 -3
  258. package/src/tests/heartbeat-checklist-config.test.ts +71 -0
  259. package/src/tests/heartbeat-checklist.test.ts +4 -2
  260. package/src/tests/heartbeat-orphan-resume.test.ts +48 -0
  261. package/src/tests/http-task-write-ownership.test.ts +172 -0
  262. package/src/tests/human-free-flag.test.ts +279 -0
  263. package/src/tests/human-free-oracle.ts +57 -0
  264. package/src/tests/human-free-reclassify.test.ts +669 -0
  265. package/src/tests/memory-fts-populate.test.ts +139 -0
  266. package/src/tests/memory-http-recall-gating.test.ts +125 -1
  267. package/src/tests/migration-046-budgets.test.ts +3 -3
  268. package/src/tests/model-catalog-migration.test.ts +134 -0
  269. package/src/tests/model-catalog-table.test.ts +249 -0
  270. package/src/tests/model-catalog-write-access.test.ts +387 -0
  271. package/src/tests/model-rate-limit-windows.test.ts +19 -0
  272. package/src/tests/model-tier-resolution.test.ts +611 -0
  273. package/src/tests/models-catalog.test.ts +1 -1
  274. package/src/tests/multi-runtime-enabled-stats.test.ts +65 -1
  275. package/src/tests/opencode-adapter.test.ts +157 -2
  276. package/src/tests/package-publish.test.ts +137 -36
  277. package/src/tests/pi-codemode.test.ts +246 -0
  278. package/src/tests/pi-mono-adapter.test.ts +3 -0
  279. package/src/tests/pi-native-mcp.test.ts +193 -0
  280. package/src/tests/pi-tool-exposure.test.ts +374 -0
  281. package/src/tests/preload.ts +3 -0
  282. package/src/tests/pricing-routes.test.ts +2 -2
  283. package/src/tests/prompt-template-session.test.ts +5 -3
  284. package/src/tests/rate-limit-event.test.ts +65 -0
  285. package/src/tests/rate-limit-outcome.test.ts +90 -0
  286. package/src/tests/rbac-engine.test.ts +77 -3
  287. package/src/tests/reasoning-effort.test.ts +109 -0
  288. package/src/tests/refresh-modelsdev-carryforward.test.ts +5 -5
  289. package/src/tests/runner-key-completion-outcome.test.ts +112 -0
  290. package/src/tests/runner-key-outcome-late-reset.test.ts +224 -0
  291. package/src/tests/runner-registration-retry.test.ts +149 -0
  292. package/src/tests/runtime-model-catalog.test.ts +86 -0
  293. package/src/tests/script-connections.test.ts +9 -0
  294. package/src/tests/seat-mismatch-report.test.ts +85 -0
  295. package/src/tests/seed-scripts.test.ts +138 -0
  296. package/src/tests/seed.test.ts +25 -0
  297. package/src/tests/session-costs.test.ts +14 -11
  298. package/src/tests/slack-message-text.test.ts +101 -0
  299. package/src/tests/slack-render-v2.test.ts +96 -0
  300. package/src/tests/slack-session-status.test.ts +626 -0
  301. package/src/tests/slack-thread-buffer-context.test.ts +93 -0
  302. package/src/tests/status.test.ts +29 -0
  303. package/src/tests/steering-promotion.test.ts +51 -0
  304. package/src/tests/store-progress-ownership.test.ts +136 -0
  305. package/src/tests/subscription-plans.test.ts +28 -0
  306. package/src/tests/task-cascade-fail.test.ts +148 -2
  307. package/src/tests/task-citations.test.ts +3 -2
  308. package/src/tests/tool-annotations.test.ts +1 -1
  309. package/src/tests/usage-cache.test.ts +166 -0
  310. package/src/tests/workflow-agent-task.test.ts +30 -0
  311. package/src/tests/workflow-executors.test.ts +5 -2
  312. package/src/tests/workflow-system-one-decision-review.test.ts +1021 -0
  313. package/src/tests/workflow-system-one-decision-save-warnings.test.ts +365 -0
  314. package/src/tests/workflow-system-one-decision.test.ts +2063 -0
  315. package/src/tests/workflow-triggers-v2.test.ts +320 -0
  316. package/src/tools/model-catalog/index.ts +137 -0
  317. package/src/tools/schedules/create-schedule.ts +17 -2
  318. package/src/tools/schedules/patch-schedule.ts +31 -1
  319. package/src/tools/schedules/update-schedule.ts +31 -1
  320. package/src/tools/send-task.ts +18 -1
  321. package/src/tools/store-progress.ts +49 -4
  322. package/src/tools/task-action.ts +14 -1
  323. package/src/tools/tool-config.ts +3 -1
  324. package/src/tools/workflows/create-workflow.ts +17 -4
  325. package/src/tools/workflows/patch-workflow-node.ts +17 -7
  326. package/src/tools/workflows/patch-workflow.ts +9 -2
  327. package/src/tools/workflows/update-workflow.ts +17 -4
  328. package/src/types.ts +41 -1
  329. package/src/utils/codex-auth-failure.ts +34 -0
  330. package/src/utils/context-window.ts +47 -53
  331. package/src/utils/credentials.ts +72 -30
  332. package/src/utils/error-tracker.ts +80 -0
  333. package/src/utils/harness-cli-version.ts +115 -0
  334. package/src/utils/harness-model-error.ts +33 -0
  335. package/src/utils/model-rate-limit-windows.ts +12 -0
  336. package/src/utils/runtime-model-catalog.ts +152 -0
  337. package/src/utils/spawn-model-guard.ts +43 -0
  338. package/src/utils/subscription-plans.ts +22 -0
  339. package/src/workflows/approval-resolution.ts +39 -0
  340. package/src/workflows/definition.ts +7 -0
  341. package/src/workflows/engine.ts +69 -1
  342. package/src/workflows/executors/agent-task.ts +16 -6
  343. package/src/workflows/executors/base.ts +53 -0
  344. package/src/workflows/executors/human-in-the-loop.ts +8 -8
  345. package/src/workflows/executors/index.ts +1 -0
  346. package/src/workflows/executors/registry.ts +2 -0
  347. package/src/workflows/executors/system-one-decision.ts +1232 -0
  348. package/src/workflows/executors/system-one-providers.ts +301 -0
  349. package/src/workflows/executors/workflow-llm.ts +13 -1
  350. package/src/workflows/model-validation.ts +45 -0
  351. package/src/workflows/patch-definition.ts +5 -0
  352. package/src/workflows/readiness.ts +86 -0
  353. package/src/workflows/recovery.ts +12 -12
  354. package/src/workflows/resume.ts +23 -9
  355. package/src/workflows/triggers.ts +85 -0
  356. package/templates/schedules/daily-blocker-digest/content.md +4 -5
  357. package/templates/skills/agent-browser/SKILL.md +6 -5
  358. package/templates/skills/agent-browser/content.md +6 -5
  359. package/templates/skills/heartbeat-runbook/config.json +1 -1
  360. package/templates/skills/heartbeat-runbook/content.md +2 -2
  361. package/templates/skills/swarm-scripts/SKILL.md +1 -1
  362. package/templates/skills/swarm-scripts/content.md +1 -1
  363. package/templates/skills/workflow-iterate/content.md +82 -1
  364. package/templates/workflows/claude-code-changelog-watch/content.md +2 -0
  365. package/templates/workflows/pr-review-status-sweep/content.md +2 -0
  366. package/dist/boot-seeds-s3q01xj3.js +0 -26
  367. package/dist/claude-sdk-session-t442qz6f.js +0 -39108
  368. package/dist/cli-0xjkj1j7.js +0 -61
  369. package/dist/cli-20cj37vt.js +0 -335561
  370. package/dist/cli-2djtr51b.js +0 -48
  371. package/dist/cli-65hjmev5.js +0 -1141
  372. package/dist/cli-aw1jwp1r.js +0 -14075
  373. package/dist/cli-h967nb6r.js +0 -6603
  374. package/dist/cli-vapyk8sw.js +0 -20
  375. package/dist/cli-ws6rqycm.js +0 -247
  376. package/dist/pricing-refresh-v1cbr9te.js +0 -27
  377. package/src/providers/modelsdev-reasoning.json +0 -6453
  378. package/dist/{index-f24115ge.js → index-2wsdsnmm.js} +3 -3
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getMemoryRaterNames
3
- } from "./cli-tt9k8r35.js";
3
+ } from "./cli-cpvsaqsw.js";
4
4
 
5
5
  // src/prompts/memories.ts
6
6
  var SIMILARITY_THRESHOLD = 0.55;
@@ -36,6 +36,28 @@ function isExplicitSelfRaterEnabled() {
36
36
  return getMemoryRaterNames().includes("explicit-self");
37
37
  }
38
38
 
39
+ // src/utils/harness-model-error.ts
40
+ var UNKNOWN_MODEL_PATTERNS = [
41
+ /issue with the selected model/i,
42
+ /model[`'" ]*[\w.:/-]*[`'" ]*(?:does not exist|not found)/i,
43
+ /not_found_error[^\n]*model/i,
44
+ /model[^\n]{0,80}is not supported/i,
45
+ /unsupported model/i,
46
+ /unknown model/i,
47
+ /invalid model/i
48
+ ];
49
+ function isUnknownModelError(text, modelId) {
50
+ if (!text)
51
+ return false;
52
+ const id = modelId?.trim().toLowerCase();
53
+ return text.split(`
54
+ `).some((line) => {
55
+ if (!UNKNOWN_MODEL_PATTERNS.some((re) => re.test(line)))
56
+ return false;
57
+ return !id || line.toLowerCase().includes(id);
58
+ });
59
+ }
60
+
39
61
  // src/utils/skill-fs-writer.ts
40
62
  import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
41
63
  import { dirname, join } from "node:path";
@@ -175,4 +197,4 @@ function writeSkillsToFilesystem(entries, harnessType = "all", home) {
175
197
  return { synced, removed, errors };
176
198
  }
177
199
 
178
- export { SIMILARITY_THRESHOLD, memoryRelevance, renderMemoriesPrompt, writeSkillsToFilesystem };
200
+ export { SIMILARITY_THRESHOLD, memoryRelevance, renderMemoriesPrompt, isUnknownModelError, writeSkillsToFilesystem };
@@ -1,12 +1,12 @@
1
- import {
2
- require_cross_spawn
3
- } from "./cli-5bfdm1ah.js";
4
1
  import {
5
2
  resolveSlashSkillPrompt
6
3
  } from "./cli-r94z9p1z.js";
7
4
  import {
8
5
  readPkgVersion
9
- } from "./cli-2djtr51b.js";
6
+ } from "./cli-gt4hxb8p.js";
7
+ import {
8
+ require_cross_spawn
9
+ } from "./cli-5bfdm1ah.js";
10
10
  import {
11
11
  fetchInstalledMcpServers
12
12
  } from "./cli-tng3131n.js";
@@ -17,10 +17,10 @@ import {
17
17
  CONTEXT_FORMULA,
18
18
  clampContextPercent,
19
19
  getContextWindowSize
20
- } from "./cli-0xjkj1j7.js";
20
+ } from "./cli-74h9hscv.js";
21
21
  import {
22
22
  applyReasoningEffort
23
- } from "./cli-h967nb6r.js";
23
+ } from "./cli-4derpgyk.js";
24
24
  import {
25
25
  swarmRuntimeInstanceId
26
26
  } from "./cli-re8z5p8p.js";
@@ -31,7 +31,7 @@ import {
31
31
  import {
32
32
  init_credentials,
33
33
  validateOpencodeCredentials
34
- } from "./cli-19jenss3.js";
34
+ } from "./cli-0wgxmwf6.js";
35
35
  import {
36
36
  init_secret_scrubber,
37
37
  scrubSecrets
@@ -1755,6 +1755,9 @@ class OpencodeSession {
1755
1755
  completed = false;
1756
1756
  finalizedMessages = new Map;
1757
1757
  missingMessageIdCounter = 0;
1758
+ textParts = new Map;
1759
+ assistantMessageIds = new Set;
1760
+ emittedText = new Map;
1758
1761
  startedAt = Date.now();
1759
1762
  model;
1760
1763
  agentId;
@@ -1875,6 +1878,8 @@ class OpencodeSession {
1875
1878
  const msg = ev.properties.info;
1876
1879
  if (!isAssistantMessage(msg) || msg.sessionID !== this._sessionId)
1877
1880
  break;
1881
+ if (typeof msg.id === "string")
1882
+ this.assistantMessageIds.add(msg.id);
1878
1883
  const messageFinalized = msg.time?.completed != null;
1879
1884
  if (!messageFinalized)
1880
1885
  break;
@@ -1887,6 +1892,7 @@ class OpencodeSession {
1887
1892
  cacheReadTokens: msg.tokens?.cache?.read ?? 0,
1888
1893
  cacheWriteTokens: msg.tokens?.cache?.write ?? 0
1889
1894
  });
1895
+ this.emitAssistantText(msg.id);
1890
1896
  if (!this.model && msg.modelID)
1891
1897
  this.model = msg.modelID;
1892
1898
  const turnInput = msg.tokens?.input ?? 0;
@@ -1908,6 +1914,10 @@ class OpencodeSession {
1908
1914
  break;
1909
1915
  }
1910
1916
  case "message.part.updated": {
1917
+ if (ev.properties.part?.type === "text") {
1918
+ this.recordTextPart(ev.properties.part);
1919
+ break;
1920
+ }
1911
1921
  const props = ev.properties;
1912
1922
  if (props.sessionID !== this._sessionId)
1913
1923
  break;
@@ -1979,6 +1989,32 @@ class OpencodeSession {
1979
1989
  break;
1980
1990
  }
1981
1991
  }
1992
+ recordTextPart(part) {
1993
+ if (part.sessionID !== this._sessionId || part.synthetic || part.ignored)
1994
+ return;
1995
+ if (typeof part.messageID !== "string" || typeof part.id !== "string")
1996
+ return;
1997
+ let parts = this.textParts.get(part.messageID);
1998
+ if (!parts) {
1999
+ parts = new Map;
2000
+ this.textParts.set(part.messageID, parts);
2001
+ }
2002
+ parts.set(part.id, part.text ?? "");
2003
+ if (this.finalizedMessages.has(part.messageID))
2004
+ this.emitAssistantText(part.messageID);
2005
+ }
2006
+ emitAssistantText(messageId) {
2007
+ if (!this.assistantMessageIds.has(messageId))
2008
+ return;
2009
+ const parts = this.textParts.get(messageId);
2010
+ if (!parts)
2011
+ return;
2012
+ const text = [...parts.values()].join("").trim();
2013
+ if (!text || this.emittedText.get(messageId) === text)
2014
+ return;
2015
+ this.emittedText.set(messageId, text);
2016
+ this.emit({ type: "message", role: "assistant", content: text, messageId });
2017
+ }
1982
2018
  emitError(message) {
1983
2019
  const errorEvent = { type: "error", message };
1984
2020
  for (const l of this.listeners)
@@ -2070,6 +2106,7 @@ class OpencodeAdapter {
2070
2106
  name = "opencode";
2071
2107
  traits = {
2072
2108
  hasMcp: true,
2109
+ hasToolSearch: false,
2073
2110
  nativeSkillDiscovery: false,
2074
2111
  hasLocalEnvironment: true,
2075
2112
  steerModes: ["queue"]
@@ -2096,6 +2133,8 @@ class OpencodeAdapter {
2096
2133
  headers: {
2097
2134
  Authorization: `Bearer ${config.apiKey}`,
2098
2135
  "X-Agent-ID": config.agentId,
2136
+ "X-Source-Task-Id": taskId,
2137
+ ...config.contextKey ? { "X-Context-Key": config.contextKey } : {},
2099
2138
  ...runtimeInstanceId ? { "X-Runtime-Instance-ID": runtimeInstanceId } : {}
2100
2139
  }
2101
2140
  },
@@ -1,178 +1,3 @@
1
- import {
2
- __commonJS,
3
- __require
4
- } from "./cli-bc05qbss.js";
5
-
6
- // node_modules/signal-exit/signals.js
7
- var require_signals = __commonJS(function(exports, module) {
8
- module.exports = [
9
- "SIGABRT",
10
- "SIGALRM",
11
- "SIGHUP",
12
- "SIGINT",
13
- "SIGTERM"
14
- ];
15
- if (process.platform !== "win32") {
16
- module.exports.push("SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
17
- }
18
- if (process.platform === "linux") {
19
- module.exports.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT", "SIGUNUSED");
20
- }
21
- });
22
-
23
- // node_modules/signal-exit/index.js
24
- var require_signal_exit = __commonJS(function(exports, module) {
25
- var process2 = global.process;
26
- var processOk = function(process3) {
27
- return process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
28
- };
29
- if (!processOk(process2)) {
30
- module.exports = function() {
31
- return function() {};
32
- };
33
- } else {
34
- assert = __require("assert");
35
- signals = require_signals();
36
- isWin = /^win/i.test(process2.platform);
37
- EE = __require("events");
38
- if (typeof EE !== "function") {
39
- EE = EE.EventEmitter;
40
- }
41
- if (process2.__signal_exit_emitter__) {
42
- emitter = process2.__signal_exit_emitter__;
43
- } else {
44
- emitter = process2.__signal_exit_emitter__ = new EE;
45
- emitter.count = 0;
46
- emitter.emitted = {};
47
- }
48
- if (!emitter.infinite) {
49
- emitter.setMaxListeners(Infinity);
50
- emitter.infinite = true;
51
- }
52
- module.exports = function(cb, opts) {
53
- if (!processOk(global.process)) {
54
- return function() {};
55
- }
56
- assert.equal(typeof cb, "function", "a callback must be provided for exit handler");
57
- if (loaded === false) {
58
- load();
59
- }
60
- var ev = "exit";
61
- if (opts && opts.alwaysLast) {
62
- ev = "afterexit";
63
- }
64
- var remove = function() {
65
- emitter.removeListener(ev, cb);
66
- if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) {
67
- unload();
68
- }
69
- };
70
- emitter.on(ev, cb);
71
- return remove;
72
- };
73
- unload = function unload2() {
74
- if (!loaded || !processOk(global.process)) {
75
- return;
76
- }
77
- loaded = false;
78
- signals.forEach(function(sig) {
79
- try {
80
- process2.removeListener(sig, sigListeners[sig]);
81
- } catch (er) {}
82
- });
83
- process2.emit = originalProcessEmit;
84
- process2.reallyExit = originalProcessReallyExit;
85
- emitter.count -= 1;
86
- };
87
- module.exports.unload = unload;
88
- emit = function emit2(event, code, signal) {
89
- if (emitter.emitted[event]) {
90
- return;
91
- }
92
- emitter.emitted[event] = true;
93
- emitter.emit(event, code, signal);
94
- };
95
- sigListeners = {};
96
- signals.forEach(function(sig) {
97
- sigListeners[sig] = function listener() {
98
- if (!processOk(global.process)) {
99
- return;
100
- }
101
- var listeners = process2.listeners(sig);
102
- if (listeners.length === emitter.count) {
103
- unload();
104
- emit("exit", null, sig);
105
- emit("afterexit", null, sig);
106
- if (isWin && sig === "SIGHUP") {
107
- sig = "SIGINT";
108
- }
109
- process2.kill(process2.pid, sig);
110
- }
111
- };
112
- });
113
- module.exports.signals = function() {
114
- return signals;
115
- };
116
- loaded = false;
117
- load = function load2() {
118
- if (loaded || !processOk(global.process)) {
119
- return;
120
- }
121
- loaded = true;
122
- emitter.count += 1;
123
- signals = signals.filter(function(sig) {
124
- try {
125
- process2.on(sig, sigListeners[sig]);
126
- return true;
127
- } catch (er) {
128
- return false;
129
- }
130
- });
131
- process2.emit = processEmit;
132
- process2.reallyExit = processReallyExit;
133
- };
134
- module.exports.load = load;
135
- originalProcessReallyExit = process2.reallyExit;
136
- processReallyExit = function processReallyExit2(code) {
137
- if (!processOk(global.process)) {
138
- return;
139
- }
140
- process2.exitCode = code || 0;
141
- emit("exit", process2.exitCode, null);
142
- emit("afterexit", process2.exitCode, null);
143
- originalProcessReallyExit.call(process2, process2.exitCode);
144
- };
145
- originalProcessEmit = process2.emit;
146
- processEmit = function processEmit2(ev, arg) {
147
- if (ev === "exit" && processOk(global.process)) {
148
- if (arg !== undefined) {
149
- process2.exitCode = arg;
150
- }
151
- var ret = originalProcessEmit.apply(this, arguments);
152
- emit("exit", process2.exitCode, null);
153
- emit("afterexit", process2.exitCode, null);
154
- return ret;
155
- } else {
156
- return originalProcessEmit.apply(this, arguments);
157
- }
158
- };
159
- }
160
- var assert;
161
- var signals;
162
- var isWin;
163
- var EE;
164
- var emitter;
165
- var unload;
166
- var emit;
167
- var sigListeners;
168
- var loaded;
169
- var load;
170
- var originalProcessReallyExit;
171
- var processReallyExit;
172
- var originalProcessEmit;
173
- var processEmit;
174
- });
175
-
176
1
  // node_modules/get-east-asian-width/lookup-data.js
177
2
  var ambiguousMinimalCodePoint = 161;
178
3
  var ambiguousMaximumCodePoint = 1114109;
@@ -257,4 +82,4 @@ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
257
82
  return 1;
258
83
  }
259
84
 
260
- export { require_signal_exit, isFullWidth, isWide, eastAsianWidth };
85
+ export { isFullWidth, isWide, eastAsianWidth };
@@ -397,6 +397,7 @@ agent-fs is the shared drive between agents and people. Documents (reports, dige
397
397
  Pages: only for polished artifacts shared with a wider audience or explicitly requested; see \`pages\` skill.
398
398
  A tool a person will use, with data and actions: build an app. See the \`apps\` skill.
399
399
  Link env: \`APP_URL\` for pages, \`MCP_BASE_URL\` for the API, \`AGENT_FS_LIVE_URL\` for files. Report missing variables.
400
+ For a file anyone outside the swarm opens, use an \`agent-fs share-create\` link; \`AGENT_FS_LIVE_URL\` links are for signed-in teammates.
400
401
  `,
401
402
  variables: [],
402
403
  category: "system"
@@ -483,15 +484,33 @@ You may receive steering messages while this task is running. Each one arrives w
483
484
  variables: [],
484
485
  category: "system"
485
486
  });
487
+ registerTemplate({
488
+ eventType: "system.agent.tool_discovery.search",
489
+ header: "",
490
+ defaultBody: "Most swarm tools are deferred. Load one with your harness tool search before the first call.",
491
+ variables: [],
492
+ category: "system"
493
+ });
494
+ registerTemplate({
495
+ eventType: "system.agent.tool_discovery.direct",
496
+ header: "",
497
+ defaultBody: "Swarm tools are already in your tool list.",
498
+ variables: [],
499
+ category: "system"
500
+ });
486
501
  registerTemplate({
487
502
  eventType: "system.agent.tools_skills",
488
503
  header: "",
489
504
  defaultBody: `
490
505
  ## Tools and skills
491
506
 
492
- Most swarm tools are deferred. Load one with your harness tool search before the first call.
507
+ {{tool_discovery}}
493
508
  {{skills}}{{mcp_servers}}`,
494
509
  variables: [
510
+ {
511
+ name: "tool_discovery",
512
+ description: "Harness-specific guidance for discovering swarm tools."
513
+ },
495
514
  {
496
515
  name: "skills",
497
516
  description: "Rendered skills line(s): a count plus discovery pointer for harnesses with native skill discovery, an enumerated list otherwise. Empty when no skill is installed."
@@ -26,14 +26,15 @@ function getRetryDelayMs(error, retryIndex, maxRetryDelayMs) {
26
26
  const retryAfterMs = error.headers?.get("retry-after-ms");
27
27
  if (retryAfterMs) {
28
28
  const value = Number.parseFloat(retryAfterMs);
29
- if (!Number.isNaN(value))
29
+ if (Number.isFinite(value))
30
30
  return validateServerRetryDelayMs(value, maxRetryDelayMs, error.message);
31
31
  }
32
32
  const retryAfter = error.headers?.get("retry-after");
33
33
  if (retryAfter) {
34
34
  const seconds = Number.parseFloat(retryAfter);
35
35
  const delayMs = Number.isNaN(seconds) ? Date.parse(retryAfter) - Date.now() : seconds * 1000;
36
- return validateServerRetryDelayMs(delayMs, maxRetryDelayMs, error.message);
36
+ if (Number.isFinite(delayMs))
37
+ return validateServerRetryDelayMs(delayMs, maxRetryDelayMs, error.message);
37
38
  }
38
39
  const exponentialDelay = Math.min(0.5 * 2 ** retryIndex, 8) * 1000;
39
40
  return exponentialDelay * (1 - Math.random() * 0.25);