@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
@@ -11,7 +11,7 @@ import {
11
11
  } from "./cli-f14fvzag.js";
12
12
  import {
13
13
  embedScript
14
- } from "./cli-wsed24mk.js";
14
+ } from "./cli-987hg0aa.js";
15
15
  import {
16
16
  calculatePKCECodeChallenge,
17
17
  ensureAuthorizationTokenOrThrow,
@@ -23,7 +23,7 @@ import {
23
23
  oauthAppRowToProviderConfig,
24
24
  updateAuthorizationTokens,
25
25
  upsertAuthorization
26
- } from "./cli-wb2zvbfg.js";
26
+ } from "./cli-53sz8gkz.js";
27
27
  import {
28
28
  CredentialBroker,
29
29
  DEFAULT_CREDENTIAL_BINDINGS,
@@ -43,11 +43,11 @@ import {
43
43
  normalizeDateRequired,
44
44
  placeholderForConfigKey,
45
45
  upsertSwarmConfig
46
- } from "./cli-awwphhcs.js";
46
+ } from "./cli-47m6dkd3.js";
47
47
  import {
48
48
  defaultAssetKey,
49
49
  init_key
50
- } from "./cli-h0wdadsx.js";
50
+ } from "./cli-4198qc9v.js";
51
51
  import {
52
52
  init_env_flag,
53
53
  isEnvFlagEnabled
@@ -175228,6 +175228,15 @@ function findEntryNodes(def) {
175228
175228
  }
175229
175229
  return def.nodes.filter((n) => !targets.has(n.id));
175230
175230
  }
175231
+ function resolveValidationPort(next, executorPort, validationPassed) {
175232
+ if (validationPassed === undefined)
175233
+ return executorPort;
175234
+ if (!next || typeof next !== "object" || Array.isArray(next))
175235
+ return executorPort;
175236
+ if (executorPort && Object.hasOwn(next, executorPort))
175237
+ return executorPort;
175238
+ return validationPassed ? "pass" : "fail";
175239
+ }
175231
175240
  function getSuccessors(def, nodeId, port) {
175232
175241
  const node = def.nodes.find((n) => n.id === nodeId);
175233
175242
  if (!node?.next)
@@ -178964,6 +178973,9 @@ var catalog_generated_default = {
178964
178973
  "Form",
178965
178974
  "Drawer",
178966
178975
  "DetailList",
178976
+ "Kanban",
178977
+ "Calendar",
178978
+ "ContributionGraph",
178967
178979
  "ElementRef",
178968
178980
  "ElementSlot"
178969
178981
  ],
@@ -179785,6 +179797,232 @@ var catalog_generated_default = {
179785
179797
  additionalProperties: false
179786
179798
  }
179787
179799
  },
