@desplega.ai/agent-swarm 2.7.0 → 2.7.1

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 (236) hide show
  1. package/dist/{acp-adapter-ma1js5n7.js → acp-adapter-8dn5tq56.js} +6 -6
  2. package/dist/{actions-1vhmtvg9.js → actions-3r6gw7dy.js} +18 -18
  3. package/dist/{amp-adapter-sxqqvmdk.js → amp-adapter-wjtq413p.js} +3 -3
  4. package/dist/{anthropic-messages-txs190dd.js → anthropic-messages-n4cby1rz.js} +4 -4
  5. package/dist/{app-mwx1d5a9.js → app-d53yhykk.js} +3 -3
  6. package/dist/{assistant-yx1p6g82.js → assistant-ksrawj3k.js} +20 -20
  7. package/dist/{boot-reembed-7h78vmvv.js → boot-reembed-fxfw17m2.js} +10 -3
  8. package/dist/{boot-reembed-5h37a2c2.js → boot-reembed-k5y5xbj0.js} +15 -8
  9. package/dist/{boot-scrub-sweep-8mawd4gw.js → boot-scrub-sweep-se41j9fd.js} +3 -3
  10. package/dist/{boot-seeds-ca84dhnn.js → boot-seeds-r3kwwv8b.js} +4 -4
  11. package/dist/{claude-adapter-wqt4hfkq.js → claude-adapter-ahmyf231.js} +7 -7
  12. package/dist/{claude-managed-adapter-6fjqtr2z.js → claude-managed-adapter-5knamegc.js} +3 -3
  13. package/dist/{claude-managed-setup-rqv98sea.js → claude-managed-setup-mdc7dy6b.js} +2 -2
  14. package/dist/{claude-sdk-session-f29f3b2x.js → claude-sdk-session-n5wen9zk.js} +8728 -8599
  15. package/dist/{cli-m5e802r7.js → cli-0dqtv2jg.js} +2 -2
  16. package/dist/{cli-e1595bgx.js → cli-0tww7dnz.js} +2 -2
  17. package/dist/{cli-2y7v133v.js → cli-0w4e4v58.js} +7 -7
  18. package/dist/{cli-d20qvpr2.js → cli-2sjm3t4r.js} +1 -1
  19. package/dist/{cli-gf2850q7.js → cli-3cywb44q.js} +18 -1
  20. package/dist/{cli-8wkb09q5.js → cli-3k9jej0c.js} +2 -2
  21. package/dist/{cli-twctnkng.js → cli-3v2cyqb8.js} +3 -3
  22. package/dist/{cli-he9gbdx0.js → cli-5qt9vzmq.js} +39 -20
  23. package/dist/{cli-a6ds2epe.js → cli-5rp1w4cr.js} +1 -1
  24. package/dist/{cli-6srv653c.js → cli-6vwjsetx.js} +4 -4
  25. package/dist/{cli-1hhbzkbb.js → cli-6w2yrrc0.js} +8 -8
  26. package/dist/{cli-f12mr20z.js → cli-75tdydgv.js} +1 -1
  27. package/dist/{cli-j3y0x2n4.js → cli-8feswf2v.js} +43 -33
  28. package/dist/{cli-07q03xm2.js → cli-8wd3mbyj.js} +1 -1
  29. package/dist/{cli-ymjpkxgn.js → cli-9csfthbw.js} +8 -6
  30. package/dist/{cli-f1e0ptjj.js → cli-b41p764a.js} +21 -2
  31. package/dist/{cli-kv7sbc2c.js → cli-c1t533hh.js} +3 -3
  32. package/dist/{cli-54sj64fc.js → cli-c28jxpcv.js} +1 -1
  33. package/dist/{cli-8mbc9za9.js → cli-cb50g9cd.js} +1 -1
  34. package/dist/{cli-c668vvcf.js → cli-d8gaphtr.js} +1 -1
  35. package/dist/{cli-86ehn4s5.js → cli-dgtfysne.js} +2 -2
  36. package/dist/{cli-sjctjr48.js → cli-dscnhn18.js} +1 -1
  37. package/dist/{cli-j0ppywdr.js → cli-dv11pgpv.js} +12 -12
  38. package/dist/{cli-1m9x8dr5.js → cli-ekptgk2m.js} +5 -5
  39. package/dist/{cli-9gsm2rzp.js → cli-f3mzy662.js} +17 -17
  40. package/dist/{cli-s0mgx214.js → cli-fk7k8s9x.js} +2 -2
  41. package/dist/{cli-vbhgkw9h.js → cli-h3e7bhvn.js} +3 -3
  42. package/dist/{cli-yd2nreqw.js → cli-hkxqdmnb.js} +2 -2
  43. package/dist/{cli-8wmj18cz.js → cli-hpkvgdad.js} +7 -4
  44. package/dist/{cli-wqr7cea4.js → cli-hq2v4rr5.js} +37 -9
  45. package/dist/{cli-sgqm2582.js → cli-k1zb7raw.js} +5 -5
  46. package/dist/{cli-4rvr7zfx.js → cli-k4awgvzm.js} +5 -0
  47. package/dist/{cli-ay40dnj3.js → cli-k7d3hvya.js} +2 -2
  48. package/dist/{cli-j9bpmykh.js → cli-kbtdftbw.js} +5 -5
  49. package/dist/{cli-x37r7qwf.js → cli-kj69b9tw.js} +25 -5
  50. package/dist/{cli-gsfk58nw.js → cli-kk9jy4nm.js} +1 -1
  51. package/dist/{cli-39aet655.js → cli-m52t4cta.js} +1 -1
  52. package/dist/{cli-h5jeg46p.js → cli-mdadewqp.js} +5 -5
  53. package/dist/{cli-a89zdqz9.js → cli-nf6k60sn.js} +1 -1
  54. package/dist/{cli-v6shg7na.js → cli-nzdf09js.js} +1 -1
  55. package/dist/{cli-rr7zx19j.js → cli-prcyzecg.js} +12 -12
  56. package/dist/{cli-6a9qfa8b.js → cli-pzafyqtk.js} +118 -48
  57. package/dist/{cli-48gxjmcz.js → cli-qvaa1gjp.js} +87 -24
  58. package/dist/{cli-qj442fws.js → cli-rg4b2g6j.js} +1 -1
  59. package/dist/{cli-aypd09nf.js → cli-rm66vqdz.js} +1 -1
  60. package/dist/{cli-9pshx6rd.js → cli-s504c3w7.js} +1 -1
  61. package/dist/{cli-ptfq202x.js → cli-swkx9jm2.js} +3 -3
  62. package/dist/{cli-m30k9777.js → cli-thsaq4pd.js} +16 -16
  63. package/dist/{cli-60sty27p.js → cli-twjnyvs8.js} +2 -2
  64. package/dist/{cli-rd5m70gj.js → cli-typdpe8g.js} +4 -4
  65. package/dist/{cli-yxbsmx56.js → cli-vg8pwmsd.js} +6 -6
  66. package/dist/{cli-s09j9vp5.js → cli-vhpckzvp.js} +1 -1
  67. package/dist/{cli-dv97kdzv.js → cli-wdxgsdz5.js} +2 -2
  68. package/dist/{cli-7a6p4e65.js → cli-wtjg6je3.js} +1 -1
  69. package/dist/{cli-b3yzyc57.js → cli-x3cngb1h.js} +44 -12
  70. package/dist/{cli-6mgdba42.js → cli-xbz6mcg4.js} +2 -2
  71. package/dist/{cli-2pvzmas1.js → cli-y4tdxsqb.js} +3 -3
  72. package/dist/{cli-f4dbh7a5.js → cli-yqrsp3ny.js} +7 -7
  73. package/dist/cli.js +27 -19
  74. package/dist/{codex-adapter-zk59x2zh.js → codex-adapter-7wepzq15.js} +5 -5
  75. package/dist/{codex-hook-xyjhvxwd.js → codex-hook-pbdh4xhx.js} +2 -2
  76. package/dist/{codex-session-runner-kh6s4j3n.js → codex-session-runner-02sb49e4.js} +5 -5
  77. package/dist/{commands-68et1qv2.js → commands-3rcspxct.js} +2 -2
  78. package/dist/{controller-fyrbnzg4.js → controller-8ar4avd6.js} +3 -3
  79. package/dist/{controllers-connect-nep9h2xv.js → controllers-connect-ajvh9h0v.js} +19 -19
  80. package/dist/{cursor-adapter-yss3pg7t.js → cursor-adapter-gd0sa7bh.js} +1 -1
  81. package/dist/{db-28gjyvxj.js → db-dv9j7ts5.js} +2 -2
  82. package/dist/{db-8ftwvzba.js → db-z26vgdvj.js} +3 -3
  83. package/dist/{dispatcher-hayexmkr.js → dispatcher-8m0htjq8.js} +17 -17
  84. package/dist/{dsh-adapter-46wawff9.js → dsh-adapter-y8gyk130.js} +1 -1
  85. package/dist/{e2b-fn3zacvt.js → e2b-74vg9b7e.js} +1 -1
  86. package/dist/{e2b-222hsajc.js → e2b-jyay8wzn.js} +1 -1
  87. package/dist/{easter-egg-3d-8d1e0h4m.js → easter-egg-3d-28f880xx.js} +1 -1
  88. package/dist/{execute-cjrfxfnm.js → execute-9seb79vh.js} +1 -1
  89. package/dist/{external-channel-xbmxcg09.js → external-channel-smz7jyth.js} +2 -2
  90. package/dist/{getMachineId-bsd-brn0xym3.js → getMachineId-bsd-whfre6gr.js} +3 -3
  91. package/dist/{getMachineId-darwin-t339sfxm.js → getMachineId-darwin-5zjynb19.js} +3 -3
  92. package/dist/{getMachineId-linux-5eq95d8b.js → getMachineId-linux-8mksrrsq.js} +3 -3
  93. package/dist/{getMachineId-unsupported-qavrtc7j.js → getMachineId-unsupported-fxtqsdt2.js} +3 -3
  94. package/dist/{getMachineId-win-q7fe1wx7.js → getMachineId-win-nzfmz857.js} +3 -3
  95. package/dist/{grok-adapter-ag4wks2a.js → grok-adapter-z0nnvtbn.js} +7 -7
  96. package/dist/handlers-pspryh6g.js +41 -0
  97. package/dist/{heartbeat-psfvcgwp.js → heartbeat-f928aqyp.js} +20 -20
  98. package/dist/{hook-cyq4mryn.js → hook-d7c605r4.js} +7 -7
  99. package/dist/{hook-8pz04697.js → hook-q9hv5xf9.js} +5 -5
  100. package/dist/{http-haj1nd6k.js → http-q6j4k989.js} +934 -180
  101. package/dist/{index-z5h22pes.js → index-5nb266jr.js} +17 -17
  102. package/dist/{index-ysd45kgc.js → index-8fxt5eah.js} +10 -10
  103. package/dist/{index-zgvqzjsw.js → index-cekzwhez.js} +5 -5
  104. package/dist/{index-zyq8ct52.js → index-ch0c1xff.js} +17 -17
  105. package/dist/{index-syvhnvtw.js → index-ebnjhxh1.js} +1 -1
  106. package/dist/{index-y1ajx04a.js → index-ed8dy8rn.js} +20 -20
  107. package/dist/{index-jwt2bj6f.js → index-ejqdkkqx.js} +11 -10
  108. package/dist/{index-dr94zbnh.js → index-farm1zsn.js} +32661 -29443
  109. package/dist/{index-q52f47pe.js → index-yn1yxg85.js} +1 -1
  110. package/dist/{keepalive-xdvsamvj.js → keepalive-zzc3hks1.js} +3 -3
  111. package/dist/{lead-hqg57kdp.js → lead-c0pjcaw4.js} +36 -36
  112. package/dist/{maintenance-4y2xzh3a.js → maintenance-kqsxzpzx.js} +1 -1
  113. package/dist/{oauth-refresh-sweep-jd4r7zbs.js → oauth-refresh-sweep-7qt0g55z.js} +2 -2
  114. package/dist/{onboard-18447q9q.js → onboard-k7x13fqg.js} +118 -5
  115. package/dist/{opencode-adapter-26b2frdf.js → opencode-adapter-tqvrtter.js} +5 -5
  116. package/dist/{otel-impl-f9tgr8yw.js → otel-impl-sqkf6k3b.js} +97 -97
  117. package/dist/{pi-mono-adapter-qn6qbga1.js → pi-mono-adapter-m2qnafxm.js} +63 -9
  118. package/dist/{pricing-refresh-dw2tgb53.js → pricing-refresh-wkpwhgvs.js} +3 -3
  119. package/dist/{rbac-roles-s4nwj2m3.js → rbac-roles-dpn0c0wj.js} +7 -4
  120. package/dist/{rbac-roles-aygm2760.js → rbac-roles-wk7xd6a6.js} +2 -2
  121. package/dist/{render-v2-yfvdfr0x.js → render-v2-ex2m4g2k.js} +3 -3
  122. package/dist/{resume-1bmvjbf3.js → resume-725g9b0b.js} +7 -7
  123. package/dist/{runtime-f7tpzedy.js → runtime-kajas15g.js} +1 -1
  124. package/dist/{session-access-r5garej6.js → session-access-0j2ezjje.js} +8 -4
  125. package/dist/{session-source-backfill-424wzv0r.js → session-source-backfill-62202awe.js} +2 -2
  126. package/dist/{setup-8tygvxkq.js → setup-9sj11ax6.js} +1 -1
  127. package/dist/{virtual-modules-xsw323b3.js → virtual-modules-c6fcq6zr.js} +2 -2
  128. package/dist/{work-objects-ggnghpgf.js → work-objects-0y07495y.js} +20 -20
  129. package/dist/{worker-sqjd1nqf.js → worker-d4q9sqbc.js} +36 -36
  130. package/openapi.json +1070 -9
  131. package/package.json +3 -3
  132. package/src/be/connector-codes.ts +65 -22
  133. package/src/be/memory/boot-reembed.ts +4 -1
  134. package/src/be/memory/constants.ts +6 -0
  135. package/src/be/memory/embedding-recovery.ts +48 -0
  136. package/src/be/memory/index-content.ts +5 -2
  137. package/src/be/memory/providers/openai-embedding.ts +65 -14
  138. package/src/be/memory/task-learning.ts +110 -8
  139. package/src/be/memory/types.ts +13 -2
  140. package/src/be/migrations/246_connector_code_kind.sql +11 -0
  141. package/src/be/onboarding.ts +125 -15
  142. package/src/be/rbac-roles.ts +4 -1
  143. package/src/be/scripts/embeddings.ts +2 -2
  144. package/src/be/seed/agent-fs-provision.ts +75 -14
  145. package/src/be/swarm-config-guard.ts +3 -0
  146. package/src/cli.tsx +9 -0
  147. package/src/comb/config.ts +6 -1
  148. package/src/commands/onboard/agent-fs-version.ts +5 -0
  149. package/src/commands/onboard/compose-generator.ts +112 -1
  150. package/src/commands/onboard/env-generator.ts +9 -0
  151. package/src/commands/onboard/tei-image.ts +12 -0
  152. package/src/commands/onboard/types.ts +7 -0
  153. package/src/commands/onboard.tsx +11 -1
  154. package/src/commands/runner.ts +14 -1
  155. package/src/http/agentfs-proxy.ts +369 -0
  156. package/src/http/all-routes.ts +1 -0
  157. package/src/http/codex-oauth-device.ts +8 -1
  158. package/src/http/fs.ts +64 -10
  159. package/src/http/inbox-state.ts +27 -1
  160. package/src/http/index.ts +4 -1
  161. package/src/http/memory.ts +7 -4
  162. package/src/http/onboarding.ts +139 -11
  163. package/src/http/session-access.ts +24 -0
  164. package/src/http/sessions.ts +10 -6
  165. package/src/http/tasks.ts +85 -11
  166. package/src/http/telemetry-ui.ts +1 -1
  167. package/src/http/user-roles.ts +4 -1
  168. package/src/http/users.ts +272 -3
  169. package/src/http/utils.ts +22 -3
  170. package/src/prompts/base-prompt.ts +24 -9
  171. package/src/prompts/session-templates.ts +26 -2
  172. package/src/providers/amp-adapter.ts +1 -1
  173. package/src/providers/codex-adapter.ts +6 -1
  174. package/src/providers/cursor-adapter.ts +1 -1
  175. package/src/providers/pi-mono-adapter.ts +58 -3
  176. package/src/rbac/legacy-policy.ts +1 -0
  177. package/src/rbac/permissions.ts +4 -0
  178. package/src/tests/agent-fs-provision-seeder.test.ts +261 -92
  179. package/src/tests/agentfs-proxy.test.ts +1106 -0
  180. package/src/tests/base-prompt.test.ts +69 -2
  181. package/src/tests/codex-adapter.test.ts +46 -8
  182. package/src/tests/codex-oauth-device.test.ts +12 -1
  183. package/src/tests/comb-config-guard.test.ts +20 -0
  184. package/src/tests/comb-links.test.ts +79 -1
  185. package/src/tests/comb-status.test.ts +44 -0
  186. package/src/tests/docs-index-footprint.test.js +3 -3
  187. package/src/tests/fixtures/onboard/baseline-states.ts +68 -0
  188. package/src/tests/fixtures/onboard/content.compose.yml.txt +190 -0
  189. package/src/tests/fixtures/onboard/content.env.txt +29 -0
  190. package/src/tests/fixtures/onboard/dev.compose.yml.txt +155 -0
  191. package/src/tests/fixtures/onboard/dev.env.txt +28 -0
  192. package/src/tests/fixtures/onboard/full-all.compose.yml.txt +582 -0
  193. package/src/tests/fixtures/onboard/full-all.env.txt +59 -0
  194. package/src/tests/fixtures/onboard/full.compose.yml.txt +435 -0
  195. package/src/tests/fixtures/onboard/full.env.txt +36 -0
  196. package/src/tests/fixtures/onboard/research.compose.yml.txt +155 -0
  197. package/src/tests/fixtures/onboard/research.env.txt +28 -0
  198. package/src/tests/fixtures/onboard/solo.compose.yml.txt +85 -0
  199. package/src/tests/fixtures/onboard/solo.env.txt +26 -0
  200. package/src/tests/http-log-scrubbing.test.ts +34 -1
  201. package/src/tests/http-task-write-ownership.test.ts +5 -1
  202. package/src/tests/invites-http.test.ts +464 -0
  203. package/src/tests/memory-embedding-input-cap.test.ts +122 -1
  204. package/src/tests/memory-embedding-recovery.test.ts +137 -0
  205. package/src/tests/onboard-compose.test.ts +142 -0
  206. package/src/tests/onboard-env.test.ts +24 -0
  207. package/src/tests/onboard-non-interactive.test.ts +29 -0
  208. package/src/tests/onboard-tei-image.test.ts +36 -0
  209. package/src/tests/onboarding.test.ts +451 -4
  210. package/src/tests/openai-embedding-provider.test.ts +105 -2
  211. package/src/tests/pi-mono-session-cost-on-abort.test.ts +270 -0
  212. package/src/tests/preload-env.test.ts +4 -0
  213. package/src/tests/preload.ts +4 -0
  214. package/src/tests/prompt-template-session.test.ts +19 -3
  215. package/src/tests/rbac-admission-e2e.test.ts +22 -6
  216. package/src/tests/rbac-admission.test.ts +342 -4
  217. package/src/tests/rbac-engine.test.ts +1 -0
  218. package/src/tests/rbac-roles.test.ts +9 -1
  219. package/src/tests/send-task-requester-gate.test.ts +64 -3
  220. package/src/tests/sessions-move.test.ts +39 -1
  221. package/src/tests/store-progress-learning.test.ts +95 -2
  222. package/src/tests/whoami-route.test.ts +41 -0
  223. package/src/tools/inject-learning.ts +1 -1
  224. package/src/tools/memory-edit.ts +1 -1
  225. package/src/tools/memory-search.ts +1 -1
  226. package/src/tools/store-progress.ts +5 -1
  227. package/src/tools/utils.ts +12 -1
  228. package/src/utils/constants.ts +39 -0
  229. package/src/utils/task-attachment-links.ts +15 -3
  230. package/templates/skills/swarm-docs/content.md +1 -1
  231. package/dist/handlers-tzmevqb5.js +0 -41
  232. package/dist/{azure-openai-responses-9kfwhmn7.js → azure-openai-responses-43asa23s.js} +0 -0
  233. package/dist/{node-vxx896fa.js → node-t28cc56b.js} +0 -0
  234. package/dist/{openai-codex-responses-79s8xnbh.js → openai-codex-responses-jhr3sjtm.js} +3 -3
  235. package/dist/{openai-completions-tdbyts0x.js → openai-completions-gs6yn37k.js} +3 -3
  236. /package/dist/{openai-responses-dm3t5vqp.js → openai-responses-jqm9vwwk.js} +0 -0
