@desplega.ai/agent-swarm 2.4.1 → 2.4.3

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 (153) hide show
  1. package/dist/{acp-adapter-zvzr538d.js → acp-adapter-1885dpr7.js} +4 -4
  2. package/dist/{actions-jhtqdw69.js → actions-pn76n32q.js} +18 -18
  3. package/dist/{amp-adapter-bd84rhs2.js → amp-adapter-af84rx1d.js} +3 -3
  4. package/dist/{app-kreq1gwg.js → app-6sv8mhzm.js} +3 -3
  5. package/dist/{assistant-3k22sbsq.js → assistant-sc2tf825.js} +20 -20
  6. package/dist/{boot-reembed-f6z923ny.js → boot-reembed-gvxjs2py.js} +1 -1
  7. package/dist/{boot-reembed-e53x6b9v.js → boot-reembed-y3m0ydzj.js} +1 -1
  8. package/dist/{boot-scrub-sweep-0538vsb7.js → boot-scrub-sweep-1j9mk05f.js} +3 -3
  9. package/dist/{boot-seeds-6wxqkfk2.js → boot-seeds-37sp626b.js} +4 -4
  10. package/dist/{claude-adapter-gfts5044.js → claude-adapter-rp0jtnwr.js} +4 -4
  11. package/dist/{claude-managed-setup-h00hsgtz.js → claude-managed-setup-rdt248k7.js} +1 -1
  12. package/dist/{claude-sdk-session-56besmfz.js → claude-sdk-session-53rcw5we.js} +9822 -9749
  13. package/dist/{cli-3tnpj2bh.js → cli-038fga5k.js} +2 -2
  14. package/dist/{cli-kmqgmcnb.js → cli-0dxxwfkt.js} +8 -8
  15. package/dist/{cli-471qk6s2.js → cli-1012xb7j.js} +28 -28
  16. package/dist/{cli-sv5gb0yb.js → cli-1eszr343.js} +1 -1
  17. package/dist/{cli-7225gwj7.js → cli-1m17dc9d.js} +1 -1
  18. package/dist/{cli-xftrvxag.js → cli-1ma335fz.js} +3 -3
  19. package/dist/{cli-s48yvzb8.js → cli-1n9gdg56.js} +4 -4
  20. package/dist/{cli-ash6xxk7.js → cli-1xsraagq.js} +3 -3
  21. package/dist/{cli-xbzvet96.js → cli-36ckw0wx.js} +5 -4
  22. package/dist/{cli-mhywgrrz.js → cli-4sydckyj.js} +1 -1
  23. package/dist/{cli-3r448dqn.js → cli-4yef8ghv.js} +3 -3
  24. package/dist/{cli-g0hgtz4p.js → cli-58vwn100.js} +3 -3
  25. package/dist/{cli-pw7v69vp.js → cli-625tb7aq.js} +1 -1
  26. package/dist/{cli-m2qgh5sv.js → cli-6aen3ezb.js} +1 -1
  27. package/dist/{cli-z071fb95.js → cli-6eyncg0y.js} +6 -6
  28. package/dist/{cli-0bh477zn.js → cli-73ezfhha.js} +120 -12
  29. package/dist/{cli-x5mq1fyq.js → cli-74c1wpm0.js} +3 -3
  30. package/dist/{cli-b1dfr1m4.js → cli-7a6p4e65.js} +1 -1
  31. package/dist/{cli-fpmsqq59.js → cli-836ehxmt.js} +1 -1
  32. package/dist/{cli-1pa3rz69.js → cli-8vverzf7.js} +1 -1
  33. package/dist/{cli-rdq7tzwm.js → cli-8y99kfey.js} +11 -11
  34. package/dist/{cli-z1ew8vbq.js → cli-aa3tb29r.js} +10 -5
  35. package/dist/{cli-6ncjvx55.js → cli-aypbg9r2.js} +1 -1
  36. package/dist/{cli-3kh4kpqy.js → cli-bxrqvpg5.js} +6 -6
  37. package/dist/{cli-0hyhdkdk.js → cli-cebvbc9t.js} +4 -1
  38. package/dist/{cli-p6argxh9.js → cli-dm8p2dpf.js} +7 -7
  39. package/dist/{cli-jh0qcrga.js → cli-e4d78xsv.js} +1 -1
  40. package/dist/{cli-7a91w22y.js → cli-e8xyjvfc.js} +1 -1
  41. package/dist/{cli-axh29tyr.js → cli-f0p0f6ja.js} +10 -10
  42. package/dist/{cli-w9g4sz81.js → cli-gf2850q7.js} +1 -1
  43. package/dist/{cli-bn5kevnf.js → cli-gx0j2khs.js} +4 -4
  44. package/dist/{cli-gf0kfg81.js → cli-h0mgxann.js} +5 -5
  45. package/dist/{cli-kr2pmfqx.js → cli-kgnkyabk.js} +85 -71
  46. package/dist/{cli-hqhzg1qq.js → cli-mzkwkbdy.js} +1 -1
  47. package/dist/{cli-k9z4zd4p.js → cli-npfe9t1s.js} +2 -2
  48. package/dist/{cli-syhq378v.js → cli-p0qerd2r.js} +1 -1
  49. package/dist/{cli-sjyetj21.js → cli-pygdsgh8.js} +1 -1
  50. package/dist/{cli-2wag8973.js → cli-qeaq3j6t.js} +1 -1
  51. package/dist/{cli-nx462e4v.js → cli-qp2m4btv.js} +3 -3
  52. package/dist/{cli-tbhwrxpt.js → cli-s9rr4gr2.js} +5 -5
  53. package/dist/{cli-fz9kewbh.js → cli-sds5zzs8.js} +1 -1
  54. package/dist/{cli-vy0fay6k.js → cli-tkf4x6ha.js} +15 -15
  55. package/dist/{cli-mfe7f7b5.js → cli-v87dr6e3.js} +2 -2
  56. package/dist/{cli-rqqsfz30.js → cli-vcgscaan.js} +91 -21
  57. package/dist/{cli-zfg9enh9.js → cli-vfha21c9.js} +6 -1
  58. package/dist/{cli-3p8fqcnh.js → cli-vq9gqarq.js} +1 -1
  59. package/dist/{cli-a4gvwttf.js → cli-wk28hzqn.js} +2 -2
  60. package/dist/{cli-p0rakbrk.js → cli-zvbb4n0e.js} +6 -5
  61. package/dist/cli.js +17 -17
  62. package/dist/{codex-adapter-p6rmm7vv.js → codex-adapter-2zrmab9b.js} +2 -2
  63. package/dist/{codex-hook-x7nejyrr.js → codex-hook-e2he7aca.js} +2 -2
  64. package/dist/{codex-session-runner-8vd5t9t0.js → codex-session-runner-kbkz62vc.js} +2 -2
  65. package/dist/{commands-7ems2p13.js → commands-hd574th6.js} +3 -3
  66. package/dist/{controller-m263fg43.js → controller-pz5mcfg4.js} +3 -3
  67. package/dist/{controllers-connect-bg33ae53.js → controllers-connect-5rgq2hfk.js} +19 -19
  68. package/dist/{cursor-adapter-cz6nm6mj.js → cursor-adapter-mgaprq0j.js} +2 -2
  69. package/dist/{db-w505dwa8.js → db-6nf1207q.js} +6 -2
  70. package/dist/{db-ys2rbdft.js → db-h06dxp05.js} +3 -3
  71. package/dist/{dispatcher-0s0mckqr.js → dispatcher-zthpy4m1.js} +17 -17
  72. package/dist/{dsh-adapter-3n3net33.js → dsh-adapter-64dhw0j7.js} +2 -2
  73. package/dist/{e2b-thdcxtjd.js → e2b-16d6ch39.js} +1 -1
  74. package/dist/{e2b-7am6tmq6.js → e2b-zn0b4w5w.js} +1 -1
  75. package/dist/{external-channel-5b23fv8z.js → external-channel-x01t7ke6.js} +2 -2
  76. package/dist/{grok-adapter-q9fghe5q.js → grok-adapter-h21jv594.js} +5 -5
  77. package/dist/handlers-2qjw434w.js +39 -0
  78. package/dist/{heartbeat-tww6yx1w.js → heartbeat-zzfksckz.js} +20 -20
  79. package/dist/{hook-pvmh9b6m.js → hook-3xfqhh2s.js} +2 -2
  80. package/dist/{hook-dx0pkvar.js → hook-z4zhzj1f.js} +10 -5
  81. package/dist/{http-k2ejbt05.js → http-q813tmya.js} +121 -75
  82. package/dist/{index-2z710v4x.js → index-220tk9bw.js} +9 -9
  83. package/dist/index-d0g18bax.js +41 -0
  84. package/dist/{index-dgz61nff.js → index-m0a4ydqj.js} +17 -17
  85. package/dist/{index-h2ek08d6.js → index-wbbs14c5.js} +17 -17
  86. package/dist/{index-x5aktmp8.js → index-x8xbyn1t.js} +1 -1
  87. package/dist/{keepalive-nhvpw10z.js → keepalive-y5t1my7m.js} +3 -3
  88. package/dist/{lead-jb6sf69z.js → lead-2xwtq66b.js} +30 -30
  89. package/dist/{maintenance-agakc519.js → maintenance-ybfsaedv.js} +1 -1
  90. package/dist/{oauth-refresh-sweep-4dcbhtn0.js → oauth-refresh-sweep-909jmn12.js} +2 -2
  91. package/dist/{onboard-4n2kwa4v.js → onboard-xn6fkkys.js} +3 -3
  92. package/dist/{opencode-adapter-3s7ax02e.js → opencode-adapter-x4tqzhkh.js} +3 -3
  93. package/dist/{otel-impl-tfa12080.js → otel-impl-e6mn0z13.js} +1 -1
  94. package/dist/{pi-mono-adapter-ytp7gz8b.js → pi-mono-adapter-mcfkn9vf.js} +3 -3
  95. package/dist/{pricing-refresh-3cqx3f3x.js → pricing-refresh-ygd362ep.js} +3 -3
  96. package/dist/{rbac-roles-9fae5rnv.js → rbac-roles-c9axvfnz.js} +3 -3
  97. package/dist/{rbac-roles-y6zbfzve.js → rbac-roles-mb470p4e.js} +2 -2
  98. package/dist/{render-v2-emawjvc4.js → render-v2-g0306nh1.js} +3 -3
  99. package/dist/{resume-zhgts7h7.js → resume-v315hnq6.js} +5 -5
  100. package/dist/{session-access-cm823e06.js → session-access-2zg285a1.js} +4 -4
  101. package/dist/{setup-tkp99w1e.js → setup-a4mtf02k.js} +1 -1
  102. package/dist/{work-objects-f722h263.js → work-objects-9fr0fgtn.js} +21 -21
  103. package/dist/{worker-p7f336rq.js → worker-qae22jeb.js} +30 -30
  104. package/openapi.json +393 -1
  105. package/package.json +3 -3
  106. package/src/apps/catalog.generated.json +3 -2
  107. package/src/apps/definition.ts +152 -4
  108. package/src/apps/row-store.ts +19 -7
  109. package/src/apps/schema-migrate.ts +14 -6
  110. package/src/apps/script-types.ts +1 -0
  111. package/src/apps/sync.ts +20 -19
  112. package/src/be/db/tasks/read.ts +112 -0
  113. package/src/be/db.ts +9 -4
  114. package/src/be/migrations/231_slack_tasks_last_updated_index.sql +5 -0
  115. package/src/be/swarm-config-guard.ts +15 -0
  116. package/src/github/handlers.ts +6 -5
  117. package/src/hooks/hook.ts +2 -1
  118. package/src/http/apps.ts +15 -2
  119. package/src/http/status.ts +49 -43
  120. package/src/http/tasks.ts +47 -0
  121. package/src/providers/acp-targets.ts +1 -1
  122. package/src/providers/amp-adapter.ts +1 -1
  123. package/src/providers/codex-adapter.ts +4 -4
  124. package/src/providers/opencode-adapter.ts +2 -2
  125. package/src/providers/pi-mono-extension.ts +2 -1
  126. package/src/telemetry.ts +15 -3
  127. package/src/tests/app-row-tools.test.ts +25 -0
  128. package/src/tests/apps-json-column.test.ts +611 -0
  129. package/src/tests/apps-script-types.test.ts +2 -0
  130. package/src/tests/apps-sync-engine.test.ts +42 -0
  131. package/src/tests/claude-stop-hook.test.ts +47 -0
  132. package/src/tests/codex-adapter.test.ts +42 -0
  133. package/src/tests/db-task-read-contract.test.ts +4 -0
  134. package/src/tests/db-task-write-contract.test.ts +2 -0
  135. package/src/tests/docs-index-footprint.test.js +2 -2
  136. package/src/tests/env-flag.test.ts +15 -1
  137. package/src/tests/github-handlers-cancel-config.test.ts +29 -8
  138. package/src/tests/github-handlers-inline-comments.test.ts +9 -2
  139. package/src/tests/runner-harness-telemetry-env.test.ts +6 -0
  140. package/src/tests/script-connections.test.ts +2 -0
  141. package/src/tests/skill-script-refs.test.ts +63 -0
  142. package/src/tests/slack-render-v2-query-plans.test.ts +147 -0
  143. package/src/tests/status.test.ts +158 -9
  144. package/src/tests/task-lineage.test.ts +180 -0
  145. package/src/tests/telemetry-init.test.ts +62 -5
  146. package/src/tests/user-token-rest-auth.test.ts +38 -0
  147. package/src/tools/app-rows.ts +5 -0
  148. package/src/utils/env-flag.ts +9 -0
  149. package/templates/skills/apps/SKILL.md +4 -2
  150. package/templates/skills/apps/content.md +4 -2
  151. package/templates/skills/code-quality/content.md +9 -14
  152. package/dist/handlers-mqrym347.js +0 -39
  153. package/dist/index-pqfwh9nn.js +0 -41
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": "2.4.1",
5
+ "version": "2.4.3",
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": [
@@ -7527,6 +7527,14 @@
7527
7527
  },
