@desplega.ai/agent-swarm 2.7.5 → 2.7.7

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 (319) hide show
  1. package/dist/{acp-adapter-g3ads55s.js → acp-adapter-7b4vk3h5.js} +5 -4
  2. package/dist/{actions-zwfykqqk.js → actions-3tt153af.js} +18 -17
  3. package/dist/{amp-adapter-z3s0ssdt.js → amp-adapter-njpts0yr.js} +1 -1
  4. package/dist/{anthropic-messages-x4q6rfq5.js → anthropic-messages-xey2skwx.js} +7 -7
  5. package/dist/{app-vmp4fgep.js → app-nky4378f.js} +3 -3
  6. package/dist/{assistant-vwde653f.js → assistant-jnb669pa.js} +24 -22
  7. package/dist/{azure-openai-responses-s1w5n70z.js → azure-openai-responses-26t7j9ra.js} +5 -5
  8. package/dist/{boot-reembed-375t7tbk.js → boot-reembed-9mgvaztt.js} +1 -1
  9. package/dist/{boot-reembed-gq9rcpnj.js → boot-reembed-qs2djdej.js} +1 -1
  10. package/dist/{boot-scrub-sweep-nd938kyf.js → boot-scrub-sweep-yjpdj7s1.js} +3 -3
  11. package/dist/{boot-seeds-aykx51v3.js → boot-seeds-5cm6ambd.js} +4 -4
  12. package/dist/{boxd-k1j26g3h.js → boxd-nv507va8.js} +5 -5
  13. package/dist/{claude-adapter-8j4hm099.js → claude-adapter-fn287zmm.js} +5 -4
  14. package/dist/{claude-managed-setup-0wyynpn1.js → claude-managed-setup-wtdz2mj2.js} +1 -1
  15. package/dist/{claude-sdk-session-q6wj5hmy.js → claude-sdk-session-x91kqyhm.js} +9677 -9514
  16. package/dist/{cli-j3jvnpe8.js → cli-08bmz9z9.js} +1 -1
  17. package/dist/{cli-gjr2y2xk.js → cli-0agcv1v5.js} +4 -1
  18. package/dist/{cli-y24sc29k.js → cli-1c6tzt8g.js} +30 -8
  19. package/dist/{cli-mjzynrse.js → cli-35rsp8ye.js} +1 -1
  20. package/dist/{cli-rpm2sgv0.js → cli-3fg0bdcv.js} +19 -2
  21. package/dist/{cli-nn4d8dne.js → cli-5b456bpf.js} +2 -2
  22. package/dist/{cli-bhjt02p8.js → cli-5jnhv72d.js} +1 -1
  23. package/dist/{cli-fqzx7gwa.js → cli-5zx699j9.js} +2 -2
  24. package/dist/{cli-hf6zt5m6.js → cli-69szn7w7.js} +17 -1
  25. package/dist/{cli-vqypxzh4.js → cli-6g0hb4cp.js} +8 -8
  26. package/dist/{cli-tqgg40ek.js → cli-6pfd54vx.js} +9 -8
  27. package/dist/{cli-bsn8nhrq.js → cli-6vcp76qk.js} +3 -3
  28. package/dist/{cli-zppwg9p9.js → cli-72v799xn.js} +1 -1
  29. package/dist/cli-82j36f2m.js +45 -0
  30. package/dist/{cli-hn9hxmz9.js → cli-8305gbq0.js} +29 -16
  31. package/dist/{cli-z8eh3ex8.js → cli-8sckt74b.js} +8 -8
  32. package/dist/{cli-bnz7a7qf.js → cli-95jzxcp3.js} +1 -1
  33. package/dist/{cli-0bxqnvq9.js → cli-adeegh7d.js} +29 -7
  34. package/dist/{cli-g61qxmge.js → cli-afkqkrtw.js} +3 -3
  35. package/dist/{cli-7a42nfy0.js → cli-ayayvfg4.js} +24 -4
  36. package/dist/{cli-bqt1mptt.js → cli-az48n0nr.js} +4 -4
  37. package/dist/{cli-z6jkx23q.js → cli-bfv7vdg6.js} +9 -9
  38. package/dist/{cli-pywf3eh5.js → cli-caj33vcq.js} +5 -5
  39. package/dist/{cli-5pag6rmn.js → cli-cb2a8pna.js} +1 -1
  40. package/dist/{cli-wvaawacd.js → cli-cppkf404.js} +5236 -72
  41. package/dist/{cli-mry0qzym.js → cli-ddaanqkd.js} +123 -10
  42. package/dist/{cli-0gey5fzy.js → cli-e0kmphd6.js} +2 -2
  43. package/dist/{cli-zh3fp8v2.js → cli-e46hg0xw.js} +1 -1
  44. package/dist/{cli-jm2vfpfd.js → cli-e5bzrn01.js} +1 -1
  45. package/dist/{cli-qxnf8z2z.js → cli-excnnjg2.js} +165 -153
  46. package/dist/{cli-71ptav7x.js → cli-ferkkrg9.js} +1 -1
  47. package/dist/{cli-vpf89f34.js → cli-fmjd0t1y.js} +3 -3
  48. package/dist/{cli-rm6hqj3z.js → cli-fyt2g4wd.js} +33 -139
  49. package/dist/cli-g08zdaec.js +55 -0
  50. package/dist/{cli-ehq736cn.js → cli-g7s47cc5.js} +4 -4
  51. package/dist/{cli-82ae98pz.js → cli-gz6q4eve.js} +3 -3
  52. package/dist/{cli-82jg7fp9.js → cli-he5nxaa8.js} +1 -1
  53. package/dist/{cli-rqkxrmgw.js → cli-je518txm.js} +39 -14
  54. package/dist/{cli-8hs41zy2.js → cli-jtjtabxe.js} +1 -1
  55. package/dist/{cli-611a1294.js → cli-k0wwfqbg.js} +18 -1
  56. package/dist/{cli-nzxr556s.js → cli-k1nje3v3.js} +38 -43
  57. package/dist/{cli-3h4nhjn8.js → cli-k8196sh2.js} +9 -7
  58. package/dist/{cli-afrrppsw.js → cli-k899ehvh.js} +2 -2
  59. package/dist/{cli-0731hvbw.js → cli-m0da8j35.js} +23 -9
  60. package/dist/cli-m2z8jagn.js +12078 -0
  61. package/dist/{cli-8veytvbh.js → cli-mkk9rnzz.js} +5 -5
  62. package/dist/{cli-7wspm5gm.js → cli-n6bv12jn.js} +528 -6
  63. package/dist/{cli-spknvxbq.js → cli-nmzhp1b5.js} +14 -12
  64. package/dist/{cli-p599f1qm.js → cli-p82cnnjq.js} +1 -1
  65. package/dist/{cli-xtjhfmpc.js → cli-pc6n7fre.js} +1 -1
  66. package/dist/{cli-vbyfwh92.js → cli-pjctyea3.js} +2 -2
  67. package/dist/{cli-nmbmy64z.js → cli-pq73h5mz.js} +3 -3
  68. package/dist/{cli-aa6yxc7m.js → cli-pz4rk021.js} +1 -1
  69. package/dist/{cli-7wcyk2s5.js → cli-q3tkegby.js} +1 -1
  70. package/dist/cli-qghe0h66.js +67 -0
  71. package/dist/{cli-6s7vdcta.js → cli-qh4d4tvk.js} +4 -4
  72. package/dist/{cli-mmwm7zbf.js → cli-rtt8g4v9.js} +1 -1
  73. package/dist/{cli-kg8hchyg.js → cli-sa02jsqt.js} +1 -1
  74. package/dist/{cli-1h3wcpbw.js → cli-snpj5zbj.js} +2 -2
  75. package/dist/{cli-a7v854rf.js → cli-tgrv9cjx.js} +263 -12
  76. package/dist/{cli-a47xy8eq.js → cli-vz22fyqv.js} +186 -54
  77. package/dist/{cli-1ayk1eas.js → cli-wk5yrfwd.js} +285 -42
  78. package/dist/{cli-1338796d.js → cli-ws19768n.js} +1755 -119
  79. package/dist/{cli-70r77n04.js → cli-xae4g51r.js} +1 -1
  80. package/dist/{cli-gf5hbmdr.js → cli-yjdgea32.js} +3 -3
  81. package/dist/{cli-xbkdm710.js → cli-yndmfxb3.js} +3 -3
  82. package/dist/{cli-rhw40jgb.js → cli-yyj3j5m4.js} +2 -2
  83. package/dist/cli.js +26 -25
  84. package/dist/{cloudflare-workers-ai-system-one-bm60fjm0.js → cloudflare-workers-ai-system-one-ef2a980q.js} +2 -2
  85. package/dist/{codex-adapter-q6k3gnyg.js → codex-adapter-cf2yxe9m.js} +3 -2
  86. package/dist/{codex-hook-9efm2x1m.js → codex-hook-a0c6g6t6.js} +1 -1
  87. package/dist/{codex-session-runner-3mwmk3d9.js → codex-session-runner-6vfzdgbd.js} +3 -2
  88. package/dist/{commands-evrenjn9.js → commands-t3mfy7vn.js} +9 -3
  89. package/dist/{controller-xjp8vswh.js → controller-q7xrbaz0.js} +8 -3
  90. package/dist/{controllers-connect-pp5jnxvc.js → controllers-connect-c6nm70kg.js} +20 -19
  91. package/dist/{cursor-adapter-yf47w4t0.js → cursor-adapter-ftd81ga8.js} +1 -1
  92. package/dist/{db-zxpw6aht.js → db-dk572x25.js} +3 -3
  93. package/dist/{db-rgfsh91f.js → db-vemtpmcc.js} +14 -4
  94. package/dist/{devtools-82fzqra8.js → devtools-qxfgbsqz.js} +1 -1
  95. package/dist/{dispatcher-smasgws7.js → dispatcher-kh7ecxh9.js} +17 -16
  96. package/dist/{docker-rrjhaqt9.js → docker-c1a3gqmf.js} +89 -22
  97. package/dist/{dsh-adapter-ftyy8dnp.js → dsh-adapter-v8628r89.js} +1 -1
  98. package/dist/{e2b-w1p0bnpm.js → e2b-fr12yccx.js} +5 -5
  99. package/dist/{e2b-qcaj675y.js → e2b-x6ywzak3.js} +3 -3
  100. package/dist/{easter-egg-3d-yyts7p16.js → easter-egg-3d-nenw4x63.js} +1 -1
  101. package/dist/{embedding-space-1z0mbg95.js → embedding-space-0jepb239.js} +6 -6
  102. package/dist/{embeddings-ygeg7tm7.js → embeddings-xxt49yxg.js} +1 -1
  103. package/dist/{execute-14qhqp4d.js → execute-1mhw6e4x.js} +1 -1
  104. package/dist/{external-channel-ttgrs3sx.js → external-channel-55v12e60.js} +2 -2
  105. package/dist/{fx-adapter-gt6pncj2.js → fx-adapter-bs8wqrk5.js} +6 -5
  106. package/dist/{google-generative-ai-yvmdxyxa.js → google-generative-ai-v94hr7h0.js} +5 -5
  107. package/dist/{google-vertex-jrtdh9gs.js → google-vertex-g7vr6cf8.js} +5 -5
  108. package/dist/{grok-adapter-sm4m5k4g.js → grok-adapter-gpjqmkcq.js} +6 -5
  109. package/dist/handlers-zxmp1ta4.js +32 -0
  110. package/dist/{heartbeat-qahz4p62.js → heartbeat-k42svnr0.js} +20 -19
  111. package/dist/{hook-4fd5wq5w.js → hook-114m7hap.js} +4 -3
  112. package/dist/{hook-kj3d398m.js → hook-6nphweh0.js} +24 -9
  113. package/dist/{http-1ted0j1k.js → http-r8cc4wz7.js} +1196 -211
  114. package/dist/index-a8phxqnk.js +37 -0
  115. package/dist/{index-q4b917zs.js → index-e3s8wmxy.js} +1 -1
  116. package/dist/{index-6rq3r5zb.js → index-fpk4bcd9.js} +1 -1
  117. package/dist/{index-5rk6rfzr.js → index-fvzke5kx.js} +1 -1
  118. package/dist/index-k6h00t4c.js +30 -0
  119. package/dist/{index-7v51awbn.js → index-nh3wyqdt.js} +1027 -577
  120. package/dist/{index-yqhz88yy.js → index-pxn30mse.js} +8 -8
  121. package/dist/index-xrz7te8h.js +33 -0
  122. package/dist/{keepalive-6cf311t5.js → keepalive-x060nt9p.js} +3 -3
  123. package/dist/lead-956sd2yc.js +71 -0
  124. package/dist/{maintenance-a4bm1bmt.js → maintenance-2xxfexhf.js} +1 -1
  125. package/dist/{mistral-conversations-4pmwj1c0.js → mistral-conversations-3gjpdb4b.js} +4 -4
  126. package/dist/{oauth-refresh-sweep-3h0dfw1k.js → oauth-refresh-sweep-fckc4ar5.js} +2 -2
  127. package/dist/{onboard-myn5hraa.js → onboard-zc48j237.js} +5 -5
  128. package/dist/{openai-codex-responses-44j573nm.js → openai-codex-responses-8pbxq9h5.js} +5 -5
  129. package/dist/{openai-completions-a4gee2a8.js → openai-completions-rm00s912.js} +4 -4
  130. package/dist/{openai-decisions-w4qkrcar.js → openai-decisions-8v957r2r.js} +1 -1
  131. package/dist/{openai-responses-rbp6h5kr.js → openai-responses-agxpf96k.js} +5 -5
  132. package/dist/{opencode-adapter-p2nkb5am.js → opencode-adapter-r690h1cr.js} +4 -3
  133. package/dist/{otel-impl-a1a0ef6b.js → otel-impl-r5xbh81q.js} +4 -4
  134. package/dist/{pi-mono-adapter-rzmpb72a.js → pi-mono-adapter-c7v8sdec.js} +7 -6
  135. package/dist/{pricing-refresh-83drrnxj.js → pricing-refresh-3pmre11v.js} +3 -3
  136. package/dist/{rbac-roles-s8y6ecb5.js → rbac-roles-3vbshwsb.js} +1 -1
  137. package/dist/{rbac-roles-0fb6e7pj.js → rbac-roles-910mmkgz.js} +2 -2
  138. package/dist/{render-v2-twmbgrz4.js → render-v2-pxykkbab.js} +3 -3
  139. package/dist/{resume-zfqc36xj.js → resume-adda0bwy.js} +6 -6
  140. package/dist/{runtime-qwggdpqr.js → runtime-fnbm7stk.js} +1 -1
  141. package/dist/{session-access-sc9pn9da.js → session-access-2fvamrdc.js} +4 -4
  142. package/dist/{session-source-backfill-qh07xr8g.js → session-source-backfill-08xvv0sm.js} +2 -2
  143. package/dist/{setup-4fr0m7a1.js → setup-1aqmvmh1.js} +3 -3
  144. package/dist/{typesafe-system-one-5mavm259.js → typesafe-system-one-0bmqcxfg.js} +2 -2
  145. package/dist/{virtual-modules-fh4ha15b.js → virtual-modules-d2pjk9j1.js} +5 -5
  146. package/dist/{work-objects-0wr8zxct.js → work-objects-9s0yrm5j.js} +20 -19
  147. package/dist/{worker-follow-up-ktyyazyp.js → worker-follow-up-3q78fqmr.js} +17 -16
  148. package/dist/worker-y15hy08h.js +71 -0
  149. package/openapi.json +289 -4
  150. package/package.json +9 -8
  151. package/src/apps/definition.ts +6 -5
  152. package/src/be/db/page-theme-tokens.ts +12 -0
  153. package/src/be/db/script-runs.ts +23 -0
  154. package/src/be/db/tasks/read.ts +131 -4
  155. package/src/be/db/tasks/write.ts +19 -0
  156. package/src/be/db-client.ts +114 -11
  157. package/src/be/db.ts +49 -6
  158. package/src/be/memory/providers/sqlite-store.ts +49 -12
  159. package/src/be/migrations/260_runtime_pool_cache.sql +20 -0
  160. package/src/be/migrations/262_session_visibility_indexes.sql +18 -0
  161. package/src/be/migrations/263_task_list_filter_index.sql +11 -0
  162. package/src/be/migrations/264_slack_thread_cover_index.sql +9 -0
  163. package/src/be/migrations/266_script_runs_source_task.sql +11 -0
  164. package/src/be/migrations/269_pages_design_system.sql +23 -0
  165. package/src/be/runtime-pools/cache-cleanup.ts +109 -0
  166. package/src/be/runtime-pools/db.ts +65 -6
  167. package/src/be/runtime-pools/remote-controller.ts +5 -0
  168. package/src/be/runtime-pools/supervisor.ts +33 -2
  169. package/src/be/scripts/typecheck.ts +22 -0
  170. package/src/be/seed/schedules-seeder.ts +0 -10
  171. package/src/be/seed-scripts/catalog/catalog-report.inline.ts +2 -0
  172. package/src/be/seed-scripts/catalog/catalog-report.ts +2 -0
  173. package/src/be/seed-scripts/catalog/memory-eval.ts +2 -0
  174. package/src/be/seed-scripts/catalog/swarm-update-check.ts +150 -0
  175. package/src/be/seed-scripts/catalog/task-failure-audit.ts +5 -1
  176. package/src/be/seed-scripts/index.ts +9 -0
  177. package/src/be/seed-skills/bundled-files.generated.json +3 -3
  178. package/src/be/swarm-config-guard.ts +32 -0
  179. package/src/be/task-auto-title-listener.ts +127 -0
  180. package/src/commands/controller.ts +4 -0
  181. package/src/commands/entrypoint-api-readiness.ts +74 -0
  182. package/src/commands/onboard/agent-fs-version.ts +1 -1
  183. package/src/commands/profile-sync.ts +151 -16
  184. package/src/commands/runner.ts +15 -7
  185. package/src/hooks/hook.ts +20 -9
  186. package/src/http/index.ts +4 -1
  187. package/src/http/list-total-cache.ts +14 -7
  188. package/src/http/memory.ts +38 -9
  189. package/src/http/pages-public.ts +93 -129
  190. package/src/http/pages.ts +94 -21
  191. package/src/http/script-runs.ts +174 -5
  192. package/src/http/status.ts +10 -2
  193. package/src/http/tasks.ts +4 -2
  194. package/src/pages/browser-sdk.ts +48 -21
  195. package/src/pages/color-literals.ts +115 -0
  196. package/src/pages/page-head.ts +766 -0
  197. package/src/pages/version.ts +3 -0
  198. package/src/providers/amp-adapter.ts +1 -1
  199. package/src/providers/codex-adapter.ts +1 -0
  200. package/src/providers/codex-app-server.ts +27 -1
  201. package/src/providers/fx-adapter.ts +1 -1
  202. package/src/providers/pi-mono-extension.ts +30 -15
  203. package/src/runtime-providers/controller-protocol.ts +14 -1
  204. package/src/runtime-providers/controller.ts +5 -0
  205. package/src/runtime-providers/docker.ts +108 -23
  206. package/src/runtime-providers/types.ts +16 -0
  207. package/src/script-workflows/workflow-ctx.ts +8 -0
  208. package/src/scripts-runtime/types/stdlib.d.ts +22 -0
  209. package/src/scripts-runtime/types/swarm-sdk.d.ts +22 -0
  210. package/src/server-user.ts +1 -0
  211. package/src/slack/commands.ts +5 -1
  212. package/src/slack/handlers.ts +37 -2
  213. package/src/slack/left-threads.ts +27 -4
  214. package/src/tasks/follow-up-gate.ts +318 -0
  215. package/src/tasks/follow-up-redelegation-guard.ts +155 -0
  216. package/src/tasks/worker-follow-up.ts +21 -1
  217. package/src/tests/claude-artifacts-read-script.test.ts +209 -0
  218. package/src/tests/codex-app-server.test.ts +59 -0
  219. package/src/tests/codex-gateway-route.test.ts +50 -1
  220. package/src/tests/create-page-tool.test.ts +501 -0
  221. package/src/tests/db-client-busy-retry.test.ts +81 -0
  222. package/src/tests/db-client.test.ts +21 -0
  223. package/src/tests/db-task-read-contract.test.ts +9 -2
  224. package/src/tests/db-task-write-contract.test.ts +7 -1
  225. package/src/tests/db-tasks-read.test.ts +21 -0
  226. package/src/tests/entrypoint-api-readiness.test.ts +416 -210
  227. package/src/tests/explicit-model-validation.test.ts +14 -8
  228. package/src/tests/fixtures/pages/head-v1.html +56 -0
  229. package/src/tests/follow-up-gate-shadow.test.ts +513 -0
  230. package/src/tests/follow-up-redelivery-guard.test.ts +432 -202
  231. package/src/tests/identity-field-budget.test.ts +1 -1
  232. package/src/tests/internal-ai/credentials.test.ts +62 -0
  233. package/src/tests/internal-ai/task-title.test.ts +283 -0
  234. package/src/tests/list-total-cache.test.ts +27 -2
  235. package/src/tests/memory-fts-populate.test.ts +11 -9
  236. package/src/tests/memory-retrieval-purge.test.ts +80 -0
  237. package/src/tests/merge-gate-detect-changes.test.ts +145 -0
  238. package/src/tests/migration-260-runtime-pool-cache.test.ts +118 -0
  239. package/src/tests/page-proxy.test.ts +1 -1
  240. package/src/tests/page-session-dev-cookie.test.ts +188 -0
  241. package/src/tests/pages-frame-ancestors.test.ts +28 -1
  242. package/src/tests/pages-head-v2.test.ts +534 -0
  243. package/src/tests/pages-http.test.ts +330 -0
  244. package/src/tests/pages-public-html.test.ts +43 -0
  245. package/src/tests/pages-storage.test.ts +182 -0
  246. package/src/tests/pages-versioning.test.ts +72 -0
  247. package/src/tests/profile-sync-stale-writeback.test.ts +334 -0
  248. package/src/tests/profile-sync.test.ts +11 -15
  249. package/src/tests/query-audit-plans.test.ts +27 -0
  250. package/src/tests/runtime-cache-cleanup.test.ts +367 -0
  251. package/src/tests/runtime-e2b-pools.test.ts +41 -0
  252. package/src/tests/runtime-pools-db.test.ts +98 -0
  253. package/src/tests/runtime-pools-http.test.ts +29 -0
  254. package/src/tests/runtime-providers-docker.test.ts +253 -0
  255. package/src/tests/runtime-remote-controller.test.ts +66 -2
  256. package/src/tests/runtime-supervisor.test.ts +66 -2
  257. package/src/tests/scheduled-task-required-params-migration.test.ts +3 -1
  258. package/src/tests/script-connections.test.ts +13 -0
  259. package/src/tests/script-runs-http.test.ts +684 -2
  260. package/src/tests/seed-registry.test.ts +28 -6
  261. package/src/tests/seed-schedules.test.ts +61 -8
  262. package/src/tests/seed-scripts.test.ts +168 -2
  263. package/src/tests/slack-leave-thread.test.ts +145 -5
  264. package/src/tests/slack-render-v2-query-plans.test.ts +24 -2
  265. package/src/tests/status.test.ts +11 -0
  266. package/src/tests/swarm-diff.test.ts +121 -2
  267. package/src/tests/task-auto-title-config-guard.test.ts +37 -0
  268. package/src/tests/task-auto-title-listener.test.ts +165 -0
  269. package/src/tests/tasks-readable-row.test.ts +155 -0
  270. package/src/tests/theme-import.test.ts +758 -0
  271. package/src/tests/themes-page-theme.test.ts +155 -0
  272. package/src/tests/themes-presets.test.ts +172 -0
  273. package/src/tests/workflow-script-principal.test.ts +2 -1
  274. package/src/themes/classics.ts +949 -0
  275. package/src/themes/import.ts +420 -0
  276. package/src/themes/page-fields.ts +40 -0
  277. package/src/themes/page-theme.ts +102 -0
  278. package/src/themes/presets.ts +561 -0
  279. package/src/themes/tokens.ts +218 -0
  280. package/src/tools/app-upsert.ts +1 -1
  281. package/src/tools/create-page.ts +118 -12
  282. package/src/tools/send-task.ts +35 -47
  283. package/src/tools/slack-leave-thread.ts +1 -1
  284. package/src/tools/task-dedup.ts +45 -21
  285. package/src/tools/utils.ts +33 -0
  286. package/src/types.ts +83 -3
  287. package/src/utils/constants.ts +19 -0
  288. package/src/utils/follow-up-gate-schedule-ids.ts +13 -0
  289. package/src/utils/internal-ai/credentials.ts +146 -93
  290. package/src/utils/internal-ai/index.ts +10 -0
  291. package/src/utils/internal-ai/models.ts +18 -0
  292. package/src/utils/internal-ai/task-title.ts +282 -0
  293. package/src/utils/page-session.ts +37 -0
  294. package/templates/schedules/daily-status-report/content.md +88 -2
  295. package/templates/schedules/daily-swarm-update-check/content.md +16 -40
  296. package/templates/skills/apps/SKILL.md +1 -1
  297. package/templates/skills/apps/content.md +1 -1
  298. package/templates/skills/composio-google-docs/content.md +10 -0
  299. package/templates/skills/heartbeat-runbook/content.md +1 -1
  300. package/templates/skills/pages/config.json +1 -1
  301. package/templates/skills/pages/content.md +539 -86
  302. package/templates/skills/pages/files/examples/annotated-pr.html +21 -12
  303. package/templates/skills/pages/files/examples/multiplayer-board.html +41 -41
  304. package/templates/skills/pages/files/examples/report-page.html +125 -124
  305. package/templates/skills/script-workflows/content.md +19 -1
  306. package/templates/skills/swarm-docs/content.md +1 -0
  307. package/templates/skills/swarm-scripts/SKILL.md +2 -0
  308. package/templates/skills/swarm-scripts/content.md +2 -0
  309. package/dist/cli-2pnswgh8.js +0 -189
  310. package/dist/cli-dznrgaep.js +0 -30
  311. package/dist/cli-w3hcrxht.js +0 -6985
  312. package/dist/handlers-vwmba1m2.js +0 -31
  313. package/dist/index-5r71rf98.js +0 -32
  314. package/dist/index-anmwxs87.js +0 -29
  315. package/dist/index-spp0ra5c.js +0 -36
  316. package/dist/lead-fjy418cw.js +0 -69
  317. package/dist/worker-0c5tyzqe.js +0 -69
  318. package/templates/schedules/daily-workflow-health-audit/config.json +0 -19
  319. package/templates/schedules/daily-workflow-health-audit/content.md +0 -191
