nolo-cli 0.89.0-alpha.1 → 0.91.0-alpha.1

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 (132) hide show
  1. package/README.md +2 -2
  2. package/{_executeModel-I3XRMAJ2.js → _executeModel-U5V7LOJX.js} +38 -38
  3. package/{action-7GHFPDSQ.js → action-EXQVY3UO.js} +7 -7
  4. package/{addContentAction-ZNVB2NOV.js → addContentAction-6IXQSRD2.js} +5 -5
  5. package/{addDialogAgentAction-CIDFWATM.js → addDialogAgentAction-FZOB4BYM.js} +4 -4
  6. package/{agentDeleteCommand-DCTG26JW.js → agentDeleteCommand-4MIJFQQB.js} +24 -23
  7. package/{agentEmailCommands-MRRHBLDQ.js → agentEmailCommands-JUXT36BY.js} +50 -49
  8. package/{agentGrantCommands-R3VQEZJR.js → agentGrantCommands-YW6PQAQ2.js} +2 -2
  9. package/{agentListCommands-CUE46CSP.js → agentListCommands-MUVKMMZ5.js} +32 -25
  10. package/{agentMachineCommands-FYDEKBIO.js → agentMachineCommands-56FTZLYV.js} +24 -23
  11. package/{agentProviderCommands-X3FA6BUM.js → agentProviderCommands-TOMVKJOV.js} +1 -1
  12. package/{agentPullCommand-U73W5IBM.js → agentPullCommand-GLOOXJ2E.js} +2 -2
  13. package/{agentRecordCommands-P2MSNP7R.js → agentRecordCommands-FST3KAKG.js} +48 -47
  14. package/{agentRunCommand-QJGP7JEN.js → agentRunCommand-UMUEVIY2.js} +49 -48
  15. package/{agentRunControl-T44MESII.js → agentRunControl-XLGD3UZ5.js} +1 -1
  16. package/{agentRuntimeLocal-T43UNWAY.js → agentRuntimeLocal-NH6GSGAJ.js} +20 -19
  17. package/{agentSlice-7GDS5Q2S.js → agentSlice-YZK6KG73.js} +5 -5
  18. package/{appDeleteCommands-YBKY3VEI.js → appDeleteCommands-U45KXYX7.js} +25 -24
  19. package/{appDeployCommands-EBC76HO4.js → appDeployCommands-LWQIQCFX.js} +25 -24
  20. package/{appDeployStatusCommands-WXRC5KEK.js → appDeployStatusCommands-LZO33PGD.js} +25 -24
  21. package/{appGetCommands-VZZQEDOV.js → appGetCommands-OJSO6BCF.js} +25 -24
  22. package/{appListCommands-HYSPVQ77.js → appListCommands-NE56V7DI.js} +25 -24
  23. package/{authCommand-E4GDVKMW.js → authCommand-U5LA6H4Y.js} +84 -18
  24. package/{authCommands-VOTT6XWX.js → authCommands-RGOGCPP6.js} +2 -2
  25. package/{builtinSkillRegistry-5SYVTS6Z.js → builtinSkillRegistry-4NB7PCOF.js} +5 -5
  26. package/{chatQueueReduxAdapter-CXEWIDFZ.js → chatQueueReduxAdapter-FRMSYX7N.js} +17 -17
  27. package/{chunk-JC2WQS66.js → chunk-377KM42Z.js} +20 -16
  28. package/{chunk-3T4PRBHV.js → chunk-3XMOAYRC.js} +1 -1
  29. package/{chunk-6H7GN3JL.js → chunk-4CAPEGHN.js} +20 -7
  30. package/{chunk-ZKGIAM7I.js → chunk-4JBZUECA.js} +1 -1
  31. package/{chunk-23RQKXP6.js → chunk-4QKBQHPQ.js} +1 -1
  32. package/{chunk-IZAWJCG7.js → chunk-546FPOW3.js} +1 -1
  33. package/{chunk-5XTOKQLW.js → chunk-5UTFL4QJ.js} +6 -2
  34. package/chunk-5ZUL4CUO.js +10 -0
  35. package/{chunk-UINEAQ2R.js → chunk-6D6VBVEW.js} +1 -1
  36. package/{chunk-IMDA4FW4.js → chunk-7IBK6MYW.js} +61 -46
  37. package/{chunk-BNMZ7QUV.js → chunk-AQDH76OK.js} +1 -1
  38. package/{chunk-IO7DYRPW.js → chunk-B4S7MR5S.js} +16 -12
  39. package/{chunk-KT6LENVP.js → chunk-BF2K6MRF.js} +2 -2
  40. package/{chunk-Q246OUG5.js → chunk-BKP7CFUD.js} +5 -5
  41. package/{chunk-2KDR4CWE.js → chunk-BYMV6QZG.js} +24 -1
  42. package/{chunk-MFW4BGJS.js → chunk-COM7GG76.js} +1 -1
  43. package/{chunk-HH65VA5U.js → chunk-CPH3W5A7.js} +15 -3
  44. package/{chunk-JITSBA52.js → chunk-DM4UNXPK.js} +2 -2
  45. package/{chunk-Q4KVAB6L.js → chunk-DSX6K7C2.js} +28 -9
  46. package/{chunk-Y2IFJ7VM.js → chunk-E2NP7ZQU.js} +3 -3
  47. package/{chunk-VARZWSKW.js → chunk-E3VQ6S3A.js} +3 -3
  48. package/{chunk-5EJZGJS2.js → chunk-F3UTRUDO.js} +3 -3
  49. package/{chunk-WSOMSDQB.js → chunk-G5X57NDE.js} +35 -1
  50. package/{chunk-BJIRLHJR.js → chunk-GII32WZW.js} +1 -0
  51. package/{chunk-OCL2YCAU.js → chunk-GRDSMV4V.js} +40 -40
  52. package/{chunk-LEYH5NOH.js → chunk-HGRDL36J.js} +4 -4
  53. package/{chunk-OZX2IPKM.js → chunk-HQCSU3DI.js} +1 -1
  54. package/{chunk-EXWOCYCR.js → chunk-HWZAXNO7.js} +10 -5
  55. package/{chunk-OAJRZ35U.js → chunk-IIKPWSPX.js} +1 -1
  56. package/{chunk-KC5FAHVS.js → chunk-JEDZAO7L.js} +1 -1
  57. package/{chunk-UWMQ6FPM.js → chunk-JTYPAMGP.js} +151 -1
  58. package/{chunk-YZHP76TR.js → chunk-KR3YI36B.js} +1 -1
  59. package/{chunk-GIG262ZG.js → chunk-LSSBA2TN.js} +1 -1
  60. package/{chunk-X77EN2BJ.js → chunk-MBEEYLGL.js} +2 -2
  61. package/{chunk-EVBFYPDC.js → chunk-MC4XLIJ7.js} +6 -2
  62. package/{chunk-DS3SQTDT.js → chunk-NKIH4Q7W.js} +1 -1
  63. package/{chunk-GRJTR4PU.js → chunk-OH7H6LPC.js} +4 -4
  64. package/{chunk-OHUU52T3.js → chunk-OOLWKQSM.js} +1 -1
  65. package/{chunk-FMODTASJ.js → chunk-Q5FJJ6XI.js} +1 -7
  66. package/{chunk-JYYZCK2Z.js → chunk-QFMFJZLO.js} +1 -1
  67. package/{chunk-S6STPUMG.js → chunk-QMASIHYZ.js} +5 -5
  68. package/{chunk-VW3YGKWR.js → chunk-R2YY6MWV.js} +294 -203
  69. package/{chunk-ZSG2AQU4.js → chunk-RLEWGSM5.js} +62 -11
  70. package/{chunk-TGRQUFLU.js → chunk-RZYQMSQA.js} +1 -1
  71. package/{chunk-6ZC5KPXV.js → chunk-S3UI4IUJ.js} +903 -40
  72. package/{chunk-SPAQ4PVV.js → chunk-SAFZABH7.js} +1 -1
  73. package/{chunk-AYT2OKNM.js → chunk-SASGLNUD.js} +3 -3
  74. package/{chunk-L2VNQQ7M.js → chunk-SUERPXJZ.js} +368 -25
  75. package/{chunk-2XEVK4BT.js → chunk-TMAZ3VHN.js} +1 -1
  76. package/{chunk-US463UAD.js → chunk-U47DH2WO.js} +2 -2
  77. package/{chunk-NVHJWYUO.js → chunk-UBNV6CS6.js} +35 -33
  78. package/{chunk-UO66QKGI.js → chunk-UDEFS2PV.js} +4 -3
  79. package/{chunk-LSV2BOJL.js → chunk-VOOTT7HA.js} +1 -1
  80. package/{chunk-GXWEF4IZ.js → chunk-W2E6HIIK.js} +1 -1
  81. package/{chunk-P3AS5IPM.js → chunk-WKEUHK57.js} +3 -2
  82. package/{chunk-ZIHJVHFH.js → chunk-WON762L4.js} +1 -1
  83. package/{chunk-W7PGACND.js → chunk-WP6BC7OF.js} +10 -10
  84. package/{chunk-4FRNB4ZG.js → chunk-X2ZTVRXP.js} +4 -4
  85. package/{chunk-XCSSFPTB.js → chunk-XAQAF25W.js} +1 -1
  86. package/{chunk-HJKGQPYF.js → chunk-XGJAR4T5.js} +31 -14
  87. package/{chunk-PHDKTASK.js → chunk-XLGHBHGP.js} +1 -1
  88. package/{chunk-OKCTLCKS.js → chunk-YOXYA2GU.js} +1 -1
  89. package/{chunk-VQD6BTML.js → chunk-YPYMGGPJ.js} +3 -3
  90. package/{chunk-T4F2EQGN.js → chunk-ZHUTWJ3N.js} +2 -2
  91. package/{chunk-6RCZYDDC.js → chunk-ZKMYGRO7.js} +6 -6
  92. package/{contentThunks-Y2ACIFDB.js → contentThunks-TC3AENBY.js} +18 -18
  93. package/{createAgentAutomationAction-TNE3QMJR.js → createAgentAutomationAction-67EOD3WK.js} +18 -18
  94. package/{createDialogAction-BMGHBTQB.js → createDialogAction-4OCQC5MW.js} +20 -20
  95. package/{createPageAction-FFNIZPIS.js → createPageAction-JLGVP57B.js} +18 -18
  96. package/{dbSlice-4CUQE35F.js → dbSlice-RDGCE5MU.js} +4 -4
  97. package/{dialogCommands-3JC3BIXC.js → dialogCommands-JHSDKCR5.js} +26 -25
  98. package/{dialogSlice-3E7Z7HZV.js → dialogSlice-I2DK32ZT.js} +17 -17
  99. package/{docCreateCommands-6LNQLCTA.js → docCreateCommands-QUL6VWK2.js} +24 -23
  100. package/{docDeleteCommands-ZJOAPWZS.js → docDeleteCommands-DMQ2MU6I.js} +25 -24
  101. package/{docReadCommands-LJTRSBG6.js → docReadCommands-FVHENBU6.js} +24 -23
  102. package/{docStore-R47ABXBB.js → docStore-OLC6MD7B.js} +5 -5
  103. package/{docUpdateCommands-7P3QF3N2.js → docUpdateCommands-VA6V5C6L.js} +24 -23
  104. package/{getPricing-TV6ZB7ES.js → getPricing-YYXTEPBP.js} +3 -3
  105. package/{handleSendMessageAction-FFYOGXAO.js → handleSendMessageAction-GRDIRXAK.js} +17 -17
  106. package/index.js +81 -81
  107. package/{machineCommands-FN5GGQV3.js → machineCommands-IJJ66MYU.js} +47 -46
  108. package/{machineWsRunDispatch-H47IA7ZT.js → machineWsRunDispatch-PP2ZBS6D.js} +47 -46
  109. package/{memberThunks-N35XAOC6.js → memberThunks-WQGQWYYT.js} +5 -5
  110. package/{models-CMXFDBQH.js → models-UN7YGMPM.js} +2 -2
  111. package/{offlineMarxistsAgentCommand-GEH6SNNA.js → offlineMarxistsAgentCommand-JEWCIAWM.js} +1 -1
  112. package/package.json +1 -1
  113. package/{providerPresetApply-D2GGHPI7.js → providerPresetApply-NO73BG45.js} +6 -6
  114. package/{providerRegistry-MU6C4ABD.js → providerRegistry-OVY4VKNN.js} +6 -6
  115. package/{read-2PV4PN2E.js → read-S4WC2OUK.js} +3 -3
  116. package/{readDocTool-FGK5XGAW.js → readDocTool-PQNM63KV.js} +1 -1
  117. package/{readlineWorkspace-NXKHYZEU.js → readlineWorkspace-ASJECDJD.js} +123 -91
  118. package/{removeDialogAgentAction-O2POGBOE.js → removeDialogAgentAction-YJZ6XJV6.js} +7 -7
  119. package/{runAgentClientLoop-CEBV5UPD.js → runAgentClientLoop-KIOQSDRC.js} +36 -36
  120. package/{setDialogExtraReferencesAction-KPSVVY3C.js → setDialogExtraReferencesAction-E6A3WL4E.js} +5 -5
  121. package/{setPrimaryDialogAgentAction-RMJETONI.js → setPrimaryDialogAgentAction-WBLIVICQ.js} +7 -7
  122. package/{settingSlice-I6MTTNDX.js → settingSlice-JR6S7TRD.js} +6 -6
  123. package/{spaceCommands-JHT4ALCQ.js → spaceCommands-WDUNCAK5.js} +24 -23
  124. package/{streamAgentChatTurn-SFCZP4GY.js → streamAgentChatTurn-EGQDPMAO.js} +44 -42
  125. package/{switchDialogAgentAction-OQSGWVQQ.js → switchDialogAgentAction-DTR36ZY2.js} +4 -4
  126. package/{tableCommands-SUNTHAYX.js → tableCommands-O6NWHFKV.js} +1 -1
  127. package/{toolApiClient-VGYUB4P5.js → toolApiClient-7PSIFQPJ.js} +2 -2
  128. package/{tools-K3YOTESV.js → tools-AOVE5LKM.js} +33 -33
  129. package/tuiSummaryLlmCaller-XRQCSNYQ.js +127 -0
  130. package/{updateCommands-Y363MC3L.js → updateCommands-2M74UL7P.js} +2 -2
  131. package/{updateDialogTitleAction-CSPKYQRO.js → updateDialogTitleAction-T66TXHIR.js} +38 -21
  132. package/tuiSummaryLlmCaller-T2OA5ZVB.js +0 -116