7528
7528
  {
7529
7529
  "type": "boolean"
7530
+ },
7531
+ {
7532
+ "type": "object",
7533
+ "additionalProperties": {}
7534
+ },
7535
+ {
7536
+ "type": "array",
7537
+ "items": {}
7530
7538
  }
7531
7539
  ]
7532
7540
  }
@@ -7555,6 +7563,14 @@
7555
7563
  },
7556
7564
  {
7557
7565
  "type": "boolean"
7566
+ },
7567
+ {
7568
+ "type": "object",
7569
+ "additionalProperties": {}
7570
+ },
7571
+ {
7572
+ "type": "array",
7573
+ "items": {}
7558
7574
  }
7559
7575
  ]
7560
7576
  }
@@ -7570,6 +7586,14 @@
7570
7586
  {
7571
7587
  "type": "boolean"
7572
7588
  },
7589
+ {
7590
+ "type": "object",
7591
+ "additionalProperties": {}
7592
+ },
7593
+ {
7594
+ "type": "array",
7595
+ "items": {}
7596
+ },
7573
7597
  {
7574
7598
  "type": "null"
7575
7599
  }
@@ -7601,6 +7625,14 @@
7601
7625
  {
7602
7626
  "type": "boolean"
7603
7627
  },
7628
+ {
7629
+ "type": "object",
7630
+ "additionalProperties": {}
7631
+ },
7632
+ {
7633
+ "type": "array",
7634
+ "items": {}
7635
+ },
7604
7636
  {
7605
7637
  "type": "null"
7606
7638
  }
