@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 +7 -0
- package/README.md +40 -17
- package/dist/classifier.d.ts +18 -0
- package/dist/classifier.d.ts.map +1 -0
- package/dist/classifier.js +6 -0
- package/dist/classifier.js.map +1 -0
- package/dist/compaction.d.ts +4 -1
- package/dist/compaction.d.ts.map +1 -1
- package/dist/compaction.js +122 -37
- package/dist/compaction.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/contracts.d.ts +10 -0
- package/dist/internal/contracts.d.ts.map +1 -1
- package/dist/internal/contracts.js.map +1 -1
- package/dist/internal/fallback-diagnostic.d.ts +2 -0
- package/dist/internal/fallback-diagnostic.d.ts.map +1 -1
- package/dist/internal/fallback-diagnostic.js +26 -1
- package/dist/internal/fallback-diagnostic.js.map +1 -1
- package/dist/prune.d.ts +71 -0
- package/dist/prune.d.ts.map +1 -0
- package/dist/prune.js +368 -0
- package/dist/prune.js.map +1 -0
- package/package.json +3 -3
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
|
|
7
|
-
`session_before_compact` hook
|
|
8
|
-
|
|
9
|
-
the
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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.
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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"}
|
package/dist/compaction.d.ts
CHANGED
|
@@ -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>;
|
package/dist/compaction.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/compaction.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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,
|
|
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 =
|
|
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 (!
|
|
154
|
+
if (!rawSummary)
|
|
102
155
|
return fallback(event, ctx, 'model-response-invalid', {
|
|
103
|
-
detail: '
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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
|
package/dist/compaction.js.map
CHANGED
|
@@ -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
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,yBAAyB,wDAAuC,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',
|
package/dist/config.js.map
CHANGED
|
@@ -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;
|
|
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,SAAS,OAAO,EAAE,CAAC;IACjD,QAAQ,CAAC,kBAAkB,EAAE,SAAS,OAAO,EAAE,CAAC;IAChD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;
|
|
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":"
|
|
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;
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,GAGnC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"fallback-diagnostic.js","sourceRoot":"","sources":["../../src/internal/fallback-diagnostic.ts"],"names":[],"mappings":"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"}
|
package/dist/prune.d.ts
ADDED
|
@@ -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.
|
|
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.
|
|
31
|
+
"@felan-ai/agent-core": "^0.8.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@felan-ai/agent-core": "0.
|
|
34
|
+
"@felan-ai/agent-core": "0.8.0"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public",
|