nolo-cli 0.90.0-alpha.1 → 0.91.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 (173) hide show
  1. package/README.md +1 -1
  2. package/{_executeModel-W26HVI75.js → _executeModel-H35GQ2XO.js} +61 -60
  3. package/{action-6DXQGJMX.js → action-3ZOODRBC.js} +11 -11
  4. package/{addContentAction-I7VX5SAC.js → addContentAction-IJHG2ZV7.js} +9 -9
  5. package/{addDialogAgentAction-OJSFV7DZ.js → addDialogAgentAction-IGFS2UBX.js} +11 -11
  6. package/{agentDeleteCommand-XNFWCKBH.js → agentDeleteCommand-XOFMXMHW.js} +43 -42
  7. package/{agentEmailCommands-W3X3EJ3V.js → agentEmailCommands-H2SEP6ZQ.js} +82 -78
  8. package/{agentGrantCommands-YW6PQAQ2.js → agentGrantCommands-M3XFO6EN.js} +2 -2
  9. package/{agentListCommands-DFWFU6XO.js → agentListCommands-RYGH6NUL.js} +72 -80
  10. package/{agentMachineCommands-LMFOAEL4.js → agentMachineCommands-XELOBZIP.js} +37 -36
  11. package/{agentProviderCommands-ZBYHGTGY.js → agentProviderCommands-JCRK6ST2.js} +1 -1
  12. package/{agentPullCommand-GLOOXJ2E.js → agentPullCommand-HF4A42D4.js} +3 -3
  13. package/agentRecordCommands-43HAXAZO.js +130 -0
  14. package/{agentRunCommand-HTBVIBGV.js → agentRunCommand-GIPN6DBO.js} +80 -75
  15. package/{agentRunControl-XLGD3UZ5.js → agentRunControl-AVJR4JW4.js} +2 -2
  16. package/{agentRuntimeLocal-2JFG4HDU.js → agentRuntimeLocal-SDOSSCLU.js} +38 -33
  17. package/{agentSlice-ZNLGFUB5.js → agentSlice-B2DLZMAC.js} +11 -11
  18. package/{appDeleteCommands-2UN4N2NR.js → appDeleteCommands-7OR5MAOR.js} +37 -36
  19. package/{appDeployCommands-37D74KRR.js → appDeployCommands-5GNI723H.js} +37 -36
  20. package/{appDeployStatusCommands-QBLWL2IA.js → appDeployStatusCommands-WL2NG3SG.js} +37 -36
  21. package/{appGetCommands-6KXIDF2T.js → appGetCommands-7BVKQS44.js} +37 -36
  22. package/{appListCommands-G2WFGEWQ.js → appListCommands-5VXFJOBU.js} +37 -36
  23. package/{authCommand-V2DJ7DB7.js → authCommand-N4Q6463J.js} +115 -23
  24. package/{authCommands-RGOGCPP6.js → authCommands-GBIFZWD3.js} +5 -5
  25. package/{builtinSkillRegistry-WBGYKIAZ.js → builtinSkillRegistry-JPY2DKRF.js} +7 -7
  26. package/{chatQueueReduxAdapter-XCJHIY3R.js → chatQueueReduxAdapter-3KDRKXTT.js} +29 -29
  27. package/{chromeCommands-VOIRNJBL.js → chromeCommands-NKU3OWKH.js} +36 -11
  28. package/{chromeOpsCommands-M7DPCX2T.js → chromeOpsCommands-OQDJGD4Y.js} +31 -1
  29. package/{chunk-4BYPU626.js → chunk-232453C2.js} +994 -1036
  30. package/{chunk-SMZSWB44.js → chunk-25GAGMRK.js} +6 -83
  31. package/{chunk-PH5J5VUY.js → chunk-3IYMTWYZ.js} +22 -22
  32. package/{chunk-NTW5GWDM.js → chunk-3VNWWVKB.js} +2 -0
  33. package/{chunk-TVNI5FLG.js → chunk-46CRK7XP.js} +7 -7
  34. package/{chunk-2ADBVBEM.js → chunk-55VQ4OPL.js} +4 -4
  35. package/{chunk-JPGCXHNM.js → chunk-5OA5HMTL.js} +1 -1
  36. package/{chunk-DWUCB2A3.js → chunk-62IL3KQV.js} +4 -34
  37. package/{chunk-3R5PH4IP.js → chunk-64TIEZHF.js} +1 -1
  38. package/{chunk-6YTOJY35.js → chunk-6D2JFXLY.js} +35 -0
  39. package/{chunk-3BMYXEUW.js → chunk-6O4IK4V2.js} +1 -1
  40. package/{chunk-WXPVOQD7.js → chunk-6PELJ3DS.js} +533 -236
  41. package/{chunk-NFMHIUY3.js → chunk-7EMJBGCA.js} +966 -218
  42. package/{chunk-HYZHJ5GW.js → chunk-7YMUSSHQ.js} +93 -93
  43. package/chunk-ACTMNVHM.js +93 -0
  44. package/{chunk-Q554LLSI.js → chunk-AUDNYVRC.js} +1 -1
  45. package/{chunk-UKWGR5SS.js → chunk-AUXHZ2M5.js} +186 -397
  46. package/{chunk-7MYYE7WX.js → chunk-B4PW6UAI.js} +61 -34
  47. package/{chunk-4DRWWIOL.js → chunk-B7ANJQWZ.js} +2 -2
  48. package/{chunk-XKQJJK4F.js → chunk-BAAKVSMZ.js} +4 -4
  49. package/{chunk-FQYMLZ6C.js → chunk-BFCXG6AJ.js} +16 -16
  50. package/{chunk-ZBT3WNBK.js → chunk-BJUDYFV5.js} +10 -2
  51. package/chunk-BMQ2MJUK.js +153 -0
  52. package/{chunk-TL6L5XUT.js → chunk-BNGW5ASC.js} +94 -16
  53. package/{chunk-JTK3TJYV.js → chunk-BTSYHR7J.js} +4 -4
  54. package/{chunk-LS2ZANRJ.js → chunk-CTUQJVQM.js} +1 -1
  55. package/{chunk-JEDZAO7L.js → chunk-D2W6WRHT.js} +13 -8
  56. package/{chunk-6BEA566T.js → chunk-D76D3RTR.js} +2 -2
  57. package/{chunk-HQCSU3DI.js → chunk-DCLMZ5TX.js} +4 -4
  58. package/{chunk-L2ICPOAL.js → chunk-EFZKILX6.js} +4 -4
  59. package/{chunk-JBBZ5KUM.js → chunk-EHO5EGU4.js} +23 -76
  60. package/{chunk-HVURBGF3.js → chunk-ESRMFY7G.js} +2 -2
  61. package/{chunk-ABQYVJBJ.js → chunk-ETZWFV6M.js} +1 -1
  62. package/{chunk-TRV2MIDW.js → chunk-EXAJ6DCR.js} +1 -0
  63. package/{chunk-VHJLQHPQ.js → chunk-F64B2W3R.js} +110 -34
  64. package/{chunk-AQZRTHDZ.js → chunk-G4EMOUX3.js} +886 -154
  65. package/{chunk-XTUY5EL4.js → chunk-GJUKGFHG.js} +74 -16
  66. package/{chunk-XMGHGEN6.js → chunk-GMVELWJG.js} +3 -3
  67. package/chunk-GMZLP5DV.js +82 -0
  68. package/{chunk-CJCJF5XB.js → chunk-H6A6X4EK.js} +36 -3
  69. package/{chunk-N3OAPEZE.js → chunk-HBTA2SGQ.js} +97 -21
  70. package/{chunk-ONXOABJR.js → chunk-HNGRBWYF.js} +3 -0
  71. package/{chunk-3CR2LC6X.js → chunk-HNRASX3X.js} +8 -8
  72. package/{chunk-CPH3W5A7.js → chunk-I3TQJXQ7.js} +94 -3
  73. package/{chunk-GRYGRGPS.js → chunk-IS5VEM2G.js} +140 -15
  74. package/{chunk-MJHQ3NRV.js → chunk-ISHYYQJC.js} +5 -3
  75. package/{chunk-ZAB3A45K.js → chunk-K7M4I3PF.js} +30 -7
  76. package/{chunk-2AYMFHUG.js → chunk-KQOD3G2X.js} +165 -15
  77. package/{chunk-YOXYA2GU.js → chunk-LNPYTNMG.js} +10 -5
  78. package/{chunk-F2CGG72C.js → chunk-LS2MI3B4.js} +45 -45
  79. package/{chunk-GII32WZW.js → chunk-M2EJHDJP.js} +3 -0
  80. package/{chunk-7S4YWN7P.js → chunk-MX574M24.js} +1 -1
  81. package/{chunk-DNQPPRHY.js → chunk-N3XA2O6O.js} +1 -1
  82. package/{chunk-5DFFKASO.js → chunk-NILSKYOE.js} +3 -3
  83. package/chunk-OCZKATRC.js +129 -0
  84. package/{chunk-K7M3MWCE.js → chunk-OOSVFT6S.js} +2 -2
  85. package/{chunk-QCZX4FTW.js → chunk-OY5IJI2N.js} +194 -21
  86. package/{chunk-HMEMJ7GH.js → chunk-PAYUVQ6P.js} +7749 -1320
  87. package/{chunk-ASGDO77C.js → chunk-Q67DOFOO.js} +92 -4
  88. package/{chunk-UA5S3LQQ.js → chunk-QALRKMHF.js} +11 -10
  89. package/{chunk-RZANZZL2.js → chunk-QDSINZM3.js} +1 -1
  90. package/{chunk-DPQ2WVBY.js → chunk-QJLEMM2V.js} +1 -1
  91. package/{chunk-IIKPWSPX.js → chunk-R4SQ3LGW.js} +1 -1
  92. package/{chunk-UTCCPWB2.js → chunk-RZ6CQZB2.js} +34 -20
  93. package/{chunk-SAFZABH7.js → chunk-SV5IJK6K.js} +1 -1
  94. package/{chunk-576IMUGH.js → chunk-T5V7HA3K.js} +1 -1
  95. package/{chunk-BYMV6QZG.js → chunk-TNIX77YM.js} +4 -0
  96. package/chunk-UNYJU5L6.js +780 -0
  97. package/{chunk-QFMFJZLO.js → chunk-V7E4PXQD.js} +1 -1
  98. package/{chunk-QHETQ3KI.js → chunk-VBSVA6CB.js} +2 -2
  99. package/{chunk-A2C4AKKM.js → chunk-VETFWL5K.js} +1 -1
  100. package/chunk-VJVNU77E.js +83 -0
  101. package/{chunk-6D6VBVEW.js → chunk-VPFEPRME.js} +9 -9
  102. package/{chunk-3CMTBX3X.js → chunk-W2P25VGS.js} +25 -6
  103. package/{chunk-CLI4LFSM.js → chunk-WC6A2Q7S.js} +5 -3
  104. package/{chunk-Z33ARZCP.js → chunk-WT2IAJAJ.js} +4 -4
  105. package/chunk-X6YIXGPT.js +870 -0
  106. package/{chunk-5V4NJHRM.js → chunk-YMPTI7RZ.js} +9 -9
  107. package/{chunk-5NMZNPTN.js → chunk-YRIFJ6XQ.js} +13 -13
  108. package/{chunk-FZGV4FGK.js → chunk-YRRASA5Q.js} +268 -143
  109. package/{chunk-2F4VYGFW.js → chunk-Z5W7UMQV.js} +4 -3
  110. package/{chunk-ND2J3NRB.js → chunk-ZGJLSHER.js} +2 -2
  111. package/{chunk-VRLI2WNW.js → chunk-ZI2MEZMT.js} +314 -142
  112. package/{chunk-2F7RJC6L.js → chunk-ZOVKKMF6.js} +1 -1
  113. package/commandRegistry-BP5JLW24.js +822 -0
  114. package/{contentThunks-VURN3DFW.js → contentThunks-2HYFUXUM.js} +29 -29
  115. package/{cooldownCommands-BSCH2W7P.js → cooldownCommands-ZLEPIB4A.js} +2 -2
  116. package/{createAgentAutomationAction-QZAAY77R.js → createAgentAutomationAction-DCKUSJH7.js} +29 -29
  117. package/{createDialogAction-CHGXVTAC.js → createDialogAction-NRIAEH2A.js} +32 -32
  118. package/{createPageAction-IOGAFIN7.js → createPageAction-AUJHHXGG.js} +35 -35
  119. package/{dbSlice-YXQ6RYIH.js → dbSlice-HFPIJT5P.js} +8 -8
  120. package/{deleteFile-YG6QMJLU.js → deleteFile-UEAD5A5Z.js} +3 -3
  121. package/{dialogCommands-XREAP6WQ.js → dialogCommands-UJRGCRN6.js} +42 -39
  122. package/{dialogSlice-DOPGWGS4.js → dialogSlice-AHU4XXIW.js} +35 -29
  123. package/{dist-VODFSGNG.js → dist-NJC2W7I4.js} +61 -54
  124. package/{docCreateCommands-3PYZGSCL.js → docCreateCommands-ZOV3ZBLW.js} +39 -38
  125. package/{docDeleteCommands-3Y6MU44Q.js → docDeleteCommands-G4KAXJYQ.js} +39 -38
  126. package/{docReadCommands-UBANMAFR.js → docReadCommands-B2MM3JIT.js} +38 -37
  127. package/{docStore-SYYFBENY.js → docStore-SITH63V3.js} +9 -9
  128. package/{docUpdateCommands-4GK2X6BN.js → docUpdateCommands-2QNF5CYN.js} +39 -38
  129. package/{fetchMessages-EIU7UFFK.js → fetchMessages-67MEFPZR.js} +2 -2
  130. package/{getPricing-F2C65RIX.js → getPricing-OX7B4R6B.js} +3 -3
  131. package/{handleSendMessageAction-NPVTY2GE.js → handleSendMessageAction-7ZMJMWLC.js} +72 -80
  132. package/index.js +74 -877
  133. package/{localDialogRead-BTFJ4V2I.js → localDialogRead-EBRS242U.js} +2 -2
  134. package/{localRuntimeAuthority-6IR6BBXE.js → localRuntimeAuthority-5W6IJRAD.js} +6 -6
  135. package/{localRuntimeDb-SYQGUF4U.js → localRuntimeDb-3LRMNLCM.js} +1 -1
  136. package/{machineCommands-I66X2XB7.js → machineCommands-YCTD5KOL.js} +75 -71
  137. package/{machineWsRunDispatch-W4FVBOUM.js → machineWsRunDispatch-JFMD4ZAW.js} +73 -69
  138. package/{memberThunks-5T4J6KXQ.js → memberThunks-SKFZ37VS.js} +9 -9
  139. package/{models-WW7VFNXB.js → models-T3SG6MJ5.js} +2 -2
  140. package/oauthTokenStore-ITEB663N.js +23 -0
  141. package/{offlineMarxistsAgentCommand-JEWCIAWM.js → offlineMarxistsAgentCommand-HGXZV4XJ.js} +1 -1
  142. package/package.json +1 -1
  143. package/pdf-U6KSUEZZ.js +26435 -0
  144. package/processSpawn-SOAV3FEV.js +11 -0
  145. package/profileConfig-ZGOFORWV.js +43 -0
  146. package/{providerPresetApply-OCWWKBSD.js → providerPresetApply-2QTBYN36.js} +7 -7
  147. package/{providerRegistry-ZJQU7AJ7.js → providerRegistry-SVXE4G4T.js} +7 -7
  148. package/{read-M2Q6WEKB.js → read-IEJLLUXY.js} +5 -5
  149. package/{readDocTool-T37P3YPB.js → readDocTool-4SPYCP2Y.js} +5 -3
  150. package/{readlineWorkspace-VY5AMOGR.js → readlineWorkspace-M3PLTBLD.js} +2396 -2018
  151. package/{removeDialogAgentAction-HB3JBVAI.js → removeDialogAgentAction-LILXTOQY.js} +14 -14
  152. package/{runAgentClientLoop-3NDADLVE.js → runAgentClientLoop-QMCXBOBH.js} +55 -55
  153. package/{runtimeDoctorCommands-X6WDBEQX.js → runtimeDoctorCommands-3USD722U.js} +3 -3
  154. package/runtimeModeArgs-2Y7BALTO.js +31 -0
  155. package/{setDialogExtraReferencesAction-4XLHRV37.js → setDialogExtraReferencesAction-LVNHLNT5.js} +10 -10
  156. package/{setPrimaryDialogAgentAction-C3JOFC4W.js → setPrimaryDialogAgentAction-DCKO5NTW.js} +14 -14
  157. package/{settingSlice-CZRURSTH.js → settingSlice-CNE75ISY.js} +10 -10
  158. package/{spaceCommands-ENYCUUZH.js → spaceCommands-3U6OHM6O.js} +39 -38
  159. package/{streamAgentChatTurn-634OFUSR.js → streamAgentChatTurn-JPMJQSEE.js} +144 -84
  160. package/{switchDialogAgentAction-C6KVUKJP.js → switchDialogAgentAction-JSYUQ5CG.js} +11 -11
  161. package/{tableCommands-O6NWHFKV.js → tableCommands-G7RV3RU3.js} +4 -4
  162. package/{toolApiClient-7PSIFQPJ.js → toolApiClient-INIQCPGY.js} +3 -3
  163. package/{tools-ILBLCF7D.js → tools-XQ5GIH6P.js} +49 -49
  164. package/{tuiSummaryLlmCaller-LFUBZKXK.js → tuiSummaryLlmCaller-L63PDJUD.js} +16 -15
  165. package/{updateCommands-2M74UL7P.js → updateCommands-ECWKIWLQ.js} +3 -3
  166. package/{updateDialogTitleAction-RKFET73N.js → updateDialogTitleAction-EGAZMLUB.js} +32 -32
  167. package/agentRecordCommands-FVVVCQFM.js +0 -126
  168. package/chunk-Q5FJJ6XI.js +0 -103
  169. package/chunk-S7Z2HMCN.js +0 -25
  170. package/chunk-WS22FPWT.js +0 -79
  171. package/{chunk-VMFTFOWF.js → chunk-3AH7LNUB.js} +7 -7
  172. package/{chunk-X7HHHIOZ.js → chunk-Y6ROFCZO.js} +0 -0
  173. package/{db-WK5MDZVN.js → db-VQSAOWAO.js} +1 -1