179800
+ Kanban: {
179801
+ description: 'Kanban board: one card per row, grouped into `columns` by the row\'s `columnField`. Bind `data`/`loading` to a named query. `titleField` is the card title; `cardFields` add label/value lines with Table column kinds (badge tones, relative dates). Dragging a card to another column runs `onMove` with `$row` = the moved row, `columnField` already set to the new column — typically `[{ "action": "app.mutate", "params": { "model": "<m>", "op": "update", "rowId": { "$row": "id" }, "values": { "<columnField>": { "$row": "<columnField>" } } } }]`. Without `onMove` the board is read-only. `onCardClick` runs with `$row` (e.g. an `app.navigate` that opens a Drawer).',
179802
+ props: {
179803
+ $schema: "http://json-schema.org/draft-07/schema#",
179804
+ type: "object",
179805
+ properties: {
179806
+ data: {
179807
+ type: "array",
179808
+ items: {
179809
+ type: "object",
179810
+ propertyNames: {
179811
+ type: "string"
179812
+ },
179813
+ additionalProperties: {}
179814
+ }
179815
+ },
179816
+ loading: {
179817
+ type: "boolean"
179818
+ },
179819
+ columnField: {
179820
+ type: "string"
179821
+ },
179822
+ columns: {
179823
+ minItems: 1,
179824
+ type: "array",
179825
+ items: {
179826
+ anyOf: [
179827
+ {
179828
+ type: "string"
179829
+ },
179830
+ {
179831
+ type: "object",
179832
+ properties: {
179833
+ id: {
179834
+ type: "string"
179835
+ },
179836
+ label: {
179837
+ type: "string"
179838
+ }
179839
+ },
179840
+ required: ["id"],
179841
+ additionalProperties: false
179842
+ }
179843
+ ]
179844
+ }
179845
+ },
179846
+ titleField: {
179847
+ type: "string"
179848
+ },
179849
+ cardFields: {
179850
+ type: "array",
179851
+ items: {
179852
+ type: "object",
179853
+ properties: {
179854
+ key: {
179855
+ type: "string"
179856
+ },
179857
+ label: {
179858
+ type: "string"
179859
+ },
179860
+ kind: {
179861
+ type: "string",
179862
+ enum: ["text", "string", "number", "boolean", "date", "badge", "enum", "code"]
179863
+ },
179864
+ tones: {
179865
+ type: "object",
179866
+ propertyNames: {
179867
+ type: "string"
179868
+ },
179869
+ additionalProperties: {
179870
+ type: "string",
179871
+ enum: [
179872
+ "neutral",
179873
+ "success",
179874
+ "active",
179875
+ "error",
179876
+ "info",
179877
+ "pending",
179878
+ "warning",
179879
+ "paused"
179880
+ ]
179881
+ }
179882
+ }
179883
+ },
179884
+ required: ["key"],
179885
+ additionalProperties: false
179886
+ }
179887
+ },
179888
+ idField: {
179889
+ type: "string"
179890
+ },
179891
+ onMove: {
179892
+ type: "array",
179893
+ items: {
179894
+ type: "object",
179895
+ properties: {
179896
+ action: {
179897
+ type: "string"
179898
+ },
179899
+ params: {
179900
+ type: "object",
179901
+ propertyNames: {
179902
+ type: "string"
179903
+ },
179904
+ additionalProperties: {}
179905
+ }
179906
+ },
179907
+ required: ["action"],
179908
+ additionalProperties: false
179909
+ }
179910
+ },
179911
+ onCardClick: {
179912
+ type: "array",
179913
+ items: {
179914
+ type: "object",
179915
+ properties: {
179916
+ action: {
179917
+ type: "string"
179918
+ },
179919
+ params: {
179920
+ type: "object",
179921
+ propertyNames: {
179922
+ type: "string"
179923
+ },
179924
+ additionalProperties: {}
179925
+ }
179926
+ },
179927
+ required: ["action"],
179928
+ additionalProperties: false
179929
+ }
179930
+ }
179931
+ },
179932
+ required: ["columnField", "columns", "titleField"],
179933
+ additionalProperties: false
179934
+ }
179935
+ },
179936
+ Calendar: {
179937
+ description: "Read-only month calendar of rows. `startField` (and optional `endField`) hold dates; an event shows on every day it spans. `titleField` labels it. Has its own prev/next month controls; each Calendar keeps its own month. `onSelect` runs when an event is clicked, with `$row` (e.g. `app.navigate` to open a Drawer).",
179938
+ props: {
179939
+ $schema: "http://json-schema.org/draft-07/schema#",
179940
+ type: "object",
179941
+ properties: {
179942
+ data: {
179943
+ type: "array",
179944
+ items: {
179945
+ type: "object",
179946
+ propertyNames: {
179947
+ type: "string"
179948
+ },
179949
+ additionalProperties: {}
179950
+ }
179951
+ },
179952
+ loading: {
179953
+ type: "boolean"
179954
+ },
179955
+ startField: {
179956
+ type: "string"
179957
+ },
179958
+ endField: {
179959
+ type: "string"
179960
+ },
179961
+ titleField: {
179962
+ type: "string"
179963
+ },
179964
+ idField: {
179965
+ type: "string"
179966
+ },
179967
+ onSelect: {
179968
+ type: "array",
179969
+ items: {
179970
+ type: "object",
179971
+ properties: {
179972
+ action: {
179973
+ type: "string"
179974
+ },
179975
+ params: {
179976
+ type: "object",
179977
+ propertyNames: {
179978
+ type: "string"
179979
+ },
179980
+ additionalProperties: {}
179981
+ }
179982
+ },
179983
+ required: ["action"],
179984
+ additionalProperties: false
179985
+ }
179986
+ }
179987
+ },
179988
+ required: ["startField", "titleField"],
179989
+ additionalProperties: false
179990
+ }
179991
+ },
179992
+ ContributionGraph: {
179993
+ description: "GitHub-style activity heatmap over the trailing `days` (default 365). Buckets rows by the calendar day of `dateField` (default `date`); each row counts 1, or sums `countField` when set. Read-only.",
179994
+ props: {
179995
+ $schema: "http://json-schema.org/draft-07/schema#",
179996
+ type: "object",
179997
+ properties: {
179998
+ data: {
179999
+ type: "array",
180000
+ items: {
180001
+ type: "object",
180002
+ propertyNames: {
180003
+ type: "string"
180004
+ },
180005
+ additionalProperties: {}
180006
+ }
180007
+ },
180008
+ loading: {
180009
+ type: "boolean"
180010
+ },
180011
+ dateField: {
180012
+ type: "string"
180013
+ },
180014
+ countField: {
180015
+ type: "string"
180016
+ },
180017
+ days: {
180018
+ type: "integer",
180019
+ minimum: 7,
180020
+ maximum: 730
180021
+ }
180022
+ },
180023
+ additionalProperties: false
180024
+ }
180025
+ },
179788
180026
  ElementRef: {
179789
180027
  description: "Reference a reusable element from this app or an exported element from another app. Consumer children are inserted at the target's ElementSlot.",
179790
180028
  slots: ["default"],
@@ -180017,6 +180255,16 @@ var ELEMENT_KEYS = new Set([
180017
180255
  "watch"
180018
180256
  ]);
180019
180257
  var UI_STATE_COMPONENTS = new Set(["SearchInput", "Select", "Tabs"]);
180258
+ var PROP_ACTION_CHAINS = {
180259
+ Form: ["onSubmit"],
180260
+ Kanban: ["onMove", "onCardClick"],
180261
+ Calendar: ["onSelect"]
180262
+ };
180263
+ var DATA_FIELD_PROPS = {
180264
+ Kanban: ["columnField", "titleField", "idField"],
180265
+ Calendar: ["startField", "endField", "titleField", "idField"],
180266
+ ContributionGraph: ["dateField", "countField"]
180267
+ };
180020
180268
  var CONDITION_KEYS = new Set(["eq", "neq", "gt", "gte", "lt", "lte", "not"]);
180021
180269
  function isPlainObject(value) {
180022
180270
  if (typeof value !== "object" || value === null || Array.isArray(value))
@@ -180483,8 +180731,8 @@ function visitPageActionSteps(page, pagePath, visit) {
180483
180731
  visitActionChain(rowAction.actions, `${elementPath}.props.rowActions.${index}.actions`, visit, false);
180484
180732
  }
180485
180733
  }
180486
- if (rawElement.type === "Form") {
180487
- visitActionChain(rawElement.props.onSubmit, `${elementPath}.props.onSubmit`, visit, false);
180734
+ for (const prop of PROP_ACTION_CHAINS[String(rawElement.type)] ?? []) {
180735
+ visitActionChain(rawElement.props[prop], `${elementPath}.props.${prop}`, visit, false);
180488
180736
  }
180489
180737
  }
180490
180738
  }
