@desplega.ai/agent-swarm 1.157.0 → 1.158.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/dist/{acp-adapter-qhqrk4q0.js → acp-adapter-xaq4n6pc.js} +1 -1
  2. package/dist/{actions-9rrg0zxm.js → actions-p9hz5yat.js} +15 -15
  3. package/dist/{app-enysy1zd.js → app-g26wdcz6.js} +4 -4
  4. package/dist/{artifact-td4q4dch.js → artifact-3v5t9jtg.js} +1 -1
  5. package/dist/{assistant-zegamy48.js → assistant-wydfqkb3.js} +16 -16
  6. package/dist/{boot-reembed-r6shx5qx.js → boot-reembed-g5ckg9yb.js} +6 -6
  7. package/dist/{boot-reembed-zfxb937k.js → boot-reembed-se8zmdcp.js} +5 -5
  8. package/dist/{boot-scrub-logs-k5y0se6r.js → boot-scrub-logs-wfxqan61.js} +3 -3
  9. package/dist/{seed-pricing-vqxa06qf.js → boot-seeds-s3q01xj3.js} +10 -10
  10. package/dist/{claude-adapter-5yc7hxwv.js → claude-adapter-tv2x4f36.js} +7 -7
  11. package/dist/{claude-managed-adapter-ea2aga6w.js → claude-managed-adapter-41b2s7fd.js} +2 -2
  12. package/dist/{claude-sdk-session-j4ywn3xf.js → claude-sdk-session-t442qz6f.js} +8 -8
  13. package/dist/{cli-e781c6f9.js → cli-0xjkj1j7.js} +1 -0
  14. package/dist/{cli-58rgvkt4.js → cli-1hkrch3k.js} +2 -2
  15. package/dist/{cli-yscm6cv8.js → cli-20cj37vt.js} +1866 -9
  16. package/dist/{cli-h0wdadsx.js → cli-4198qc9v.js} +7 -3
  17. package/dist/{cli-awwphhcs.js → cli-47m6dkd3.js} +362 -126
  18. package/dist/{cli-wb2zvbfg.js → cli-53sz8gkz.js} +1 -1
  19. package/dist/{cli-005pze6s.js → cli-5d10vd2m.js} +1 -1
  20. package/dist/{cli-v53rbqp3.js → cli-65hjmev5.js} +57 -17
  21. package/dist/{cli-scwq51gn.js → cli-68w09sjw.js} +7 -1
  22. package/dist/{cli-s98skd5r.js → cli-7gtvvpbh.js} +4 -4
  23. package/dist/{cli-y3nxwx0t.js → cli-7s3syk22.js} +18 -11
  24. package/dist/{cli-74h6f2bp.js → cli-8qmme6vd.js} +2 -2
  25. package/dist/{cli-wsed24mk.js → cli-987hg0aa.js} +2 -2
  26. package/dist/{cli-9n76jszt.js → cli-9httdpyq.js} +1 -1
  27. package/dist/{cli-f3va018d.js → cli-aky8tctm.js} +26 -93
  28. package/dist/{cli-sgyqyyxe.js → cli-c07r9a2m.js} +2 -1
  29. package/dist/{cli-c41wjx0r.js → cli-fgqxwrpv.js} +291 -12
  30. package/dist/{cli-01vfmq8c.js → cli-ftfvggzx.js} +607 -164
  31. package/dist/{cli-ytxs7mn1.js → cli-g8djp6qe.js} +17 -0
  32. package/dist/{cli-avkd6mqv.js → cli-h967nb6r.js} +551 -0
  33. package/dist/{cli-r9ee9c4w.js → cli-j55n64b6.js} +23 -22
  34. package/dist/{cli-9p33cz9h.js → cli-j57qkrpq.js} +86 -28
  35. package/dist/{cli-tjmghmm5.js → cli-q67y4wzm.js} +6 -3
  36. package/dist/{cli-n6zq3kbd.js → cli-rj19hc34.js} +1 -1
  37. package/dist/{cli-jytrw2na.js → cli-rjehvrts.js} +4 -4
  38. package/dist/{cli-tpv97m71.js → cli-rqz8qbw7.js} +245 -75
  39. package/dist/{cli-p37sg0a9.js → cli-s8eet254.js} +1 -1
  40. package/dist/cli-t1ze64h3.js +811 -0
  41. package/dist/{cli-6jjzxv3b.js → cli-ws6rqycm.js} +3 -2
  42. package/dist/{cli-xf5b7y1f.js → cli-wscdvcqz.js} +13 -5
  43. package/dist/{cli-5j7bm4tb.js → cli-x24pshtq.js} +5 -5
  44. package/dist/{cli-nbp6m6gp.js → cli-xberxa1r.js} +51 -26
  45. package/dist/{cli-vx9p3qdt.js → cli-xhaeg2nc.js} +1 -1
  46. package/dist/cli.js +29 -15
  47. package/dist/{codex-adapter-gns3s6c3.js → codex-adapter-cnm8wk11.js} +5 -5
  48. package/dist/{codex-session-runner-gqnxys5w.js → codex-session-runner-gfg547zj.js} +5 -5
  49. package/dist/{commands-hxy2y2sp.js → commands-e3bn0p75.js} +3 -3
  50. package/dist/{db-w8ghhsgf.js → db-03v9kzr2.js} +17 -3
  51. package/dist/{dispatcher-cp1rknjz.js → dispatcher-nrmg8yht.js} +14 -14
  52. package/dist/{dsh-adapter-1dwg97zv.js → dsh-adapter-k03nfqa6.js} +2 -2
  53. package/dist/{handlers-egfhr351.js → handlers-aqcedbyb.js} +17 -17
  54. package/dist/{hook-x4kftwzt.js → hook-7vkskkre.js} +19 -11
  55. package/dist/{hook-fbxjqfjz.js → hook-ybvmrmhq.js} +4 -4
  56. package/dist/{http-c7jfx990.js → http-2eqa8t24.js} +432 -195
  57. package/dist/{index-4k9hct21.js → index-1yks3qcr.js} +14 -14
  58. package/dist/{index-jtvpgb8f.js → index-a3vn96n8.js} +30 -27
  59. package/dist/{index-dc2ek6bw.js → index-c6zsv1bd.js} +5 -5
  60. package/dist/{index-yy07ef2s.js → index-chgdkq36.js} +14 -14
  61. package/dist/{index-r6bty6tb.js → index-x71bvq0p.js} +15 -15
  62. package/dist/{keepalive-f7ekefyc.js → keepalive-vtkf5n99.js} +5 -5
  63. package/dist/{lead-h053syts.js → lead-h3sp357x.js} +26 -26
  64. package/dist/{maintenance-a3w6zs54.js → maintenance-jzeqtk3q.js} +6 -6
  65. package/dist/{oauth-refresh-sweep-vra1dhkd.js → oauth-refresh-sweep-qp3dzmdp.js} +4 -4
  66. package/dist/{onboard-mfgzeqxs.js → onboard-tmsp0qbz.js} +278 -81
  67. package/dist/{opencode-adapter-z64xjzec.js → opencode-adapter-x6x2da1z.js} +3 -3
  68. package/dist/{otel-impl-2ez6xk57.js → otel-impl-9mz73q65.js} +416 -301
  69. package/dist/{pi-mono-adapter-2b7mw16r.js → pi-mono-adapter-m6dvv0dz.js} +2 -2
  70. package/dist/{pricing-refresh-6sw65tck.js → pricing-refresh-v1cbr9te.js} +5 -5
  71. package/dist/{rbac-roles-nm6924sy.js → rbac-roles-c9wqz83x.js} +4 -4
  72. package/dist/{render-v2-f026j6c4.js → render-v2-gryrh9h8.js} +4 -4
  73. package/dist/{setup-w606fr1q.js → setup-q9720bt6.js} +2 -2
  74. package/dist/{virtual-modules-8qheft18.js → virtual-modules-3htpgn8x.js} +1 -1
  75. package/dist/{work-objects-ezmggdne.js → work-objects-b76x7deb.js} +17 -17
  76. package/dist/{worker-1mbyv29k.js → worker-6vrxbv41.js} +26 -26
  77. package/openapi.json +1626 -629
  78. package/package.json +2 -1
  79. package/src/apps/catalog.generated.json +229 -0
  80. package/src/apps/page-validator.ts +71 -16
  81. package/src/apps/row-store.ts +66 -11
  82. package/src/apps/sync.ts +59 -17
  83. package/src/artifact-sdk/browser-sdk.ts +436 -2
  84. package/src/be/approval-sweeps.ts +109 -0
  85. package/src/be/boot-seeds.ts +40 -0
  86. package/src/be/chunking.ts +1 -1
  87. package/src/be/db/agents.ts +20 -0
  88. package/src/be/db/approvals.ts +78 -0
  89. package/src/be/db/tasks/read.ts +197 -39
  90. package/src/be/db/tasks/write.ts +41 -9
  91. package/src/be/db-client.ts +107 -48
  92. package/src/be/db.ts +219 -76
  93. package/src/be/events.ts +33 -1
  94. package/src/be/memory/graph-expansion.ts +10 -3
  95. package/src/be/memory/providers/sqlite-store.ts +55 -13
  96. package/src/be/memory/raters/retrieval.ts +5 -2
  97. package/src/be/memory/reranker.ts +26 -2
  98. package/src/be/memory/types.ts +2 -0
  99. package/src/be/migrations/166_approval_request_auto_cancellation.sql +9 -0
  100. package/src/be/migrations/171_memory_retrieval_relevance.sql +8 -0
  101. package/src/be/migrations/175_workflow_runs_list_index.sql +11 -0
  102. package/src/be/migrations/177_events_event_agent_created_index.sql +11 -0
  103. package/src/be/models-catalog.ts +2 -0
  104. package/src/be/modelsdev-cache.json +1857 -0
  105. package/src/be/modelsdev-cache.ts +14 -1
  106. package/src/be/pricing-normalize.ts +2 -0
  107. package/src/be/scripts/typecheck.ts +1 -0
  108. package/src/be/seed-pricing.ts +3 -1
  109. package/src/be/seed-skills/bundled-files.generated.json +1 -1
  110. package/src/be/steering.ts +53 -3
  111. package/src/be/swarm-config-guard.ts +3 -0
  112. package/src/be/task-citations.ts +29 -0
  113. package/src/cli.tsx +14 -1
  114. package/src/commands/onboard/compose-generator.ts +8 -3
  115. package/src/commands/onboard/container-engine.ts +220 -0
  116. package/src/commands/onboard/manifest.ts +1 -0
  117. package/src/commands/onboard/steps/health-check.tsx +4 -1
  118. package/src/commands/onboard/steps/prereq-check.tsx +50 -54
  119. package/src/commands/onboard/steps/start.tsx +31 -16
  120. package/src/commands/onboard/types.ts +7 -2
  121. package/src/commands/onboard.tsx +39 -4
  122. package/src/commands/profile-sync.ts +79 -26
  123. package/src/commands/runner.ts +8 -1
  124. package/src/extensions/catalog.generated.json +17 -0
  125. package/src/extensions/contract-types.generated.ts +1 -1
  126. package/src/heartbeat/heartbeat.ts +263 -103
  127. package/src/hooks/hook.ts +21 -12
  128. package/src/http/agents.ts +35 -0
  129. package/src/http/approval-requests.ts +136 -64
  130. package/src/http/apps.ts +14 -3
  131. package/src/http/config.ts +15 -1
  132. package/src/http/events.ts +62 -2
  133. package/src/http/index.ts +6 -4
  134. package/src/http/memory.ts +21 -7
  135. package/src/http/schedules.ts +1 -1
  136. package/src/http/session-data.ts +9 -4
  137. package/src/http/sessions.ts +25 -18
  138. package/src/http/stats.ts +19 -7
  139. package/src/http/status.ts +11 -1
  140. package/src/http/tasks.ts +40 -8
  141. package/src/http/webhooks.ts +67 -46
  142. package/src/http/workflows.ts +15 -20
  143. package/src/linear/outbound.ts +37 -15
  144. package/src/otel-impl.ts +151 -1
  145. package/src/otel.ts +14 -3
  146. package/src/prompts/memories.ts +19 -2
  147. package/src/providers/claude-managed-models.ts +8 -0
  148. package/src/providers/modelsdev-reasoning.json +551 -0
  149. package/src/rbac/legacy-policy.ts +16 -0
  150. package/src/rbac/permissions.ts +4 -0
  151. package/src/scheduler/schedule-task.ts +3 -0
  152. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  153. package/src/scripts-runtime/swarm-sdk.ts +9 -0
  154. package/src/scripts-runtime/types/stdlib.d.ts +1 -0
  155. package/src/scripts-runtime/types/swarm-extension.d.ts +1 -0
  156. package/src/scripts-runtime/types/swarm-sdk.d.ts +1 -0
  157. package/src/server.ts +12 -7
  158. package/src/slack/app.ts +35 -4
  159. package/src/slack/connection-state.ts +17 -0
  160. package/src/tasks/context-key.ts +1 -0
  161. package/src/tasks/worker-follow-up.ts +6 -2
  162. package/src/tests/agent-task-activity.test.ts +74 -0
  163. package/src/tests/agents-list-model-display.test.ts +6 -1
  164. package/src/tests/approval-auto-cancellation-migration.test.ts +104 -0
  165. package/src/tests/approval-requests.test.ts +395 -0
  166. package/src/tests/approval-sweeps-config.test.ts +47 -0
  167. package/src/tests/approval-sweeps.test.ts +508 -0
  168. package/src/tests/apps-kibo-blocks.test.ts +77 -0
  169. package/src/tests/apps-spike.test.ts +56 -1
  170. package/src/tests/apps-sync-engine.test.ts +20 -9
  171. package/src/tests/boot-seeds.test.ts +170 -0
  172. package/src/tests/cancel-approval-request-tool.test.ts +115 -0
  173. package/src/tests/claude-managed-adapter.test.ts +6 -0
  174. package/src/tests/config-key-filter.test.ts +80 -0
  175. package/src/tests/context-window.test.ts +1 -0
  176. package/src/tests/db-client-busy-retry.test.ts +96 -0
  177. package/src/tests/db-client.test.ts +60 -1
  178. package/src/tests/db-task-read-contract.test.ts +10 -0
  179. package/src/tests/db-task-write-contract.test.ts +9 -0
  180. package/src/tests/docs-index-footprint.test.js +3 -3
  181. package/src/tests/events-http.test.ts +103 -0
  182. package/src/tests/extensions-catalog.test.ts +22 -17
  183. package/src/tests/extensions-pre-task.test.ts +107 -0
  184. package/src/tests/fixtures/kibo-blocks-definition.json.txt +105 -0
  185. package/src/tests/follow-up-config-inheritance.test.ts +260 -0
  186. package/src/tests/heartbeat-orphan-resume.test.ts +84 -0
  187. package/src/tests/heartbeat-reboot-live.test.ts +95 -0
  188. package/src/tests/heartbeat-stall-cas.test.ts +80 -0
  189. package/src/tests/heartbeat.test.ts +99 -3
  190. package/src/tests/hook-mcp-config.test.ts +29 -0
  191. package/src/tests/http-api-integration.test.ts +16 -2
  192. package/src/tests/kv-storage.test.ts +62 -0
  193. package/src/tests/linear-outbound-sync.test.ts +120 -5
  194. package/src/tests/list-endpoint-slimming.test.ts +91 -0
  195. package/src/tests/memory-graph-organic-route.test.ts +155 -0
  196. package/src/tests/memory-http-recall-gating.test.ts +14 -4
  197. package/src/tests/memory-hybrid.test.ts +161 -1
  198. package/src/tests/memory-prompt-recall-crowdout.test.ts +297 -0
  199. package/src/tests/memory.test.ts +22 -0
  200. package/src/tests/onboard-container-engine.test.ts +240 -0
  201. package/src/tests/otel-event-loop-and-logs.test.ts +99 -0
  202. package/src/tests/pricing-routes.test.ts +14 -0
  203. package/src/tests/profile-sync-warning.test.ts +8 -4
  204. package/src/tests/promote-draft-task-route.test.ts +19 -0
  205. package/src/tests/provider-registration.test.ts +296 -42
  206. package/src/tests/rbac-engine.test.ts +30 -0
  207. package/src/tests/reasoning-effort.test.ts +8 -0
  208. package/src/tests/script-connections.test.ts +7 -0
  209. package/src/tests/sdk-allowlist.test.ts +39 -0
  210. package/src/tests/session-costs-model-key-normalize.test.ts +1 -0
  211. package/src/tests/sessions-detail-batch.test.ts +250 -0
  212. package/src/tests/sessions.test.ts +118 -0
  213. package/src/tests/slack-config.test.ts +22 -0
  214. package/src/tests/sonnet-5-5-registry.test.ts +44 -0
  215. package/src/tests/status.test.ts +36 -1
  216. package/src/tests/swarm-diff.test.ts +316 -10
  217. package/src/tests/task-completion-idempotency.test.ts +2 -1
  218. package/src/tests/tasks-requested-by-filter.test.ts +3 -1
  219. package/src/tests/tool-annotations.test.ts +1 -1
  220. package/src/tests/ui-list-slim-projections.test.ts +158 -0
  221. package/src/tests/webhooks-task-blocked.test.ts +127 -0
  222. package/src/tests/workflow-approval-recovery.test.ts +203 -0
  223. package/src/tests/workflow-hitl-routing.test.ts +22 -1
  224. package/src/tests/workflow-hitl-slack-card.test.ts +52 -0
  225. package/src/tests/workflow-http-v2.test.ts +99 -8
  226. package/src/tests/workflow-retry-validation.test.ts +56 -0
  227. package/src/tests/workflow-tla-races.test.ts +389 -0
  228. package/src/tests/workflow-validation-port-routing.test.ts +113 -1
  229. package/src/tools/cancel-approval-request.ts +57 -0
  230. package/src/tools/memory-search.ts +1 -0
  231. package/src/tools/request-human-input.ts +4 -2
  232. package/src/tools/send-task.ts +4 -0
  233. package/src/tools/templates.ts +19 -0
  234. package/src/tools/tool-config.ts +2 -1
  235. package/src/tools/workflows/list-workflow-runs.ts +1 -0
  236. package/src/types.ts +38 -0
  237. package/src/utils/context-window.ts +1 -0
  238. package/src/workflows/approval-cancel.ts +152 -0
  239. package/src/workflows/approval-notifications.ts +84 -0
  240. package/src/workflows/checkpoint.ts +10 -5
  241. package/src/workflows/definition.ts +21 -0
  242. package/src/workflows/engine.ts +152 -21
  243. package/src/workflows/executors/human-in-the-loop.ts +1 -1
  244. package/src/workflows/recovery.ts +100 -45
  245. package/src/workflows/resume.ts +49 -18
  246. package/src/workflows/retry-poller.ts +71 -21
  247. package/templates/extensions/README.md +1 -0
  248. package/templates/extensions/github-sender-allowlist/README.md +18 -0
  249. package/templates/extensions/github-sender-allowlist/hooks.ts +55 -0
  250. package/templates/extensions/github-sender-allowlist/manifest.json +8 -0
  251. package/templates/skills/apps/content.md +20 -1
  252. package/templates/skills/code-quality/content.md +26 -1
  253. package/templates/skills/pages/content.md +16 -4
  254. package/templates/skills/pages/files/examples/multiplayer-board.html +3 -12
  255. package/dist/cli-2daksqps.js +0 -378
  256. package/dist/rbac-roles-3gxmnb20.js +0 -37
