@felan-ai/ext-session-compaction 0.1.3 → 0.2.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/NOTICE CHANGED
@@ -7,6 +7,13 @@ and the active-lineage recall design in @sting8k/pi-vcc 0.7.2, reviewed at
7
7
  https://github.com/sting8k/pi-vcc/tree/b1b8b3ad748e2c77e8a1da26dc384e58a5bb771f.
8
8
  No source code from either package is copied into this package.
9
9
 
10
+ The classifier method was also informed by the MIT-licensed
11
+ fast-jev-compaction repository at
12
+ https://github.com/tamaratran/fast-jev-compaction/tree/e3f262a7f4d42bd8dd32ced30d26176f7cb545b0
13
+ and pi-jev at
14
+ https://github.com/iefnaf/pi-jev/tree/77516ee1a51e98958430e24a9a82d58173e3422a.
15
+ No source code from either package is copied into this package.
16
+
10
17
  This package uses TypeBox 1.1.38 from
11
18
  https://github.com/sinclairzx81/typebox, licensed under the MIT License.
12
19
  Copyright (c) 2017-2026 Haydn Paterson.
package/README.md CHANGED
@@ -3,18 +3,32 @@
3
3
  Portable, bounded verified session compaction and active-lineage recall for
4
4
  Felan hosts.
5
5
 
6
- When enabled, the extension attempts one summary through Pi's
7
- `session_before_compact` hook. By default it inherits the active session model.
8
- Evidence is priority-packed within bounded lanes. A split-turn lane preserves
9
- the actual user input, assistant text and reasoning, and normalized tool
10
- outcomes in chronological order. Successful file reads retain their path rather
11
- than file contents; writes and patches retain affected paths and status rather
12
- than payloads; commands retain bounded output; and failure text remains high
13
- priority. Protected continuity and current decisions/state take precedence over
14
- repetitive successful tool output.
6
+ When enabled, the extension uses classifier compaction by default through Pi's
7
+ `session_before_compact` hook when the runtime exposes a classifier. Without
8
+ that optional capability it uses the verified summary method, which inherits
9
+ the active session model by default. Evidence is priority-packed within bounded
10
+ lanes. A split-turn lane preserves the actual user input, assistant text and
11
+ reasoning, and normalized tool outcomes in chronological order. Successful file
12
+ reads retain their path rather than file contents; writes and patches retain
13
+ affected paths and status rather than payloads; commands retain bounded output;
14
+ and failure text remains high priority. Protected continuity and current
15
+ decisions/state take precedence over repetitive successful tool output.
15
16
  The `sessionCompaction.model` setting may instead select `xhigh`, `high`,
16
17
  `medium`, or `low`; tiers use the host's allowed models and prefer the active
17
- provider/family. An unavailable tier falls back to inherit. Pi remains the owner of compaction preparation,
18
+ provider/family. An unavailable tier falls back to inherit.
19
+ `sessionCompaction.method` defaults to `classifier`, which selectively retains
20
+ the prepared transcript when the optional runtime classifier is available and
21
+ otherwise uses the verified summary method. Set it to `summary` to disable
22
+ classification explicitly. Classifier compaction does not make a summary-model
23
+ request, but it does send bounded compaction evidence to the host-injected
24
+ classifier's provider. All eligible bulky
25
+ `observation`, `command`, and `test` results admitted by the central evidence
26
+ bounds are classified (keep exact contents, keep outcome only, or drop as
27
+ obsolete). Agent Core may partition the questions across provider requests.
28
+ Commands and tests may be shortened but not dropped. Classifier failure returns
29
+ control to native Pi. Classifier traces go to `pi.runtime.logger`; they are not
30
+ written to session JSONL.
31
+ Pi remains the owner of compaction preparation,
18
32
  cut points, retained tails, session trees, overflow recovery, and persistence.
19
33
  If the extension is absent or a recoverable generation/validation failure occurs
20
34
  before acceptance, Pi's native summarizer remains in control. A failure after Pi
@@ -26,12 +40,21 @@ the model, or returned by `session_recall`; it records delegation, not native
26
40
  compaction success. User cancellation is not reported as a fallback.
27
41
 
28
42
  The split-turn narrative is mandatory, while lower-priority tool records may be
29
- omitted to fit its bounded lane. If the narrative or model-aware prompt budget
30
- cannot fit safely, the extension returns no custom result before making a model
31
- request and native Pi compaction takes over. Generated summaries must contain
32
- the canonical checkpoint headings and split-turn headings when applicable;
33
- unsupported completion or verification claims are rejected. These safeguards
34
- improve recoverability but do not prove semantic completeness.
43
+ omitted by the central extraction bounds. Summary output uses Pi's prepared
44
+ reserve-token budget and the selected model's limits; prompt fit uses the model
45
+ context window. Classifier output is not rejected merely for exceeding an
46
+ extension-defined byte size. If required evidence or a model request cannot fit
47
+ safely, the extension returns no custom result before acceptance and native Pi
48
+ compaction takes over. The prompt still asks for canonical checkpoint headings,
49
+ but a non-empty summary is accepted even if those headings are missing.
50
+ Unsupported completion or verification claims are still rejected. These
51
+ safeguards do not prove semantic completeness.
52
+
53
+ The extension does not add a fixed summary-result, prompt-byte, summary-token,
54
+ or wall-clock ceiling. Pi owns compaction reserve/tail preparation, the active
55
+ model owns context and output capacity, and the central evidence bounds keep
56
+ untrusted extraction and protected continuity finite. Jev transport batching
57
+ and its request/response safety envelope belong to Agent Core.
35
58
 
36
59
  The package also provides bounded `session_recall` over the current
37
60
  `SessionManager.getBranch()` lineage. It never reads session files directly,
@@ -48,7 +71,7 @@ The local configuration is:
48
71
  ```json
49
72
  {
50
73
  "extensionConfig": {
51
- "sessionCompaction": { "model": "inherit" }
74
+ "sessionCompaction": { "method": "classifier", "model": "inherit" }
52
75
  }
53
76
  }
54
77
  ```
@@ -0,0 +1,18 @@
1
+ export declare const COMPACTION_CHOICE_CRITERIA: {
2
+ readonly exact_contents: "Specific values in this output (paths, names, numbers, error text, code) are needed to continue or to answer follow-up questions, and no later assistant message, edit, or checkpoint records them.";
3
+ readonly outcome_only: "It matters that this was done and roughly what it found, so the agent does not repeat or contradict it, but the exact contents are not needed.";
4
+ readonly obsolete: "It was acted on and its outcome is recorded elsewhere, or a later change superseded it, or it is unrelated to the goal. Nothing is lost if it disappears.";
5
+ };
6
+ export type CompactionClassifierChoice = keyof typeof COMPACTION_CHOICE_CRITERIA;
7
+ export interface CompactionClassifierQuestion {
8
+ readonly type: 'choice';
9
+ readonly instructions: string;
10
+ readonly criteria: typeof COMPACTION_CHOICE_CRITERIA;
11
+ }
12
+ export interface CompactionClassifierChoiceAnswer {
13
+ readonly type: 'choice';
14
+ readonly choice: CompactionClassifierChoice;
15
+ readonly probabilities?: Readonly<Partial<Record<CompactionClassifierChoice, number>>>;
16
+ readonly confidence?: number;
17
+ }
18
+ //# sourceMappingURL=classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../src/classifier.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B;;;;CAO7B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,0BAA0B,CAAC;AAEjF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;CACtD;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,6 @@
1
+ export const COMPACTION_CHOICE_CRITERIA = {
2
+ exact_contents: 'Specific values in this output (paths, names, numbers, error text, code) are needed to continue or to answer follow-up questions, and no later assistant message, edit, or checkpoint records them.',
3
+ outcome_only: 'It matters that this was done and roughly what it found, so the agent does not repeat or contradict it, but the exact contents are not needed.',
4
+ obsolete: 'It was acted on and its outcome is recorded elsewhere, or a later change superseded it, or it is unrelated to the goal. Nothing is lost if it disappears.',
5
+ };
6
+ //# sourceMappingURL=classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../src/classifier.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc,EACZ,qMAAqM;IACvM,YAAY,EACV,gJAAgJ;IAClJ,QAAQ,EACN,2JAA2J;CACrJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type AssistantMessage, type Context, type ExtensionContext, type FelanExtension, type Model } from '@felan-ai/agent-core';
2
2
  import { type SessionCompactionDetailsV1 } from './internal/contracts.js';
