@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
@@ -4,7 +4,7 @@ import {
4
4
  CONTROLLER_COMMAND_TIMEOUT_MS,
5
5
  RuntimeHandleSchema,
6
6
  ControllerStatusResultSchema
7
- } from "./cli-hqhzg1qq.js";
7
+ } from "./cli-mzkwkbdy.js";
8
8
  import {
9
9
  getDbClient2,
10
10
  isRuntimePoolsEnabled,
@@ -21,7 +21,7 @@ import {
21
21
  upsertSwarmConfig2,
22
22
  getResolvedConfig2,
23
23
  init_db3
24
- } from "./cli-rqqsfz30.js";
24
+ } from "./cli-vcgscaan.js";
25
25
  import {
26
26
  runtimeStaleThresholdMinutes,
27
27
  getRuntimeInstanceById,
@@ -31,7 +31,7 @@ import {
31
31
  listRuntimeInstancesForPool,
32
32
  createWorkerTaskFollowUp,
33
33
  canClaim
34
- } from "./cli-kr2pmfqx.js";
34
+ } from "./cli-kgnkyabk.js";
35
35
  import {
36
36
  getRuntimeController2,
37
37
  getRuntimeControllerTarget2,
@@ -42,14 +42,14 @@ import {
42
42
  getPoolForAgent2,
43
43
  resolvePoolDelivery2,
44
44
  init_db
45
- } from "./cli-bn5kevnf.js";
45
+ } from "./cli-gx0j2khs.js";
46
46
  import {
47
47
  workflowEventBus2,
48
48
  init_event_bus
49
49
  } from "./cli-wt645v7q.js";
50
50
  import {
51
51
  isMultiRuntimeEnabled
52
- } from "./cli-7a91w22y.js";
52
+ } from "./cli-e8xyjvfc.js";
53
53
  import {
54
54
  import_websocket
55
55
  } from "./cli-b2mz5mjc.js";
@@ -57,16 +57,16 @@ import {
57
57
  canProvisionKind,
58
58
  createRuntimeProvider,
59
59
  init_runtime_providers
60
- } from "./cli-pw7v69vp.js";
60
+ } from "./cli-625tb7aq.js";
61
61
  import {
62
62
  mintRuntimeToken,
63
63
  init_users
64
- } from "./cli-fz9kewbh.js";
64
+ } from "./cli-sds5zzs8.js";
65
65
  import {
66
66
  TERMINAL_TASK_STATUSES,
67
67
  isTerminalTaskStatus,
68
68
  init_types
69
- } from "./cli-fpmsqq59.js";
69
+ } from "./cli-836ehxmt.js";
70
70
  import {
71
71
  init_zod
72
72
  } from "./cli-4chz1hye.js";