@@ -154,6 +154,7 @@ import {
154
154
  getAuthorizationById,
155
155
  getOAuthTokens,
156
156
  init_oauth,
157
+ LEARNING_DUPLICATE_MIN_SIMILARITY,
157
158
  CANDIDATE_SET_MULTIPLIER,
158
159
  isGraphExpansionEnabled,
159
160
  init_constants,
@@ -348,19 +349,19 @@ import {
348
349
  recordInlineScriptRun2,
349
350
  exports_db,
350
351
  init_db3
351
- } from "./cli-48gxjmcz.js";
352
+ } from "./cli-qvaa1gjp.js";
352
353
  import {
353
354
  getUserGrant2,
354
355
  init_rbac_roles
355
- } from "./cli-8wmj18cz.js";
356
+ } from "./cli-hpkvgdad.js";
356
357
  import {
357
358
  ensurePricingSeeded2,
358
359
  ensureRbacSeeded2,
359
360
  ensureModelProfilesSeeded2
360
- } from "./cli-rd5m70gj.js";
361
+ } from "./cli-typdpe8g.js";
361
362
  import {
362
363
  loadModelsDevCache
363
- } from "./cli-d20qvpr2.js";
364
+ } from "./cli-2sjm3t4r.js";
364
365
  import {
365
366
  buildCatalogEntries,
366
367
  listModelCatalog,
@@ -370,12 +371,12 @@ import {
370
371
  loadModelsCatalog,
371
372
  requestModelCatalogRefresh2,
372
373
  startPricingRefreshLoop2
373
- } from "./cli-60sty27p.js";
374
+ } from "./cli-twjnyvs8.js";
374
375
  import {
375
376
  ampPinProviderError,
376
377
  ampPinCatalogError,
377
378
  ampModelError
378
- } from "./cli-8mbc9za9.js";
379
+ } from "./cli-cb50g9cd.js";
379
380
  import {
380
381
  workflowEventBus2,
381
382
  init_event_bus
@@ -444,7 +445,7 @@ import {
444
445
  definitionNodeIds,
445
446
  validateDefinition,
446
447
  applyDefinitionPatch
447
- } from "./cli-j0ppywdr.js";
448
+ } from "./cli-dv11pgpv.js";
448
449
  import {
449
450
  require_dist2,
450
451
  publicEndpointSsrfOptions,
@@ -504,14 +505,14 @@ import {
504
505
  deleteApp,
505
506
  typecheckScript,
506
507
  parseSkillContent
507
- } from "./cli-j9bpmykh.js";
508
+ } from "./cli-kbtdftbw.js";
508
509
  import {
509
510
  buildAuthorizationUrl,
510
511
  onAuthorizationRefreshed,
511
512
  ensureAuthorizationTokenOrThrow,
512
513
  ensureToken,
513
514
  ensureTokenOrThrow
514
- } from "./cli-aypd09nf.js";
515
+ } from "./cli-rm66vqdz.js";
515
516
  import {
516
517
  detachedProcessGroup,
517
518
  registerProcessGroup,
@@ -545,14 +546,14 @@ import {
545
546
  getSlackApp2,
546
547
  startSlackApp2,
547
548
  stopSlackApp2
548
- } from "./cli-m30k9777.js";
549
+ } from "./cli-thsaq4pd.js";
549
550
  import {
550
551
  slackCode,
551
552
  slackMissingScopeMessage,
552
553
  withAutoJoin,
553
554
  externalChannelToolError2,
554
555
  getChannelBlockReason2
555
- } from "./cli-s09j9vp5.js";
556
+ } from "./cli-vhpckzvp.js";
556
557
  import {
557
558
  shapeApprovalResolution,
558
559
  SubWorkflowExecutor,
@@ -571,7 +572,7 @@ import {
571
572
  recoverResolvedWaitState2,
572
573
  resumeFromChildRun2,
573
574
  initWaitBusSubscriptions2
574
- } from "./cli-twctnkng.js";
575
+ } from "./cli-3v2cyqb8.js";
575
576
  import {
576
577
  duplicateGuardedQueryKey,
577
578
  parseQueryParams,
@@ -598,7 +599,7 @@ import {
598
599
  isPublicRoute,
599
600
  findRoute,
600
601
  route
601
- } from "./cli-wqr7cea4.js";
602
+ } from "./cli-hq2v4rr5.js";
602
603
  import {
603
604
  FilesError,
604
605
  providerPath,
@@ -609,7 +610,7 @@ import {
609
610
  import {
610
611
  getRuntimePool2,
611
612
  init_db
612
- } from "./cli-6srv653c.js";
613
+ } from "./cli-6vwjsetx.js";
613
614
  import {
614
615
  getMemoryRaterNames,
615
616
  REFERENCES_SOURCE_MAX_LENGTH,
@@ -634,7 +635,7 @@ import {
634
635
  import {
635
636
  canProvisionKind,
636
637
  init_runtime_providers
637
- } from "./cli-39aet655.js";
638
+ } from "./cli-m52t4cta.js";
638
639
  import {
639
640
  findUserById,
640
641
  findUserByExternalId,
@@ -649,7 +650,7 @@ import {
649
650
  resolveSessionToken,
650
651
  fingerprintApiKey,
651
652
  init_users
652
- } from "./cli-a89zdqz9.js";
653
+ } from "./cli-nf6k60sn.js";
653
654
  import {
654
655
  isRbacEnabled,
655
656
  decideAdmission,
@@ -658,7 +659,7 @@ import {
658
659
  init_elevated_agents,
659
660
  can,
660
661
  init_rbac
661
- } from "./cli-4rvr7zfx.js";
662
+ } from "./cli-k4awgvzm.js";
662
663
  import {
663
664
  normalizeAssetKey,
664
665
  sessionGroupKey,
@@ -719,7 +720,7 @@ import {
719
720
  KvNamespaceSchema,
720
721
  KvKeySchema,
721
722
  init_types
722
- } from "./cli-9pshx6rd.js";
723
+ } from "./cli-s504c3w7.js";
723
724
  import {
724
725
  generateDefaultClaudeMd2,
725
726
  generateDefaultSoulMd2,
@@ -730,7 +731,7 @@ import {
730
731
  init_task_attachment_links,
731
732
  contentSha256,
732
733
  init_profile_sync
733
- } from "./cli-x37r7qwf.js";
734
+ } from "./cli-kj69b9tw.js";
734
735
  import {
735
736
  isSteeringEnabled2,
736
737
  init_steering_enabled
@@ -752,7 +753,7 @@ import {
752
753
  init_registry,
753
754
  resolveTemplate,
754
755
  init_resolver
755
- } from "./cli-f1e0ptjj.js";
756
+ } from "./cli-b41p764a.js";
756
757
  import {
757
758
  init_zod
758
759
  } from "./cli-4chz1hye.js";
@@ -794,11 +795,7 @@ import {
794
795
  import {
795
796
  init_package,
796
797
  package_default
797
- } from "./cli-ptfq202x.js";
798
- import {
799
- realtimeBus,
800
- init_bus
801
- } from "./cli-syfdvhkc.js";
798
+ } from "./cli-swkx9jm2.js";
802
799
  import {
803
800
  MAX_PROFILE_FILE_LENGTH,
804
801
  getConfiguredAppUrls,
@@ -809,13 +806,18 @@ import {
809
806
  getAgentFsDefaultOrgId,
810
807
  getAgentFsDefaultDriveId,
811
808
  isCombEnabled,
809
+ isAgentFsProxyEnabled,
812
810
  init_constants2
813
- } from "./cli-gf2850q7.js";
811
+ } from "./cli-3cywb44q.js";
814
812
  import {
815
813
  parseEnvFlag,
816
814
  isEnvFlagEnabled,
817
815
  init_env_flag
818
816
  } from "./cli-cebvbc9t.js";
817
+ import {
818
+ realtimeBus,
819
+ init_bus
820
+ } from "./cli-syfdvhkc.js";
819
821
  import {
820
822
  getApiKey,
821
823
  init_api_key
@@ -20544,7 +20546,7 @@ function startRetryPoller(registry, intervalMs = 5000) {
20544
20546
  if (!waiting)
20545
20547
  continue;
20546
20548
  if (result.waitFor === "workflow.child.finished") {
20547
- const { resumeFromChildRun } = await import("./resume-1bmvjbf3.js");
20549
+ const { resumeFromChildRun } = await import("./resume-725g9b0b.js");
20548
20550
  await resumeFromChildRun(step.id, registry);
20549
20551
  }
20550
20552
  } else {
@@ -21227,7 +21229,7 @@ class NotifyExecutor extends BaseExecutor {
21227
21229
  }
21228
21230
  }
21229
21231
  case "slack": {
21230
- const { getSlackApp } = await import("./app-mwx1d5a9.js");
21232
+ const { getSlackApp } = await import("./app-d53yhykk.js");
21231
21233
  const app = getSlackApp();
21232
21234
  if (!app) {
21233
21235
  return {
@@ -24228,6 +24230,13 @@ var storeProgressBlockedWaitingNudge = (r) => {
24228
24230
  return;
24229
24231
  return `That reads as blocked-waiting, ${formatIdleDuration(ms)} since your last update — keep working if you can, and if the wait is genuinely long, defer-task is one way to resume later instead of polling.`;
24230
24232
  };
24233
+ var storeProgressNudge = (r) => {
24234
+ const learning = r.data?.learning;
24235
+ if (r.ok && learning?.status === "duplicate" && typeof learning.memoryId === "string") {
24236
+ return `That learning repeats memory ${learning.memoryId}; if your text adds something, memory-edit that memory instead of storing a new one.`;
24237
+ }
24238
+ return storeProgressBlockedWaitingNudge(r);
24239
+ };
24231
24240
  var workflowLongScriptTimeoutNudge = (r) => {
24232
24241
  if (!r.ok)
24233
24242
  return;
@@ -24236,7 +24245,7 @@ var workflowLongScriptTimeoutNudge = (r) => {
24236
24245
  };
24237
24246
  var NUDGES = {
24238
24247
  "defer-task": (r) => r.ok ? "Stop working on this task now; the wake-up task will carry your note." : undefined,
24239
- "store-progress": storeProgressBlockedWaitingNudge,
24248
+ "store-progress": storeProgressNudge,
24240
24249
  "script-run": scriptRunNudge,
24241
24250
  "script-upsert": scriptAuthoringNudge,
24242
24251
  "launch-script-run": scriptAuthoringNudge,
@@ -24614,7 +24623,7 @@ function setPreloadedTools(server, names) {
24614
24623
  async function applyPreToolCall(name, args, requestInfo, inputSchema) {
24615
24624
  if (requestInfo.callOrigin !== "mcp")
24616
24625
  return { args };
24617
- const dispatcher = await import("./dispatcher-hayexmkr.js");
24626
+ const dispatcher = await import("./dispatcher-8m0htjq8.js");
24618
24627
  const result = await dispatcher.dispatchPre("pre.tool.call", { tool: name, args, requestInfo }, inputSchema ? {
24619
24628
  validateModify: async (data) => {
24620
24629
  const schema = normalizeObjectSchema(inputSchema) ?? inputSchema;
@@ -31743,7 +31752,7 @@ async function loadAdapter(name, config, logger) {
31743
31752
  });
31744
31753
  }
31745
31754
  case "slack": {
31746
- const { createSlackAdapter } = await import("./index-zgvqzjsw.js");
31755
+ const { createSlackAdapter } = await import("./index-cekzwhez.js");
31747
31756
  return createSlackAdapter({
31748
31757
  ...base,
31749
31758
  signingSecret: config.signingSecret ?? "",
@@ -31762,7 +31771,7 @@ async function loadAdapter(name, config, logger) {
31762
31771
  });
31763
31772
  }
31764
31773
  case "teams": {
31765
- const { createTeamsAdapter } = await import("./index-ysd45kgc.js");
31774
+ const { createTeamsAdapter } = await import("./index-8fxt5eah.js");
31766
31775
  const { teamsWebhookVerifier, teamsToken } = getChatSdkTestHooks();
31767
31776
  return createTeamsAdapter({
31768
31777
  ...base,
@@ -35098,7 +35107,7 @@ async function notifySlack(text) {
35098
35107
  return;
35099
35108
  }
35100
35109
  try {
35101
- const { getSlackApp } = await import("./app-mwx1d5a9.js");
35110
+ const { getSlackApp } = await import("./app-d53yhykk.js");
35102
35111
  const app = getSlackApp();
35103
35112
  if (!app) {
35104
35113
  console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
@@ -35169,7 +35178,7 @@ async function deleteJiraWebhook(webhookId) {
35169
35178
  console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
35170
35179
  }
35171
35180
  async function overwriteWebhookIds(next) {
35172
- const { getDbClient } = await import("./db-28gjyvxj.js");
35181
+ const { getDbClient } = await import("./db-dv9j7ts5.js");
35173
35182
  await getDbClient().transaction(async (tx) => {
35174
35183
  const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
35175
35184
  if (!row) {
@@ -108568,7 +108577,7 @@ async function reloadGlobalConfigsAndIntegrations() {
108568
108577
  return runWithoutRequestAuth(() => reloadGlobalConfigsAndIntegrationsInner());
108569
108578
  }
108570
108579
  async function reloadGlobalConfigsAndIntegrationsInner() {
108571
- const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-q52f47pe.js");
108580
+ const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-yn1yxg85.js");
108572
108581
  const wasEmbeddingsConfigured = getEmbeddingProvider().isConfigured();
108573
108582
  const updated = await loadGlobalConfigsIntoEnv(true);
108574
108583
  await syncTelemetryEnabled("settings").catch((err) => {
@@ -108584,10 +108593,10 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
108584
108593
  integrations.push("embeddings");
108585
108594
  }
108586
108595
  if (!wasEmbeddingsConfigured && isEmbeddingsConfigured) {
108587
- import("./boot-reembed-5h37a2c2.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
108596
+ import("./boot-reembed-k5y5xbj0.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
108588
108597
  console.error("[config-reload] memory backfill failed (non-fatal):", err);
108589
108598
  });
108590
- import("./boot-reembed-7h78vmvv.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
108599
+ import("./boot-reembed-fxfw17m2.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
108591
108600
  console.error("[config-reload] script backfill failed (non-fatal):", err);
108592
108601
  });
108593
108602
  }
@@ -116263,7 +116272,7 @@ async function indexMemoryContent(params) {
116263
116272
  intent: "re-index memory source path",
116264
116273
  changedByAgentId: agentId
116265
116274
  });
116266
- const embedding = await provider.embed(result.memory.content);
116275
+ const embedding = await provider.embed(result.memory.content, { kind: "document" });
116267
116276
  if (embedding)
116268
116277
  await store.updateEmbedding(result.memory.id, embedding, provider.name);
116269
116278
  try {
@@ -116304,7 +116313,7 @@ async function indexMemoryContent(params) {
116304
116313
  }
116305
116314
  (async () => {
116306
116315
  try {
116307
- const embeddings = await provider.embedBatch(memories.map((m) => m.content));
116316
+ const embeddings = await provider.embedBatch(memories.map((m) => m.content), { kind: "document" });
116308
116317
  for (let i = 0;i < embeddings.length; i++) {
116309
116318
  if (embeddings[i]) {
116310
116319
  await store.updateEmbedding(memories[i].id, embeddings[i], provider.name);
@@ -118453,7 +118462,7 @@ ${learning}`;
118453
118462
  });
118454
118463
  try {
118455
118464
  const provider = getEmbeddingProvider2();
118456
- const embedding = await provider.embed(memory.content);
118465
+ const embedding = await provider.embed(memory.content, { kind: "document" });
118457
118466
  if (embedding) {
118458
118467
  await store.updateEmbedding(memory.id, embedding, provider.name);
118459
118468
  }
@@ -119952,7 +119961,7 @@ var registerMemoryEditTool = (server) => {
119952
119961
  const contentEdited = content !== undefined || oldString !== undefined || newString !== undefined;
119953
119962
  if (result.changed && (newKey === undefined || contentEdited)) {
119954
119963
  const provider = getEmbeddingProvider2();
119955
- const embedding = await provider.embed(result.memory.content);
119964
+ const embedding = await provider.embed(result.memory.content, { kind: "document" });
119956
119965
  if (embedding)
119957
119966
  await store.updateEmbedding(result.memory.id, embedding, provider.name);
119958
119967
  try {
@@ -120446,7 +120455,7 @@ var registerMemorySearchTool = (server) => {
120446
120455
  const isLead = agent?.isLead ?? false;
120447
120456
  const provider = getEmbeddingProvider2();
120448
120457
  const store = getMemoryStore2();
120449
- const queryEmbedding = await provider.embed(query);
120458
+ const queryEmbedding = await provider.embed(query, { kind: "query" });
120450
120459
  const candidateLimit = limit * CANDIDATE_SET_MULTIPLIER;
120451
120460
  const candidates = await searchMemoryCandidates(store, queryEmbedding ?? new Float32Array(0), requestInfo.agentId, {
120452
120461
  scope,
@@ -122529,9 +122538,10 @@ function trimUrl(value) {
122529
122538
  }
122530
122539
  function getCombConfig() {
122531
122540
  const internalUrl = trimUrl(process.env.AGENT_FS_API_URL);
122541
+ const browserDefault = isAgentFsProxyEnabled() && internalUrl ? `${getPublicMcpBaseUrl()}/agentfs` : internalUrl;
122532
122542
  return {
122533
122543
  enabled: isCombEnabled(),
122534
- apiUrl: trimUrl(process.env.AGENT_FS_PUBLIC_URL) ?? internalUrl,
122544
+ apiUrl: trimUrl(process.env.AGENT_FS_PUBLIC_URL) ?? browserDefault,
122535
122545
  liveUrl: getAgentFsLiveUrl(),
122536
122546
  orgId: getAgentFsDefaultOrgId() ?? null,
122537
122547
  driveId: getAgentFsDefaultDriveId() ?? null
@@ -134572,6 +134582,8 @@ init_db3();
134572
134582
 
134573
134583
  // src/be/memory/task-learning.ts
134574
134584
  init_db3();
134585
+ init_memory();
134586
+ init_constants();
134575
134587
  init_profile_sync();
134576
134588
  init_secret_scrubber();
134577
134589
  var LEARNING_MAX_CHARS = 2000;
@@ -134579,6 +134591,8 @@ var LEARNING_MAX_TAGS = 5;
134579
134591
  var LEARNINGS_ROOT = "/learnings";
134580
134592
  var SEGMENT_MAX_CHARS = 60;
134581
134593
  var KEY_ATTEMPTS = 4;
134594
+ var DUPLICATE_SEARCH_PREFIXES = [`${LEARNINGS_ROOT}/`, "/longterm/workstreams/"];
134595
+ var LEARNING_DUPLICATE_RATING_SOURCE = "learning-duplicate";
134582
134596
  function toKebab(value, maxChars = SEGMENT_MAX_CHARS) {
134583
134597
  return value.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+/, "").slice(0, maxChars).replace(/-+$/, "");
134584
134598
  }
@@ -134610,6 +134624,14 @@ async function storeTaskLearning(params) {
134610
134624
  }
134611
134625
  const workstream = resolveLearningWorkstream(input.workstream === undefined ? undefined : scrubSecrets(input.workstream), task.vcsRepo === undefined ? undefined : scrubSecrets(task.vcsRepo));
134612
134626
  try {
134627
+ const replay = await findReplay(task.id, contentSha256(text));
134628
+ if (replay)
134629
+ return replay;
134630
+ const duplicate = await findNearDuplicate({ agentId, isLead, text });
134631
+ if (duplicate) {
134632
+ await rateDuplicate(duplicate, task.id);
134633
+ return duplicate;
134634
+ }
134613
134635
  return await getDbClient2().transaction(() => insertLearning({ agentId, isLead, taskId: task.id, text, tags, workstream }));
134614
134636
  } catch (err) {
134615
134637
  return {
@@ -134618,14 +134640,58 @@ async function storeTaskLearning(params) {
134618
134640
  };
134619
134641
  }
134620
134642
  }
134621
- async function insertLearning(params) {
134622
- const { agentId, isLead, taskId, text, tags, workstream } = params;
134623
- const contentHash = contentSha256(text);
134643
+ async function findReplay(taskId, contentHash) {
134624
134644
  const replay = await getDbClient2().get(`SELECT id, key FROM agent_memory
134625
134645
  WHERE sourceTaskId = ? AND contentHash = ? AND key LIKE '${LEARNINGS_ROOT}/%'
134626
134646
  LIMIT 1`, [taskId, contentHash]);
134647
+ return replay ? { status: "replayed", memoryId: replay.id, key: replay.key } : null;
134648
+ }
134649
+ async function findNearDuplicate(params) {
134650
+ try {
134651
+ const embedding = await getEmbeddingProvider2().embed(params.text);
134652
+ if (!embedding)
134653
+ return null;
134654
+ const store = getMemoryStore2();
134655
+ const results = await Promise.all(DUPLICATE_SEARCH_PREFIXES.map((keyPrefix) => store.search(embedding, params.agentId, {
134656
+ scope: "swarm",
134657
+ isLead: params.isLead,
134658
+ keyPrefix,
134659
+ limit: 1
134660
+ })));
134661
+ const best = results.flat().filter((candidate) => candidate.key).sort((a, b) => b.similarity - a.similarity)[0];
134662
+ if (!best || best.similarity < LEARNING_DUPLICATE_MIN_SIMILARITY)
134663
+ return null;
134664
+ return {
134665
+ status: "duplicate",
134666
+ memoryId: best.id,
134667
+ key: best.key,
134668
+ similarity: Math.round(best.similarity * 1000) / 1000
134669
+ };
134670
+ } catch (err) {
134671
+ console.warn("[task-learning] near-duplicate check failed; storing the learning:", scrubSecrets(err instanceof Error ? err.message : String(err)));
134672
+ return null;
134673
+ }
134674
+ }
134675
+ async function rateDuplicate(duplicate, taskId) {
134676
+ try {
134677
+ await applyRating([
134678
+ {
134679
+ memoryId: duplicate.memoryId,
134680
+ signal: 1,
134681
+ weight: 1,
134682
+ source: LEARNING_DUPLICATE_RATING_SOURCE,
134683
+ reasoning: `store-progress learning matched at cosine ${duplicate.similarity}`
134684
+ }
134685
+ ], { taskId });
134686
+ } catch (err) {
134687
+ console.warn("[task-learning] duplicate rating failed:", scrubSecrets(err instanceof Error ? err.message : String(err)));
134688
+ }
134689
+ }
134690
+ async function insertLearning(params) {
134691
+ const { agentId, isLead, taskId, text, tags, workstream } = params;
134692
+ const replay = await findReplay(taskId, contentSha256(text));
134627
134693
  if (replay)
134628
- return { status: "replayed", memoryId: replay.id, key: replay.key };
134694
+ return replay;
134629
134695
  const title = text.split(/\r?\n/, 1)[0].trim().slice(0, 200);
134630
134696
  const baseKey = `${LEARNINGS_ROOT}/${workstream}/${toKebab(title) || "learning"}`;
134631
134697
  for (let attempt = 0;attempt < KEY_ATTEMPTS; attempt++) {
@@ -134691,14 +134757,18 @@ var storeProgressOutputSchema = swarmToolOutputSchema({
134691
134757
  key: string2().optional(),
134692
134758
  memoryId: string2().optional(),
134693
134759
  workstream: string2().optional(),
134760
+ similarity: number2().optional(),
134694
134761
  error: string2().optional()
134695
- }).optional().describe("Present when the call carried a learning: stored, replayed (same text already stored for this task), or failed with error.")
134762
+ }).optional().describe("Present when the call carried a learning: stored, replayed (same text already stored for this task), duplicate (an existing swarm memory at key/memoryId says the same; similarity is the raw cosine), or failed with error.")
134696
134763
  });
134697
134764
  function learningSentence(result) {
134698
134765
  if (result.status === "stored")
134699
134766
  return `Learning stored at ${result.key}.`;
134700
134767
  if (result.status === "replayed")
134701
134768
  return `Learning already stored at ${result.key}; skipped.`;
134769
+ if (result.status === "duplicate") {
134770
+ return `Learning not stored: it matches ${result.key} (similarity ${result.similarity}).`;
134771
+ }
134702
134772
  return `Learning not stored: ${result.error}.`;
134703
134773
  }
134704
134774
  var registerStoreProgressTool = (server) => {