nolo-cli 0.158.0-alpha.1 → 0.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 (148) hide show
  1. package/{_executeModel-6BMU3URY.js → _executeModel-AGVQAILR.js} +47 -47
  2. package/accountResolver-55EDKEIK.js +1 -1
  3. package/action-GPPJC5TI.js +1 -1
  4. package/{addContentAction-BI6RDRTQ.js → addContentAction-XJQEJ4XW.js} +6 -6
  5. package/{addDialogAgentAction-4RJYUSIK.js → addDialogAgentAction-5WZX5CAY.js} +5 -5
  6. package/{agentDeleteCommand-Q2XWGBC2.js → agentDeleteCommand-56DO7V2R.js} +66 -67
  7. package/{agentEmailCommands-XFBE2A3F.js → agentEmailCommands-BPUATKQ6.js} +69 -70
  8. package/{agentListCommands-OROMT4P3.js → agentListCommands-KS5VUGOW.js} +63 -40
  9. package/{agentMachineCommands-ULK5YKKJ.js → agentMachineCommands-HSJS7IQK.js} +32 -30
  10. package/{agentProviderCommands-MKG2OOEY.js → agentProviderCommands-CXBHNONN.js} +5 -5
  11. package/{agentPullCommand-FA43RBRU.js → agentPullCommand-GXXEDOSA.js} +4 -4
  12. package/{agentRecordCommands-3VHBLS6P.js → agentRecordCommands-IDGVLDMB.js} +63 -64
  13. package/{agentRunCommand-LCIMEAQY.js → agentRunCommand-LGMDPPPA.js} +65 -66
  14. package/{agentRunControl-2C5GM3BW.js → agentRunControl-QWFFIAQY.js} +9 -7
  15. package/{agentRuntimeLocal-NPJS2QDP.js → agentRuntimeLocal-QL4SHNJJ.js} +21 -19
  16. package/{agentSlice-VRAPG6CH.js → agentSlice-WPXWY6BV.js} +6 -6
  17. package/{appDeleteCommands-AZ3KS4HK.js → appDeleteCommands-FLCTFYZB.js} +31 -29
  18. package/{appDeployCommands-BTV22ICJ.js → appDeployCommands-UU4Z7DT3.js} +31 -29
  19. package/{appDeployStatusCommands-JSW3HPIW.js → appDeployStatusCommands-GKLZTHTX.js} +31 -29
  20. package/{appGetCommands-5KTTFIMV.js → appGetCommands-DPQ2MVJC.js} +31 -29
  21. package/{appListCommands-3BJPAE2U.js → appListCommands-J6QMEBNL.js} +31 -29
  22. package/{authCommand-NIV3DKPF.js → authCommand-OVBMDPIF.js} +20 -20
  23. package/{authCommands-AMNIAKEG.js → authCommands-QOCKVPX3.js} +5 -5
  24. package/{builtinSkillRegistry-H3AY27TR.js → builtinSkillRegistry-LJV7FHNI.js} +4 -4
  25. package/{chunk-O4ZERG3M.js → chunk-2HG7O7QF.js} +8 -8
  26. package/{chunk-EQGFFDNA.js → chunk-323QA7RW.js} +3 -3
  27. package/{chunk-2SOS7OSQ.js → chunk-3GCLICFW.js} +37 -4
  28. package/{chunk-US6MKPE7.js → chunk-3L5MSPWX.js} +1 -1
  29. package/{chunk-QLQ573SU.js → chunk-3M52COK5.js} +120 -0
  30. package/{chunk-2BKUVRC5.js → chunk-4VDSF5NQ.js} +9 -9
  31. package/{chunk-NKPAHRMA.js → chunk-4XHZ4QXL.js} +15 -15
  32. package/{chunk-ZEY4NJRE.js → chunk-5IKRTRRR.js} +5 -5
  33. package/{chunk-P5QACQDK.js → chunk-62TBKWTV.js} +1 -1
  34. package/{chunk-IYBIRCQV.js → chunk-6BNW7WC4.js} +29 -11
  35. package/{chunk-TRW43TSC.js → chunk-6EQD4AQL.js} +41 -1
  36. package/{chunk-YLMMECCH.js → chunk-6XIE5ZGI.js} +1 -1
  37. package/{chunk-JPJGMOIM.js → chunk-7JO3ZACS.js} +2 -2
  38. package/{chunk-L6EQV5OC.js → chunk-7NKZA46B.js} +3 -3
  39. package/{chunk-WXFZ4P6O.js → chunk-AO2T6MWY.js} +12 -12
  40. package/{chunk-2MTE2PEH.js → chunk-ASSNAASW.js} +5 -739
  41. package/{chunk-J2ATF74A.js → chunk-BAWAKW7X.js} +1 -1
  42. package/{chunk-7RF4O6AT.js → chunk-BL4HFN6L.js} +1 -1
  43. package/{chunk-ICRRXBRN.js → chunk-BWIR5QBI.js} +6 -3
  44. package/{chunk-ZVQHBIWV.js → chunk-CDLP56BS.js} +7 -7
  45. package/{chunk-6TF64IF2.js → chunk-DI7ZFGDQ.js} +16 -2
  46. package/{chunk-C3OK72G3.js → chunk-DJ2BOPJY.js} +1 -1
  47. package/{chunk-OON4OBWI.js → chunk-DLV3H464.js} +7 -7
  48. package/{chunk-LV4LV2B4.js → chunk-DOBOKBKS.js} +7 -5
  49. package/{chunk-IRTOYSA2.js → chunk-ESMZW5PE.js} +1 -1
  50. package/{chunk-HB4XPBC7.js → chunk-EWO77ZGF.js} +9 -11
  51. package/{chunk-FY4SDK2E.js → chunk-FDLDMJTM.js} +1 -1
  52. package/{chunk-IE5PXKVU.js → chunk-G3VYRPTV.js} +5 -5
  53. package/{chunk-AJ4V34SG.js → chunk-HCZOSYTL.js} +19 -19
  54. package/{chunk-C6FY7HWI.js → chunk-HEC32F3G.js} +46 -1
  55. package/{chunk-WTFRBJT5.js → chunk-HSY7F4PP.js} +32 -34
  56. package/{chunk-UFYBYB26.js → chunk-I7S63QUU.js} +1 -1
  57. package/{chunk-CON6SI7N.js → chunk-IF7V3CBU.js} +1 -1
  58. package/{chunk-4RJJDA57.js → chunk-IW64YHXL.js} +154 -30
  59. package/chunk-JLR5NWP2.js +548 -0
  60. package/{chunk-K43ZF2C3.js → chunk-JPPQ3GUO.js} +1 -1
  61. package/{chunk-M2P3OGXZ.js → chunk-JWEXJ573.js} +2 -2
  62. package/{chunk-3C2QLERX.js → chunk-KMDDG73K.js} +1 -1
  63. package/{chunk-KKKHAF3P.js → chunk-KMKVQNFH.js} +3 -3
  64. package/{chunk-ZBXIKCZ4.js → chunk-KQT46A27.js} +368 -91
  65. package/{chunk-5MM7NNO6.js → chunk-KSTEXKL6.js} +78 -39
  66. package/{chunk-MM3662RS.js → chunk-LPO6AMQU.js} +780 -64
  67. package/{chunk-YTXQ2U2X.js → chunk-M3IBEHBT.js} +144 -44
  68. package/{chunk-SPKLALBU.js → chunk-MAYW6V3E.js} +1 -1
  69. package/{chunk-IPAW7XLD.js → chunk-MFVOJ6KF.js} +2 -2
  70. package/{chunk-UCLSOLX4.js → chunk-MLEANT7D.js} +13 -13
  71. package/{chunk-NDZOXXIM.js → chunk-NHEWV5FD.js} +1 -1
  72. package/{chunk-4UOEOHY3.js → chunk-OE4FM66I.js} +5 -5
  73. package/chunk-OHRQXEON.js +2685 -0
  74. package/{chunk-SUKSWFLP.js → chunk-PIG2IUVZ.js} +1 -1
  75. package/{chunk-6MXDOUMH.js → chunk-R4BMKAR5.js} +70 -8
  76. package/{chunk-S72LMV7T.js → chunk-RCZMREV2.js} +4793 -3390
  77. package/chunk-SAZSXMTR.js +188 -0
  78. package/{chunk-DC3SZCRR.js → chunk-SH3XD4E2.js} +2 -2
  79. package/{chunk-JGRPBIZZ.js → chunk-SQX235S2.js} +1 -1
  80. package/{chunk-2AB2HA4M.js → chunk-TDX2L4W2.js} +8 -2
  81. package/{chunk-G476FQ7Q.js → chunk-TSTLLGAC.js} +4 -4
  82. package/{chunk-3TBHZPNG.js → chunk-TTVMMYVH.js} +295 -55
  83. package/{chunk-I2RMFLLH.js → chunk-V7PCFWX3.js} +1 -1
  84. package/{chunk-QPY264HO.js → chunk-W7FGZRLK.js} +1 -1
  85. package/{chunk-BYQOCH75.js → chunk-XYW6JSRD.js} +2 -2
  86. package/{chunk-KLA62VVE.js → chunk-Y45LLH6C.js} +42 -11
  87. package/{chunk-CDWHHLK5.js → chunk-Y7F4Q7YP.js} +4 -4
  88. package/{chunk-JZX2XLKC.js → chunk-YCRROBDY.js} +1 -1
  89. package/{chunk-GAVUTXM5.js → chunk-YFEVODB4.js} +18 -194
  90. package/{chunk-G2WP7VPD.js → chunk-YKTAUOS7.js} +18 -6
  91. package/{chunk-YANF2RR4.js → chunk-ZPKUJROL.js} +1 -1
  92. package/{commandRegistry-D6JTVYKG.js → commandRegistry-HHTMBO55.js} +85 -85
  93. package/{contentThunks-DYQO4CTI.js → contentThunks-ZSKJTGS7.js} +17 -18
  94. package/{cooldownCommands-JFKTYS2D.js → cooldownCommands-NS63RGBO.js} +2 -2
  95. package/{createAgentAutomationAction-LW26KIBP.js → createAgentAutomationAction-KYHXEVZF.js} +17 -18
  96. package/{createDialogAction-VLLBRD52.js → createDialogAction-JKB3V4YP.js} +21 -22
  97. package/{createPageAction-PDACOLI6.js → createPageAction-CRVW6Z65.js} +20 -22
  98. package/{dbSlice-DC2J53RC.js → dbSlice-6PVPY44C.js} +5 -5
  99. package/{deleteFile-KYWEMNFX.js → deleteFile-YM6NDPAR.js} +3 -3
  100. package/{dialogCommands-F3Y4KCPZ.js → dialogCommands-2NVLHDZP.js} +32 -30
  101. package/{dialogSlice-ERMZYMS6.js → dialogSlice-SOEMTPH4.js} +16 -17
  102. package/{dist-NJC2W7I4.js → dist-Q2JSMAKA.js} +7 -361
  103. package/{docCreateCommands-YMWZLW64.js → docCreateCommands-BL4YBQOD.js} +32 -30
  104. package/{docDeleteCommands-6KJ3ESK4.js → docDeleteCommands-NTRYV5OH.js} +33 -31
  105. package/{docReadCommands-YQGFVLWI.js → docReadCommands-MJGISD7D.js} +32 -30
  106. package/{docStore-HXKI6W5D.js → docStore-YXIN3UVQ.js} +6 -6
  107. package/{docUpdateCommands-QLSGXUEX.js → docUpdateCommands-C2AIMWBR.js} +32 -30
  108. package/{getPricing-TX35D7PI.js → getPricing-XQ3N3RBP.js} +2 -2
  109. package/{handleSendMessageAction-2XCOZPXY.js → handleSendMessageAction-JXA7PBY2.js} +35 -32
  110. package/index.js +7 -7
  111. package/{localRuntimeAdapter-VOFUPXNF.js → localRuntimeAdapter-QAXXJCDM.js} +61 -60
  112. package/{localRuntimeAuthority-JDAD7CB6.js → localRuntimeAuthority-BPN5OAQG.js} +2 -2
  113. package/{localRuntimeDb-CVC62PM5.js → localRuntimeDb-QIVAXMUL.js} +1 -1
  114. package/{machineCommands-IN5O7CIO.js → machineCommands-TKOOPU7X.js} +66 -67
  115. package/{machineWsRunDispatch-TH3GMSR3.js → machineWsRunDispatch-AQ3KTB7U.js} +61 -62
  116. package/{memberThunks-2DWKLE6W.js → memberThunks-AZINUM4S.js} +8 -8
  117. package/package.json +6 -2
  118. package/{providerPresetApply-GSJI4JBJ.js → providerPresetApply-PKUOHQJT.js} +5 -5
  119. package/{providerRegistry-TSSTPGWF.js → providerRegistry-HNQLIFN2.js} +5 -5
  120. package/{read-L7QEJETH.js → read-7JPIWRBQ.js} +3 -3
  121. package/{readDocTool-QELXV2GW.js → readDocTool-AAQTB2Y3.js} +1 -1
  122. package/{readlineWorkspace-EIEQUTEZ.js → readlineWorkspace-7G2FBC53.js} +96 -134
  123. package/{removeDialogAgentAction-376XSUP2.js → removeDialogAgentAction-RMVRILLK.js} +6 -6
  124. package/{runAgentClientLoop-3KHKKBZI.js → runAgentClientLoop-NKCVEOOU.js} +45 -45
  125. package/{runtimeDoctorCommands-56NWKNON.js → runtimeDoctorCommands-MMCP4B4U.js} +12 -12
  126. package/{setDialogExtraReferencesAction-QBDSH63D.js → setDialogExtraReferencesAction-L3V7JTMG.js} +6 -6
  127. package/{setPrimaryDialogAgentAction-537QFGW3.js → setPrimaryDialogAgentAction-X52JQGTJ.js} +6 -6
  128. package/{settingThunks-4Z43ZSAT.js → settingThunks-N6XFWPOU.js} +5 -5
  129. package/{spaceCommands-T5Z4U7HP.js → spaceCommands-44R7DU34.js} +29 -27
  130. package/{streamAgentChatTurn-DMXXSEVX.js → streamAgentChatTurn-V7GZPMO4.js} +143 -84
  131. package/{switchDialogAgentAction-CSO6AKRL.js → switchDialogAgentAction-ZJ5CGU7J.js} +5 -5
  132. package/{tools-RMT7NAMC.js → tools-SNXGTJMT.js} +35 -37
  133. package/{tuiSummaryLlmCaller-KLK6K3Q3.js → tuiSummaryLlmCaller-FQOEF4IE.js} +7 -7
  134. package/{updateCommands-LXZLG44Y.js → updateCommands-FJHGWD3Q.js} +5 -3
  135. package/{updateDialogTitleAction-Z4WNUH6Y.js → updateDialogTitleAction-QKWRDIK3.js} +17 -18
  136. package/chunk-3MZAGMYY.js +0 -239
  137. package/chunk-IA7TRNNR.js +0 -11
  138. package/chunk-UKZX3NHN.js +0 -48
  139. package/chunk-VDEVDGEM.js +0 -7018
  140. package/clipboardy-GCO3GT3I.js +0 -11793
  141. package/{agentGrantCommands-HOJ3JBBQ.js → agentGrantCommands-5DPHYEKP.js} +3 -3
  142. package/{chromeOpsCommands-3Z34RKSE.js → chromeOpsCommands-GZVVK7HU.js} +4 -4
  143. package/{chunk-2SGAI64X.js → chunk-43OFVLWJ.js} +4 -4
  144. package/{chunk-XETG4RIX.js → chunk-AETZ7AD6.js} +4 -4
  145. package/{chunk-2IXDJNZI.js → chunk-GAGGEA7D.js} +3 -3
  146. package/{memoryCommands-CUNBFRVS.js → memoryCommands-ZS3VQJAL.js} +3 -3
  147. package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-3GLX4QQY.js} +3 -3
  148. package/{tableCommands-LBH3QPPO.js → tableCommands-IVC5S7Y3.js} +11 -11
