@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,4 +1,4 @@
1
- import type { AgentMemoryInput, AgentMemoryTurnConfig, ResolvedAgentMemoryConfig } from "./types.js";
1
+ import type { AgentMemoryCaptureConfig, AgentMemoryInput, ResolvedAgentMemoryConfig } from "./types.js";
2
2
  export declare function resolveAgentMemoryConfig(input: AgentMemoryInput | undefined): ResolvedAgentMemoryConfig | undefined;
3
- export declare function resolveAgentMemoryTurnConfig(input: boolean | AgentMemoryTurnConfig | undefined): Required<AgentMemoryTurnConfig>;
3
+ export declare function resolveAgentMemoryCaptureConfig(input: boolean | AgentMemoryCaptureConfig | undefined): Required<AgentMemoryCaptureConfig>;
4
4
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAMpB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAClC,yBAAyB,GAAG,SAAS,CA4BvC;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,GACjD,QAAQ,CAAC,qBAAqB,CAAC,CAQjC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAExB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAMpB,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAClC,yBAAyB,GAAG,SAAS,CA4BvC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,SAAS,GACpD,QAAQ,CAAC,wBAAwB,CAAC,CAUpC"}
@@ -1,5 +1,5 @@
1
- export { resolveAgentMemoryConfig, resolveAgentMemoryTurnConfig, } from "./config.js";
1
+ export { resolveAgentMemoryConfig, resolveAgentMemoryCaptureConfig, } from "./config.js";
2
2
  export { formatMemoryContextFragment, normalizeMemoryRecords, } from "./format.js";
3
3
  export { createMemoryMiddleware, type MemoryMiddlewareOptions, } from "./middleware.js";
4
- export type { AgentMemoryCompactionInput, AgentMemoryCompactionResult, AgentMemoryConfig, AgentMemoryForgetInput, AgentMemoryForgetResult, AgentMemoryGetToolsInput, AgentMemoryInput, AgentMemoryListInput, AgentMemoryProvider, AgentMemoryRecallConfig, AgentMemoryRecallInput, AgentMemoryRecallResponse, AgentMemoryRecallResult, AgentMemoryRecord, AgentMemoryRememberInput, AgentMemoryScope, AgentMemorySearchInput, AgentMemorySearchResult, AgentMemoryTurnEndInput, AgentMemoryTurnConfig, AgentMemoryToolsConfig, AgentMemoryTurnStartInput, AgentMemoryWriteResult, ResolvedAgentMemoryConfig, } from "./types.js";
4
+ export type { AgentMemoryCaptureConfig, AgentMemoryCompactionCommitInput, AgentMemoryCompactionCommitResult, AgentMemoryConfig, AgentMemoryForgetInput, AgentMemoryForgetResult, AgentMemoryGetToolsInput, AgentMemoryInput, AgentMemoryListInput, AgentMemoryProvider, AgentMemoryRecallConfig, AgentMemoryRecallInput, AgentMemoryRecallResponse, AgentMemoryRecallResult, AgentMemoryRecord, AgentMemoryRememberInput, AgentMemoryScope, AgentMemorySearchInput, AgentMemorySearchResult, AgentMemoryTurnEndInput, AgentMemoryToolsConfig, AgentMemoryTurnStartInput, AgentMemoryWriteResult, ResolvedAgentMemoryConfig, } from "./types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,gCAAgC,EAChC,iCAAiC,EACjC,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}
@@ -2,13 +2,13 @@ import {
2
2
  createMemoryMiddleware,
3
3
  formatMemoryContextFragment,
4
4
  normalizeMemoryRecords,
5
- resolveAgentMemoryConfig,
6
- resolveAgentMemoryTurnConfig
7
- } from "../chunk-EEAGM5MS.js";
5
+ resolveAgentMemoryCaptureConfig,
6
+ resolveAgentMemoryConfig
7
+ } from "../chunk-DD7S7ZG4.js";
8
8
  export {
9
9
  createMemoryMiddleware,
10
10
  formatMemoryContextFragment,
11
11
  normalizeMemoryRecords,
12
- resolveAgentMemoryConfig,
13
- resolveAgentMemoryTurnConfig
12
+ resolveAgentMemoryCaptureConfig,
13
+ resolveAgentMemoryConfig
14
14
  };