@@ -8055,6 +8087,14 @@
8055
8087
  },
8056
8088
  {
8057
8089
  "type": "boolean"
8090
+ },
8091
+ {
8092
+ "type": "object",
8093
+ "additionalProperties": {}
8094
+ },
8095
+ {
8096
+ "type": "array",
8097
+ "items": {}
8058
8098
  }
8059
8099
  ]
8060
8100
  }
@@ -8083,6 +8123,14 @@
8083
8123
  },
8084
8124
  {
8085
8125
  "type": "boolean"
8126
+ },
8127
+ {
8128
+ "type": "object",
8129
+ "additionalProperties": {}
8130
+ },
8131
+ {
8132
+ "type": "array",
8133
+ "items": {}
8086
8134
  }
8087
8135
  ]
8088
8136
  }
@@ -8098,6 +8146,14 @@
8098
8146
  {
8099
8147
  "type": "boolean"
8100
8148
  },
8149
+ {
8150
+ "type": "object",
8151
+ "additionalProperties": {}
8152
+ },
8153
+ {
8154
+ "type": "array",
8155
+ "items": {}
8156
+ },
8101
8157
  {
8102
8158
  "type": "null"
8103
8159
  }
@@ -8129,6 +8185,14 @@
8129
8185
  {
8130
8186
  "type": "boolean"
8131
8187
  },
