@cuylabs/agent-core 4.10.0 → 5.0.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 (156) 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 +5 -0
  12. package/dist/agent/event-printer.d.ts.map +1 -1
  13. package/dist/agent/fork.d.ts +1 -1
  14. package/dist/agent/fork.d.ts.map +1 -1
  15. package/dist/agent/index.d.ts +1 -1
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/instance/context-management.d.ts +14 -1
  18. package/dist/agent/instance/context-management.d.ts.map +1 -1
  19. package/dist/agent/instance/forking.d.ts +1 -1
  20. package/dist/agent/instance/forking.d.ts.map +1 -1
  21. package/dist/agent/instance/index.d.ts +17 -5
  22. package/dist/agent/instance/index.d.ts.map +1 -1
  23. package/dist/agent/instance/sessions.d.ts +1 -1
  24. package/dist/agent/instance/sessions.d.ts.map +1 -1
  25. package/dist/agent/instance/turn-lifecycle.d.ts +1 -1
  26. package/dist/agent/instance/turn-lifecycle.d.ts.map +1 -1
  27. package/dist/agent/session.d.ts +1 -1
  28. package/dist/agent/session.d.ts.map +1 -1
  29. package/dist/agent/setup/config.d.ts +1 -1
  30. package/dist/agent/setup/config.d.ts.map +1 -1
  31. package/dist/agent/setup/context-window.d.ts.map +1 -1
  32. package/dist/agent/setup.d.ts +1 -1
  33. package/dist/agent/setup.d.ts.map +1 -1
  34. package/dist/agent/turn-context/compaction/agent-context.d.ts +26 -3
  35. package/dist/agent/turn-context/compaction/agent-context.d.ts.map +1 -1
  36. package/dist/agent/turn-context/compaction/budget.d.ts +2 -2
  37. package/dist/agent/turn-context/compaction/budget.d.ts.map +1 -1
  38. package/dist/agent/turn-context/compaction/check.d.ts +9 -3
  39. package/dist/agent/turn-context/compaction/check.d.ts.map +1 -1
  40. package/dist/agent/turn-context/compaction/index.d.ts +1 -1
  41. package/dist/agent/turn-context/compaction/index.d.ts.map +1 -1
  42. package/dist/agent/turn-context/compaction/memory.d.ts +5 -4
  43. package/dist/agent/turn-context/compaction/memory.d.ts.map +1 -1
  44. package/dist/agent/turn-context/compaction/results.d.ts +7 -1
  45. package/dist/agent/turn-context/compaction/results.d.ts.map +1 -1
  46. package/dist/agent/turn-context/compaction/types.d.ts +7 -1
  47. package/dist/agent/turn-context/compaction/types.d.ts.map +1 -1
  48. package/dist/agent/turn-context/fit-model-context.d.ts +1 -1
  49. package/dist/agent/turn-context/fit-model-context.d.ts.map +1 -1
  50. package/dist/agent/turn-context/index.d.ts +1 -1
  51. package/dist/agent/turn-context/index.d.ts.map +1 -1
  52. package/dist/agent/types/config.d.ts +7 -0
  53. package/dist/agent/types/config.d.ts.map +1 -1
  54. package/dist/{chunk-LX4AHGI3.js → chunk-346FIYKT.js} +1 -1
  55. package/dist/{chunk-EBVSPHXA.js → chunk-556CPZ3J.js} +1 -1
  56. package/dist/{chunk-V4YQ6MBK.js → chunk-BKHWKKSG.js} +1 -1
  57. package/dist/{chunk-AAGKWUXR.js → chunk-CGP6UNCQ.js} +33 -18
  58. package/dist/{chunk-EEAGM5MS.js → chunk-DD7S7ZG4.js} +32 -15
  59. package/dist/{chunk-NMJNN6LS.js → chunk-DYZGHHDB.js} +424 -121
  60. package/dist/{chunk-VMGZKIFT.js → chunk-EDKZOPUV.js} +34 -298
  61. package/dist/{chunk-TU5KDFWI.js → chunk-GHVW7L4P.js} +41 -0
  62. package/dist/{chunk-IQA64CAO.js → chunk-TYQWH6XH.js} +6 -2
  63. package/dist/context/assembly/prepare.d.ts.map +1 -1
  64. package/dist/context/assembly/types.d.ts +6 -2
  65. package/dist/context/assembly/types.d.ts.map +1 -1
  66. package/dist/context/config.d.ts +10 -1
  67. package/dist/context/config.d.ts.map +1 -1
  68. package/dist/context/fragments/messages.d.ts +2 -0
  69. package/dist/context/fragments/messages.d.ts.map +1 -1
  70. package/dist/context/index.js +9 -3
  71. package/dist/context/window/budget.d.ts +28 -1
  72. package/dist/context/window/budget.d.ts.map +1 -1
  73. package/dist/context/window/compactor.d.ts +17 -2
  74. package/dist/context/window/compactor.d.ts.map +1 -1
  75. package/dist/context/window/cut-planner.d.ts +3 -0
  76. package/dist/context/window/cut-planner.d.ts.map +1 -1
  77. package/dist/context/window/decision.d.ts +11 -2
  78. package/dist/context/window/decision.d.ts.map +1 -1
  79. package/dist/context/window/estimation.d.ts +19 -4
  80. package/dist/context/window/estimation.d.ts.map +1 -1
  81. package/dist/context/window/index.d.ts +5 -3
  82. package/dist/context/window/index.d.ts.map +1 -1
  83. package/dist/context/window/manager.d.ts +33 -0
  84. package/dist/context/window/manager.d.ts.map +1 -1
  85. package/dist/context/window/summary.d.ts +9 -0
  86. package/dist/context/window/summary.d.ts.map +1 -1
  87. package/dist/context/window/tool-pruning.d.ts +11 -0
  88. package/dist/context/window/tool-pruning.d.ts.map +1 -1
  89. package/dist/dispatch/index.js +3 -3
  90. package/dist/execution/index.js +3 -3
  91. package/dist/execution/turn/index.js +3 -3
  92. package/dist/index.d.ts +2 -2
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +340 -133
  95. package/dist/memory/config.d.ts +2 -2
  96. package/dist/memory/config.d.ts.map +1 -1
  97. package/dist/memory/index.d.ts +2 -2
  98. package/dist/memory/index.d.ts.map +1 -1
  99. package/dist/memory/index.js +5 -5
  100. package/dist/memory/middleware.d.ts +2 -2
  101. package/dist/memory/middleware.d.ts.map +1 -1
  102. package/dist/memory/types.d.ts +34 -15
  103. package/dist/memory/types.d.ts.map +1 -1
  104. package/dist/middleware/index.d.ts +2 -1
  105. package/dist/middleware/index.d.ts.map +1 -1
  106. package/dist/middleware/index.js +1 -1
  107. package/dist/middleware/runner.d.ts +16 -1
  108. package/dist/middleware/runner.d.ts.map +1 -1
  109. package/dist/middleware/types.d.ts +57 -2
  110. package/dist/middleware/types.d.ts.map +1 -1
  111. package/dist/{storage → sessions}/index.d.ts +7 -8
  112. package/dist/sessions/index.d.ts.map +1 -0
  113. package/dist/{storage → sessions}/index.js +6 -18
  114. package/dist/{storage → sessions}/manager/default.d.ts +3 -3
  115. package/dist/sessions/manager/default.d.ts.map +1 -0
  116. package/dist/sessions/manager/index.d.ts.map +1 -0
  117. package/dist/{storage → sessions}/manager/session-manager.d.ts +14 -4
  118. package/dist/sessions/manager/session-manager.d.ts.map +1 -0
  119. package/dist/sessions/manager/types.d.ts.map +1 -0
  120. package/dist/sessions/store/lock.d.ts.map +1 -0
  121. package/dist/{storage → sessions/store}/memory.d.ts +5 -5
  122. package/dist/sessions/store/memory.d.ts.map +1 -0
  123. package/dist/{storage → sessions}/types.d.ts +16 -6
  124. package/dist/sessions/types.d.ts.map +1 -0
  125. package/dist/{storage → sessions}/utils.d.ts +3 -3
  126. package/dist/sessions/utils.d.ts.map +1 -0
  127. package/dist/subagents/index.js +4 -4
  128. package/dist/types/compaction.d.ts +49 -0
  129. package/dist/types/compaction.d.ts.map +1 -1
  130. package/dist/types/events.d.ts +4 -2
  131. package/dist/types/events.d.ts.map +1 -1
  132. package/dist/types/index.d.ts +1 -1
  133. package/dist/types/index.d.ts.map +1 -1
  134. package/package.json +5 -5
  135. package/dist/storage/file/helpers.d.ts +0 -16
  136. package/dist/storage/file/helpers.d.ts.map +0 -1
  137. package/dist/storage/file/index.d.ts +0 -6
  138. package/dist/storage/file/index.d.ts.map +0 -1
  139. package/dist/storage/file/storage.d.ts +0 -29
  140. package/dist/storage/file/storage.d.ts.map +0 -1
  141. package/dist/storage/file/types.d.ts +0 -6
  142. package/dist/storage/file/types.d.ts.map +0 -1
  143. package/dist/storage/index.d.ts.map +0 -1
  144. package/dist/storage/lock.d.ts.map +0 -1
  145. package/dist/storage/manager/default.d.ts.map +0 -1
  146. package/dist/storage/manager/index.d.ts.map +0 -1
  147. package/dist/storage/manager/session-manager.d.ts.map +0 -1
  148. package/dist/storage/manager/types.d.ts.map +0 -1
  149. package/dist/storage/memory.d.ts.map +0 -1
  150. package/dist/storage/paths.d.ts +0 -37
  151. package/dist/storage/paths.d.ts.map +0 -1
  152. package/dist/storage/types.d.ts.map +0 -1
  153. package/dist/storage/utils.d.ts.map +0 -1
  154. /package/dist/{storage → sessions}/manager/index.d.ts +0 -0
  155. /package/dist/{storage → sessions}/manager/types.d.ts +0 -0
  156. /package/dist/{storage → sessions/store}/lock.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC"}