@@ -1,12 +1,12 @@
1
1
  import type { AgentMiddleware } from "../middleware/types.js";
2
- import type { AgentMemoryProvider, AgentMemoryRecallConfig, AgentMemoryRecallFrequency, AgentMemoryTurnConfig } from "./types.js";
2
+ import type { AgentMemoryCaptureConfig, AgentMemoryProvider, AgentMemoryRecallConfig, AgentMemoryRecallFrequency } from "./types.js";
3
3
  type ResolvedMemoryMiddlewareRecallConfig = Required<Omit<AgentMemoryRecallConfig, "frequency">> & {
4
4
  frequency?: AgentMemoryRecallFrequency;
5
5
  };
6
6
  export interface MemoryMiddlewareOptions {
7
7
  provider: AgentMemoryProvider;
8
8
  recall: ResolvedMemoryMiddlewareRecallConfig;
9
- turns?: boolean | AgentMemoryTurnConfig;
9
+ capture?: boolean | AgentMemoryCaptureConfig;
10
10
  cwd?: string;
11
11
  }
12
12
  export declare function createMemoryMiddleware(options: MemoryMiddlewareOptions): AgentMiddleware;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/memory/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAO/E,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAE1B,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,KAAK,oCAAoC,GAAG,QAAQ,CAClD,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAC3C,GAAG;IACF,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,oCAAoC,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgHD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,eAAe,CAyHjB"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/memory/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAO/E,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAEpB,KAAK,oCAAoC,GAAG,QAAQ,CAClD,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAC3C,GAAG;IACF,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,oCAAoC,CAAC;IAC7C,OAAO,CAAC,EAAE,OAAO,GAAG,wBAAwB,CAAC;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgHD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,eAAe,CA8IjB"}
@@ -65,12 +65,25 @@ export interface AgentMemoryRememberInput {
65
65
  cwd: string;
66
66
  content: string;
67
67
  title?: string;
68
- /** Provider-specific record kind, for example preference, fact, summary, or turn-extraction. */
68
+ /** Provider-specific record kind, for example preference, fact, summary, or turn-capture. */
69
69
  kind?: string;
70
70
  scope?: AgentMemoryScope;
71
- /** Provider-specific write source, for example memory_remember, turn_end, or compaction. */
71
+ /** Provider-specific write source, for example memory_remember, turn_capture, or before_compaction_commit. */
72
72
  source?: string;
73
73
  tags?: string[];
74
+ /**
75
+ * Optional stable provider key for repeated writes to the same logical memory.
76
+ *
77
+ * Providers may also match this against an existing record id. When omitted,
78
+ * providers should still skip exact duplicates but should not merge unrelated
79
+ * records by fuzzy similarity alone.
80
+ */
81
+ memoryKey?: string;
82
+ /**
83
+ * How the provider should handle an existing record selected by `memoryKey`.
84
+ * Exact duplicate content may still be skipped regardless of this setting.
85
+ */
86
+ onExisting?: "skip" | "append" | "replace";
74
87
  metadata?: Record<string, unknown>;
75
88
  abort?: AbortSignal;
76
89
  }
@@ -78,6 +91,7 @@ export interface AgentMemoryWriteResult {
78
91
  record: AgentMemoryRecord;
79
92
  created?: boolean;
80
93
  updated?: boolean;
94
+ skipped?: boolean;
81
95
  metadata?: Record<string, unknown>;
82
96
  }
