@cuylabs/agent-core 4.10.0 → 5.0.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 (155) hide show
  1. package/dist/agent/chat-loop/commit-batch.d.ts +1 -1
  2. package/dist/agent/chat-loop/commit-batch.d.ts.map +1 -1
  3. package/dist/agent/chat-loop/context-recovery.d.ts +7 -3
  4. package/dist/agent/chat-loop/context-recovery.d.ts.map +1 -1
  5. package/dist/agent/chat-loop/finalize-turn.d.ts.map +1 -1
  6. package/dist/agent/chat-loop/loop.d.ts.map +1 -1
  7. package/dist/agent/chat-loop/model-step-snapshot.d.ts +1 -1
  8. package/dist/agent/chat-loop/model-step-snapshot.d.ts.map +1 -1
  9. package/dist/agent/chat-loop/types.d.ts +1 -1
  10. package/dist/agent/chat-loop/types.d.ts.map +1 -1
  11. package/dist/agent/event-printer.d.ts.map +1 -1
  12. package/dist/agent/fork.d.ts +1 -1
  13. package/dist/agent/fork.d.ts.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/instance/context-management.d.ts +14 -1
  17. package/dist/agent/instance/context-management.d.ts.map +1 -1
  18. package/dist/agent/instance/forking.d.ts +1 -1
  19. package/dist/agent/instance/forking.d.ts.map +1 -1
  20. package/dist/agent/instance/index.d.ts +17 -5
  21. package/dist/agent/instance/index.d.ts.map +1 -1
  22. package/dist/agent/instance/sessions.d.ts +1 -1
  23. package/dist/agent/instance/sessions.d.ts.map +1 -1
  24. package/dist/agent/instance/turn-lifecycle.d.ts +1 -1
  25. package/dist/agent/instance/turn-lifecycle.d.ts.map +1 -1
  26. package/dist/agent/session.d.ts +1 -1
  27. package/dist/agent/session.d.ts.map +1 -1
  28. package/dist/agent/setup/config.d.ts +1 -1
  29. package/dist/agent/setup/config.d.ts.map +1 -1
  30. package/dist/agent/setup/context-window.d.ts.map +1 -1
  31. package/dist/agent/setup.d.ts +1 -1
  32. package/dist/agent/setup.d.ts.map +1 -1
  33. package/dist/agent/turn-context/compaction/agent-context.d.ts +26 -3
  34. package/dist/agent/turn-context/compaction/agent-context.d.ts.map +1 -1
  35. package/dist/agent/turn-context/compaction/budget.d.ts +2 -2
  36. package/dist/agent/turn-context/compaction/budget.d.ts.map +1 -1
  37. package/dist/agent/turn-context/compaction/check.d.ts +9 -3
  38. package/dist/agent/turn-context/compaction/check.d.ts.map +1 -1
  39. package/dist/agent/turn-context/compaction/index.d.ts +1 -1
  40. package/dist/agent/turn-context/compaction/index.d.ts.map +1 -1
  41. package/dist/agent/turn-context/compaction/memory.d.ts +5 -4
  42. package/dist/agent/turn-context/compaction/memory.d.ts.map +1 -1
  43. package/dist/agent/turn-context/compaction/results.d.ts +7 -1
  44. package/dist/agent/turn-context/compaction/results.d.ts.map +1 -1
  45. package/dist/agent/turn-context/compaction/types.d.ts +7 -1
  46. package/dist/agent/turn-context/compaction/types.d.ts.map +1 -1
  47. package/dist/agent/turn-context/fit-model-context.d.ts +1 -1
  48. package/dist/agent/turn-context/fit-model-context.d.ts.map +1 -1
  49. package/dist/agent/turn-context/index.d.ts +1 -1
  50. package/dist/agent/turn-context/index.d.ts.map +1 -1
  51. package/dist/agent/types/config.d.ts +7 -0
  52. package/dist/agent/types/config.d.ts.map +1 -1
  53. package/dist/{chunk-LX4AHGI3.js → chunk-346FIYKT.js} +1 -1
  54. package/dist/{chunk-EBVSPHXA.js → chunk-556CPZ3J.js} +1 -1
  55. package/dist/{chunk-V4YQ6MBK.js → chunk-BKHWKKSG.js} +1 -1
  56. package/dist/{chunk-AAGKWUXR.js → chunk-CGP6UNCQ.js} +33 -18
  57. package/dist/{chunk-EEAGM5MS.js → chunk-DD7S7ZG4.js} +32 -15
  58. package/dist/{chunk-NMJNN6LS.js → chunk-DYZGHHDB.js} +424 -121
  59. package/dist/{chunk-VMGZKIFT.js → chunk-EDKZOPUV.js} +34 -298
  60. package/dist/{chunk-TU5KDFWI.js → chunk-GHVW7L4P.js} +41 -0
  61. package/dist/{chunk-IQA64CAO.js → chunk-TYQWH6XH.js} +6 -2
  62. package/dist/context/assembly/prepare.d.ts.map +1 -1
  63. package/dist/context/assembly/types.d.ts +6 -2
  64. package/dist/context/assembly/types.d.ts.map +1 -1
  65. package/dist/context/config.d.ts +10 -1
  66. package/dist/context/config.d.ts.map +1 -1
  67. package/dist/context/fragments/messages.d.ts +2 -0
  68. package/dist/context/fragments/messages.d.ts.map +1 -1
  69. package/dist/context/index.js +9 -3
  70. package/dist/context/window/budget.d.ts +28 -1
  71. package/dist/context/window/budget.d.ts.map +1 -1
  72. package/dist/context/window/compactor.d.ts +17 -2
  73. package/dist/context/window/compactor.d.ts.map +1 -1
  74. package/dist/context/window/cut-planner.d.ts +3 -0
  75. package/dist/context/window/cut-planner.d.ts.map +1 -1
  76. package/dist/context/window/decision.d.ts +11 -2
  77. package/dist/context/window/decision.d.ts.map +1 -1
  78. package/dist/context/window/estimation.d.ts +19 -4
  79. package/dist/context/window/estimation.d.ts.map +1 -1
  80. package/dist/context/window/index.d.ts +5 -3
  81. package/dist/context/window/index.d.ts.map +1 -1
  82. package/dist/context/window/manager.d.ts +33 -0
  83. package/dist/context/window/manager.d.ts.map +1 -1
  84. package/dist/context/window/summary.d.ts +9 -0
  85. package/dist/context/window/summary.d.ts.map +1 -1
  86. package/dist/context/window/tool-pruning.d.ts +11 -0
  87. package/dist/context/window/tool-pruning.d.ts.map +1 -1
  88. package/dist/dispatch/index.js +3 -3
  89. package/dist/execution/index.js +3 -3
  90. package/dist/execution/turn/index.js +3 -3
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +311 -125
  94. package/dist/memory/config.d.ts +2 -2
  95. package/dist/memory/config.d.ts.map +1 -1
  96. package/dist/memory/index.d.ts +2 -2
  97. package/dist/memory/index.d.ts.map +1 -1
  98. package/dist/memory/index.js +5 -5
  99. package/dist/memory/middleware.d.ts +2 -2
  100. package/dist/memory/middleware.d.ts.map +1 -1
  101. package/dist/memory/types.d.ts +34 -15
  102. package/dist/memory/types.d.ts.map +1 -1
  103. package/dist/middleware/index.d.ts +2 -1
  104. package/dist/middleware/index.d.ts.map +1 -1
  105. package/dist/middleware/index.js +1 -1
  106. package/dist/middleware/runner.d.ts +16 -1
  107. package/dist/middleware/runner.d.ts.map +1 -1
  108. package/dist/middleware/types.d.ts +57 -2
  109. package/dist/middleware/types.d.ts.map +1 -1
  110. package/dist/{storage → sessions}/index.d.ts +7 -8
  111. package/dist/sessions/index.d.ts.map +1 -0
  112. package/dist/{storage → sessions}/index.js +6 -18
  113. package/dist/{storage → sessions}/manager/default.d.ts +3 -3
  114. package/dist/sessions/manager/default.d.ts.map +1 -0
  115. package/dist/sessions/manager/index.d.ts.map +1 -0
  116. package/dist/{storage → sessions}/manager/session-manager.d.ts +14 -4
  117. package/dist/sessions/manager/session-manager.d.ts.map +1 -0
  118. package/dist/sessions/manager/types.d.ts.map +1 -0
  119. package/dist/sessions/store/lock.d.ts.map +1 -0
  120. package/dist/{storage → sessions/store}/memory.d.ts +5 -5
  121. package/dist/sessions/store/memory.d.ts.map +1 -0
  122. package/dist/{storage → sessions}/types.d.ts +16 -6
  123. package/dist/sessions/types.d.ts.map +1 -0
  124. package/dist/{storage → sessions}/utils.d.ts +3 -3
  125. package/dist/sessions/utils.d.ts.map +1 -0
  126. package/dist/subagents/index.js +4 -4
  127. package/dist/types/compaction.d.ts +49 -0
  128. package/dist/types/compaction.d.ts.map +1 -1
  129. package/dist/types/events.d.ts +4 -2
  130. package/dist/types/events.d.ts.map +1 -1
  131. package/dist/types/index.d.ts +1 -1
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/package.json +5 -5
  134. package/dist/storage/file/helpers.d.ts +0 -16
  135. package/dist/storage/file/helpers.d.ts.map +0 -1
  136. package/dist/storage/file/index.d.ts +0 -6
  137. package/dist/storage/file/index.d.ts.map +0 -1
  138. package/dist/storage/file/storage.d.ts +0 -29
  139. package/dist/storage/file/storage.d.ts.map +0 -1
  140. package/dist/storage/file/types.d.ts +0 -6
  141. package/dist/storage/file/types.d.ts.map +0 -1
  142. package/dist/storage/index.d.ts.map +0 -1
  143. package/dist/storage/lock.d.ts.map +0 -1
  144. package/dist/storage/manager/default.d.ts.map +0 -1
  145. package/dist/storage/manager/index.d.ts.map +0 -1
  146. package/dist/storage/manager/session-manager.d.ts.map +0 -1
  147. package/dist/storage/manager/types.d.ts.map +0 -1
  148. package/dist/storage/memory.d.ts.map +0 -1
  149. package/dist/storage/paths.d.ts +0 -37
  150. package/dist/storage/paths.d.ts.map +0 -1
  151. package/dist/storage/types.d.ts.map +0 -1
  152. package/dist/storage/utils.d.ts.map +0 -1
  153. /package/dist/{storage → sessions}/manager/index.d.ts +0 -0
  154. /package/dist/{storage → sessions}/manager/types.d.ts +0 -0
  155. /package/dist/{storage → sessions/store}/lock.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  assembleModelContext