@@ -405,6 +405,8 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
405
405
  const fs = deps.fs ?? nodeFs;
406
406
  const now = deps.now ?? (() => /* @__PURE__ */ new Date());
407
407
  const minWriteIntervalMs = options.minWriteIntervalMs ?? DEFAULT_ACTIVITY_WRITE_INTERVAL_MS;
408
+ const keepAlive = options.keepAlive ?? true;
409
+ let disposed = false;
408
410
  let lastEventAt = now().toISOString();
409
411
  let inFlight = null;
410
412
  const counters = { llmCalls: 0, toolCalls: 0, fileEdits: 0 };
@@ -425,7 +427,9 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
425
427
  };
426
428
  }
427
429
  function doWrite() {
430
+ if (disposed) return;
428
431
  writeTimer = void 0;
432
+ const attemptAt = now().getTime();
429
433
  withRunRecordLock(
430
434
  runId,
431
435
  deps,
@@ -438,7 +442,10 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
438
442
  },
439
443
  { strict: true }
440
444
  );
445
+ if (lastWriteAt < attemptAt) lastWriteAt = attemptAt;
446
+ if (keepAlive) scheduleWrite();
441
447
  }
448
+ scheduleWrite();
442
449
  function scheduleWrite() {
443
450
  if (writeTimer !== void 0) return;
444
451
  const elapsed = now().getTime() - lastWriteAt;
@@ -446,6 +453,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
446
453
  writeTimer = setTimeout(doWrite, delay);
447
454
  }