@@ -7,11 +7,12 @@ import {
7
7
  resolveBuiltinSkillEntry,
8
8
  resolveBuiltinSkillPage,
9
9
  resolveBuiltinSkillSlug
10
- } from "./chunk-DC3SZCRR.js";
11
- import "./chunk-JZX2XLKC.js";
10
+ } from "./chunk-SH3XD4E2.js";
11
+ import "./chunk-YCRROBDY.js";
12
12
  import "./chunk-EUGTFFO6.js";
13
- import "./chunk-XETG4RIX.js";
13
+ import "./chunk-AETZ7AD6.js";
14
14
  import "./chunk-Y6ORVLSS.js";
15
+ import "./chunk-KHCLMKZZ.js";
15
16
  import "./chunk-5EBLANFT.js";
16
17
  import "./chunk-NYYFIKHI.js";
17
18
  import "./chunk-LOEO7LRC.js";
@@ -22,7 +23,6 @@ import "./chunk-U6VC4MU4.js";
22
23
  import "./chunk-WWC7I6TA.js";
23
24
  import "./chunk-3EUW3WEO.js";
24
25
  import "./chunk-G3SUCT4W.js";
25
- import "./chunk-KHCLMKZZ.js";
26
26
  import "./chunk-4VNS5WPM.js";
