@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
@@ -1,11 +1,11 @@
1
- import {
2
- RUNTIME_LABELS,
3
- init_types5
4
- } from "./cli-gjr2y2xk.js";
5
1
  import {
6
2
  redactWithEnv,
7
3
  init_env2
8
4
  } from "./cli-ae7mrdf9.js";
5
+ import {
6
+ RUNTIME_LABELS,
7
+ init_types5
8
+ } from "./cli-0agcv1v5.js";
9
9
  import {
10
10
  scrubSecrets,
11
11
  init_secret_scrubber
@@ -43,6 +43,13 @@ function socketPath(target) {
43
43
  }
44
44
  return host.slice("unix://".length);
45
45
  }
46
+ function isCacheMountError(error) {
47
+ return error instanceof DockerApiError && /\b(?:mount\w*|volume\w*)\b/i.test(error.message);
48
+ }
49
+ function assertCacheOwner(volume, cache) {
50
+ if (volume.Name !== cache.key || volume.Labels?.[RUNTIME_LABELS.owner] !== cache.ownerId || volume.Labels?.[RUNTIME_LABELS.poolId] !== cache.poolId || volume.Labels?.["swarm.cache"] !== "true")
51
+ throw new Error(`Cache volume ${cache.key} is not owned by this swarm and pool`);
52
+ }
46
53
  async function dockerApi(target, method, path, body, stream = false, retryVersion = true) {
47
54
  const socket = socketPath(target);
48
55
  try {
@@ -84,7 +91,12 @@ async function dockerApi(target, method, path, body, stream = false, retryVersio
84
91
 
85
92
  class DockerRuntimeProvider {
86
93
  kind = "docker";
87
- traits = { canProvision: true, ephemeralDisk: true, supportsPause: false };
94
+ traits = {
95
+ canProvision: true,
96
+ ephemeralDisk: true,
97
+ supportsPause: false,
98
+ persistentCache: true
99
+ };
88
100
  checkConfig(target) {
89
101
  try {
90
102
  socketPath(target);
@@ -95,6 +107,28 @@ class DockerRuntimeProvider {
95
107
  }
96
108
  async provision(target, req) {
97
109
  try {
110
+ let cacheWarning;
111
+ let cacheMount;
112
+ if (req.cache) {
113
+ try {
114
+ const volume = await dockerApi(target, "POST", "/volumes/create", {
115
+ Name: req.cache.key,
116
+ Labels: {
117
+ [RUNTIME_LABELS.owner]: req.ownerId,
118
+ [RUNTIME_LABELS.poolId]: req.poolId,
119
+ "swarm.cache": "true"
120
+ }
121
+ });
122
+ assertCacheOwner(volume, {
123
+ key: req.cache.key,
124
+ poolId: req.poolId,
125
+ ownerId: req.ownerId
126
+ });
127
+ cacheMount = { Type: "volume", Source: req.cache.key, Target: req.cache.mountPath };
128
+ } catch (error) {
129
+ cacheWarning = redactWithEnv(scrubSecrets(String(error)), req.env);
130
+ }
131
+ }
98
132
  const path = `/containers/create?name=${encodeURIComponent(`swarm-rt-${req.runtimeId}`)}`;
99
133
  const body = {
100
134
  Image: req.image,
@@ -113,34 +147,67 @@ class DockerRuntimeProvider {
113
147
  ],
114
148
  NetworkMode: target.DOCKER_NETWORK,
115
149
  Memory: req.resources?.memoryMb ? req.resources.memoryMb * 1024 * 1024 : undefined,
116
- NanoCpus: req.resources?.cpu ? Math.round(req.resources.cpu * 1e9) : undefined
150
+ NanoCpus: req.resources?.cpu ? Math.round(req.resources.cpu * 1e9) : undefined,
151
+ ...cacheMount ? { Mounts: [cacheMount] } : {}
117
152
  }
118
153
  };
119
- let created;
120
- try {
121
- created = await dockerApi(target, "POST", path, body);
122
- } catch (err) {
123
- if (!(err instanceof DockerApiError) || err.statusCode !== 404 || !err.message.includes("No such image")) {
124
- throw err;
154
+ const createAndStart = async () => {
155
+ let created;
156
+ try {
157
+ created = await dockerApi(target, "POST", path, body);
158
+ } catch (err) {
159
+ if (!(err instanceof DockerApiError) || err.statusCode !== 404 || !err.message.includes("No such image"))
160
+ throw err;
161
+ const pullParams = new URLSearchParams({ fromImage: req.image });
162
+ if (!req.image.includes("@") && req.image.lastIndexOf(":") <= req.image.lastIndexOf("/")) {
163
+ pullParams.set("tag", "latest");
164
+ }
165
+ await dockerApi(target, "POST", `/images/create?${pullParams}`, undefined, true);
166
+ created = await dockerApi(target, "POST", path, body);
125
167
  }
126
- const pullParams = new URLSearchParams({ fromImage: req.image });
127
- if (!req.image.includes("@") && req.image.lastIndexOf(":") <= req.image.lastIndexOf("/")) {
128
- pullParams.set("tag", "latest");
168
+ try {
169
+ await dockerApi(target, "POST", `/containers/${created.Id}/start`);
170
+ } catch (err) {
171
+ try {
172
+ await dockerApi(target, "DELETE", `/containers/${created.Id}?force=true&v=true`);
173
+ } catch (cleanupError) {
174
+ if (cacheMount && isCacheMountError(err) && !(cleanupError instanceof DockerApiError && cleanupError.statusCode === 404))
175
+ throw new Error(`${String(err)}; failed-start cleanup failed: ${String(cleanupError)}`);
176
+ }
177
+ throw err;
129
178
  }
130
- await dockerApi(target, "POST", `/images/create?${pullParams}`, undefined, true);
131
- created = await dockerApi(target, "POST", path, body);
132
- }
179
+ return created.Id;
180
+ };
181
+ let externalId;
133
182
  try {
134
- await dockerApi(target, "POST", `/containers/${created.Id}/start`);
183
+ externalId = await createAndStart();
135
184
  } catch (err) {
136
- await dockerApi(target, "DELETE", `/containers/${created.Id}?force=true&v=true`).catch(() => {});
137
- throw err;
185
+ if (!cacheMount || !isCacheMountError(err))
186
+ throw err;
187
+ cacheWarning = redactWithEnv(scrubSecrets(String(err)), req.env);
188
+ delete body.HostConfig.Mounts;
189
+ externalId = await createAndStart();
138
190
  }
139
- return { kind: "docker", externalId: created.Id };
191
+ return {
192
+ kind: "docker",
193
+ externalId,
194
+ ...cacheWarning ? { meta: { cacheWarning } } : {}
195
+ };
140
196
  } catch (err) {
141
197
  throw new Error(redactWithEnv(String(err), req.env));
142
198
  }
143
199
  }
200
+ async releaseCache(target, cache) {
201
+ const path = `/volumes/${encodeURIComponent(cache.key)}`;
202
+ try {
203
+ const volume = await dockerApi(target, "GET", path);
204
+ assertCacheOwner(volume, cache);
205
+ await dockerApi(target, "DELETE", path);
206
+ } catch (error) {
207
+ if (!(error instanceof DockerApiError && error.statusCode === 404))
208
+ throw error;
209
+ }
210
+ }
144
211
  async terminate(target, handle) {
145
212
  try {
146
213
  await dockerApi(target, "DELETE", `/containers/${handle.externalId}?force=true&v=true`);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  checkDshCredentials2,
3
3
  DshAdapter2
4
- } from "./cli-bnz7a7qf.js";
4
+ } from "./cli-95jzxcp3.js";
5
5
  import"./cli-jc1g9ndz.js";
6
6
  import"./cli-98rw5dt5.js";
7
7
  export {
@@ -11,15 +11,15 @@ import {
11
11
  import {
12
12
  resolveWorkerApiUrl,
13
13
  init_worker_api_url
14
- } from "./cli-70r77n04.js";
15
- import {
16
- RUNTIME_LABELS,
17
- init_types5
18
- } from "./cli-gjr2y2xk.js";
14
+ } from "./cli-xae4g51r.js";
19
15
  import {
20
16
  redactWithEnv,
21
17
  init_env2
22
18
  } from "./cli-ae7mrdf9.js";
19
+ import {
20
+ RUNTIME_LABELS,
21
+ init_types5
22
+ } from "./cli-0agcv1v5.js";
23
23
  import {
24
24
  __toESM,
25
25
  __esm
@@ -6,10 +6,10 @@ import {
6
6
  use_app_default,
7
7
  Select,
8
8
  TextInput
9
- } from "./cli-82jg7fp9.js";
9
+ } from "./cli-he5nxaa8.js";
10
10
  import {
11
11
  require_jsx_dev_runtime
12
- } from "./cli-kg8hchyg.js";
12
+ } from "./cli-sa02jsqt.js";
13
13
  import {
14
14
  sandboxPortUrl,
15
15
  createSandbox,
@@ -30,7 +30,7 @@ import {
30
30
  import {
31
31
  getAppUrl,
32
32
  init_constants3
33
- } from "./cli-611a1294.js";
33
+ } from "./cli-k0wwfqbg.js";
34
34
  import {
35
35
  DEFAULT_E2B_API_BASE,
36
36
  DEFAULT_E2B_TEMPLATE_NAMES,
@@ -11,7 +11,7 @@ import {
11
11
  ARMIN_WIDTH,
12
12
  ARMIN_HEIGHT,
13
13
  isArminPixel
14
- } from "./cli-vqypxzh4.js";
14
+ } from "./cli-6g0hb4cp.js";
15
15
 
16
16
  // node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/easter-egg-3d.js
17
17
  var DEPTH = 0.7;
@@ -5,11 +5,11 @@ import {
5
5
  getMemoryStore2,
6
6
  init_memory,
7
7
  init_db4
8
- } from "./cli-1ayk1eas.js";
8
+ } from "./cli-wk5yrfwd.js";
9
9
  import {
10
10
  publicEndpointSsrfOptions,
11
11
  init_mcp_wrapper
12
- } from "./cli-pywf3eh5.js";
12
+ } from "./cli-caj33vcq.js";
13
13
  import {
14
14
  __esm
15
15
  } from "./cli-242037k3.js";
@@ -112,8 +112,8 @@ async function reembedMemory(provider, counts, opts) {
112
112
  }
113
113
  }
114
114
  async function reembedScripts(memoryProvider, counts, opts) {
115
- const { computeScriptEmbedding, embeddingProvider, writeScriptEmbedding } = await import("./embeddings-ygeg7tm7.js");
116
- const { toScriptRecord } = await import("./boot-reembed-gq9rcpnj.js");
115
+ const { computeScriptEmbedding, embeddingProvider, writeScriptEmbedding } = await import("./embeddings-xxt49yxg.js");
116
+ const { toScriptRecord } = await import("./boot-reembed-qs2djdej.js");
117
117
  const client = getDbClient2();
118
118
  const provider = embeddingProvider();
119
119
  const cursorKey = embeddingSpaceCursorKey("scripts");
@@ -226,10 +226,10 @@ function runEmbeddingMaintenance(opts = {}) {
226
226
  if (!backfill && result !== "reembedded")
227
227
  return;
228
228
  await Promise.all([
229
- import("./boot-reembed-375t7tbk.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
229
+ import("./boot-reembed-9mgvaztt.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
230
230
  console.error("[boot-reembed] memory backfill failed (non-fatal):", err);
231
231
  }),
232
- import("./boot-reembed-gq9rcpnj.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
232
+ import("./boot-reembed-qs2djdej.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
233
233
  console.error("[boot-reembed-scripts] script backfill failed (non-fatal):", err);
234
234
  })
235
235
  ]);
@@ -6,7 +6,7 @@ import {
6
6
  searchScripts2,
7
7
  reembedAllScripts2,
8
8
  init_embeddings
9
- } from "./cli-1ayk1eas.js";
9
+ } from "./cli-wk5yrfwd.js";
10
10
  init_embeddings();
11
11
 
12
12
  export {
@@ -14,7 +14,7 @@ import {
14
14
  CODEMODE_DOCS_PATH,
15
15
  toCodemodeDeclaration,
16
16
  getCodemodeCallableTools
17
- } from "./cli-vqypxzh4.js";
17
+ } from "./cli-6g0hb4cp.js";
18
18
  // node_modules/@earendil-works/pi-codemode/dist/runtime/protocol.js
19
19
  function isWorkerToHostMessage(value) {
20
20
  if (typeof value !== "object" || value === null)
@@ -9,8 +9,8 @@ import {
9
9
  leaveExternalChannel2,
10
10
  scanExternalChannelsOnBoot2,
11
11
  init_external_channel
12
- } from "./cli-mmwm7zbf.js";
13
- import"./cli-1ayk1eas.js";
12
+ } from "./cli-rtt8g4v9.js";
13
+ import"./cli-wk5yrfwd.js";
14
14
  init_external_channel();
15
15
 
16
16
  export {
@@ -1,16 +1,17 @@
1
1
  import {
2
2
  checkFxCredentials2,
3
3
  FxAdapter2
4
- } from "./cli-zh3fp8v2.js";
5
- import"./cli-rm6hqj3z.js";
6
- import"./cli-zppwg9p9.js";
7
- import"./cli-hn9hxmz9.js";
4
+ } from "./cli-e46hg0xw.js";
5
+ import"./cli-fyt2g4wd.js";
6
+ import"./cli-72v799xn.js";
7
+ import"./cli-8305gbq0.js";
8
8
  import"./cli-a22h291q.js";
9
9
  import"./cli-4bd1rck6.js";
10
10
  import"./cli-jc1g9ndz.js";
11
- import"./cli-a47xy8eq.js";
11
+ import"./cli-qghe0h66.js";
12
12
  import"./cli-0726awxw.js";
13
13
  import"./cli-dhar9qay.js";
14
+ import"./cli-vz22fyqv.js";
14
15
  import"./cli-98rw5dt5.js";
15
16
  export {
16
17
  FxAdapter2 as FxAdapter,
@@ -15,7 +15,7 @@ import {
15
15
  mapStopReason,
16
16
  retryGoogleRequest,
17
17
  init_google_shared
18
- } from "./cli-8veytvbh.js";
18
+ } from "./cli-mkk9rnzz.js";
19
19
  import {
20
20
  normalizeProviderError,
21
21
  formatProviderError,
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  buildBaseOptions,
26
26
  init_simple_options
27
- } from "./cli-bsn8nhrq.js";
27
+ } from "./cli-6vcp76qk.js";
28
28
  import {
29
29
  sanitizeSurrogates,
30
30
  init_sanitize_unicode
@@ -42,8 +42,8 @@ import {
42
42
  init_transcript,
43
43
  calculateCost,
44
44
  clampThinkingLevel,
45
- init_models2
46
- } from "./cli-1h3wcpbw.js";
45
+ init_models
46
+ } from "./cli-snpj5zbj.js";
47
47
  import {
48
48
  AssistantMessageEventStream,
49
49
  init_event_stream
@@ -394,7 +394,7 @@ var toolCallCounter = 0, stream = (model, context, options) => {
394
394
  };
395
395
  var init_google_generative_ai = __esm(() => {
396
396
  init_node();
397
- init_models2();
397
+ init_models();
398
398
  init_error_body();
399
399
  init_event_stream();
400
400
  init_headers();
@@ -16,7 +16,7 @@ import {
16
16
  mapStopReason,
17
17
  retryGoogleRequest,
18
18
  init_google_shared
19
- } from "./cli-8veytvbh.js";
19
+ } from "./cli-mkk9rnzz.js";
20
20
  import {
21
21
  normalizeProviderError,
22
22
  formatProviderError,
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  buildBaseOptions,
27
27
  init_simple_options
28
- } from "./cli-bsn8nhrq.js";
28
+ } from "./cli-6vcp76qk.js";
29
29
  import {
30
30
  sanitizeSurrogates,
31
31
  init_sanitize_unicode
@@ -47,8 +47,8 @@ import {
47
47
  init_transcript,
48
48
  calculateCost,
49
49
  clampThinkingLevel,
50
- init_models2
51
- } from "./cli-1h3wcpbw.js";
50
+ init_models
51
+ } from "./cli-snpj5zbj.js";
52
52
  import {
53
53
  AssistantMessageEventStream,
54
54
  init_event_stream
@@ -452,7 +452,7 @@ var API_VERSION = "v1", GCP_VERTEX_CREDENTIALS_MARKER = "gcp-vertex-credentials"
452
452
  };
453
453
  var init_google_vertex = __esm(() => {
454
454
  init_node();
455
- init_models2();
455
+ init_models();
456
456
  init_error_body();
457
457
  init_event_stream();
458
458
  init_headers();
@@ -1,16 +1,17 @@
1
1
  import {
2
2
  checkGrokCredentials2,
3
3
  GrokAdapter2
4
- } from "./cli-5pag6rmn.js";
5
- import"./cli-rm6hqj3z.js";
6
- import"./cli-zppwg9p9.js";
7
- import"./cli-hn9hxmz9.js";
4
+ } from "./cli-cb2a8pna.js";
5
+ import"./cli-fyt2g4wd.js";
6
+ import"./cli-72v799xn.js";
7
+ import"./cli-8305gbq0.js";
8
8
  import"./cli-a22h291q.js";
9
9
  import"./cli-4bd1rck6.js";
10
10
  import"./cli-jc1g9ndz.js";
11
- import"./cli-a47xy8eq.js";
11
+ import"./cli-qghe0h66.js";
12
12
  import"./cli-0726awxw.js";
13
13
  import"./cli-dhar9qay.js";
14
+ import"./cli-vz22fyqv.js";
14
15
  import"./cli-98rw5dt5.js";
15
16
  export {
16
17
  GrokAdapter2 as GrokAdapter,
@@ -0,0 +1,32 @@
1
+ import {
2
+ isUserAllowed2,
3
+ registerMessageHandler2,
4
+ init_handlers
5
+ } from "./cli-1c6tzt8g.js";
6
+ import"./cli-k8196sh2.js";
7
+ import"./cli-pq73h5mz.js";
8
+ import"./cli-ws19768n.js";
9
+ import"./cli-qh4d4tvk.js";
10
+ import"./cli-5b456bpf.js";
11
+ import"./cli-pc6n7fre.js";
12
+ import"./cli-adeegh7d.js";
13
+ import"./cli-q3tkegby.js";
14
+ import"./cli-3xj33nrx.js";
15
+ import"./cli-8sckt74b.js";
16
+ import"./cli-afkqkrtw.js";
17
+ import"./cli-nmzhp1b5.js";
18
+ import"./cli-cppkf404.js";
19
+ import"./cli-g08zdaec.js";
20
+ import"./cli-rtt8g4v9.js";
21
+ import"./cli-caj33vcq.js";
22
+ import"./cli-ddaanqkd.js";
23
+ import"./cli-5jnhv72d.js";
24
+ import"./cli-jtjtabxe.js";
25
+ import"./cli-wk5yrfwd.js";
26
+ import"./cli-wx3rhnm0.js";
27
+ init_handlers();
28
+
29
+ export {
30
+ isUserAllowed2 as isUserAllowed,
31
+ registerMessageHandler2 as registerMessageHandler
32
+ };
@@ -7,26 +7,27 @@ import {
7
7
  runHeartbeatSweep2,
8
8
  startHeartbeat2,
9
9
  stopHeartbeat2
10
- } from "./cli-z6jkx23q.js";
11
- import"./cli-rqkxrmgw.js";
12
- import"./cli-rpm2sgv0.js";
13
- import"./cli-1338796d.js";
14
- import"./cli-6s7vdcta.js";
15
- import"./cli-nn4d8dne.js";
16
- import"./cli-xtjhfmpc.js";
17
- import"./cli-0bxqnvq9.js";
18
- import"./cli-7wcyk2s5.js";
10
+ } from "./cli-bfv7vdg6.js";
11
+ import"./cli-je518txm.js";
12
+ import"./cli-3fg0bdcv.js";
13
+ import"./cli-ws19768n.js";
14
+ import"./cli-qh4d4tvk.js";
15
+ import"./cli-5b456bpf.js";
16
+ import"./cli-pc6n7fre.js";
17
+ import"./cli-adeegh7d.js";
18
+ import"./cli-q3tkegby.js";
19
19
  import"./cli-3xj33nrx.js";
20
- import"./cli-z8eh3ex8.js";
21
- import"./cli-g61qxmge.js";
22
- import"./cli-spknvxbq.js";
23
- import"./cli-wvaawacd.js";
24
- import"./cli-mmwm7zbf.js";
25
- import"./cli-pywf3eh5.js";
26
- import"./cli-mry0qzym.js";
27
- import"./cli-bhjt02p8.js";
28
- import"./cli-8hs41zy2.js";
29
- import"./cli-1ayk1eas.js";
20
+ import"./cli-8sckt74b.js";
21
+ import"./cli-afkqkrtw.js";
22
+ import"./cli-nmzhp1b5.js";
23
+ import"./cli-cppkf404.js";
24
+ import"./cli-g08zdaec.js";
25
+ import"./cli-rtt8g4v9.js";
26
+ import"./cli-caj33vcq.js";
27
+ import"./cli-ddaanqkd.js";
28
+ import"./cli-5jnhv72d.js";
29
+ import"./cli-jtjtabxe.js";
30
+ import"./cli-wk5yrfwd.js";
30
31
  import"./cli-wx3rhnm0.js";
31
32
  export {
32
33
  checkHeartbeatChecklist2 as checkHeartbeatChecklist,
@@ -1,11 +1,12 @@
1
- import"./cli-jm2vfpfd.js";
2
- import"./cli-a47xy8eq.js";
1
+ import"./cli-e5bzrn01.js";
2
+ import"./cli-vz22fyqv.js";
3
+ import"./cli-qghe0h66.js";
3
4
  import"./cli-dhar9qay.js";
4
5
  import"./cli-d82btycs.js";
5
6
  import"./cli-0726awxw.js";
6
7
  import {
7
8
  handleHook
8
- } from "./cli-0731hvbw.js";
9
+ } from "./cli-m0da8j35.js";
9
10
 
10
11
  // src/commands/hook.ts
11
12
  async function runHook() {
@@ -2,10 +2,11 @@
2
2
  import {
3
3
  materializeClaudeMd,
4
4
  stopClaudeMd
5
- } from "./cli-jm2vfpfd.js";
5
+ } from "./cli-e5bzrn01.js";
6
+ import"./cli-vz22fyqv.js";
6
7
  import {
7
8
  summarizeSession
8
- } from "./cli-a47xy8eq.js";
9
+ } from "./cli-qghe0h66.js";
9
10
  import {
10
11
  contextBoundNoteThreshold,
11
12
  injectClaimedContextBoundNote
@@ -29,20 +30,21 @@ import {
29
30
  import {
30
31
  contentSha256,
31
32
  readIdentityBaselines,
33
+ advanceIdentityBaselines,
32
34
  fetchWithSyncTimeout,
33
35
  warnProfileFileTooLarge,
34
36
  buildIndependentIdentityPayloads,
35
37
  init_profile_sync
36
- } from "./cli-a7v854rf.js";
38
+ } from "./cli-tgrv9cjx.js";
37
39
  import {
38
40
  init_package,
39
41
  package_default
40
- } from "./cli-tqgg40ek.js";
42
+ } from "./cli-6pfd54vx.js";
41
43
  import {
42
44
  MAX_PROFILE_FILE_LENGTH,
43
45
  getMcpBaseUrl,
44
46
  init_constants3
45
- } from "./cli-611a1294.js";
47
+ } from "./cli-k0wwfqbg.js";
46
48
  import {
47
49
  isSessionSummarySkipped,
48
50
  init_env_flag
@@ -113,9 +115,11 @@ async function postHookProfileUpdate({
113
115
  const responseBody = await response.text();
114
116
  console.error(scrubSecrets(`[hook] ${label} profile sync failed: HTTP ${response.status}${responseBody ? ` — ${responseBody}` : ""}`));
115
117
  }
118
+ return response.ok;
116
119
  } catch (error) {
117
120
  const message = error instanceof Error ? error.message : String(error);
118
121
  console.error(scrubSecrets(`[hook] ${label} profile sync errored: ${message}`));
122
+ return false;
119
123
  }
120
124
  }
121
125
  async function readTaskFile() {
@@ -372,7 +376,7 @@ async function handleHook() {
372
376
  const syncIdentityFilesToServer = async (agentId, changeSource = "session_sync") => {
373
377
  if (!mcpConfig)
374
378
  return;
375
- const baselines = changeSource === "session_sync" ? await readIdentityBaselines() : null;
379
+ const baselines = await readIdentityBaselines();
376
380
  const updates = {};
377
381
  const soulFile = Bun.file(SOUL_MD_PATH);
378
382
  if (await soulFile.exists()) {
@@ -414,14 +418,21 @@ async function handleHook() {
414
418
  }
415
419
  if (Object.keys(updates).length === 0)
416
420
  return;
417
- for (const payload of buildIndependentIdentityPayloads(updates, changeSource)) {
418
- await postHookProfileUpdate({
421
+ const synced = {};
422
+ for (const [field, value] of Object.entries(updates)) {
423
+ const [payload] = buildIndependentIdentityPayloads({ [field]: value }, changeSource);
424
+ if (!payload)
425
+ continue;
426
+ const ok = await postHookProfileUpdate({
419
427
  url: `${getBaseUrl()}/api/agents/${agentId}/profile`,
420
428
  headers: mcpConfig.headers,
421
429
  body: payload.body,
422
430
  label: payload.label
423
431
  });
432
+ if (ok)
433
+ synced[field] = value;
424
434
  }
435
+ await advanceIdentityBaselines(synced);
425
436
  };
426
437
  const syncSetupScriptToServer = async (agentId, changeSource = "session_sync") => {
427
438
  if (!mcpConfig)
@@ -448,8 +459,10 @@ async function handleHook() {
448
459
  warnProfileFileTooLarge(agentId, "setupScript", content.length, "hook");
449
460
  return;
450
461
  }
462
+ if ((await readIdentityBaselines())?.setupScript === contentSha256(content))
463
+ return;
451
464
  try {
452
- await fetch(`${getBaseUrl()}/api/agents/${agentId}/profile`, {
465
+ const resp = await fetch(`${getBaseUrl()}/api/agents/${agentId}/profile`, {
453
466
  method: "PUT",
454
467
  headers: {
455
468
  ...mcpConfig.headers,
@@ -457,6 +470,8 @@ async function handleHook() {
457
470
  },
458
471
  body: JSON.stringify({ setupScript: content, changeSource })
459
472
  });
473
+ if (resp.ok)
474
+ await advanceIdentityBaselines({ setupScript: content });
460
475
  } catch {}
461
476
  };
462
477
  const getCancelledTasks = async () => {