448
455
  function onLoopEvent(event) {
456
+ if (disposed) return;
449
457
  lastEventAt = new Date(event.atMs).toISOString();
450
458
  switch (event.kind) {
451
459
  case "llm-start":
@@ -480,6 +488,7 @@ function createRunActivityTracker(runId, deps = {}, options = {}) {
480
488
  doWrite();
481
489
  }
482
490
  function dispose() {
491
+ disposed = true;
483
492
  if (writeTimer !== void 0) {
484
493
  clearTimeout(writeTimer);
485
494
  writeTimer = void 0;
@@ -817,10 +826,13 @@ async function spawnLocalBackgroundRun(input, deps = {}) {
817
826
  });
818
827
  proc.unref();
819
828
  if (typeof proc.pid === "number") {
820
- record.pid = proc.pid;
821
829
  const processStartedAt = (deps.getProcessStartTime ?? defaultGetProcessStartTime)(proc.pid);
822
- if (processStartedAt) record.processStartedAt = processStartedAt.toISOString();
823
- writeRunRecord(record, deps);
830
+ withRunRecordLock(runId, deps, () => {
831
+ const latest = readRunRecord(runId, deps) ?? record;
832
+ latest.pid = proc.pid;
833
+ if (processStartedAt) latest.processStartedAt = processStartedAt.toISOString();
834
+ writeRunRecord(latest, deps);
835
+ });
824
836
  }
825
837
  return { runId, pid: proc.pid, logPath, queuePath, batchId };
826
838
  }
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  DEFAULT_SYSTEM_AGENT_CAPABILITIES,
6
6
  noloAgentId
7
- } from "./chunk-IZAWJCG7.js";
7
+ } from "./chunk-546FPOW3.js";
8
8
  import {
9
9
  asRecordOrEmpty
10
10
  } from "./chunk-KX6YBIHG.js";
@@ -14,7 +14,7 @@ import {
14
14
  toTimestampMs,
15
15
  upsert,
16
16
  write
17
- } from "./chunk-5EJZGJS2.js";
17
+ } from "./chunk-F3UTRUDO.js";
18
18
  import {
19
19
  createUserKey,
20
20
  createUserPreferenceKey,
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-PUOC4YRO.js";
5
5
  import {
6
6
  AGENT_SELECTION_PRIORITY_INSTRUCTIONS
7
- } from "./chunk-OKCTLCKS.js";
7
+ } from "./chunk-YOXYA2GU.js";
8
8
  import {
9
9
  getModelContextWindow
10
- } from "./chunk-OCL2YCAU.js";
10
+ } from "./chunk-GRDSMV4V.js";
11
11
  import {
12
12
  estimateTokenCount
13
13
  } from "./chunk-PSCNXBYA.js";
@@ -18,7 +18,7 @@ import {
18
18
  PLATFORM_HOSTED_KIMI_K3_MODEL,
19
19
  isFireworksKimiModel,
20
20
  isNoloHostedProvider
21
- } from "./chunk-UWMQ6FPM.js";
21
+ } from "./chunk-JTYPAMGP.js";
22
22
  import {
23
23
  asTrimmedLowercaseString
24
24
  } from "./chunk-QSJ3HFEF.js";
@@ -91,6 +91,13 @@ var buildStartupProtocolBlock = (options = {}) => {
91
91
  };
92
92
 
93
93
  // packages/agent-runtime/runtimeGuidance.ts
94
+ var NOLO_WORKING_PHILOSOPHY = [
95
+ "--- Nolo \u5DE5\u4F5C\u539F\u5219 ---",
96
+ "\u9002\u5E94\u7528\u6237\u7684\u5DE5\u4F5C\u65B9\u5F0F\uFF0C\u800C\u4E0D\u662F\u8981\u6C42\u7528\u6237\u9002\u5E94\u4F60\u3002\u4FDD\u62A4\u7528\u6237\u6709\u9650\u7684\u6CE8\u610F\u529B\uFF1A\u80FD\u53EF\u9760\u5904\u7406\u7684\u5E38\u89C4\u590D\u6742\u6027\u5C3D\u91CF\u81EA\u884C\u5904\u7406\uFF1B\u771F\u6B63\u5F71\u54CD\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u548C\u65B9\u5411\u7684\u51B3\u5B9A\u7559\u7ED9\u7528\u6237\u3002",
97
+ "\u5C0A\u91CD\u7528\u6237\u7684\u610F\u56FE\u4E0E\u5224\u65AD\uFF0C\u4F46\u4E0D\u8981\u76F2\u4ECE\uFF1B\u5F53\u786E\u5B9E\u80FD\u6539\u53D8\u7ED3\u679C\u65F6\uFF0C\u6307\u51FA\u91CD\u8981\u76F2\u533A\u3001\u98CE\u9669\u3001\u66F4\u597D\u7684\u65B9\u6848\u6216\u65B0\u7684\u53EF\u80FD\u3002\u4E0D\u8981\u4E3A\u4E86\u663E\u5F97\u6709\u601D\u8003\u800C\u523B\u610F\u53CD\u9A73\u3002",
98
+ "\u5229\u7528\u76F8\u5173\u7684 Space\u3001\u8BB0\u5FC6\u3001\u5386\u53F2\u51B3\u5B9A\u548C\u5F53\u524D\u4E0A\u4E0B\u6587\uFF0C\u8BA9\u5408\u4F5C\u4EA7\u751F\u79EF\u7D2F\uFF1B\u4E0D\u8981\u56E0\u4E3A\u5B58\u5728\u65E7\u4E0A\u4E0B\u6587\u5C31\u5F3A\u884C\u5E26\u5165\u65E0\u5173\u4EFB\u52A1\uFF0C\u4E5F\u4E0D\u8981\u8BA9\u7528\u6237\u91CD\u590D\u8BF4\u660E\u5DF2\u7ECF\u53EF\u7528\u7684\u4FE1\u606F\u3002",
99
+ "\u76EE\u6807\u4E0D\u662F\u66FF\u7528\u6237\u505A\u6240\u6709\u51B3\u5B9A\uFF0C\u4E5F\u4E0D\u662F\u628A\u6240\u6709\u9009\u62E9\u91CD\u65B0\u4E22\u7ED9\u7528\u6237\uFF0C\u800C\u662F\u51CF\u5C11\u65E0\u610F\u4E49\u7684\u6253\u6270\uFF0C\u8BA9\u7528\u6237\u628A\u6CE8\u610F\u529B\u653E\u5728\u771F\u6B63\u9700\u8981\u5176\u5224\u65AD\u7684\u5730\u65B9\u3002"
100
+ ].join("\n");
94
101
  var normalizeToolName = (name) => name.replace(/[-_]/g, "").toLowerCase();
95
102
  var hasAnyTool = (normalizedTools, candidates) => candidates.some((candidate) => normalizedTools.has(normalizeToolName(candidate)));
96
103
  var hasAllTools = (normalizedTools, candidates) => candidates.every((candidate) => normalizedTools.has(normalizeToolName(candidate)));