@@ -1,32 +1,32 @@
1
1
  import {
2
2
  renderSteeringDelivery
3
3
  } from "./cli-y95wp3tg.js";
4
- import {
5
- checkClaudeManagedCredentials
6
- } from "./cli-scwq51gn.js";
7
4
  import {
8
5
  checkDevinCredentials
9
6
  } from "./cli-9b13ggd1.js";
10
7
  import {
11
8
  checkOpencodeCredentials
12
- } from "./cli-58rgvkt4.js";
9
+ } from "./cli-1hkrch3k.js";
13
10
  import {
14
11
  checkDshCredentials
15
- } from "./cli-005pze6s.js";
12
+ } from "./cli-5d10vd2m.js";
16
13
  import {
17
14
  checkCodexCredentials,
18
15
  codexUserHome
19
- } from "./cli-yscm6cv8.js";
16
+ } from "./cli-20cj37vt.js";
17
+ import {
18
+ checkClaudeManagedCredentials
19
+ } from "./cli-68w09sjw.js";
20
20
  import {
21
21
  renderMemoriesPrompt,
22
22
  writeSkillsToFilesystem
23
- } from "./cli-tjmghmm5.js";
23
+ } from "./cli-q67y4wzm.js";
24
24
  import {
25
25
  checkClaudeCredentials
26
- } from "./cli-s98skd5r.js";
26
+ } from "./cli-7gtvvpbh.js";
27
27
  import {
28
28
  getContextWindowSize
29
- } from "./cli-e781c6f9.js";
29
+ } from "./cli-0xjkj1j7.js";
30
30
  import {
31
31
  CODEX_CREDITS_EXHAUSTED_COOLDOWN_MS,
32
32
  MAX_RATE_LIMIT_RESET_MS,
@@ -38,7 +38,7 @@ import {
38
38
  import {
39
39
  resolveScriptsOnlyMode,
40
40
  validateJsonSchema
41
- } from "./cli-01vfmq8c.js";
41
+ } from "./cli-ftfvggzx.js";
42
42
  import {
43
43
  authJsonToCredentialSelection,
44
44
  credentialsToAuthJson,
@@ -65,7 +65,7 @@ import {
65
65
  syncProfileFilesToServer,
66
66
  writeIdentityBaselines,
67
67
  writeProfileFileFromDb
68
- } from "./cli-nbp6m6gp.js";
68
+ } from "./cli-xberxa1r.js";
69
69
  import {
70
70
  ensure,
71
71
  initOtel,
@@ -75,7 +75,7 @@ import {
75
75
  startSpan,
76
76
  withSpan,
77
77
  withSpanContext
78
- } from "./cli-9p33cz9h.js";
78
+ } from "./cli-j57qkrpq.js";
79
79
  import {
80
80
  init_task_attachment_links,
81
81
  taskAttachmentFetchCommand
@@ -84,12 +84,12 @@ import {
84
84
  initTelemetry,
85
85
  init_telemetry,
86
86
  telemetry
87
- } from "./cli-awwphhcs.js";
87
+ } from "./cli-47m6dkd3.js";
88
88
  import {
89
89
  ProviderNameSchema,
90
90
  init_types,
91
91
  resolveTaskModelSelection
92
- } from "./cli-h0wdadsx.js";
92
+ } from "./cli-4198qc9v.js";
93
93
  import {
94
94
  generateDefaultClaudeMd,
95
95
  generateDefaultIdentityMd,
@@ -163,19 +163,19 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
163
163
  async function createProviderAdapter(provider) {
164
164
  switch (provider) {
165
165
  case "claude": {
166
- const { ClaudeAdapter } = await import("./claude-adapter-5yc7hxwv.js");
166
+ const { ClaudeAdapter } = await import("./claude-adapter-tv2x4f36.js");
167
167
  return new ClaudeAdapter;
168
168
  }
169
169
  case "pi": {
170
- const { PiMonoAdapter } = await import("./pi-mono-adapter-2b7mw16r.js");
170
+ const { PiMonoAdapter } = await import("./pi-mono-adapter-m6dvv0dz.js");
171
171
  return new PiMonoAdapter;
172
172
  }
173
173
  case "codex": {
174
- const { CodexAdapter } = await import("./codex-adapter-gns3s6c3.js");
174
+ const { CodexAdapter } = await import("./codex-adapter-cnm8wk11.js");
175
175
  return new CodexAdapter;
176
176
  }
177
177
  case "claude-managed": {
178
- const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-ea2aga6w.js");
178
+ const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-41b2s7fd.js");
179
179
  return new ClaudeManagedAdapter;
180
180
  }
181
181
  case "devin": {
@@ -183,15 +183,15 @@ async function createProviderAdapter(provider) {
183
183
  return new DevinAdapter;
184
184
  }
185
185
  case "opencode": {
186
- const { OpencodeAdapter } = await import("./opencode-adapter-z64xjzec.js");
186
+ const { OpencodeAdapter } = await import("./opencode-adapter-x6x2da1z.js");
187
187
  return new OpencodeAdapter;
188
188
  }
189
189
  case "dsh": {
190
- const { DshAdapter } = await import("./dsh-adapter-1dwg97zv.js");
190
+ const { DshAdapter } = await import("./dsh-adapter-k03nfqa6.js");
191
191
  return new DshAdapter;
192
192
  }
193
193
  case "acp": {
194
- const { ACPAdapter } = await import("./acp-adapter-qhqrk4q0.js");
194
+ const { ACPAdapter } = await import("./acp-adapter-xaq4n6pc.js");
195
195
  return new ACPAdapter;
196
196
  }
197
197
  default:
@@ -605,7 +605,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
605
605
  devin: (env) => checkDevinCredentials(env),
606
606
  opencode: (env, opts) => checkOpencodeCredentials(env, opts),
607
607
  pi: async (env, opts) => {
608
- const { checkPiMonoCredentials } = await import("./pi-mono-adapter-2b7mw16r.js");
608
+ const { checkPiMonoCredentials } = await import("./pi-mono-adapter-m6dvv0dz.js");
609
609
  return checkPiMonoCredentials(env, opts);
610
610
  },
611
611
  acp: () => ({ ready: true, missing: [], satisfiedBy: "sdk-delegated" })
@@ -1712,6 +1712,7 @@ var SWARM_TOOL_LABELS = {
1712
1712
  "post-message": "\uD83D\uDCAC Sending message",
1713
1713
  "read-messages": "\uD83D\uDCAC Reading messages",
1714
1714
  "request-human-input": "\uD83D\uDE4B Requesting human input",
1715
+ "cancel-approval-request": "\uD83D\uDEAB Cancelling approval request",
1715
1716
  "cancel-task": "\uD83D\uDEAB Cancelling task",
1716
1717
  "db-query": "\uD83D\uDDC3️ Querying database",
1717
1718
  "inject-learning": "\uD83E\uDDE0 Storing learning",
@@ -57,11 +57,11 @@ import {
57
57
  setSlackMessageTracking,
58
58
  slackContextKey,
59
59
  updateSlackMessageRecord
60
- } from "./cli-awwphhcs.js";
60
+ } from "./cli-47m6dkd3.js";
61
61
  import {
62
62
  init_types,
63
63
  isTerminalTaskStatus
64
- } from "./cli-h0wdadsx.js";
64
+ } from "./cli-4198qc9v.js";
65
65
  import {
66
66
  getAppUrl,
67
67
  init_constants
@@ -52838,6 +52838,21 @@ async function getTaskCitations(taskId) {
52838
52838
  WHERE task_id = ? ORDER BY citation_index`, [taskId]);
52839
52839
  return rows.map((row) => ({ ...row, general: row.general === 1 }));
52840
52840
  }
52841
+ var TASK_ID_CHUNK = 500;
52842
+ async function getTaskCitationsForTasks(taskIds) {
52843
+ const ids = [...new Set(taskIds)];
52844
+ const byTask = new Map(ids.map((id) => [id, []]));
52845
+ for (let i = 0;i < ids.length; i += TASK_ID_CHUNK) {
52846
+ const chunk = ids.slice(i, i + TASK_ID_CHUNK);
52847
+ const rows = await getDbClient().query(`SELECT task_id AS taskId, citation_index AS "index", kind, ref, label, quote,
52848
+ resolved_url AS resolvedUrl, verified, general FROM task_citations
52849
+ WHERE task_id IN (${chunk.map(() => "?").join(",")}) ORDER BY task_id, citation_index`, chunk);
52850
+ for (const { taskId, ...row } of rows) {
52851
+ byTask.get(taskId)?.push({ ...row, general: row.general === 1 });
52852
+ }
52853
+ }
52854
+ return byTask;
52855
+ }
52841
52856
  async function hasTaskCitationCheckRefusal(taskId) {
52842
52857
  return Boolean(await getDbClient().get("SELECT id FROM agent_log WHERE taskId = ? AND eventType = 'task_citation_check_refused' LIMIT 1", [taskId]));
52843
52858
  }
@@ -52874,17 +52889,25 @@ var realRecordSessionCost;
52874
52889
  var realRecordDbRetentionSweep;
52875
52890
  var realRecordDbRetentionStatement;
52876
52891
  var realRecordSlackReactionInvalidName;
52877
- function isPollTracingEnabled() {
52878
- const v = (process.env.OTEL_TRACE_POLL ?? "").trim().toLowerCase();
52892
+ function envFlagEnabled(name) {
52893
+ const v = (process.env[name] ?? "").trim().toLowerCase();
52879
52894
  return v === "1" || v === "true" || v === "yes" || v === "on";
52880
52895
  }
52896
+ function isPollTracingEnabled() {
52897
+ return envFlagEnabled("OTEL_TRACE_POLL");
52898
+ }
52899
+ function isApiLogExportEnabled() {
52900
+ return envFlagEnabled("OTEL_EXPORT_API_LOGS");
52901
+ }
52881
52902
  async function initOtel(serviceRole = process.env.AGENT_ROLE || "api") {
52882
52903
  if (!otelConfigured() || initialized)
52883
52904
  return;
52884
52905
  initialized = true;
52885
52906
  try {
52886
- const impl = await import("./otel-impl-2ez6xk57.js");
52887
- await impl.boot(serviceRole);
52907
+ const impl = await import("./otel-impl-9mz73q65.js");
52908
+ await impl.boot(serviceRole, {
52909
+ exportConsoleLogs: serviceRole === "api" && isApiLogExportEnabled()
52910
+ });
52888
52911
  realWithSpan = impl.withSpan;
52889
52912
  realStartSpan = impl.startSpan;
52890
52913
  realWithRemoteContext = impl.withRemoteContext;
@@ -52960,6 +52983,15 @@ init_db();
52960
52983
  init_config();
52961
52984
  var import_bolt = __toESM(require_dist7(), 1);
52962
52985
 
52986
+ // src/slack/connection-state.ts
52987
+ var state = "disconnected";
52988
+ function getSlackConnectionState() {
52989
+ return state;
52990
+ }
52991
+ function setSlackConnectionState(next) {
52992
+ state = next;
52993
+ }
52994
+
52963
52995
  // src/slack/socket-mode-guard.ts
52964
52996
  init_env_flag();
52965
52997
  var SLACK_DEV_SOCKET_MODE_OPT_IN = "SLACK_ALLOW_DEV_SOCKET_MODE";
@@ -54243,7 +54275,23 @@ function stopTaskWatcher() {
54243
54275
 
54244
54276
  // src/slack/app.ts
54245
54277
  var app = null;
54278
+ var receiver = null;
54246
54279
  var initialized2 = false;
54280
+ var SOCKET_EVENT_STATES = {
54281
+ connecting: "connecting",
54282
+ reconnecting: "connecting",
54283
+ connected: "connected",
54284
+ disconnecting: "disconnected",
54285
+ disconnected: "disconnected"
54286
+ };
54287
+ function trackConnectionState(owner) {
54288
+ for (const [event, state2] of Object.entries(SOCKET_EVENT_STATES)) {
54289
+ owner.client.on(event, () => {
54290
+ if (receiver === owner)
54291
+ setSlackConnectionState(state2);
54292
+ });
54293
+ }
54294
+ }
54247
54295
  function getSlackApp() {
54248
54296
  return app;
54249
54297
  }
@@ -54277,23 +54325,31 @@ async function initSlackApp() {
54277
54325
  return null;
54278
54326
  }
54279
54327
  const slackApiUrl = process.env.SLACK_API_URL;
54328
+ const clientOptions = slackApiUrl ? { slackApiUrl } : undefined;
54329
+ const logLevel = import_bolt.LogLevel.DEBUG;
54330
+ receiver = new import_bolt.SocketModeReceiver({
54331
+ appToken,
54332
+ logLevel,
54333
+ installerOptions: clientOptions ? { clientOptions } : {}
54334
+ });
54335
+ trackConnectionState(receiver);
54280
54336
  app = new import_bolt.App({
54281
54337
  token: botToken,
54282
- appToken,
54338
+ receiver,
54283
54339
  socketMode: true,
54284
- logLevel: import_bolt.LogLevel.DEBUG,
54285
- ...slackApiUrl ? { clientOptions: { slackApiUrl } } : {}
54340
+ logLevel,
54341
+ ...clientOptions ? { clientOptions } : {}
54286
54342
  });
54287
54343
  initialized2 = true;
54288
- const { registerMessageHandler } = await import("./handlers-egfhr351.js");
54289
- const { registerCommandHandler } = await import("./commands-hxy2y2sp.js");
54290
- const { registerActionHandlers } = await import("./actions-9rrg0zxm.js");
54291
- const { registerWorkObjectHandlers } = await import("./work-objects-ezmggdne.js");
54344
+ const { registerMessageHandler } = await import("./handlers-aqcedbyb.js");
54345
+ const { registerCommandHandler } = await import("./commands-e3bn0p75.js");
54346
+ const { registerActionHandlers } = await import("./actions-p9hz5yat.js");
54347
+ const { registerWorkObjectHandlers } = await import("./work-objects-b76x7deb.js");
54292
54348
  registerMessageHandler(app);
54293
54349
  registerCommandHandler(app);
54294
54350
  registerActionHandlers(app);
54295
54351
  registerWorkObjectHandlers(app);
54296
- const { createAssistant } = await import("./assistant-zegamy48.js");
54352
+ const { createAssistant } = await import("./assistant-wydfqkb3.js");
54297
54353
  app.assistant(createAssistant());
54298
54354
  return app;
54299
54355
  }
@@ -54302,7 +54358,7 @@ async function startSlackApp() {
54302
54358
  await initSlackApp();
54303
54359
  }
54304
54360
  if (app) {
54305
- const { isSlackRenderV2Enabled: isSlackRenderV2Enabled2 } = await import("./render-v2-f026j6c4.js");
54361
+ const { isSlackRenderV2Enabled: isSlackRenderV2Enabled2 } = await import("./render-v2-gryrh9h8.js");
54306
54362
  if (isSlackRenderV2Enabled2())
54307
54363
  await ensureSlackRenderV2Activation();
54308
54364
  await app.start();
@@ -54320,6 +54376,8 @@ async function stopSlackApp() {
54320
54376
  app = null;
54321
54377
  console.log("[Slack] Bot disconnected");
54322
54378
  }
54379
+ receiver = null;
54380
+ setSlackConnectionState("disconnected");
54323
54381
  initialized2 = false;
54324
54382
  }
54325
54383
 
@@ -55140,9 +55198,9 @@ async function conclusionTimeoutLines(ask, closure) {
55140
55198
  }
55141
55199
  return lines;
55142
55200
  }
55143
- async function askConclusionContent(task, closure, state, slackReplySent) {
55144
- const body = state === "timedOut" && !isOutcomeStatus(task.status) ? "⏳ **Still in progress**" : await outcomeContent(task, slackReplySent);
55145
- if (closure.length === 0 && state !== "timedOut")
55201
+ async function askConclusionContent(task, closure, state2, slackReplySent) {
55202
+ const body = state2 === "timedOut" && !isOutcomeStatus(task.status) ? "⏳ **Still in progress**" : await outcomeContent(task, slackReplySent);
55203
+ if (closure.length === 0 && state2 !== "timedOut")
55146
55204
  return body;
55147
55205
  const resultsLines = await conclusionResultsLines(closure);
55148
55206
  const sections = [body];
@@ -55150,7 +55208,7 @@ async function askConclusionContent(task, closure, state, slackReplySent) {
55150
55208
  sections.push(`**Results**
55151
55209
  ${resultsLines.join(`
55152
55210
  `)}`);
55153
- if (state === "timedOut") {
55211
+ if (state2 === "timedOut") {
55154
55212
  sections.unshift("⚠️ **Concluded with unfinished work**");
55155
55213
  const unfinishedLines = await conclusionTimeoutLines(task, closure);
55156
55214
  if (unfinishedLines.length > 0)
@@ -55161,8 +55219,8 @@ ${resultsLines.join(`
55161
55219
 
55162
55220
  `);
55163
55221
  }
55164
- function conclusionReactionChoice(state, ask, closure) {
55165
- if (state === "timedOut")
55222
+ function conclusionReactionChoice(state2, ask, closure) {
55223
+ if (state2 === "timedOut")
55166
55224
  return { name: "warning" };
55167
55225
  const event = [ask, ...closure].some((member) => member.status === "failed") ? "failed" : "completed";
55168
55226
  return { name: reactionName(event), event };
@@ -55680,25 +55738,25 @@ async function processSlackRenderV2() {
55680
55738
  }
55681
55739
  if (childCardPending)
55682
55740
  continue;
55683
- const state = closureState(task, closure, new Date, settleSec, timeoutMin);
55684
- if (state === "open")
55741
+ const state2 = closureState(task, closure, new Date, settleSec, timeoutMin);
55742
+ if (state2 === "open")
55685
55743
  continue;
55686
55744
  if (!await checkOutcomeDeliveryGate(task, card))
55687
55745
  continue;
55688
55746
  try {
55689
55747
  const outcome = await streamOutcomeCard(task, tree, {
55690
- buildContent: (_t, slackReplySent) => askConclusionContent(task, closure, state, slackReplySent),
55691
- conclusionKind: state === "timedOut" ? "timeout" : "complete"
55748
+ buildContent: (_t, slackReplySent) => askConclusionContent(task, closure, state2, slackReplySent),
55749
+ conclusionKind: state2 === "timedOut" ? "timeout" : "complete"
55692
55750
  });
55693
55751
  if (outcome) {
55694
55752
  noteOutcomeDeliverySuccess(task.id);
55695
55753
  const app3 = getSlackApp();
55696
55754
  if (app3 && task.slackChannelId && task.slackTriggerMessageTs) {
55697
- const reaction = conclusionReactionChoice(state, task, closure);
55755
+ const reaction = conclusionReactionChoice(state2, task, closure);
55698
55756
  await finalizeSlackMessageReaction(app3.client, task.slackChannelId, task.slackTriggerMessageTs, reaction.name, reaction.event);
55699
55757
  await finalizeSlackSteerReactions([task], () => reaction);
55700
55758
  }
55701
- await recordSlackDelivery(task, outcome, state === "timedOut" ? "conclusion_timeout" : "conclusion");
55759
+ await recordSlackDelivery(task, outcome, state2 === "timedOut" ? "conclusion_timeout" : "conclusion");
55702
55760
  }
55703
55761
  outcomeCreated ||= !!outcome;
55704
55762
  } catch (error) {
@@ -55727,4 +55785,4 @@ function _resetSlackRenderV2ForTests() {
55727
55785
  }
55728
55786
  var _noteOutcomeDeliveryFailureForTests = noteOutcomeDeliveryFailure;
55729
55787
 
55730
- export { initialize, ensure, require_dist7 as require_dist, isPollTracingEnabled, initOtel, withSpan, startSpan, withSpanContext, withRemoteContext, injectTraceContext, recordSessionCost, recordDbRetentionSweep, recordDbRetentionStatement, slackTaskOutput, ackSlackMessage, getTaskLink, getTaskUrl, markdownToSlack, buildCaptionBlock, buildCancelledBlocks, buildBufferFlushBlocks, buildTreeBlocks, taskCitationIssues, stripInvalidTaskCitations, taskCitationSourceGroups, renderTaskCitations, taskCitationWarnings, MAX_TASK_CITATIONS, CitationInputSchema, TaskCitationSchema, upsertTaskCitations, getTaskCitations, hasTaskCitationCheckRefusal, getAgentDisplayName, getAgentEmoji, isSlackRenderV2Enabled, isSlackDelegationEnabled, callSlackWithRetry, formatV2Duration, renderThreadTree, ensureSlackThreadTree, withStatusLead, childOutcomeContent, streamOutcomeCard, slackErrorCode2 as slackErrorCode, isTerminalSlackError, describeSlackError, slackErrorSummary, refreshResolvedDeferralCards, processSlackRenderV2, _resetSlackRenderV2ForTests, _noteOutcomeDeliveryFailureForTests, registerTreeMessage, getSlackApp, initSlackApp, startSlackApp, stopSlackApp };
55788
+ export { initialize, ensure, require_dist7 as require_dist, getSlackConnectionState, isPollTracingEnabled, initOtel, withSpan, startSpan, withSpanContext, withRemoteContext, injectTraceContext, recordSessionCost, recordDbRetentionSweep, recordDbRetentionStatement, slackTaskOutput, ackSlackMessage, getTaskLink, getTaskUrl, markdownToSlack, buildCaptionBlock, buildCancelledBlocks, buildBufferFlushBlocks, buildTreeBlocks, taskCitationIssues, stripInvalidTaskCitations, taskCitationSourceGroups, renderTaskCitations, taskCitationWarnings, MAX_TASK_CITATIONS, CitationInputSchema, TaskCitationSchema, upsertTaskCitations, getTaskCitations, getTaskCitationsForTasks, hasTaskCitationCheckRefusal, getAgentDisplayName, getAgentEmoji, isSlackRenderV2Enabled, isSlackDelegationEnabled, callSlackWithRetry, formatV2Duration, renderThreadTree, ensureSlackThreadTree, withStatusLead, childOutcomeContent, streamOutcomeCard, slackErrorCode2 as slackErrorCode, isTerminalSlackError, describeSlackError, slackErrorSummary, refreshResolvedDeferralCards, processSlackRenderV2, _resetSlackRenderV2ForTests, _noteOutcomeDeliveryFailureForTests, registerTreeMessage, getSlackApp, initSlackApp, startSlackApp, stopSlackApp };
@@ -3,7 +3,10 @@ import {
3
3
  } from "./cli-tt9k8r35.js";
4
4
 
5
5
  // src/prompts/memories.ts
6
- var SIMILARITY_THRESHOLD = 0.4;
6
+ var SIMILARITY_THRESHOLD = 0.55;
7
+ function memoryRelevance(memory) {
8
+ return memory.rawSimilarity ?? memory.similarity;
9
+ }
7
10
  var RATE_TOOL_HINT = `
8
11
 
9
12
  When a memory above genuinely helps you solve this task — or actively
@@ -11,7 +14,7 @@ misleads you — call \`memory_rate\` with the memory id and useful=true/false.
11
14
  This trains the swarm to surface better memories next time. Use sparingly:
12
15
  2-5 ratings per task is plenty.`;
13
16
  function renderMemoriesPrompt(memories) {
14
- const useful = memories.filter((m) => m.similarity > SIMILARITY_THRESHOLD);
17
+ const useful = memories.filter((m) => memoryRelevance(m) > SIMILARITY_THRESHOLD);
15
18
  if (useful.length === 0)
16
19
  return null;
17
20
  const memoryContext = useful.map((m) => `- **${m.name}** (id: ${m.id}): ${m.content.substring(0, 300)}`).join(`
@@ -172,4 +175,4 @@ function writeSkillsToFilesystem(entries, harnessType = "all", home) {
172
175
  return { synced, removed, errors };
173
176
  }
174
177
 
175
- export { SIMILARITY_THRESHOLD, renderMemoriesPrompt, writeSkillsToFilesystem };
178
+ export { SIMILARITY_THRESHOLD, memoryRelevance, renderMemoriesPrompt, writeSkillsToFilesystem };
@@ -13,7 +13,7 @@ import {
13
13
  parseClaudeMdPendingRecord,
14
14
  planClaudeMdSync,
15
15
  withFileLock
16
- } from "./cli-nbp6m6gp.js";
16
+ } from "./cli-xberxa1r.js";
17
17
  import {
18
18
  init_secret_scrubber,
19
19
  scrubSecrets
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveSlackUserId,
3
3
  rewriteSlackMentions
4
- } from "./cli-74h6f2bp.js";
4
+ } from "./cli-8qmme6vd.js";
5
5
  import {
6
6
  bufferedFileFailures,
7
7
  buildEffectiveText,
@@ -11,7 +11,7 @@ import {
11
11
  fetchSlackFiles,
12
12
  findUserByExternalId,
13
13
  notifySlackFileFailures
14
- } from "./cli-01vfmq8c.js";
14
+ } from "./cli-ftfvggzx.js";
15
15
  import {
16
16
  buildBufferFlushBlocks,
17
17
  ensureSlackThreadTree,
@@ -20,7 +20,7 @@ import {
20
20
  getSlackApp,
21
21
  isSlackRenderV2Enabled,
22
22
  registerTreeMessage
23
- } from "./cli-9p33cz9h.js";
23
+ } from "./cli-j57qkrpq.js";
24
24
  import {
25
25
  createLogEntry,
26
26
  getAgentById,
@@ -33,7 +33,7 @@ import {
33
33
  init_steering,
34
34
  requestSteering,
35
35
  slackContextKey
36
- } from "./cli-awwphhcs.js";
36
+ } from "./cli-47m6dkd3.js";
37
37
  import {
38
38
  init_steering_enabled,
39
39
  isSteeringEnabled