@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
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  DEFAULT_MODEL_TIER_MAP,
18
18
  init_types4
19
- } from "./cli-7wspm5gm.js";
19
+ } from "./cli-n6bv12jn.js";
20
20
  import {
21
21
  resolveTemplateFromCode,
22
22
  resolveTemplateAsync,
@@ -3,6 +3,9 @@ import {
3
3
  } from "./cli-242037k3.js";
4
4
 
5
5
  // src/runtime-providers/types.ts
6
+ function poolCacheKey(poolId, generation) {
7
+ return `swarm-cache-${poolId}${generation ? `-${generation}` : ""}`;
8
+ }
6
9
  var RUNTIME_LABELS;
7
10
  var init_types5 = __esm(() => {
8
11
  RUNTIME_LABELS = {
@@ -13,4 +16,4 @@ var init_types5 = __esm(() => {
13
16
  };
14
17
  });
15
18
 
16
- export { RUNTIME_LABELS, init_types5 };
19
+ export { poolCacheKey, RUNTIME_LABELS, init_types5 };
@@ -12,7 +12,7 @@ import {
12
12
  SteeringBlockedError,
13
13
  init_steering2,
14
14
  init_db4
15
- } from "./cli-1ayk1eas.js";
15
+ } from "./cli-wk5yrfwd.js";
16
16
  import {
17
17
  isBlockExternalEnabled2,
18
18
  invalidateChannelExternality2,
@@ -20,7 +20,7 @@ import {
20
20
  shouldBlockChannel2,
21
21
  leaveExternalChannel2,
22
22
  init_external_channel
23
- } from "./cli-mmwm7zbf.js";
23
+ } from "./cli-rtt8g4v9.js";
24
24
  import {
25
25
  noteSlackInboundSideEffect,
26
26
  ignoreSlackInbound,
@@ -36,7 +36,7 @@ import {
36
36
  init_render_v2,
37
37
  registerTreeMessage,
38
38
  init_watcher
39
- } from "./cli-wvaawacd.js";
39
+ } from "./cli-cppkf404.js";
40
40
  import {
41
41
  workflowEventBus2,
42
42
  init_event_bus
@@ -55,15 +55,13 @@ import {
55
55
  routeMessage,
56
56
  extractTaskFromMessage,
57
57
  init_router,
58
- shouldSkipLeftSlackThread,
59
- init_left_threads,
60
58
  extractSlackMessageText,
61
59
  slackInboundMessageText,
62
60
  collectSlackMessageFiles,
63
61
  init_message_text,
64
62
  dispatchPre2,
65
63
  init_dispatcher
66
- } from "./cli-1338796d.js";
64
+ } from "./cli-ws19768n.js";
67
65
  import {
68
66
  wasEventSeen,
69
67
  init_event_dedup,
@@ -74,13 +72,21 @@ import {
74
72
  getBufferMessageCount,
75
73
  instantFlush,
76
74
  init_thread_buffer
77
- } from "./cli-3h4nhjn8.js";
75
+ } from "./cli-k8196sh2.js";
78
76
  import {
79
77
  enrichSlackUserEmail,
80
78
  resolveSlackUserId,
81
79
  rewriteSlackMentions,
82
80
  init_enrich
83
- } from "./cli-nmbmy64z.js";
81
+ } from "./cli-pq73h5mz.js";
82
+ import {
83
+ isSlackLeaveThreadDisabled,
84
+ SLACK_LEFT_THREAD_CONFIRMATION,
85
+ isSlackLeaveThreadCommand,
86
+ leaveSlackThread,
87
+ shouldSkipLeftSlackThread,
88
+ init_left_threads
89
+ } from "./cli-g08zdaec.js";
84
90
  import {
85
91
  resolveTemplate,
86
92
  init_resolver
@@ -299,6 +305,22 @@ function registerMessageHandler2(app) {
299
305
  return ignoreSlackInbound("unauthorized_user");
300
306
  }
301
307
  const botMentioned = !!cachedBotUserId && !!msg.text?.includes(`<@${cachedBotUserId}>`);
308
+ if (msg.thread_ts && !isSlackLeaveThreadDisabled() && isSlackLeaveThreadCommand(msg.text, cachedBotUserId) && (await getMostRecentTaskInThread2(msg.channel, msg.thread_ts) !== null || await wasThreadStartedBySwarm(client, msg.channel, msg.thread_ts))) {
309
+ noteSlackInboundSideEffect("thread_leave");
310
+ await leaveSlackThread(msg.channel, msg.thread_ts, { slackUserId: msg.user });
311
+ console.log(`[Slack] Left thread ${msg.channel}/${msg.thread_ts}: !leave from ${msg.user}`);
312
+ try {
313
+ await client.chat.postEphemeral({
314
+ channel: msg.channel,
315
+ user: msg.user,
316
+ thread_ts: msg.thread_ts,
317
+ text: SLACK_LEFT_THREAD_CONFIRMATION
318
+ });
319
+ } catch (error) {
320
+ console.error("[Slack] Failed to confirm !leave:", error);
321
+ }
322
+ return;
323
+ }
302
324
  if (await shouldSkipLeftSlackThread(msg.channel, msg.thread_ts, botMentioned)) {
303
325
  console.log(`[Slack] Skipping message in left thread ${msg.channel}/${msg.thread_ts}`);
304
326
  return ignoreSlackInbound("thread_left");
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_MODEL_TIER_MAP,
3
3
  init_types4
4
- } from "./cli-7wspm5gm.js";
4
+ } from "./cli-n6bv12jn.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-242037k3.js";
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  RuntimeProviderKindSchema,
3
+ RuntimePoolCacheSchema,
3
4
  init_types4
4
- } from "./cli-7wspm5gm.js";
5
+ } from "./cli-n6bv12jn.js";
5
6
  import {
6
7
  init_zod
7
8
  } from "./cli-k5671be5.js";