@@ -146,11 +153,14 @@ var resolveRuntimeGuidanceToolOptions = (tools = []) => {
146
153
  var buildRuntimeGuidanceBlocks = (tools = []) => {
147
154
  const options = resolveRuntimeGuidanceToolOptions(tools);
148
155
  const normalizedTools = canonicalizeToolNames(tools);
156
+ const startupProtocol = buildStartupProtocolBlock({
157
+ hasCheckEnvTool: options.hasCheckEnvTool,
158
+ hasExecShellTool: options.hasExecShellTool
159
+ });
149
160
  return {
150
- startupProtocol: buildStartupProtocolBlock({
151
- hasCheckEnvTool: options.hasCheckEnvTool,
152
- hasExecShellTool: options.hasExecShellTool
153
- }),
161
+ // 复用现有 startup-protocol session-scope 槽位,保证 web/server/local 三条
162
+ // 装配线无需各自新增一份全局哲学;具体 startup protocol 为空时原则仍常驻。
163
+ startupProtocol: [NOLO_WORKING_PHILOSOPHY, startupProtocol].filter(Boolean).join("\n\n"),
154
164
  contextLayerContract: buildContextLayerContractBlock({
155
165
  hasRememberMemoryTool: options.hasRememberMemoryTool,
156
166
  hasDocTools: options.hasDocTools
@@ -190,13 +200,22 @@ var TOOL_USE_GUIDANCE = `--- \u5DE5\u5177\u4F7F\u7528\u7EAA\u5F8B ---
190
200
  var AGENT_ORCHESTRATION_RUN_INSTRUCTIONS = `--- \u591A Agent \u7F16\u6392\uFF08\u540E\u53F0 Run\uFF09 ---
191
201
  \u7528 startAgentRun \u542F\u52A8\u5B50 Agent\uFF08wait:false \u5F02\u6B65 fork+exec \u8FD4\u56DE runId\uFF1Bwait:true \u540C\u6B65\u7B49\u7ED3\u679C\uFF09\uFF0C\u7528 controlAgentRun \u63A7\u5236/\u8BCA\u65AD\u3002\u4F55\u65F6\u6D3E\u53D1\u89C1\u300C\u591A Agent \u534F\u4F5C\u300D\u6BB5\uFF1B\u672C\u6BB5\u53EA\u8BB2\u6D3E\u53D1\u4E4B\u540E\u7684\u76EF\u68A2\u4E0E\u6392\u9519\u3002
192
202
 
193
- 1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u662F\u5426\u5141\u8BB8\u963B\u585E\u7B49\u5F85\u7531\u5DE5\u5177\u8868\u56DE\u7B54\uFF0C\u4E0D\u7528\u731C\u73AF\u5883\uFF1AcontrolAgentRun \u6709 wait action \u5C31\u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4E0D\u8981\u81EA\u5DF1\u5FAA\u73AF wait\u2014\u2014\u90A3\u662F\u4F2A\u88C5\u6210\u7B49\u5F85\u7684\u8F6E\u8BE2\uFF09\uFF1B\u6CA1\u6709\u5C31\u6309\u5DE5\u5177\u63CF\u8FF0\u5904\u7406\uFF0C\u4E0D\u8981\u63A8\u65AD\u4E00\u5B9A\u5B58\u5728 terminal wake\u3002
203
+ 1. \u76EF\u68A2\uFF1A**\u5F02\u6B65\u6D3E\u53D1\u540E\u7ACB\u5373\u6536\u5C3E\uFF0C\u7B49\u7EC8\u6001\u901A\u77E5\u3002** \u4E32\u884C\u4F9D\u8D56\u4E0D\u662F\u963B\u585E\u5BF9\u8BDD\u7684\u7406\u7531\u3002\u7B49\u5F85\u65B9\u5F0F\u6309\u73AF\u5883\u5206\u4E09\u79CD\uFF1A\u2460 controlAgentRun \u6709 wait action \u2192 \u7528\u5B83\u963B\u585E\u5230\u7EC8\u6001\uFF08\u4EC5\u9650\u9884\u8BA1 <100s \u4E14\u9A6C\u4E0A\u8981\u7528\u7ED3\u679C\u7684\u573A\u666F\uFF0C\u6216\u7528\u6237\u660E\u786E\u8981\u6C42\u540C\u6B65\u7B49\u5F85\uFF09\uFF1B\u2461 \u65E0 wait action \u4F46\u5BBF\u4E3B\u6709 terminal wake \u2192 \u6D3E\u53D1\u540E\u76F4\u63A5\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u5230\u7EC8\u6001\u65F6\u5BBF\u4E3B\u81EA\u52A8\u628A\u7236\u5BF9\u8BDD\u63A5\u56DE\u6765\uFF0C\u4E0D\u9700\u8981\u4EFB\u4F55\u4E3B\u52A8\u7B49\u5F85\uFF1B\u2462 \u65E0 wait action \u4E14\u65E0 terminal wake \u2192 \u6D3E\u53D1\u540E\u540C\u6837\u7ED3\u675F\u672C\u8F6E\u56DE\u590D\uFF0Crun \u7ED3\u675F\u65F6\u4E0D\u4F1A\u88AB\u81EA\u52A8\u63A5\u56DE\u6765\uFF0C\u8FD9\u662F\u5BBF\u4E3B\u9650\u5236\uFF0C\u5E94\u5728\u56DE\u590D\u4E2D\u5982\u5B9E\u544A\u77E5\u7528\u6237\u300Crun \u5DF2\u5728\u540E\u53F0\u8FD0\u884C\uFF0C\u7ED3\u679C\u9700\u624B\u52A8\u67E5\u8BE2\u300D\uFF0C\u800C\u4E0D\u662F\u7528 execShell sleep \u8F6E\u8BE2\u7ED5\u8FC7\u3002**execShell sleep \u6C38\u8FDC\u4E0D\u662F\u7B49\u5F85 agent run \u7684\u6B63\u786E\u65B9\u5F0F**\uFF1A\u547D\u4EE4\u8D85 5s \u4F1A\u88AB\u81EA\u52A8 detach \u6210\u540E\u53F0\u4EFB\u52A1\uFF0C\u6BCF\u4E2A\u5B8C\u6210\u90FD\u4EA7\u751F\u4E00\u6761\u901A\u77E5\uFF0C\u5F62\u6210\u566A\u97F3\u4E14\u5B8C\u5168\u65E0\u6548\u3002
194
204
  2. \u7981\u6B62\u8F6E\u8BE2\u3001\u7981\u7A7A\u8F6C\u3001\u522B\u590D\u8FF0 status\uFF1B\u8BED\u4E49\u4EE5\u5DE5\u5177\u63CF\u8FF0\u4E3A\u51C6\u3002status \u4EC5\u7528\u4E8E\u5F02\u5E38\u8BCA\u65AD\u2014\u2014\u6000\u7591\u5361\u6B7B\u3001failed \u540E\u770B\u8BE6\u60C5/\u65E5\u5FD7\u3001\u7528\u6237\u660E\u786E\u8BE2\u95EE\u6267\u884C\u7EC6\u8282\uFF08tailLines:0 \u53EA\u770B\u6458\u8981\uFF09\uFF1B\u5B83\u4E0D\u662F stop \u524D\u7684 preflight\u3002\u5E76\u884C\uFF1A\u65E0\u6587\u4EF6\u4EA4\u96C6\u3001\u65E0\u771F\u5B9E\u6570\u636E\u4F9D\u8D56\u7684\u72EC\u7ACB\u5B50\u4EFB\u52A1\u9ED8\u8BA4\u5E76\u53D1\u6D3E\u53D1\uFF1B\u4E0D\u8981\u56E0\u5171\u7528\u540C\u4E00\u6267\u884C agent/\u901A\u9053\u800C\u81EA\u884C\u52A0\u300C\u901A\u9053\u4E32\u884C\u300D\u4FDD\u5B88\u5047\u8BBE\uFF08\u540C\u901A\u9053\u5141\u8BB8\u5E76\u53D1 fork\uFF0C\u5B9E\u4F8B\u95F4\u65E0\u4E0A\u4E0B\u6587\u5171\u4EAB\uFF09\uFF0C\u53EA\u6709\u771F\u5B9E\u6587\u4EF6/\u6570\u636E\u4F9D\u8D56\u6216 brief \u660E\u793A\u51B2\u7A81\u9762\u65F6\u624D\u4E32\u884C\u3002
195
205
  3. \u6392\u9519\u5148\u5206\u8BCA\uFF1AagentKey \u6CA1\u7167\u6284 listAgents \u5C31\u5148\u4FEE key\uFF08\u4E0D\u7B97\u901A\u9053\u6545\u969C\uFF09\uFF1B\u62A5\u9519\u542B not found / invalid ref / Local agent config not found \u2192 \u5148 readAgent \u590D\u6838\uFF0C**\u7981\u6B62**\u636E\u6B64\u63A8\u65AD\u51ED\u8BC1\u7F3A\u5931\u6216\u901A\u9053\u5168\u6302\uFF1B\u540C\u4E00\u5DF2\u9A8C\u8BC1 key \u4ECD\u5931\u8D25\u4E14\u9519\u8BEF\u660E\u786E\u6307\u5411\u901A\u9053\uFF08429\u3001\u9274\u6743\u5931\u8D25\u3001machine offline\uFF09\u624D\u8BB0\u4E3A\u901A\u9053\u6545\u969C\u3002\u5224\u5B9A\u300C\u6D3E\u53D1\u901A\u9053\u6574\u4F53\u4E0D\u53EF\u7528\u300D\u9700 \u22652 \u4E2A\u4E0D\u540C\u5019\u9009\u5404\u81EA\u5B8C\u6210\u300C\u5DF2\u9A8C\u8BC1 key + \u4E00\u6B21\u771F\u5B9E\u6D3E\u53D1\u300D\u4E14\u5931\u8D25\uFF0C\u5019\u9009\u4E0D\u8DB3\u5C31\u5982\u5B9E\u62A5\u544A\u300C\u4EC5\u6B64\u5019\u9009\u4E14\u901A\u9053\u5931\u8D25\u300D\uFF0C\u4E0D\u5F97\u5938\u5927\u6210\u5168\u5E93\u4E0D\u53EF\u7528\u3002
196
206
  4. \u53EA\u6709 status=failed/\u8D85\u65F6\u6216 progress \u957F\u65F6\u95F4\u65E0\u52A8\u9759\uFF08\u7591\u4F3C\u5361\u6B7B\uFF09\u624D\u62C9 tailLines:30 \u770B\u65E5\u5FD7\u3002append \u53EF\u76F4\u63A5\u8C03\u7528\u2014\u2014not found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u5165\u961F\u7531 executor \u81EA\u8BC1\uFF1Bstop \u53EF\u76F4\u63A5\u8C03\u7528\uFF0Cnot found/\u5DF2\u7EC8\u6001/\u8FD0\u884C\u4E2D\u7531\u63A7\u5236\u5E73\u9762\u81EA\u884C\u5904\u7406\uFF08\u5DF2\u7EC8\u6001\u539F\u6837\u8FD4\u56DE\u3001\u4E0D\u4F1A\u88AB\u8986\u76D6\uFF09\u3002`;
197
207
  var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C\uFF08\u591A Agent \u534F\u4F5C\uFF1A\u8BA1\u5212 \u2192 \u6309\u9700\u6D3E\u53D1 \u2192 \u5BA1\u67E5\uFF09 ---
198
208
  \u4EA7\u51FA\u4F18\u5148\uFF1A\u4E0D\u4E3A\u300C\u51D1\u6570\u91CF\u300D\u6D3E\u53D1\uFF0C\u4E5F\u4E0D\u5305\u529E\u53EF\u5E76\u884C\u7684\u72EC\u7ACB\u9886\u57DF\uFF1B\u6BCF\u8F6E\u63A8\u8FDB\u5F53\u524D\u6700\u6709\u4EF7\u503C\u7684\u52A8\u4F5C\uFF0C\u62FF\u8BC1\u636E\u518D\u5224\u65AD\u3002
199
209
 
210
+ **\u6D3E\u53D1\u4EF7\u503C\uFF08\u5148\u5224\u65AD\u503C\u4E0D\u503C\u5F97\u6D3E\uFF0C\u518D\u9009\u4EBA\uFF09**\uFF1A
211
+ - \u4E0D\u4E3A\u201C\u770B\u8D77\u6765\u50CF\u591A Agent\u201D\u800C\u6D3E\u53D1\u3002\u53EA\u6709\u9884\u671F\u65B0\u589E\u4EF7\u503C\u660E\u663E\u5927\u4E8E\u534F\u4F5C\u6210\u672C\u65F6\u624D\u6D3E\u3002
212
+ - \u4EF7\u503C\u4E0D\u53EA\u770B\u201C\u4E3B Agent \u505A\u4E0D\u52A8\u201D\u3002\u81F3\u5C11\u4ECE\u4E09\u79CD\u6760\u6746\u5224\u65AD\uFF1A
213
+ 1. **\u4E0A\u4E0B\u6587\u6760\u6746\uFF08Context leverage\uFF09**\uFF1A\u628A\u673A\u68B0 inventory\u3001\u5927\u8F93\u51FA\u3001\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u8BC1\u636E\u641C\u96C6\u9694\u79BB\u51FA\u53BB\uFF0C\u4FDD\u62A4\u4E3B\u5BF9\u8BDD\u4E0A\u4E0B\u6587\u4E0E\u6CE8\u610F\u529B\u3002
214
+ 2. **\u5E76\u884C\u6760\u6746\uFF08Parallel leverage\uFF09**\uFF1A\u4E24\u4E2A\u6216\u66F4\u591A\u4E92\u4E0D\u4F9D\u8D56\u7684\u5DE5\u4F5C\u6D41\u53EF\u4EE5\u540C\u65F6\u63A8\u8FDB\uFF0C\u7F29\u77ED\u603B\u5B8C\u6210\u65F6\u95F4\u3002
215
+ 3. **\u8BA4\u77E5\u6760\u6746\uFF08Cognitive leverage\uFF09**\uFF1A\u72EC\u7ACB\u89C6\u89D2\u3001\u53CD\u65B9\u5BA1\u67E5\u3001\u521B\u610F\u5206\u652F\u3001\u9886\u57DF\u4E13\u5BB6\u6216\u4E0D\u540C\u6A21\u578B\u80FD\u663E\u8457\u63D0\u9AD8\u65B9\u6848\u8D28\u91CF\u3001\u53D1\u73B0\u76F2\u533A\u6216\u964D\u4F4E\u5171\u4EAB\u9519\u8BEF\u98CE\u9669\u3002\u4EA7\u54C1\u3001\u8BBE\u8BA1\u3001\u7814\u7A76\u3001\u5199\u4F5C\u3001\u6218\u7565\u548C\u590D\u6742\u51B3\u7B56\u540C\u6837\u9002\u7528\uFF0C\u4E0D\u9650\u4E8E\u4EE3\u7801\u3002
216
+ - **\u53CD\u7EA6\u675F**\uFF1A\u5982\u679C\u5B50 Agent \u9884\u8BA1\u53EA\u4F1A\u590D\u8FF0\u7236 Agent \u5DF2\u77E5\u4FE1\u606F\u3001\u6CA1\u6709\u72EC\u7ACB\u8BC1\u636E/\u89C6\u89D2/\u5E76\u884C\u6536\u76CA\uFF0C\u5C31\u4E0D\u8981\u6D3E\u3002\u4E0D\u8981\u628A\u534F\u8C03\u5F00\u9500\u4F2A\u88C5\u6210\u201C\u66F4\u8BA4\u771F\u201D\u3002
217
+ - **\u4FDD\u62A4\u7528\u6237\u6CE8\u610F\u529B**\uFF1A\u7F16\u6392\u8005\u5E94\u5148\u5728\u5185\u90E8\u5B8C\u6210\u80FD\u53EF\u9760\u5B8C\u6210\u7684\u6BD4\u8F83\u3001\u7B5B\u9009\u4E0E\u9ED8\u8BA4\u5224\u65AD\uFF1B\u53EA\u6709\u76EE\u6807\u3001\u98CE\u9669\u3001\u5BA1\u7F8E\u3001\u8D39\u7528\u3001\u6743\u9650\u3001\u4E0D\u53EF\u9006\u540E\u679C\u7B49\u771F\u6B63\u9700\u8981\u7528\u6237\u51B3\u5B9A\u7684\u4E8B\u9879\u624D\u6253\u65AD\u7528\u6237\u3002\u4E0D\u8981\u628A\u201C\u8BF7\u9009\u62E9 A/B/C\u201D\u5F53\u4F5C\u5DF2\u7ECF\u5B8C\u6210\u89C4\u5212\uFF1B\u6709\u8DB3\u591F\u4F9D\u636E\u65F6\u5148\u7ED9\u63A8\u8350\u4E0E\u7406\u7531\uFF0C\u5E76\u8BF4\u660E\u4F55\u79CD\u6761\u4EF6\u4E0B\u5E94\u6539\u9009\u3002
218
+
200
219
  **\u5E73\u53F0 Agent / \u5E73\u53F0\u79EF\u5206\u6263\u8D39\u786E\u8BA4\u786C\u95F8\u95E8\uFF08\u5FC5\u987B\u5148\u786E\u8BA4\uFF0C\u540E\u8C03\u7528\uFF09**\uFF1A
201
220
  - \u53EA\u8981\u5019\u9009 Agent \u7684 apiSource \u4E3A platform\uFF0C\u6216\u65E0\u6CD5\u786E\u8BA4\u8C03\u7528\u662F\u5426\u6D88\u8017\u5E73\u53F0\u79EF\u5206/\u989D\u5EA6\uFF0C\u5C31\u5FC5\u987B\u628A\u5B83\u89C6\u4E3A\u53EF\u80FD\u6263\u8D39\u7684\u9AD8\u6210\u672C\u8C03\u7528\u3002
202
221
  - **\u4EC5\u544A\u77E5\u7528\u6237\u201C\u4F1A\u6D88\u8017\u5E73\u53F0\u79EF\u5206\u201D\u4E0D\u7B49\u4E8E\u83B7\u5F97\u6388\u6743\u3002** \u8C03\u7528 startAgentRun \u524D\uFF0C\u5FC5\u987B\u5148\u5411\u7528\u6237\u8BF4\u660E\uFF1A\u539F\u4F18\u5148\u901A\u9053\u4E3A\u4F55\u4E0D\u53EF\u7528\u3001\u5019\u9009\u5E73\u53F0 Agent\u3001\u9884\u8BA1\u6263\u8D39/\u79EF\u5206\u5F71\u54CD\uFF0C\u5E76\u505C\u4E0B\u6765\u7B49\u5F85\u7528\u6237\u5F53\u6B21\u660E\u786E\u80AF\u5B9A\u6388\u6743\u3002
@@ -208,7 +227,7 @@ var AGENT_COLLABORATION_INSTRUCTIONS = `--- Agent \u7F16\u6392\u4E0E\u534F\u4F5C
208
227
  **\u6D3E\u53D1\u524D\u81EA\u68C0**\uFF1A\u6BCF\u6B21\u8C03\u7528 startAgentRun \u524D\uFF0C\u5148\u6838\u5BF9 agentKey \u7684 apiSource\u3001\u6536\u85CF/\u79C1\u6709\u72B6\u6001\u3001\u5360\u7528\u72B6\u6001\uFF08\u4EC5\u5F53\u5DE5\u5177/\u901A\u9053\u660E\u786E\u8FD4\u56DE\u8BE5\u5019\u9009\u4E0D\u53EF\u7528\uFF0C\u6216\u9879\u76EE\u660E\u786E\u89C4\u5B9A\u5B58\u5728\u540C\u4E00 Agent \u7684\u8D44\u6E90\u9501\u65F6\u6210\u7ACB\uFF09\u548C\u5F53\u524D\u6388\u6743\uFF1B\u65E0\u6CD5\u786E\u8BA4\u6263\u8D39\u72B6\u6001\u65F6\u6309\u53EF\u80FD\u6263\u8D39\u5904\u7406\uFF0C\u5148\u8BE2\u95EE\uFF0C\u4E0D\u5F97\u731C\u6D4B\u3002
209
228
 
210
229
  **\u5206\u6863\u6807\u51C6\uFF08\u4E24\u8D26\u5224\u636E\uFF1A\u4E0A\u4E0B\u6587\u8D26 / \u5E76\u884C\u8D26\uFF1B\u6A21\u578B\u6210\u672C\u4E0D\u6784\u6210\u6D3E\u53D1\u7406\u7531\uFF09**\uFF1A
211
- - **\u81EA\u5DF1\u505A**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u76F4\u63A5\u56DE\u7B54\uFF1B\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u5B9E\u73B0\uFF08\u5178\u578B \u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\u3001\u65E0\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u72EC\u7ACB\u9886\u57DF\uFF09\u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
230
+ - **\u81EA\u5DF1\u505A**\uFF1A\u7EAF\u95EE\u7B54/\u54A8\u8BE2/\u95F2\u804A\u9ED8\u8BA4\u76F4\u63A5\u56DE\u7B54\u2014\u2014\u4F46\u82E5\u95EE\u9898\u672C\u8EAB\u662F\u5F00\u653E\u5F0F\u521B\u4F5C\u3001\u590D\u6742\u53D6\u820D\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u3001\u91CD\u5927\u51B3\u7B56\u6216\u660E\u786E\u5B58\u5728\u591A\u89C6\u89D2\u4EF7\u503C\uFF0C\u8BA4\u77E5\u6760\u6746\u547D\u4E2D\u5373\u6309\u53D1\u6563/\u4F1A\u5546\u6D3E\u53D1\uFF1B\u53EA\u6709\u786E\u5B9E\u6CA1\u6709\u65B0\u589E\u89C6\u89D2/\u8BC1\u636E/\u5E76\u884C\u6536\u76CA\u65F6\u624D\u76F4\u63A5\u56DE\u7B54\u3002\u4E24\u8D26\u5747\u4E0D\u547D\u4E2D\u7684\u4E2D\u5C0F\u5B9E\u73B0\uFF08\u5178\u578B \u22643 \u4E2A\u6587\u4EF6\u30011~2 \u6B21\u9A8C\u8BC1\u5F80\u8FD4\u3001\u65E0\u5927\u8F93\u51FA\u3001\u65E0 \u22652 \u4E2A\u72EC\u7ACB\u9886\u57DF\uFF09\u76F4\u63A5\u5B8C\u6210\uFF0C\u4E0D\u58F0\u660E\u3001\u4E0D\u6D3E\u53D1\u3002
212
231
  - **\u4E0A\u4E0B\u6587\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u9A8C\u8BC1\u5FAA\u73AF \u22653 \u6B21\u300C\u8DD1\u547D\u4EE4\u2192\u770B\u62A5\u9519\u2192\u6539\u300D\uFF0C\u6216\u5355\u6B65\u5927\u8F93\u51FA\uFF08\u5168\u91CF typecheck \u62A5\u9519\u3001\u957F\u6D4B\u8BD5\u6808\u3001\u5927 diff\u3001\u5927\u6587\u4EF6\u8BFB\u53D6\uFF09\u2014\u2014\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u4E0E\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u4EA4\u7ED9\u5B50 Agent\uFF1B\u7236 Agent \u63A5\u6536\u7ED3\u6784\u5316\u8BC1\u636E\uFF0C\u5E76\u4EB2\u81EA\u590D\u6838\u6240\u6709\u5F71\u54CD\u5173\u952E\u51B3\u7B56\u7684\u539F\u59CB\u8BC1\u636E\u3002
213
232
  - **\u5173\u952E\u51B3\u7B56\u4E0A\u4E0B\u6587\u4E0D\u5916\u5305**\uFF1A\u4E0A\u4E0B\u6587\u8D26\u53EA\u51B3\u5B9A\u91CD\u590D\u9A8C\u8BC1\u5FAA\u73AF\u3001\u5927\u8F93\u51FA\u5904\u7406\u3001\u673A\u68B0 inventory/\u8BC1\u636E\u5B9A\u4F4D\u7684\u6D3E\u53D1\uFF1B\u6D89\u53CA\u67B6\u6784\u3001\u8BA1\u8D39\u3001\u5B89\u5168\u3001\u6743\u9650\u3001\u6570\u636E\u5B8C\u6574\u6027\u3001\u4E0D\u53EF\u9006\u8FC1\u79FB\u3001\u957F\u671F\u4EA7\u54C1\u8BED\u4E49\u65F6\uFF0C\u7F16\u6392\u8005\u5FC5\u987B\u4EB2\u81EA\u8BFB\u53D6\u8DB3\u4EE5\u51B3\u7B56\u7684\u4E00\u7EA7\u4EE3\u7801\u3001\u6B63\u5F0F\u771F\u503C\u3001\u539F\u59CB\u65E5\u5FD7\u548C\u771F\u5B9E\u6570\u636E\u8BC1\u636E\uFF1B\u5B50 Agent \u53EF\u505A\u5B9A\u4F4D\u3001\u673A\u68B0\u6536\u96C6\u3001\u72EC\u7ACB\u590D\u6838\u4E0E\u53CD\u65B9\u5BA1\u67E5\uFF0C\u4F46\u5176\u6458\u8981\u4E0D\u80FD\u66FF\u4EE3\u5173\u952E\u4E0A\u4E0B\u6587\u4EB2\u8BFB\u3002
214
233
  - **\u5E76\u884C\u8D26\u547D\u4E2D \u2192 \u6D3E\u53D1**\uFF1A\u22652 \u4E2A\u4E92\u4E0D\u4F9D\u8D56\u7684\u72EC\u7ACB\u9886\u57DF\uFF0C\u6216\u4ED3\u5E93\u6539\u52A8\uFF0B\u9A8C\u8BC1\uFF0B\u53D1\u5E03/\u8FC1\u79FB\u957F\u94FE\u8DEF \u2192 \u6309\u9886\u57DF\u5E76\u53D1\u6D3E\u53D1\u3002
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  buildLocalAgentLookupKeys,
3
3
  shouldReadAgentKeyRemotely
4
- } from "./chunk-OAJRZ35U.js";
4
+ } from "./chunk-IIKPWSPX.js";
5
5
  import {
6
6
  resolveCliAgentKeyInput
7
- } from "./chunk-SPAQ4PVV.js";
7
+ } from "./chunk-SAFZABH7.js";
8
8
  import {
9
9
  toErrorMessage
10
10
  } from "./chunk-HNMXYYJR.js";
@@ -507,7 +507,7 @@ async function buildCreatedAgentRecord(args) {
507
507
  const resolvedAgentInput = resolveCliAgentKeyInput(args.parsed.agentInput);
508
508
  const agentKey = resolvedAgentInput.startsWith("agent-") ? resolvedAgentInput : createAgentKey.private(userId || "local", resolvedAgentInput);
509
509
  if (args.parsed.presetId) {
510
- const { resolveProviderPresetFields } = await import("./providerPresetApply-D2GGHPI7.js");
510
+ const { resolveProviderPresetFields } = await import("./providerPresetApply-NO73BG45.js");
511
511
  const fields = resolveProviderPresetFields(args.parsed.presetId);
512
512
  if (fields.kind === "manual") {
513
513
  throw new Error(
@@ -7,10 +7,10 @@ import {
7
7
  listUserRecordsFromServers,
8
8
  readDbRecordFromServers,
9
9
  readLiveDbRecordAfterTombstoneMerge
10
- } from "./chunk-3T4PRBHV.js";
10
+ } from "./chunk-3XMOAYRC.js";
11
11
  import {
12
12
  fetchWithTransientRetry
13
- } from "./chunk-5XTOKQLW.js";
13
+ } from "./chunk-5UTFL4QJ.js";
14
14
  import {
15
15
  DRAIN_EXHAUSTED_USER_MESSAGE,
16
16
  isDrainExhaustedResponse
@@ -30,7 +30,7 @@ import {
30
30
  boundSummaryText,
31
31
  buildDialogReadEnvelope,
32
32
  projectDialogReadForAgent
33
- } from "./chunk-OKCTLCKS.js";
33
+ } from "./chunk-YOXYA2GU.js";
34
34
  import {
35
35
  toErrorMessage
36
36
  } from "./chunk-HNMXYYJR.js";
@@ -12,7 +12,7 @@ import {
12
12
  readAction,
13
13
  readRequestManager,
14
14
  resolveAgentReadServers
15
- } from "./chunk-OHUU52T3.js";
15
+ } from "./chunk-OOLWKQSM.js";
16
16
  import {
17
17
  asyncThunkCreator,
18
18
  buildCreateSlice,
@@ -712,7 +712,7 @@ var dbSlice = createSliceWithThunks({
712
712
  // 动态 import 在调用期解析,避开 TDZ/求值顺序问题(同下方 share)。
713
713
  read: create.asyncThunk(
714
714
  async (payload, thunkApi) => {
715
- const { readAction: readAction2 } = await import("./read-2PV4PN2E.js");
715
+ const { readAction: readAction2 } = await import("./read-S4WC2OUK.js");
716
716
  return readAction2(payload, thunkApi);
717
717
  },
718
718
  {
@@ -786,7 +786,7 @@ var dbSlice = createSliceWithThunks({
786
786
  // 这里改成动态 import,运行期才解析,彻底断开这条边。
787
787
  share: create.asyncThunk(
788
788
  async (config, thunkApi) => {
789
- const { shareResourceAction } = await import("./action-7GHFPDSQ.js");
789
+ const { shareResourceAction } = await import("./action-EXQVY3UO.js");
790
790
  return shareResourceAction(config, thunkApi);
791
791
  }
792
792
  ),
@@ -1,7 +1,13 @@
1
+ import {
2
+ isDevinOAuthAgent
3
+ } from "./chunk-5ZUL4CUO.js";
4
+ import {
5
+ getModelContextWindow
6
+ } from "./chunk-GRDSMV4V.js";
1
7
  import {
2
8
  findModelConfig,
3
9
  getProviderByModelName
4
- } from "./chunk-6H7GN3JL.js";
10
+ } from "./chunk-4CAPEGHN.js";
5
11
  import {
6
12
  asOptionalFiniteNumber
7
13
  } from "./chunk-WWC7I6TA.js";
@@ -120,6 +126,33 @@ async function stripImagePartsForTextOnlyAgent(messages, agentConfig) {
120
126
  return { messages: !supportsVision && hasImages ? stripImagePartsFromMessages(messages) : messages };
121
127
  }
122
128
 
129
+ // packages/agent-runtime/devin/devinChannelWindows.ts
130
+ var DEVIN_CHANNEL_CONTEXT_WINDOWS = {
131
+ // SWE-2 家族(catalog 无裸 swe-2 selector;旧点号/裸写法如 swe-2、
132
+ // swe-1.7 实测均 permission_denied,已不是可用 selector)。
133
+ "swe-2-max": 262e3,
134
+ "swe-2-high": 262e3,
135
+ "swe-2-medium": 262e3,
136
+ // SWE-1.7 家族。
137
+ "swe-1-7": 262e3,
138
+ "swe-1-7-medium": 262e3,
139
+ "swe-1-7-lightning": 202752,
140
+ // SWE-1.6 家族(免费档默认)。
141
+ "swe-1-6": 2e5,
142
+ "swe-1-6-fast": 2e5,
143
+ // 经 devin 通道转售、且与厂商原生窗口不同的模型(catalog 枚举型 selector)。
144
+ "MODEL_GPT_5_2_LOW": 384e3,
145
+ "MODEL_GPT_5_2_MEDIUM": 384e3,
146
+ "MODEL_GPT_5_2_HIGH": 384e3,
147
+ "MODEL_GPT_5_2_XHIGH": 384e3
148
+ };
149
+ var devinChannelContextWindow = (model) => {
150
+ const raw = model?.trim();
151
+ if (!raw) return void 0;
152
+ return DEVIN_CHANNEL_CONTEXT_WINDOWS[raw];
153
+ };
154
+ var resolveAgentContextWindow = (agent) => (isDevinOAuthAgent(agent) ? devinChannelContextWindow(agent.model) : void 0) ?? getModelContextWindow(agent.model ?? "");
155
+
123
156
  // packages/agent-runtime/agentRecordConfig.ts
124
157
  function stringField(record, key) {
125
158
  const value = record[key];
@@ -540,6 +573,7 @@ export {
540
573
  resolveHistoricalToolContentCap,
541
574
  projectToolMessageContent,
542
575
  clipToolText,
576
+ resolveAgentContextWindow,
543
577
  resolveAgentRuntimeConfigFromRecord,
544
578
  buildDesktopAgentRuntimeAgentConfigSnapshot,
545
579
  buildDesktopAgentRuntimeDialogHistorySnapshot,
@@ -37,6 +37,7 @@ export {
37
37
  PUBLIC_AGENT_KEY_PREFIX,
38
38
  publicAgentKey,
39
39
  parsePublicAgentId,
40
+ ownedAgentKeyPrefix,
40
41
  ownedAgentKey,
41
42
  isOwnedAgentKey,
42
43
  parseOwnedAgentId
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  normalizeTimingMs
3
- } from "./chunk-KT6LENVP.js";
3
+ } from "./chunk-BF2K6MRF.js";
4
4
  import {
5
5
  MODEL_LOOKUP_MAP
6
- } from "./chunk-6H7GN3JL.js";
6
+ } from "./chunk-4CAPEGHN.js";
7
7
  import {
8
8
  ALL_MODELS
9
- } from "./chunk-23RQKXP6.js";
9
+ } from "./chunk-4QKBQHPQ.js";
10
10
  import {
11
11
  asTrimmedNonEmptyStringArray
12
12
  } from "./chunk-VMFTFOWF.js";
@@ -15,11 +15,47 @@ import {
15
15
  } from "./chunk-WWC7I6TA.js";
16
16
  import {
17
17
  BUILTIN_NOLO_AGENT_KEY
18
- } from "./chunk-HJKGQPYF.js";
18
+ } from "./chunk-XGJAR4T5.js";
19
19
  import {
20
20
  asOptionalTrimmedString
21
21
  } from "./chunk-G3SUCT4W.js";
22
22
 
23
+ // packages/ai/token/cacheTokenFields.ts
24
+ var finiteTokenCount = (value) => {
25
+ if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
26
+ return Math.max(0, Math.floor(value));
27
+ };
28
+ var readNested = (value, path) => {
29
+ let cursor = value;
30
+ for (const key of path) {
31
+ if (!cursor || typeof cursor !== "object") return void 0;
32
+ cursor = cursor[key];
33
+ }
34
+ return finiteTokenCount(cursor);
35
+ };
36
+ var firstPositive = (usage, readers) => {
37
+ for (const read of readers) {
38
+ const value = read(usage);
39
+ if (value !== void 0 && value !== 0) return value;
40
+ }
41
+ return 0;
42
+ };
43
+ var topLevel = (field) => (usage) => {
44
+ if (!usage || typeof usage !== "object") return void 0;
45
+ return finiteTokenCount(usage[field]);
46
+ };
47
+ var nested = (path) => (usage) => readNested(usage, path);
48
+ var readCacheReadInputTokens = (usage) => firstPositive(usage, [
49
+ topLevel("cache_read_input_tokens"),
50
+ topLevel("prompt_cache_hit_tokens"),
51
+ nested(["input_tokens_details", "cached_tokens"]),
52
+ nested(["prompt_tokens_details", "cached_tokens"])
53
+ ]);
54
+ var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
55
+ topLevel("cache_creation_input_tokens"),
56
+ topLevel("prompt_cache_miss_tokens")
57
+ ]);
58
+
23
59
  // packages/ai/llm/getModelContextWindow.ts
24
60
  var DEFAULT_CONTEXT_WINDOW = 256e3;
25
61
  var QWEN_3_6_CONTEXT_WINDOW = 262144;
@@ -157,42 +193,6 @@ var getModelInfo = (modelName) => {
157
193
  return map.get(modelName) || map.get(modelName.toLowerCase()) || null;
158
194
  };
159
195
 
160
- // packages/ai/token/cacheTokenFields.ts
161
- var finiteTokenCount = (value) => {
162
- if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
163
- return Math.max(0, Math.floor(value));
164
- };
165
- var readNested = (value, path) => {
166
- let cursor = value;
167
- for (const key of path) {
168
- if (!cursor || typeof cursor !== "object") return void 0;
169
- cursor = cursor[key];
170
- }
171
- return finiteTokenCount(cursor);
172
- };
173
- var firstPositive = (usage, readers) => {
174
- for (const read of readers) {
175
- const value = read(usage);
176
- if (value !== void 0 && value !== 0) return value;
177
- }
178
- return 0;
179
- };
180
- var topLevel = (field) => (usage) => {
181
- if (!usage || typeof usage !== "object") return void 0;
182
- return finiteTokenCount(usage[field]);
183
- };
184
- var nested = (path) => (usage) => readNested(usage, path);
185
- var readCacheReadInputTokens = (usage) => firstPositive(usage, [
186
- topLevel("cache_read_input_tokens"),
187
- topLevel("prompt_cache_hit_tokens"),
188
- nested(["input_tokens_details", "cached_tokens"]),
189
- nested(["prompt_tokens_details", "cached_tokens"])
190
- ]);
191
- var readCacheCreationInputTokens = (usage) => firstPositive(usage, [
192
- topLevel("cache_creation_input_tokens"),
193
- topLevel("prompt_cache_miss_tokens")
194
- ]);
195
-
196
196
  // packages/ai/token/normalizeUsage.ts
197
197
  var normalizeStringArray = (value) => {
198
198
  if (!Array.isArray(value)) return void 0;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-IMDA4FW4.js";
3
+ } from "./chunk-7IBK6MYW.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-LS2ZANRJ.js";
@@ -12,10 +12,10 @@ import {
12
12
  resolveAgentRecordFromHybridStore,
13
13
  sanitizeAgentRecordForCliOutput,
14
14
  writeAgentRecord
15
- } from "./chunk-Y2IFJ7VM.js";
15
+ } from "./chunk-E2NP7ZQU.js";
16
16
  import {
17
17
  resolveCliAgentKeyInput
18
- } from "./chunk-SPAQ4PVV.js";
18
+ } from "./chunk-SAFZABH7.js";
19
19
  import {
20
20
  toErrorMessage
21
21
  } from "./chunk-HNMXYYJR.js";
@@ -212,7 +212,7 @@ async function runAgentCreateCommand(args, deps = {}) {
212
212
  clearCliLocalRuntimePreparedAgentCache();
213
213
  let verifyResult;
214
214
  if (parsed.verify) {
215
- const { verifyCustomProvider } = await import("./agentProviderCommands-X3FA6BUM.js");
215
+ const { verifyCustomProvider } = await import("./agentProviderCommands-TOMVKJOV.js");
216
216
  const rec = built.nextRecord;
217
217
  verifyResult = await verifyCustomProvider({
218
218
  providerUrl: rec.customProviderUrl,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-QSJ3HFEF.js";
10
10
  import {
11
11
  extractCustomId
12
- } from "./chunk-BJIRLHJR.js";
12
+ } from "./chunk-GII32WZW.js";
13
13
  import {
14
14
  selectIdentityToken
15
15
  } from "./chunk-SEJ5OS6F.js";
@@ -35,15 +35,16 @@ import {
35
35
  resolvePlatformAuthToken,
36
36
  resolvePlatformServerUrl,
37
37
  resolveProviderTransportDecision
38
- } from "./chunk-X77EN2BJ.js";
38
+ } from "./chunk-MBEEYLGL.js";
39
39
  import {
40
40
  clipCompactText,
41
41
  isMeaningfulChatCompletionOutput,
42
42
  isMeaningfulResponsesOutput
43
- } from "./chunk-KT6LENVP.js";
43
+ } from "./chunk-BF2K6MRF.js";
44
44
  import {
45
- NOLO_CLIENT_VERSION_HEADER
46
- } from "./chunk-UWMQ6FPM.js";
45
+ NOLO_CLIENT_VERSION_HEADER,
46
+ isPlatformMimoProviderModel
47
+ } from "./chunk-JTYPAMGP.js";
47
48
  import {
48
49
  isRecord
49
50
  } from "./chunk-KUG52IAP.js";
@@ -465,7 +466,11 @@ function isAbortOrTimeoutError(error) {
465
466
  }
466
467
  var CHAT_PROXY_PATH = "/api/v1/chat";
467
468
  function shouldDisableThinking(providerConfig) {
468
- return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint);
469
+ return providerConfig.provider.toLowerCase() === "mimo" || /xiaomimimo\.com/i.test(providerConfig.endpoint) || // 平台托管 MiMo(provider=nolo + mimo-v2.6-*):endpoint 通常已解析成
470
+ // api.xiaomimimo.com/...(上面的正则已命中),但 transport=direct 时
471
+ // endpoint 是 nolo 服务器地址——模型 id 判据保证两跳都关掉 thinking
472
+ // (上游 thinking 默认 enabled)。
473
+ isPlatformMimoProviderModel(providerConfig.provider, providerConfig.model);
469
474
  }
470
475
  function isResponsesEndpoint(endpoint) {
471
476
  return /\/responses$/i.test(endpoint.trim());
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildAgentRuntimeAgentLookupKeys,
3
3
  shouldFetchAgentRuntimeRecordRemotely
4
- } from "./chunk-OKCTLCKS.js";
4
+ } from "./chunk-YOXYA2GU.js";
5
5
 
6
6
  // packages/cli/client/localAgentRecords.ts
7
7
  var buildLocalAgentLookupKeys = buildAgentRuntimeAgentLookupKeys;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadProfileConfig
3
- } from "./chunk-2KDR4CWE.js";
3
+ } from "./chunk-BYMV6QZG.js";
4
4
  import {
5
5
  resolveDefaultSpawn
6
6
  } from "./chunk-X7HHHIOZ.js";