@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.
Files changed (59) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  3. package/dist/bridge/a2a/mapper.js +1 -0
  4. package/dist/bridge/a2a/mapper.js.map +1 -1
  5. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  6. package/dist/bridge/sse/mapper.js +9 -0
  7. package/dist/bridge/sse/mapper.js.map +1 -1
  8. package/dist/compaction/loaded-skills.d.ts +77 -0
  9. package/dist/compaction/loaded-skills.d.ts.map +1 -0
  10. package/dist/compaction/loaded-skills.js +203 -0
  11. package/dist/compaction/loaded-skills.js.map +1 -0
  12. package/dist/compaction/manager.d.ts +10 -0
  13. package/dist/compaction/manager.d.ts.map +1 -1
  14. package/dist/compaction/manager.js +20 -0
  15. package/dist/compaction/manager.js.map +1 -1
  16. package/dist/compaction/manual.d.ts.map +1 -1
  17. package/dist/compaction/manual.js +17 -3
  18. package/dist/compaction/manual.js.map +1 -1
  19. package/dist/compaction/restore.d.ts +5 -0
  20. package/dist/compaction/restore.d.ts.map +1 -1
  21. package/dist/compaction/restore.js +18 -18
  22. package/dist/compaction/restore.js.map +1 -1
  23. package/dist/contracts/session/api.d.ts +1 -1
  24. package/dist/contracts/session/api.d.ts.map +1 -1
  25. package/dist/execution/workflow/phases.d.ts +5 -2
  26. package/dist/execution/workflow/phases.d.ts.map +1 -1
  27. package/dist/execution/workflow/phases.js +32 -8
  28. package/dist/execution/workflow/phases.js.map +1 -1
  29. package/dist/runtime/query/iteration/phases/compaction.d.ts +1 -1
  30. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  31. package/dist/runtime/query/iteration/phases/compaction.js +76 -11
  32. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  33. package/dist/tools/builtins/skill.d.ts.map +1 -1
  34. package/dist/tools/builtins/skill.js +5 -0
  35. package/dist/tools/builtins/skill.js.map +1 -1
  36. package/dist/turn/reporter.d.ts.map +1 -1
  37. package/dist/turn/reporter.js +9 -0
  38. package/dist/turn/reporter.js.map +1 -1
  39. package/dist/types/session/events.d.ts +26 -3
  40. package/dist/types/session/events.d.ts.map +1 -1
  41. package/dist/types/session/events.js +4 -1
  42. package/dist/types/session/events.js.map +1 -1
  43. package/dist/types/session/records.d.ts.map +1 -1
  44. package/dist/types/session/records.js +1 -0
  45. package/dist/types/session/records.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/bridge/a2a/mapper.ts +1 -0
  48. package/src/bridge/sse/mapper.ts +10 -0
  49. package/src/compaction/loaded-skills.ts +245 -0
  50. package/src/compaction/manager.ts +24 -0
  51. package/src/compaction/manual.ts +20 -2
  52. package/src/compaction/restore.ts +33 -18
  53. package/src/contracts/session/api.ts +1 -0
  54. package/src/execution/workflow/phases.ts +34 -8
  55. package/src/runtime/query/iteration/phases/compaction.ts +102 -16
  56. package/src/tools/builtins/skill.ts +5 -0
  57. package/src/turn/reporter.ts +10 -0
  58. package/src/types/session/events.ts +27 -2
  59. 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), retainedOlder, plan.recentMessages, input.recoveryNote);
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), input.recoveryNote),
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;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;;;;;GASG;AAEH,mDAAmD;AACnD,eAAO,MAAM,kBAAkB,IAAI,CAAA;AACnC,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,OAAQ,CAAA;AACzC,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B,QAAS,CAAA;AACjD,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,OAAO,CAAA;AAmB/C;;;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,CA0BN;AASD,MAAM,WAAW,oBAAoB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,oBAAyB,GAChC,MAAM,GAAG,SAAS,CA6CpB"}
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 = 8;
16
+ export const RESTORE_MAX_SKILLS = CARRY_MAX_SKILLS;
15
17
  /** Tokens of one restored skill. */
16
- export const RESTORE_SKILL_TOKENS = 5_000;
18
+ export const RESTORE_SKILL_TOKENS = CARRY_SKILL_TOKENS;
17
19
  /** Tokens of all restored skills together. */
18
- export const RESTORE_SKILLS_TOTAL_TOKENS = 25_000;
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 = 0.05;
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
- manager.recordSkillBody(input.name, call.output.replace(SKILL_CONTINUATION, ''), typeof input.cursor === 'string' && input.cursor.length > 0);
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
- let skillBudget = skillsTotal;
89
- const skills = [...(state.restorable?.skills ?? [])].reverse();
90
- for (const skill of skills) {
91
- if (sections.length >= RESTORE_MAX_SKILLS || skillBudget <= 0)
92
- break;
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":"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"}
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. Indexes are 1-based first-seen order, declared titles
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 byTitle;
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;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IAEzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;IASpF,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
+ {"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. Indexes are 1-based first-seen order, declared titles
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
- byTitle = new Map();
28
+ records = [];
9
29
  register(rawTitle, declared = false) {
10
30
  const title = normalizePhaseTitle(rawTitle);
11
- const existing = this.byTitle.get(title);
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.byTitle.size + 1, title, declared };
15
- this.byTitle.set(title, phase);
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.byTitle.values()];
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 detail = new Map(declared.map((p) => [normalizePhaseTitle(p.title), p.detail]));
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), detail.get(p.title)));
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":"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"}
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 { Message } from '../../../../types/message/index.js';
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":"AA0BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAKrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAA;AAOjE,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;AA0ID;;;;;;;;;;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
+ {"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