@@ -44,6 +45,7 @@ class BuiltinController {
44
45
  renew;
45
46
  pause;
46
47
  resume;
48
+ releaseCache;
47
49
  constructor(id, provider, target, workerApiUrl) {
48
50
  this.id = id;
49
51
  this.provider = provider;
@@ -52,6 +54,8 @@ class BuiltinController {
52
54
  this.workerApiUrl = workerApiUrl;
53
55
  if (provider.renew)
54
56
  this.renew = (handle, ttlSec) => this.call(() => provider.renew(target, handle, ttlSec));
57
+ if (provider.releaseCache)
58
+ this.releaseCache = (cache) => this.call(() => provider.releaseCache(target, cache));
55
59
  if (provider.pause)
56
60
  this.pause = (handle) => this.call(() => provider.pause(target, handle));
57
61
  if (provider.resume)
@@ -101,6 +105,7 @@ var traitsSchema = object2({
101
105
  canProvision: boolean(),
102
106
  ephemeralDisk: boolean(),
103
107
  supportsPause: boolean(),
108
+ persistentCache: boolean().optional(),
104
109
  maxTtlSec: number2().positive().optional(),
105
110
  maxContinuousSec: number2().positive().optional()
106
111
  });
@@ -113,10 +118,22 @@ var provisionSchema = object2({
113
118
  env: record2(string2(), string2()),
114
119
  labels: record2(string2(), string2()),
115
120
  resources: object2({ cpu: number2().positive().optional(), memoryMb: number2().positive().optional() }).optional(),
116
- ttlSec: number2().positive().optional()
121
+ ttlSec: number2().positive().optional(),
122
+ cache: RuntimePoolCacheSchema.extend({
123
+ key: string2().regex(/^[a-zA-Z0-9][a-zA-Z0-9_.-]+$/)
124
+ }).optional()
117
125
  });
118
126
  var command = { type: literal2("cmd"), id: string2().min(1) };
119
127
  var ControllerCommandSchema = discriminatedUnion("op", [
128
+ object2({
129
+ ...command,
130
+ op: literal2("release-cache"),
131
+ payload: object2({
132
+ key: string2().regex(/^[a-zA-Z0-9][a-zA-Z0-9_.-]+$/),
133
+ poolId: string2().min(1),
134
+ ownerId: string2().min(1)
135
+ })
136
+ }),
120
137
  object2({ ...command, op: literal2("provision"), payload: provisionSchema }),
121
138
  object2({
122
139
  ...command,
@@ -4,13 +4,13 @@ import {
4
4
  getActivePricingRow2,
5
5
  insertPricingRow2,
6
6
  init_db4
7
- } from "./cli-1ayk1eas.js";
7
+ } from "./cli-wk5yrfwd.js";
8
8
  import {
9
9
  loadModelsDevCache,
10
10
  init_modelsdev_cache,
11
11
  buildModelsDevSeedRows,
12
12
  init_seed_pricing
13
- } from "./cli-xtjhfmpc.js";
13
+ } from "./cli-pc6n7fre.js";
14
14
  import {
15
15
  setRuntimeModelCatalog,
16
16
  init_runtime_model_catalog
@@ -5,7 +5,7 @@ import {
5
5
  validateRuntimeTokenTtlHours,
6
6
  init_swarm_config_guard,
7
7
  init_db4
8
- } from "./cli-1ayk1eas.js";
8
+ } from "./cli-wk5yrfwd.js";
9
9
  import {
10
10
  registerVolatileSecret,
11
11
  unregisterVolatileSecret,
@@ -8,12 +8,12 @@ import {
8
8
  resolveConfigValueOrThrow,
9
9
  resolveHeadersOrThrow,
10
10
  FileAuthStorageBackend
11
- } from "./cli-vqypxzh4.js";
11
+ } from "./cli-6g0hb4cp.js";
12
12
  import {
13
13
  oauthSuccessHtml,
14
14
  oauthErrorHtml,
15
15
  init_oauth_page
16
- } from "./cli-qxnf8z2z.js";
16
+ } from "./cli-excnnjg2.js";
17
17
  import {
18
18
  __toESM
19
19
  } from "./cli-242037k3.js";
@@ -1,5 +1,7 @@
1
1
  import {
2
+ __toESM,
2
3
  __commonJS,
4
+ __esm,
3
5
  __require
4
6
  } from "./cli-242037k3.js";
5
7
 
@@ -2886,4 +2888,18 @@ var require_websocket_server = __commonJS(function(exports, module) {
2886
2888
  }
2887
2889
  });
2888
2890
 
2889
- export { require_permessage_deflate, require_receiver, require_sender, require_extension, require_websocket, require_stream, require_subprotocol, require_websocket_server };
2891
+ // node_modules/ws/wrapper.mjs
2892
+ var import_stream, import_extension, import_permessage_deflate, import_receiver, import_sender, import_subprotocol, import_websocket, import_websocket_server, wrapper_default;
2893
+ var init_wrapper2 = __esm(() => {
2894
+ import_stream = __toESM(require_stream(), 1);
2895
+ import_extension = __toESM(require_extension(), 1);
2896
+ import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
2897
+ import_receiver = __toESM(require_receiver(), 1);
2898
+ import_sender = __toESM(require_sender(), 1);
2899
+ import_subprotocol = __toESM(require_subprotocol(), 1);
2900
+ import_websocket = __toESM(require_websocket(), 1);
2901
+ import_websocket_server = __toESM(require_websocket_server(), 1);
2902
+ wrapper_default = import_websocket.default;
2903
+ });
2904
+
2905
+ export { import_websocket, import_websocket_server, wrapper_default, init_wrapper2 };
@@ -49,7 +49,7 @@ import {
49
49
  streamSimple2,
50
50
  completeSimple,
51
51
  init_compat
52
- } from "./cli-qxnf8z2z.js";
52
+ } from "./cli-excnnjg2.js";
53
53
  import {
54
54
  cleanupSessionResources,
55
55
  uuidv7
@@ -94,7 +94,7 @@ import {
94
94
  getSupportedThinkingLevels,
95
95
  clampThinkingLevel,
96
96
  modelsAreEqual
97
- } from "./cli-1h3wcpbw.js";
97
+ } from "./cli-snpj5zbj.js";
98
98
  import {
99
99
  EventStream,
100
100
  createAssistantMessageEventStream
@@ -55322,7 +55322,7 @@ function loadAllHighlightLanguages() {
55322
55322
  if (!allLanguagesPromise) {
55323
55323
  allLanguagesPromise = new Promise((resolve) => {
55324
55324
  setImmediate(() => {
55325
- import("./index-6rq3r5zb.js").then((m)=>__toESM(m.default,1)).then(() => resolve(), () => {
55325
+ import("./index-fpk4bcd9.js").then((m)=>__toESM(m.default,1)).then(() => resolve(), () => {
55326
55326
  resolve();
55327
55327
  });
55328
55328
  });
@@ -61474,7 +61474,7 @@ function getCreateJiti() {
61474
61474
  }
61475
61475
  var virtualModulesPromise;
61476
61476
  function getVirtualModules() {
61477
- virtualModulesPromise ??= import("./virtual-modules-fh4ha15b.js").then((module) => module.VIRTUAL_MODULES);
61477
+ virtualModulesPromise ??= import("./virtual-modules-d2pjk9j1.js").then((module) => module.VIRTUAL_MODULES);
61478
61478
  return virtualModulesPromise;
61479
61479
  }
61480
61480
  var _aliases = null;
@@ -80380,7 +80380,7 @@ function parseCodemodeSource(input) {
80380
80380
  init_build();
80381
80381
 
80382
80382
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/codemode/execute.lazy.js
80383
- var loadCodemodeExecutor = () => import("./execute-14qhqp4d.js");
80383
+ var loadCodemodeExecutor = () => import("./execute-1mhw6e4x.js");
80384
80384
 
80385
80385
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/codemode/renderer.js
80386
80386
  var CODE_PREVIEW_LINES = 10;
@@ -81537,7 +81537,7 @@ function createMcpResourceToolDefinitions(options) {
81537
81537
  }
81538
81538
 
81539
81539
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/mcp/runtime.lazy.js
81540
- var loadMcpRuntime = () => import("./runtime-qwggdpqr.js");
81540
+ var loadMcpRuntime = () => import("./runtime-fnbm7stk.js");
81541
81541
 
81542
81542
  // node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js
81543
81543
  import { randomUUID as randomUUID3 } from "node:crypto";
@@ -86666,7 +86666,7 @@ var builtInExtensions = [
86666
86666
  ];
86667
86667
 
86668
86668
  // node_modules/@earendil-works/pi-coding-agent/dist/extensions/mcp/cli.lazy.js
86669
- var loadMcpCommand = () => import("./cli-0gey5fzy.js");
86669
+ var loadMcpCommand = () => import("./cli-e0kmphd6.js");
86670
86670
 
86671
86671
  // node_modules/@earendil-works/pi-coding-agent/dist/migrations.js
86672
86672
  import { existsSync as existsSync22, mkdirSync as mkdirSync11, readdirSync as readdirSync10, readFileSync as readFileSync17, renameSync as renameSync2, rmSync as rmSync3, writeFileSync as writeFileSync11 } from "fs";
@@ -89196,7 +89196,7 @@ function playEasterEgg3d(tui, egg) {
89196
89196
  if (tui.hasOverlay())
89197
89197
  return true;
89198
89198
  const screen = tui.getScreenLines();
89199
- import("./easter-egg-3d-yyts7p16.js").then((module) => module.playEasterEgg3d(tui, screen, egg), () => {});
89199
+ import("./easter-egg-3d-nenw4x63.js").then((module) => module.playEasterEgg3d(tui, screen, egg), () => {});
89200
89200
  return true;
89201
89201
  }
89202
89202
  function playPiLogo3d(tui, column, row) {
@@ -7,7 +7,7 @@ var package_default;
7
7
  var init_package = __esm(() => {
8
8
  package_default = {
9
9
  name: "@desplega.ai/agent-swarm",
10
- version: "2.7.5",
10
+ version: "2.7.7",
11
11
  description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
12
12
  keywords: [
13
13
  "agent-swarm.dev",
@@ -69,6 +69,7 @@ var init_package = __esm(() => {
69
69
  "packages/*"
70
70
  ],
71
71
  overrides: {
72
+ "@slack/socket-mode": "^2.0.7",
72
73
  react: "19.2.3",
73
74
  "react-dom": "19.2.3"
74
75
  },
@@ -185,12 +186,12 @@ var init_package = __esm(() => {
185
186
  },
186
187
  devDependencies: {
187
188
  "@biomejs/biome": "^2.3.10",
188
- "@desplega.ai/slack-mock": "^0.4.1",
189
+ "@desplega.ai/slack-mock": "^0.5.0",
189
190
  "@desplega/model-catalog": "workspace:*",
190
191
  "@desplega/model-routing": "workspace:*",
191
192
  "@faker-js/faker": "^10.4.0",
192
- "@opencode/plugin": "2.2.1",
193
- "@opencode/sdk": "2.2.1",
193
+ "@opencode/plugin": "2.2.5",
194
+ "@opencode/sdk": "2.2.5",
194
195
  "@oxlint/plugins": "1.78.0",
195
196
  "@types/bun": "latest",
196
197
  "dependency-cruiser": "^18.0.0",
@@ -208,9 +209,9 @@ var init_package = __esm(() => {
208
209
  bun: ">=1.3.12"
209
210
  },
210
211
  dependencies: {
211
- "@agentclientprotocol/sdk": "2.1.0",
212
+ "@agentclientprotocol/sdk": "2.2.0",
212
213
  "@ai-sdk/openai": "^3.0.41",
213
- "@anthropic-ai/claude-agent-sdk": "0.3.312",
214
+ "@anthropic-ai/claude-agent-sdk": "0.3.316",
214
215
  "@anthropic-ai/sdk": "^1.3.0",
215
216
  "@asteasolutions/zod-to-openapi": "^8.0.0",
216
217
  "@aws-sdk/client-bedrock": "3.1048.0",
@@ -220,7 +221,7 @@ var init_package = __esm(() => {
220
221
  "@chat-adapter/teams": "4.41.1",
221
222
  "@chat-adapter/telegram": "4.41.1",
222
223
  "@cursor/sdk": "1.2.0",
223
- "@desplega.ai/agent-fs-just-bash": "0.18.13",
224
+ "@desplega.ai/agent-fs-just-bash": "0.18.14",
224
225
  "@desplega.ai/business-use": "^0.4.2",
225
226
  "@earendil-works/pi-agent-core": "^1.4.0",
226
227
  "@earendil-works/pi-ai": "^1.4.0",
@@ -229,7 +230,7 @@ var init_package = __esm(() => {
229
230
  "@jitl/quickjs-singlefile-mjs-release-sync": "0.32.0",
230
231
  "@linear/sdk": "^77.0.0",
231
232
  "@modelcontextprotocol/sdk": "1.32.1",
232
- "@openai/codex": "0.165.0",
233
+ "@openai/codex": "0.166.0",
233
234
  "@openfort/openfort-node": "^0.9.1",
234
235
  "@opentelemetry/api": "^1.9.1",
235
236
  "@opentelemetry/api-logs": "^0.218.0",
@@ -2,8 +2,8 @@ import {
2
2
  getSystemMessageText,
3
3
  init_text,
4
4
  clampThinkingLevel,
5
- init_models2
6
- } from "./cli-1h3wcpbw.js";
5
+ init_models
6
+ } from "./cli-snpj5zbj.js";
7
7
  import {
8
8
  __esm
9
9
  } from "./cli-242037k3.js";
@@ -380,7 +380,7 @@ function adjustMaxTokensForThinking(baseMaxTokens, modelMaxTokens, reasoningLeve
380
380
  }
381
381
  var CONTEXT_SAFETY_TOKENS = 4096, MIN_MAX_TOKENS = 1, MIN_ANSWER_TOKENS = 1024, DEFAULT_THINKING_BUDGETS;
382
382
  var init_simple_options = __esm(() => {
383
- init_models2();
383
+ init_models();
384
384
  init_estimate();
385
385
  DEFAULT_THINKING_BUDGETS = {
386
386
  minimal: 1024,
@@ -19,7 +19,7 @@ import {
19
19
  autoIndexMemoryFile,
20
20
  fetchConcurrentContext,
21
21
  summarizeTranscript
22
- } from "./cli-hn9hxmz9.js";
22
+ } from "./cli-8305gbq0.js";
23
23
  import {
24
24
  applyReasoningEffort
25
25
  } from "./cli-98rw5dt5.js";
@@ -0,0 +1,45 @@
1
+ import {
2
+ __esm
3
+ } from "./cli-242037k3.js";
4
+
5
+ // src/utils/internal-ai/models.ts
6
+ function resolveRaterModelString(kind) {
7
+ return process.env.MEMORY_RATER_MODEL ?? MEMORY_RATER_DEFAULT_MODEL[kind];
8
+ }
9
+ function kindForModelString(modelStr) {
10
+ const slash = modelStr.indexOf("/");
11
+ if (slash < 0)
12
+ return "claude-cli";
13
+ return PROVIDER_TO_KIND[modelStr.slice(0, slash)] ?? null;
14
+ }
15
+ function parseModelStr(modelStr) {
16
+ const idx = modelStr.indexOf("/");
17
+ if (idx < 0)
18
+ throw new Error(`invalid model string (no '/'): ${modelStr}`);
19
+ return [modelStr.slice(0, idx), modelStr.slice(idx + 1)];
20
+ }
21
+ var DEFAULT_MODEL, MEMORY_RATER_DEFAULT_MODEL, PROVIDER_TO_KIND;
22
+ var init_models2 = __esm(() => {
23
+ DEFAULT_MODEL = {
24
+ openrouter: "openrouter/deepseek/deepseek-v4.1-flash",
25
+ anthropic: "anthropic/claude-haiku-4-5",
26
+ openai: "openai/gpt-6-luna",
27
+ "openai-codex": "openai-codex/gpt-6-luna",
28
+ "claude-cli": "haiku"
29
+ };
30
+ MEMORY_RATER_DEFAULT_MODEL = {
31
+ openrouter: "openrouter/deepseek/deepseek-v4.1-flash",
32
+ anthropic: "anthropic/claude-haiku-4-5",
33
+ openai: "openai/gpt-6-luna",
34
+ "openai-codex": "openai-codex/gpt-6-luna",
35
+ "claude-cli": "haiku"
36
+ };
37
+ PROVIDER_TO_KIND = {
38
+ openrouter: "openrouter",
39
+ anthropic: "anthropic",
40
+ openai: "openai",
41
+ "openai-codex": "openai-codex"
42
+ };
43
+ });
44
+
45
+ export { DEFAULT_MODEL, resolveRaterModelString, kindForModelString, parseModelStr, init_models2 };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./cli-0726awxw.js";
5
5
  import {
6
6
  summarizeSession
7
- } from "./cli-a47xy8eq.js";
7
+ } from "./cli-qghe0h66.js";
8
8
  import {
9
9
  getMemoryRaterNames,
10
10
  init_memory_raters,
@@ -13,6 +13,13 @@ import {
13
13
  postRatings,
14
14
  init_llm
15
15
  } from "./cli-rvtm68yy.js";
16
+ import {
17
+ contentSha256,
18
+ PROFILE_FILE_IO,
19
+ readIdentityBaselines,
20
+ advanceIdentityBaselines,
21
+ init_profile_sync
22
+ } from "./cli-tgrv9cjx.js";
16
23
  import {
17
24
  getOpenRouterAttributionHeaders,
18
25
  init_openrouter_base_url
@@ -53,6 +60,7 @@ Current Progress: ${task.progress}` : ""
53
60
 
54
61
  // src/providers/pi-mono-extension.ts
55
62
  init_llm();
63
+ init_profile_sync();
56
64
  init_env_flag();
57
65
  init_memory_raters();
58
66
  init_openrouter_base_url();
@@ -106,42 +114,41 @@ async function fetchTaskDetails(config) {
106
114
  return null;
107
115
  }
108
116
  }
109
- async function syncIdentityFilesToServer(config, changeSource = "session_sync", signal) {
117
+ async function syncIdentityFilesToServer(config, changeSource = "session_sync", signal, io = PROFILE_FILE_IO) {
110
118
  const updates = {};
111
119
  const paths = {
112
120
  soulMd: "/workspace/SOUL.md",
113
121
  identityMd: "/workspace/IDENTITY.md",
114
122
  toolsMd: "/workspace/TOOLS.md"
115
123
  };
124
+ const baselines = await readIdentityBaselines(io.readFile);
116
125
  for (const [key, path] of Object.entries(paths)) {
117
126
  try {
118
- const file = Bun.file(path);
119
- if (await file.exists()) {
120
- const content = await file.text();
121
- if (content.trim() && content.length <= 65536) {
122
- updates[key] = content;
123
- }
127
+ const content = await io.readFile(path);
128
+ if (content === undefined || baselines?.[key] === contentSha256(content))
129
+ continue;
130
+ if (content.trim() && content.length <= 65536) {
131
+ updates[key] = content;
124
132
  }
125
133
  } catch {}
126
134
  }
127
135
  if (Object.keys(updates).length === 0)
128
136
  return;
129
137
  try {
130
- await fetch(`${config.apiUrl}/api/agents/${config.agentId}/profile`, {
138
+ const resp = await fetch(`${config.apiUrl}/api/agents/${config.agentId}/profile`, {
131
139
  method: "PUT",
132
140
  headers: apiHeaders(config),
133
141
  body: JSON.stringify({ ...updates, changeSource }),
134
142
  signal
135
143
  });
144
+ if (resp.ok)
145
+ await advanceIdentityBaselines(updates, io);
136
146
  } catch {}
137
147
  }
138
- async function syncSetupScriptToServer(config, changeSource = "session_sync") {
148
+ async function syncSetupScriptToServer(config, changeSource = "session_sync", io = PROFILE_FILE_IO) {
139
149
  try {
140
- const file = Bun.file("/workspace/start-up.sh");
141
- if (!await file.exists())
142
- return;
143
- const raw = await file.text();
144
- if (!raw.trim())
150
+ const raw = await io.readFile("/workspace/start-up.sh");
151
+ if (!raw?.trim())
145
152
  return;
146
153
  const markerStart = "# === Agent-managed setup (from DB) ===";
147
154
  const markerEnd = "# === End agent-managed setup ===";
@@ -155,11 +162,17 @@ async function syncSetupScriptToServer(config, changeSource = "session_sync") {
155
162
  }
156
163
  if (!content || content.length > 65536)
157
164
  return;
158
- await fetch(`${config.apiUrl}/api/agents/${config.agentId}/profile`, {
165
+ const baselines = await readIdentityBaselines(io.readFile);
166
+ if (baselines?.setupScript === contentSha256(content))
167
+ return;
168
+ const resp = await fetch(`${config.apiUrl}/api/agents/${config.agentId}/profile`, {
159
169
  method: "PUT",
160
170
  headers: apiHeaders(config),
161
171
  body: JSON.stringify({ setupScript: content, changeSource })
162
172
  });
173
+ if (resp.ok) {
174
+ await advanceIdentityBaselines({ setupScript: content }, io);
175
+ }
163
176
  } catch {}
164
177
  }
165
178
  async function autoIndexMemoryFile(config, editedPath) {
@@ -11,16 +11,16 @@ import {
11
11
  init_active_sessions,
12
12
  getSteeringMessageById2,
13
13
  init_db4
14
- } from "./cli-1ayk1eas.js";
14
+ } from "./cli-wk5yrfwd.js";
15
15
  import {
16
16
  getUserGrant2,
17
17
  init_rbac_roles
18
- } from "./cli-8hs41zy2.js";
18
+ } from "./cli-jtjtabxe.js";
19
19
  import {
20
20
  findUserById,
21
21
  findUserByExternalId,
22
22
  init_users
23
- } from "./cli-bhjt02p8.js";
23
+ } from "./cli-5jnhv72d.js";
24
24
  import {
25
25
  isRbacEnabled,
26
26
  can,
@@ -34,14 +34,14 @@ import {
34
34
  string2,
35
35
  object2
36
36
  } from "./cli-agfm16v9.js";
37
- import {
38
- getNodeEnv,
39
- init_node_env
40
- } from "./cli-rgeadyvq.js";
41
37
  import {
42
38
  isEnvFlagEnabled,
43
39
  init_env_flag
44
40
  } from "./cli-cebvbc9t.js";
41
+ import {
42
+ getNodeEnv,
43
+ init_node_env
44
+ } from "./cli-rgeadyvq.js";
45
45
  import {
46
46
  scrubSecrets,
47
47
  init_secret_scrubber
@@ -499,7 +499,7 @@ function route(def) {
499
499
  try {
500
500
  const rawBody = def.body ? await parseBody(req, def.maxBodyBytes) : undefined;
501
501
  if (def.session && "bodyTaskIds" in def.session) {
502
- const { bodySessionDenial } = await import("./session-access-sc9pn9da.js");
502
+ const { bodySessionDenial } = await import("./session-access-2fvamrdc.js");
503
503
  const denial = await bodySessionDenial(req, def.session.bodyTaskIds(rawBody));
504
504
  if (denial) {
505
505
  jsonError(res, denial, 403);
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  DEFAULT_MODEL_TIER_MAP,
26
26
  init_types4
27
- } from "./cli-7wspm5gm.js";
27
+ } from "./cli-n6bv12jn.js";
28
28
  import {
29
29
  getOpenRouterBaseUrl,
30
30
  getOpenRouterAttributionHeaders,