@desplega.ai/agent-swarm 1.145.0 → 1.147.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 (221) hide show
  1. package/README.md +2 -1
  2. package/dist/{acp-adapter-580t41c0.js → acp-adapter-9n319wqc.js} +61 -6
  3. package/dist/{actions-m662tjng.js → actions-2vxqvpr9.js} +9 -8
  4. package/dist/{app-zb3rndm8.js → app-w066xfy0.js} +6 -5
  5. package/dist/assistant-kt31dj2h.js +236 -0
  6. package/dist/{boot-reembed-072x00vn.js → boot-reembed-az5rassp.js} +7 -6
  7. package/dist/{boot-reembed-65zz2smt.js → boot-reembed-j3mm3rfz.js} +8 -7
  8. package/dist/{boot-scrub-logs-yz0ams04.js → boot-scrub-logs-b6h54817.js} +4 -4
  9. package/dist/{claude-adapter-paj270y2.js → claude-adapter-w1z04ann.js} +8 -6
  10. package/dist/{claude-managed-setup-w619jncn.js → claude-managed-setup-f5pmsyrp.js} +24 -3
  11. package/dist/{claude-sdk-session-swt80j9z.js → claude-sdk-session-f0cc1kec.js} +8 -6
  12. package/dist/{cli-dt553ktb.js → cli-0b6y7kxm.js} +1 -1
  13. package/dist/{cli-bxdhw615.js → cli-12fz972k.js} +4 -4
  14. package/dist/{cli-s2f20r5w.js → cli-1th1728g.js} +2 -2
  15. package/dist/{cli-rs6ec3b9.js → cli-3tgwnf43.js} +3 -3
  16. package/dist/{cli-gxnzc6wh.js → cli-4nr988h6.js} +1 -1
  17. package/dist/{cli-axs8e6d4.js → cli-53s590z8.js} +1 -1
  18. package/dist/{cli-ygbjp3z8.js → cli-54wwve05.js} +5 -4
  19. package/dist/{cli-v0asr5yv.js → cli-719k9j2c.js} +2 -2
  20. package/dist/{cli-anktweqr.js → cli-89xfd7f9.js} +21 -47
  21. package/dist/{cli-q34a0e10.js → cli-8v0g1yc8.js} +1 -1
  22. package/dist/cli-9d8ntetj.js +42 -0
  23. package/dist/{cli-z9fprcrf.js → cli-atcve9y8.js} +881 -738
  24. package/dist/{cli-jmb7g47h.js → cli-b5bq9crk.js} +14 -31
  25. package/dist/cli-d8brzxjb.js +190 -0
  26. package/dist/{cli-gzky0gkr.js → cli-de14znh8.js} +2 -2
  27. package/dist/{cli-xytwff7f.js → cli-dttph1bw.js} +2 -2
  28. package/dist/cli-ep19k3mb.js +19 -0
  29. package/dist/{cli-m1xa8be7.js → cli-f146mn5s.js} +7 -50
  30. package/dist/{cli-1fj0chdk.js → cli-f7dsy61y.js} +5 -3
  31. package/dist/{cli-f567d5c1.js → cli-ftht3zzj.js} +2782 -2589
  32. package/dist/{cli-a0g1gbt5.js → cli-hbv0kq6w.js} +2 -2
  33. package/dist/{cli-fhsz3twr.js → cli-jsp14b6c.js} +171 -1
  34. package/dist/{cli-7fnkj1hj.js → cli-kpv03zhj.js} +21 -17
  35. package/dist/{cli-m4j6trn4.js → cli-m8yrsg97.js} +2 -2
  36. package/dist/cli-m9sxbkhm.js +779 -0
  37. package/dist/cli-mmemxxdc.js +823 -0
  38. package/dist/{cli-tqtvj5pt.js → cli-n8508nre.js} +1 -1
  39. package/dist/{cli-z96t0thj.js → cli-p1d5b073.js} +37 -2
  40. package/dist/{cli-gh8y8f36.js → cli-rw51bq3j.js} +13 -10
  41. package/dist/{cli-59ej1c07.js → cli-smby5m17.js} +7 -6
  42. package/dist/{cli-65vqzz3v.js → cli-tzvk9haz.js} +94 -372
  43. package/dist/{cli-dc9k2ba9.js → cli-w9kb3bk1.js} +1 -1
  44. package/dist/{cli-kpev657q.js → cli-y6b6fb76.js} +25 -3
  45. package/dist/{cli-123q2get.js → cli-yz3djrm0.js} +9 -9
  46. package/dist/{cli-wvp6bvy4.js → cli-zhjmqxzh.js} +1 -1
  47. package/dist/cli.js +13 -13
  48. package/dist/{codex-adapter-k98vaw2r.js → codex-adapter-zw4dwsx7.js} +2 -2
  49. package/dist/{codex-hook-9pf19cks.js → codex-hook-bw8p5nh4.js} +2 -2
  50. package/dist/{codex-session-runner-tngtphx7.js → codex-session-runner-k981s65v.js} +2 -2
  51. package/dist/{commands-y8nbr3fv.js → commands-sykrxx7e.js} +4 -4
  52. package/dist/{db-30p4h2t1.js → db-sfbsc8wt.js} +6 -4
  53. package/dist/handlers-0aspcejm.js +603 -0
  54. package/dist/{hook-dcw4jfbj.js → hook-4nvqj2sb.js} +7 -5
  55. package/dist/{hook-21jexvfx.js → hook-hxccs7m5.js} +24 -49
  56. package/dist/{http-r4kq5g8d.js → http-y06z517d.js} +230 -94
  57. package/dist/{index-q3qja6ta.js → index-hssww7kj.js} +15 -14
  58. package/dist/{index-gay66b9w.js → index-k8znfx0z.js} +13 -12
  59. package/dist/{index-53zyht4z.js → index-tce1rss4.js} +371 -110
  60. package/dist/{index-nqvf26za.js → index-x5j894zf.js} +14 -13
  61. package/dist/{keepalive-xs8fa55y.js → keepalive-w733ax66.js} +6 -6
  62. package/dist/{lead-d9m2t4s0.js → lead-75bjqa9d.js} +29 -27
  63. package/dist/{maintenance-3zh82g6z.js → maintenance-w4f1zjck.js} +8 -7
  64. package/dist/{oauth-refresh-sweep-03snsye5.js → oauth-refresh-sweep-wdetky26.js} +5 -5
  65. package/dist/{onboard-0cg1925x.js → onboard-bb5net8s.js} +2 -2
  66. package/dist/{otel-impl-0ab95z27.js → otel-impl-0w7c14ap.js} +1 -1
  67. package/dist/{pi-mono-adapter-dtkz4e7j.js → pi-mono-adapter-2has4gnp.js} +12 -2
  68. package/dist/{pricing-refresh-e5jhzz4j.js → pricing-refresh-9nzsrgcq.js} +6 -6
  69. package/dist/{rbac-roles-p1mf40z3.js → rbac-roles-r3hqjp09.js} +5 -5
  70. package/dist/{rbac-roles-2w3cmrkc.js → rbac-roles-z1jrffbt.js} +4 -4
  71. package/dist/{registry-9kdck5ye.js → registry-v5wytg0s.js} +1 -2
  72. package/dist/{render-v2-xhawry3k.js → render-v2-vbr89fnb.js} +6 -5
  73. package/dist/{seed-pricing-t223sw91.js → seed-pricing-g62hy1pk.js} +7 -5
  74. package/dist/{setup-zcs0rce7.js → setup-gnfqnptp.js} +2 -2
  75. package/dist/{worker-qnp2ka62.js → worker-kznxp4qm.js} +29 -27
  76. package/openapi.json +263 -12
  77. package/package.json +1 -1
  78. package/plugin/commands/start-worker.md +4 -9
  79. package/plugin/pi-skills/start-worker/SKILL.md +4 -9
  80. package/src/be/db/agents.ts +556 -0
  81. package/src/be/db/context-versions.ts +117 -0
  82. package/src/be/db/runtime.ts +406 -0
  83. package/src/be/db/tasks/read.ts +1167 -0
  84. package/src/be/db/tasks/write.ts +953 -0
  85. package/src/be/db.ts +584 -3429
  86. package/src/be/migrations/147_scheduled_tasks_parent_task.sql +7 -0
  87. package/src/be/migrations/148_pages_svg.sql +123 -0
  88. package/src/be/migrations/149_session_tokens.sql +24 -0
  89. package/src/be/scripts/typecheck.ts +1 -0
  90. package/src/be/seed-pricing.ts +13 -8
  91. package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
  92. package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
  93. package/src/be/seed-scripts/catalog/star-history-refresh.ts +101 -0
  94. package/src/be/seed-scripts/catalog/star-history-renderer.ts +119 -0
  95. package/src/be/seed-scripts/index.ts +17 -0
  96. package/src/be/seed-skills/index.ts +14 -0
  97. package/src/be/swarm-config-guard.ts +5 -2
  98. package/src/be/task-attachment-store.ts +70 -0
  99. package/src/be/users.ts +77 -0
  100. package/src/commands/attachments-section.ts +37 -0
  101. package/src/commands/claude-managed-setup.ts +45 -3
  102. package/src/commands/claude-md-session.ts +408 -0
  103. package/src/commands/context-preamble.ts +15 -3
  104. package/src/commands/profile-sync.ts +205 -5
  105. package/src/commands/provider-credentials.ts +60 -27
  106. package/src/commands/runner.ts +63 -58
  107. package/src/commands/templates.ts +25 -2
  108. package/src/hooks/hook.ts +26 -67
  109. package/src/http/agents.ts +40 -1
  110. package/src/http/auth.ts +13 -1
  111. package/src/http/fs.ts +21 -51
  112. package/src/http/index.ts +2 -0
  113. package/src/http/mcp.ts +32 -0
  114. package/src/http/pages-public.ts +20 -4
  115. package/src/http/pages.ts +11 -3
  116. package/src/http/poll.ts +4 -0
  117. package/src/http/repos.ts +3 -3
  118. package/src/http/sessions.ts +82 -0
  119. package/src/http/tasks.ts +10 -2
  120. package/src/http/utils.ts +79 -1
  121. package/src/prompts/session-templates.ts +12 -8
  122. package/src/providers/acp-adapter.ts +62 -8
  123. package/src/providers/pi-mono-adapter.ts +23 -6
  124. package/src/providers/pricing-sources.md +11 -0
  125. package/src/scheduler/scheduler.test.ts +49 -2
  126. package/src/scheduler/scheduler.ts +4 -0
  127. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  128. package/src/scripts-runtime/types/stdlib.d.ts +8 -0
  129. package/src/scripts-runtime/types/swarm-sdk.d.ts +8 -0
  130. package/src/server.ts +2 -0
  131. package/src/slack/assistant.ts +87 -46
  132. package/src/slack/handlers.test.ts +1 -3
  133. package/src/slack/handlers.ts +102 -87
  134. package/src/slack/inbound-files.ts +466 -0
  135. package/src/slack/templates.ts +14 -0
  136. package/src/tasks/task-terminal-effects.ts +158 -0
  137. package/src/tests/acp-adapter.test.ts +369 -117
  138. package/src/tests/budget-claim-gate.test.ts +1 -0
  139. package/src/tests/build-pi-skills.test.ts +5 -7
  140. package/src/tests/claude-managed-setup.test.ts +52 -4
  141. package/src/tests/claude-md-session.test.ts +603 -0
  142. package/src/tests/codex-skill-resolver.test.ts +19 -0
  143. package/src/tests/context-versioning.test.ts +107 -0
  144. package/src/tests/cors-allowlist.test.ts +309 -0
  145. package/src/tests/credential-check.test.ts +157 -14
  146. package/src/tests/db-agents.test.ts +91 -0
  147. package/src/tests/db-context-versions.test.ts +37 -0
  148. package/src/tests/db-extraction-contract.test.ts +45 -0
  149. package/src/tests/db-runtime.test.ts +70 -0
  150. package/src/tests/db-task-read-contract.test.ts +624 -0
  151. package/src/tests/db-task-write-contract.test.ts +653 -0
  152. package/src/tests/db-tasks-read.test.ts +183 -0
  153. package/src/tests/db-tasks-write.test.ts +230 -0
  154. package/src/tests/defer-task.test.ts +389 -0
  155. package/src/tests/docs-index-footprint.test.js +2 -2
  156. package/src/tests/e2e-visuals-stage.test.ts +151 -0
  157. package/src/tests/file-lock.test.ts +144 -0
  158. package/src/tests/fixtures/file-lock-holder.ts +13 -0
  159. package/src/tests/fixtures/hold-file-lock.ts +25 -0
  160. package/src/tests/heartbeat-expiry.test.ts +188 -0
  161. package/src/tests/http-api-integration.test.ts +78 -1
  162. package/src/tests/pages-public-html.test.ts +43 -0
  163. package/src/tests/pages-svg-migration.test.ts +42 -0
  164. package/src/tests/preload.ts +4 -1
  165. package/src/tests/profile-sync-warning.test.ts +16 -0
  166. package/src/tests/profile-sync.test.ts +126 -0
  167. package/src/tests/prompt-template-session.test.ts +20 -4
  168. package/src/tests/provider-registration.test.ts +93 -0
  169. package/src/tests/rbac-e2e-helpers.test.ts +53 -0
  170. package/src/tests/rbac-e2e-helpers.ts +19 -2
  171. package/src/tests/reload-config.test.ts +26 -0
  172. package/src/tests/routing-affinity-inventory.test.ts +1 -1
  173. package/src/tests/runner-attachments-section.test.ts +22 -2
  174. package/src/tests/runner-context-preamble.test.ts +30 -0
  175. package/src/tests/runner-deployment-resume.test.ts +107 -0
  176. package/src/tests/runner-repo-autostash.test.ts +12 -0
  177. package/src/tests/script-connections.test.ts +4 -0
  178. package/src/tests/seed-scripts.test.ts +2 -2
  179. package/src/tests/session-tokens.test.ts +279 -0
  180. package/src/tests/slack-file-tools-attachments.test.ts +408 -0
  181. package/src/tests/slack-inbound-files.test.ts +847 -0
  182. package/src/tests/star-history-refresh.test.ts +102 -0
  183. package/src/tests/swarm-config-reserved-keys.test.ts +21 -0
  184. package/src/tests/swarm-repos.test.ts +20 -0
  185. package/src/tests/tool-annotations.test.ts +4 -3
  186. package/src/tests/ui-logs-parser.test.ts +176 -0
  187. package/src/tools/create-page.ts +4 -2
  188. package/src/tools/defer-task.ts +239 -0
  189. package/src/tools/repos/update-repo.ts +2 -2
  190. package/src/tools/schedules/create-schedule.ts +1 -0
  191. package/src/tools/schedules/list-schedules.ts +1 -0
  192. package/src/tools/schedules/patch-schedule.ts +1 -0
  193. package/src/tools/schedules/update-schedule.ts +1 -0
  194. package/src/tools/slack-download-file.ts +60 -29
  195. package/src/tools/slack-read.ts +73 -32
  196. package/src/tools/store-progress.ts +16 -146
  197. package/src/tools/tool-config.ts +1 -0
  198. package/src/tools/utils.ts +21 -0
  199. package/src/types.ts +37 -4
  200. package/src/utils/acp-session-token.ts +56 -0
  201. package/src/utils/file-lock.ts +111 -0
  202. package/src/utils/heartbeat-expiry.ts +78 -0
  203. package/src/utils/request-auth-context.ts +2 -0
  204. package/src/utils/task-attachment-links.ts +22 -0
  205. package/templates/skills/code-quality/content.md +8 -5
  206. package/templates/skills/download-task-attachment/content.md +2 -1
  207. package/{plugin/pi-skills → templates/skills}/review-offered-task/SKILL.md +5 -5
  208. package/templates/skills/review-offered-task/config.json +14 -0
  209. package/{plugin/commands/review-offered-task.md → templates/skills/review-offered-task/content.md} +3 -8
  210. package/templates/skills/scheduling/content.md +4 -0
  211. package/templates/skills/slack-interaction/content.md +2 -2
  212. package/templates/skills/work-on-task/SKILL.md +16 -0
  213. package/templates/skills/work-on-task/config.json +14 -0
  214. package/templates/skills/work-on-task/content.md +11 -0
  215. package/dist/assistant-0qt42nzg.js +0 -212
  216. package/dist/cli-fs1kkqgr.js +0 -317
  217. package/dist/cli-jnf5zghe.js +0 -269
  218. package/dist/cli-n1q8q14d.js +0 -177
  219. package/dist/handlers-yfp1qn81.js +0 -592
  220. package/plugin/commands/work-on-task.md +0 -39
  221. package/plugin/pi-skills/work-on-task/SKILL.md +0 -39
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "Agent Swarm API",
5
- "version": "1.145.0",
5
+ "version": "1.147.0",
6
6
  "description": "Multi-agent orchestration API for Claude Code, Codex, and Gemini CLI. Enables task distribution, agent communication, and service discovery.\n\nMCP tools are documented separately in [MCP.md](./MCP.md)."