@@ -6,13 +6,13 @@ import {
6
6
  } from "./chunk-DWLEOOGR.js";
7
7
  import {
8
8
  addContentAction
9
- } from "./chunk-4DRWWIOL.js";
9
+ } from "./chunk-B7ANJQWZ.js";
10
10
  import {
11
11
  upload
12
- } from "./chunk-UA5S3LQQ.js";
12
+ } from "./chunk-QALRKMHF.js";
13
13
  import {
14
14
  getRuntimeServerContext
15
- } from "./chunk-UKWGR5SS.js";
15
+ } from "./chunk-AUXHZ2M5.js";
16
16
  import {
17
17
  API_ENDPOINTS
18
18
  } from "./chunk-LCBAMY2M.js";
@@ -367,6 +367,7 @@ var truncateToolOutputForContext = (text, contextWindow) => {
367
367
  // packages/ai/context/planCompression.ts
368
368
  var MIN_COMPRESS_COUNT = 5;
369
369
  var ACTIVE_SUMMARY_TAIL_KEEP_COUNT = 2;
370
+ var COMPACTION_RETENTION_CUSHION_RATIO = 0.18;
370
371
  var MIN_TRIGGER_PENDING_COUNT = MIN_COMPRESS_COUNT + ACTIVE_SUMMARY_TAIL_KEEP_COUNT;
371
372
  var getMessageTokenCount = (msg) => {
372
373
  const content = serializeMessageContent(msg.content) || "";
@@ -409,13 +410,14 @@ var normalizeContextUsageRatio = (value) => {
409
410
  const ratio = value > 1 ? value / 100 : value;
410
411
  return ratio >= 0 && ratio <= 1 ? ratio : void 0;
411
412
  };
412
- var emptyPlan = (startIndex) => ({
413
+ var emptyPlan = (startIndex, diagnostics) => ({
413
414
  shouldCompress: false,
414
415
  compressCount: 0,
415
416
  msgsToCompress: [],
416
417
  msgsToKeep: [],
417
418
  newSummarizedBeforeId: void 0,
418
- startIndex
419
+ startIndex,
420
+ ...diagnostics ? { diagnostics } : {}
419
421
  });
420
422
  function findPendingMessages(allMsgs, summarizedBeforeId) {
421
423
  let startIndex = 0;
@@ -464,15 +466,42 @@ function calculateCompressCount(pendingMsgs, rawMessageBudget, opts) {
464
466
  }
465
467
  return pendingMsgs.length - keepCount;
466
468
  }
469
+ function resolveEffectiveCompactionBudgets(args) {
470
+ const {
471
+ contextWindow,
472
+ triggerRatio,
473
+ historyBudget,
474
+ rawMessageBudget,
475
+ summaryTokens,
476
+ cushionRatio = COMPACTION_RETENTION_CUSHION_RATIO
477
+ } = args;
478
+ const maxRetainedRatio = Math.max(
479
+ 0.2,
480
+ Number((triggerRatio - cushionRatio).toFixed(4))
481
+ );
482
+ const maxRetainedHistoryBudget = Math.floor(contextWindow * maxRetainedRatio);
483
+ const effectiveHistoryBudget = Math.min(historyBudget, maxRetainedHistoryBudget);
484
+ const effectiveRawMessageBudget = Math.min(
485
+ rawMessageBudget,
486
+ Math.max(0, effectiveHistoryBudget - summaryTokens)
487
+ );
488
+ return {
489
+ effectiveHistoryBudget,
490
+ effectiveRawMessageBudget,
491
+ maxRetainedRatio
492
+ };
493
+ }
467
494
  function guardToolChainBoundary(pendingMsgs, compressCount) {
468
495
  let count = compressCount;
469
- while (count > 0 && count < pendingMsgs.length && pendingMsgs[count].role === "tool") {
470
- count--;
496
+ while (count < pendingMsgs.length && pendingMsgs[count].role === "tool") {
497
+ count++;
471
498
  }
472
- if (count > 0) {
473
- const lastCompressed = pendingMsgs[count - 1];
474
- if (hasOpenEndedToolCall(lastCompressed)) {
499
+ while (count > 0 && hasOpenEndedToolCall(pendingMsgs[count - 1])) {
500
+ if (count < pendingMsgs.length && pendingMsgs[count].role === "tool") {
501
+ count++;
502
+ } else {
475
503
  count--;
504
+ break;
476
505
  }
477
506
  }
478
507
  return count;
@@ -489,7 +518,20 @@ function planCompression(input) {
489
518
  coldResume
490
519
  } = input;
491
520
  const { pendingMsgs, startIndex } = findPendingMessages(allMsgs, summarizedBeforeId);
492
- if (pendingMsgs.length === 0) return emptyPlan(startIndex);
521
+ if (pendingMsgs.length === 0) {
522
+ return emptyPlan(startIndex, {
523
+ pendingMsgCount: 0,
524
+ totalUsed: estimateTokenCount(summary || ""),
525
+ historyBudget: 0,
526
+ triggerRatio: resolveCompressionTriggerRatio(contextWindow),
527
+ realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
528
+ triggeredByRealUsage: false,
529
+ triggeredByEstimate: false,
530
+ triggeredByColdResume: false,
531
+ shouldRunActiveSummary: false,
532
+ emptyReason: "no-pending"
533
+ });
534
+ }
493
535
  const summaryTokens = estimateTokenCount(summary || "");
494
536
  const pendingTokens = pendingMsgs.reduce((sum, msg) => sum + getMessageTokenCount(msg), 0);
495
537
  const totalUsed = summaryTokens + pendingTokens;
@@ -517,14 +559,47 @@ function planCompression(input) {
517
559
  coldResume,
518
560
  lastMsg: pendingMsgs[pendingMsgs.length - 1]
519
561
  });
520
- if (!trigger) return emptyPlan(startIndex);
521
- let compressCount = calculateCompressCount(pendingMsgs, rawMessageBudget, {
522
- keepTailCount: shouldRunActiveSummary || triggeredByRealUsage || triggeredByColdResume,
562
+ const diagnostics = {
563
+ pendingMsgCount: pendingMsgs.length,
523
564
  totalUsed,
524
- historyBudget
565
+ historyBudget,
566
+ triggerRatio,
567
+ realUsageRatio: normalizeContextUsageRatio(realContextUsagePercent),
568
+ triggeredByRealUsage,
569
+ triggeredByEstimate: normalizeContextUsageRatio(realContextUsagePercent) === void 0 && totalUsed >= historyBudget,
570
+ triggeredByColdResume,
571
+ shouldRunActiveSummary
572
+ };
573
+ if (!trigger) {
574
+ return emptyPlan(startIndex, {
575
+ ...diagnostics,
576
+ emptyReason: "not-triggered"
577
+ });
578
+ }
579
+ const { effectiveHistoryBudget, effectiveRawMessageBudget } = resolveEffectiveCompactionBudgets({
580
+ contextWindow,
581
+ triggerRatio,
582
+ historyBudget,
583
+ rawMessageBudget,
584
+ summaryTokens
525
585
  });
586
+ let compressCount = calculateCompressCount(
587
+ pendingMsgs,
588
+ effectiveRawMessageBudget,
589
+ {
590
+ keepTailCount: shouldRunActiveSummary || triggeredByRealUsage || triggeredByColdResume,
591
+ totalUsed,
592
+ historyBudget: effectiveHistoryBudget
593
+ }
594
+ );
526
595
  compressCount = guardToolChainBoundary(pendingMsgs, compressCount);
527
- if (compressCount < MIN_COMPRESS_COUNT) return emptyPlan(startIndex);
596
+ if (compressCount < MIN_COMPRESS_COUNT) {
597
+ return emptyPlan(startIndex, {
598
+ ...diagnostics,
599
+ compressCount,
600
+ emptyReason: "below-min-compress-count"
601
+ });
602
+ }
528
603
  const msgsToCompress = pendingMsgs.slice(0, compressCount);
529
604
  const msgsToKeep = pendingMsgs.slice(compressCount);
530
605
  const newSummarizedBeforeId = msgsToCompress[msgsToCompress.length - 1].id;
@@ -534,7 +609,8 @@ function planCompression(input) {
534
609
  msgsToCompress,
535
610
  msgsToKeep,
536
611
  newSummarizedBeforeId,
537
- startIndex
612
+ startIndex,
613
+ diagnostics: { ...diagnostics, compressCount }
538
614
  };
539
615
  }
540
616
 
@@ -691,14 +767,6 @@ function formatCompactionMetricsLog(metrics) {
691
767
  return `[Compaction] reason=${metrics.reason} compressed=${metrics.compressedCount}->${metrics.retainedCount} msgs, tokens=${totalBefore}->${totalAfter} (ratio=${ratio})${llmInfo}`;
692
768
  }
693
769
 
694
- // packages/core/clipCompactText.ts
695
- function clipCompactText(value, max, ellipsis = "...") {
696
- const compact = compactWhitespace(value);
697
- if (compact.length <= max) return compact;
698
- if (max <= ellipsis.length) return compact.slice(0, max);
699
- return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
700
- }
701
-
702
770
  // packages/ai/token/providerCallTiming.ts
703
771
  var defaultNow = () => {
704
772
  const perf = globalThis.performance;
@@ -769,7 +837,23 @@ var isMeaningfulResponsesOutput = (event) => {
769
837
  return false;
770
838
  };
771
839
 
840
+ // packages/core/clipCompactText.ts
841
+ function clipCompactText(value, max, ellipsis = "...") {
842
+ const compact = compactWhitespace(value);
843
+ if (compact.length <= max) return compact;
844
+ if (max <= ellipsis.length) return compact.slice(0, max);
845
+ return `${compact.slice(0, max - ellipsis.length)}${ellipsis}`;
846
+ }
847
+
772
848
  export {
849
+ normalizeTimingMs,
850
+ createProviderCallTimingTracker,
851
+ observeMeaningfulProviderResponseAt,
852
+ observeMeaningfulProviderResponse,
853
+ finalizeProviderCallTiming,
854
+ withProviderCallTimingFields,
855
+ isMeaningfulChatCompletionOutput,
856
+ isMeaningfulResponsesOutput,
773
857
  clipCompactText,
774
858
  planContextUsage,
775
859
  buildDatabaseFileContentUrl,
@@ -784,13 +868,5 @@ export {
784
868
  formatFileOperationsFromMessages,
785
869
  formatMessagesForSummaryWithTruncation,
786
870
  buildCompactionMetricsFromPlan,
787
- formatCompactionMetricsLog,
788
- normalizeTimingMs,
789
- createProviderCallTimingTracker,
790
- observeMeaningfulProviderResponseAt,
791
- observeMeaningfulProviderResponse,
792
- finalizeProviderCallTiming,
793
- withProviderCallTimingFields,
794
- isMeaningfulChatCompletionOutput,
795
- isMeaningfulResponsesOutput
871
+ formatCompactionMetricsLog
796
872
  };