@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.
- package/dist/agent/chat-loop/commit-batch.d.ts +1 -1
- package/dist/agent/chat-loop/commit-batch.d.ts.map +1 -1
- package/dist/agent/chat-loop/context-recovery.d.ts +7 -3
- package/dist/agent/chat-loop/context-recovery.d.ts.map +1 -1
- package/dist/agent/chat-loop/finalize-turn.d.ts.map +1 -1
- package/dist/agent/chat-loop/loop.d.ts.map +1 -1
- package/dist/agent/chat-loop/model-step-snapshot.d.ts +1 -1
- package/dist/agent/chat-loop/model-step-snapshot.d.ts.map +1 -1
- package/dist/agent/chat-loop/types.d.ts +1 -1
- package/dist/agent/chat-loop/types.d.ts.map +1 -1
- package/dist/agent/event-printer.d.ts +5 -0
- package/dist/agent/event-printer.d.ts.map +1 -1
- package/dist/agent/fork.d.ts +1 -1
- package/dist/agent/fork.d.ts.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/instance/context-management.d.ts +14 -1
- package/dist/agent/instance/context-management.d.ts.map +1 -1
- package/dist/agent/instance/forking.d.ts +1 -1
- package/dist/agent/instance/forking.d.ts.map +1 -1
- package/dist/agent/instance/index.d.ts +17 -5
- package/dist/agent/instance/index.d.ts.map +1 -1
- package/dist/agent/instance/sessions.d.ts +1 -1
- package/dist/agent/instance/sessions.d.ts.map +1 -1
- package/dist/agent/instance/turn-lifecycle.d.ts +1 -1
- package/dist/agent/instance/turn-lifecycle.d.ts.map +1 -1
- package/dist/agent/session.d.ts +1 -1
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/setup/config.d.ts +1 -1
- package/dist/agent/setup/config.d.ts.map +1 -1
- package/dist/agent/setup/context-window.d.ts.map +1 -1
- package/dist/agent/setup.d.ts +1 -1
- package/dist/agent/setup.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/agent-context.d.ts +26 -3
- package/dist/agent/turn-context/compaction/agent-context.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/budget.d.ts +2 -2
- package/dist/agent/turn-context/compaction/budget.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/check.d.ts +9 -3
- package/dist/agent/turn-context/compaction/check.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/index.d.ts +1 -1
- package/dist/agent/turn-context/compaction/index.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/memory.d.ts +5 -4
- package/dist/agent/turn-context/compaction/memory.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/results.d.ts +7 -1
- package/dist/agent/turn-context/compaction/results.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/types.d.ts +7 -1
- package/dist/agent/turn-context/compaction/types.d.ts.map +1 -1
- package/dist/agent/turn-context/fit-model-context.d.ts +1 -1
- package/dist/agent/turn-context/fit-model-context.d.ts.map +1 -1
- package/dist/agent/turn-context/index.d.ts +1 -1
- package/dist/agent/turn-context/index.d.ts.map +1 -1
- package/dist/agent/types/config.d.ts +7 -0
- package/dist/agent/types/config.d.ts.map +1 -1
- package/dist/{chunk-LX4AHGI3.js → chunk-346FIYKT.js} +1 -1
- package/dist/{chunk-EBVSPHXA.js → chunk-556CPZ3J.js} +1 -1
- package/dist/{chunk-V4YQ6MBK.js → chunk-BKHWKKSG.js} +1 -1
- package/dist/{chunk-AAGKWUXR.js → chunk-CGP6UNCQ.js} +33 -18
- package/dist/{chunk-EEAGM5MS.js → chunk-DD7S7ZG4.js} +32 -15
- package/dist/{chunk-NMJNN6LS.js → chunk-DYZGHHDB.js} +424 -121
- package/dist/{chunk-VMGZKIFT.js → chunk-EDKZOPUV.js} +34 -298
- package/dist/{chunk-TU5KDFWI.js → chunk-GHVW7L4P.js} +41 -0
- package/dist/{chunk-IQA64CAO.js → chunk-TYQWH6XH.js} +6 -2
- package/dist/context/assembly/prepare.d.ts.map +1 -1
- package/dist/context/assembly/types.d.ts +6 -2
- package/dist/context/assembly/types.d.ts.map +1 -1
- package/dist/context/config.d.ts +10 -1
- package/dist/context/config.d.ts.map +1 -1
- package/dist/context/fragments/messages.d.ts +2 -0
- package/dist/context/fragments/messages.d.ts.map +1 -1
- package/dist/context/index.js +9 -3
- package/dist/context/window/budget.d.ts +28 -1
- package/dist/context/window/budget.d.ts.map +1 -1
- package/dist/context/window/compactor.d.ts +17 -2
- package/dist/context/window/compactor.d.ts.map +1 -1
- package/dist/context/window/cut-planner.d.ts +3 -0
- package/dist/context/window/cut-planner.d.ts.map +1 -1
- package/dist/context/window/decision.d.ts +11 -2
- package/dist/context/window/decision.d.ts.map +1 -1
- package/dist/context/window/estimation.d.ts +19 -4
- package/dist/context/window/estimation.d.ts.map +1 -1
- package/dist/context/window/index.d.ts +5 -3
- package/dist/context/window/index.d.ts.map +1 -1
- package/dist/context/window/manager.d.ts +33 -0
- package/dist/context/window/manager.d.ts.map +1 -1
- package/dist/context/window/summary.d.ts +9 -0
- package/dist/context/window/summary.d.ts.map +1 -1
- package/dist/context/window/tool-pruning.d.ts +11 -0
- package/dist/context/window/tool-pruning.d.ts.map +1 -1
- package/dist/dispatch/index.js +3 -3
- package/dist/execution/index.js +3 -3
- package/dist/execution/turn/index.js +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +340 -133
- package/dist/memory/config.d.ts +2 -2
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/index.d.ts +2 -2
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +5 -5
- package/dist/memory/middleware.d.ts +2 -2
- package/dist/memory/middleware.d.ts.map +1 -1
- package/dist/memory/types.d.ts +34 -15
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/middleware/index.d.ts +2 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -1
- package/dist/middleware/runner.d.ts +16 -1
- package/dist/middleware/runner.d.ts.map +1 -1
- package/dist/middleware/types.d.ts +57 -2
- package/dist/middleware/types.d.ts.map +1 -1
- package/dist/{storage → sessions}/index.d.ts +7 -8
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/{storage → sessions}/index.js +6 -18
- package/dist/{storage → sessions}/manager/default.d.ts +3 -3
- package/dist/sessions/manager/default.d.ts.map +1 -0
- package/dist/sessions/manager/index.d.ts.map +1 -0
- package/dist/{storage → sessions}/manager/session-manager.d.ts +14 -4
- package/dist/sessions/manager/session-manager.d.ts.map +1 -0
- package/dist/sessions/manager/types.d.ts.map +1 -0
- package/dist/sessions/store/lock.d.ts.map +1 -0
- package/dist/{storage → sessions/store}/memory.d.ts +5 -5
- package/dist/sessions/store/memory.d.ts.map +1 -0
- package/dist/{storage → sessions}/types.d.ts +16 -6
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/{storage → sessions}/utils.d.ts +3 -3
- package/dist/sessions/utils.d.ts.map +1 -0
- package/dist/subagents/index.js +4 -4
- package/dist/types/compaction.d.ts +49 -0
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/events.d.ts +4 -2
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/storage/file/helpers.d.ts +0 -16
- package/dist/storage/file/helpers.d.ts.map +0 -1
- package/dist/storage/file/index.d.ts +0 -6
- package/dist/storage/file/index.d.ts.map +0 -1
- package/dist/storage/file/storage.d.ts +0 -29
- package/dist/storage/file/storage.d.ts.map +0 -1
- package/dist/storage/file/types.d.ts +0 -6
- package/dist/storage/file/types.d.ts.map +0 -1
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/lock.d.ts.map +0 -1
- package/dist/storage/manager/default.d.ts.map +0 -1
- package/dist/storage/manager/index.d.ts.map +0 -1
- package/dist/storage/manager/session-manager.d.ts.map +0 -1
- package/dist/storage/manager/types.d.ts.map +0 -1
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/paths.d.ts +0 -37
- package/dist/storage/paths.d.ts.map +0 -1
- package/dist/storage/types.d.ts.map +0 -1
- package/dist/storage/utils.d.ts.map +0 -1
- /package/dist/{storage → sessions}/manager/index.d.ts +0 -0
- /package/dist/{storage → sessions}/manager/types.d.ts +0 -0
- /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,
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
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,
|
|
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":"
|
|
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,
|
|
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 "../../
|
|
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,
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,8 +249,13 @@ function parseRenderedAgentContextFragment(content) {
|
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
// src/context/window/estimation.ts
|
|
252
|
-
function
|
|
253
|
-
|
|
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
|
|
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
|
|
318
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
27
|
-
const
|
|
26
|
+
function resolveAgentMemoryCaptureConfig(input) {
|
|
27
|
+
const capture = input && typeof input === "object" ? input : { enabled: input !== false };
|
|
28
28
|
return {
|
|
29
|
-
enabled:
|
|
30
|
-
contextMessageLimit: resolveContextMessageLimit(
|
|
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
|
|
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
|
|
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
|
|
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 (!
|
|
205
|
-
await
|
|
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:
|
|
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 (!
|
|
231
|
-
await
|
|
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:
|
|
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
|
-
|
|
270
|
+
resolveAgentMemoryCaptureConfig,
|
|
254
271
|
normalizeMemoryRecords,
|
|
255
272
|
formatMemoryContextFragment,
|
|
256
273
|
createMemoryMiddleware
|