@@ -82,7 +82,7 @@ import {
82
82
  import {
83
83
  resolveWorkerApiUrl,
84
84
  init_worker_api_url
85
- } from "./cli-b1dfr1m4.js";
85
+ } from "./cli-7a6p4e65.js";
86
86
  import {
87
87
  buildImageTemplate,
88
88
  init_dispatch
@@ -522,7 +522,7 @@ async function recoverSessions(runtimeId, reason) {
522
522
  }
523
523
  if (!sessions.length)
524
524
  return;
525
- const { remediateTaskForDeadRuntime } = await import("./heartbeat-tww6yx1w.js");
525
+ const { remediateTaskForDeadRuntime } = await import("./heartbeat-zzfksckz.js");
526
526
  for (const session of sessions) {
527
527
  try {
528
528
  const task = await getTaskById2(session.taskId);
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isEnvFlagEnabled,
3
3
  init_env_flag
4
- } from "./cli-0hyhdkdk.js";
4
+ } from "./cli-cebvbc9t.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-242037k3.js";
@@ -15,17 +15,17 @@ import {
15
15
  init_secret_registry,
16
16
  upsertSwarmConfig2,
17
17
  init_db3
18
- } from "./cli-rqqsfz30.js";
18
+ } from "./cli-vcgscaan.js";
19
19
  import {
20
20
  createRuntimeProvider,
21
21
  init_runtime_providers
22
- } from "./cli-pw7v69vp.js";
22
+ } from "./cli-625tb7aq.js";
23
23
  import {
24
24
  closeSessionTokenConnections,
25
25
  init_session_token_connections,
26
26
  insertSessionToken,
27
27
  init_users
28
- } from "./cli-fz9kewbh.js";
28
+ } from "./cli-sds5zzs8.js";
29
29
  import {
30
30
  RuntimeControllerCreateSchema,
31
31
  RuntimeControllerUpdateSchema,
@@ -33,7 +33,7 @@ import {
33
33
  RuntimePoolUpdateSchema,
34
34
  RuntimePoolCreateAgentSchema,
35
35
  init_types
36
- } from "./cli-fpmsqq59.js";
36
+ } from "./cli-836ehxmt.js";
37
37
  import {
38
38
  scrubSecrets,
39
39
  registerVolatileSecret,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runStopHookSessionSummarySubprocess
3
- } from "./cli-z1ew8vbq.js";
3
+ } from "./cli-aa3tb29r.js";
4
4
  import {
5
5
  CONTEXT_FORMULA,
6
6
  getContextWindowSize,
@@ -15,7 +15,7 @@ import {
15
15
  } from "./cli-gx4rm0qx.js";
16
16
  import {
17
17
  swarmRuntimeInstanceId
18
- } from "./cli-7a91w22y.js";
18
+ } from "./cli-e8xyjvfc.js";
19
19
  import {
20
20
  detachedProcessGroup,
21
21
  registerProcessGroup,
@@ -47,7 +47,7 @@ import {
47
47
  import {
48
48
  withFileLock,
49
49
  init_file_lock
50
- } from "./cli-x5mq1fyq.js";
50
+ } from "./cli-74c1wpm0.js";
51
51
  import {
52
52
  CLAUDE_CREDENTIALS_HINT,
53
53
  validateClaudeCredentials,
@@ -66,7 +66,7 @@ import {
66
66
  import {
67
67
  isEnvFlagEnabled,
68
68
  init_env_flag
69
- } from "./cli-0hyhdkdk.js";
69
+ } from "./cli-cebvbc9t.js";
70
70
  import {
71
71
  scrubSecrets,
72
72
  init_secret_scrubber
@@ -1236,7 +1236,7 @@ class ClaudeAdapter2 {
1236
1236
  if (transport === "sdk" && isClaudeBridgeEffective(sourceEnv)) {
1237
1237
  throw new Error("CLAUDE_TRANSPORT=sdk cannot run with an effective Claude Bridge configuration. Select CLI transport or disable the bridge.");
1238
1238
  }
1239
- const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-56besmfz.js") : undefined;
1239
+ const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-53rcw5we.js") : undefined;
1240
1240
  claudeSdk?.validateClaudeSdkAdditionalArgs([
1241
1241
  ...claudeBinaryArgv.slice(1),
1242
1242
  ...config.additionalArgs ?? []
@@ -332,19 +332,19 @@ import {
332
332
  recordInlineScriptRun2,
333
333
  exports_db,
334
334
  init_db3
335
- } from "./cli-rqqsfz30.js";
335
+ } from "./cli-vcgscaan.js";
336
336
  import {
337
337
  getUserGrant2,
338
338
  init_rbac_roles
339
- } from "./cli-nx462e4v.js";
339
+ } from "./cli-qp2m4btv.js";
340
340
  import {
341
341
  ensurePricingSeeded2,
342
342
  ensureRbacSeeded2,
343
343
  ensureModelProfilesSeeded2
344
- } from "./cli-s48yvzb8.js";
344
+ } from "./cli-1n9gdg56.js";
345
345
  import {
346
346
  loadModelsDevCache
347
- } from "./cli-3p8fqcnh.js";
347
+ } from "./cli-vq9gqarq.js";
348
348
  import {
349
349
  buildCatalogEntries,
350
350
  listModelCatalog,
@@ -354,12 +354,12 @@ import {
354
354
  loadModelsCatalog,
355
355
  requestModelCatalogRefresh2,
356
356
  startPricingRefreshLoop2
357
- } from "./cli-k9z4zd4p.js";
357
+ } from "./cli-npfe9t1s.js";
358
358
  import {
359
359
  ampPinProviderError,
360
360
  ampPinCatalogError,
361
361
  ampModelError
362
- } from "./cli-sv5gb0yb.js";
362
+ } from "./cli-1eszr343.js";
363
363
  import {
364
364
  notifyAutomationPreflightFailure,
365
365
  isNeedsSetupFailure,
@@ -411,7 +411,7 @@ import {
411
411
  buildNodeInterpolationCtx,
412
412
  interpolateNodeConfig,
413
413
  scriptBodyInterpolationError
414
- } from "./cli-kmqgmcnb.js";
414
+ } from "./cli-0dxxwfkt.js";
415
415
  import {
416
416
  require_dist2,
417
417
  publicEndpointSsrfOptions,
@@ -449,8 +449,11 @@ import {
449
449
  runSavedScriptAsAgent,
450
450
  resolveSyncRunAs,
451
451
  AppNameSchema,
452
- ColumnKindSchema,
452
+ ScalarColumnKindSchema,
453
453
  isIso8601Date,
454
+ jsonColumnSizeLabel,
455
+ jsonColumnValueIssue,
456
+ isValidColumnValue,
454
457
  SYSTEM_COLUMN_KINDS,
455
458
  SORTABLE_SYSTEM_DATE_COLUMNS,
456
459
  AppElementsSchema,
@@ -468,14 +471,14 @@ import {
468
471
  deleteApp,
469
472
  typecheckScript,
470
473
  parseSkillContent
471
- } from "./cli-0bh477zn.js";
474
+ } from "./cli-73ezfhha.js";
472
475
  import {
473
476
  buildAuthorizationUrl,
474
477
  onAuthorizationRefreshed,
475
478
  ensureAuthorizationTokenOrThrow,
476
479
  ensureToken,
477
480
  ensureTokenOrThrow
478
- } from "./cli-sjyetj21.js";
481
+ } from "./cli-pygdsgh8.js";
479
482
  import {
480
483
  detachedProcessGroup,
481
484
  registerProcessGroup,
@@ -505,14 +508,14 @@ import {
505
508
  getSlackApp2,
506
509
  startSlackApp2,
507
510
  stopSlackApp2
508
- } from "./cli-vy0fay6k.js";
511
+ } from "./cli-tkf4x6ha.js";
509
512
  import {
510
513
  slackCode,
511
514
  slackMissingScopeMessage,
512
515
  withAutoJoin,
513
516
  externalChannelToolError2,
514
517
  getChannelBlockReason2
515
- } from "./cli-mfe7f7b5.js";
518
+ } from "./cli-v87dr6e3.js";
516
519
  import {
517
520
  BaseExecutor,
518
521
  postApprovalCancellationUpdates,
@@ -529,7 +532,7 @@ import {
529
532
  definitionNodeIds,
530
533
  validateDefinition,
531
534
  applyDefinitionPatch
532
- } from "./cli-tbhwrxpt.js";
535
+ } from "./cli-s9rr4gr2.js";
533
536
  import {
534
537
  workflowEventBus2,
535
538
  init_event_bus
@@ -558,10 +561,10 @@ import {
558
561
  isPublicRoute,
559
562
  findRoute,
560
563
  route
561
- } from "./cli-z071fb95.js";
564
+ } from "./cli-6eyncg0y.js";
562
565
  import {
563
566
  isMultiRuntimeEnabled
564
- } from "./cli-7a91w22y.js";
567
+ } from "./cli-e8xyjvfc.js";
565
568
  import {
566
569
  providerPath,
567
570
  AgentFsProvider,
@@ -570,7 +573,7 @@ import {
570
573
  import {
571
574
  getRuntimePool2,
572
575
  init_db
573
- } from "./cli-bn5kevnf.js";
576
+ } from "./cli-gx0j2khs.js";
574
577
  import {
575
578
  getMemoryRaterNames,
576
579
  REFERENCES_SOURCE_MAX_LENGTH,
@@ -595,7 +598,7 @@ import {
595
598
  import {
596
599
  canProvisionKind,
597
600
  init_runtime_providers
598
- } from "./cli-pw7v69vp.js";
601
+ } from "./cli-625tb7aq.js";
599
602
  import {
600
603
  findUserById,
601
604
  findUserByExternalId,
@@ -611,7 +614,7 @@ import {
611
614
  resolveSessionToken,
612
615
  fingerprintApiKey,
613
616
  init_users
614
- } from "./cli-fz9kewbh.js";
617
+ } from "./cli-sds5zzs8.js";
615
618
  import {
616
619
  isRbacEnabled,
617
620
  decideAdmission,
@@ -620,7 +623,7 @@ import {
620
623
  init_elevated_agents,
621
624
  can,
622
625
  init_rbac
623
- } from "./cli-1pa3rz69.js";
626
+ } from "./cli-8vverzf7.js";
624
627
  import {
625
628
  normalizeAssetKey,
626
629
  parseAssetKey,
@@ -680,7 +683,7 @@ import {
680
683
  KvNamespaceSchema,
681
684
  KvKeySchema,
682
685
  init_types
683
- } from "./cli-fpmsqq59.js";
686
+ } from "./cli-836ehxmt.js";
684
687
  import {
685
688
  generateDefaultClaudeMd2,
686
689
  generateDefaultSoulMd2,
@@ -689,15 +692,15 @@ import {
689
692
  taskAttachmentFetchCommand,
690
693
  taskAttachmentDisplayUrl,
691
694
  init_task_attachment_links
692
- } from "./cli-x5mq1fyq.js";
695
+ } from "./cli-74c1wpm0.js";
693
696
  import {
694
697
  getSlackConfiguration,
695
698
  init_config
696
- } from "./cli-2wag8973.js";
699
+ } from "./cli-qeaq3j6t.js";
697
700
  import {
698
701
  isSteeringEnabled2,
699
702
  init_steering_enabled
700
- } from "./cli-mhywgrrz.js";
703
+ } from "./cli-4sydckyj.js";
701
704
  import {
702
705
  findInterpolationTokens,
703
706
  interpolate,
@@ -751,7 +754,7 @@ import {
751
754
  import {
752
755
  init_package,
753
756
  package_default
754
- } from "./cli-ash6xxk7.js";
757
+ } from "./cli-1xsraagq.js";
755
758
  import {
756
759
  realtimeBus,
757
760
  init_bus
@@ -767,12 +770,12 @@ import {
767
770
  getAgentFsDefaultDriveId,
768
771
  isCombEnabled,
769
772
  init_constants2
770
- } from "./cli-w9g4sz81.js";
773
+ } from "./cli-gf2850q7.js";
771
774
  import {
772
775
  parseEnvFlag,
773
776
  isEnvFlagEnabled,
774
777
  init_env_flag
775
- } from "./cli-0hyhdkdk.js";
778
+ } from "./cli-cebvbc9t.js";
776
779
  import {
777
780
  getApiKey,
778
781
  init_api_key
@@ -21143,7 +21146,7 @@ class NotifyExecutor extends BaseExecutor {
21143
21146
  }
21144
21147
  }