3
- } from "../chunk-IQA64CAO.js";
3
+ } from "../chunk-TYQWH6XH.js";
4
4
  import {
5
5
  ContextSummaryModelRequiredError,
6
6
  ContextWindowManager,
@@ -8,6 +8,7 @@ import {
8
8
  DEFAULT_CONTEXT_LIMITS,
9
9
  DEFAULT_SUMMARY_MAX_INPUT_TOKENS,
10
10
  DEFAULT_SUMMARY_MAX_OUTPUT_TOKENS,
11
+ DEFAULT_TOOL_CONTEXT_PRUNE_POLICY,
11
12
  canGenerateCompactionSummary,
12
13
  createCompactionEffectiveness,
13
14
  createCompactionSummaryContent,
@@ -15,6 +16,8 @@ import {
15
16
  extractCompactionSummaryText,
16
17
  generateSplitTurnSummary,
17
18
  generateSummary,
19
+ getAutoCompactTokenLimit,
20
+ getEffectiveContextWindow,
18
21
  getUsableTokenLimit,
19
22
  isContextOverflowing,
20
23
  planCompactionCut,
@@ -27,7 +30,7 @@ import {
27
30
  serializeMessagesForSummary,
28
31
  shouldFallbackOnSummaryFailure,
29
32
  shouldPruneContext
30
- } from "../chunk-NMJNN6LS.js";
33
+ } from "../chunk-DYZGHHDB.js";
31
34
  import {
32
35
  AGENT_CONTEXT_FRAGMENT_CLOSE,
33
36
  AGENT_CONTEXT_FRAGMENT_OPEN,
@@ -44,7 +47,7 @@ import {
44
47
  normalizeAgentContextFragment,
45
48
  parseRenderedAgentContextFragment,
46
49
  renderAgentContextFragment
47
- } from "../chunk-AAGKWUXR.js";
50
+ } from "../chunk-CGP6UNCQ.js";
48
51
  export {
49
52
  AGENT_CONTEXT_FRAGMENT_CLOSE,
50
53
  AGENT_CONTEXT_FRAGMENT_OPEN,
@@ -55,6 +58,7 @@ export {
55
58
  DEFAULT_CONTEXT_LIMITS,
56
59
  DEFAULT_SUMMARY_MAX_INPUT_TOKENS,
57
60
  DEFAULT_SUMMARY_MAX_OUTPUT_TOKENS,
61
+ DEFAULT_TOOL_CONTEXT_PRUNE_POLICY,
58
62
  applyAgentContextFragments,
59
63
  applyAgentContextFragmentsWithReport,
60
64
  assembleModelContext,
@@ -70,6 +74,8 @@ export {
70
74
  generateSplitTurnSummary,
71
75
  generateSummary,
72
76
  getAgentContextFragmentMetadata,
77
+ getAutoCompactTokenLimit,
78
+ getEffectiveContextWindow,
73
79
  getUsableTokenLimit,
74
80
  isAgentContextFragmentMessage,
75
81
  isContextOverflowing,
@@ -14,6 +14,22 @@ import type { CompactionEffectiveness } from "../../types/compaction.js";
14
14
  export interface ContextLimits {
15
15
  /** Maximum context window size in tokens */
16
16
  contextWindow: number;
17
+ /**
18
+ * Percentage of the context window considered usable for model input.
19
+ *
20
+ * This is a coarse safety margin for provider overhead, system prompts, tool
21
+ * schemas, and tokenizer-estimation error. It is combined with
22
+ * `reserveTokens`; the smaller limit wins.
23
+ */
24
+ effectiveContextWindowPercent?: number;
25
+ /**
26
+ * Token threshold that triggers automatic compaction.
27
+ *
28
+ * When unset, automatic compaction triggers at the usable token limit. When
29
+ * set, it is clamped to the usable limit so a configured threshold cannot
30
+ * exceed the model-safe input budget.
31
+ */
32
+ autoCompactTokenLimit?: number;
17
33
  /** Reserve tokens for output generation */
18
34
  reserveTokens: number;
19
35
  /** Protect this many recent tokens from pruning */
@@ -54,7 +70,18 @@ export declare const DEFAULT_COMPACTION_EFFECTIVE_MIN_SAVINGS_RATIO = 0.02;
54
70
  * This is the single formula for the safe input threshold used by overflow
55
71
  * detection, auto-compaction event emission, and step-processing limits.
56
72
  */
57
- export declare function getUsableTokenLimit(limits: Pick<ContextLimits, "contextWindow" | "reserveTokens">): number;
73
+ export declare function getUsableTokenLimit(limits: Pick<ContextLimits, "contextWindow" | "reserveTokens" | "effectiveContextWindowPercent">): number;
74
+ /**
75
+ * Compute the safety-adjusted context window before output-token reservation.
76
+ */
77
+ export declare function getEffectiveContextWindow(limits: Pick<ContextLimits, "contextWindow" | "effectiveContextWindowPercent">): number;
78
+ /**
79
+ * Resolve the threshold that starts automatic compaction.
80
+ *
81
+ * This is intentionally separate from the usable limit: callers can compact
82
+ * before the hard input budget is exhausted, but never after it.
83
+ */
84
+ export declare function getAutoCompactTokenLimit(limits: Pick<ContextLimits, "contextWindow" | "reserveTokens" | "effectiveContextWindowPercent" | "autoCompactTokenLimit">): number;
58
85
  /**
59
86
  * Check whether the context is overflowing.
60
87
  *
@@ -1 +1 @@
1
- {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../src/context/window/budget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMzE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAKpC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,8CAA8C,OAAO,CAAC;AAMnE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,eAAe,GAAG,eAAe,CAAC,GAC7D,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAAsC,GAC7C,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAAsC,GAC7C,OAAO,CAGT;AAWD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAuD,GACvE,uBAAuB,CAiBzB;AAMD,MAAM,WAAW,0BAA0B;IACzC,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAcD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAgBR"}
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../src/context/window/budget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAMzE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAMpC,CAAC;AAmBF;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,8CAA8C,OAAO,CAAC;AAMnE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CACV,aAAa,EACb,eAAe,GAAG,eAAe,GAAG,+BAA+B,CACpE,GACA,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,IAAI,CACV,aAAa,EACb,eAAe,GAAG,+BAA+B,CAClD,GACA,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,CACV,aAAa,EACX,eAAe,GACf,eAAe,GACf,+BAA+B,GAC/B,uBAAuB,CAC1B,GACA,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAAsC,GAC7C,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAAsC,GAC7C,OAAO,CAGT;AAWD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAuD,GACvE,uBAAuB,CAiBzB;AAMD,MAAM,WAAW,0BAA0B;IACzC,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAQD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,0BAA0B,GAClC,MAAM,CAgBR"}
@@ -5,11 +5,11 @@
5
5
  * and summary generation into one operation over a message array.
6
6
  */
7
7
  import type { Message } from "../../types/index.js";
8
- import type { CompactionCutReason } from "../../types/compaction.js";
8
+ import type { CompactionCutReason, CompactionEffectiveness, CompactionReason, CompactionTrigger, ToolContextPrunePolicy } from "../../types/compaction.js";
9
+ import { type ContextTokenEstimator } from "./estimation.js";
9
10
  import { type ContextLimits } from "./budget.js";
10
11
  import { type ContextCompactionDecision } from "./decision.js";
11
12
  import { type ToolContextPruneReport } from "./tool-pruning.js";
12
- import type { CompactionEffectiveness } from "../../types/compaction.js";
13
13
  import { type ContextSummaryPolicy, type ResolvedContextSummaryPolicy } from "./summary-policy.js";
14
14
  /**
15
15
  * Options for {@link pruneContext}.
@@ -19,11 +19,24 @@ export interface PruneContextOptions {
19
19
  limits?: ContextLimits;
20
20
  /** Summary behavior for conversation cuts. */
21
21
  summary?: ContextSummaryPolicy | ResolvedContextSummaryPolicy;
22
+ /** Cheap tool-context pruning controls. */
23
+ toolPruning?: {
24
+ /** Set false to skip old tool-output and tool-argument pruning. */
25
+ enabled?: boolean;
26
+ /** Policy for deciding how aggressively old tool context is compacted. */
27
+ policy?: ToolContextPrunePolicy;
28
+ };
22
29
  /**
23
30
  * Force a best-effort compaction pass after the provider reports context
24
31
  * overflow.
25
32
  */
26
33
  force?: boolean;
34
+ /** Lifecycle source that requested this compaction pass. */
35
+ trigger?: CompactionTrigger;
36
+ /** Operational reason for the pass. */
37
+ reason?: CompactionReason;
38
+ /** Optional model-aware token estimator for context-window planning. */
39
+ tokenEstimator?: ContextTokenEstimator;
27
40
  }
28
41
  /**
29
42
  * Result of a pruning operation.
@@ -43,6 +56,8 @@ export interface PruneResult {
43
56
  summarized: boolean;
44
57
  /** The summary content, if generated */
45
58
  summary?: string;
59
+ /** Existing handoff summary incorporated into the generated summary, if any */
60
+ previousSummary?: string;
46
61
  /** Summary policy resolved for this pruning operation */
47
62
  summaryPolicy: ResolvedContextSummaryPolicy;
48
63
  /** Messages removed by conversation cutting, when applicable */
@@ -1 +1 @@
1
- {"version":3,"file":"compactor.d.ts","sourceRoot":"","sources":["../../../src/context/window/compactor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,oBAAoB,GAAG,4BAA4B,CAAC;IAC9D;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sEAAsE;IACtE,QAAQ,EAAE,yBAAyB,CAAC;IACpC,kCAAkC;IAClC,aAAa,EAAE,uBAAuB,CAAC;IACvC,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,aAAa,EAAE,4BAA4B,CAAC;IAC5C,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,WAAW,CAAC,CA+KtB"}
1
+ {"version":3,"file":"compactor.d.ts","sourceRoot":"","sources":["../../../src/context/window/compactor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,aAAa,EAKnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,oBAAoB,GAAG,4BAA4B,CAAC;IAC9D,2CAA2C;IAC3C,WAAW,CAAC,EAAE;QACZ,mEAAmE;QACnE,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,0EAA0E;QAC1E,MAAM,CAAC,EAAE,sBAAsB,CAAC;KACjC,CAAC;IACF;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,uCAAuC;IACvC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,wEAAwE;IACxE,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sEAAsE;IACtE,QAAQ,EAAE,yBAAyB,CAAC;IACpC,kCAAkC;IAClC,aAAa,EAAE,uBAAuB,CAAC;IACvC,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,aAAa,EAAE,4BAA4B,CAAC;IAC5C,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,WAAW,CAAC,CAmMtB"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import type { Message } from "../../types/messages.js";
9
9
  import type { CompactionCutReason } from "../../types/compaction.js";
10
+ import { type ContextTokenEstimator } from "./estimation.js";
10
11
  /**
11
12
  * Rich planning result for conversation cutting.
12
13
  */
@@ -51,6 +52,8 @@ export interface PlanCompactionCutOptions {
51
52
  * planner should try split-turn prefix compaction.
52
53
  */
53
54
  maxKeptTokens?: number;
55
+ /** Optional model-aware token estimator for cut planning. */
56
+ tokenEstimator?: ContextTokenEstimator;
54
57
  }
55
58
  /**
56
59
  * Plan a safe conversation cut.
@@ -1 +1 @@
1
- {"version":3,"file":"cut-planner.d.ts","sourceRoot":"","sources":["../../../src/context/window/cut-planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAYrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,GAAG,mBAAmB,CAAC;IAC3C,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wEAAwE;IACxE,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,yEAAyE;IACzE,yBAAyB,EAAE,OAAO,EAAE,CAAC;IACrC,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAuPD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAoInB"}
1
+ {"version":3,"file":"cut-planner.d.ts","sourceRoot":"","sources":["../../../src/context/window/cut-planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAoB,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,iBAAiB,CAAC;AAOzB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,IAAI,EAAE,cAAc,GAAG,mBAAmB,CAAC;IAC3C,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wEAAwE;IACxE,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,yEAAyE;IACzE,yBAAyB,EAAE,OAAO,EAAE,CAAC;IACrC,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AA4PD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CA8JnB"}
@@ -6,7 +6,9 @@
6
6
  * reserved for the later summary-generation step after a safe cut is selected.
7
7
  */
8
8
  import type { Message } from "../../types/messages.js";
9
+ import type { CompactionReason, CompactionTrigger } from "../../types/compaction.js";
9
10
  import { type ContextLimits } from "./budget.js";
11
+ import { type ContextTokenEstimator } from "./estimation.js";
10
12
  export type ContextCompactionDecisionReason = "below-prune-minimum" | "under-limit" | "overflow" | "forced-recovery";
11
13
  export type ContextCompactionDecisionStrategy = "none" | "tool-context-first";
12
14
  export interface ContextCompactionDecision {
@@ -18,13 +20,17 @@ export interface ContextCompactionDecision {
18
20
  strategy: ContextCompactionDecisionStrategy;
19
21
  /** Whether the caller forced compaction after provider overflow. */
20
22
  forced: boolean;
23
+ /** Lifecycle source that requested this decision. */
24
+ trigger?: CompactionTrigger;
25
+ /** Operational reason for running compaction. */
26
+ compactionReason?: CompactionReason;
21
27
  /** Whether a summary model is available if history must be cut. */
22
28
  canSummarize: boolean;
23
29
  /** Estimated input tokens before compaction. */
24
30
  inputTokens: number;
25
- /** Usable input limit: context window minus reserved output tokens. */
31
+ /** Token threshold that starts compaction for this decision. */
26
32
  limit: number;
27
- /** Estimated tokens above the usable limit. */
33
+ /** Estimated tokens above the compaction threshold. */
28
34
  overflowTokens: number;
29
35
  /** Recent token suffix protected from compaction. */
30
36
  protectedTokens: number;
@@ -36,6 +42,9 @@ export interface DecideContextCompactionOptions {
36
42
  force?: boolean;
37
43
  canSummarize?: boolean;
38
44
  inputTokens?: number;
45
+ trigger?: CompactionTrigger;
46
+ reason?: CompactionReason;
47
+ tokenEstimator?: ContextTokenEstimator;
39
48
  }
40
49
  export declare function decideContextCompaction(messages: readonly Message[], options?: DecideContextCompactionOptions): ContextCompactionDecision;
41
50
  //# sourceMappingURL=decision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../src/context/window/decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,+BAA+B,GACvC,qBAAqB,GACrB,aAAa,GACb,UAAU,GACV,iBAAiB,CAAC;AAEtB,MAAM,MAAM,iCAAiC,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAE9E,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,MAAM,EAAE,+BAA+B,CAAC;IACxC,iEAAiE;IACjE,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,YAAY,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,GAAE,8BAAmC,GAC3C,yBAAyB,CAkE3B"}
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../src/context/window/decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,+BAA+B,GACvC,qBAAqB,GACrB,aAAa,GACb,UAAU,GACV,iBAAiB,CAAC;AAEtB,MAAM,MAAM,iCAAiC,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAE9E,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,MAAM,EAAE,+BAA+B,CAAC;IACxC,iEAAiE;IACjE,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,mEAAmE;IACnE,YAAY,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AA2CD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,GAAE,8BAAmC,GAC3C,yBAAyB,CAkF3B"}
@@ -10,15 +10,30 @@
10
10
  */
11
11
  import type { Message } from "../../types/messages.js";
12
12
  import type { ModelMessage } from "ai";
13
+ /**
14
+ * Optional estimator used by context-window planning.
15
+ *
16
+ * The contract is intentionally named "estimator" instead of "tokenizer":
17
+ * callers may provide an exact model tokenizer, but approximations are also
18
+ * valid. Invalid return values are ignored and the built-in heuristic is used.
19
+ */
20
+ export interface ContextTokenEstimator {
21
+ /** Estimate plain text. Used for message content, tool names, and arguments. */
22
+ estimateTextTokens?(text: string): number | undefined;
23
+ /** Estimate one model-visible message. Takes precedence over text estimates. */
24
+ estimateMessageTokens?(message: Message | ModelMessage): number | undefined;
25
+ /** Estimate the full message list. Takes precedence over message estimates. */
26
+ estimateConversationTokens?(messages: readonly (Message | ModelMessage)[]): number | undefined;
27
+ }
13
28
  /**
14
29
  * Estimate token count for a plain string.
15
30
  *
16
31
  * Uses the widely-accepted `chars / 4` heuristic.
17
32
  *
18
33
  * @param text - Text to estimate
19
- * @returns Estimated token count (always ≥ 1 for non-empty input)
34
+ * @returns Estimated token count
20
35
  */
21
- export declare function estimateTokens(text: string): number;
36
+ export declare function estimateTokens(text: string, estimator?: ContextTokenEstimator): number;
22
37
  /**
23
38
  * Estimate token count for a single message.
24
39
  *
@@ -29,7 +44,7 @@ export declare function estimateTokens(text: string): number;
29
44
  * @param message - A `Message` (internal) or `ModelMessage` (AI SDK)
30
45
  * @returns Estimated token count
31
46
  */
32
- export declare function estimateMessageTokens(message: Message | ModelMessage): number;
47
+ export declare function estimateMessageTokens(message: Message | ModelMessage, estimator?: ContextTokenEstimator): number;
33
48
  /**
34
49
  * Estimate total tokens for an entire conversation.
35
50
  *
@@ -41,5 +56,5 @@ export declare function estimateMessageTokens(message: Message | ModelMessage):
41
56
  * @param messages - Array of messages to estimate
42
57
  * @returns Estimated total token count
43
58
  */
44
- export declare function estimateConversationTokens(messages: readonly (Message | ModelMessage)[]): number;
59
+ export declare function estimateConversationTokens(messages: readonly (Message | ModelMessage)[], estimator?: ContextTokenEstimator): number;
45
60
  //# sourceMappingURL=estimation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"estimation.d.ts","sourceRoot":"","sources":["../../../src/context/window/estimation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAMvC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,CAwB7E;AA4CD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAC5C,MAAM,CAOR"}
1
+ {"version":3,"file":"estimation.d.ts","sourceRoot":"","sources":["../../../src/context/window/estimation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAMvC;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,kBAAkB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtD,gFAAgF;IAChF,qBAAqB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5E,+EAA+E;IAC/E,0BAA0B,CAAC,CACzB,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAC5C,MAAM,GAAG,SAAS,CAAC;CACvB;AAQD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,qBAAqB,GAChC,MAAM,CAKR;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,GAAG,YAAY,EAC/B,SAAS,CAAC,EAAE,qBAAqB,GAChC,MAAM,CA6BR;AAgDD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,EAC7C,SAAS,CAAC,EAAE,qBAAqB,GAChC,MAAM,CAYR"}
@@ -5,21 +5,23 @@
5
5
  * implementation split into focused files.
6
6
  */
7
7
  export { estimateTokens, estimateMessageTokens, estimateConversationTokens, } from "./estimation.js";
8
- export { DEFAULT_CONTEXT_LIMITS, DEFAULT_COMPACTION_EFFECTIVE_MIN_SAVINGS_RATIO, DEFAULT_SUMMARY_MAX_INPUT_TOKENS, DEFAULT_SUMMARY_MAX_OUTPUT_TOKENS, createCompactionEffectiveness, getUsableTokenLimit, isContextOverflowing, resolveSummaryOutputTokens, shouldPruneContext, } from "./budget.js";
8
+ export type { ContextTokenEstimator } from "./estimation.js";
9
+ export { DEFAULT_CONTEXT_LIMITS, DEFAULT_COMPACTION_EFFECTIVE_MIN_SAVINGS_RATIO, DEFAULT_SUMMARY_MAX_INPUT_TOKENS, DEFAULT_SUMMARY_MAX_OUTPUT_TOKENS, createCompactionEffectiveness, getAutoCompactTokenLimit, getEffectiveContextWindow, getUsableTokenLimit, isContextOverflowing, resolveSummaryOutputTokens, shouldPruneContext, } from "./budget.js";
9
10
  export type { ContextLimits, SummaryOutputBudgetOptions } from "./budget.js";
10
11
  export { planCompactionCut } from "./cut-planner.js";
11
12
  export type { CompactionCutPlan, PlanCompactionCutOptions, } from "./cut-planner.js";
12
13
  export { decideContextCompaction } from "./decision.js";
13
14
  export type { ContextCompactionDecision, ContextCompactionDecisionReason, ContextCompactionDecisionStrategy, DecideContextCompactionOptions, } from "./decision.js";
14
- export { pruneToolContext, pruneToolContextWithReport, } from "./tool-pruning.js";
15
+ export { DEFAULT_TOOL_CONTEXT_PRUNE_POLICY, pruneToolContext, pruneToolContextWithReport, } from "./tool-pruning.js";
15
16
  export type { ToolContextPruneReport, ToolContextPruneResult, } from "./tool-pruning.js";
17
+ export type { ToolContextPrunePolicy } from "../../types/compaction.js";
16
18
  export { createCompactionSummaryContent, extractCompactionSummaryText, generateSummary, generateSplitTurnSummary, redactSummaryText, serializeMessagesForSummary, } from "./summary.js";
17
19
  export type { SplitTurnSummarizationOptions, SummarizationOptions, } from "./summary.js";
18
20
  export type { SummarySerializationOptions } from "./summary.js";
19
21
  export { pruneContext } from "./compactor.js";
20
22
  export type { PruneContextOptions, PruneResult } from "./compactor.js";
21
23
  export { ContextWindowManager } from "./manager.js";
22
- export type { ContextWindowStats } from "./manager.js";
24
+ export type { ContextWindowStats, ContextWindowToolPruningOptions, } from "./manager.js";
23
25
  export { canGenerateCompactionSummary, ContextSummaryModelRequiredError, resolveContextSummaryPolicy, shouldFallbackOnSummaryFailure, } from "./summary-policy.js";
24
26
  export type { ContextSummaryPolicy, ResolvedContextSummaryPolicy, } from "./summary-policy.js";
25
27
  export type { ContextSummaryMode } from "../../types/compaction.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/window/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,8CAA8C,EAC9C,gCAAgC,EAChC,iCAAiC,EACjC,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EACV,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/window/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,sBAAsB,EACtB,8CAA8C,EAC9C,gCAAgC,EAChC,iCAAiC,EACjC,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EACV,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EACV,yBAAyB,EACzB,+BAA+B,EAC/B,iCAAiC,EACjC,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iCAAiC,EACjC,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -7,18 +7,33 @@
7
7
  */
8
8
  import type { LanguageModel, ModelMessage } from "ai";
9
9
  import type { Message } from "../../types/index.js";
10
+ import type { CompactionReason, CompactionTrigger, ToolContextPrunePolicy } from "../../types/compaction.js";
11
+ import { type ContextTokenEstimator } from "./estimation.js";
10
12
  import { type ContextLimits } from "./budget.js";
11
13
  import { type PruneResult } from "./compactor.js";
12
14
  import { type ContextCompactionDecision } from "./decision.js";
13
15
  import { type ContextSummaryPolicy, type ResolvedContextSummaryPolicy } from "./summary-policy.js";
14
16
  export interface ContextWindowStats {
15
17
  tokens: number;
18
+ /** Threshold that starts automatic compaction. Kept as `limit` for compatibility. */
16
19
  limit: number;
20
+ /** Safety-adjusted context window before reserving output tokens. */
21
+ effectiveContextWindow: number;
22
+ /** Hard model-input budget after output-token reservation. */
23
+ usableLimit: number;
24
+ /** Threshold used by automatic pruning decisions. */
25
+ autoCompactLimit: number;
17
26
  available: number;
18
27
  utilizationPercent: number;
19
28
  isOverflowing: boolean;
20
29
  shouldPrune: boolean;
21
30
  }
31
+ export interface ContextWindowToolPruningOptions {
32
+ /** Set false to skip deterministic old tool-output and tool-argument pruning. */
33
+ enabled?: boolean;
34
+ /** Policy for deciding how aggressively old tool context is compacted. */
35
+ policy?: ToolContextPrunePolicy;
36
+ }
22
37
  /**
23
38
  * Per-session context-window manager.
24
39
  *
@@ -39,11 +54,16 @@ export declare class ContextWindowManager {
39
54
  private limits;
40
55
  private activeModel?;
41
56
  private summaryPolicy?;
57
+ private toolPruning?;
58
+ private tokenEstimator?;
42
59
  constructor(options?: {
43
60
  limits?: Partial<ContextLimits>;
44
61
  /** Active agent model. Used for summaries unless `summary.model` overrides it. */
45
62
  model?: LanguageModel;
46
63
  summary?: ContextSummaryPolicy;
64
+ toolPruning?: ContextWindowToolPruningOptions;
65
+ /** Optional model-aware token estimator for context planning. */
66
+ tokenEstimator?: ContextTokenEstimator;
47
67
  });
48
68
  /** Get a copy of the current context limits. */
49
69
  getLimits(): ContextLimits;
@@ -53,6 +73,14 @@ export declare class ContextWindowManager {
53
73
  setModel(model: LanguageModel): void;
54
74
  /** Set the summary policy used when conversation history must be cut. */
55
75
  setSummaryPolicy(policy: ContextSummaryPolicy): void;
76
+ /** Set deterministic tool-context pruning behavior. */
77
+ setToolPruning(options: ContextWindowToolPruningOptions): void;
78
+ /** Get deterministic tool-context pruning behavior. */
79
+ getToolPruning(): ContextWindowToolPruningOptions | undefined;
80
+ /** Set the token estimator used for context-window planning. */
81
+ setTokenEstimator(estimator: ContextTokenEstimator | undefined): void;
82
+ /** Get the token estimator used for context-window planning. */
83
+ getTokenEstimator(): ContextTokenEstimator | undefined;
56
84
  /** Resolve summary policy against the active agent model. */
57
85
  getSummaryPolicy(): ResolvedContextSummaryPolicy;
58
86
  /** Estimate total tokens for a message array. */
@@ -65,10 +93,15 @@ export declare class ContextWindowManager {
65
93
  decide(messages: readonly Message[], options?: {
66
94
  force?: boolean;
67
95
  inputTokens?: number;
96
+ trigger?: CompactionTrigger;
97
+ reason?: CompactionReason;
68
98
  }): ContextCompactionDecision;
69
99
  /** Prune context to fit within limits. */
70
100
  prune(messages: Message[], options?: {
71
101
  force?: boolean;
102
+ trigger?: CompactionTrigger;
103
+ reason?: CompactionReason;
104
+ toolPruning?: ContextWindowToolPruningOptions;
72
105
  }): Promise<PruneResult>;
73
106
  /**
74
107
  * Get a snapshot of token statistics.
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/context/window/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,aAAa,CAAC,CAAuB;gBAEjC,OAAO,CAAC,EAAE;QACpB,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAChC,kFAAkF;QAClF,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;KAChC;IAMD,gDAAgD;IAChD,SAAS,IAAI,aAAa;IAI1B,0DAA0D;IAC1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAI/C,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIpC,yEAAyE;IACzE,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAIpD,6DAA6D;IAC7D,gBAAgB,IAAI,4BAA4B;IAIhD,iDAAiD;IACjD,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,MAAM;IAIrE,gDAAgD;IAChD,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO;IAKrE,iDAAiD;IACjD,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO;IAKnE,qDAAqD;IACrD,MAAM,CACJ,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,yBAAyB;IAU5B,0CAA0C;IACpC,KAAK,CACT,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,WAAW,CAAC;IAQvB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,kBAAkB;CAa5E"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/context/window/manager.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,15 @@ export interface SummarySerializationOptions {
32
32
  maxInputTokens?: number;
33
33
  /** Max estimated tokens per message before middle truncation */
34
34
  maxMessageTokens?: number;
35
+ /**
36
+ * Fraction of the serialized budget reserved for the newest removed
37
+ * messages when the transcript is too large to include in full.
38
+ *
39
+ * Compaction summaries need both the original goal and the latest removed
40
+ * work nearest the kept suffix. A tail-biased default avoids spending the
41
+ * whole summary prompt on stale early context.
42
+ */
43
+ recentMessageRatio?: number;
35
44
  }
36
45
  export declare function createCompactionSummaryContent(summary: string): string;
37
46
  export declare function extractCompactionSummaryText(message: Message): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/context/window/summary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AASvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA8B,SAAQ,oBAAoB;IACzE,iEAAiE;IACjE,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,wEAAwE;IACxE,yBAAyB,EAAE,OAAO,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAmCD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAIpB;AAsBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AA2CD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,2BAAgC,GACxC,MAAM,CAiCR;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/context/window/summary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AASvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA8B,SAAQ,oBAAoB;IACzE,iEAAiE;IACjE,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,wEAAwE;IACxE,yBAAyB,EAAE,OAAO,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqCD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,GACf,MAAM,GAAG,SAAS,CAIpB;AAsBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtD;AAgLD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,2BAAgC,GACxC,MAAM,CA2BR;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
@@ -7,6 +7,9 @@
7
7
  * tool-call/result shape.
8
8
  */
9
9
  import type { Message } from "../../types/index.js";
10
+ import { type ToolContextPrunePolicy } from "../../types/compaction.js";
11
+ import { type ContextTokenEstimator } from "./estimation.js";
12
+ export declare const DEFAULT_TOOL_CONTEXT_PRUNE_POLICY: Required<ToolContextPrunePolicy>;
10
13
  export interface ToolContextPruneReport {
11
14
  /** Number of tool result messages compacted. */
12
15
  outputCompactedCount: number;
@@ -40,6 +43,10 @@ export interface ToolContextPruneResult {
40
43
  export declare function pruneToolContextWithReport(messages: Message[], protectedTokens?: number, options?: {
41
44
  /** Additional tools to protect from pruning */
42
45
  protectedTools?: string[];
46
+ /** Policy for deciding how aggressively old tool context is compacted. */
47
+ policy?: ToolContextPrunePolicy;
48
+ /** Optional model-aware token estimator for tool context pruning. */
49
+ tokenEstimator?: ContextTokenEstimator;
43
50
  }): ToolContextPruneResult;
44
51
  /**
45
52
  * Prune old, large tool context from the conversation.
@@ -58,5 +65,9 @@ export declare function pruneToolContextWithReport(messages: Message[], protecte
58
65
  export declare function pruneToolContext(messages: Message[], protectedTokens?: number, options?: {
59
66
  /** Additional tools to protect from pruning */
60
67
  protectedTools?: string[];
68
+ /** Policy for deciding how aggressively old tool context is compacted. */
69
+ policy?: ToolContextPrunePolicy;
70
+ /** Optional model-aware token estimator for tool context pruning. */
71
+ tokenEstimator?: ContextTokenEstimator;
61
72
  }): Message[];
62
73
  //# sourceMappingURL=tool-pruning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-pruning.d.ts","sourceRoot":"","sources":["../../../src/context/window/tool-pruning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,OAAO,EAER,MAAM,sBAAsB,CAAC;AAkB9B,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AA0ND;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,CAAC,EAAE;IACR,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GACA,sBAAsB,CA+FxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,CAAC,EAAE;IACR,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,GACA,OAAO,EAAE,CAGX"}
1
+ {"version":3,"file":"tool-pruning.d.ts","sourceRoot":"","sources":["../../../src/context/window/tool-pruning.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,OAAO,EAER,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,iBAAiB,CAAC;AAIzB,eAAO,MAAM,iCAAiC,EAAE,QAAQ,CAAC,sBAAsB,CAY5E,CAAC;AAEJ,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAuSD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,CAAC,EAAE;IACR,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,qEAAqE;IACrE,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,GACA,sBAAsB,CAwGxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,OAAO,EAAE,EACnB,eAAe,GAAE,MAA+C,EAChE,OAAO,CAAC,EAAE;IACR,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,qEAAqE;IACrE,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,GACA,OAAO,EAAE,CAGX"}
@@ -15,11 +15,11 @@ import {
15
15
  DISPATCH_STATES,
16
16
  createDispatchTools,
17
17
  createLocalDispatchRuntime
18
- } from "../chunk-EBVSPHXA.js";
19
- import "../chunk-VMGZKIFT.js";
18
+ } from "../chunk-556CPZ3J.js";
19
+ import "../chunk-EDKZOPUV.js";
20
20
  import "../chunk-SZ2XBPTW.js";
21
21
  import "../chunk-MJML3A2F.js";
22
- import "../chunk-AAGKWUXR.js";
22
+ import "../chunk-CGP6UNCQ.js";
23
23
  export {
24
24
  DEFAULT_DISPATCH_TOOL_IDS,
25
25
  DEFAULT_LOCAL_DISPATCH_CONCURRENCY,
@@ -14,7 +14,7 @@ import {
14
14
  processStepStream,
15
15
  runModelStep,
16
16
  runToolBatch
17
- } from "../chunk-LX4AHGI3.js";
17
+ } from "../chunk-346FIYKT.js";
18
18
  import {
19
19
  applyAgentWorkflowCommitResult,
20
20
  applyAgentWorkflowContextCompactionResult,
@@ -42,8 +42,8 @@ import {
42
42
  getCurrentAgentTurnStepRecord,
43
43
  mergeAgentTurnStateProgress
44
44
  } from "../chunk-E66PKKDL.js";
45
- import "../chunk-NMJNN6LS.js";
46
- import "../chunk-AAGKWUXR.js";
45
+ import "../chunk-DYZGHHDB.js";
46
+ import "../chunk-CGP6UNCQ.js";
47
47
  import {
48
48
  convertAgentMessagesToModelMessages
49
49
  } from "../chunk-K453AFTL.js";
@@ -10,7 +10,7 @@ import {
10
10
  processStepStream,
11
11
  runModelStep,
12
12
  runToolBatch
13
- } from "../../chunk-LX4AHGI3.js";
13
+ } from "../../chunk-346FIYKT.js";
14
14
  import {
15
15
  AgentTurnStateConflictError,
16
16
  advanceAgentTurnState,
@@ -19,8 +19,8 @@ import {
19
19
  getCurrentAgentTurnStepRecord,
20
20
  mergeAgentTurnStateProgress
21
21
  } from "../../chunk-E66PKKDL.js";
22
- import "../../chunk-NMJNN6LS.js";
23
- import "../../chunk-AAGKWUXR.js";
22
+ import "../../chunk-DYZGHHDB.js";
23
+ import "../../chunk-CGP6UNCQ.js";
24
24
  import "../../chunk-K453AFTL.js";
25
25
  import "../../chunk-STDJYXYK.js";
26
26
  import "../../chunk-JUIL2NJC.js";
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@
18
18
  * @cuylabs/agent-core/reasoning — level config, provider builders
19
19
  * @cuylabs/agent-core/tool/host — tool execution host interfaces and local host
20
20
  * @cuylabs/agent-core/sandbox — managed environment sessions above ToolHost
21
- * @cuylabs/agent-core/storage sessions, file/memory backends
21
+ * @cuylabs/agent-core/sessions session history, managers, stores
22
22
  * @cuylabs/agent-core/skill — discovery, loading, registry
23
23
  * @cuylabs/agent-core/events — typed signals and channel event bus
24
24
  * @cuylabs/agent-core/execution/scope — ambient execution context
@@ -47,7 +47,7 @@ export * from "./tool/host/index.js";
47
47
  export * from "./sandbox/index.js";
48
48
  export * from "./execution/scope/index.js";
49
49
  export * from "./inference/index.js";
50
- export * from "./storage/index.js";
50
+ export * from "./sessions/index.js";
51
51
  export * from "./tracking/index.js";
52
52
  export * from "./context/index.js";
53
53
  export * from "./memory/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAIH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,yBAAyB,CAAC;AAKxC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC;AAKtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAKpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AAKrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAKlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AAKrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAKlC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAIH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,yBAAyB,CAAC;AAKxC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,uBAAuB,CAAC;AAKtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAKpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,4BAA4B,CAAC;AAG3C,cAAc,sBAAsB,CAAC;AAKrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAKlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,sBAAsB,CAAC;AAKrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAKlC,cAAc,kBAAkB,CAAC"}