@namzu/sdk 62.10.0 → 62.11.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.
- package/CHANGELOG.md +18 -0
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +1 -0
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +9 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/compaction/loaded-skills.d.ts +77 -0
- package/dist/compaction/loaded-skills.d.ts.map +1 -0
- package/dist/compaction/loaded-skills.js +203 -0
- package/dist/compaction/loaded-skills.js.map +1 -0
- package/dist/compaction/manager.d.ts +10 -0
- package/dist/compaction/manager.d.ts.map +1 -1
- package/dist/compaction/manager.js +20 -0
- package/dist/compaction/manager.js.map +1 -1
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +17 -3
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/restore.d.ts +5 -0
- package/dist/compaction/restore.d.ts.map +1 -1
- package/dist/compaction/restore.js +18 -18
- package/dist/compaction/restore.js.map +1 -1
- package/dist/contracts/session/api.d.ts +1 -1
- package/dist/contracts/session/api.d.ts.map +1 -1
- package/dist/execution/workflow/phases.d.ts +5 -2
- package/dist/execution/workflow/phases.d.ts.map +1 -1
- package/dist/execution/workflow/phases.js +32 -8
- package/dist/execution/workflow/phases.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +76 -11
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/tools/builtins/skill.d.ts.map +1 -1
- package/dist/tools/builtins/skill.js +5 -0
- package/dist/tools/builtins/skill.js.map +1 -1
- package/dist/turn/reporter.d.ts.map +1 -1
- package/dist/turn/reporter.js +9 -0
- package/dist/turn/reporter.js.map +1 -1
- package/dist/types/session/events.d.ts +26 -3
- package/dist/types/session/events.d.ts.map +1 -1
- package/dist/types/session/events.js +4 -1
- package/dist/types/session/events.js.map +1 -1
- package/dist/types/session/records.d.ts.map +1 -1
- package/dist/types/session/records.js +1 -0
- package/dist/types/session/records.js.map +1 -1
- package/package.json +1 -1
- package/src/bridge/a2a/mapper.ts +1 -0
- package/src/bridge/sse/mapper.ts +10 -0
- package/src/compaction/loaded-skills.ts +245 -0
- package/src/compaction/manager.ts +24 -0
- package/src/compaction/manual.ts +20 -2
- package/src/compaction/restore.ts +33 -18
- package/src/contracts/session/api.ts +1 -0
- package/src/execution/workflow/phases.ts +34 -8
- package/src/runtime/query/iteration/phases/compaction.ts +102 -16
- package/src/tools/builtins/skill.ts +5 -0
- package/src/turn/reporter.ts +10 -0
- package/src/types/session/events.ts +27 -2
- package/src/types/session/records.ts +1 -0
|
@@ -7,6 +7,7 @@ import { toolResultToText } from '../types/message/content.js';
|
|
|
7
7
|
import { resolveContextWindow } from './context-window.js';
|
|
8
8
|
import { findDanglingMessages, findSafeTrimIndex } from './dangling.js';
|
|
9
9
|
import { extractFromAssistantMessage, extractFromToolCall, extractFromToolResult, extractFromUserMessage, } from './extractor.js';
|
|
10
|
+
import { adoptableSkills, handledSkillNames } from './loaded-skills.js';
|
|
10
11
|
import { WorkingStateManager } from './manager.js';
|
|
11
12
|
import { replaceableSummaries, summarizeWithModel, } from './model-summary.js';
|
|
12
13
|
import { planCompaction } from './plan.js';
|
|
@@ -59,10 +60,12 @@ function splice(preservedSystem, summaryBody, retainedOlder, recentMessages, rec
|
|
|
59
60
|
return { messages: [...preservedSystem, summary, ...retainedOlder, ...recentMessages], summary };
|
|
60
61
|
}
|
|
61
62
|
/** The summary with the loaded skills and read files put back after it. */
|
|
62
|
-
function withRestoredContext(body, manager, input) {
|
|
63
|
+
function withRestoredContext(body, manager, input, kept) {
|
|
63
64
|
const window = resolveContextWindow(input.contextWindowTokens ?? input.config.contextWindowTokens, input.model);
|
|
64
65
|
const restored = renderRestoredContext(manager.getState(), {
|
|
65
66
|
contextWindowTokens: window.tokens,
|
|
67
|
+
// Instructions already whole in what the pass keeps are not put back twice.
|
|
68
|
+
wholeSkills: handledSkillNames(kept),
|
|
66
69
|
...(input.restoreNote ? { hostNote: input.restoreNote } : {}),
|
|
67
70
|
});
|
|
68
71
|
return restored ? `${body}\n\n${restored}` : body;
|
|
@@ -70,6 +73,9 @@ function withRestoredContext(body, manager, input) {
|
|
|
70
73
|
/** Build the state a host-triggered pass is about to replace. */
|
|
71
74
|
function populateWorkingState(manager, messages, config) {
|
|
72
75
|
let firstUser = true;
|
|
76
|
+
// Skills an earlier pass put back (an entry, or a summary's restored
|
|
77
|
+
// section) are not tool results, so they are read from the messages whole.
|
|
78
|
+
manager.adoptSkillBodies(adoptableSkills(messages));
|
|
73
79
|
const toolNames = new Map();
|
|
74
80
|
const toolInputs = new Map();
|
|
75
81
|
for (const message of messages) {
|
|
@@ -160,7 +166,11 @@ export async function compactNow(input) {
|
|
|
160
166
|
streamIdleTimeoutMs: input.streamIdleTimeoutMs,
|
|
161
167
|
instructions: input.instructions,
|
|
162
168
|
}));
|
|
163
|
-
const { messages, summary } = splice(preservedSystem, withRestoredContext(body, manager, input
|
|
169
|
+
const { messages, summary } = splice(preservedSystem, withRestoredContext(body, manager, input, [
|
|
170
|
+
...preservedSystem,
|
|
171
|
+
...retainedOlder,
|
|
172
|
+
...plan.recentMessages,
|
|
173
|
+
]), retainedOlder, plan.recentMessages, input.recoveryNote);
|
|
164
174
|
return publishManualCompaction(input, {
|
|
165
175
|
messages,
|
|
166
176
|
shed: input.messages.length - messages.length,
|
|
@@ -233,7 +243,11 @@ export async function compactRegion(input) {
|
|
|
233
243
|
// Same cross-run ownership as compactNow: a selected region has been
|
|
234
244
|
// replaced outside a turn, so its only surviving account is pinned.
|
|
235
245
|
const summary = {
|
|
236
|
-
...buildCompactionMessage(withRestoredContext(body, manager, input
|
|
246
|
+
...buildCompactionMessage(withRestoredContext(body, manager, input, [
|
|
247
|
+
...messages.slice(0, start),
|
|
248
|
+
...retainedSelected,
|
|
249
|
+
...messages.slice(end),
|
|
250
|
+
]), input.recoveryNote),
|
|
237
251
|
retain: true,
|
|
238
252
|
};
|
|
239
253
|
const out = [...messages.slice(0, start), summary, ...retainedSelected, ...messages.slice(end)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RenderedSkills } from './loaded-skills.js';
|
|
1
2
|
import type { WorkingStateManager } from './manager.js';
|
|
2
3
|
import type { WorkingState } from './types.js';
|
|
3
4
|
/**
|
|
@@ -45,6 +46,10 @@ export interface RestoreRenderOptions {
|
|
|
45
46
|
readonly contextWindowTokens?: number;
|
|
46
47
|
/** A host's own line to carry across, such as where its plan file is. */
|
|
47
48
|
readonly hostNote?: string;
|
|
49
|
+
/** Skills whose instructions are already whole in the messages that follow the summary; not shown again. */
|
|
50
|
+
readonly wholeSkills?: ReadonlySet<string>;
|
|
51
|
+
/** Told which skills were put back, which were cut and which were left out. */
|
|
52
|
+
readonly onSkills?: (rendered: RenderedSkills) => void;
|
|
48
53
|
}
|
|
49
54
|
/** The section to append after a summary, or `undefined` when there is nothing to put back. */
|
|
50
55
|
export declare function renderRestoredContext(state: WorkingState, options?: RestoreRenderOptions): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/compaction/restore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/compaction/restore.ts"],"names":[],"mappings":"AAGA,OAAO,EAKN,KAAK,cAAc,EAInB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;;;;;GASG;AAEH,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,IAAmB,CAAA;AAClD,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,OAAqB,CAAA;AACtD,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B,QAA4B,CAAA;AACpE,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,OAAQ,CAAA;AACxC,6CAA6C;AAC7C,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAChD,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAC7C,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,OAA4B,CAAA;AAkBpE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE;IACL,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAClC,GACC,IAAI,CA8BN;AASD,MAAM,WAAW,oBAAoB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,4GAA4G;IAC5G,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1C,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;CACtD;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,oBAAyB,GAChC,MAAM,GAAG,SAAS,CA0CpB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { resolve as resolvePath } from 'node:path';
|
|
2
2
|
import { CHARS_PER_TOKEN } from '../constants/limits.js';
|
|
3
|
+
import { CARRY_MAX_SKILLS, CARRY_SKILLS_TOTAL_TOKENS, CARRY_SKILLS_WINDOW_SHARE, CARRY_SKILL_TOKENS, isForkedSkillReport, renderLoadedSkills, skillResultBody, } from './loaded-skills.js';
|
|
4
|
+
import { isClearedToolResult } from './tool-result-editing.js';
|
|
3
5
|
/**
|
|
4
6
|
* What a compaction puts back after the summary.
|
|
5
7
|
*
|
|
@@ -11,11 +13,11 @@ import { CHARS_PER_TOKEN } from '../constants/limits.js';
|
|
|
11
13
|
* to free it.
|
|
12
14
|
*/
|
|
13
15
|
/** Skills restored per pass, most recent first. */
|
|
14
|
-
export const RESTORE_MAX_SKILLS =
|
|
16
|
+
export const RESTORE_MAX_SKILLS = CARRY_MAX_SKILLS;
|
|
15
17
|
/** Tokens of one restored skill. */
|
|
16
|
-
export const RESTORE_SKILL_TOKENS =
|
|
18
|
+
export const RESTORE_SKILL_TOKENS = CARRY_SKILL_TOKENS;
|
|
17
19
|
/** Tokens of all restored skills together. */
|
|
18
|
-
export const RESTORE_SKILLS_TOTAL_TOKENS =
|
|
20
|
+
export const RESTORE_SKILLS_TOTAL_TOKENS = CARRY_SKILLS_TOTAL_TOKENS;
|
|
19
21
|
/** Files restored per pass, most recent first. */
|
|
20
22
|
export const RESTORE_MAX_FILES = 5;
|
|
21
23
|
/** Tokens of one restored file. */
|
|
@@ -25,9 +27,8 @@ export const RESTORE_FILES_TOTAL_TOKENS = 50_000;
|
|
|
25
27
|
/** The share of the window all restored files may take. */
|
|
26
28
|
export const RESTORE_FILES_WINDOW_SHARE = 0.1;
|
|
27
29
|
/** The share of the window all restored skills may take. */
|
|
28
|
-
export const RESTORE_SKILLS_WINDOW_SHARE =
|
|
30
|
+
export const RESTORE_SKILLS_WINDOW_SHARE = CARRY_SKILLS_WINDOW_SHARE;
|
|
29
31
|
const CUT_MARKER = '\n… [cut to fit the restore budget]';
|
|
30
|
-
const SKILL_CONTINUATION = /\n\n\[More skill instructions remain\.[^\]]*\]/g;
|
|
31
32
|
function isInstructionPath(path) {
|
|
32
33
|
const normal = path.replace(/\\/g, '/');
|
|
33
34
|
const name = normal.slice(normal.lastIndexOf('/') + 1);
|
|
@@ -52,7 +53,13 @@ export function recordRestorable(manager, call) {
|
|
|
52
53
|
if (call.toolName === 'skill') {
|
|
53
54
|
if (!call.success || typeof input.name !== 'string')
|
|
54
55
|
return;
|
|
55
|
-
|
|
56
|
+
// A cleared result is a placeholder, not the instructions.
|
|
57
|
+
if (isClearedToolResult(call.output))
|
|
58
|
+
return;
|
|
59
|
+
// A delegated agent's report is not the skill's instructions.
|
|
60
|
+
if (isForkedSkillReport(call.output))
|
|
61
|
+
return;
|
|
62
|
+
manager.recordSkillBody(input.name, skillResultBody(call.output), typeof input.cursor === 'string' && input.cursor.length > 0);
|
|
56
63
|
return;
|
|
57
64
|
}
|
|
58
65
|
if (call.toolName === 'read') {
|
|
@@ -78,22 +85,15 @@ function fit(text, tokens) {
|
|
|
78
85
|
/** The section to append after a summary, or `undefined` when there is nothing to put back. */
|
|
79
86
|
export function renderRestoredContext(state, options = {}) {
|
|
80
87
|
const window = options.contextWindowTokens;
|
|
81
|
-
const skillsTotal = window === undefined
|
|
82
|
-
? RESTORE_SKILLS_TOTAL_TOKENS
|
|
83
|
-
: Math.min(RESTORE_SKILLS_TOTAL_TOKENS, Math.floor(window * RESTORE_SKILLS_WINDOW_SHARE));
|
|
84
88
|
const filesTotal = window === undefined
|
|
85
89
|
? RESTORE_FILES_TOTAL_TOKENS
|
|
86
90
|
: Math.min(RESTORE_FILES_TOTAL_TOKENS, Math.floor(window * RESTORE_FILES_WINDOW_SHARE));
|
|
87
91
|
const sections = [];
|
|
88
|
-
|
|
89
|
-
const skills =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const body = fit(skill.body, Math.min(RESTORE_SKILL_TOKENS, skillBudget));
|
|
94
|
-
skillBudget -= Math.ceil(body.length / CHARS_PER_TOKEN);
|
|
95
|
-
sections.push(`### Skill: ${skill.name}\n\n${body}`);
|
|
96
|
-
}
|
|
92
|
+
const toShow = (state.restorable?.skills ?? []).filter((skill) => !options.wholeSkills?.has(skill.name));
|
|
93
|
+
const skills = renderLoadedSkills(toShow, window === undefined ? {} : { contextWindowTokens: window });
|
|
94
|
+
options.onSkills?.(skills);
|
|
95
|
+
if (skills.text)
|
|
96
|
+
sections.push(`### Skills loaded earlier\n\n${skills.text}`);
|
|
97
97
|
let fileBudget = filesTotal;
|
|
98
98
|
let files = 0;
|
|
99
99
|
const candidates = [...(state.restorable?.files ?? [])].reverse();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/compaction/restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/compaction/restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export type SessionStreamEventType = TurnStreamEventType | 'iteration.started' |
|
|
|
48
48
|
*/
|
|
49
49
|
| 'compaction.completed'
|
|
50
50
|
/** Oversized tool results were emptied instead of the history summarized. */
|
|
51
|
-
| 'compaction.tool_results_cleared' | 'memory.consolidated' | 'memory.recalled' | 'background_job.exited' | 'monitor.event' | 'compaction.started' | 'session_log.degraded' | 'session_log.recovered' | 'compaction.failed'
|
|
51
|
+
| 'compaction.tool_results_cleared' | 'compaction.skills_carried' | 'memory.consolidated' | 'memory.recalled' | 'background_job.exited' | 'monitor.event' | 'compaction.started' | 'session_log.degraded' | 'session_log.recovered' | 'compaction.failed'
|
|
52
52
|
/** A guardrail refused or corrected the turn. */
|
|
53
53
|
| 'guardrail.triggered'
|
|
54
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/contracts/session/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8GAO1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAC/B,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB;AACvB;;;;;;;GAOG;GACD,yBAAyB;AAC3B;;;;GAIG;GACD,sBAAsB;AACxB,6EAA6E;GAC3E,iCAAiC,GACjC,qBAAqB,GACrB,iBAAiB,GACjB,uBAAuB,GACvB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB;AACrB,iDAAiD;GAC/C,qBAAqB;AACvB;;;GAGG;GACD,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB;AACvB;;;;GAIG;GACD,gBAAgB,GAChB,aAAa;AACf;;;;GAIG;GACD,mBAAmB;AACrB;;;;GAIG;GACD,eAAe,GACf,gBAAgB;AAClB,0EAA0E;GACxE,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,mBAAmB;AACrB;;;GAGG;GACD,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,uBAAuB,GACvB,uBAAuB,GACvB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,CAAA;AAEtB,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IAC1D,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,mBAAmB,CAAA;CACzB"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/contracts/session/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8GAO1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAC/B,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB;AACvB;;;;;;;GAOG;GACD,yBAAyB;AAC3B;;;;GAIG;GACD,sBAAsB;AACxB,6EAA6E;GAC3E,iCAAiC,GACjC,2BAA2B,GAC3B,qBAAqB,GACrB,iBAAiB,GACjB,uBAAuB,GACvB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB;AACrB,iDAAiD;GAC/C,qBAAqB;AACvB;;;GAGG;GACD,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB;AACvB;;;;GAIG;GACD,gBAAgB,GAChB,aAAa;AACf;;;;GAIG;GACD,mBAAmB;AACrB;;;;GAIG;GACD,eAAe,GACf,gBAAgB;AAClB,0EAA0E;GACxE,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,mBAAmB;AACrB;;;GAGG;GACD,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,uBAAuB,GACvB,uBAAuB,GACvB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,CAAA;AAEtB,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IAC1D,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,mBAAmB,CAAA;CACzB"}
|
|
@@ -6,11 +6,14 @@ export interface PhaseRecord {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Phase titles of one run. A title is the only grouping key: the same title
|
|
9
|
-
* is the same group.
|
|
9
|
+
* is the same group. A title matches a registered one exactly first; only when
|
|
10
|
+
* none matches exactly does it match one ignoring case (the first registered
|
|
11
|
+
* wins, and its spelling is kept). Two declared titles that differ only by
|
|
12
|
+
* case stay two phases. Indexes are 1-based first-seen order, declared titles
|
|
10
13
|
* first. `register` reports whether the title was announced just now.
|
|
11
14
|
*/
|
|
12
15
|
export declare class PhaseRegistry {
|
|
13
|
-
private readonly
|
|
16
|
+
private readonly records;
|
|
14
17
|
register(rawTitle: string, declared?: boolean): {
|
|
15
18
|
phase: PhaseRecord;
|
|
16
19
|
isNew: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/phases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,oBAAoB,EACpB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC1B;
|
|
1
|
+
{"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/phases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,oBAAoB,EACpB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC1B;AAqBD;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAE5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;IAapF,GAAG,IAAI,WAAW,EAAE;CAGpB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAQD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EACtC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,SAAS,cAAc,EAAE,GAC/B,oBAAoB,EAAE,CAgCxB"}
|
|
@@ -1,22 +1,46 @@
|
|
|
1
1
|
import { normalizePhaseTitle } from './meta.js';
|
|
2
|
+
/**
|
|
3
|
+
* The entry of `entries` a title belongs to: one with exactly that title
|
|
4
|
+
* first; only when there is none, the first one whose title matches ignoring
|
|
5
|
+
* case. Two entries that differ only by case therefore stay two, because each
|
|
6
|
+
* matches itself exactly.
|
|
7
|
+
*/
|
|
8
|
+
function matchTitle(entries, title) {
|
|
9
|
+
const lower = title.toLowerCase();
|
|
10
|
+
let loose;
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
if (entry.title === title)
|
|
13
|
+
return entry;
|
|
14
|
+
if (loose === undefined && entry.title.toLowerCase() === lower)
|
|
15
|
+
loose = entry;
|
|
16
|
+
}
|
|
17
|
+
return loose;
|
|
18
|
+
}
|
|
2
19
|
/**
|
|
3
20
|
* Phase titles of one run. A title is the only grouping key: the same title
|
|
4
|
-
* is the same group.
|
|
21
|
+
* is the same group. A title matches a registered one exactly first; only when
|
|
22
|
+
* none matches exactly does it match one ignoring case (the first registered
|
|
23
|
+
* wins, and its spelling is kept). Two declared titles that differ only by
|
|
24
|
+
* case stay two phases. Indexes are 1-based first-seen order, declared titles
|
|
5
25
|
* first. `register` reports whether the title was announced just now.
|
|
6
26
|
*/
|
|
7
27
|
export class PhaseRegistry {
|
|
8
|
-
|
|
28
|
+
records = [];
|
|
9
29
|
register(rawTitle, declared = false) {
|
|
10
30
|
const title = normalizePhaseTitle(rawTitle);
|
|
11
|
-
|
|
31
|
+
// A declared title is matched exactly only, so two declared titles that
|
|
32
|
+
// differ only by case each get their own phase.
|
|
33
|
+
const existing = declared
|
|
34
|
+
? this.records.find((record) => record.title === title)
|
|
35
|
+
: matchTitle(this.records, title);
|
|
12
36
|
if (existing)
|
|
13
37
|
return { phase: existing, isNew: false };
|
|
14
|
-
const phase = { index: this.
|
|
15
|
-
this.
|
|
38
|
+
const phase = { index: this.records.length + 1, title, declared };
|
|
39
|
+
this.records.push(phase);
|
|
16
40
|
return { phase, isNew: true };
|
|
17
41
|
}
|
|
18
42
|
all() {
|
|
19
|
-
return [...this.
|
|
43
|
+
return [...this.records];
|
|
20
44
|
}
|
|
21
45
|
}
|
|
22
46
|
function statusOf(total, done, failed) {
|
|
@@ -33,7 +57,7 @@ function statusOf(total, done, failed) {
|
|
|
33
57
|
* without a phase next to phased ones also land in "Agents", listed last.
|
|
34
58
|
*/
|
|
35
59
|
export function summarizeWorkflowPhases(declared, phases, agents) {
|
|
36
|
-
const
|
|
60
|
+
const named = declared.map((p) => ({ title: normalizePhaseTitle(p.title), detail: p.detail }));
|
|
37
61
|
const summarize = (index, title, members, extra) => {
|
|
38
62
|
const done = members.filter((a) => a.state === 'done').length;
|
|
39
63
|
const failed = members.filter((a) => a.state === 'error').length;
|
|
@@ -48,7 +72,7 @@ export function summarizeWorkflowPhases(declared, phases, agents) {
|
|
|
48
72
|
tokens: members.reduce((sum, a) => sum + a.tokens, 0),
|
|
49
73
|
};
|
|
50
74
|
};
|
|
51
|
-
const out = phases.map((p) => summarize(p.index, p.title, agents.filter((a) => a.phaseIndex === p.index),
|
|
75
|
+
const out = phases.map((p) => summarize(p.index, p.title, agents.filter((a) => a.phaseIndex === p.index), matchTitle(named, p.title)?.detail));
|
|
52
76
|
const ungrouped = agents.filter((a) => a.phaseIndex === undefined);
|
|
53
77
|
if (ungrouped.length > 0)
|
|
54
78
|
out.push(summarize(0, 'Agents', ungrouped));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phases.js","sourceRoot":"","sources":["../../../src/execution/workflow/phases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAc/C
|
|
1
|
+
{"version":3,"file":"phases.js","sourceRoot":"","sources":["../../../src/execution/workflow/phases.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CompactionConfig } from '../../../../config/runtime.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type Message } from '../../../../types/message/index.js';
|
|
3
3
|
import type { IterationContext } from './context.js';
|
|
4
4
|
export { isCompactionMessage } from '../../../../compaction/summary.js';
|
|
5
5
|
/** The selected request model owns the denominator, including overflow recovery. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/query/iteration/phases/compaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/query/iteration/phases/compaction.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAKrE,OAAO,EACN,KAAK,OAAO,EAGZ,MAAM,oCAAoC,CAAA;AAO3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAOpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,4EAOxD;AAuMD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC9E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,GAAG,UAAU,CAAA;CAC/B,CAQA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,MAAM,WAAW,qBAAqB;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CACzB;AAcD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC1B,gBAAgB,CAwBlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACpC,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,qBAA0B,GACjC,OAAO,CAAC,OAAO,CAAC,CAsClB;AASD,+CAA+C;AAC/C,eAAO,MAAM,2BAA2B,0CAAqC,CAAA;AAO7E,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,2DAA2D;AAC3D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAEpE;AAwDD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB1E;AAqMD,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolveContextWindow, resolveTriggerThreshold, } from '../../../../compaction/context-window.js';
|
|
2
2
|
import { findDanglingMessages } from '../../../../compaction/dangling.js';
|
|
3
|
+
import { LOADED_SKILLS_ENTRY_KEY, adoptableSkills, handledSkillNames, renderLoadedSkills, } from '../../../../compaction/loaded-skills.js';
|
|
3
4
|
import { replaceableSummaries, summarizeWithModel } from '../../../../compaction/model-summary.js';
|
|
4
5
|
import { DEFAULT_SOFT_TARGET, canShedSalienceWorkingSet, planCompaction, planSalienceWorkingSet, } from '../../../../compaction/plan.js';
|
|
5
6
|
import { createSlidingWindowReducer } from '../../../../compaction/reducer.js';
|
|
@@ -14,6 +15,7 @@ import { CHARS_PER_TOKEN } from '../../../../constants/limits.js';
|
|
|
14
15
|
import { NAMZU } from '../../../../constants/telemetry/index.js';
|
|
15
16
|
import { invariants } from '../../../../invariants/index.js';
|
|
16
17
|
import { resolveTaskModel } from '../../../../model-router/task-router.js';
|
|
18
|
+
import { createTurnContextEntry, turnContextEntries, } from '../../../../types/message/index.js';
|
|
17
19
|
import { applyLifecycleHookResults } from '../../plugin-hooks.js';
|
|
18
20
|
import { COMPACTION_REFILL_MESSAGE, compactionBreaker, estimateRefillTokens, } from './compaction-breaker.js';
|
|
19
21
|
import { isWorkingMemoryMessage } from './working-memory.js';
|
|
@@ -129,17 +131,66 @@ async function emitToolResultClear(ctx, plan) {
|
|
|
129
131
|
reliefWasEnough: plan.reliefWasEnough,
|
|
130
132
|
});
|
|
131
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Keep the skills this conversation loaded where the pass cannot cut them.
|
|
136
|
+
* Called before a pass edits the history: whatever the messages show of a
|
|
137
|
+
* skill now goes into the working state, which outlives the messages.
|
|
138
|
+
*/
|
|
139
|
+
function adoptLoadedSkills(ctx) {
|
|
140
|
+
ctx.workingStateManager?.adoptSkillBodies(adoptableSkills(ctx.recorder.messages));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* After a pass that cut or cleared history: if a loaded skill's instructions
|
|
144
|
+
* are no longer in it, say them again, as reference.
|
|
145
|
+
*
|
|
146
|
+
* The entry goes at the END of the history, after everything the pass left.
|
|
147
|
+
* A clear already rewrites the request from the first result it cut, so the
|
|
148
|
+
* cached start of the request ends no earlier than it did; putting the skills
|
|
149
|
+
* anywhere before that point would move it further forward. At the end it
|
|
150
|
+
* also reads as the latest guidance, and the entry is never edited after, so
|
|
151
|
+
* later requests start with it unchanged.
|
|
152
|
+
*/
|
|
153
|
+
async function carryLoadedSkills(ctx, contextWindowTokens) {
|
|
154
|
+
const manager = ctx.workingStateManager;
|
|
155
|
+
const loaded = manager?.getState().restorable?.skills;
|
|
156
|
+
if (!loaded || loaded.length === 0)
|
|
157
|
+
return;
|
|
158
|
+
const handled = handledSkillNames(ctx.recorder.messages);
|
|
159
|
+
const missing = loaded.filter((skill) => !handled.has(skill.name));
|
|
160
|
+
if (missing.length === 0)
|
|
161
|
+
return;
|
|
162
|
+
const rendered = renderLoadedSkills(missing, { contextWindowTokens });
|
|
163
|
+
if (!rendered.text)
|
|
164
|
+
return;
|
|
165
|
+
const earlier = turnContextEntries(ctx.recorder.messages, LOADED_SKILLS_ENTRY_KEY);
|
|
166
|
+
ctx.recorder.pushMessage(createTurnContextEntry(LOADED_SKILLS_ENTRY_KEY, rendered.text, new Date(), {
|
|
167
|
+
later: earlier.length > 0,
|
|
168
|
+
}));
|
|
169
|
+
await emitSkillsCarried(ctx, rendered);
|
|
170
|
+
}
|
|
171
|
+
async function emitSkillsCarried(ctx, rendered) {
|
|
172
|
+
await ctx.emitEvent?.({
|
|
173
|
+
type: 'compaction_skills_carried',
|
|
174
|
+
turnId: ctx.recorder.turnId,
|
|
175
|
+
iteration: ctx.recorder.currentIteration,
|
|
176
|
+
skills: [...rendered.carried],
|
|
177
|
+
cut: [...rendered.cut],
|
|
178
|
+
leftOut: [...rendered.left],
|
|
179
|
+
});
|
|
180
|
+
}
|
|
132
181
|
/** Install a clear-only pass and publish the state it established. */
|
|
133
182
|
async function commitToolResultClear(ctx, plan, contextWindowTokens, windowSource, reason) {
|
|
134
183
|
// A shorter replacement also removes evidence. Preserve its original
|
|
135
184
|
// content in the same archive used by whole-message compaction before
|
|
136
185
|
// changing the live history or publishing the clear.
|
|
137
186
|
await recordShed(ctx, [...ctx.recorder.messages], plan.messages, reason);
|
|
187
|
+
adoptLoadedSkills(ctx);
|
|
138
188
|
installMessages(ctx.recorder.messages, plan.messages);
|
|
139
189
|
// The provider counted the pre-edit prompt. Leaving that measurement live
|
|
140
190
|
// makes the next trigger compare the old prompt against the new history.
|
|
141
191
|
ctx.recorder.clearLastPromptTokens?.();
|
|
142
192
|
await emitToolResultClear(ctx, plan);
|
|
193
|
+
await carryLoadedSkills(ctx, contextWindowTokens);
|
|
143
194
|
await emitContextUsageSnapshot(ctx, estimateTokens(ctx), contextWindowTokens, windowSource);
|
|
144
195
|
// A host-requested pass is not the kernel's own relief of a full context,
|
|
145
196
|
// so it must not reset the breaker's failure streak.
|
|
@@ -940,6 +991,9 @@ async function runCompactionCheckInner(ctx, pass, options) {
|
|
|
940
991
|
}
|
|
941
992
|
// Skills the model loaded and files it read go back verbatim after the
|
|
942
993
|
// summary, with whatever the host wants carried across (its plan file).
|
|
994
|
+
// The skills come from the conversation as it stands, so a skill loaded in
|
|
995
|
+
// an earlier turn, or before a resume, is put back too.
|
|
996
|
+
adoptLoadedSkills(ctx);
|
|
943
997
|
let hostNote;
|
|
944
998
|
try {
|
|
945
999
|
hostNote = await ctx.postCompactionContext?.();
|
|
@@ -951,17 +1005,6 @@ async function runCompactionCheckInner(ctx, pass, options) {
|
|
|
951
1005
|
'exception.message': error instanceof Error ? error.message : String(error),
|
|
952
1006
|
});
|
|
953
1007
|
}
|
|
954
|
-
const restored = renderRestoredContext(manager.getState(), {
|
|
955
|
-
contextWindowTokens: budget,
|
|
956
|
-
...(hostNote ? { hostNote } : {}),
|
|
957
|
-
});
|
|
958
|
-
if (restored)
|
|
959
|
-
compactedContent = `${compactedContent}\n\n${restored}`;
|
|
960
|
-
// The pointer is only worth a line when both tools it names are mounted.
|
|
961
|
-
const mounted = new Set(ctx.tools?.listNames?.() ?? []);
|
|
962
|
-
const compactionMessage = buildCompactionMessage(compactedContent, mounted.has('search_conversation') && mounted.has('read_conversation')
|
|
963
|
-
? COMPACTION_RECOVERY_NOTE
|
|
964
|
-
: undefined);
|
|
965
1008
|
// Drop a replaceable PRIOR `[COMPACTED CONTEXT]` summary from this turn's
|
|
966
1009
|
// leading floor — `serializeState` is cumulative, so the new summary
|
|
967
1010
|
// supersedes it. A retained summary came from outside this manager's state
|
|
@@ -978,6 +1021,25 @@ async function runCompactionCheckInner(ctx, pass, options) {
|
|
|
978
1021
|
: messages
|
|
979
1022
|
.slice(systemMessages.length, keepStart)
|
|
980
1023
|
.filter((_, offset) => retained.has(systemMessages.length + offset));
|
|
1024
|
+
// A skill whose instructions are in what the pass keeps as it is, whole or
|
|
1025
|
+
// shown by an earlier pass, is not put back a second time.
|
|
1026
|
+
const wholeSkills = handledSkillNames([...preservedSystem, ...retainedOlder, ...recentMessages]);
|
|
1027
|
+
const putBack = {};
|
|
1028
|
+
const restored = renderRestoredContext(manager.getState(), {
|
|
1029
|
+
contextWindowTokens: budget,
|
|
1030
|
+
wholeSkills,
|
|
1031
|
+
onSkills: (rendered) => {
|
|
1032
|
+
putBack.rendered = rendered;
|
|
1033
|
+
},
|
|
1034
|
+
...(hostNote ? { hostNote } : {}),
|
|
1035
|
+
});
|
|
1036
|
+
if (restored)
|
|
1037
|
+
compactedContent = `${compactedContent}\n\n${restored}`;
|
|
1038
|
+
// The pointer is only worth a line when both tools it names are mounted.
|
|
1039
|
+
const mounted = new Set(ctx.tools?.listNames?.() ?? []);
|
|
1040
|
+
const compactionMessage = buildCompactionMessage(compactedContent, mounted.has('search_conversation') && mounted.has('read_conversation')
|
|
1041
|
+
? COMPACTION_RECOVERY_NOTE
|
|
1042
|
+
: undefined);
|
|
981
1043
|
const newMessages = [...preservedSystem, compactionMessage, ...retainedOlder, ...recentMessages];
|
|
982
1044
|
// OPAQUE survival guard: the pinned working-memory slot is a
|
|
983
1045
|
// leading system message, so it is kept in `preservedSystem` (the compaction
|
|
@@ -1070,6 +1132,9 @@ async function runCompactionCheckInner(ctx, pass, options) {
|
|
|
1070
1132
|
reachedResetThreshold: reachedReset,
|
|
1071
1133
|
});
|
|
1072
1134
|
await emitContextUsageSnapshot(ctx, newEstimate, budget, window.source);
|
|
1135
|
+
if (putBack.rendered && putBack.rendered.carried.length > 0) {
|
|
1136
|
+
await emitSkillsCarried(ctx, putBack.rendered);
|
|
1137
|
+
}
|
|
1073
1138
|
compactionBreaker(ctx)?.recordCompaction(ctx.recorder.currentIteration, beforeTokens, estimateRefillTokens(live));
|
|
1074
1139
|
}
|
|
1075
1140
|
//# sourceMappingURL=compaction.js.map
|