@desplega.ai/agent-swarm 1.113.0 → 1.115.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 (237) hide show
  1. package/README.md +2 -2
  2. package/dist/{actions-q4n7cz6e.js → actions-17ya5wde.js} +8 -9
  3. package/dist/{app-es4nzc71.js → app-4f718yk0.js} +6 -6
  4. package/dist/{assistant-0x8ey0vs.js → assistant-ah7csnjz.js} +19 -18
  5. package/dist/{boot-reembed-69agkhv6.js → boot-reembed-4jpxhb25.js} +6 -6
  6. package/dist/{boot-reembed-p0ny05t8.js → boot-reembed-qata34xa.js} +5 -5
  7. package/dist/{boot-scrub-logs-yybrkmvr.js → boot-scrub-logs-tv48nn3z.js} +4 -4
  8. package/dist/{claude-adapter-mma9a1yr.js → claude-adapter-3csn5bks.js} +3 -3
  9. package/dist/{claude-managed-adapter-pv2nbqy4.js → claude-managed-adapter-kysmkz89.js} +2 -2
  10. package/dist/cli-0pygq9r1.js +429 -0
  11. package/dist/{cli-hsetkkd3.js → cli-12vb0xg6.js} +33 -9
  12. package/dist/{cli-ncfgsqbd.js → cli-15y7qhzp.js} +262 -33
  13. package/dist/{cli-7ga43spr.js → cli-1yjrbg1f.js} +1 -1
  14. package/dist/{cli-36ymmpmp.js → cli-3samkyap.js} +2 -2
  15. package/dist/cli-52fg7s7x.js +269 -0
  16. package/dist/{cli-hjhvekf4.js → cli-65ekje01.js} +11 -8
  17. package/dist/{cli-h3k622d0.js → cli-6aq8xhvm.js} +90 -3
  18. package/dist/{cli-f3qa069v.js → cli-7xje5amz.js} +1 -1
  19. package/dist/cli-86fdnerz.js +405 -0
  20. package/dist/{cli-9cy6nc5m.js → cli-8fjwym53.js} +1 -1
  21. package/dist/{cli-c3frqf65.js → cli-b23axgz4.js} +3 -3
  22. package/dist/{cli-a0t7vapf.js → cli-bc89my0z.js} +1 -1
  23. package/dist/{cli-bnzbn8j8.js → cli-beea4a3y.js} +73 -24
  24. package/dist/{cli-q21d49ac.js → cli-bw80ck94.js} +1 -1
  25. package/dist/{cli-pwc5e83c.js → cli-cchksf5q.js} +12 -7
  26. package/dist/{cli-30bbaveh.js → cli-cmw9rzy5.js} +2 -2
  27. package/dist/{cli-y6mrptcn.js → cli-cnwssmsr.js} +1 -1
  28. package/dist/{cli-r5g6ngtn.js → cli-dcca6j8m.js} +46 -5
  29. package/dist/{cli-tkmm5nf9.js → cli-e61fs2hp.js} +59 -2
  30. package/dist/{cli-6wscj9z0.js → cli-e7306swv.js} +14 -14
  31. package/dist/{cli-dcfyyh3t.js → cli-ftyf58xj.js} +2 -2
  32. package/dist/{cli-4xyj9jtq.js → cli-hrhye2rm.js} +1062 -478
  33. package/dist/cli-jkhwmmgg.js +136 -0
  34. package/dist/{cli-y4ycrnjc.js → cli-k3y4z3h5.js} +1 -1
  35. package/dist/{cli-6xd0bvf8.js → cli-ma04faw5.js} +1 -1
  36. package/dist/{cli-2fc97xm5.js → cli-mnbgv3w7.js} +4 -4
  37. package/dist/{cli-trmapn9k.js → cli-pet3aev6.js} +95 -10
  38. package/dist/{cli-z46pnksz.js → cli-q1rx7g0d.js} +175 -28
  39. package/dist/{cli-qwgtacd6.js → cli-r9f6ngrf.js} +1244 -336
  40. package/dist/{cli-gtkqc144.js → cli-shvaxw27.js} +13 -7
  41. package/dist/{cli-ywez6yps.js → cli-sq7f72d6.js} +1 -1
  42. package/dist/cli-t0vqevnm.js +393 -0
  43. package/dist/{cli-tbw13sx8.js → cli-tece6zgm.js} +1 -1
  44. package/dist/{cli-bgvskydy.js → cli-tffvrh6j.js} +1 -1
  45. package/dist/cli-wh91zby6.js +187222 -0
  46. package/dist/{cli-anrj584m.js → cli-xz9aq0rf.js} +1 -1
  47. package/dist/{cli-mq580e06.js → cli-zsrdty74.js} +18 -18
  48. package/dist/cli.js +32 -15
  49. package/dist/{codex-adapter-5cmy858w.js → codex-adapter-de3w0nch.js} +10 -10
  50. package/dist/{codex-session-runner-46q8mrba.js → codex-session-runner-bnw8cysk.js} +10 -10
  51. package/dist/{commands-z5dbwta3.js → commands-hch4e2k1.js} +4 -4
  52. package/dist/{db-bbgahh4z.js → db-p3h2j06x.js} +14 -4
  53. package/dist/{handlers-6b44317z.js → handlers-9er4zx9q.js} +17 -31
  54. package/dist/{hook-sbp5fmps.js → hook-4axs756z.js} +7 -7
  55. package/dist/{http-2xz43gz3.js → http-809fvtz2.js} +1934 -886
  56. package/dist/{index-wz1ea15p.js → index-2dgfj9av.js} +3 -3
  57. package/dist/{index-nhat35em.js → index-47em3d2n.js} +14 -11
  58. package/dist/{index-5ghxn8s6.js → index-9fqaktjr.js} +12 -9
  59. package/dist/{index-0gzmqj4k.js → index-9ht8gr56.js} +13 -10
  60. package/dist/{index-vfedgdw6.js → index-rm85cfdx.js} +368 -40
  61. package/dist/{index-ykvs43z4.js → index-t2snazez.js} +4 -4
  62. package/dist/{keepalive-62gfj91d.js → keepalive-3cps6e3e.js} +7 -6
  63. package/dist/{lead-ag0akn0v.js → lead-fkk95wgq.js} +36 -32
  64. package/dist/{maintenance-xxrrzk5x.js → maintenance-fweqh0yj.js} +6 -6
  65. package/dist/{mistral-conversations-26yrnbf1.js → mistral-conversations-7gqnz2wt.js} +7 -7
  66. package/dist/oauth-refresh-sweep-sycqtbph.js +114 -0
  67. package/dist/{onboard-64zyfcbs.js → onboard-cy0rkgvx.js} +2 -2
  68. package/dist/{opencode-adapter-mqsxr170.js → opencode-adapter-p6bxnbm4.js} +2 -2
  69. package/dist/{otel-zjd9zaxs.js → otel-g299k41b.js} +2 -2
  70. package/dist/{otel-impl-b86qseaa.js → otel-impl-wbns8hf7.js} +1 -1
  71. package/dist/{pi-mono-adapter-kxjxpfgy.js → pi-mono-adapter-05sck1ds.js} +17 -109
  72. package/dist/{pricing-refresh-cgtkffpa.js → pricing-refresh-0hvazmkf.js} +6 -6
  73. package/dist/rbac-roles-kfesjy9y.js +28 -0
  74. package/dist/rbac-roles-mwcwhbxc.js +283 -0
  75. package/dist/{seed-pricing-1r1y1xkq.js → seed-pricing-h2kdq4cq.js} +5 -5
  76. package/dist/{setup-mkcgkjf7.js → setup-8506q97w.js} +2 -2
  77. package/dist/{worker-351sze63.js → worker-4r5c6zyb.js} +36 -32
  78. package/openapi.json +1327 -20
  79. package/package.json +3 -3
  80. package/src/agentmail/handlers.ts +16 -6
  81. package/src/agentmail/templates.ts +25 -5
  82. package/src/be/audit-user.ts +28 -4
  83. package/src/be/db-queries/oauth.ts +42 -0
  84. package/src/be/db.ts +314 -28
  85. package/src/be/identity.ts +79 -0
  86. package/src/be/mcp-proxy.ts +132 -0
  87. package/src/be/migrations/109_rbac_roles.sql +79 -0
  88. package/src/be/migrations/111_oauth_credential_bindings.sql +6 -0
  89. package/src/be/migrations/112_script_connections_graphql.sql +96 -0
  90. package/src/be/migrations/113_task_routing_affinity.sql +9 -0
  91. package/src/be/migrations/114_backfill_gpt_5_6_pricing.sql +15 -0
  92. package/src/be/modelsdev-cache.json +135 -0
  93. package/src/be/oauth-credential-bindings.ts +35 -0
  94. package/src/be/oauth-refresh-sweep.ts +159 -0
  95. package/src/be/rbac-audit.ts +52 -13
  96. package/src/be/rbac-roles.ts +424 -0
  97. package/src/be/script-connections.ts +459 -40
  98. package/src/be/script-credential-broker.ts +29 -3
  99. package/src/be/scripts/typecheck.ts +51 -7
  100. package/src/be/seed-scripts/catalog/catalog-report.inline.ts +325 -24
  101. package/src/be/seed-scripts/catalog/catalog-report.ts +325 -24
  102. package/src/be/users.ts +24 -0
  103. package/src/cli.tsx +17 -0
  104. package/src/github/handlers.ts +10 -9
  105. package/src/github/templates.ts +45 -9
  106. package/src/gitlab/handlers.ts +20 -8
  107. package/src/gitlab/templates.ts +18 -6
  108. package/src/heartbeat/heartbeat.ts +143 -21
  109. package/src/http/all-routes.ts +3 -0
  110. package/src/http/approval-requests.ts +12 -0
  111. package/src/http/config.ts +44 -10
  112. package/src/http/core.ts +30 -3
  113. package/src/http/favorites.ts +1 -5
  114. package/src/http/index.ts +25 -1
  115. package/src/http/mcp-oauth.ts +2 -0
  116. package/src/http/mcp-servers.ts +44 -3
  117. package/src/http/oauth-generic.ts +105 -0
  118. package/src/http/poll.ts +20 -3
  119. package/src/http/script-connection-proxy.ts +116 -0
  120. package/src/http/script-connections.ts +1657 -0
  121. package/src/http/scripts.ts +27 -7
  122. package/src/http/skills.ts +11 -0
  123. package/src/http/tasks.ts +27 -13
  124. package/src/http/x.ts +6 -2
  125. package/src/integrations/kapso/inbound.ts +23 -6
  126. package/src/jira/sync.ts +111 -17
  127. package/src/jira/templates.ts +10 -2
  128. package/src/mcp-client/http-client.ts +194 -0
  129. package/src/oauth/app-validation.ts +16 -0
  130. package/src/oauth/ensure-token.ts +69 -14
  131. package/src/oauth/mcp-wrapper.ts +15 -0
  132. package/src/oauth/wrapper.ts +48 -20
  133. package/src/prompts/session-templates.ts +3 -3
  134. package/src/providers/codex-models.ts +100 -30
  135. package/src/providers/modelsdev-reasoning.json +51 -0
  136. package/src/providers/pi-mono-mcp-client.ts +2 -133
  137. package/src/providers/reasoning-effort.ts +11 -5
  138. package/src/rbac/admission.ts +68 -0
  139. package/src/rbac/index.ts +2 -0
  140. package/src/rbac/legacy-policy.ts +12 -0
  141. package/src/rbac/permissions.ts +48 -0
  142. package/src/scheduler/scheduler.ts +9 -1
  143. package/src/scripts-runtime/api-client.ts +151 -19
  144. package/src/scripts-runtime/api-types.ts +38 -6
  145. package/src/scripts-runtime/credential-broker/default-bindings.ts +1 -0
  146. package/src/scripts-runtime/credential-broker/types.ts +8 -0
  147. package/src/scripts-runtime/ctx.ts +11 -1
  148. package/src/scripts-runtime/eval-harness.ts +5 -1
  149. package/src/scripts-runtime/executors/types.ts +2 -1
  150. package/src/scripts-runtime/loader.ts +3 -1
  151. package/src/scripts-runtime/mcp-client.ts +87 -0
  152. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  153. package/src/scripts-runtime/types/stdlib.d.ts +6 -0
  154. package/src/scripts-runtime/types/swarm-sdk.d.ts +19 -0
  155. package/src/server-user.ts +114 -59
  156. package/src/server.ts +12 -0
  157. package/src/slack/assistant.ts +14 -6
  158. package/src/slack/enrich.ts +17 -0
  159. package/src/slack/handlers.ts +8 -22
  160. package/src/slack/responses.ts +91 -1
  161. package/src/slack/thread-buffer.ts +6 -3
  162. package/src/slack/watcher.ts +9 -6
  163. package/src/tasks/worker-follow-up.ts +100 -3
  164. package/src/tests/agentmail-handlers.test.ts +32 -3
  165. package/src/tests/approval-requests.test.ts +61 -0
  166. package/src/tests/audit-user.test.ts +47 -1
  167. package/src/tests/codex-adapter.test.ts +46 -23
  168. package/src/tests/credential-broker.test.ts +5 -2
  169. package/src/tests/delete-page-tool.test.ts +197 -0
  170. package/src/tests/github-handlers.test.ts +28 -2
  171. package/src/tests/gitlab-handlers.test.ts +125 -0
  172. package/src/tests/heartbeat.test.ts +48 -3
  173. package/src/tests/identity.test.ts +117 -0
  174. package/src/tests/jira-sync.test.ts +99 -1
  175. package/src/tests/kapso-inbound.test.ts +7 -0
  176. package/src/tests/mcp-tools-user.test.ts +60 -6
  177. package/src/tests/model-control.test.ts +8 -2
  178. package/src/tests/oauth-credential-bindings.test.ts +490 -0
  179. package/src/tests/oauth-refresh-sweep.test.ts +160 -0
  180. package/src/tests/pool-affinity.test.ts +401 -0
  181. package/src/tests/prompt-template-remaining.test.ts +2 -2
  182. package/src/tests/rbac-admission-e2e.test.ts +386 -0
  183. package/src/tests/rbac-admission.test.ts +492 -0
  184. package/src/tests/rbac-e2e-helpers.ts +3 -0
  185. package/src/tests/rbac-engine.test.ts +50 -0
  186. package/src/tests/rbac-mcp-admission-e2e.test.ts +362 -0
  187. package/src/tests/rbac-roles.test.ts +328 -0
  188. package/src/tests/reasoning-effort.test.ts +15 -2
  189. package/src/tests/schedule-target-type.test.ts +50 -0
  190. package/src/tests/scheduled-tasks.test.ts +40 -0
  191. package/src/tests/script-apis-mcp.test.ts +37 -13
  192. package/src/tests/script-connections-http.test.ts +1158 -0
  193. package/src/tests/script-connections-mcp.test.ts +894 -0
  194. package/src/tests/script-connections.test.ts +754 -6
  195. package/src/tests/scripts-external-api.test.ts +49 -1
  196. package/src/tests/scripts-runtime-secret-egress.test.ts +1 -0
  197. package/src/tests/scripts-runtime.test.ts +291 -0
  198. package/src/tests/seed-scripts.test.ts +36 -0
  199. package/src/tests/slack-identity-resolution.test.ts +37 -3
  200. package/src/tests/slack-inline-output.test.ts +65 -0
  201. package/src/tests/slack-thread-buffer.test.ts +28 -0
  202. package/src/tests/tool-annotations.test.ts +1 -0
  203. package/src/tests/user-token-rest-auth.test.ts +140 -1
  204. package/src/tests/workflow-swarm-script.test.ts +44 -0
  205. package/src/tests/workflow-triggers-v2.test.ts +300 -1
  206. package/src/tools/credential-bindings/tool.ts +277 -18
  207. package/src/tools/delete-page.ts +145 -0
  208. package/src/tools/mcp-servers/mcp-server-delete.ts +7 -4
  209. package/src/tools/request-human-input.ts +2 -0
  210. package/src/tools/resolve-user.ts +77 -27
  211. package/src/tools/script-apis.ts +62 -3
  212. package/src/tools/script-connections/tool.ts +275 -31
  213. package/src/tools/send-task.ts +15 -1
  214. package/src/tools/task-action.ts +34 -2
  215. package/src/tools/templates.ts +53 -1
  216. package/src/tools/tool-config.ts +2 -1
  217. package/src/tools/utils.ts +2 -0
  218. package/src/tools/workflows/create-workflow.ts +8 -1
  219. package/src/tools/workflows/update-workflow.ts +11 -2
  220. package/src/types.ts +90 -11
  221. package/src/utils/scoped-resource.ts +25 -0
  222. package/src/workflows/executors/human-in-the-loop.ts +1 -0
  223. package/src/workflows/executors/swarm-script.ts +7 -1
  224. package/src/workflows/triggers.ts +146 -18
  225. package/templates/skills/swarm-scripts/content.md +33 -8
  226. package/dist/cli-bgef578c.js +0 -771
  227. package/dist/cli-c9mtm09b.js +0 -43
  228. package/dist/cli-ceewqajw.js +0 -1698
  229. package/dist/{anthropic-messages-8nc6r2dw.js → anthropic-messages-kq3pjhbp.js} +6 -6
  230. package/dist/{azure-openai-responses-6yfzw3qw.js → azure-openai-responses-gm1ejtmn.js} +7 -7
  231. package/dist/{cli-vbraamxr.js → cli-6b4wwmm8.js} +9 -9
  232. package/dist/{cli-2r7s8jhp.js → cli-sznberje.js} +3 -3
  233. package/dist/{google-generative-ai-vfq6ymz9.js → google-generative-ai-hyrra2jm.js} +3 -3
  234. package/dist/{google-vertex-mj5y5rfj.js → google-vertex-8bs2pzgn.js} +3 -3
  235. package/dist/{openai-codex-responses-8h6kvfv8.js → openai-codex-responses-3nkvje79.js} +4 -4
  236. package/dist/{openai-completions-x6kjnqjd.js → openai-completions-0asftkwg.js} +11 -11
  237. package/dist/{openai-responses-7jwyz3ds.js → openai-responses-pmatek45.js} +10 -10
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_package,
3
3
  package_default