27
27
  export {
28
28
  CAPABILITY_SLUG_COLLISIONS,
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-U4STABYN.js";
4
4
  import {
5
5
  getReadableCliDb
6
- } from "./chunk-P5QACQDK.js";
6
+ } from "./chunk-62TBKWTV.js";
7
7
  import {
8
8
  clearCliLocalRuntimePreparedAgentCache
9
- } from "./chunk-S72LMV7T.js";
9
+ } from "./chunk-RCZMREV2.js";
10
10
  import {
11
11
  readCredentialAvailability
12
- } from "./chunk-6MXDOUMH.js";
12
+ } from "./chunk-R4BMKAR5.js";
13
13
  import {
14
14
  buildCreatedAgentRecord,
15
15
  buildUpdatedAgentRecord,
@@ -19,17 +19,17 @@ import {
19
19
  resolveAgentRecordFromHybridStore,
20
20
  sanitizeAgentRecordForCliOutput,
21
21
  writeAgentRecord
22
- } from "./chunk-ZEY4NJRE.js";
22
+ } from "./chunk-5IKRTRRR.js";
23
23
  import {
24
24
  resolveCliAgentKeyInput
25
25
  } from "./chunk-NBTY7YJF.js";
26
- import {
27
- toErrorMessage
28
- } from "./chunk-HNMXYYJR.js";
29
26
  import {
30
27
  parseUserIdFromAuthToken,
31
28
  resolveAuthToken
32
29
  } from "./chunk-A7GB5UGH.js";
30
+ import {
31
+ toErrorMessage
32
+ } from "./chunk-HNMXYYJR.js";
33
33
 
34
34
  // packages/cli/agentRecordCommands.ts