3
- import type { SessionCompactionModel } from './config.js';
3
+ import type { SessionCompactionMethod, SessionCompactionModel } from './config.js';
4
+ import { type EvidencePruneReport } from './prune.js';
4
5
  export interface SessionCompactionDetails extends SessionCompactionDetailsV1 {
5
6
  readonly attemptId: string;
6
7
  readonly sessionId: string;
@@ -9,6 +10,8 @@ export interface SessionCompactionDetails extends SessionCompactionDetailsV1 {
9
10
  readonly requestedModel: SessionCompactionModel;
10
11
  readonly selectedModel: string;
11
12
  readonly modelFallback?: 'inherit';
13
+ readonly method?: SessionCompactionMethod;
14
+ readonly prune?: EvidencePruneReport;
12
15
  }
13
16
  export interface CompactionExtensionOptions {
14
17
  readonly complete?: (model: Model<any>, context: Context, options: Record<string, unknown>, ctx: ExtensionContext) => Promise<AssistantMessage>;
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AA2B1D,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,0BAA+B,GACvC,cAAc,CAyIhB;AA+JD,eAAO,MAAM,yBAAyB,iDAA4B,CAAC"}
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEnB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAA0C,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAqB9F,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC;AAED,wBAAgB,gCAAgC,CAC9C,OAAO,GAAE,0BAA+B,GACvC,cAAc,CA+LhB;AAgND,eAAO,MAAM,yBAAyB,iDAA4B,CAAC"}
@@ -6,12 +6,7 @@ import { prepareEvidenceSpan } from './internal/prepared-span.js';
6
6
  import { renderSplitTurnPrefix } from './internal/split-prefix.js';
7
7
  import { FALLBACK_DIAGNOSTIC_CUSTOM_TYPE, } from './internal/contracts.js';
8
8
  import { createFallbackDiagnostic, fallbackDiagnosticText } from './internal/fallback-diagnostic.js';
9
- const MAX_PROMPT_BYTES = 96 * 1_024;
10
- const MAX_SUMMARY_BYTES = 24 * 1_024;
11
- const MAX_CONTINUITY_BYTES = 16 * 1_024;
12
- const MAX_SPLIT_PREFIX_BYTES = 24 * 1_024;
13
- const MAX_TOKENS = 8_192;
14
- const TIMEOUT_MS = 45_000;
9
+ import { pruneEvidence } from './prune.js';
15
10
  const SYSTEM_PROMPT = [
16
11
  'You are a session checkpoint summarizer.',
17
12
  'Summarize the supplied historical evidence so another agent can continue the work.',
@@ -24,6 +19,7 @@ const SYSTEM_PROMPT = [
24
19
  export function createSessionCompactionExtension(options = {}) {
25
20
  return (pi) => {
26
21
  let pending;
22
+ let prune = { status: 'off' };
27
23
  const clear = () => { pending = undefined; };
28
24
  const fallback = (event, ctx, reason, details = {}, selectedModel) => {
29
25
  if (event.signal.aborted)
@@ -36,6 +32,7 @@ export function createSessionCompactionExtension(options = {}) {
36
32
  willRetry: event.willRetry,
37
33
  requestedModel: configuredModel(pi.config?.model),
38
34
  ...(selectedModel ? { selectedModel: modelReference(selectedModel) } : {}),
35
+ prune,
39
36
  ...details,
40
37
  });
41
38
  try {
@@ -50,8 +47,64 @@ export function createSessionCompactionExtension(options = {}) {
50
47
  };
51
48
  pi.on('session_before_compact', async (event, ctx) => {
52
49
  clear();
50
+ const classifier = pi.runtime.classifier;
51
+ prune = { status: 'off' };
53
52
  if (event.signal.aborted)
54
53
  return { cancel: true };
54
+ if (configuredMethod(pi.config?.method) === 'classifier' && classifier) {
55
+ const span = prepareEvidenceSpan({ preparation: event.preparation, branchEntries: event.branchEntries });
56
+ try {
57
+ const pruned = await pruneEvidence(extractEvidence(span), span, classifier, {
58
+ trigger: event.reason,
59
+ ...(event.customInstructions === undefined ? {} : { customInstructions: event.customInstructions }),
60
+ ...(event.preparation.previousSummary === undefined ? {} : { previousSummary: event.preparation.previousSummary }),
61
+ signal: event.signal,
62
+ });
63
+ if (event.signal.aborted)
64
+ return { cancel: true };
65
+ prune = pruned.report;
66
+ logPrune(pi, ctx.sessionManager.getSessionId(), pruned.debug);
67
+ if (pruned.report.status === 'skipped' && pruned.report.reason === 'classifier-failed') {
68
+ return fallback(event, ctx, 'model-request-failed');
69
+ }
70
+ const summary = buildClassifierSummary(event, span, pruned.evidence);
71
+ if (summary === undefined) {
72
+ return fallback(event, ctx, 'prompt-preparation-failed');
73
+ }
74
+ const attemptId = uuidv7();
75
+ pending = {
76
+ id: attemptId,
77
+ sessionId: ctx.sessionManager.getSessionId(),
78
+ firstKeptEntryId: event.preparation.firstKeptEntryId,
79
+ reason: event.reason,
80
+ willRetry: event.willRetry,
81
+ summary,
82
+ };
83
+ const details = {
84
+ ...createCompactionDetails(mergeContinuity(undefined, pruned.evidence)),
85
+ attemptId,
86
+ sessionId: pending.sessionId,
87
+ reason: event.reason,
88
+ willRetry: event.willRetry,
89
+ requestedModel: 'inherit',
90
+ selectedModel: classifierModel(pruned.report),
91
+ method: 'classifier',
92
+ prune,
93
+ };
94
+ return { compaction: {
95
+ summary,
96
+ firstKeptEntryId: event.preparation.firstKeptEntryId,
97
+ tokensBefore: event.preparation.tokensBefore,
98
+ details,
99
+ } };
100
+ }
101
+ catch (error) {
102
+ if (event.signal.aborted)
103
+ return { cancel: true };
104
+ prune = { status: 'skipped', reason: 'classifier-failed' };
105
+ return fallback(event, ctx, 'model-request-failed', { errorMessage: error });
106
+ }
107
+ }
55
108
  const modelSelection = resolveModel(ctx, configuredModel(pi.config?.model));
56
109
  if (!modelSelection)
57
110
  return fallback(event, ctx, 'model-unavailable');
@@ -59,19 +112,19 @@ export function createSessionCompactionExtension(options = {}) {
59
112
  preparation: event.preparation,
60
113
  branchEntries: event.branchEntries,
61
114
  });
62
- const evidence = extractEvidence(span);
115
+ let evidence = extractEvidence(span);
63
116
  const prior = latestContinuity(event.branchEntries);
64
117
  const continuity = mergeContinuity(prior, evidence);
65
- const prompt = buildPrompt(event, span, evidence, prior ? renderContinuity(prior, MAX_CONTINUITY_BYTES) : '', modelSelection.model);
118
+ const prompt = buildPrompt(event, span, evidence, prior ? renderContinuity(prior, DEFAULT_EXTRACTION_BOUNDS.maxContinuityBytes) : '', modelSelection.model, event.preparation);
66
119
  if (prompt === undefined)
67
120
  return fallback(event, ctx, 'prompt-budget-exceeded', {}, modelSelection.model);
68
121
  const attemptId = uuidv7();
69
- const signal = AbortSignal.any([event.signal, AbortSignal.timeout(TIMEOUT_MS)]);
122
+ const signal = event.signal;
70
123
  let response;
71
124
  try {
72
125
  response = options.complete
73
- ? await options.complete(modelSelection.model, summaryContext(prompt), completionOptions(ctx, modelSelection.model, attemptId, signal), ctx)
74
- : await ctx.modelRegistry.complete(modelSelection.model, summaryContext(prompt), completionOptions(ctx, modelSelection.model, attemptId, signal));
126
+ ? await options.complete(modelSelection.model, summaryContext(prompt), completionOptions(ctx, modelSelection.model, attemptId, signal, summaryOutputTokens(event.preparation, modelSelection.model)), ctx)
127
+ : await ctx.modelRegistry.complete(modelSelection.model, summaryContext(prompt), completionOptions(ctx, modelSelection.model, attemptId, signal, summaryOutputTokens(event.preparation, modelSelection.model)));
75
128
  }
76
129
  catch (error) {
77
130
  if (event.signal.aborted)
@@ -98,19 +151,15 @@ export function createSessionCompactionExtension(options = {}) {
98
151
  .map((part) => part.text)
99
152
  .join('\n')
100
153
  .trim();
101
- if (!isCanonicalSummary(rawSummary, event.preparation.turnPrefixMessages.length > 0))
154
+ if (!rawSummary)
102
155
  return fallback(event, ctx, 'model-response-invalid', {
103
- detail: 'required summary headings or format missing',
156
+ detail: 'empty summary',
104
157
  }, modelSelection.model);
105
158
  if (hasUnsupportedClaims(rawSummary, evidence))
106
159
  return fallback(event, ctx, 'model-response-unsupported', {
107
160
  detail: 'unsupported completion claim',
108
161
  }, modelSelection.model);
109
162
  const summary = appendContinuity(rawSummary, continuity);
110
- if (byteLength(summary) > MAX_SUMMARY_BYTES)
111
- return fallback(event, ctx, 'summary-budget-exceeded', {
112
- detail: `summary exceeds ${MAX_SUMMARY_BYTES} bytes`,
113
- }, modelSelection.model);
114
163
  pending = {
115
164
  id: attemptId,
116
165
  sessionId: ctx.sessionManager.getSessionId(),
@@ -128,6 +177,8 @@ export function createSessionCompactionExtension(options = {}) {
128
177
  requestedModel: modelSelection.requested,
129
178
  selectedModel: modelReference(modelSelection.model),
130
179
  ...(modelSelection.fallback === undefined ? {} : { modelFallback: modelSelection.fallback }),
180
+ method: 'summary',
181
+ prune,
131
182
  };
132
183
  return {
133
184
  compaction: {
@@ -171,7 +222,7 @@ function latestContinuity(entries) {
171
222
  }
172
223
  return undefined;
173
224
  }
174
- function buildPrompt(event, span, evidence, continuity, model) {
225
+ function buildPrompt(event, span, evidence, continuity, model, preparation) {
175
226
  const prefixSourceIds = new Set(span.sources
176
227
  .filter((source) => source.section === 'turn_prefix')
177
228
  .map((source) => source.sourceId));
@@ -179,7 +230,7 @@ function buildPrompt(event, span, evidence, continuity, model) {
179
230
  .filter((item) => !prefixSourceIds.has(item.sourceId))
180
231
  .map((item) => `[${item.provenance}/${item.kind}/${item.status} source=${item.sourceId}] ${item.text}`)
181
232
  .join('\n');
182
- const prefix = renderSplitTurnPrefix(span, evidence, MAX_SPLIT_PREFIX_BYTES, event.preparation.turnPrefixMessages.length);
233
+ const prefix = renderSplitTurnPrefix(span, evidence, DEFAULT_EXTRACTION_BOUNDS.maxEvidenceBytes, event.preparation.turnPrefixMessages.length);
183
234
  if (event.preparation.turnPrefixMessages.length > 0 && prefix === undefined)
184
235
  return undefined;
185
236
  const customFocus = event.customInstructions === undefined
@@ -187,9 +238,7 @@ function buildPrompt(event, span, evidence, continuity, model) {
187
238
  : sanitizeText(event.customInstructions, 4_096).text;
188
239
  let previousSummary = '(none)';
189
240
  if (event.preparation.previousSummary !== undefined) {
190
- const sanitized = sanitizeText(event.preparation.previousSummary, MAX_SUMMARY_BYTES);
191
- if (sanitized.omittedBytes > 0)
192
- return undefined;
241
+ const sanitized = sanitizeText(event.preparation.previousSummary, DEFAULT_EXTRACTION_BOUNDS.maxEvidenceBytes);
193
242
  previousSummary = sanitized.text || '(none)';
194
243
  }
195
244
  const prompt = [
@@ -215,11 +264,9 @@ function buildPrompt(event, span, evidence, continuity, model) {
215
264
  ] : []),
216
265
  ...(customFocus ? [`<custom-focus>${customFocus}</custom-focus>`] : []),
217
266
  ].join('\n');
218
- if (byteLength(prompt) > MAX_PROMPT_BYTES)
219
- return undefined;
220
- const outputTokens = Math.min(MAX_TOKENS, model.maxTokens || MAX_TOKENS);
267
+ const outputTokens = summaryOutputTokens(preparation, model);
221
268
  if (Number.isFinite(model.contextWindow) && model.contextWindow > 0
222
- && Math.ceil(byteLength(prompt) / 4) + outputTokens + 1_024 > model.contextWindow)
269
+ && Math.ceil(byteLength(prompt) / 4) + outputTokens > model.contextWindow)
223
270
  return undefined;
224
271
  return prompt;
225
272
  }
@@ -229,10 +276,10 @@ function summaryContext(prompt) {
229
276
  messages: [{ role: 'user', content: [{ type: 'text', text: prompt }], timestamp: Date.now() }],
230
277
  };
231
278
  }
232
- function completionOptions(ctx, model, sessionId, signal) {
279
+ function completionOptions(ctx, model, sessionId, signal, maxTokens) {
233
280
  return {
234
281
  signal,
235
- maxTokens: Math.min(MAX_TOKENS, model.maxTokens || MAX_TOKENS),
282
+ maxTokens,
236
283
  maxRetries: 0,
237
284
  cacheRetention: 'none',
238
285
  sessionId,
@@ -246,6 +293,41 @@ function configuredModel(value) {
246
293
  ? value
247
294
  : 'inherit';
248
295
  }
296
+ function summaryOutputTokens(preparation, model) {
297
+ const reserveTokens = preparation.settings?.reserveTokens ?? 16_384;
298
+ return Math.min(Math.floor(0.8 * Math.max(1, reserveTokens)), model.maxTokens || Number.POSITIVE_INFINITY);
299
+ }
300
+ function configuredMethod(value) {
301
+ return value === 'summary' ? 'summary' : 'classifier';
302
+ }
303
+ function classifierModel(report) {
304
+ return report.status === 'ran' && report.classifier?.provider && report.classifier.model
305
+ ? `${report.classifier.provider}/${report.classifier.model}`
306
+ : 'classifier';
307
+ }
308
+ function buildClassifierSummary(event, span, evidence) {
309
+ const prefixIds = new Set(span.sources.filter((source) => source.section === 'turn_prefix').map((source) => source.sourceId));
310
+ const prefix = event.preparation.turnPrefixMessages.length > 0
311
+ ? renderSplitTurnPrefix(span, evidence, DEFAULT_EXTRACTION_BOUNDS.maxEvidenceBytes, event.preparation.turnPrefixMessages.length)
312
+ : undefined;
313
+ if (event.preparation.turnPrefixMessages.length > 0 && prefix === undefined)
314
+ return undefined;
315
+ const history = evidence.items
316
+ .filter((item) => !prefixIds.has(item.sourceId))
317
+ .map((item) => `[${item.provenance}/${item.kind}/${item.status} source=${item.sourceId}] ${item.text}`)
318
+ .join('\n');
319
+ const previous = event.preparation.previousSummary === undefined
320
+ ? ''
321
+ : sanitizeText(event.preparation.previousSummary, DEFAULT_EXTRACTION_BOUNDS.maxEvidenceBytes).text;
322
+ return [
323
+ previous ? `<previous-summary>\n${previous}\n</previous-summary>` : '',
324
+ '<classifier-compacted-conversation>',
325
+ 'Historical conversation retained verbatim where useful; obsolete tool evidence was removed or shortened by a classifier.',
326
+ history || '(no historical evidence)',
327
+ ...(prefix === undefined ? [] : ['<split-turn-prefix>', prefix, '</split-turn-prefix>']),
328
+ '</classifier-compacted-conversation>',
329
+ ].filter(Boolean).join('\n');
330
+ }
249
331
  function resolveModel(ctx, requested) {
250
332
  const active = ctx.model;
251
333
  if (!active)
@@ -265,17 +347,9 @@ function modelReference(model) {
265
347
  return `${model.provider}/${model.id}`;
266
348
  }
267
349
  function appendContinuity(summary, continuity) {
268
- const rendered = renderContinuity(continuity, MAX_CONTINUITY_BYTES);
350
+ const rendered = renderContinuity(continuity, DEFAULT_EXTRACTION_BOUNDS.maxContinuityBytes);
269
351
  return rendered ? `${summary}\n\n## Protected Continuity\n${rendered}` : summary;
270
352
  }
271
- function isCanonicalSummary(value, splitTurn) {
272
- return value.length > 0
273
- && ['## Goal', '## Constraints & Preferences', '## Progress', '## Key Decisions', '## Next Steps', '## Critical Context']
274
- .every((heading) => value.includes(heading))
275
- && (!splitTurn || ['**Turn Context (split turn):**', '## Original Request', '## Early Progress', '## Context for Suffix']
276
- .every((heading) => value.includes(heading)))
277
- && !/```(?:bash|sh|shell)\b/iu.test(value);
278
- }
279
353
  function hasUnsupportedClaims(value, evidence) {
280
354
  if (!/\b(?:tests?|verification|deployment|publication|published|completed)\b.{0,40}\b(?:passed|successful|complete|completed|deployed|published)\b/iu.test(value))
281
355
  return false;
@@ -297,5 +371,16 @@ function byteLength(value) {
297
371
  function isRecord(value) {
298
372
  return typeof value === 'object' && value !== null && !Array.isArray(value);
299
373
  }
374
+ function logPrune(pi, sessionId, event) {
375
+ try {
376
+ pi.runtime.logger.child({ component: 'session-compaction' }).debug({
377
+ sessionId,
378
+ ...event,
379
+ }, 'session compaction prune');
380
+ }
381
+ catch {
382
+ /* debug must not affect compaction */
383
+ }
384
+ }
300
385
  export const SESSION_COMPACTION_BOUNDS = DEFAULT_EXTRACTION_BOUNDS;
301
386
  //# sourceMappingURL=compaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../src/compaction.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  export declare const SESSION_COMPACTION_MODELS: readonly ["inherit", "xhigh", "high", "medium", "low"];
2
+ export declare const SESSION_COMPACTION_METHODS: readonly ["summary", "classifier"];
2
3
  export type SessionCompactionModel = (typeof SESSION_COMPACTION_MODELS)[number];
4
+ export type SessionCompactionMethod = (typeof SESSION_COMPACTION_METHODS)[number];
3
5
  export interface SessionCompactionConfig {
6
+ readonly method: SessionCompactionMethod;
4
7
  readonly model: SessionCompactionModel;
5
8
  }
6
9
  export declare const DEFAULT_SESSION_COMPACTION_CONFIG: SessionCompactionConfig;
7
10
  export declare const SESSION_COMPACTION_CONFIG: import("@felan-ai/agent-core").ExtensionConfigDefinition<{
11
+ readonly method: import("@felan-ai/agent-core").ExtensionConfigField<"summary" | "classifier">;
8
12
  readonly model: import("@felan-ai/agent-core").ExtensionConfigField<"inherit" | "xhigh" | "high" | "medium" | "low">;
9
13
  }>;
10
14
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,wDAAuC,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AAED,eAAO,MAAM,iCAAiC,EAAE,uBAE/C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;EAUpC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,wDAAuC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,oCAAqC,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;CACxC;AAED,eAAO,MAAM,iCAAiC,EAAE,uBAG/C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;EAepC,CAAC"}
package/dist/config.js CHANGED
@@ -1,12 +1,19 @@
1
1
  import { MODEL_TIERS, configField, defineExtensionConfig, } from '@felan-ai/agent-core';
2
2
  export const SESSION_COMPACTION_MODELS = ['inherit', ...MODEL_TIERS];
3
+ export const SESSION_COMPACTION_METHODS = ['summary', 'classifier'];
3
4
  export const DEFAULT_SESSION_COMPACTION_CONFIG = {
5
+ method: 'classifier',
4
6
  model: 'inherit',
5
7
  };
6
8
  export const SESSION_COMPACTION_CONFIG = defineExtensionConfig({
7
9
  id: 'sessionCompaction',
8
10
  title: 'Session Compaction',
9
11
  fields: {
12
+ method: configField.enum(SESSION_COMPACTION_METHODS, {
13
+ default: DEFAULT_SESSION_COMPACTION_CONFIG.method,
14
+ label: 'Method',
15
+ description: 'Classifier selectively retains the prepared transcript when available; summary disables classification',
16
+ }),
10
17
  model: configField.enum(SESSION_COMPACTION_MODELS, {
11
18
  default: DEFAULT_SESSION_COMPACTION_CONFIG.model,
12
19
  label: 'Summary model',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAS,EAAE,GAAG,WAAW,CAAU,CAAC;AAQ9E,MAAM,CAAC,MAAM,iCAAiC,GAA4B;IACxE,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;IAC7D,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,oBAAoB;IAC3B,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjD,OAAO,EAAE,iCAAiC,CAAC,KAAK;YAChD,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,0EAA0E;SACxF,CAAC;KACH;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAS,EAAE,GAAG,WAAW,CAAU,CAAC;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU,CAAC;AAU7E,MAAM,CAAC,MAAM,iCAAiC,GAA4B;IACxE,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;IAC7D,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,oBAAoB;IAC3B,MAAM,EAAE;QACN,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACnD,OAAO,EAAE,iCAAiC,CAAC,MAAM;YACjD,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,wGAAwG;SACtH,CAAC;QACF,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjD,OAAO,EAAE,iCAAiC,CAAC,KAAK;YAChD,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,0EAA0E;SACxF,CAAC;KACH;CACF,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  import { type FelanExtension } from '@felan-ai/agent-core';
2
2
  export { createSessionCompactionExtension, SESSION_COMPACTION_BOUNDS } from './compaction.js';
3
3
  export { registerSessionRecall } from './recall.js';
4
- export { DEFAULT_SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_MODELS, type SessionCompactionConfig, type SessionCompactionModel, } from './config.js';
4
+ export { DEFAULT_SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_MODELS, SESSION_COMPACTION_METHODS, type SessionCompactionConfig, type SessionCompactionMethod, type SessionCompactionModel, } from './config.js';
5
+ export { COMPACTION_CHOICE_CRITERIA, } from './classifier.js';
6
+ export type { CompactionClassifierChoice, CompactionClassifierChoiceAnswer, CompactionClassifierQuestion, } from './classifier.js';
7
+ export type { EvidencePruneAction, EvidencePruneContext, EvidencePruneDebug, EvidencePruneDecision, EvidencePruneLeftover, EvidencePruneLeftoverReason, EvidencePruneReport, EvidencePruneSkipReason, EvidencePruneTrigger, } from './prune.js';
5
8
  export * from './internal/contracts.js';
6
9
  export { createFallbackDiagnostic, fallbackDiagnosticBytes, fallbackDiagnosticText } from './internal/fallback-diagnostic.js';
7
10
  declare const sessionCompactionExtension: FelanExtension;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE9H,QAAA,MAAM,0BAA0B,EAAE,cAGjC,CAAC;AAIF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE9H,QAAA,MAAM,0BAA0B,EAAE,cAGjC,CAAC;AAIF,eAAe,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,8 @@ import { associateExtensionConfig } from '@felan-ai/agent-core';
4
4
  import { SESSION_COMPACTION_CONFIG } from './config.js';
5
5
  export { createSessionCompactionExtension, SESSION_COMPACTION_BOUNDS } from './compaction.js';
6
6
  export { registerSessionRecall } from './recall.js';
7
- export { DEFAULT_SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_MODELS, } from './config.js';
7
+ export { DEFAULT_SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_CONFIG, SESSION_COMPACTION_MODELS, SESSION_COMPACTION_METHODS, } from './config.js';
8
+ export { COMPACTION_CHOICE_CRITERIA, } from './classifier.js';
8
9
  export * from './internal/contracts.js';
9
10
  export { createFallbackDiagnostic, fallbackDiagnosticBytes, fallbackDiagnosticText } from './internal/fallback-diagnostic.js';
10
11
  const sessionCompactionExtension = (pi) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAuB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE9H,MAAM,0BAA0B,GAAmB,CAAC,EAAE,EAAE,EAAE;IACxD,gCAAgC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,wBAAwB,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;AAEhF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAuB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,iCAAiC,EACjC,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,GAI3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAiBzB,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE9H,MAAM,0BAA0B,GAAmB,CAAC,EAAE,EAAE,EAAE;IACxD,gCAAgC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,wBAAwB,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,CAAC;AAEhF,eAAe,0BAA0B,CAAC"}
@@ -5,6 +5,9 @@ export interface CompactionPreparation {
5
5
  readonly turnPrefixMessages: readonly unknown[];
6
6
  readonly previousSummary?: string;
7
7
  readonly tokensBefore: number;
8
+ readonly settings?: {
9
+ readonly reserveTokens?: number;
10
+ };
8
11
  }
9
12
  export type PreparedMessageValue = unknown;
10
13
  export declare const DETAILS_NAMESPACE: "felan.session-compaction";
@@ -25,6 +28,13 @@ export interface SessionCompactionFallbackDiagnosticV1 {
25
28
  readonly errorMessage?: string;
26
29
  readonly stopReason?: string;
27
30
  readonly detail?: string;
31
+ readonly prune?: {
32
+ readonly status: 'off' | 'skipped' | 'ran';
33
+ readonly reason?: string;
34
+ readonly kept?: number;
35
+ readonly shortened?: number;
36
+ readonly dropped?: number;
37
+ };
28
38
  }
29
39
  export type SpanSection = 'previous_summary' | 'messages_to_summarize' | 'turn_prefix';
30
40
  export interface PreparedSource {
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/internal/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/internal/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/internal/contracts.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAAmC,CAAC;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,mCAA4C,CAAC;AAC5F,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/internal/contracts.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAAmC,CAAC;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AAEjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,mCAA4C,CAAC;AAC5F,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type NativeFallbackReason, type SessionCompactionFallbackDiagnosticV1 } from './contracts.js';
2
+ import type { EvidencePruneReport } from '../prune.js';
2
3
  export interface FallbackDiagnosticInput {
3
4
  readonly reason: NativeFallbackReason;
4
5
  readonly sessionId: string;
@@ -10,6 +11,7 @@ export interface FallbackDiagnosticInput {
10
11
  readonly errorMessage?: unknown;
11
12
  readonly stopReason?: unknown;
12
13
  readonly detail?: unknown;
14
+ readonly prune?: EvidencePruneReport;
13
15
  }
14
16
  export declare function createFallbackDiagnostic(input: FallbackDiagnosticInput): SessionCompactionFallbackDiagnosticV1;
15
17
  export declare function fallbackDiagnosticText(diagnostic: SessionCompactionFallbackDiagnosticV1): string;
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-diagnostic.d.ts","sourceRoot":"","sources":["../../src/internal/fallback-diagnostic.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qCAAqC,EAC3C,MAAM,gBAAgB,CAAC;AAKxB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,qCAAqC,CAAC,SAAS,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,qCAAqC,CAgB9G;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,qCAAqC,GAAG,MAAM,CAGhG;AA0BD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qCAAqC,GAAG,MAAM,CAE5F"}
1
+ {"version":3,"file":"fallback-diagnostic.d.ts","sourceRoot":"","sources":["../../src/internal/fallback-diagnostic.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qCAAqC,EAC3C,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,qCAAqC,CAAC,SAAS,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,qCAAqC,CAiB9G;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,qCAAqC,GAAG,MAAM,CAIhG;AAgDD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,qCAAqC,GAAG,MAAM,CAE5F"}
@@ -16,12 +16,37 @@ export function createFallbackDiagnostic(input) {
16
16
  ...(sanitizedError(input.errorMessage) ? { errorMessage: sanitizedError(input.errorMessage) } : {}),
17
17
  ...(boundedUnknown(input.stopReason) ? { stopReason: boundedUnknown(input.stopReason) } : {}),
18
18
  ...(boundedUnknown(input.detail) ? { detail: boundedUnknown(input.detail) } : {}),
19
+ ...(input.prune ? { prune: boundedPrune(input.prune) } : {}),
19
20
  };
20
21
  return diagnostic;
21
22
  }
22
23
  export function fallbackDiagnosticText(diagnostic) {
23
24
  const error = diagnostic.errorMessage ? `: ${diagnostic.errorMessage}` : '';
24
- return `Session compaction fell back to Pi native compaction (${diagnostic.reason}${error}).`;
25
+ const prune = pruneText(diagnostic.prune);
26
+ return `Session compaction fell back to Pi native compaction (${diagnostic.reason}${error}${prune}).`;
27
+ }
28
+ function boundedPrune(prune) {
29
+ if (prune.status === 'ran') {
30
+ return {
31
+ status: 'ran',
32
+ kept: prune.kept,
33
+ shortened: prune.shortened,
34
+ dropped: prune.dropped,
35
+ };
36
+ }
37
+ if (prune.status === 'skipped')
38
+ return { status: 'skipped', reason: bounded(prune.reason) };
39
+ return { status: 'off' };
40
+ }
41
+ function pruneText(prune) {
42
+ if (!prune)
43
+ return '';
44
+ if (prune.status === 'ran') {
45
+ return `; prune ran kept=${prune.kept ?? 0} shortened=${prune.shortened ?? 0} dropped=${prune.dropped ?? 0}`;
46
+ }
47
+ if (prune.status === 'skipped')
48
+ return `; prune skipped (${prune.reason ?? 'unknown'})`;
49
+ return '; prune off';
25
50
  }
26
51
  function sanitizedError(value) {
27
52
  const text = typeof value === 'string' ? value : value instanceof Error ? value.message : value === undefined ? '' : String(value);
@@ -1 +1 @@
1
- {"version":3,"file":"fallback-diagnostic.js","sourceRoot":"","sources":["../../src/internal/fallback-diagnostic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback-diagnostic.js","sourceRoot":"","sources":["../../src/internal/fallback-diagnostic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { Classifier, ClassifierEvaluationMetadata } from '@felan-ai/agent-core';
2
+ import { COMPACTION_CHOICE_CRITERIA, type CompactionClassifierChoice } from './classifier.js';
3
+ import type { EvidenceBundle, PreparedSpan } from './internal/contracts.js';
4
+ export declare const JEV_PRUNE_HEAD_CHARS = 300;
5
+ export declare const JEV_PRUNE_EXACT_KEEP = 0.35;
6
+ export declare const JEV_PRUNE_OBSOLETE_CONFIDENCE = 0.6;
7
+ export declare const JEV_PRUNE_TINY_BYTES = 90;
8
+ export declare const JEV_PRUNE_RESULT_HEAD_CHARS = 120;
9
+ export type EvidencePruneSkipReason = 'no-classifier' | 'no-candidates' | 'classifier-failed';
10
+ export type EvidencePruneAction = 'keep' | 'shorten' | 'drop';
11
+ export type EvidencePruneTrigger = 'manual' | 'threshold' | 'overflow';
12
+ export interface EvidencePruneDecision {
13
+ readonly id: string;
14
+ readonly action: EvidencePruneAction;
15
+ readonly reason: 'exact_contents' | 'outcome_only' | 'obsolete' | 'missing';
16
+ readonly toolName?: string;
17
+ readonly choice?: CompactionClassifierChoice;
18
+ readonly confidence?: number;
19
+ readonly probabilities?: Readonly<Partial<Record<CompactionClassifierChoice, number>>>;
20
+ }
21
+ export type EvidencePruneReport = {
22
+ readonly status: 'off';
23
+ } | {
24
+ readonly status: 'skipped';
25
+ readonly reason: EvidencePruneSkipReason;
26
+ } | {
27
+ readonly status: 'ran';
28
+ readonly kept: number;
29
+ readonly shortened: number;
30
+ readonly dropped: number;
31
+ readonly asked: number;
32
+ readonly decisions: readonly EvidencePruneDecision[];
33
+ readonly classifier?: ClassifierEvaluationMetadata;
34
+ };
35
+ export interface EvidencePruneContext {
36
+ readonly trigger: EvidencePruneTrigger;
37
+ readonly customInstructions?: string;
38
+ readonly previousSummary?: string;
39
+ readonly signal?: AbortSignal;
40
+ }
41
+ export type EvidencePruneLeftoverReason = 'unasked' | 'tiny';
42
+ export interface EvidencePruneLeftover {
43
+ readonly id: string;
44
+ readonly bytes: number;
45
+ readonly action: EvidencePruneAction;
46
+ readonly reason: EvidencePruneLeftoverReason;
47
+ readonly toolName?: string;
48
+ }
49
+ export interface EvidencePruneDebug {
50
+ readonly trigger: EvidencePruneTrigger;
51
+ readonly inFlight: boolean;
52
+ readonly candidates: number;
53
+ readonly bulky: number;
54
+ readonly tiny: number;
55
+ readonly leftover: number;
56
+ readonly leftovers: readonly EvidencePruneLeftover[];
57
+ readonly report: EvidencePruneReport;
58
+ readonly criteria?: typeof COMPACTION_CHOICE_CRITERIA;
59
+ readonly state?: unknown;
60
+ readonly questions?: Readonly<Record<string, {
61
+ readonly instructions: string;
62
+ }>>;
63
+ readonly answers?: unknown;
64
+ readonly error?: string;
65
+ }
66
+ export declare function pruneEvidence(evidence: EvidenceBundle, span: PreparedSpan, classifier: Classifier, context: EvidencePruneContext): Promise<{
67
+ evidence: EvidenceBundle;
68
+ report: EvidencePruneReport;
69
+ debug: EvidencePruneDebug;
70
+ }>;
71
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../src/prune.ts"],"names":[],"mappings":"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"}
package/dist/prune.js ADDED
@@ -0,0 +1,368 @@
1
+ import { COMPACTION_CHOICE_CRITERIA, } from './classifier.js';
2
+ import { DEFAULT_EXTRACTION_BOUNDS, utf8Bytes } from './internal/bounds.js';
3
+ export const JEV_PRUNE_HEAD_CHARS = 300;
4
+ export const JEV_PRUNE_EXACT_KEEP = 0.35;
5
+ export const JEV_PRUNE_OBSOLETE_CONFIDENCE = 0.6;
6
+ export const JEV_PRUNE_TINY_BYTES = 90;
7
+ export const JEV_PRUNE_RESULT_HEAD_CHARS = 120;
8
+ const RESULT_KINDS = new Set(['observation', 'command', 'test']);
9
+ const NEVER_DROP_KINDS = new Set(['command', 'test']);
10
+ const STATE_CONTEXT = [
11
+ 'A coding-agent session is being compacted. A summarizer will write a checkpoint',
12
+ '(goal, constraints, progress, decisions, next steps, critical context) from `history`,',
13
+ 'and the agent continues from that checkpoint. Items with an id may be dropped or',
14
+ 'shortened before the summarizer sees them. The agent can re-run any tool afterwards.',
15
+ ].join(' ');
16
+ export async function pruneEvidence(evidence, span, classifier, context) {
17
+ const protectedSources = new Set(span.sources.filter((source) => source.section === 'turn_prefix').map((source) => source.sourceId));
18
+ const inFlight = protectedSources.size > 0;
19
+ const groups = collectGroups(evidence.items, protectedSources);
20
+ const bulky = [...groups]
21
+ .filter((group) => resultBytes(group) >= JEV_PRUNE_TINY_BYTES)
22
+ .sort((left, right) => resultBytes(right) - resultBytes(left));
23
+ if (bulky.length === 0) {
24
+ const report = { status: 'skipped', reason: 'no-candidates' };
25
+ return {
26
+ evidence,
27
+ report,
28
+ debug: debugEvent(context.trigger, inFlight, groups, bulky, [], report),
29
+ };
30
+ }
31
+ const actions = new Map();
32
+ const decisions = [];
33
+ for (const group of groups) {
34
+ actions.set(group.key, 'keep');
35
+ }
36
+ const state = buildState(evidence.items, protectedSources, groups, context);
37
+ const asked = bulky;
38
+ const askedKeys = new Set(asked.map((group) => group.key));
39
+ let questions;
40
+ let answers;
41
+ let classifierMetadata;
42
+ if (asked.length > 0) {
43
+ questions = Object.fromEntries(asked.map((group) => [group.id, questionFor(group.id)]));
44
+ try {
45
+ const evaluation = await classifier.evaluate(state, questions, context.signal);
46
+ answers = evaluation.answers;
47
+ classifierMetadata = evaluation.metadata;
48
+ for (const group of asked) {
49
+ const decision = decide(group, evaluation.answers[group.id]);
50
+ actions.set(group.key, decision.action);
51
+ decisions.push(decision);
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (context.signal?.aborted)
56
+ throw error;
57
+ const report = { status: 'skipped', reason: 'classifier-failed' };
58
+ return {
59
+ evidence,
60
+ report,
61
+ debug: debugEvent(context.trigger, inFlight, groups, bulky, asked, report, {
62
+ state,
63
+ questions,
64
+ error: errorMessage(error),
65
+ }),
66
+ };
67
+ }
68
+ }
69
+ const droppedIds = new Set();
70
+ const shortened = new Map();
71
+ let kept = 0;
72
+ let shortenedCount = 0;
73
+ let dropped = 0;
74
+ for (const group of groups) {
75
+ const action = actions.get(group.key) ?? 'keep';
76
+ if (action === 'drop') {
77
+ dropped += 1;
78
+ for (const item of group.items)
79
+ droppedIds.add(item.id);
80
+ continue;
81
+ }
82
+ if (action === 'shorten') {
83
+ shortenedCount += 1;
84
+ for (const item of group.results)
85
+ shortened.set(item.id, shorten(item.text));
86
+ continue;
87
+ }
88
+ kept += 1;
89
+ }
90
+ const items = evidence.items.flatMap((item) => {
91
+ if (droppedIds.has(item.id))
92
+ return [];
93
+ const text = shortened.get(item.id);
94
+ return text === undefined ? [item] : [{ ...item, text }];
95
+ });
96
+ const report = {
97
+ status: 'ran',
98
+ kept,
99
+ shortened: shortenedCount,
100
+ dropped,
101
+ asked: decisions.length,
102
+ decisions,
103
+ ...(classifierMetadata === undefined ? {} : { classifier: classifierMetadata }),
104
+ };
105
+ return {
106
+ evidence: { ...evidence, items },
107
+ report,
108
+ debug: debugEvent(context.trigger, inFlight, groups, bulky, asked, report, {
109
+ state,
110
+ askedKeys,
111
+ ...(questions === undefined ? {} : { questions }),
112
+ ...(answers === undefined ? {} : { answers }),
113
+ }),
114
+ };
115
+ }
116
+ const MAX_DEBUG_LEFTOVERS = 128;
117
+ function debugEvent(trigger, inFlight, groups, bulky, asked, report, extras = {}) {
118
+ const askedKeys = extras.askedKeys ?? new Set(asked.map((group) => group.key));
119
+ const leftovers = groups.flatMap((group) => {
120
+ const bytes = resultBytes(group);
121
+ const tiny = bytes < JEV_PRUNE_TINY_BYTES;
122
+ if (!tiny && askedKeys.has(group.key))
123
+ return [];
124
+ const toolName = group.call?.toolName ?? group.results[0]?.toolName;
125
+ return [{
126
+ id: group.id || group.key,
127
+ bytes,
128
+ action: 'keep',
129
+ reason: (tiny ? 'tiny' : 'unasked'),
130
+ ...(toolName === undefined ? {} : { toolName }),
131
+ }];
132
+ });
133
+ const questions = extras.questions === undefined
134
+ ? undefined
135
+ : Object.fromEntries(Object.entries(extras.questions).map(([id, question]) => [id, { instructions: question.instructions }]));
136
+ return {
137
+ trigger,
138
+ inFlight,
139
+ candidates: groups.length,
140
+ bulky: bulky.length,
141
+ tiny: groups.length - bulky.length,
142
+ leftover: leftovers.length,
143
+ leftovers: leftovers.slice(0, MAX_DEBUG_LEFTOVERS),
144
+ report,
145
+ ...(extras.state === undefined ? {} : { state: extras.state, criteria: COMPACTION_CHOICE_CRITERIA }),
146
+ ...(questions === undefined ? {} : { questions }),
147
+ ...(extras.answers === undefined ? {} : { answers: extras.answers }),
148
+ ...(extras.error === undefined ? {} : { error: extras.error }),
149
+ };
150
+ }
151
+ function errorMessage(error) {
152
+ return error instanceof Error ? error.message : String(error);
153
+ }
154
+ function collectGroups(items, protectedSources) {
155
+ const groups = new Map();
156
+ const group = (key) => {
157
+ const existing = groups.get(key);
158
+ if (existing)
159
+ return existing;
160
+ const created = { key, id: '', results: [], items: [] };
161
+ groups.set(key, created);
162
+ return created;
163
+ };
164
+ for (const item of items) {
165
+ if (protectedSources.has(item.sourceId))
166
+ continue;
167
+ if (item.status === 'failed' || item.status === 'partial')
168
+ continue;
169
+ if (item.kind === 'tool-call') {
170
+ const target = group(item.toolCallId ?? item.id);
171
+ target.call = item;
172
+ target.items.push(item);
173
+ continue;
174
+ }
175
+ if (!RESULT_KINDS.has(item.kind))
176
+ continue;
177
+ const target = group(item.toolCallId ?? item.id);
178
+ target.results.push(item);
179
+ target.items.push(item);
180
+ }
181
+ return [...groups.values()].filter((entry) => entry.results.length > 0);
182
+ }
183
+ function buildState(items, protectedSources, groups, context) {
184
+ const byItem = new Map();
185
+ for (const group of groups) {
186
+ for (const item of group.items)
187
+ byItem.set(item.id, group);
188
+ }
189
+ const emitted = new Set();
190
+ let nextId = 1;
191
+ const history = [];
192
+ const currentTurn = [];
193
+ for (const item of items) {
194
+ const prefix = protectedSources.has(item.sourceId);
195
+ const dest = prefix ? currentTurn : history;
196
+ const grouped = prefix ? undefined : byItem.get(item.id);
197
+ if (grouped) {
198
+ if (emitted.has(grouped.key))
199
+ continue;
200
+ emitted.add(grouped.key);
201
+ grouped.id = `e${nextId}`;
202
+ nextId += 1;
203
+ dest.push({
204
+ id: grouped.id,
205
+ call: grouped.call?.text ?? grouped.results[0]?.toolName ?? grouped.key,
206
+ result: resultNote(grouped),
207
+ });
208
+ continue;
209
+ }
210
+ dest.push(historyEntry(item));
211
+ }
212
+ const requests = items
213
+ .filter((item) => item.kind === 'request' && !protectedSources.has(item.sourceId))
214
+ .map((item) => clip(item.text, 500))
215
+ .filter(Boolean)
216
+ .slice(-3);
217
+ const focus = context.customInstructions === undefined ? undefined : clip(context.customInstructions, 1_024);
218
+ const previous = context.previousSummary === undefined ? undefined : clip(context.previousSummary, 2_048);
219
+ const state = {
220
+ context: STATE_CONTEXT,
221
+ trigger: triggerSentence(context.trigger, currentTurn.length > 0, Boolean(focus)),
222
+ goal: requests,
223
+ history,
224
+ current_turn: currentTurn,
225
+ ...(focus ? { focus } : {}),
226
+ ...(previous ? { previous_checkpoint: previous } : {}),
227
+ };
228
+ fitState(state);
229
+ return state;
230
+ }
231
+ function historyEntry(item) {
232
+ if (item.kind === 'request')
233
+ return { role: 'user', text: clip(item.text, 500) };
234
+ if (item.kind === 'report')
235
+ return { role: 'assistant', text: clip(item.text, 400) };
236
+ return { kind: item.kind, text: clip(item.text, 400) };
237
+ }
238
+ function resultNote(group) {
239
+ const result = group.results[0];
240
+ const chars = group.results.reduce((sum, item) => sum + item.text.length, 0);
241
+ const kind = result?.kind ?? 'observation';
242
+ const head = clip(result?.text ?? '', JEV_PRUNE_RESULT_HEAD_CHARS);
243
+ return `${kind}, ${chars} chars: ${head}`;
244
+ }
245
+ function resultBytes(group) {
246
+ return group.results.reduce((sum, item) => sum + utf8Bytes(item.text), 0);
247
+ }
248
+ function questionFor(id) {
249
+ return {
250
+ type: 'choice',
251
+ instructions: `History item ${id}: what does the continuing agent need from it, given the trigger and goal?`,
252
+ criteria: COMPACTION_CHOICE_CRITERIA,
253
+ };
254
+ }
255
+ function fitState(state) {
256
+ const shrinkEntry = (entry, limit) => {
257
+ if ('call' in entry) {
258
+ if (entry.result.length <= limit && entry.call.length <= limit)
259
+ return false;
260
+ entry.call = clip(entry.call, Math.min(limit, 120));
261
+ entry.result = clip(entry.result, limit);
262
+ return true;
263
+ }
264
+ if (entry.text.length <= limit)
265
+ return false;
266
+ entry.text = clip(entry.text, limit);
267
+ return true;
268
+ };
269
+ let limit = 400;
270
+ while (jsonBytes(state) > DEFAULT_EXTRACTION_BOUNDS.maxEvidenceBytes && limit >= 16) {
271
+ let changed = false;
272
+ if (state.previous_checkpoint && state.previous_checkpoint.length > limit) {
273
+ state.previous_checkpoint = clip(state.previous_checkpoint, limit);
274
+ changed = true;
275
+ }
276
+ if (state.focus && state.focus.length > limit) {
277
+ state.focus = clip(state.focus, limit);
278
+ changed = true;
279
+ }
280
+ state.goal = state.goal.map((item) => clip(item, limit));
281
+ for (const entry of state.history)
282
+ changed = shrinkEntry(entry, limit) || changed;
283
+ for (const entry of state.current_turn)
284
+ changed = shrinkEntry(entry, limit) || changed;
285
+ if (!changed) {
286
+ const index = state.history.findIndex((entry) => !('id' in entry));
287
+ if (index >= 0) {
288
+ state.history.splice(index, 1);
289
+ continue;
290
+ }
291
+ break;
292
+ }
293
+ limit = Math.max(40, Math.floor(limit / 2));
294
+ }
295
+ }
296
+ function decide(group, answer) {
297
+ const toolName = group.call?.toolName ?? group.results[0]?.toolName;
298
+ const neverDrop = group.results.some((item) => NEVER_DROP_KINDS.has(item.kind));
299
+ const base = {
300
+ id: group.id,
301
+ ...(toolName === undefined ? {} : { toolName }),
302
+ };
303
+ if (answer?.type !== 'choice' || !isChoice(answer.choice)) {
304
+ return { ...base, action: 'keep', reason: 'missing' };
305
+ }
306
+ const probabilities = boundedProbabilities(answer.probabilities);
307
+ const confidence = unit(answer.confidence);
308
+ const exact = probabilities.exact_contents;
309
+ const actionFromObsolete = neverDrop ? 'shorten' : 'drop';
310
+ const action = exact !== undefined && exact >= JEV_PRUNE_EXACT_KEEP
311
+ ? 'keep'
312
+ : answer.choice === 'exact_contents'
313
+ ? 'keep'
314
+ : answer.choice === 'obsolete' && confidence !== undefined && confidence >= JEV_PRUNE_OBSOLETE_CONFIDENCE
315
+ ? actionFromObsolete
316
+ : 'shorten';
317
+ return {
318
+ ...base,
319
+ action,
320
+ reason: answer.choice,
321
+ choice: answer.choice,
322
+ ...(confidence === undefined ? {} : { confidence }),
323
+ ...(Object.keys(probabilities).length > 0 ? { probabilities } : {}),
324
+ };
325
+ }
326
+ function isChoice(value) {
327
+ return value === 'exact_contents' || value === 'outcome_only' || value === 'obsolete';
328
+ }
329
+ function boundedProbabilities(value) {
330
+ const probabilities = {};
331
+ if (!value)
332
+ return probabilities;
333
+ for (const key of ['exact_contents', 'outcome_only', 'obsolete']) {
334
+ const amount = unit(value[key]);
335
+ if (amount !== undefined)
336
+ probabilities[key] = amount;
337
+ }
338
+ return probabilities;
339
+ }
340
+ function unit(value) {
341
+ return value === undefined || !Number.isFinite(value) || value < 0 || value > 1 ? undefined : value;
342
+ }
343
+ function triggerSentence(trigger, inFlight, hasFocus) {
344
+ if (inFlight && trigger !== 'manual') {
345
+ return 'Mid-turn overflow: the agent resumes the unfinished task in current_turn immediately. Judge older items by whether finishing that task needs them.';
346
+ }
347
+ if (trigger === 'manual') {
348
+ return hasFocus
349
+ ? 'Manual compaction: the user will continue with follow-up requests about this work, using the stated focus.'
350
+ : 'Manual compaction: the user will continue with follow-up requests about this work.';
351
+ }
352
+ return 'End-of-turn: the agent finished; the user will continue with follow-up requests about this work. Outcomes matter; consumed observations mostly do not.';
353
+ }
354
+ function shorten(text) {
355
+ if (text.length <= JEV_PRUNE_HEAD_CHARS)
356
+ return text;
357
+ return `${text.slice(0, JEV_PRUNE_HEAD_CHARS)}\n[jev: shortened ${text.length - JEV_PRUNE_HEAD_CHARS} characters]`;
358
+ }
359
+ function clip(value, limit) {
360
+ const trimmed = value.trim();
361
+ if (trimmed.length <= limit)
362
+ return trimmed;
363
+ return `${trimmed.slice(0, Math.max(0, limit - 1))}…`;
364
+ }
365
+ function jsonBytes(value) {
366
+ return utf8Bytes(JSON.stringify(value));
367
+ }
368
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../src/prune.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felan-ai/ext-session-compaction",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "description": "Bounded verified session compaction and active-lineage recall for Felan",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,10 +28,10 @@
28
28
  "typebox": "1.1.38"
29
29
  },
30
30
  "peerDependencies": {
31
- "@felan-ai/agent-core": "^0.7.0"
31
+ "@felan-ai/agent-core": "^0.8.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@felan-ai/agent-core": "0.7.0"
34
+ "@felan-ai/agent-core": "0.8.0"
35
35
  },
36
36
  "publishConfig": {
37
37
  "access": "public",