7
7
  },
8
8
  "servers": [
@@ -1463,6 +1463,7 @@
1463
1463
  "system.error",
1464
1464
  "system.profile_sync_rejected",
1465
1465
  "system.profile_sync_reconciled",
1466
+ "system.profile_sync_conflict",
1466
1467
  "script.global_upsert",
1467
1468
  "schedule.deleted"
1468
1469
  ]
@@ -2290,7 +2291,8 @@
2290
2291
  "type": "string",
2291
2292
  "enum": [
2292
2293
  "text/html",
2293
- "application/json"
2294
+ "application/json",
2295
+ "image/svg+xml"
2294
2296
  ]
2295
2297
  },
2296
2298
  "authMode": {
@@ -2385,7 +2387,8 @@
2385
2387
  "type": "string",
2386
2388
  "enum": [
2387
2389
  "text/html",
2388
- "application/json"
2390
+ "application/json",
2391
+ "image/svg+xml"
2389
2392
  ]
2390
2393
  },
2391
2394
  "authMode": {
@@ -2759,6 +2762,44 @@
2759
2762
  "review"
2760
2763
  ]
2761
2764
  },
2765
+ "RepoGuidelinesInput": {
2766
+ "type": [
2767
+ "object",
2768
+ "null"
2769
+ ],
2770
+ "properties": {
2771
+ "prChecks": {
2772
+ "type": "array",
2773
+ "items": {
2774
+ "type": "string"
2775
+ },
2776
+ "maxItems": 50
2777
+ },
2778
+ "mergeChecks": {
2779
+ "type": "array",
2780
+ "items": {
2781
+ "type": "string"
2782
+ },
2783
+ "maxItems": 50
2784
+ },
2785
+ "allowMerge": {
2786
+ "type": "boolean",
2787
+ "default": false
2788
+ },
2789
+ "review": {
2790
+ "type": "array",
2791
+ "items": {
2792
+ "type": "string"
2793
+ },
2794
+ "maxItems": 50
2795
+ }
2796
+ },
2797
+ "required": [
2798
+ "prChecks",
2799
+ "mergeChecks",
2800
+ "review"
2801
+ ]
2802
+ },
2762
2803
  "ScriptRun": {
2763
2804
  "type": "object",
2764
2805
  "properties": {
@@ -9982,6 +10023,35 @@
9982
10023
  },
9983
10024
  "changeReason": {
9984
10025
  "type": "string"
10026
+ },
10027
+ "expectedHashes": {
10028
+ "type": "object",
10029
+ "properties": {
10030
+ "soulMd": {
10031
+ "type": "string",
10032
+ "pattern": "^[0-9a-f]{64}$"
10033
+ },
10034
+ "identityMd": {
10035
+ "type": "string",
10036
+ "pattern": "^[0-9a-f]{64}$"
10037
+ },
10038
+ "toolsMd": {
10039
+ "type": "string",
10040
+ "pattern": "^[0-9a-f]{64}$"
10041
+ },
10042
+ "claudeMd": {
10043
+ "type": "string",
10044
+ "pattern": "^[0-9a-f]{64}$"
10045
+ },
10046
+ "setupScript": {
10047
+ "type": "string",
10048
+ "pattern": "^[0-9a-f]{64}$"
10049
+ },
10050
+ "heartbeatMd": {
10051
+ "type": "string",
10052
+ "pattern": "^[0-9a-f]{64}$"
10053
+ }
10054
+ }
9985
10055
  }
9986
10056
  }