21145
21148
  case "slack": {
21146
- const { getSlackApp } = await import("./app-kreq1gwg.js");
21149
+ const { getSlackApp } = await import("./app-6sv8mhzm.js");
21147
21150
  const app = getSlackApp();
21148
21151
  if (!app) {
21149
21152
  return {
@@ -24505,7 +24508,7 @@ function setPreloadedTools(server, names) {
24505
24508
  async function applyPreToolCall(name, args, requestInfo, inputSchema) {
24506
24509
  if (requestInfo.callOrigin !== "mcp")
24507
24510
  return { args };
24508
- const dispatcher = await import("./dispatcher-0s0mckqr.js");
24511
+ const dispatcher = await import("./dispatcher-zthpy4m1.js");
24509
24512
  const result = await dispatcher.dispatchPre("pre.tool.call", { tool: name, args, requestInfo }, inputSchema ? {
24510
24513
  validateModify: async (data) => {
24511
24514
  const schema = normalizeObjectSchema(inputSchema) ?? inputSchema;
@@ -29125,6 +29128,7 @@ init_db3();
29125
29128
  init_users();
29126
29129
  init_resolver();
29127
29130
  init_context_key();
29131
+ init_env_flag();
29128
29132
 
29129
29133
  // src/github/mentions.ts
29130
29134
  var GITHUB_BOT_NAME = process.env.GITHUB_BOT_NAME || "agent-swarm-bot";
@@ -29605,7 +29609,7 @@ function buildGithubContextKey(fullName, kind, number) {
29605
29609
  }
29606
29610
  async function cancelFlagEnabled(key) {
29607
29611
  const row = (await getSwarmConfigs2({ scope: "global", key }))[0];
29608
- return row?.value !== "false";
29612
+ return parseEnvFlag(row?.value, true);
29609
29613
  }
29610
29614
  var cancelOnUnassignEnabled = () => cancelFlagEnabled("github.cancelOnUnassign");
29611
29615
  var cancelOnReviewRequestRemovedEnabled = () => cancelFlagEnabled("github.cancelOnReviewRequestRemoved");
@@ -30302,7 +30306,7 @@ var PR_REVIEW_ACTION_ITEMS_QUERY = `query($owner: String!, $name: String!, $numb
30302
30306
  }
30303
30307
  }`;
30304
30308
  function skipNoopApprovalsEnabled() {
30305
- return process.env.GITHUB_SKIP_NOOP_APPROVALS?.trim().toLowerCase() !== "false";
30309
+ return parseEnvFlag(process.env.GITHUB_SKIP_NOOP_APPROVALS, true);
30306
30310
  }
30307
30311
  async function fetchPrReviewActionCounts(repo, prNumber, installationId) {
30308
30312
  const [owner, name] = repo.split("/");
@@ -33818,7 +33822,7 @@ async function notifySlack(text) {
33818
33822
  return;
33819
33823
  }
33820
33824
  try {
33821
- const { getSlackApp } = await import("./app-kreq1gwg.js");
33825
+ const { getSlackApp } = await import("./app-6sv8mhzm.js");
33822
33826
  const app = getSlackApp();
33823
33827
  if (!app) {
33824
33828
  console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
@@ -33889,7 +33893,7 @@ async function deleteJiraWebhook(webhookId) {
33889
33893
  console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
33890
33894
  }
33891
33895
  async function overwriteWebhookIds(next) {
33892
- const { getDbClient } = await import("./db-w505dwa8.js");
33896
+ const { getDbClient } = await import("./db-6nf1207q.js");
33893
33897
  await getDbClient().transaction(async (tx) => {
33894
33898
  const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
33895
33899
  if (!row) {
@@ -107239,7 +107243,7 @@ async function reloadGlobalConfigsAndIntegrations() {
107239
107243
  return runWithoutRequestAuth(() => reloadGlobalConfigsAndIntegrationsInner());
107240
107244
  }
107241
107245
  async function reloadGlobalConfigsAndIntegrationsInner() {
107242
- const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-x5aktmp8.js");
107246
+ const { getEmbeddingProvider, resetEmbeddingProvider } = await import("./index-x8xbyn1t.js");
107243
107247
  const wasEmbeddingsConfigured = getEmbeddingProvider().isConfigured();
107244
107248
  const updated = await loadGlobalConfigsIntoEnv(true);
107245
107249
  await syncTelemetryEnabled("settings").catch((err) => {
@@ -107255,10 +107259,10 @@ async function reloadGlobalConfigsAndIntegrationsInner() {
107255
107259
  integrations.push("embeddings");
107256
107260
  }
107257
107261
  if (!wasEmbeddingsConfigured && isEmbeddingsConfigured) {
107258
- import("./boot-reembed-e53x6b9v.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
107262
+ import("./boot-reembed-y3m0ydzj.js").then(({ runBootReembed }) => runBootReembed()).catch((err) => {
107259
107263
  console.error("[config-reload] memory backfill failed (non-fatal):", err);
107260
107264
  });
107261
- import("./boot-reembed-f6z923ny.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
107265
+ import("./boot-reembed-gvxjs2py.js").then(({ runBootReembedScripts }) => runBootReembedScripts()).catch((err) => {
107262
107266
  console.error("[config-reload] script backfill failed (non-fatal):", err);
107263
107267
  });
107264
107268
  }
@@ -107852,6 +107856,8 @@ function appIndexKey(model, column, value, rowId) {
107852
107856
  function isIndexed(column) {
107853
107857
  if (column.hidden === true)
107854
107858
  return false;
107859
+ if (column.kind === "json")
107860
+ return false;
107855
107861
  if (column.kind === "enum")
107856
107862
  return true;
107857
107863
  return column.index === true && (column.kind === "string" || column.kind === "boolean");
@@ -107869,15 +107875,7 @@ function indexKeys(model, definition, row) {
107869
107875
  function validValue(column, value) {
107870
107876
  if (value === null)
107871
107877
  return column.required !== true;
107872
- if (column.kind === "string")
107873
- return typeof value === "string";
107874
- if (column.kind === "number")
107875
- return typeof value === "number" && Number.isFinite(value);
107876
- if (column.kind === "boolean")
107877
- return typeof value === "boolean";
107878
- if (column.kind === "date")
107879
- return typeof value === "string" && isIso8601Date(value);
107880
- return typeof value === "string" && Boolean(column.enum?.includes(value));
107878
+ return isValidColumnValue(column, value);
107881
107879
  }
107882
107880
  function joinKeyColumnNames(definition) {
107883
107881
  const names = new Set;
@@ -107933,7 +107931,19 @@ function prepareValues(definition, values, mode, options = {}) {
107933
107931
  if (!Object.hasOwn(definition.columns, name))
107934
107932
  continue;
107935
107933
  const column = definition.columns[name];
107936
- if (!validValue(column, value)) {
107934
+ if (column.kind === "json" && value !== null) {
107935
+ const issue = jsonColumnValueIssue(value);
107936
+ if (issue === "unserializable") {
107937
+ issues.push({ path: `values.${name}`, message: "must be a valid json value" });
107938
+ } else if (issue === "non-finite") {
107939
+ issues.push({ path: `values.${name}`, message: "json value contains a non-finite number" });
107940
+ } else if (issue === "oversized") {
107941
+ issues.push({
107942
+ path: `values.${name}`,
107943
+ message: `json value exceeds the ${jsonColumnSizeLabel()} size limit`
107944
+ });
107945
+ }
107946
+ } else if (!validValue(column, value)) {
107937
107947
  issues.push({ path: `values.${name}`, message: `must be a valid ${column.kind} value` });
107938
107948
  }
107939
107949
  }
@@ -108460,17 +108470,6 @@ function applyTransform(value, transform) {
108460
108470
  }
108461
108471
  }
108462
108472
  }
108463
- function validForKind(column, value) {
108464
- if (column.kind === "string")
108465
- return typeof value === "string";
108466
- if (column.kind === "number")
108467
- return typeof value === "number" && Number.isFinite(value);
108468
- if (column.kind === "boolean")
108469
- return typeof value === "boolean";
108470
- if (column.kind === "date")
108471
- return typeof value === "string" && isIso8601Date(value);
108472
- return typeof value === "string" && Boolean(column.enum?.includes(value));
108473
- }
108474
108473
  function projectRecord(args) {
108475
108474
  const values = { [args.joinKey]: args.record.key };
108476
108475
  for (const [name, column] of args.bindings) {
@@ -108485,7 +108484,7 @@ function projectRecord(args) {
108485
108484
  warn(args.warnings, `column "${name}": transform "${binding.transform}" failed — ${error instanceof Error ? error.message : String(error)}`);
108486
108485
  value = null;
108487
108486
  }
108488
- if (value !== null && !validForKind(column, value)) {
108487
+ if (value !== null && !isValidColumnValue(column, value)) {
108489
108488
  warn(args.warnings, `column "${name}": field "${binding.field}" produced a value that is not a valid ${column.kind}`);
108490
108489
  value = null;
108491
108490
  }
@@ -108493,8 +108492,12 @@ function projectRecord(args) {
108493
108492
  }
108494
108493
  return values;
108495
108494
  }
108496
- function sameValue(existing, projected) {
108497
- return Object.is(existing ?? null, projected ?? null);
108495
+ function sameValue(column, existing, projected) {
108496
+ const before = existing ?? null;
108497
+ const after = projected ?? null;
108498
+ if (column?.kind === "json")
108499
+ return Bun.deepEquals(before, after);
108500
+ return Object.is(before, after);
108498
108501
  }
108499
108502
  async function resolvePair(appId, model, source) {
108500
108503
  const app = await getApp(appId);
@@ -108584,7 +108587,7 @@ function reconcile(args) {
108584
108587
  tally.created += 1;
108585
108588
  return;
108586
108589
  }
108587
- const differs = Object.entries(values).some(([name, value]) => !sameValue(existing[name], value));
108590
+ const differs = Object.entries(values).some(([name, value]) => !sameValue(modelDef.columns[name], existing[name], value));
108588
108591
  const updated = await patchAppRowUnlocked(appId, model, modelDef, existing.id, values, {
108589
108592
  allowSourceManaged: true,
108590
108593
  envelope,
@@ -108944,7 +108947,13 @@ init_db3();
108944
108947
  init_zod();
108945
108948
  init_db3();
108946
108949
  init_secret_scrubber();
108947
- var MigrationValueSchema = union2([string2(), number2(), boolean()]);
108950
+ var MigrationValueSchema = union2([
108951
+ string2(),
108952
+ number2(),
108953
+ boolean(),
108954
+ record2(string2(), unknown()),
108955
+ array2(unknown())
108956
+ ]);
108948
108957
  var AppMigrationDirectiveSchema = union2([
108949
108958
  object2({ set: MigrationValueSchema }).strict(),
108950
108959
  object2({
@@ -109174,15 +109183,7 @@ function isPurgeDirective(directive) {
109174
109183
  function columnAccepts(column, value) {
109175
109184
  if (value === null)
109176
109185
  return column.hidden === true || column.required !== true;
109177
- if (column.kind === "string")
109178
- return typeof value === "string";
109179
- if (column.kind === "number")
109180
- return typeof value === "number" && Number.isFinite(value);
109181
- if (column.kind === "boolean")
109182
- return typeof value === "boolean";
109183
- if (column.kind === "date")
109184
- return typeof value === "string" && isIso8601Date(value);
109185
- return typeof value === "string" && Boolean(column.enum?.includes(value));
109186
+ return isValidColumnValue(column, value);
109186
109187
  }
109187
109188
  function coerceValue(value, oldColumn, nextColumn) {
109188
109189
  if (columnAccepts(nextColumn, value))
@@ -110132,7 +110133,7 @@ var AppSyncStatusSchema = object2({
110132
110133
  });
110133
110134
  var UserConfigValuesSchema = record2(string2(), union2([string2(), number2(), boolean(), _null()]));
110134
110135
  var AppUserConfigFieldSchema = object2({
110135
- kind: ColumnKindSchema,
110136
+ kind: ScalarColumnKindSchema,
110136
110137
  default: union2([string2(), number2(), boolean()]).optional(),
110137
110138
  enum: array2(string2()).optional(),
110138
110139
  label: string2().optional()
@@ -110609,6 +110610,8 @@ async function resolveModel(appId, modelName, res) {
110609
110610
  return { app, model: app.definition.models[modelName] };
110610
110611
  }
110611
110612
  function parseFilterValue(raw, column) {
110613
+ if (column.kind === "json")
110614
+ throw new Error("json columns cannot be filtered");
110612
110615
  if (column.kind === "number") {
110613
110616
  if (!DECIMAL_NUMBER_PATTERN.test(raw))
110614
110617
  throw new Error("must be a decimal number");
@@ -110768,6 +110771,9 @@ function applyQuery(rows, query, model, params = {}, queryName = "<unnamed>") {
110768
110771
  return selected.slice(0, query.limit ?? 200);
110769
110772
  }
110770
110773
  async function selectAppRows(appId, modelName, model, filters, sortRaw, limit = 200, systemColumns = false) {
110774
+ const jsonFilterIssues = filters.flatMap((filter) => Object.hasOwn(model.columns, filter.column) && model.columns[filter.column].kind === "json" ? [{ path: `filter.${filter.column}`, message: "json columns cannot be filtered" }] : []);
110775
+ if (jsonFilterIssues.length > 0)
110776
+ throw new AppRowValidationError(jsonFilterIssues);
110771
110777
  const rows = (await listAppRows(appId, modelName, filters.flatMap((filter) => typeof filter.value === "string" || typeof filter.value === "number" || typeof filter.value === "boolean" ? [{ column: filter.column, value: filter.value }] : []))).filter((row) => rowMatchesFilters(row, filters));
110772
110778
  if (sortRaw) {
110773
110779
  const [column, dir, extra] = sortRaw.split(":");
@@ -110776,6 +110782,9 @@ async function selectAppRows(appId, modelName, model, filters, sortRaw, limit =
110776
110782
  { path: "sort", message: "must be <column>:<asc|desc> for a known column" }
110777
110783
  ]);
110778
110784
  }
110785
+ if (model.columns[column]?.kind === "json") {
110786
+ throw new AppRowValidationError([{ path: "sort", message: "json columns cannot be sorted" }]);
110787
+ }
110779
110788
  rows.sort((a, b) => {
110780
110789
  const result = compareValues(rowValue(a, column), rowValue(b, column), dir, SORTABLE_SYSTEM_DATE_COLUMNS.has(column) || Object.hasOwn(model.columns, column) && model.columns[column].kind === "date");
110781
110790
  return result;
@@ -111842,6 +111851,11 @@ function rowFilters(model, equals = {}) {
111842
111851
  { path: `equals.${column}`, message: "Unknown or hidden column." }
111843
111852
  ]);
111844
111853
  }
111854
+ if (declared?.kind === "json") {
111855
+ throw new AppRowValidationError([
111856
+ { path: `equals.${column}`, message: "json columns cannot be filtered" }
111857
+ ]);
111858
+ }
111845
111859
  if (!validValue(declared ?? { kind: SYSTEM_COLUMN_KINDS[column] }, value)) {
111846
111860
  throw new AppRowValidationError([
111847
111861
  { path: `equals.${column}`, message: "Filter value must match the column kind." }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RuntimeProviderKindSchema,
3
3
  init_types
4
- } from "./cli-fpmsqq59.js";
4
+ } from "./cli-836ehxmt.js";
5
5
  import {
6
6
  init_zod
7
7
  } from "./cli-4chz1hye.js";
@@ -4,11 +4,11 @@ import {
4
4
  getActivePricingRow2,
5
5
  insertPricingRow2,
6
6
  init_db3
7
- } from "./cli-rqqsfz30.js";
7
+ } from "./cli-vcgscaan.js";
8
8
  import {
9
9
  loadModelsDevCache,
10
10
  buildModelsDevSeedRows
11
- } from "./cli-3p8fqcnh.js";
11
+ } from "./cli-vq9gqarq.js";
12
12
  import {
13
13
  setRuntimeModelCatalog,
14
14
  init_runtime_model_catalog
@@ -6,7 +6,7 @@ import {
6
6
  getResolvedConfig2,
7
7
  getAllUsers2,
8
8
  init_db3
9
- } from "./cli-rqqsfz30.js";
9
+ } from "./cli-vcgscaan.js";
10
10
  import {
11
11
  scrubSecrets,
12
12
  init_secret_scrubber
@@ -9,7 +9,7 @@ import {
9
9
  acquireOAuthRefreshLock,
10
10
  releaseOAuthRefreshLock,
11
11
  init_oauth
12
- } from "./cli-rqqsfz30.js";
12
+ } from "./cli-vcgscaan.js";
13
13
  import {
14
14
  scrubSecrets,
15
15
  registerVolatileSecret,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isEnvFlagEnabled,
3
3
  init_env_flag
4
- } from "./cli-0hyhdkdk.js";
4
+ } from "./cli-cebvbc9t.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-242037k3.js";