35
35
  async function runAgentReadCommand(args, deps = {}) {
@@ -244,7 +244,7 @@ async function runAgentCreateCommand(args, deps = {}) {
244
244
  let verifyResult;
245
245
  if (parsed.verify) {
246
246
  try {
247
- const { verifyCustomProvider } = await import("./agentProviderCommands-MKG2OOEY.js");
247
+ const { verifyCustomProvider } = await import("./agentProviderCommands-CXBHNONN.js");
248
248
  const rec = built.nextRecord;
249
249
  verifyResult = await verifyCustomProvider({
250
250
  providerUrl: rec.customProviderUrl,
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  patch,
9
9
  readAndWait
10
- } from "./chunk-ZVQHBIWV.js";
10
+ } from "./chunk-CDLP56BS.js";
11
11
  import {
12
12
  toErrorMessage
13
13
  } from "./chunk-HNMXYYJR.js";
@@ -333,7 +333,7 @@ async function saveDocState(arg, { dispatch, getState }) {
333
333
  ).unwrap();
334
334
  if (dbSpaceId) {
335
335
  try {
336
- const { updateContentTitle } = await import("./contentThunks-DYQO4CTI.js");
336
+ const { updateContentTitle } = await import("./contentThunks-ZSKJTGS7.js");
337
337
  await dispatch(
338
338
  updateContentTitle({
339
339
  spaceId: dbSpaceId,
@@ -372,7 +372,7 @@ async function saveDocState(arg, { dispatch, getState }) {
372
372
  }
373
373
  }
374
374
  async function createDocState(args, thunkApi) {
375
- const { createPageAction } = await import("./createPageAction-PDACOLI6.js");
375
+ const { createPageAction } = await import("./createPageAction-CRVW6Z65.js");
376
376
  return createPageAction(args, thunkApi);
377
377
  }
378
378
  function subscribe(listener) {
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-NBTY7YJF.js";
6
6
  import {
7
7
  resolveCliLocalRuntimeKeyCapability
8
- } from "./chunk-YTXQ2U2X.js";
8
+ } from "./chunk-M3IBEHBT.js";
9
9
  import {
10
10
  HIGH_RISK_MUTATION_TOOL_NAMES
11
- } from "./chunk-QLQ573SU.js";
11
+ } from "./chunk-3M52COK5.js";
12
12
  import {
13
13
  DEFAULT_NOLO_SERVER_URL
14
14
  } from "./chunk-OLZBQWZU.js";
@@ -21,6 +21,7 @@ import {
21
21
 
22
22
  // packages/cli/agentRunArgs.ts
23
23
  import { readFileSync } from "node:fs";
24
+ import { isAbsolute } from "node:path";
24
25
  function readFlagValue(args, flag) {
25
26
  const index = args.indexOf(flag);
26
27
  if (index < 0) return void 0;
@@ -78,7 +79,8 @@ var VALUELESS_FLAGS = {
78
79
  "--ephemeral": true,
79
80
  "--memory-only": true,
80
81
  "--read-only": true,
81
- "--machine-shell": true
82
+ "--machine-shell": true,
83
+ "--instabox-allow-remote-release": true
82
84
  };
83
85
  function isValuelessFlag(arg) {
84
86
  return Object.prototype.hasOwnProperty.call(VALUELESS_FLAGS, arg);
@@ -150,7 +152,7 @@ function writeUsage(output, commandPath) {
150
152
  return;
151
153
  }
152
154
  output.write(
153
- "Usage: nolo agent run <agent> <message> [--local|--server|--auto] [--runtime-key <key>] [--docker-workspace-mode git|empty] [--ephemeral|--memory-only] [--continue <dialogId>] [--cwd <path>]\n nolo agent run --agent <agent> (--msg <message>|--msg-file <path>) [--image <url-or-path>] [--space <spaceId>] [--category <name>] [--inherit-from-dialog <dialog>] [--parent-dialog <dialog>] [--subject-dialog <dialog>] [--subject-ref <kind:id[:role]>] [--task-row-dbkey <key>] [--fallback-agent <agent>] (suggestions for agent to decide on quota) [--allowed-tool <tool>] [--blocked-tool <tool>] [--read-only] [--runtime-key <key>] [--docker-workspace-mode git|empty] [--machine-shell] [--dod <cmd>] [--bg] [--timeout-ms <n>] [--events jsonl] [--no-stream] [--skill <dbKey-or-md-path>]\n"
155
+ "Usage: nolo agent run <agent> <message> [--local|--server|--auto] [--runtime-key <key>] [--docker-workspace-mode git|empty] [--instabox-workspace empty|snapshot] [--instabox-manifest <path>] [--instabox-artifact-dir <path>] [--instabox-allow-remote-release] [--instabox-allow-paid] [--ephemeral|--memory-only] [--continue <dialogId>] [--cwd <path>]\n nolo agent run --agent <agent> (--msg <message>|--msg-file <path>) [--image <url-or-path>] [--space <spaceId>] [--category <name>] [--inherit-from-dialog <dialog>] [--parent-dialog <dialog>] [--subject-dialog <dialog>] [--subject-ref <kind:id[:role]>] [--task-row-dbkey <key>] [--fallback-agent <agent>] (suggestions for agent to decide on quota) [--allowed-tool <tool>] [--blocked-tool <tool>] [--read-only] [--runtime-key <key>] [--docker-workspace-mode git|empty] [--instabox-workspace empty|snapshot] [--instabox-manifest <path>] [--instabox-artifact-dir <path>] [--instabox-allow-remote-release] [--instabox-allow-paid] [--machine-shell] [--dod <cmd>] [--bg] [--timeout-ms <n>] [--events jsonl] [--no-stream] [--skill <dbKey-or-md-path>]\n"
154
156
  );
155
157
  }
156
158
  function parseAgentRunArgs(args, options = {}) {
@@ -205,6 +207,32 @@ function parseAgentRunArgs(args, options = {}) {
205
207
  "\u4E0D\u80FD\u540C\u65F6\u6307\u5B9A --machine-shell \u4E0E --runtime-key\uFF1A--machine-shell \u5DF2\u628A\u6D3E\u53D1\u9501\u5230\u7ED1\u5B9A\u673A\u5668\u7684 server \u901A\u9053\uFF0CruntimeKey \u4F1A\u5931\u6548\uFF0C\u8BF7\u53EA\u4FDD\u7559\u5176\u4E2D\u4E00\u4E2A"
206
208
  );
207
209
  }
210
+ const rawInstaboxWorkspace = readFlagValue(args, "--instabox-workspace")?.trim();
211
+ const rawInstaboxManifest = readFlagValue(args, "--instabox-manifest")?.trim();
212
+ const rawInstaboxArtifactDir = readFlagValue(args, "--instabox-artifact-dir")?.trim();
213
+ const instaboxAllowRemoteRelease = args.includes("--instabox-allow-remote-release");
214
+ const instaboxAllowPaid = args.includes("--instabox-allow-paid");
215
+ const hasInstaboxFlags = args.includes("--instabox-workspace") || args.includes("--instabox-manifest") || args.includes("--instabox-artifact-dir") || instaboxAllowRemoteRelease || instaboxAllowPaid;
216
+ if (hasInstaboxFlags && runtimeKey !== "instabox") {
217
+ throw new Error("--instabox-* \u53C2\u6570\u4EC5\u9002\u7528\u4E8E --runtime-key instabox");
218
+ }
219
+ if (runtimeKey === "instabox") {
220
+ if (!rawInstaboxWorkspace || rawInstaboxWorkspace !== "empty" && rawInstaboxWorkspace !== "snapshot") {
221
+ throw new Error("--runtime-key instabox \u5FC5\u987B\u6307\u5B9A --instabox-workspace empty|snapshot");
222
+ }
223
+ if (!rawInstaboxArtifactDir) {
224
+ throw new Error("--runtime-key instabox \u5FC5\u987B\u6307\u5B9A --instabox-artifact-dir <\u7EDD\u5BF9\u8DEF\u5F84>");
225
+ }
226
+ if (!isAbsolute(rawInstaboxArtifactDir) || rawInstaboxArtifactDir.includes("\0") || rawInstaboxArtifactDir.split("/").includes("..")) {
227
+ throw new Error(`--instabox-artifact-dir \u5FC5\u987B\u4E3A\u5408\u6CD5\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u4E14\u4E0D\u80FD\u5305\u542B .. \u6216\u7A7A\u5B57\u7B26: "${rawInstaboxArtifactDir}"`);
228
+ }
229
+ if (rawInstaboxWorkspace === "snapshot" && !rawInstaboxManifest) {
230
+ throw new Error("--instabox-workspace snapshot \u5FC5\u987B\u6307\u5B9A --instabox-manifest <\u6587\u4EF6\u8DEF\u5F84>");
231
+ }
232
+ if (rawInstaboxWorkspace === "empty" && args.includes("--instabox-manifest")) {
233
+ throw new Error("--instabox-workspace empty \u4E0D\u5F97\u6307\u5B9A --instabox-manifest");
234
+ }
235
+ }
208
236
  const runtimeMode = runtimeModeFromArgs(args);
209
237
  const continueDialogId = readFlagValue(args, "--continue") ?? readFlagValue(args, "--dialog");
210
238
  const spaceId = readFlagValue(args, "--space");
@@ -260,6 +288,11 @@ function parseAgentRunArgs(args, options = {}) {
260
288
  ...runtimeMode ? { runtimeMode } : !runtimeKey && (fullstackLocalWorkspaceDefault || explicitLocalCliAgentDefault || args.includes("--dangerously-allow-shell")) ? { runtimeMode: "local" } : {},
261
289
  ...runtimeKey ? { runtimeKey } : {},
262
290
  ...dockerWorkspaceMode ? { dockerWorkspaceMode } : {},
291
+ ...rawInstaboxWorkspace ? { instaboxWorkspace: rawInstaboxWorkspace } : {},
292
+ ...rawInstaboxManifest ? { instaboxManifestPath: rawInstaboxManifest } : {},
293
+ ...rawInstaboxArtifactDir ? { instaboxArtifactDir: rawInstaboxArtifactDir } : {},
294
+ ...instaboxAllowRemoteRelease ? { instaboxAllowRemoteRelease: true } : {},
295
+ ...instaboxAllowPaid ? { instaboxAllowPaid: true } : {},
263
296
  background: args.includes("--bg"),
264
297
  noStream: args.includes("--no-stream"),
265
298
  machineShell: args.includes("--machine-shell"),
@@ -206,7 +206,7 @@ async function readDocFunc(args, thunkApi) {
206
206
  throw new Error(`\u65E0\u6548\u7684\u9875\u9762 ID: ${id}\u3002\u9875\u9762 ID \u901A\u5E38\u4EE5 "page-" \u5F00\u5934\u3002`);
207
207
  }
208
208
  try {
209
- const { readAction } = await import("./read-L7QEJETH.js");
209
+ const { readAction } = await import("./read-7JPIWRBQ.js");
210
210
  const pageData = await readAction({ dbKey: id }, thunkApi);
211
211
  if (!pageData) {
212
212
  throw new Error(`\u672A\u627E\u5230 ID \u4E3A ${id} \u7684\u9875\u9762\u3002`);
@@ -1239,6 +1239,121 @@ function buildNoloWorkspaceCommandArgs(call) {
1239
1239
  }
1240
1240
  }
1241
1241
 
1242
+ // packages/agent-runtime/subtaskBudget.ts
1243
+ var DEFAULT_SUBTASK_MAX_TOOL_CALLS = 200;
1244
+ var DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS = 60 * 60 * 1e3;
1245
+ var SUBTASK_MAX_TOOL_CALLS_ENV = "NOLO_SUBTASK_MAX_TOOL_CALLS";
1246
+ var SUBTASK_MAX_WALL_CLOCK_MS_ENV = "NOLO_SUBTASK_MAX_WALL_CLOCK_MS";
1247
+ var SUBTASK_BUDGET_EXHAUSTED_MARKER = "[budget-exhausted]";
1248
+ function parseSubtaskBudgetLimit(raw, fallback) {
1249
+ if (typeof raw === "number") {
1250
+ if (!Number.isFinite(raw) || raw <= 0) return fallback;
1251
+ return Math.floor(raw);
1252
+ }
1253
+ if (typeof raw !== "string") return fallback;
1254
+ const trimmed = raw.trim();
1255
+ if (!trimmed) return fallback;
1256
+ const parsed = Number(trimmed);
1257
+ if (!Number.isFinite(parsed) || parsed <= 0) return fallback;
1258
+ return Math.floor(parsed);
1259
+ }
1260
+ function resolveSubtaskBudgetLimits(options) {
1261
+ const env = options?.env ?? (typeof process !== "undefined" ? process.env : {});
1262
+ const explicitToolCalls = options?.maxToolCalls;
1263
+ const explicitWallClock = options?.maxWallClockMs;
1264
+ return {
1265
+ maxToolCalls: typeof explicitToolCalls === "number" ? parseSubtaskBudgetLimit(explicitToolCalls, parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_TOOL_CALLS_ENV], DEFAULT_SUBTASK_MAX_TOOL_CALLS)) : parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_TOOL_CALLS_ENV], DEFAULT_SUBTASK_MAX_TOOL_CALLS),
1266
+ maxWallClockMs: typeof explicitWallClock === "number" ? parseSubtaskBudgetLimit(explicitWallClock, parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_WALL_CLOCK_MS_ENV], DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS)) : parseSubtaskBudgetLimit(env?.[SUBTASK_MAX_WALL_CLOCK_MS_ENV], DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS)
1267
+ };
1268
+ }
1269
+ function resolveSubtaskBudgetDeadlineMs(args) {
1270
+ const ownDeadlineAtMs = args.childStartedAtMs + args.limits.maxWallClockMs;
1271
+ const parentDeadlineAtMs = args.parentDeadlineAtMs;
1272
+ if (typeof parentDeadlineAtMs === "number" && Number.isFinite(parentDeadlineAtMs)) {
1273
+ return Math.min(parentDeadlineAtMs, ownDeadlineAtMs);
1274
+ }
1275
+ return ownDeadlineAtMs;
1276
+ }
1277
+ function resolveDispatchedSubtaskBudget(args) {
1278
+ const limits = resolveSubtaskBudgetLimits({
1279
+ ...typeof args?.maxToolCalls === "number" ? { maxToolCalls: args.maxToolCalls } : {},
1280
+ ...typeof args?.maxWallClockMs === "number" ? { maxWallClockMs: args.maxWallClockMs } : {},
1281
+ ...args?.env ? { env: args.env } : {}
1282
+ });
1283
+ const childStartedAtMs = args?.childStartedAtMs ?? Date.now();
1284
+ const deadlineAtMs = resolveSubtaskBudgetDeadlineMs({
1285
+ parentDeadlineAtMs: args?.parentDeadlineAtMs ?? null,
1286
+ childStartedAtMs,
1287
+ limits
1288
+ });
1289
+ return {
1290
+ // 父截止更早时,子 run 的墙钟额度被压到「距离父截止的剩余时间」。
1291
+ limits: {
1292
+ maxToolCalls: limits.maxToolCalls,
1293
+ maxWallClockMs: Math.max(1, deadlineAtMs - childStartedAtMs)
1294
+ },
1295
+ deadlineAtMs
1296
+ };
1297
+ }
1298
+ function createSubtaskBudgetTracker(options) {
1299
+ const now = options.now ?? (() => Date.now());
1300
+ const startedAtMs = options.startedAtMs ?? now();
1301
+ let toolCallsExecuted = 0;
1302
+ const elapsedMs = () => Math.max(0, now() - startedAtMs);
1303
+ const exhaustion = () => {
1304
+ const elapsed = elapsedMs();
1305
+ if (toolCallsExecuted >= options.limits.maxToolCalls) {
1306
+ return {
1307
+ limit: "max-tool-calls",
1308
+ limits: options.limits,
1309
+ toolCallsExecuted,
1310
+ elapsedMs: elapsed,
1311
+ atMs: now()
1312
+ };
1313
+ }
1314
+ if (elapsed >= options.limits.maxWallClockMs) {
1315
+ return {
1316
+ limit: "max-wall-clock-ms",
1317
+ limits: options.limits,
1318
+ toolCallsExecuted,
1319
+ elapsedMs: elapsed,
1320
+ atMs: now()
1321
+ };
1322
+ }
1323
+ return null;
1324
+ };
1325
+ return {
1326
+ limits: options.limits,
1327
+ startedAtMs,
1328
+ get toolCallsExecuted() {
1329
+ return toolCallsExecuted;
1330
+ },
1331
+ elapsedMs,
1332
+ remainingToolCalls: () => Math.max(0, options.limits.maxToolCalls - toolCallsExecuted),
1333
+ isExhausted: () => exhaustion() !== null,
1334
+ exhaustion,
1335
+ recordToolCallExecuted: () => {
1336
+ toolCallsExecuted += 1;
1337
+ return toolCallsExecuted;
1338
+ }
1339
+ };
1340
+ }
1341
+ function buildSubtaskBudgetExhaustedContent(args) {
1342
+ const { exhaustion } = args;
1343
+ const limitLabel = exhaustion.limit === "max-tool-calls" ? `\u5DE5\u5177\u8C03\u7528\u4E0A\u9650\uFF08\u5DF2\u6267\u884C ${exhaustion.toolCallsExecuted}/${exhaustion.limits.maxToolCalls} \u6B21\uFF09` : `\u5899\u949F\u4E0A\u9650\uFF08\u5DF2\u8FD0\u884C ${Math.round(exhaustion.elapsedMs / 1e3)} \u79D2 / \u4E0A\u9650 ${Math.round(
1344
+ exhaustion.limits.maxWallClockMs / 1e3
1345
+ )} \u79D2\uFF09`;
1346
+ const recent = (args.recentToolNames ?? []).slice(-5);
1347
+ const recentText = recent.length > 0 ? recent.join("\u3001") : "\uFF08\u672C\u8F6E\u65E0\u5DE5\u5177\u8C03\u7528\uFF09";
1348
+ return [
1349
+ `${SUBTASK_BUDGET_EXHAUSTED_MARKER} \u5DF2\u8FBE\u5B50\u4EFB\u52A1\u9884\u7B97\u4E0A\u9650\uFF08${limitLabel}\uFF09\uFF0C\u672C\u6B21\u5B50\u4EFB\u52A1\u5230\u6B64\u4F18\u96C5\u7EC8\u6B62\u3002`,
1350
+ "\u8FD9\u662F\u4E00\u4EFD**\u4E2D\u95F4\u7ED3\u8BBA**\uFF0C\u4E0D\u662F\u5B8C\u6574\u4EA4\u4ED8\uFF0C\u4E5F\u4E0D\u662F\u5931\u8D25\uFF1A\u4E0A\u6587\u4FDD\u7559\u7684\u662F\u672C\u8F6E\u5DF2\u5B8C\u6210\u7684\u9636\u6BB5\u6027\u6210\u679C\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A\u9636\u6BB5\u4EA4\u63A5\u4F7F\u7528\u3002",
1351
+ `\u5F53\u524D\u5B8C\u6210\u5230\u54EA\u4E00\u6B65\uFF1A\u5DF2\u5B8C\u6210 ${args.roundsCompleted} \u8F6E\u6A21\u578B\u5F80\u8FD4\u3001${exhaustion.toolCallsExecuted} \u6B21\u5DE5\u5177\u8C03\u7528\uFF1B\u6700\u8FD1\u5B8C\u6210\u7684\u5DE5\u5177\uFF1A${recentText}\u3002`,
1352
+ "\u5DF2\u5B8C\u6210\u7684\u5DE5\u5177\u7ED3\u679C\u5168\u90E8\u4FDD\u7559\u5728\u672C\u56DE\u5408\u7684 transcript / \u7ED3\u679C\u4E2D\uFF0C\u6CA1\u6709\u4EFB\u4F55\u56DE\u6EDA\u6216\u4E22\u5F03\u3002",
1353
+ "\u5982\u9700\u7EE7\u7EED\u63A8\u8FDB\uFF0C\u8BF7\u7531\u7236\u65B9\u643A\u5E26\u5F53\u524D\u4E2D\u95F4\u7ED3\u8BBA\u91CD\u65B0\u6D3E\u53D1\uFF08\u53EF\u6309\u9700\u8C03\u9AD8\u9884\u7B97\u4E0A\u9650\uFF09\u3002"
1354
+ ].join("\n");
1355
+ }
1356
+
1242
1357
  // packages/ai/agent/agentSelectionPriority.ts
1243
1358
  function parseAgentTimestamp(value) {
1244
1359
  if (typeof value === "number" && Number.isFinite(value)) return value;
@@ -1328,6 +1443,11 @@ export {
1328
1443
  verifyNoloDialogSubjectRefQuery,
1329
1444
  buildNoloTableQueryRequest,
1330
1445
  buildNoloWorkspaceCommandArgs,
1446
+ DEFAULT_SUBTASK_MAX_TOOL_CALLS,
1447
+ DEFAULT_SUBTASK_MAX_WALL_CLOCK_MS,
1448
+ resolveDispatchedSubtaskBudget,
1449
+ createSubtaskBudgetTracker,
1450
+ buildSubtaskBudgetExhaustedContent,
1331
1451
  compareAgentSelection,
1332
1452
  AGENT_SELECTION_PRIORITY_INSTRUCTIONS,
1333
1453
  buildAgentRuntimeAgentLookupKeys,
@@ -2,7 +2,7 @@ import {
2
2
  clipMultilineText,
3
3
  fetchAndSerializeTable,
4
4
  waitForAbortableDelay
5
- } from "./chunk-CDWHHLK5.js";
5
+ } from "./chunk-Y7F4Q7YP.js";
6
6
  import {
7
7
  isGatewayHttpStatus
8
8
  } from "./chunk-NF64D32W.js";
@@ -15,30 +15,33 @@ import {
15
15
  import {
16
16
  resolvePageReadMarkdown,
17
17
  slateToSimplifiedMarkdown
18
- } from "./chunk-US6MKPE7.js";
18
+ } from "./chunk-3L5MSPWX.js";
19
19
  import {
20
20
  extractCategorizedMentions
21
21
  } from "./chunk-AGIM7IMJ.js";
22
22
  import {
23
23
  fetchAndCacheMessages
24
- } from "./chunk-WTFRBJT5.js";
24
+ } from "./chunk-HSY7F4PP.js";
25
25
  import {
26
26
  createSpaceKey
27
27
  } from "./chunk-UAD2WT54.js";
28
28
  import {
29
29
  read
30
- } from "./chunk-ZVQHBIWV.js";
30
+ } from "./chunk-CDLP56BS.js";
31
31
  import {
32
32
  getRuntimeServerContext
33
- } from "./chunk-2SGAI64X.js";
33
+ } from "./chunk-43OFVLWJ.js";
34
34
  import {
35
35
  extractRuntimePageCapabilities,
36
36
  resolveBuiltinSkillPage,
37
37
  resolveSkillGraphFromRoots
38
- } from "./chunk-DC3SZCRR.js";
38
+ } from "./chunk-SH3XD4E2.js";
39
39
  import {
40
40
  isAbortError
41
41
  } from "./chunk-7DPNBQSV.js";
42
+ import {
43
+ wrapHistoricalSummaryWithReplayGuard
44
+ } from "./chunk-4VJAC32I.js";
42
45
  import {
43
46
  extractCustomId
44
47
  } from "./chunk-M2EJHDJP.js";
@@ -51,9 +54,6 @@ import {
51
54
  import {
52
55
  asTrimmedString
53
56
  } from "./chunk-3EUW3WEO.js";
54
- import {
55
- wrapHistoricalSummaryWithReplayGuard
56
- } from "./chunk-4VJAC32I.js";
57
57
 
58
58
  // packages/ai/chat/errorDiagnostics.ts
59
59
  var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-S72LMV7T.js";
4
+ } from "./chunk-RCZMREV2.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-2AB2HA4M.js";
7
+ } from "./chunk-TDX2L4W2.js";
8
8
  import {
9
9
  clipMultilineText
10
- } from "./chunk-CDWHHLK5.js";
10
+ } from "./chunk-Y7F4Q7YP.js";
11
11
  import {
12
12
  runLocalAgentTurn
13
- } from "./chunk-3TBHZPNG.js";
13
+ } from "./chunk-TTVMMYVH.js";
14
14
  import {
15
15
  applyToolSurfaceConstraints
16
- } from "./chunk-QLQ573SU.js";
16
+ } from "./chunk-3M52COK5.js";
17
17
  import {
18
18
  resolveLocalRuntimeEnvFromPolicy
19
19
  } from "./chunk-LIQJTQRN.js";