9987
10057
  }
@@ -14920,6 +14990,7 @@
14920
14990
  "system.error",
14921
14991
  "system.profile_sync_rejected",
14922
14992
  "system.profile_sync_reconciled",
14993
+ "system.profile_sync_conflict",
14923
14994
  "script.global_upsert",
14924
14995
  "schedule.deleted"
14925
14996
  ]
@@ -15067,6 +15138,7 @@
15067
15138
  "system.error",
15068
15139
  "system.profile_sync_rejected",
15069
15140
  "system.profile_sync_reconciled",
15141
+ "system.profile_sync_conflict",
15070
15142
  "script.global_upsert",
15071
15143
  "schedule.deleted"
15072
15144
  ]
@@ -15247,6 +15319,7 @@
15247
15319
  "system.error",
15248
15320
  "system.profile_sync_rejected",
15249
15321
  "system.profile_sync_reconciled",
15322
+ "system.profile_sync_conflict",
15250
15323
  "script.global_upsert",
15251
15324
  "schedule.deleted"
15252
15325
  ]
@@ -21430,7 +21503,8 @@
21430
21503
  "type": "string",
21431
21504
  "enum": [
21432
21505
  "text/html",
21433
- "application/json"
21506
+ "application/json",
21507
+ "image/svg+xml"
21434
21508
  ]