@@ -2,16 +2,17 @@ import type { Logger } from "../../../logger/types.js";
2
2
  import type { AgentMemoryProvider } from "../../../memory/index.js";
3
3
  import type { AgentContextCompactionPhase } from "../../../types/events.js";
4
4
  import type { Message } from "../../../types/messages.js";
5
- export declare function prepareMemoryForCompaction(options: {
5
+ export declare function captureMemoryBeforeCompactionCommit(options: {
6
6
  provider?: AgentMemoryProvider;
7
7
  sessionId?: string;
8
8
  turnId?: string;
9
9
  cwd?: string;
10
10
  abort?: AbortSignal;
11
11
  phase?: AgentContextCompactionPhase;
12
- removedMessages: Message[];
13
- keptMessages: Message[];
14
- summary?: string;
12
+ removedMessages: readonly Message[];
13
+ recentKeptMessages: readonly Message[];
14
+ previousSummary?: string;
15
+ nextSummary?: string;
15
16
  logger: Logger;
16
17
  }): Promise<void>;
17
18
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IACxD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,eAAe,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,kBAAkB,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhB"}
@@ -1,10 +1,13 @@
1
+ import { type ContextTokenEstimator } from "../../../context/window/index.js";
1
2
  import type { ContextCompactionDecision } from "../../../context/window/decision.js";
2
- import type { CompactionCutReason } from "../../../types/compaction.js";
3
+ import type { CompactionCutReason, CompactionReason, CompactionTrigger } from "../../../types/compaction.js";
3
4
  import type { Message } from "../../../types/messages.js";
4
5
  import type { AgentMessageCompactionResult } from "./types.js";
5
6
  export declare function createUnchangedCompactionResult(options: {
6
7
  messages: Message[];
7
8
  decision: ContextCompactionDecision;
9
+ trigger?: CompactionTrigger;
10
+ reason?: CompactionReason;
8
11
  tokensBefore: number;
9
12
  limit: number;
10
13
  cutIndex?: number;
@@ -13,7 +16,10 @@ export declare function createUnchangedCompactionResult(options: {
13
16
  export declare function createToolContextCompactionResult(options: {
14
17
  messages: Message[];
15
18
  decision: ContextCompactionDecision;
19
+ trigger?: CompactionTrigger;
20
+ reason?: CompactionReason;
16
21
  tokensBefore: number;
17
22
  limit: number;
23
+ tokenEstimator?: ContextTokenEstimator;
18
24
  }): AgentMessageCompactionResult;
19
25
  //# sourceMappingURL=results.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/results.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,GAAG,4BAA4B,CAsB/B;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE;IACzD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,4BAA4B,CAsB/B"}
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/results.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC,GAAG,4BAA4B,CAwB/B;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE;IACzD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,yBAAyB,CAAC;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,GAAG,4BAA4B,CA2B/B"}
@@ -1,13 +1,17 @@
1
1
  import type { ContextCompactionDecision } from "../../../context/window/decision.js";
2
- import type { CompactionCutReason, CompactionEffectiveness } from "../../../types/compaction.js";
2
+ import type { CompactionCutReason, CompactionEffectiveness, CompactionReason, CompactionTrigger } from "../../../types/compaction.js";
3
3
  import type { Message } from "../../../types/messages.js";
4
4
  export interface AgentContextCompactionResult {
5
+ trigger?: CompactionTrigger;
6
+ reason?: CompactionReason;
5
7
  decision: ContextCompactionDecision;
6
8
  effectiveness: CompactionEffectiveness;
7
9
  removedCount: number;
8
10
  tokensRemoved: number;
9
11
  summarized: boolean;
10
12
  summary?: string;
13
+ previousSummary?: string;
14
+ nextSummary?: string;
11
15
  cutIndex?: number;
12
16
  cutReason?: CompactionCutReason;
13
17
  }
@@ -15,6 +19,8 @@ export interface AgentMessageCompactionResult extends AgentContextCompactionResu
15
19
  compacted: boolean;
16
20
  messages: Message[];
17
21
  persistedMessages: Message[];
22
+ removedMessages?: readonly Message[];
23
+ keptMessages?: readonly Message[];
18
24
  displaySummary: boolean;
19
25
  storageSummary: string;
20
26
  tokensBefore: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,yBAAyB,CAAC;IACpC,aAAa,EAAE,uBAAuB,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,4BAA6B,SAAQ,4BAA4B;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/agent/turn-context/compaction/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,aAAa,EAAE,uBAAuB,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,4BAA6B,SAAQ,4BAA4B;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -4,7 +4,7 @@ import type { ContextWindowManager } from "../../context/window/index.js";
4
4
  import type { Logger } from "../../logger/types.js";
5
5
  import type { AgentMemoryProvider } from "../../memory/index.js";
6
6
  import type { MiddlewareRunner } from "../../middleware/runner.js";
7
- import type { SessionManager } from "../../storage/index.js";
7
+ import type { SessionManager } from "../../sessions/index.js";
8
8
  import type { AgentEvent } from "../../types/events.js";
9
9
  export declare function assembleChatModelContextToFit(params: {
10
10
  sessionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fit-model-context.d.ts","sourceRoot":"","sources":["../../../src/agent/turn-context/fit-model-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBxD,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC,CA0DD"}
1
+ {"version":3,"file":"fit-model-context.d.ts","sourceRoot":"","sources":["../../../src/agent/turn-context/fit-model-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBxD,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,CAAC,CA2DD"}
@@ -1,4 +1,4 @@
1
- export { compactAgentContext, compactAgentMessages, } from "./compaction/index.js";
1
+ export { commitAgentContextCompaction, compactAgentContext, compactAgentMessages, } from "./compaction/index.js";
2
2
  export type { AgentContextCompactionResult, AgentMessageCompactionResult, } from "./compaction/index.js";
3
3
  export { assembleChatModelContextToFit } from "./fit-model-context.js";
4
4
  export { buildAgentSystemPrompts } from "./system-prompts.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/turn-context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/turn-context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -17,6 +17,7 @@ import type { AgentContextConfig } from "../../context/config.js";
17
17
  import type { DoomLoopHandler } from "../../types/doom-loop.js";
18
18
  import type { AgentTurnToolProvider } from "../../tool/turn-tools.js";
19
19
  import type { AgentMemoryInput } from "../../memory/index.js";
20
+ import type { SessionStore } from "../../sessions/index.js";
20
21
  import type { TracingConfig } from "./tracing.js";
21
22
  import type { AgentDefaultsProvider } from "../defaults.js";
22
23
  /**
@@ -96,6 +97,12 @@ export interface AgentConfig {
96
97
  * tool design; agent-core owns lifecycle hooks and model-visible contextFragments.
97
98
  */
98
99
  memory?: AgentMemoryInput;
100
+ /**
101
+ * Pluggable session history store. When omitted, sessions use the default
102
+ * in-memory store. Pass `sessionManager` to provide a fully configured
103
+ * manager instead.
104
+ */
105
+ sessionStore?: SessionStore;
99
106
  /**
100
107
  * Middleware for the agent lifecycle.
101
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE,aAAa,CAAC;IACrB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,oBAAoB,GAAG,gBAAgB,CAAC;IACrD,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;OAEG;IACH,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC5C;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC7C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/types/config.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  DEFAULT_CONTEXT_LIMITS,
7
7
  getUsableTokenLimit
8
- } from "./chunk-NMJNN6LS.js";
8
+ } from "./chunk-DYZGHHDB.js";
9
9
  import {
10
10
  Inference,
11
11
  buildModelCallContext
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildEntryPath,
3
3
  deserializeMessage
4
- } from "./chunk-VMGZKIFT.js";
4
+ } from "./chunk-EDKZOPUV.js";
5
5
  import {
6
6
  Tool
7
7
  } from "./chunk-MJML3A2F.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TPZ37IWI.js";
4
4
  import {
5
5
  createLocalDispatchRuntime
6
- } from "./chunk-EBVSPHXA.js";
6
+ } from "./chunk-556CPZ3J.js";
7
7
  import {
8
8
  Tool
9
9
  } from "./chunk-MJML3A2F.js";
@@ -249,8 +249,13 @@ function parseRenderedAgentContextFragment(content) {
249
249
  }
250
250
 
251
251
  // src/context/window/estimation.ts
252
- function estimateTokens(text) {
253
- return Math.ceil(text.length / 4);
252
+ function normalizeTokenEstimate(value) {
253
+ if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
254
+ const normalized = Math.ceil(value);
255
+ return normalized >= 0 ? normalized : void 0;
256
+ }
257
+ function estimateTokens(text, estimator) {
258
+ return normalizeTokenEstimate(estimator?.estimateTextTokens?.(text)) ?? Math.ceil(text.length / 4);
254
259
  }
255
260
  function stringifyStructuredValue(value) {
256
261
  if (typeof value === "string") return value;
@@ -261,26 +266,30 @@ function stringifyStructuredValue(value) {
261
266
  return String(value);
262
267
  }
263
268
  }
264
- function estimateInternalToolCalls(message) {
269
+ function estimateInternalToolCalls(message, estimator) {
265
270
  if (message.role !== "assistant" || !("toolCalls" in message) || !Array.isArray(message.toolCalls)) {
266
271
  return 0;
267
272
  }
268
273
  return message.toolCalls.reduce((total, toolCall) => {
269
- return total + estimateTokens(toolCall.toolName) + estimateTokens(toolCall.toolCallId) + estimateTokens(stringifyStructuredValue(toolCall.args));
274
+ return total + estimateTokens(toolCall.toolName, estimator) + estimateTokens(toolCall.toolCallId, estimator) + estimateTokens(stringifyStructuredValue(toolCall.args), estimator);
270
275
  }, 0);
271
276
  }
272
- function estimateMessageTokens(message) {
273
- const toolCallTokens = estimateInternalToolCalls(message);
277
+ function estimateMessageTokens(message, estimator) {
278
+ const customEstimate = normalizeTokenEstimate(
279
+ estimator?.estimateMessageTokens?.(message)
280
+ );
281
+ if (customEstimate !== void 0) return customEstimate;
282
+ const toolCallTokens = estimateInternalToolCalls(message, estimator);
274
283
  if (typeof message.content === "string") {
275
- return estimateTokens(message.content) + toolCallTokens;
284
+ return estimateTokens(message.content, estimator) + toolCallTokens;
276
285
  }
277
286
  if (Array.isArray(message.content)) {
278
287
  let total = 0;
279
288
  for (const part of message.content) {
280
289
  if (typeof part === "string") {
281
- total += estimateTokens(part);
290
+ total += estimateTokens(part, estimator);
282
291
  } else if ("text" in part && typeof part.text === "string") {
283
- total += estimateTokens(part.text);
292
+ total += estimateTokens(part.text, estimator);
284
293
  } else if ("type" in part && part.type === "image") {
285
294
  total += 765;
286
295
  }
@@ -289,10 +298,10 @@ function estimateMessageTokens(message) {
289
298
  }
290
299
  return toolCallTokens;
291
300
  }
292
- function estimateMessageWithOverhead(message) {
293
- return estimateMessageTokens(message) + 4;
301
+ function estimateMessageWithOverhead(message, estimator) {
302
+ return estimateMessageTokens(message, estimator) + 4;
294
303
  }
295
- function estimateFromRecentUsage(messages) {
304
+ function estimateFromRecentUsage(messages, estimator) {
296
305
  for (let i = messages.length - 1; i >= 0; i--) {
297
306
  const message = messages[i];
298
307
  if (message.role !== "assistant" || !("tokens" in message) || !message.tokens) {
@@ -307,17 +316,20 @@ function estimateFromRecentUsage(messages) {
307
316
  message.tokens.totalTokens ?? 0
308
317
  );
309
318
  const trailingTokens = messages.slice(i + 1).reduce((total, trailingMessage) => {
310
- return total + estimateMessageWithOverhead(trailingMessage);
319
+ return total + estimateMessageWithOverhead(trailingMessage, estimator);
311
320
  }, 0);
312
321
  return usageTokens + trailingTokens;
313
322
  }
314
323
  return void 0;
315
324
  }
316
- function estimateConversationTokens(messages) {
317
- const heuristic = messages.reduce((total, message) => {
318
- return total + estimateMessageWithOverhead(message);
325
+ function estimateConversationTokens(messages, estimator) {
326
+ const customEstimate = normalizeTokenEstimate(
327
+ estimator?.estimateConversationTokens?.(messages)
328
+ );
329
+ const heuristic = customEstimate ?? messages.reduce((total, message) => {
330
+ return total + estimateMessageWithOverhead(message, estimator);
319
331
  }, 0);
320
- const usageEstimate = estimateFromRecentUsage(messages);
332
+ const usageEstimate = estimateFromRecentUsage(messages, estimator);
321
333
  return Math.max(heuristic, usageEstimate ?? 0);
322
334
  }
323
335
 
@@ -455,7 +467,10 @@ function applyAgentContextFragmentsWithReport(messages, contextFragments = [], o
455
467
  inputIndex,
456
468
  message,
457
469
  budgetBehavior: contextFragmentBudgetBehavior(message),
458
- estimatedTokenCount: estimateConversationTokens([message])
470
+ estimatedTokenCount: estimateConversationTokens(
471
+ [message],
472
+ options.tokenEstimator
473
+ )
459
474
  });
460
475
  }
461
476
  const budgeted = applyContextFragmentBudget(
@@ -16,18 +16,20 @@ function resolveAgentMemoryConfig(input) {
16
16
  maxRecords: recall.maxRecords ?? recall.limit ?? 5,
17
17
  maxRecordChars: recall.maxRecordChars ?? 700
18
18
  },
19
- turns: resolveAgentMemoryTurnConfig(config.turns),
19
+ capture: resolveAgentMemoryCaptureConfig(config.capture),
20
20
  tools: {
21
21
  enabled: tools.enabled ?? true,
22
22
  deferred: tools.deferred ?? false
23
23
  }
24
24
  };
25
25
  }
26
- function resolveAgentMemoryTurnConfig(input) {
27
- const turns = input && typeof input === "object" ? input : { enabled: input !== false };
26
+ function resolveAgentMemoryCaptureConfig(input) {
27
+ const capture = input && typeof input === "object" ? input : { enabled: input !== false };
28
28
  return {
29
- enabled: turns.enabled ?? true,
30
- contextMessageLimit: resolveContextMessageLimit(turns.contextMessageLimit)
29
+ enabled: capture.enabled ?? true,
30
+ contextMessageLimit: resolveContextMessageLimit(
31
+ capture.contextMessageLimit
32
+ )
31
33
  };
32
34
  }
33
35
  function resolveContextMessageLimit(value) {
@@ -114,7 +116,7 @@ function collectTurnContextMessages(options) {
114
116
  );
115
117
  return withoutCurrentTurn.slice(-options.limit);
116
118
  }
117
- async function notifyTurnStart(options) {
119
+ async function notifyCaptureStart(options) {
118
120
  if (!options.provider.onTurnStart) return;
119
121
  await options.provider.onTurnStart({
120
122
  sessionId: options.sessionId,
@@ -124,7 +126,7 @@ async function notifyTurnStart(options) {
124
126
  messages: options.messages
125
127
  });
126
128
  }
127
- async function notifyTurnEnd(options) {
129
+ async function notifyCaptureEnd(options) {
128
130
  if (!options.provider.onTurnEnd) return;
129
131
  const input = {
130
132
  sessionId: options.sessionId,
@@ -141,7 +143,7 @@ async function notifyTurnEnd(options) {
141
143
  function createMemoryMiddleware(options) {
142
144
  const activeInputs = /* @__PURE__ */ new Map();
143
145
  const recallCache = /* @__PURE__ */ new Map();
144
- const turns = resolveAgentMemoryTurnConfig(options.turns);
146
+ const capture = resolveAgentMemoryCaptureConfig(options.capture);
145
147
  const recallFrequency = options.recall.frequency ?? "per-turn";
146
148
  return {
147
149
  name: `memory:${options.provider.id}`,
@@ -199,10 +201,25 @@ function createMemoryMiddleware(options) {
199
201
  }
200
202
  };
201
203
  },
204
+ async beforeContextCompactionCommit(ctx) {
205
+ if (!options.provider.captureBeforeCompactionCommit) return;
206
+ if (ctx.removedMessages.length === 0) return;
207
+ await options.provider.captureBeforeCompactionCommit({
208
+ sessionId: ctx.sessionId,
209
+ ...ctx.turnId ? { turnId: ctx.turnId } : {},
210
+ cwd: ctx.cwd,
211
+ ...ctx.phase ? { phase: ctx.phase } : {},
212
+ removedMessages: ctx.removedMessages,
213
+ recentKeptMessages: ctx.keptMessages.slice(-20),
214
+ ...ctx.previousSummary !== void 0 ? { previousSummary: ctx.previousSummary } : {},
215
+ ...ctx.nextSummary !== void 0 ? { nextSummary: ctx.nextSummary } : {},
216
+ ...ctx.abort ? { abort: ctx.abort } : {}
217
+ });
218
+ },
202
219
  async onChatStart(sessionId, message, ctx) {
203
220
  activeInputs.set(turnKey(sessionId, ctx?.turnId), message);
204
- if (!turns.enabled) return;
205
- await notifyTurnStart({
221
+ if (!capture.enabled) return;
222
+ await notifyCaptureStart({
206
223
  provider: options.provider,
207
224
  sessionId,
208
225
  ...ctx?.turnId ? { turnId: ctx.turnId } : {},
@@ -210,7 +227,7 @@ function createMemoryMiddleware(options) {
210
227
  input: message,
211
228
  messages: collectTurnContextMessages({
212
229
  history: ctx?.history,
213
- limit: turns.contextMessageLimit,
230
+ limit: capture.contextMessageLimit,
214
231
  input: message
215
232
  })
216
233
  });
@@ -227,8 +244,8 @@ function createMemoryMiddleware(options) {
227
244
  query: input
228
245
  })
229
246
  );
230
- if (!turns.enabled) return;
231
- await notifyTurnEnd({
247
+ if (!capture.enabled) return;
248
+ await notifyCaptureEnd({
232
249
  provider: options.provider,
233
250
  sessionId,
234
251
  ...ctx?.turnId ? { turnId: ctx.turnId } : {},
@@ -239,7 +256,7 @@ function createMemoryMiddleware(options) {
239
256
  ...result.usage ? { usage: result.usage } : {},
240
257
  messages: collectTurnContextMessages({
241
258
  history: ctx?.history,
242
- limit: turns.contextMessageLimit,
259
+ limit: capture.contextMessageLimit,
243
260
  input,
244
261
  ...result.output !== void 0 ? { output: result.output } : {}
245
262
  })
@@ -250,7 +267,7 @@ function createMemoryMiddleware(options) {
250
267
 
251
268
  export {
252
269
  resolveAgentMemoryConfig,
253
- resolveAgentMemoryTurnConfig,
270
+ resolveAgentMemoryCaptureConfig,
254
271
  normalizeMemoryRecords,
255
272
  formatMemoryContextFragment,
256
273
  createMemoryMiddleware