@@ -180811,7 +181059,7 @@ function validatePage(definition, catalog, target) {
180811
181059
  }
180812
181060
  if (component) {
180813
181061
  const propsPath = appendPath(elementPath, "props");
180814
- const actionChainPath = (path2) => type === "Form" && path2 === `${propsPath}.onSubmit` || type === "Table" && /^.+\.rowActions\.\d+\.actions$/.test(path2);
181062
+ const actionChainPath = (path2) => (PROP_ACTION_CHAINS[String(type)] ?? []).some((prop) => path2 === `${propsPath}.${prop}`) || type === "Table" && /^.+\.rowActions\.\d+\.actions$/.test(path2);
180815
181063
  const propsResult = validateSchema(Object.hasOwn(rawElement, "props") ? rawElement.props : {}, component.props, propsPath, false, actionChainPath);
180816
181064
  issues.push(...propsResult.issues);
180817
181065
  stateRefs.push(...propsResult.stateRefs);
@@ -180860,6 +181108,32 @@ function validatePage(definition, catalog, target) {
180860
181108
  issues.push(found);
180861
181109
  }
180862
181110
  }
181111
+ } else if (typeof type === "string" && Object.hasOwn(DATA_FIELD_PROPS, type)) {
181112
+ const queryModel = queryModelFromDataBinding(definition, rawElement.props.data);
181113
+ if (queryModel) {
181114
+ const props = rawElement.props;
181115
+ const fieldNames = (DATA_FIELD_PROPS[type] ?? []).map((prop) => [
181116
+ `${elementPath}.props.${prop}`,
181117
+ props[prop]
181118
+ ]);
181119
+ if (type === "Kanban" && Array.isArray(props.cardFields)) {
181120
+ for (const [index, field] of props.cardFields.entries()) {
181121
+ if (isPlainObject(field)) {
181122
+ fieldNames.push([`${elementPath}.props.cardFields.${index}.key`, field.key]);
181123
+ }
181124
+ }
181125
+ }
181126
+ for (const [fieldPath, fieldName] of fieldNames) {
181127
+ if (typeof fieldName !== "string")
181128
+ continue;
181129
+ const found = fieldBindingIssue(queryModel.modelName, queryModel.model, fieldName, fieldPath);
181130
+ if (found)
181131
+ issues.push(found);
181132
+ }
181133
+ for (const prop of PROP_ACTION_CHAINS[type] ?? []) {
181134
+ collectRowFieldIssues(props[prop], `${elementPath}.props.${prop}`, queryModel.modelName, queryModel.model, issues);
181135
+ }
181136
+ }
180863
181137
  } else if (type === "Form") {
180864
181138
  if (Array.isArray(rawElement.props.fields)) {
180865
181139
  for (const [index, field] of rawElement.props.fields.entries()) {
@@ -180927,10 +181201,14 @@ function validatePage(definition, catalog, target) {
180927
181201
  stateRefs.push(...chainResult.stateRefs);
180928
181202
  }
180929
181203
  }
180930
- if (type === "Form" && isPlainObject(rawElement.props) && Object.hasOwn(rawElement.props, "onSubmit")) {
180931
- const chainResult = validateActionChain(rawElement.props.onSubmit, `${elementPath}.props.onSubmit`, definition, catalog);
180932
- issues.push(...chainResult.issues);
180933
- stateRefs.push(...chainResult.stateRefs);
181204
+ if (isPlainObject(rawElement.props)) {
181205
+ for (const prop of PROP_ACTION_CHAINS[String(type)] ?? []) {
181206
+ if (!Object.hasOwn(rawElement.props, prop))
181207
+ continue;
181208
+ const chainResult = validateActionChain(rawElement.props[prop], `${elementPath}.props.${prop}`, definition, catalog);
181209
+ issues.push(...chainResult.issues);
181210
+ stateRefs.push(...chainResult.stateRefs);
181211
+ }
180934
181212
  }
180935
181213
  }
180936
181214
  const parentByChild = new Map;
@@ -182518,6 +182796,7 @@ export interface SwarmSdk {
182518
182796
 
182519
182797
  // --- human input ---
182520
182798
  request_humanInput(args: Record<string, unknown>): Promise<unknown>;
182799
+ approval_cancel(args: { requestId: string; reason?: string }): Promise<unknown>;
182521
182800
  }
182522
182801
 
182523
182802
  export interface ScriptStdlib {
@@ -183126,4 +183405,4 @@ void _scriptMain;
183126
183405
  });
183127
183406
  }