8188
+ {
8189
+ "type": "object",
8190
+ "additionalProperties": {}
8191
+ },
8192
+ {
8193
+ "type": "array",
8194
+ "items": {}
8195
+ },
8132
8196
  {
8133
8197
  "type": "null"
8134
8198
  }
@@ -8416,6 +8480,14 @@
8416
8480
  },
8417
8481
  {
8418
8482
  "type": "boolean"
8483
+ },
8484
+ {
8485
+ "type": "object",
8486
+ "additionalProperties": {}
8487
+ },
8488
+ {
8489
+ "type": "array",
8490
+ "items": {}
8419
8491
  }
8420
8492
  ]
8421
8493
  }
@@ -8444,6 +8516,14 @@
8444
8516
  },
8445
8517
  {
8446
8518
  "type": "boolean"
8519
+ },
8520
+ {
8521
+ "type": "object",
8522
+ "additionalProperties": {}
8523
+ },
8524
+ {
8525
+ "type": "array",
8526
+ "items": {}
8447
8527
  }
8448
8528
  ]
8449
8529
  }
@@ -8459,6 +8539,14 @@
8459
8539
  {
8460
8540
  "type": "boolean"
8461
8541
  },
8542
+ {
8543
+ "type": "object",
8544
+ "additionalProperties": {}
8545
+ },
8546
+ {
8547
+ "type": "array",
8548
+ "items": {}
8549
+ },
8462
8550
  {
8463
8551
  "type": "null"
8464
8552
  }