83
97
  export interface AgentMemoryForgetInput {
@@ -113,17 +127,22 @@ export interface AgentMemoryTurnStartInput {
113
127
  messages: readonly Message[];
114
128
  abort?: AbortSignal;
115
129
  }
116
- export interface AgentMemoryCompactionInput {
130
+ export interface AgentMemoryCompactionCommitInput {
117
131
  sessionId: string;
118
132
  turnId?: string;
119
133
  cwd: string;
120
134
  phase?: AgentContextCompactionPhase;
135
+ /** Primary extraction target: messages that are about to leave model-visible context. */
121
136
  removedMessages: readonly Message[];
122
- keptMessages: readonly Message[];
123
- summary?: string;
137
+ /** Bounded context only. The provider should not treat these as the main extraction target. */
138
+ recentKeptMessages: readonly Message[];
139
+ /** Existing handoff summary that was visible before this compaction pass, if any. */
140
+ previousSummary?: string;
141
+ /** New handoff summary that is about to be committed, if one will be model-visible. */
142
+ nextSummary?: string;
124
143
  abort?: AbortSignal;
125
144
  }
126
- export interface AgentMemoryCompactionResult {
145
+ export interface AgentMemoryCompactionCommitResult {
127
146
  notes?: AgentMemoryRecord[];
128
147
  metadata?: Record<string, unknown>;
129
148
  }
@@ -135,9 +154,9 @@ export interface AgentMemoryGetToolsInput {
135
154
  *
136
155
  * The provider owns storage, retrieval quality, write policy, and any external
137
156
  * service calls. Agent-core owns when the provider is invoked: automatic
138
- * recall for a user turn or model step, tools at agent setup, turn lifecycle
139
- * hooks around chat, and the compaction preparation hook before old messages
140
- * are removed from context.
157
+ * recall for a user turn or model step, tools at agent setup, automatic
158
+ * capture hooks around chat, and the `beforeContextCompactionCommit` memory
159
+ * hook before old messages are removed from committed model-visible context.
141
160
  */
142
161
  export interface AgentMemoryProvider {
143
162
  /** Stable provider id used in middleware names, context-fragment metadata, and diagnostics. */
@@ -168,7 +187,7 @@ export interface AgentMemoryProvider {
168
187
  * about to leave the model-visible window. It does not replace or mutate the
169
188
  * compaction algorithm.
170
189
  */
171
- prepareForCompaction?(input: AgentMemoryCompactionInput): Promise<AgentMemoryCompactionResult | void> | AgentMemoryCompactionResult | void;
190
+ captureBeforeCompactionCommit?(input: AgentMemoryCompactionCommitInput): Promise<AgentMemoryCompactionCommitResult | void> | AgentMemoryCompactionCommitResult | void;
172
191
  /** Return provider-owned tools. Agent-core installs them when memory tools are enabled. */
173
192
  getTools?(input: AgentMemoryGetToolsInput): Tool.AnyInfo[];
174
193
  /** Dispose provider resources such as database handles, workers, or network clients. */
@@ -200,8 +219,8 @@ export interface AgentMemoryToolsConfig {
200
219
  /** Ask provider tools to use deferred execution when they support it. */
201
220
  deferred?: boolean;
202
221
  }
203
- export interface AgentMemoryTurnConfig {
204
- /** Disable provider turn lifecycle hooks without disabling recall or tools. */
222
+ export interface AgentMemoryCaptureConfig {
223
+ /** Disable automatic turn capture without disabling recall or tools. */
205
224
  enabled?: boolean;
206
225
  /**
207
226
  * Number of additional recent visible messages passed to
@@ -217,8 +236,8 @@ export interface AgentMemoryConfig {
217
236
  provider: AgentMemoryProvider;
218
237
  /** Core recall controls. Provider-specific recall strategy lives in the provider. */
219
238
  recall?: boolean | AgentMemoryRecallConfig;
220
- /** Core turn lifecycle controls. Provider-specific extraction policy lives in the provider. */
221
- turns?: boolean | AgentMemoryTurnConfig;
239
+ /** Core automatic capture controls. Provider-specific extraction policy lives in the provider. */
240
+ capture?: boolean | AgentMemoryCaptureConfig;
222
241
  /** Core tool registration controls. Provider-specific tool design lives in the provider. */
223
242
  tools?: boolean | AgentMemoryToolsConfig;
224
243
  }
@@ -226,7 +245,7 @@ export type AgentMemoryInput = AgentMemoryProvider | AgentMemoryConfig;
226
245
  export interface ResolvedAgentMemoryConfig {
227
246
  provider: AgentMemoryProvider;
228
247
  recall: Required<AgentMemoryRecallConfig>;
229
- turns: Required<AgentMemoryTurnConfig>;
248
+ capture: Required<AgentMemoryCaptureConfig>;
230
249
  tools: Required<AgentMemoryToolsConfig>;
231
250
  }
232
251
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * - `beforeToolCall` can allow or deny tool invocations
9
9
  * - `afterToolCall` can transform tool results
10
10
  * - `promptSections` can inject dynamic prompt content
11
+ * - `beforeContextCompactionCommit` and `afterContextCompactionCommit` observe compaction commits
11
12
  * - `onEvent`, `onChatStart`, and `onChatEnd` observe lifecycle activity
12
13
  *
13
14
  * Middleware changes behavior inside the current execution scope. The `scope`
@@ -17,7 +18,7 @@
17
18
  * `MiddlewareRunner` owns hook ordering and execution. The built-in factories
18
19
  * here cover approval flows, OpenTelemetry/tracing, and prompt caching.
19
20
  */
20
- export type { AgentMiddleware, ChatLifecycleContext, HistoryAccessor, AgentModelHooks, BlockedModelCall, ModelCallContext, ModelCallInput, ModelCallOutput, ToolCallDecision, ToolCallOutput, } from "./types.js";
21
+ export type { AgentMiddleware, ChatLifecycleContext, HistoryAccessor, AgentModelHooks, BlockedModelCall, ContextCompactionHookContext, ModelCallContext, ModelCallInput, ModelCallOutput, ToolCallDecision, ToolCallOutput, } from "./types.js";
21
22
  export { isBlockedModelCall } from "./types.js";
22
23
  export { MiddlewareRunner } from "./runner.js";
23
24
  export { approvalMiddleware, isApprovalMiddleware, type ApprovalAgentMiddleware, type ApprovalMiddlewareConfig, } from "./approval.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,GACd,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,GACd,MAAM,yBAAyB,CAAC"}
@@ -5,7 +5,7 @@ import {
5
5
  isApprovalMiddleware,
6
6
  otelMiddleware,
7
7
  promptCacheMiddleware
8
- } from "../chunk-TU5KDFWI.js";
8
+ } from "../chunk-GHVW7L4P.js";
9
9
  import {
10
10
  isBlockedModelCall
11
11
  } from "../chunk-W6LWIMIX.js";
@@ -7,7 +7,7 @@
7
7
  * This is the internal engine — consumers never see it.
8
8
  * They interact with middleware through AgentConfig.middleware.
9
9
  */
10
- import type { AgentMiddleware, BlockedModelCall, ChatLifecycleContext, ModelCallContext, ModelCallInput, ModelCallOutput, ToolCallDecision, ToolCallOutput } from "./types.js";
10
+ import type { AgentMiddleware, BlockedModelCall, ChatLifecycleContext, ContextCompactionHookContext, ModelCallContext, ModelCallInput, ModelCallOutput, ToolCallDecision, ToolCallOutput } from "./types.js";
11
11
  import type { AgentEvent } from "../types/events.js";
12
12
  import type { PromptBuildContext, PromptSection } from "../prompt/types.js";
13
13
  import type { TokenUsage } from "../types/messages.js";
@@ -66,6 +66,21 @@ export declare class MiddlewareRunner {
66
66
  */
67
67
  collectPromptSections(ctx: PromptBuildContext): PromptSection[];
68
68
  collectContextFragments(ctx: AgentContextFragmentBuildContext): Promise<AgentContextFragmentInput[]>;
69
+ /**
70
+ * Run all `beforeContextCompactionCommit` hooks in order.
71
+ *
72
+ * Hooks are awaited because durability work, such as memory capture, must
73
+ * complete before old context is replaced. Errors are logged and do not abort
74
+ * compaction.
75
+ */
76
+ runBeforeContextCompactionCommit(ctx: ContextCompactionHookContext): Promise<void>;
77
+ /**
78
+ * Run all `afterContextCompactionCommit` hooks in reverse order.
79
+ *
80
+ * This mirrors `afterToolCall` / `model.output` ordering. Errors are logged
81
+ * and do not abort the turn.
82
+ */
83
+ runAfterContextCompactionCommit(ctx: ContextCompactionHookContext): Promise<void>;
69
84
  /**
70
85
  * Broadcast an event to all middleware observers.
71
86
  *
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/middleware/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AAMvC;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,UAAU,GAAE,eAAe,EAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAK/D,sCAAsC;IACtC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,2CAA2C;IAC3C,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,qDAAqD;IACrD,aAAa,IAAI,SAAS,eAAe,EAAE;IAQrC,aAAa,CACjB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,cAAc,GAAG,gBAAgB,CAAC;IA2BvC,aAAa,CACjB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IA4B7B,cAAc,CAClB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,eAAe,CAAC;IAyB3B;;;;;;;;;OASG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,gBAAgB,CAAC;IAiC5B;;;;;;;;;;OAUG;IACG,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,cAAc,CAAC;IAsB1B;;;;;OAKG;IACH,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAyBzD,uBAAuB,CAC3B,GAAG,EAAE,gCAAgC,GACpC,OAAO,CAAC,yBAAyB,EAAE,CAAC;IA2BvC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAalC;;;OAGG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,oBAAoB,GACzB,OAAO,GAAG,SAAS;IActB;;;;;OAKG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;;;OAKG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC9D,GAAG,CAAC,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC;CAYjB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/middleware/runner.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,10 @@
17
17
  */
18
18
  import type { LanguageModel, ModelMessage, SystemModelMessage, TelemetryOptions } from "ai";
19
19
  import type { ProviderOptions } from "@ai-sdk/provider-utils";
20
- import type { AgentEvent } from "../types/events.js";
20
+ import type { AgentContextCompactionPhase, AgentEvent } from "../types/events.js";
21
21
  import type { PromptBuildContext, PromptSection } from "../prompt/types.js";
22
22
  import type { Message, TokenUsage } from "../types/messages.js";
23
- import type { RecentMessagesOptions as SessionRecentMessagesOptions } from "../storage/manager/types.js";
23
+ import type { RecentMessagesOptions as SessionRecentMessagesOptions } from "../sessions/manager/types.js";
24
24
  import type { ScopeSnapshot } from "../execution/scope/types.js";
25
25
  import type { StreamChunk, StreamProvider } from "../types/stream.js";
26
26
  import type { ToolContext } from "../types/tool.js";
@@ -28,6 +28,8 @@ import type { Tool } from "../tool/tool.js";
28
28
  import type { ReasoningLevel } from "../models/reasoning/index.js";
29
29
  import type { ApprovalCorrection } from "../safety/types.js";
30
30
  import type { AgentContextFragmentBuildContext, AgentContextFragmentInput } from "../context/fragments/types.js";
31
+ import type { ContextCompactionDecision } from "../context/window/index.js";
32
+ import type { CompactionCutReason, CompactionEffectiveness, CompactionReason, CompactionTrigger } from "../types/compaction.js";
31
33
  /**
32
34
  * Action returned by `beforeToolCall` — determines whether
33
35
  * the tool call proceeds or is blocked.
@@ -191,6 +193,40 @@ export interface ToolCallOutput extends Tool.ExecuteResult {
191
193
  */
192
194
  supplement?: string;
193
195
  }
196
+ /**
197
+ * Shared context for middleware that observes a context compaction pass.
198
+ *
199
+ * `beforeContextCompactionCommit` receives the proposed replacement after the
200
+ * cut and summary are prepared, before it is committed to session history.
201
+ * `afterContextCompactionCommit` receives the same shape after the session has
202
+ * been replaced.
203
+ */
204
+ export interface ContextCompactionHookContext {
205
+ sessionId: string;
206
+ turnId?: string;
207
+ cwd: string;
208
+ phase?: AgentContextCompactionPhase;
209
+ trigger?: CompactionTrigger;
210
+ reason?: CompactionReason;
211
+ inputTokens: number;
212
+ limit: number;
213
+ decision: ContextCompactionDecision;
214
+ effectiveness: CompactionEffectiveness;
215
+ removedMessages: readonly Message[];
216
+ keptMessages: readonly Message[];
217
+ messagesAfter: readonly Message[];
218
+ persistedMessages: readonly Message[];
219
+ removedCount: number;
220
+ tokensRemoved: number;
221
+ summarized: boolean;
222
+ previousSummary?: string;
223
+ nextSummary?: string;
224
+ cutIndex?: number;
225
+ cutReason?: CompactionCutReason;
226
+ tokensBefore: number;
227
+ tokensAfter: number;
228
+ abort?: AbortSignal;
229
+ }
194
230
  /**
195
231
  * Optional model-specific hooks grouped under `middleware.model`.
196
232
  */
@@ -237,6 +273,8 @@ export interface AgentModelHooks {
237
273
  * - `model.chunk`: runs in array order on raw stream chunks
238
274
  * - `model.output`: runs in reverse order
239
275
  * - `promptSections`: all run, sections merged
276
+ * - `beforeContextCompactionCommit`: runs in array order before session history is replaced
277
+ * - `afterContextCompactionCommit`: runs in reverse order after session history is replaced
240
278
  * - `onEvent`: all run synchronously, errors logged, never blocks the stream
241
279
  * - `onChatStart` / `onChatEnd`: run in array order, awaited sequentially
242
280
  *
@@ -317,6 +355,23 @@ export interface AgentMiddleware {
317
355
  * `SessionManager.addContextFragment(...)`.
318
356
  */
319
357
  contextFragments?(ctx: AgentContextFragmentBuildContext): AgentContextFragmentInput | AgentContextFragmentInput[] | undefined | Promise<AgentContextFragmentInput | AgentContextFragmentInput[] | undefined>;
358
+ /**
359
+ * Observe or persist information immediately before context compaction
360
+ * replaces visible session history.
361
+ *
362
+ * Use this for blocking durability work that must see removed messages before
363
+ * they leave the model-visible window, such as memory capture. Errors are
364
+ * logged and do not abort compaction.
365
+ */
366
+ beforeContextCompactionCommit?(ctx: ContextCompactionHookContext): Promise<void> | void;
367
+ /**
368
+ * Observe a completed context compaction after session history has been
369
+ * replaced.
370
+ *
371
+ * Use this for follow-up bookkeeping that should only happen after the
372
+ * compacted history is committed. Errors are logged and do not abort the turn.
373
+ */
374
+ afterContextCompactionCommit?(ctx: ContextCompactionHookContext): Promise<void> | void;
320
375
  /**
321
376
  * Observe agent events (read-only, non-blocking).
322
377
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/middleware/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/middleware/types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  /**
2
- * Storage Module
2
+ * Sessions Module
3
3
  *
4
- * Session storage with tree structure, async I/O, and pluggable backends.
4
+ * Session history, tree reconstruction, compaction entries, and pluggable
5
+ * session-store contracts.
5
6
  */
6
- export type { EntryBase, SessionHeader, SerializedMessage, MessageEntry, CompactionEntry, MetadataEntry, BranchEntry, ConfigChangeEntry, SessionEntry, FileEntry, SessionInfo, SessionStorage, } from "./types.js";
7
- export { STORAGE_VERSION } from "./types.js";
7
+ export type { EntryBase, SessionHeader, SerializedMessage, MessageEntry, CompactionEntry, MetadataEntry, BranchEntry, ConfigChangeEntry, SessionEntry, FileEntry, SessionInfo, SessionStore, } from "./types.js";
8
+ export { SESSION_FORMAT_VERSION } from "./types.js";
8
9
  export { generateEntryId, parseJSONL, toJSONL, toJSONLBatch, serializeMessage, deserializeMessage, createMessageEntry, createMetadataEntry, extractSessionInfo, getLeafId, buildEntryPath, buildMessagesFromEntries, buildRecentMessagesFromEntries, buildRecentMessagesFromEntryMap, type BuildRecentMessagesOptions, } from "./utils.js";
9
- export { MemoryStorage } from "./memory.js";
10
- export { FileStorage, type FileStorageOptions } from "./file/index.js";
11
- export { LocalSessionTurnLock, type ReleaseSessionTurnLock, type SessionTurnLock, type SessionTurnLockAcquireOptions, } from "./lock.js";
12
- export { getDataDir, getSessionsDir, getProjectSessionsDir, getProjectId, getGitRootHash, } from "./paths.js";
10
+ export { InMemorySessionStore } from "./store/memory.js";
11
+ export { LocalSessionTurnLock, type ReleaseSessionTurnLock, type SessionTurnLock, type SessionTurnLockAcquireOptions, } from "./store/lock.js";
13
12
  export { SessionManager, getDefaultSessionManager, configureDefaultSessionManager, type CreateSessionOptions, type RecentMessagesOptions, type SessionContext, } from "./manager/index.js";
14
13
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,SAAS,EACT,aAAa,EACb,iBAAiB,EAEjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,SAAS,EAET,WAAW,EAEX,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EACL,eAAe,EACf,UAAU,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,6BAA6B,GACnC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import {
2
- FileStorage,
2
+ InMemorySessionStore,
3
3
  LocalSessionTurnLock,
4
- MemoryStorage,
5
- STORAGE_VERSION,
4
+ SESSION_FORMAT_VERSION,
6
5
  SessionManager,
7
6
  buildEntryPath,
8
7
  buildMessagesFromEntries,
@@ -14,24 +13,18 @@ import {
14
13
  deserializeMessage,
15
14
  extractSessionInfo,
16
15
  generateEntryId,
17
- getDataDir,
18
16
  getDefaultSessionManager,
19
- getGitRootHash,
20
17
  getLeafId,
21
- getProjectId,
22
- getProjectSessionsDir,
23
- getSessionsDir,
24
18
  parseJSONL,
25
19
  serializeMessage,
26
20
  toJSONL,
27
21
  toJSONLBatch
28
- } from "../chunk-VMGZKIFT.js";
29
- import "../chunk-AAGKWUXR.js";
22
+ } from "../chunk-EDKZOPUV.js";
23
+ import "../chunk-CGP6UNCQ.js";
30
24
  export {
31
- FileStorage,
25
+ InMemorySessionStore,
32
26
  LocalSessionTurnLock,
33
- MemoryStorage,
34
- STORAGE_VERSION,
27
+ SESSION_FORMAT_VERSION,
35
28
  SessionManager,
36
29
  buildEntryPath,
37
30
  buildMessagesFromEntries,
@@ -43,13 +36,8 @@ export {
43
36
  deserializeMessage,
44
37
  extractSessionInfo,
45
38
  generateEntryId,
46
- getDataDir,
47
39
  getDefaultSessionManager,
48
- getGitRootHash,
49
40
  getLeafId,
50
- getProjectId,
51
- getProjectSessionsDir,
52
- getSessionsDir,
53
41
  parseJSONL,
54
42
  serializeMessage,
55
43
  toJSONL,
@@ -1,11 +1,11 @@
1
- import type { SessionStorage } from "../types.js";
1
+ import type { SessionStore } from "../types.js";
2
2
  import { SessionManager } from "./session-manager.js";
3
3
  /**
4
4
  * Get the default session-manager instance.
5
5
  */
6
6
  export declare function getDefaultSessionManager(): SessionManager;
7
7
  /**
8
- * Replace the default session-manager instance with one backed by custom storage.
8
+ * Replace the default session-manager instance with one backed by custom session store.
9
9
  */
10
- export declare function configureDefaultSessionManager(storage: SessionStorage): SessionManager;
10
+ export declare function configureDefaultSessionManager(store: SessionStore): SessionManager;
11
11
  //# sourceMappingURL=default.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/sessions/manager/default.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,cAAc,CAKzD;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,YAAY,GAClB,cAAc,CAGhB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sessions/manager/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,cAAc,CAAC"}
@@ -1,18 +1,20 @@
1
1
  import type { Message } from "../../types/index.js";
2
+ import type { CompactionCutReason, CompactionReason, CompactionTrigger } from "../../types/compaction.js";
3
+ import type { AgentContextCompactionPhase } from "../../types/events.js";
2
4
  import { type AgentContextFragmentInput } from "../../context/fragments/index.js";
3
- import type { FileEntry, SessionHeader, SessionInfo, SessionStorage } from "../types.js";
5
+ import type { FileEntry, SessionHeader, SessionInfo, SessionStore } from "../types.js";
4
6
  import type { CreateSessionOptions, RecentMessagesOptions, SessionContext } from "./types.js";
5
7
  /**
6
8
  * Manages session lifecycle with tree-structured entries.
7
9
  */
8
10
  export declare class SessionManager {
9
- private storage;
11
+ private store;
10
12
  private currentSessionId;
11
13
  private currentLeafId;
12
14
  private entriesCache;
13
15
  private idsCache;
14
16
  private entriesByIdCache;
15
- constructor(storage?: SessionStorage);
17
+ constructor(store?: SessionStore);
16
18
  create(options: CreateSessionOptions): Promise<string>;
17
19
  load(sessionId: string): Promise<void>;
18
20
  getSessionId(): string | null;
@@ -28,6 +30,10 @@ export declare class SessionManager {
28
30
  firstKeptEntryId: string;
29
31
  tokensBefore: number;
30
32
  tokensAfter: number;
33
+ phase?: AgentContextCompactionPhase;
34
+ trigger?: CompactionTrigger;
35
+ reason?: CompactionReason;
36
+ cutReason?: CompactionCutReason;
31
37
  readFiles?: string[];
32
38
  modifiedFiles?: string[];
33
39
  }): Promise<string>;
@@ -37,6 +43,10 @@ export declare class SessionManager {
37
43
  messages: Message[];
38
44
  tokensBefore: number;
39
45
  tokensAfter: number;
46
+ phase?: AgentContextCompactionPhase;
47
+ trigger?: CompactionTrigger;
48
+ reason?: CompactionReason;
49
+ cutReason?: CompactionCutReason;
40
50
  readFiles?: string[];
41
51
  modifiedFiles?: string[];
42
52
  }): Promise<string>;
@@ -52,6 +62,6 @@ export declare class SessionManager {
52
62
  listSessions(): Promise<SessionInfo[]>;
53
63
  deleteSession(sessionId: string): Promise<boolean>;
54
64
  sessionExists(sessionId: string): Promise<boolean>;
55
- getStorage(): SessionStorage;
65
+ getStore(): SessionStore;
56
66
  }
57
67
  //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../src/sessions/manager/session-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sessions/manager/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB;IACvB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../src/sessions/store/lock.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhE,MAAM,WAAW,6BAA6B;IAC5C,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAEpD,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,sBAAsB,CAAC;IAgClC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAG/B"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Memory Session Storage
2
+ * In-Memory Session Store
3
3
  *
4
- * In-memory implementation of SessionStorage.
4
+ * In-memory implementation of SessionStore.
5
5
  * Useful for testing and ephemeral sessions.
6
6
  */
7
- import type { SessionStorage, SessionHeader, SessionEntry, FileEntry, SessionInfo } from "./types.js";
7
+ import type { SessionStore, SessionHeader, SessionEntry, FileEntry, SessionInfo } from "../types.js";
8
8
  /**
9
- * In-memory session storage
9
+ * In-memory session store
10
10
  */
11
- export declare class MemoryStorage implements SessionStorage {
11
+ export declare class InMemorySessionStore implements SessionStore {
12
12
  private sessions;
13
13
  create(header: SessionHeader): Promise<void>;
14
14
  append(sessionId: string, entry: SessionEntry): Promise<void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/sessions/store/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAkC;IAE5C,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAS7C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3C,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}