183128
183407
 
183129
- export { require_dist, isInvalidClientError, assertUrlSafe, publicEndpointSsrfOptions, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, normalizeTokenEndpointAuthMethod, resolveAdvertisedTokenEndpointAuthMethod, authMethodForStoredClient, selectDcrTokenEndpointAuthMethod, registerClient, buildAuthorizeUrl, exchangeCodeForTokens, refreshMcpToken, revokeMcpToken, computeExpiresAt, getMcpOAuthToken, findReusableMcpOAuthClient, invalidateMcpOAuthClient, upsertMcpOAuthToken, applyMcpOAuthRefresh, markMcpOAuthTokenStatus, deleteMcpOAuthToken, insertMcpOAuthPending, consumeMcpOAuthPending, gcMcpOAuthPending, setMcpServerAuthMethod, ensureMcpToken, callMcpServerTool, listVendoredOpenapiEntries, ConnectionAuthInputSchema, connectionAuthSummary, listRelationalCredentialBindings, getCredentialBindingById, findCredentialBindingByIdentity, upsertCredentialBinding, disableCredentialBinding, listScriptConnections, listScriptConnectionsAsync, getScriptConnectionById, ScriptConnectionConflictError, connectionAuthInputFromFlat, upsertScriptConnection, refreshScriptConnection, setScriptConnectionEnabled, getScriptApiConnectionDescriptors, getScriptMcpConnectionDescriptors, getScriptApiTypes, getScriptMcpTypes, oauthAppToProviderConfig, getOAuthProviderConfig, getOAuthBindingTokenStatus, buildScriptCredentialBindingsWithFailures, buildScriptCredentialBindings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, buildSandboxedCommand, sandboxSpawnEnv, createCappedStreamState, snapshotCapped, readStreamCapped, writeBareImportShim, MIN_SCRIPT_WALL_CLOCK_MS, SCRIPT_LONG_TIMEOUT_HINT_MS, MAX_SCRIPT_WALL_CLOCK_MS, DEFAULT_SCRIPT_RESOURCES, require_typescript, checkImportAllowlist, validateScriptImports, runScript, getNextTargets, generateEdges, findEntryNodes, getSuccessors, definitionNodeIds, validateDefinition, applyDefinitionPatch, extractScriptSignature, extractArgsJsonSchema, getSavedScriptOwnerAgentId, runSavedScriptAsAgent, resolveSyncRunAs, AppNameSchema, ColumnKindSchema, isIso8601Date, SYSTEM_COLUMN_KINDS, SORTABLE_SYSTEM_DATE_COLUMNS, AppElementsSchema, AppDefinitionSchema, collectScriptReferences, parseAppDefinition, applyAppDefinitionPatch, upgradeAppDefinition, decodeAppDefinition, appDefinitionNeedsRepair, createApp, getApp, listApps, listAppRecords, updateApp, deleteApp, getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript };
183408
+ export { require_dist, isInvalidClientError, assertUrlSafe, publicEndpointSsrfOptions, discoverProtectedResourceMetadata, discoverAuthorizationServerMetadata, normalizeTokenEndpointAuthMethod, resolveAdvertisedTokenEndpointAuthMethod, authMethodForStoredClient, selectDcrTokenEndpointAuthMethod, registerClient, buildAuthorizeUrl, exchangeCodeForTokens, refreshMcpToken, revokeMcpToken, computeExpiresAt, getMcpOAuthToken, findReusableMcpOAuthClient, invalidateMcpOAuthClient, upsertMcpOAuthToken, applyMcpOAuthRefresh, markMcpOAuthTokenStatus, deleteMcpOAuthToken, insertMcpOAuthPending, consumeMcpOAuthPending, gcMcpOAuthPending, setMcpServerAuthMethod, ensureMcpToken, callMcpServerTool, listVendoredOpenapiEntries, ConnectionAuthInputSchema, connectionAuthSummary, listRelationalCredentialBindings, getCredentialBindingById, findCredentialBindingByIdentity, upsertCredentialBinding, disableCredentialBinding, listScriptConnections, listScriptConnectionsAsync, getScriptConnectionById, ScriptConnectionConflictError, connectionAuthInputFromFlat, upsertScriptConnection, refreshScriptConnection, setScriptConnectionEnabled, getScriptApiConnectionDescriptors, getScriptMcpConnectionDescriptors, getScriptApiTypes, getScriptMcpTypes, oauthAppToProviderConfig, getOAuthProviderConfig, getOAuthBindingTokenStatus, buildScriptCredentialBindingsWithFailures, buildScriptCredentialBindings, upsertScriptByName, getScript, getScriptById, getScriptVersion, listScripts, listScriptVersions, deleteScript, touchScratchScriptLastUsed, restoreScratchScriptLastUsedIfUnchanged, createScriptApi, listScriptApisForScript, getScriptApiById, getScriptApiSecret, updateScriptApi, rotateScriptApiSecret, deleteScriptApi, recordScriptApiUsage, buildSandboxedCommand, sandboxSpawnEnv, createCappedStreamState, snapshotCapped, readStreamCapped, writeBareImportShim, MIN_SCRIPT_WALL_CLOCK_MS, SCRIPT_LONG_TIMEOUT_HINT_MS, MAX_SCRIPT_WALL_CLOCK_MS, DEFAULT_SCRIPT_RESOURCES, require_typescript, checkImportAllowlist, validateScriptImports, runScript, getNextTargets, generateEdges, findEntryNodes, resolveValidationPort, getSuccessors, definitionNodeIds, validateDefinition, applyDefinitionPatch, extractScriptSignature, extractArgsJsonSchema, getSavedScriptOwnerAgentId, runSavedScriptAsAgent, resolveSyncRunAs, AppNameSchema, ColumnKindSchema, isIso8601Date, SYSTEM_COLUMN_KINDS, SORTABLE_SYSTEM_DATE_COLUMNS, AppElementsSchema, AppDefinitionSchema, collectScriptReferences, parseAppDefinition, applyAppDefinitionPatch, upgradeAppDefinition, decodeAppDefinition, appDefinitionNeedsRepair, createApp, getApp, listApps, listAppRecords, updateApp, deleteApp, getScriptAppTypes, SCRIPT_SDK_TYPES, scriptSdkTypesWithGeneratedApis, SCRIPT_STDLIB_MODULE_TYPES, scriptStdlibTypesWithGeneratedApis, typecheckWithAmbient, typecheckScript };