@@ -29,6 +29,16 @@ import {
29
29
  import {
30
30
  asOptionalPositiveFiniteNumber
31
31
  } from "./chunk-U6VC4MU4.js";
32
+ import {
33
+ parseUserIdFromAuthToken
34
+ } from "./chunk-A7GB5UGH.js";
35
+ import {
36
+ DEFAULT_NOLO_SERVER_URL
37
+ } from "./chunk-OLZBQWZU.js";
38
+ import {
39
+ readPipeText,
40
+ spawnProcess
41
+ } from "./chunk-Y6ROFCZO.js";
32
42
  import {
33
43
  isRecord
34
44
  } from "./chunk-KUG52IAP.js";
@@ -38,19 +48,9 @@ import {
38
48
  import {
39
49
  toErrorMessage
40
50
  } from "./chunk-HNMXYYJR.js";
41
- import {
42
- parseUserIdFromAuthToken
43
- } from "./chunk-A7GB5UGH.js";
44
- import {
45
- DEFAULT_NOLO_SERVER_URL
46
- } from "./chunk-OLZBQWZU.js";
47
51
  import {
48
52
  asOptionalTrimmedString
49
53
  } from "./chunk-G3SUCT4W.js";
50
- import {
51
- readPipeText,
52
- spawnProcess
53
- } from "./chunk-Y6ROFCZO.js";
54
54
 
55
55
  // packages/ai/agent/machineRunPermissions.ts
56
56
  var DEFAULT_POLICY = {
@@ -3,16 +3,13 @@ import {
3
3
  classifyAgentApiKeyRef,
4
4
  formatUnsupportedAgentApiKeyRefMessage,
5
5
  shouldReadAgentKeyRemotely
6
- } from "./chunk-7RF4O6AT.js";
6
+ } from "./chunk-BL4HFN6L.js";
7
7
  import {
8
8
  resolveCliAgentKeyInput
9
9
  } from "./chunk-NBTY7YJF.js";
10
10
  import {
11
11
  createAgentKey
12
12
  } from "./chunk-5EMSBTQ6.js";
13
- import {
14
- toErrorMessage
15
- } from "./chunk-HNMXYYJR.js";
16
13
  import {
17
14
  parseUserIdFromAuthToken,
18
15
  readOption,
@@ -24,6 +21,9 @@ import {
24
21
  readPipeText,
25
22
  spawnProcess
26
23
  } from "./chunk-Y6ROFCZO.js";
24
+ import {
25
+ toErrorMessage
26
+ } from "./chunk-HNMXYYJR.js";
27
27
 
28
28
  // packages/cli/agentRecordHelpers.ts
29
29
  import { readFileSync } from "node:fs";
@@ -556,7 +556,7 @@ async function buildCreatedAgentRecord(args) {
556
556
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
557
557
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
558
558
  if (args.parsed.presetId) {
559
- const { resolveProviderPresetFields } = await import("./providerPresetApply-GSJI4JBJ.js");
559
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-PKUOHQJT.js");
560
560
  const fields = resolveProviderPresetFields(args.parsed.presetId);
561
561
  if (fields.kind === "manual") {
562
562
  throw new Error(
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // packages/cli/agentCommandSupport.ts
6
6
  async function getDefaultCliDb() {
7
- const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-CVC62PM5.js");
7
+ const { getDefaultCliLocalRuntimeDb } = await import("./localRuntimeDb-QIVAXMUL.js");
8
8
  return getDefaultCliLocalRuntimeDb();
9
9
  }
10
10
  function createNullCliDb() {
@@ -1,7 +1,13 @@
1
+ import {
2
+ resolveAgentCallPlan
3
+ } from "./chunk-SAZSXMTR.js";
4
+ import {
5
+ SUBSCRIPTION_OAUTH_PROVIDERS
6
+ } from "./chunk-EWO77ZGF.js";
1
7
  import {
2
8
  findModelConfig,
3
9
  getProviderByModelName
4
- } from "./chunk-TRW43TSC.js";
10
+ } from "./chunk-6EQD4AQL.js";
5
11
  import {
6
12
  asOptionalTrimmedString
7
13
  } from "./chunk-G3SUCT4W.js";
@@ -90,16 +96,18 @@ var lookupKnownModelVision = (provider, model) => {
90
96
  if (provider && provider !== "custom") {
91
97
  const direct = findModelConfig(provider, candidate);
92
98
  if (direct && typeof direct.hasVision === "boolean") return direct.hasVision;
93
- }
94
- const detected = getProviderByModelName(candidate);
95
- if (detected) {
96
- const found = findModelConfig(detected, candidate)?.hasVision;
97
- if (found !== void 0) return found;
99
+ } else {
100
+ const detected = getProviderByModelName(candidate);
101
+ if (detected) {
102
+ const found = findModelConfig(detected, candidate)?.hasVision;
103
+ if (found !== void 0) return found;
104
+ }
98
105
  }
99
106
  if (candidate.includes("/")) {
100
107
  const slash = candidate.indexOf("/");
101
108
  const modelProvider = candidate.slice(0, slash).toLowerCase();
102
109
  const modelName = candidate.slice(slash + 1);
110
+ if (provider && provider !== "custom" && provider !== modelProvider) continue;
103
111
  const nested = findModelConfig(modelProvider, modelName);
104
112
  if (nested && typeof nested.hasVision === "boolean") return nested.hasVision;
105
113
  }
@@ -108,12 +116,22 @@ var lookupKnownModelVision = (provider, model) => {
108
116
  };
109
117
  var resolveAgentImageInputSupport = (agent) => {
110
118
  if (!agent) return true;
111
- const provider = asTrimmedLowercaseString(agent.provider) || null;
119
+ const provider = asTrimmedLowercaseString(agent.provider) || asTrimmedLowercaseString(agent.apiSource) || null;
112
120
  const model = asOptionalTrimmedString(agent.model) ?? "";
113
- const catalogHasVision = lookupKnownModelVision(
114
- provider,
115
- model
116
- );
121
+ const { authMethod } = resolveAgentCallPlan({
122
+ key: "",
123
+ provider: agent.provider ?? void 0,
124
+ apiSource: agent.apiSource ?? void 0,
125
+ cliProvider: agent.cliProvider ?? void 0,
126
+ model,
127
+ apiKeyRef: agent.apiKeyRef ?? void 0,
128
+ customProviderUrl: agent.customProviderUrl ?? void 0,
129
+ apiKey: agent.apiKey ?? void 0,
130
+ useServerProxy: agent.useServerProxy ?? void 0
131
+ });
132
+ const catalogHasVision = authMethod.kind === "oauth" ? SUBSCRIPTION_OAUTH_PROVIDERS.find((entry) => entry.apiKeyRef === authMethod.ref)?.modelOptions.find(
133
+ (entry) => [model, stripEffortSuffix(model), stripPreviewSuffix(model)].includes(entry.id)
134
+ )?.hasVision : lookupKnownModelVision(provider, model);
117
135
  if (catalogHasVision !== void 0) {
118
136
  return catalogHasVision;
119
137
  }
@@ -575,6 +575,44 @@ var stepfunStepPlanModels = [
575
575
  }
576
576
  ];
577
577
 
578
+ // packages/integrations/minimax/models.ts
579
+ var minimaxModels = [
580
+ {
581
+ name: "MiniMax-M3.1-Flash",
582
+ displayName: "MiniMax M3.1 Flash",
583
+ hasVision: true,
584
+ contextWindow: 1e6,
585
+ maxOutputTokens: 8192,
586
+ jsonOutput: true,
587
+ fnCall: true,
588
+ supportsTool: true,
589
+ price: {
590
+ input: toCnyCredits(1),
591
+ output: toCnyCredits(4),
592
+ inputCacheHit: toCnyCredits(0.1)
593
+ },
594
+ provider: "minimax",
595
+ description: "MiniMax \u65B0\u4E00\u4EE3 Flash \u65D7\u8230\u6A21\u578B\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u539F\u751F\u591A\u6A21\u6001\u89C6\u89C9\u7406\u89E3\uFF0C\u9488\u5BF9 Agent\u3001\u4EE3\u7801\u4E0E\u5DE5\u5177\u8C03\u7528\u6DF1\u5EA6\u4F18\u5316\u3002"
596
+ },
597
+ {
598
+ name: "MiniMax-M3",
599
+ displayName: "MiniMax M3",
600
+ hasVision: true,
601
+ contextWindow: 1e6,
602
+ maxOutputTokens: 8192,
603
+ jsonOutput: true,
604
+ fnCall: true,
605
+ supportsTool: true,
606
+ price: {
607
+ input: toCnyCredits(2.1),
608
+ output: toCnyCredits(8.4),
609
+ inputCacheHit: toCnyCredits(0.42)
610
+ },
611
+ provider: "minimax",
612
+ description: "MiniMax M3 \u65D7\u8230\u591A\u6A21\u6001\u63A8\u7406\u6A21\u578B\uFF0C1M \u4E0A\u4E0B\u6587\uFF0C\u652F\u6301\u6587\u672C\u4E0E\u89C6\u89C9\u7406\u89E3\u3001\u5DE5\u5177\u8C03\u7528\u3002"
613
+ }
614
+ ];
615
+
578
616
  // packages/integrations/commandcode/models.ts
579
617
  var commandCodeModels = [
580
618
  // ── DeepSeek ──
@@ -3297,7 +3335,8 @@ var MODEL_MAP = {
3297
3335
  zai: zaiModels,
3298
3336
  qwen: qwenAllModels,
3299
3337
  moonshot: moonshotAllModels,
3300
- stepfun: stepfunAllModels
3338
+ stepfun: stepfunAllModels,
3339
+ minimax: minimaxModels
3301
3340
  };
3302
3341
  var MODEL_LOOKUP_MAP = {
3303
3342
  anthropic: [...anthropicModels, ...anthropicOAuthModels],
@@ -3539,6 +3578,7 @@ export {
3539
3578
  kimiCodeModels,
3540
3579
  stepfunModels,
3541
3580
  stepfunStepPlanModels,
3581
+ minimaxModels,
3542
3582
  commandCodeModels,
3543
3583
  opencodeGoModels,
3544
3584
  DEFAULT_REASONING_EFFORT,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  buildSkillDocMarkdown
3
- } from "./chunk-XETG4RIX.js";
3
+ } from "./chunk-AETZ7AD6.js";
4
4
 
5
5
  // packages/cli/docPageHelpers.ts
6
6
  import { readFileSync } from "node:fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  requireTokenUser
3
- } from "./chunk-C3OK72G3.js";
3
+ } from "./chunk-DJ2BOPJY.js";
4
4
  import {
5
5
  t
6
- } from "./chunk-2AB2HA4M.js";
6
+ } from "./chunk-TDX2L4W2.js";
7
7
  import {
8
8
  resolveServerUrl
9
9
  } from "./chunk-A7GB5UGH.js";
@@ -27,11 +27,11 @@ import {
27
27
  stablePromptCacheKey,
28
28
  toOpenAiCompatibleMessages,
29
29
  toResponsesTools
30
- } from "./chunk-6TF64IF2.js";
30
+ } from "./chunk-DI7ZFGDQ.js";
31
31
  import {
32
32
  isMeaningfulChatCompletionOutput,
33
33
  isMeaningfulResponsesOutput
34
- } from "./chunk-2MTE2PEH.js";
34
+ } from "./chunk-ASSNAASW.js";
35
35
  import {
36
36
  clipCompactText
37
37
  } from "./chunk-5MMAK75Q.js";
@@ -44,7 +44,7 @@ import {
44
44
  resolvePlatformAuthToken,
45
45
  resolvePlatformServerUrl,
46
46
  resolveProviderTransportDecision
47
- } from "./chunk-SUKSWFLP.js";
47
+ } from "./chunk-PIG2IUVZ.js";
48
48
  import {
49
49
  isRecord
50
50
  } from "./chunk-KUG52IAP.js";