21435
21509
  },
21436
21510
  "authMode": {
@@ -21646,7 +21720,8 @@
21646
21720
  "type": "string",
21647
21721
  "enum": [
21648
21722
  "text/html",
21649
- "application/json"
21723
+ "application/json",
21724
+ "image/svg+xml"
21650
21725
  ]
21651
21726
  },
21652
21727
  "authMode": {
@@ -21838,7 +21913,8 @@
21838
21913
  "type": "string",
21839
21914
  "enum": [
21840
21915
  "text/html",
21841
- "application/json"
21916
+ "application/json",
21917
+ "image/svg+xml"
21842
21918
  ]
21843
21919
  },
21844
21920
  "authMode": {
@@ -22256,7 +22332,7 @@
22256
22332
  },
22257
22333
  "/p/{id}": {
22258
22334
  "get": {
22259
- "summary": "Render a page (HTML inline; JSON redirects to SPA)",
22335
+ "summary": "Render a page (HTML/SVG inline; JSON redirects to SPA)",
22260
22336
  "tags": [
22261
22337
  "Pages"
22262
22338
  ],
@@ -22272,7 +22348,7 @@
22272
22348
  ],
22273
22349
  "responses": {
22274
22350
  "200": {
22275
- "description": "Rendered HTML page"
22351
+ "description": "Rendered HTML page or raw SVG image"
22276
22352
  },
22277
22353
  "302": {
22278
22354
  "description": "Redirect to SPA for JSON content"
@@ -22347,7 +22423,8 @@
22347
22423
  "type": "string",
22348
22424
  "enum": [
22349
22425
  "text/html",
22350
- "application/json"
22426
+ "application/json",
22427
+ "image/svg+xml"
22351
22428
  ]
22352
22429
  },
22353
22430
  "authMode": {
@@ -23312,6 +23389,9 @@
23312
23389
  "requestedBy": {
23313
23390
  "type": "object",
23314
23391
  "properties": {
23392
+ "id": {
23393
+ "type": "string"
23394
+ },
23315
23395
  "name": {
23316
23396
  "type": "string",
23317
23397
  "minLength": 1
@@ -23396,6 +23476,9 @@
23396
23476
  "requestedBy": {
23397
23477
  "type": "object",
23398
23478
  "properties": {
23479
+ "id": {
23480
+ "type": "string"
23481
+ },
23399
23482
  "name": {
23400
23483
  "type": "string",
23401
23484
  "minLength": 1
@@ -24141,7 +24224,7 @@
24141
24224
  ]
24142
24225
  },
24143
24226
  "guidelines": {
24144
- "$ref": "#/components/schemas/RepoGuidelines"
24227
+ "$ref": "#/components/schemas/RepoGuidelinesInput"
24145
24228
  }
24146
24229
  }
24147
24230
  }
@@ -24352,7 +24435,7 @@
24352
24435
  "$ref": "#/components/schemas/RepoHooks"
24353
24436
  },
24354
24437
  "guidelines": {
24355
- "$ref": "#/components/schemas/RepoGuidelines"
24438
+ "$ref": "#/components/schemas/RepoGuidelinesInput"
24356
24439
  }
24357
24440
  },
24358
24441
  "required": [
@@ -25429,6 +25512,9 @@
25429
25512
  "createdByAgentId": {
25430
25513
  "type": "string"
25431
25514
  },
25515
+ "parentTaskId": {
25516
+ "type": "string"
25517
+ },
25432
25518
  "timezone": {
25433
25519
  "type": "string",
25434
25520
  "default": "UTC"
@@ -25783,6 +25869,9 @@
25783
25869
  "createdByAgentId": {
25784
25870
  "type": "string"
25785
25871
  },
25872
+ "parentTaskId": {
25873
+ "type": "string"
25874
+ },
25786
25875
  "timezone": {
25787
25876
  "type": "string",
25788
25877
  "default": "UTC"
@@ -25964,6 +26053,9 @@
25964
26053
  "createdByAgentId": {
25965
26054
  "type": "string"
25966
26055
  },
26056
+ "parentTaskId": {
26057
+ "type": "string"
26058
+ },
25967
26059
  "timezone": {
25968
26060
  "type": "string",
25969
26061
  "default": "UTC"
@@ -26188,6 +26280,9 @@
26188
26280
  "createdByAgentId": {
26189
26281
  "type": "string"
26190
26282
  },
26283
+ "parentTaskId": {
26284
+ "type": "string"
26285
+ },
26191
26286
  "timezone": {
26192
26287
  "type": "string",
26193
26288
  "default": "UTC"
@@ -26427,6 +26522,9 @@
26427
26522
  "createdByAgentId": {
26428
26523
  "type": "string"
26429
26524
  },
26525
+ "parentTaskId": {
26526
+ "type": "string"
26527
+ },
26430
26528
  "timezone": {
26431
26529
  "type": "string",
26432
26530
  "default": "UTC"
@@ -26786,6 +26884,9 @@
26786
26884
  "createdByAgentId": {
26787
26885
  "type": "string"
26788
26886
  },
26887
+ "parentTaskId": {
26888
+ "type": "string"
26889
+ },
26789
26890
  "timezone": {
26790
26891
  "type": "string",
26791
26892
  "default": "UTC"
@@ -27166,6 +27267,9 @@
27166
27267
  "createdByAgentId": {
27167
27268
  "type": "string"
27168
27269
  },
27270
+ "parentTaskId": {
27271
+ "type": "string"
27272
+ },
27169
27273
  "timezone": {
27170
27274
  "type": "string",
27171
27275
  "default": "UTC"
@@ -34190,6 +34294,132 @@
34190
34294
  }
34191
34295
  }
34192
34296
  },
34297
+ "/api/sessions/tokens": {
34298
+ "post": {
34299
+ "summary": "Mint an ephemeral session token for an ACP provider session",
34300
+ "description": "Returns a short-lived aseph_ bearer for use by the ACP adapter in place of the full operator key. The token expires at the requested TTL and is actively revoked when the session ends. Only the operator key may mint session tokens.",
34301
+ "tags": [
34302
+ "Sessions"
34303
+ ],
34304
+ "security": [
34305
+ {
34306
+ "bearerAuth": []
34307
+ }
34308
+ ],
34309
+ "requestBody": {
34310
+ "content": {
34311
+ "application/json": {
34312
+ "schema": {
34313
+ "type": "object",
34314
+ "properties": {
34315
+ "agentId": {
34316
+ "type": "string",
34317
+ "minLength": 1
34318
+ },
34319
+ "taskId": {
34320
+ "type": "string",
34321
+ "minLength": 1
34322
+ },
34323
+ "ttlMs": {
34324
+ "type": "integer",
34325
+ "exclusiveMinimum": 0,
34326
+ "maximum": 604800000
34327
+ }
34328
+ },
34329
+ "required": [
34330
+ "agentId",
34331
+ "taskId",
34332
+ "ttlMs"
34333
+ ]
34334
+ }
34335
+ }
34336
+ }
34337
+ },
34338
+ "responses": {
34339
+ "200": {
34340
+ "description": "Minted token plaintext (returned once) and its stable token ID",
34341
+ "content": {
34342
+ "application/json": {
34343
+ "schema": {
34344
+ "type": "object",
34345
+ "properties": {
34346
+ "tokenId": {
34347
+ "type": "string"
34348
+ },
34349
+ "plaintext": {
34350
+ "type": "string"
34351
+ }
34352
+ },
34353
+ "required": [
34354
+ "tokenId",
34355
+ "plaintext"
34356
+ ]
34357
+ }
34358
+ }
34359
+ }
34360
+ },
34361
+ "400": {
34362
+ "description": "Validation error",
34363
+ "content": {
34364
+ "application/json": {
34365
+ "schema": {
34366
+ "$ref": "#/components/schemas/ErrorResponse"
34367
+ }
34368
+ }
34369
+ }
34370
+ },
34371
+ "401": {
34372
+ "description": "Unauthorized",
34373
+ "content": {
34374
+ "application/json": {
34375
+ "schema": {
34376
+ "$ref": "#/components/schemas/ErrorResponse"
34377
+ }
34378
+ }
34379
+ }
34380
+ }
34381
+ }
34382
+ }
34383
+ },
34384
+ "/api/sessions/tokens/{tokenId}": {
34385
+ "delete": {
34386
+ "summary": "Revoke an ephemeral session token",
34387
+ "description": "Revokes an aseph_ bearer token by ID. No-op if already revoked.",
34388
+ "tags": [
34389
+ "Sessions"
34390
+ ],
34391
+ "security": [
34392
+ {
34393
+ "bearerAuth": []
34394
+ }
34395
+ ],
34396
+ "parameters": [
34397
+ {
34398
+ "schema": {
34399
+ "type": "string"
34400
+ },
34401
+ "required": true,
34402
+ "name": "tokenId",
34403
+ "in": "path"
34404
+ }
34405
+ ],
34406
+ "responses": {
34407
+ "204": {
34408
+ "description": "Token revoked (or was already revoked)"
34409
+ },
34410
+ "401": {
34411
+ "description": "Unauthorized",
34412
+ "content": {
34413
+ "application/json": {
34414
+ "schema": {
34415
+ "$ref": "#/components/schemas/ErrorResponse"
34416
+ }
34417
+ }
34418
+ }
34419
+ }
34420
+ }
34421
+ }
34422
+ },
34193
34423
  "/api/sessions": {
34194
34424
  "get": {
34195
34425
  "summary": "List recent task sessions (root tasks + chain summary)",
@@ -38802,6 +39032,9 @@
38802
39032
  "createdByAgentId": {
38803
39033
  "type": "string"
38804
39034
  },
39035
+ "parentTaskId": {
39036
+ "type": "string"
39037
+ },
38805
39038
  "timezone": {
38806
39039
  "type": "string",
38807
39040
  "default": "UTC"
@@ -41208,7 +41441,25 @@
41208
41441
  "tasks": {
41209
41442
  "type": "array",
41210
41443
  "items": {
41211
- "$ref": "#/components/schemas/AgentTask"
41444
+ "allOf": [
41445
+ {
41446
+ "$ref": "#/components/schemas/AgentTask"
41447
+ },
41448
+ {
41449
+ "type": "object",
41450
+ "properties": {
41451
+ "attachments": {
41452
+ "type": "array",
41453
+ "items": {
41454
+ "$ref": "#/components/schemas/TaskAttachment"
41455
+ }
41456
+ }
41457
+ },
41458
+ "required": [
41459
+ "attachments"
41460
+ ]
41461
+ }
41462
+ ]
41212
41463
  }
41213
41464
  }
41214
41465
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desplega.ai/agent-swarm",
3
- "version": "1.145.0",
3
+ "version": "1.147.0",
4
4
  "description": "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
5
5
  "keywords": [
6
6
  "agent-swarm.dev",
@@ -20,9 +20,8 @@ To do so, use the `agent-swarm` MCP server and call the `join-swarm` with a name
20
20
 
21
21
  ## Tools Reference
22
22
 
23
- ### Polling for tasks
23
+ ### Your tasks
24
24
 
25
- - `poll-task` - Wait for new task assignments for you
26
25
  - `get-tasks` - List tasks with filters (status, unassigned, tags), use `mineOnly` to true to see only your tasks
27
26
  - `get-task-details` - Deep dive into a specific task's progress and output
28
27
 
@@ -39,13 +38,9 @@ To do so, use the `agent-swarm` MCP server and call the `join-swarm` with a name
39
38
 
40
39
  ## Workflow
41
40
 
42
- 1. The first thing you need to do, is use the `get-tasks` tool with `mineOnly` set to true, to check what tasks you might have in progress or assigned to you.
43
- 1.1. If there's a task that is in progress, you should resume working on it!
44
- 2. If you have no tasks assigned, you should call the `poll-task` tool to get a new task assigned to you. This will poll for a while and return either with:
45
- 2.1. A new task assigned to you
46
- 2.2. A message indicating there's no tasks available right now
47
- 3. If 2.2, start polling immediately FOREVER. Only stop if you get interrupted by the user, if not, just keep polling.
48
- 4. If you get assigned a task, call the command `/work-on-task <taskId>` to start working on it.
41
+ 1. Call `get-tasks` with `mineOnly` set to true to see the tasks assigned to you.
42
+ 2. If one is `pending` or `in_progress`, call `/work-on-task <taskId>` and work on it.
43
+ 3. Otherwise stop. The swarm assigns tasks to you and opens each one with `/work-on-task <taskId>`; you do not poll.
49
44
 
50
45
  ## Filesystem
51
46
 
@@ -21,9 +21,8 @@ To do so, use the `agent-swarm` MCP server and call the `join-swarm` with a name
21
21
 
22
22
  ## Tools Reference
23
23
 
24
- ### Polling for tasks
24
+ ### Your tasks
25
25
 
26
- - `poll-task` - Wait for new task assignments for you
27
26
  - `get-tasks` - List tasks with filters (status, unassigned, tags), use `mineOnly` to true to see only your tasks
28
27
  - `get-task-details` - Deep dive into a specific task's progress and output
29
28
 
@@ -40,13 +39,9 @@ To do so, use the `agent-swarm` MCP server and call the `join-swarm` with a name
40
39
 
41
40
  ## Workflow
42
41
 
43
- 1. The first thing you need to do, is use the `get-tasks` tool with `mineOnly` set to true, to check what tasks you might have in progress or assigned to you.
44
- 1.1. If there's a task that is in progress, you should resume working on it!
45
- 2. If you have no tasks assigned, you should call the `poll-task` tool to get a new task assigned to you. This will poll for a while and return either with:
46
- 2.1. A new task assigned to you
47
- 2.2. A message indicating there's no tasks available right now
48
- 3. If 2.2, start polling immediately FOREVER. Only stop if you get interrupted by the user, if not, just keep polling.
49
- 4. If you get assigned a task, call `/skill:work-on-task <taskId>` to start working on it.
42
+ 1. Call `get-tasks` with `mineOnly` set to true to see the tasks assigned to you.
43
+ 2. If one is `pending` or `in_progress`, call `/skill:work-on-task <taskId>` and work on it.
44
+ 3. Otherwise stop. The swarm assigns tasks to you and opens each one with `/skill:work-on-task <taskId>`; you do not poll.
50
45
 
51
46
  ## Filesystem
52
47