@@ -13,19 +13,20 @@ import {
13
13
  init_swarm_config_guard,
14
14
  registerStoredSecret,
15
15
  init_secret_registry,
16
+ getSwarmConfigs2,
16
17
  upsertSwarmConfig2,
17
18
  init_db4
18
- } from "./cli-1ayk1eas.js";
19
+ } from "./cli-wk5yrfwd.js";
19
20
  import {
20
21
  createRuntimeProvider,
21
22
  init_runtime_providers
22
- } from "./cli-xbkdm710.js";
23
+ } from "./cli-yndmfxb3.js";
23
24
  import {
24
25
  closeSessionTokenConnections,
25
26
  init_session_token_connections,
26
27
  insertSessionToken,
27
28
  init_users
28
- } from "./cli-bhjt02p8.js";
29
+ } from "./cli-5jnhv72d.js";
29
30
  import {
30
31
  RuntimeControllerCreateSchema,
31
32
  RuntimeControllerUpdateSchema,
@@ -33,7 +34,11 @@ import {
33
34
  RuntimePoolUpdateSchema,
34
35
  RuntimePoolCreateAgentSchema,
35
36
  init_types4
36
- } from "./cli-7wspm5gm.js";
37
+ } from "./cli-n6bv12jn.js";
38
+ import {
39
+ poolCacheKey,
40
+ init_types5
41
+ } from "./cli-0agcv1v5.js";
37
42
  import {
38
43
  scrubSecrets,
39
44
  registerVolatileSecret,
@@ -44,6 +49,79 @@ import {
44
49
  __esm
45
50
  } from "./cli-242037k3.js";
46
51
 
52
+ // src/be/runtime-pools/cache-cleanup.ts
53
+ async function getPoolCache(poolId) {
54
+ const row = await getDbClient2().get("SELECT cache, json_extract(placements, '$[0]') AS controllerId FROM runtime_pools WHERE id = ?", [poolId]);
55
+ if (!row?.cache)
56
+ return null;
57
+ const cache = JSON.parse(row.cache);
58
+ return {
59
+ key: cache.key ?? poolCacheKey(poolId),
60
+ mountPath: cache.mountPath,
61
+ controllerId: row.controllerId
62
+ };
63
+ }
64
+ async function queuePoolCacheRelease(pool, actor) {
65
+ if (!pool.cache)
66
+ return;
67
+ const owner = (await getSwarmConfigs2({ scope: "global", key: "runtime_owner_id" }))[0];
68
+ if (!owner)
69
+ return;
70
+ const cache = await getPoolCache(pool.id);
71
+ const runtimes = await getDbClient2().query(`SELECT id FROM runtime_instances WHERE pool_id = ?
72
+ AND (controller_id = ? OR controller_id IS NULL) AND status != 'offline'`, [pool.id, pool.placements[0]]);
73
+ await getDbClient2().run(`INSERT INTO runtime_cache_releases
74
+ (id, pool_id, controller_id, owner_id, cache_key, runtime_ids, created_by, updated_by)
75
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(controller_id, owner_id, cache_key) DO NOTHING`, [
76
+ crypto.randomUUID(),
77
+ pool.id,
78
+ pool.placements[0],
79
+ owner.value,
80
+ cache.key,
81
+ JSON.stringify(runtimes.map((r) => r.id)),
82
+ actor,
83
+ actor
84
+ ]);
85
+ }
86
+ async function reconcileCacheReleases(commands, signal, now) {
87
+ const jobs = await getDbClient2().query(`SELECT id, pool_id AS poolId, controller_id AS controllerId, owner_id AS ownerId,
88
+ cache_key AS key FROM runtime_cache_releases ORDER BY created_at`);
89
+ for (const job of jobs) {
90
+ if (signal.aborted)
91
+ return;
92
+ const claimed = now ?? new Date;
93
+ const claimedAt = claimed.toISOString();
94
+ const reserved = await getDbClient2().run(`UPDATE runtime_cache_releases SET state = 'deleting', updated_at = ?
95
+ WHERE id = ? AND (state = 'pending' OR updated_at < ?) AND NOT EXISTS (
96
+ SELECT 1 FROM runtime_instances WHERE status != 'offline'
97
+ AND id IN (SELECT value FROM json_each(runtime_cache_releases.runtime_ids))
98
+ )`, [claimedAt, job.id, new Date(claimed.getTime() - RELEASE_LEASE_MS).toISOString()]);
99
+ if (!reserved.changes)
100
+ continue;
101
+ try {
102
+ signal.throwIfAborted();
103
+ const controller = await commands(job.controllerId);
104
+ if (!controller.releaseCache)
105
+ throw new Error("Controller cannot release caches; upgrade it before cleanup");
106
+ await controller.releaseCache({ key: job.key, poolId: job.poolId, ownerId: job.ownerId });
107
+ await getDbClient2().run("DELETE FROM runtime_cache_releases WHERE id = ? AND state = 'deleting' AND updated_at = ?", [job.id, claimedAt]);
108
+ } catch (error) {
109
+ const message = scrubSecrets(String(error));
110
+ await getDbClient2().run(`UPDATE runtime_cache_releases SET state = 'pending', last_error = ?, updated_at = ?
111
+ WHERE id = ? AND state = 'deleting' AND updated_at = ?`, [message, new Date().toISOString(), job.id, claimedAt]);
112
+ if (!signal.aborted)
113
+ console.error("[runtime-pools] Cache cleanup deferred:", message);
114
+ }
115
+ }
116
+ }
117
+ var RELEASE_LEASE_MS;
118
+ var init_cache_cleanup = __esm(() => {
119
+ init_types5();
120
+ init_secret_scrubber();
121
+ init_db4();
122
+ RELEASE_LEASE_MS = 5 * 60000;
123
+ });
124
+
47
125
  // src/be/runtime-pools/errors.ts
48
126
  var RuntimePoolError2;
49
127
  var init_errors = __esm(() => {
@@ -114,11 +192,13 @@ function rowToController(row) {
114
192
  };
115
193
  }
116
194
  function rowToPool(row) {
195
+ const cache = row.cache ? JSON.parse(row.cache) : null;
117
196
  return {
118
197
  ...row,
119
198
  placements: JSON.parse(row.placements),
120
199
  env: JSON.parse(row.env),
121
200
  resources: row.resources ? JSON.parse(row.resources) : null,
201
+ cache: cache ? { mountPath: cache.mountPath } : null,
122
202
  enabled: row.enabled === 1
123
203
  };
124
204
  }
@@ -157,6 +237,15 @@ async function getRuntimeControllerTarget2(controller, env = process.env) {
157
237
  E2B_MAX_CONTINUOUS_SEC: env.E2B_MAX_CONTINUOUS_SEC,
158
238
  RUNTIME_WORKER_API_URL: env.RUNTIME_WORKER_API_URL,
159
239
  PUBLIC_MCP_BASE_URL: env.PUBLIC_MCP_BASE_URL,
240
+ ...controller.kind === "boxd" && controller.placement === "builtin" ? {
241
+ BOXD_ORG: env.BOXD_ORG,
242
+ BOXD_BASE_URL: env.BOXD_BASE_URL,
243
+ BOXD_SNAPSHOT: env.BOXD_SNAPSHOT,
244
+ BOXD_DELETE_AFTER_SEC: env.BOXD_DELETE_AFTER_SEC,
245
+ BOXD_START_TIMEOUT_SEC: env.BOXD_START_TIMEOUT_SEC,
246
+ BOXD_STATUS_TIMEOUT_SEC: env.BOXD_STATUS_TIMEOUT_SEC,
247
+ BOXD_TEARDOWN_TIMEOUT_SEC: env.BOXD_TEARDOWN_TIMEOUT_SEC
248
+ } : {},
160
249
  ...controller.config,
161
250
  ...secrets
162
251
  };
@@ -232,11 +321,18 @@ async function updateRuntimeController2(id, input, actor = null) {
232
321
  if (await tx.get("SELECT id FROM runtime_controllers WHERE name = ? AND id != ?", [data.name, id]))
233
322
  throw new RuntimePoolError2("Controller name already exists", 409);
234
323
  const pools = await listRuntimePools2();
324
+ const oldConfig = JSON.parse(row.config);
325
+ const configChanged = Object.keys(data.config).length !== Object.keys(oldConfig).length || Object.entries(data.config).some(([key, value]) => oldConfig[key] !== value);
326
+ const secrets = patch.secretConfig !== undefined ? controllerSecrets(row) : {};
327
+ const secretsChanged = Object.entries(patch.secretConfig ?? {}).some(([key, value]) => value === null ? key in secrets : secrets[key] !== value);
328
+ if ((data.kind !== row.kind || data.placement !== row.placement || configChanged || secretsChanged) && (pools.some((pool) => pool.cache && pool.placements.includes(id)) || await tx.get("SELECT id FROM runtime_cache_releases WHERE controller_id = ? LIMIT 1", [
329
+ id
330
+ ])))
331
+ throw new RuntimePoolError2("Disable pool caches and wait for cleanup before changing controller configuration or placement", 409);
235
332
  if (pools.some((pool) => pool.placements.includes(id) && pool.kind !== data.kind))
236
333
  throw new RuntimePoolError2("Pool kind must equal controller kind");
237
334
  let encrypted = row.secretConfig;
238
335
  if (patch.secretConfig !== undefined) {
239
- const secrets = controllerSecrets(row);
240
336
  for (const [key, value] of Object.entries(patch.secretConfig)) {
241
337
  if (value === null)
242
338
  delete secrets[key];
@@ -268,6 +364,8 @@ async function deleteRuntimeController2(id) {
268
364
  throw new RuntimePoolError2("Controller not found", 404);
269
365
  if ((await listRuntimePools2()).some((pool) => pool.placements.includes(id)))
270
366
  throw new RuntimePoolError2("Controller has runtime pools", 409);
367
+ if (await tx.get("SELECT id FROM runtime_cache_releases WHERE controller_id = ? LIMIT 1", [id]))
368
+ throw new RuntimePoolError2("Controller has pending cache cleanup", 409);
271
369
  await revokeControllerTokens(id);
272
370
  await tx.run("DELETE FROM runtime_controllers WHERE id = ?", [id]);
273
371
  });
@@ -281,6 +379,9 @@ async function getRuntimePool2(id) {
281
379
  }
282
380
  async function validatePool(data) {
283
381
  supportedKind(data.kind);
382
+ if (data.cache && !(await createRuntimeProvider(data.kind)).traits.persistentCache) {
383
+ throw new RuntimePoolError2(`${data.kind} does not support persistent pool caches`);
384
+ }
284
385
  const controller = await getRuntimeController2(data.placements[0]);
285
386
  if (!controller)
286
387
  throw new RuntimePoolError2("Controller not found");
@@ -301,7 +402,7 @@ async function createRuntimePool2(input, actor = null, id = crypto.randomUUID())
301
402
  await validatePool(data);
302
403
  if (await tx.get("SELECT id FROM runtime_pools WHERE name = ? OR id = ?", [data.name, id]))
303
404
  throw new RuntimePoolError2("Pool already exists", 409);
304
- await tx.run(`INSERT INTO runtime_pools (id, name, kind, placements, image, lifecycle, idle_minutes, slots_per_runtime, max_runtimes, min_runtimes, delivery, env, resources, ttl_sec, enabled, created_by, updated_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
405
+ await tx.run(`INSERT INTO runtime_pools (id, name, kind, placements, image, lifecycle, idle_minutes, slots_per_runtime, max_runtimes, min_runtimes, delivery, env, resources, cache, ttl_sec, enabled, created_by, updated_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
305
406
  id,
306
407
  data.name,
307
408
  data.kind,
@@ -315,6 +416,7 @@ async function createRuntimePool2(input, actor = null, id = crypto.randomUUID())
315
416
  data.delivery,
316
417
  JSON.stringify(data.env),
317
418
  data.resources ? JSON.stringify(data.resources) : null,
419
+ data.cache ? JSON.stringify({ ...data.cache, key: poolCacheKey(id, crypto.randomUUID()) }) : null,
318
420
  data.ttlSec,
319
421
  Number(data.enabled),
320
422
  actor,
@@ -335,7 +437,13 @@ async function updateRuntimePool2(id, input, actor = null) {
335
437
  await validatePool(data);
336
438
  if (await tx.get("SELECT id FROM runtime_pools WHERE name = ? AND id != ?", [data.name, id]))
337
439
  throw new RuntimePoolError2("Pool name already exists", 409);
338
- await tx.run(`UPDATE runtime_pools SET name = ?, kind = ?, placements = ?, image = ?, resolved_image = ?, lifecycle = ?, idle_minutes = ?, slots_per_runtime = ?, max_runtimes = ?, min_runtimes = ?, delivery = ?, env = ?, resources = ?, ttl_sec = ?, enabled = ?, updated_by = COALESCE(?, updated_by), updated_at = ? WHERE id = ?`, [
440
+ const cache = data.cache ? {
441
+ ...data.cache,
442
+ key: existing.cache && data.placements[0] === existing.placements[0] ? (await getPoolCache(id)).key : poolCacheKey(id, crypto.randomUUID())
443
+ } : null;
444
+ if (existing.cache && (!data.cache || data.placements[0] !== existing.placements[0]))
445
+ await queuePoolCacheRelease(existing, actor);
446
+ await tx.run(`UPDATE runtime_pools SET name = ?, kind = ?, placements = ?, image = ?, resolved_image = ?, lifecycle = ?, idle_minutes = ?, slots_per_runtime = ?, max_runtimes = ?, min_runtimes = ?, delivery = ?, env = ?, resources = ?, cache = ?, ttl_sec = ?, enabled = ?, updated_by = COALESCE(?, updated_by), updated_at = ? WHERE id = ?`, [
339
447
  data.name,
340
448
  data.kind,
341
449
  JSON.stringify(data.placements),
@@ -349,6 +457,7 @@ async function updateRuntimePool2(id, input, actor = null) {
349
457
  data.delivery,
350
458
  JSON.stringify(data.env),
351
459
  data.resources ? JSON.stringify(data.resources) : null,
460
+ cache ? JSON.stringify(cache) : null,
352
461
  data.ttlSec,
353
462
  Number(data.enabled),
354
463
  actor,
@@ -360,7 +469,8 @@ async function updateRuntimePool2(id, input, actor = null) {
360
469
  }
361
470
  async function deleteRuntimePool2(id, force = false, actor = null) {
362
471
  await getDbClient2().transaction(async (tx) => {
363
- if (!await getRuntimePool2(id))
472
+ const pool = await getRuntimePool2(id);
473
+ if (!pool)
364
474
  throw new RuntimePoolError2("Pool not found", 404);
365
475
  if (await tx.get("SELECT id FROM runtime_instances WHERE pool_id = ? AND status != 'offline' LIMIT 1", [id]))
366
476
  throw new RuntimePoolError2("Pool has non-offline runtimes. Scale to zero or disable the pool and wait for teardown before deletion.", 409);
@@ -369,6 +479,7 @@ async function deleteRuntimePool2(id, force = false, actor = null) {
369
479
  if (force) {
370
480
  await tx.run("UPDATE agents SET runtime_pool_id = NULL, lastUpdatedAt = ?, updated_by = COALESCE(?, updated_by) WHERE runtime_pool_id = ?", [new Date().toISOString(), actor, id]);
371
481
  }
482
+ await queuePoolCacheRelease(pool, actor);
372
483
  await tx.run("DELETE FROM runtime_pools WHERE id = ?", [id]);
373
484
  });
374
485
  }
@@ -450,21 +561,23 @@ var controllerColumns = `id, name, kind, placement, config, secret_config AS sec
450
561
  status, last_seen_at AS lastSeenAt, last_error AS lastError, last_error_at AS lastErrorAt,
451
562
  created_by AS createdBy, updated_by AS updatedBy, created_at AS createdAt, updated_at AS updatedAt`, poolColumns = `id, name, kind, placements, image, lifecycle, idle_minutes AS idleMinutes,
452
563
  slots_per_runtime AS slotsPerRuntime, max_runtimes AS maxRuntimes, min_runtimes AS minRuntimes,
453
- delivery, env, resources, ttl_sec AS ttlSec, resolved_image AS resolvedImage, enabled,
564
+ delivery, env, resources, cache, ttl_sec AS ttlSec, resolved_image AS resolvedImage, enabled,
454
565
  consecutive_failures AS consecutiveFailures, circuit_open_until AS circuitOpenUntil,
455
566
  last_error AS lastError, last_error_at AS lastErrorAt, created_by AS createdBy,
456
567
  updated_by AS updatedBy, created_at AS createdAt, updated_at AS updatedAt`;
457
568
  var init_db2 = __esm(() => {
458
569
  init_runtime_providers();
570
+ init_types5();
459
571
  init_types4();
460
572
  init_secret_scrubber();
461
573
  init_crypto();
462
574
  init_db4();
463
575
  init_agents();
464
576
  init_secret_registry();
577
+ init_cache_cleanup();
465
578
  init_errors();
466
579
  init_tokens();
467
580
  init_errors();
468
581
  });
469
582
 
470
- export { RuntimePoolError2, mintControllerToken, init_tokens, listRuntimeControllers2, getRuntimeController2, getRuntimeControllerTarget2, checkE2bControllerConfig2, createRuntimeController2, updateRuntimeController2, deleteRuntimeController2, listRuntimePools2, getRuntimePool2, createRuntimePool2, updateRuntimePool2, deleteRuntimePool2, bindAgentToPool2, listAgentsForPool2, getPoolForAgent2, resolvePoolDelivery2, createPoolAgent2, loadRuntimeControllerSecrets2, init_db2 };
583
+ export { getPoolCache, reconcileCacheReleases, init_cache_cleanup, RuntimePoolError2, mintControllerToken, init_tokens, listRuntimeControllers2, getRuntimeController2, getRuntimeControllerTarget2, checkE2bControllerConfig2, createRuntimeController2, updateRuntimeController2, deleteRuntimeController2, listRuntimePools2, getRuntimePool2, createRuntimePool2, updateRuntimePool2, deleteRuntimePool2, bindAgentToPool2, listAgentsForPool2, getPoolForAgent2, resolvePoolDelivery2, createPoolAgent2, loadRuntimeControllerSecrets2, init_db2 };
@@ -9,7 +9,7 @@ import {
9
9
  loadMcpConfig,
10
10
  addMcpServerConfig,
11
11
  removeMcpServerConfig
12
- } from "./cli-vqypxzh4.js";
12
+ } from "./cli-6g0hb4cp.js";
13
13
  import {
14
14
  McpOAuthCredentialStore2,
15
15
  McpSignInCancelledError2,
@@ -17,7 +17,7 @@ import {
17
17
  McpServerLog2,
18
18
  createDefaultTransport2,
19
19
  McpServerConnection2
20
- } from "./cli-fqzx7gwa.js";
20
+ } from "./cli-5zx699j9.js";
21
21
 
22
22
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/mcp/cli.js
23
23
  import { existsSync } from "node:fs";
@@ -4,7 +4,7 @@ import {
4
4
  fxSessionExists,
5
5
  fxTargetProfile,
6
6
  ACPAdapter2
7
- } from "./cli-rm6hqj3z.js";
7
+ } from "./cli-fyt2g4wd.js";
8
8
  import {
9
9
  getKnownContextWindowSize,
10
10
  init_context_window
@@ -13,7 +13,7 @@ import {
13
13
  claudeMdLineageOf,
14
14
  planClaudeMdSync,
15
15
  init_profile_sync
16
- } from "./cli-a7v854rf.js";
16
+ } from "./cli-tgrv9cjx.js";
17
17
  import {
18
18
  scrubSecrets,
19
19
  init_secret_scrubber