@@ -8490,6 +8578,14 @@
8490
8578
  {
8491
8579
  "type": "boolean"
8492
8580
  },
8581
+ {
8582
+ "type": "object",
8583
+ "additionalProperties": {}
8584
+ },
8585
+ {
8586
+ "type": "array",
8587
+ "items": {}
8588
+ },
8493
8589
  {
8494
8590
  "type": "null"
8495
8591
  }
@@ -32916,6 +33012,302 @@
32916
33012
  }
32917
33013
  }
32918
33014
  },
33015
+ "/api/tasks/{id}/lineage": {
33016
+ "get": {
33017
+ "summary": "Get the tree a task belongs to (ancestors and descendants)",
33018
+ "description": "Follows `parentTaskId` up to the topmost ancestor, then returns every descendant of that root as slim task rows, the task's own subtree first. Bounded: at most 50 hops up, `maxDepth` levels down and about twice `maxNodes` rows; `truncated` is true when any task in the tree is missing from the response.",
33019
+ "tags": [
33020
+ "Tasks"
33021
+ ],
33022
+ "security": [
33023
+ {
33024
+ "bearerAuth": []
33025
+ }
33026
+ ],
33027
+ "parameters": [
33028
+ {
33029
+ "schema": {
33030
+ "type": "string"
33031
+ },
33032
+ "required": true,
33033
+ "name": "id",
33034
+ "in": "path"
33035
+ },
33036
+ {
33037
+ "schema": {
33038
+ "type": "integer",
33039
+ "minimum": 1,
33040
+ "maximum": 500
33041
+ },
33042
+ "required": false,
33043
+ "name": "maxNodes",
33044
+ "in": "query"
33045
+ },
33046
+ {
33047
+ "schema": {
33048
+ "type": "integer",
33049
+ "minimum": 1,
33050
+ "maximum": 30
33051
+ },
33052
+ "required": false,
33053
+ "name": "maxDepth",
33054
+ "in": "query"
33055
+ }
33056
+ ],
33057
+ "responses": {
33058
+ "200": {
33059
+ "description": "The lineage tree as a flat list linked by `parentTaskId`",
33060
+ "content": {
33061
+ "application/json": {
33062
+ "schema": {
33063
+ "type": "object",
33064
+ "properties": {
33065
+ "rootTaskId": {
33066
+ "type": "string"
33067
+ },
33068
+ "tasks": {
33069
+ "type": "array",
33070
+ "items": {
33071
+ "type": "object",
33072
+ "properties": {
33073
+ "id": {
33074
+ "type": "string",
33075
+ "format": "uuid"
33076
+ },
33077
+ "key": {
33078
+ "type": "string",
33079
+ "minLength": 1,
33080
+ "maxLength": 255,
33081
+ "description": "Non-unique asset directory namespace (for example shared/ or personal/<user-id>/drafts/). Runtime write boundaries normalize and validate the canonical form."
33082
+ },
33083
+ "agentId": {
33084
+ "type": [
33085
+ "string",
33086
+ "null"
33087
+ ]
33088
+ },
33089
+ "creatorAgentId": {
33090
+ "type": "string"
33091
+ },
33092
+ "task": {
33093
+ "type": "string",
33094
+ "minLength": 1
33095
+ },
33096
+ "title": {
33097
+ "type": "string"
33098
+ },
33099
+ "status": {
33100
+ "type": "string",
33101
+ "enum": [
33102
+ "draft",
33103
+ "backlog",
33104
+ "unassigned",
33105
+ "offered",
33106
+ "reviewing",
33107
+ "pending",
33108
+ "in_progress",
33109
+ "paused",
33110
+ "completed",
33111
+ "failed",
33112
+ "cancelled",
33113
+ "superseded"
33114
+ ]
33115
+ },
33116
+ "source": {
33117
+ "type": "string",
33118
+ "enum": [
33119
+ "mcp",
33120
+ "slack",
33121
+ "api",
33122
+ "ui",
33123
+ "github",
33124
+ "gitlab",
33125
+ "azure-devops",
33126
+ "agentmail",
33127
+ "system",
33128
+ "schedule",
33129
+ "workflow",
33130
+ "linear",
33131
+ "jira",
33132
+ "comb",
33133
+ "chat"
33134
+ ],
33135
+ "default": "mcp"
33136
+ },
33137
+ "taskType": {
33138
+ "type": "string",
33139
+ "maxLength": 50
33140
+ },
33141
+ "tags": {
33142
+ "type": "array",
33143
+ "items": {
33144
+ "type": "string"
33145
+ },
33146
+ "default": []
33147
+ },
33148
+ "priority": {
33149
+ "type": "integer",
33150
+ "minimum": 0,
33151
+ "maximum": 100,
33152
+ "default": 50
33153
+ },
33154
+ "dependsOn": {
33155
+ "type": "array",
33156
+ "items": {
33157
+ "type": "string"
33158
+ },
33159
+ "default": []
33160
+ },
33161
+ "offeredTo": {
33162
+ "type": "string"
33163
+ },
33164
+ "acceptedAt": {
33165
+ "type": "string",
33166
+ "format": "date-time"
33167
+ },
33168
+ "parentTaskId": {
33169
+ "type": "string"
33170
+ },
33171
+ "scheduleId": {
33172
+ "type": "string"
33173
+ },
33174
+ "model": {
33175
+ "type": "string"
33176
+ },
33177
+ "modelTier": {
33178
+ "type": "string",
33179
+ "enum": [
33180
+ "smol",
33181
+ "regular",
33182
+ "smart",
33183
+ "ultra"
33184
+ ]
33185
+ },
33186
+ "resolvedModel": {
33187
+ "type": "string"
33188
+ },
33189
+ "modelSource": {
33190
+ "type": "string"
33191
+ },
33192
+ "modelAlias": {
33193
+ "type": "string"
33194
+ },
33195
+ "effort": {
33196
+ "type": "string",
33197
+ "enum": [
33198
+ "off",
33199
+ "low",
33200
+ "medium",
33201
+ "high",
33202
+ "xhigh",
33203
+ "max"
33204
+ ]
33205
+ },
33206
+ "resolvedEffort": {
33207
+ "type": "string",
33208
+ "enum": [
33209
+ "off",
33210
+ "low",
33211
+ "medium",
33212
+ "high",
33213
+ "xhigh",
33214
+ "max"
33215
+ ]
33216
+ },
33217
+ "provider": {
33218
+ "type": "string",
33219
+ "enum": [
33220
+ "claude",
33221
+ "codex",
33222
+ "pi",
33223
+ "devin",
33224
+ "claude-managed",
33225
+ "opencode",
33226
+ "acp",
33227
+ "dsh",
33228
+ "amp",
33229
+ "cursor",
33230
+ "grok"
33231
+ ]
33232
+ },
33233
+ "requestedByUserId": {
33234
+ "type": "string"
33235
+ },
33236
+ "progress": {
33237
+ "type": "string"
33238
+ },
33239
+ "createdAt": {
33240
+ "type": "string",
33241
+ "format": "date-time"
33242
+ },
33243
+ "lastUpdatedAt": {
33244
+ "type": "string",
33245
+ "format": "date-time"
33246
+ },
33247
+ "finishedAt": {
33248
+ "type": "string",
33249
+ "format": "date-time"
33250
+ },
33251
+ "peakContextPercent": {
33252
+ "type": "number",
33253
+ "minimum": 0,
33254
+ "maximum": 100
33255
+ },
33256
+ "totalCostUsd": {
33257
+ "type": "number",
33258
+ "minimum": 0
33259
+ },
33260
+ "workflowRunId": {
33261
+ "type": "string"
33262
+ }
33263
+ },
33264
+ "required": [
33265
+ "id",
33266
+ "key",
33267
+ "agentId",
33268
+ "task",
33269
+ "status",
33270
+ "createdAt",
33271
+ "lastUpdatedAt"
33272
+ ]
33273
+ }
33274
+ },
33275
+ "truncated": {
33276
+ "type": "boolean"
33277
+ }
33278
+ },
33279
+ "required": [
33280
+ "rootTaskId",
33281
+ "tasks",
33282
+ "truncated"
33283
+ ]
33284
+ }
33285
+ }
33286
+ }
33287
+ },
33288
+ "403": {
33289
+ "description": "A user caller cannot read the task's session",
33290
+ "content": {
33291
+ "application/json": {
33292
+ "schema": {
33293
+ "$ref": "#/components/schemas/ErrorResponse"
33294
+ }
33295
+ }
33296
+ }
33297
+ },
33298
+ "404": {
33299
+ "description": "Task not found",
33300
+ "content": {
33301
+ "application/json": {
33302
+ "schema": {
33303
+ "$ref": "#/components/schemas/ErrorResponse"
33304
+ }
33305
+ }
33306
+ }
33307
+ }
33308
+ }
33309
+ }
33310
+ },
32919
33311
  "/api/tasks/{id}/progress": {
32920
33312
  "post": {
32921
33313
  "summary": "Update task progress text",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@desplega.ai/agent-swarm",
3
- "version": "2.4.1",
3
+ "version": "2.4.3",
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",
@@ -200,7 +200,7 @@
200
200
  "dependencies": {
201
201
  "@agentclientprotocol/sdk": "1.9.0",
202
202
  "@ai-sdk/openai": "^3.0.41",
203
- "@anthropic-ai/claude-agent-sdk": "0.3.303",
203
+ "@anthropic-ai/claude-agent-sdk": "0.3.304",
204
204
  "@anthropic-ai/sdk": "^0.135.0",
205
205
  "@asteasolutions/zod-to-openapi": "^8.0.0",
206
206
  "@aws-sdk/client-bedrock": "3.1048.0",
@@ -209,7 +209,7 @@
209
209
  "@chat-adapter/teams": "4.41.1",
210
210
  "@chat-adapter/telegram": "4.41.1",
211
211
  "@cursor/sdk": "1.0.38",
212
- "@desplega.ai/agent-fs-just-bash": "0.18.4",
212
+ "@desplega.ai/agent-fs-just-bash": "0.18.5",
213
213
  "@desplega.ai/business-use": "^0.4.2",
214
214
  "@earendil-works/pi-agent-core": "^1.3.0",
215
215
  "@earendil-works/pi-ai": "^1.3.0",
@@ -1243,7 +1243,7 @@
1243
1243
  }
1244
1244
  },
1245
1245
  "Table": {
1246
- "description": "Data table. Bind `data`/`loading`/`error` to a named query (`/queries/<name>/...`). `rowActions` chains receive `{ \"$row\": \"<col>\" }` (or `{ \"$row\": \"\" }` for the whole row) and `{ \"$rowIndex\": true }`. Destructive row actions always confirm via a dialog; override the copy with `confirm: { title, description, confirmLabel }`. `search` (case-insensitive substring across every listed column) and `filters` (per-column equality, `null`/`\"\"` disables one; an array means \"one of\", which is what a multiple `Chips` writes, and an empty array disables it) narrow the polled rows client-side — bind them to a `SearchInput` / `Select` via `/ui/<id>/value`, or pin a constant (e.g. `\"filters\": { \"pinned\": true }`). Columns take `pinned: \"left\"|\"right\"` to survive horizontal scroll; `pagination` pages large row sets (auto past 200 rows); `density: \"compact\"` tightens row height. Column kinds: `status` (lifecycle values like pending/in_progress/completed/failed get the dashboard status icon, anything else a `tones` pill), `user` / `agent` (avatar + name), `relative` (smart time with the exact time on hover), `duration` (ms → 1m 23s), `progress` (bar, `max` default 100), `copy` (value + copy button), `switch` (runs the column's `onChange` chain with `$row` set to the new value; read-only without it), `link` (http(s) URL, opens in a new tab). Columns also take `align`, `truncate: \"middle\"` (ids, paths), a header `icon` and `tooltip` (a row field shown on hover). `onRowClick` runs a chain with `$row` when a row is clicked — pair it with `app.navigate` + a Drawer and bind `selectedId` to the drawer param to highlight the open row. `rowId` names the id field (default `id`). Below 768px the table renders as a phone list (`mobile: \"list\"`, fields picked by `mobileFields: { title, subtitle?, meta?, status? }`); `mobile: \"scroll\"` keeps the grid. `emptyState: { icon?, title, body? }` replaces the empty message. Row actions take `icon` and `placement: \"menu\"` (collected into a More menu).",
1246
+ "description": "Data table. Bind `data`/`loading`/`error` to a named query (`/queries/<name>/...`). `rowActions` chains receive `{ \"$row\": \"<col>\" }` (or `{ \"$row\": \"\" }` for the whole row) and `{ \"$rowIndex\": true }`. Destructive row actions always confirm via a dialog; override the copy with `confirm: { title, description, confirmLabel }`. `search` (case-insensitive substring across every listed column) and `filters` (per-column equality, `null`/`\"\"` disables one; an array means \"one of\", which is what a multiple `Chips` writes, and an empty array disables it) narrow the polled rows client-side — bind them to a `SearchInput` / `Select` via `/ui/<id>/value`, or pin a constant (e.g. `\"filters\": { \"pinned\": true }`). Columns take `pinned: \"left\"|\"right\"` to survive horizontal scroll; `pagination` pages large row sets (auto past 200 rows); `density: \"compact\"` tightens row height. Column kinds: `status` (lifecycle values like pending/in_progress/completed/failed get the dashboard status icon, anything else a `tones` pill), `user` / `agent` (avatar + name), `relative` (smart time with the exact time on hover), `duration` (ms → 1m 23s), `progress` (bar, `max` default 100), `copy` (value + copy button), `switch` (runs the column's `onChange` chain with `$row` set to the new value; read-only without it), `link` (http(s) URL, opens in a new tab), `json` (compact single-line `JSON.stringify` preview, truncated). Columns also take `align`, `truncate: \"middle\"` (ids, paths), a header `icon` and `tooltip` (a row field shown on hover). `onRowClick` runs a chain with `$row` when a row is clicked — pair it with `app.navigate` + a Drawer and bind `selectedId` to the drawer param to highlight the open row. `rowId` names the id field (default `id`). Below 768px the table renders as a phone list (`mobile: \"list\"`, fields picked by `mobileFields: { title, subtitle?, meta?, status? }`); `mobile: \"scroll\"` keeps the grid. `emptyState: { icon?, title, body? }` replaces the empty message. Row actions take `icon` and `placement: \"menu\"` (collected into a More menu).",
1247
1247
  "props": {
1248
1248
  "$schema": "http://json-schema.org/draft-07/schema#",
1249
1249
  "type": "object",
@@ -1287,7 +1287,8 @@
1287
1287
  "progress",
1288
1288
  "copy",
1289
1289
  "switch",
1290
- "link"
1290
+ "link",
1291
+ "json"
1291
1292
  ]
1292
1293
  },
1293
1294
  "tones": {