4
- } from "./cli-c3frqf65.js";
4
+ } from "./cli-b23axgz4.js";
5
5
 
6
6
  // src/commands/shared/client-config.ts
7
7
  init_package();
@@ -2,6 +2,7 @@ import {
2
2
  taskAttachmentDisplayUrl
3
3
  } from "./cli-wspgs9bt.js";
4
4
  import {
5
+ buildRoutingAffinityFromAgent,
5
6
  createTaskExtended,
6
7
  getActiveTaskCount,
7
8
  getAgentById,
@@ -17,7 +18,7 @@ import {
17
18
  init_templates1 as init_templates,
18
19
  normalizeDateRequired,
19
20
  resolveTemplate
20
- } from "./cli-ncfgsqbd.js";
21
+ } from "./cli-15y7qhzp.js";
21
22
 
22
23
  // src/be/db-queries/tracker.ts
23
24
  init_date_utils();
@@ -147,6 +148,13 @@ function isGracefulResumePinEnabled() {
147
148
  var RESUME_GENERATION_TAG_PREFIX = "resume-generation:";
148
149
  var CRASH_RECOVERY_PIN_TAG = "crash-recovery-pin";
149
150
  var GRACEFUL_SHUTDOWN_PIN_TAG = "graceful-shutdown-pin";
151
+ var REBOOT_RETRY_PIN_TAG = "reboot-retry-pin";
152
+ function getPinCandidateAgent(agentId) {
153
+ const candidate = getAgentById(agentId);
154
+ if (!candidate || candidate.status === "offline")
155
+ return null;
156
+ return candidate;
157
+ }
150
158
  function getResumeGeneration(task) {
151
159
  const tag = task.tags.find((value) => value.startsWith(RESUME_GENERATION_TAG_PREFIX));
152
160
  if (!tag)
@@ -247,8 +255,8 @@ function createResumeFollowUp(args) {
247
255
  }
248
256
  let preferredAgentId;
249
257
  if (parent.agentId) {
250
- const candidate = getAgentById(parent.agentId);
251
- if (candidate && candidate.status !== "offline") {
258
+ const candidate = getPinCandidateAgent(parent.agentId);
259
+ if (candidate) {
252
260
  const lastActivity = candidate.lastActivityAt ? Date.parse(candidate.lastActivityAt) : 0;
253
261
  const fresh = Number.isFinite(lastActivity) && Date.now() - lastActivity < WORKER_LIVENESS_WINDOW_SECONDS * 1000;
254
262
  const activeCount = getActiveTaskCount(candidate.id);
@@ -289,6 +297,7 @@ function createResumeFollowUp(args) {
289
297
  if (args.reason === "graceful_shutdown" && preferredAgentId !== undefined) {
290
298
  tags.push(GRACEFUL_SHUTDOWN_PIN_TAG);
291
299
  }
300
+ const routingAffinity = parent.agentId ? buildRoutingAffinityFromAgent(parent.agentId) ?? undefined : undefined;
292
301
  const created = createTaskExtended(followUpDescription, {
293
302
  agentId: preferredAgentId,
294
303
  creatorAgentId: parent.creatorAgentId,
@@ -296,7 +305,8 @@ function createResumeFollowUp(args) {
296
305
  taskType: "resume",
297
306
  tags,
298
307
  priority,
299
- parentTaskId: parent.id
308
+ parentTaskId: parent.id,
309
+ routingAffinity
300
310
  });
301
311
  const repointed = repointTrackerSyncBySwarmId(parent.id, created.id);
302
312
  if (repointed > 0) {
@@ -338,5 +348,36 @@ function createRerouteDecisionTask(args) {
338
348
  });
339
349
  return { kind: "created", task: created };
340
350
  }
351
+ function createPoolStarvationDecisionTask(args) {
352
+ const { original } = args;
353
+ const leadAgent = getLeadAgent();
354
+ if (!leadAgent)
355
+ return { kind: "skipped", reason: "lead_not_found" };
356
+ if (hasNonTerminalRerouteDecisionChild(original.id)) {
357
+ return { kind: "skipped", reason: "duplicate_exists" };
358
+ }
359
+ const affinity = original.routingAffinity;
360
+ const requiredRole = affinity?.role ?? "(none declared)";
361
+ const requiredCapabilities = affinity?.capabilities && affinity.capabilities.length > 0 ? affinity.capabilities.join(", ") : "(none declared)";
362
+ const attachmentsBlock = formatAttachmentsBlock(getTaskAttachments(original.id));
363
+ const decision = resolveTemplate("task.pool.starved.decision", {
364
+ original_task_id: original.id,
365
+ task_desc: original.task.slice(0, 200),
366
+ required_role: requiredRole,
367
+ required_capabilities: requiredCapabilities,
368
+ artifacts_block: attachmentsBlock
369
+ });
370
+ const created = createTaskExtended(decision.text, {
371
+ agentId: leadAgent.id,
372
+ creatorAgentId: original.creatorAgentId,
373
+ source: "system",
374
+ taskType: "reroute-decision",
375
+ tags: ["reroute-decision", "pool-starvation"],
376
+ priority: Math.min(100, (original.priority ?? 50) + 10),
377
+ parentTaskId: original.id,
378
+ inheritParentOutputSchema: false
379
+ });
380
+ return { kind: "created", task: created };
381
+ }
341
382
 
342
- export { getTrackerSync, getTrackerSyncByExternalId, createTrackerSyncIfAbsent, updateTrackerSyncSwarmId, repointTrackerSyncBySwarmId, createTrackerSync, updateTrackerSync, deleteTrackerSync, hasTrackerDelivery, markTrackerDelivery, getAllTrackerSyncs, createTrackerAgentMapping, getResumeGeneration, getNextResumeGeneration, createWorkerTaskFollowUp, createResumeFollowUp, createRerouteDecisionTask };
383
+ export { getTrackerSync, getTrackerSyncByExternalId, createTrackerSyncIfAbsent, updateTrackerSyncSwarmId, repointTrackerSyncBySwarmId, createTrackerSync, updateTrackerSync, deleteTrackerSync, hasTrackerDelivery, markTrackerDelivery, getAllTrackerSyncs, createTrackerAgentMapping, REBOOT_RETRY_PIN_TAG, getPinCandidateAgent, getResumeGeneration, getNextResumeGeneration, createWorkerTaskFollowUp, createResumeFollowUp, createRerouteDecisionTask, createPoolStarvationDecisionTask };
@@ -781,6 +781,57 @@ var modelsdev_reasoning_default = {
781
781
  ]
782
782
  }
783
783
  ]
784
+ },
785
+ "gpt-5.6-sol": {
786
+ id: "gpt-5.6-sol",
787
+ reasoning: true,
788
+ reasoningOptions: [
789
+ {
790
+ type: "effort",
791
+ values: [
792
+ "none",
793
+ "low",
794
+ "medium",
795
+ "high",
796
+ "xhigh",
797
+ "max"
798
+ ]
799
+ }
800
+ ]
801
+ },
802
+ "gpt-5.6-terra": {
803
+ id: "gpt-5.6-terra",
804
+ reasoning: true,
805
+ reasoningOptions: [
806
+ {
807
+ type: "effort",
808
+ values: [
809
+ "none",
810
+ "low",
811
+ "medium",
812
+ "high",
813
+ "xhigh",
814
+ "max"
815
+ ]
816
+ }
817
+ ]
818
+ },
819
+ "gpt-5.6-luna": {
820
+ id: "gpt-5.6-luna",
821
+ reasoning: true,
822
+ reasoningOptions: [
823
+ {
824
+ type: "effort",
825
+ values: [
826
+ "none",
827
+ "low",
828
+ "medium",
829
+ "high",
830
+ "xhigh",
831
+ "max"
832
+ ]
833
+ }
834
+ ]
784
835
  }
785
836
  },
786
837
  openrouter: {
@@ -4035,7 +4086,7 @@ var modelsdev_reasoning_default = {
4035
4086
  };
4036
4087
 
4037
4088
  // src/providers/reasoning-effort.ts
4038
- var REASONING_EFFORT_LEVELS = ["off", "low", "medium", "high", "xhigh"];
4089
+ var REASONING_EFFORT_LEVELS = ["off", "low", "medium", "high", "xhigh", "max"];
4039
4090
  var SNAPSHOT = modelsdev_reasoning_default;
4040
4091
  var FALLBACK_LEVELS = ["low", "medium", "high"];
4041
4092
  var EFFORT_VALUE_MAP = {
@@ -4043,7 +4094,8 @@ var EFFORT_VALUE_MAP = {
4043
4094
  low: "low",
4044
4095
  medium: "medium",
4045
4096
  high: "high",
4046
- xhigh: "xhigh"
4097
+ xhigh: "xhigh",
4098
+ max: "max"
4047
4099
  };
4048
4100
  function splitProviderModel(model) {
4049
4101
  const slash = model.indexOf("/");
@@ -4080,6 +4132,9 @@ function applyHarnessOverrides(harness, model, entry, levels) {
4080
4132
  result = ["off", ...result];
4081
4133
  }
4082
4134
  }
4135
+ if (harness !== "codex") {
4136
+ result = result.filter((l) => l !== "max");
4137
+ }
4083
4138
  if (harness === "codex") {
4084
4139
  const isCodexMax = /-codex-max$/.test(model);
4085
4140
  const isCodexNonMax = /-codex$/.test(model) && !isCodexMax;
@@ -4133,6 +4188,8 @@ var ANTHROPIC_BUDGET_TOKENS_BY_LEVEL = {
4133
4188
  };
4134
4189
  function buildOpencodeReasoningOptions(providerId, level) {
4135
4190
  if (providerId === "anthropic") {
4191
+ if (level === "max")
4192
+ return { reasoningEffort: level };
4136
4193
  return { thinking: { type: "enabled", budgetTokens: ANTHROPIC_BUDGET_TOKENS_BY_LEVEL[level] } };
4137
4194
  }
4138
4195
  if (providerId === "openrouter") {
@@ -10,29 +10,29 @@ import {
10
10
  BASE_SUMMARIZE_PROMPT,
11
11
  SummaryWithRatingsSchema,
12
12
  buildSummaryWithRatingsPrompt
13
- } from "./cli-dcfyyh3t.js";
13
+ } from "./cli-ftyf58xj.js";
14
14
  import {
15
15
  getValidCodexOAuth,
16
16
  persistCodexOAuth
17
17
  } from "./cli-tk9vyqzh.js";
18
18
  import {
19
19
  init_zod
20
- } from "./cli-q21d49ac.js";
20
+ } from "./cli-bw80ck94.js";
21
21
  import {
22
22
  exports_external
23
- } from "./cli-anrj584m.js";
23
+ } from "./cli-xz9aq0rf.js";
24
24
  import {
25
25
  bedrockConverseStreamApi,
26
26
  setBedrockProviderModule
27
27
  } from "./cli-xw7p4wkq.js";
28
- import {
29
- getProviderEnvValue
30
- } from "./cli-4wgngmwv.js";
31
28
  import {
32
29
  parseJsonWithRepair,
33
30
  parseStreamingJson,
34
31
  repairJson
35
32
  } from "./cli-zyxs93y9.js";
33
+ import {
34
+ getProviderEnvValue
35
+ } from "./cli-4wgngmwv.js";
36
36
  import {
37
37
  AssistantMessageEventStream,
38
38
  EventStream,
@@ -18654,7 +18654,7 @@ function amazonBedrockProvider() {
18654
18654
  }
18655
18655
 
18656
18656
  // node_modules/@earendil-works/pi-ai/dist/api/openai-completions.lazy.js
18657
- var openAICompletionsApi = () => lazyApi(() => import("./openai-completions-x6kjnqjd.js"));
18657
+ var openAICompletionsApi = () => lazyApi(() => import("./openai-completions-0asftkwg.js"));
18658
18658
 
18659
18659
  // node_modules/@earendil-works/pi-ai/dist/auth/helpers.js
18660
18660
  function envApiKeyAuth(name, envVars) {
@@ -18703,7 +18703,7 @@ function antLingProvider() {
18703
18703
  }
18704
18704
 
18705
18705
  // node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.lazy.js
18706
- var anthropicMessagesApi = () => lazyApi(() => import("./anthropic-messages-8nc6r2dw.js"));
18706
+ var anthropicMessagesApi = () => lazyApi(() => import("./anthropic-messages-kq3pjhbp.js"));
18707
18707
 
18708
18708
  // node_modules/@earendil-works/pi-ai/dist/utils/oauth/load.js
18709
18709
  var __rewriteRelativeImportExtension = function(path, preserveJsx) {
@@ -18738,7 +18738,7 @@ function anthropicProvider() {
18738
18738
  }
18739
18739
 
18740
18740
  // node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.lazy.js
18741
- var azureOpenAIResponsesApi = () => lazyApi(() => import("./azure-openai-responses-6yfzw3qw.js"));
18741
+ var azureOpenAIResponsesApi = () => lazyApi(() => import("./azure-openai-responses-gm1ejtmn.js"));
18742
18742
 
18743
18743
  // node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js
18744
18744
  function azureOpenAIResponsesProvider() {
@@ -18764,7 +18764,7 @@ function cerebrasProvider() {
18764
18764
  }
18765
18765
 
18766
18766
  // node_modules/@earendil-works/pi-ai/dist/api/openai-responses.lazy.js
18767
- var openAIResponsesApi = () => lazyApi(() => import("./openai-responses-7jwyz3ds.js"));
18767
+ var openAIResponsesApi = () => lazyApi(() => import("./openai-responses-pmatek45.js"));
18768
18768
 
18769
18769
  // node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js
18770
18770
  var CLOUDFLARE_API_KEY = "CLOUDFLARE_API_KEY";
@@ -18923,7 +18923,7 @@ function githubCopilotProvider() {
18923
18923
  }
18924
18924
 
18925
18925
  // node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.lazy.js
18926
- var googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-vfq6ymz9.js"));
18926
+ var googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-hyrra2jm.js"));
18927
18927
 
18928
18928
  // node_modules/@earendil-works/pi-ai/dist/providers/google.js
18929
18929
  function googleProvider() {
@@ -18938,7 +18938,7 @@ function googleProvider() {
18938
18938
  }
18939
18939
 
18940
18940
  // node_modules/@earendil-works/pi-ai/dist/api/google-vertex.lazy.js
18941
- var googleVertexApi = () => lazyApi(() => import("./google-vertex-mj5y5rfj.js"));
18941
+ var googleVertexApi = () => lazyApi(() => import("./google-vertex-8bs2pzgn.js"));
18942
18942
 
18943
18943
  // node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js
18944
18944
  var VERTEX_ADC_PATH = "~/.config/gcloud/application_default_credentials.json";
@@ -19029,7 +19029,7 @@ function minimaxCnProvider() {
19029
19029
  }
19030
19030
 
19031
19031
  // node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.lazy.js
19032
- var mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-26yrnbf1.js"));
19032
+ var mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-7gqnz2wt.js"));
19033
19033
 
19034
19034
  // node_modules/@earendil-works/pi-ai/dist/providers/mistral.js
19035
19035
  function mistralProvider() {
@@ -19092,7 +19092,7 @@ function openaiProvider() {
19092
19092
  }
19093
19093
 
19094
19094
  // node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.lazy.js
19095
- var openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-responses-8h6kvfv8.js"));
19095
+ var openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-responses-3nkvje79.js"));
19096
19096
 
19097
19097
  // node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js
19098
19098
  function openaiCodexProvider() {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  init_zod
3
- } from "./cli-q21d49ac.js";
3
+ } from "./cli-bw80ck94.js";
4
4
  import {
5
5
  exports_external
6
- } from "./cli-anrj584m.js";
6
+ } from "./cli-xz9aq0rf.js";
7
7
 
8
8
  // src/be/memory/raters/llm.ts
9
9
  init_zod();