pi-smart-compact 9.7.0 → 9.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -1
- package/dist/app/run-context.d.ts +3 -1
- package/dist/app/run-context.d.ts.map +1 -1
- package/dist/app/steps/extract.d.ts.map +1 -1
- package/dist/app/steps/state.d.ts.map +1 -1
- package/dist/app/steps/verify.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/index.js +3916 -3841
- package/dist/phases/verify.d.ts +15 -1
- package/dist/phases/verify.d.ts.map +1 -1
- package/dist/provider-eval.js +16 -1
- package/dist/provider-scenario-eval.js +18 -2
- package/dist/telemetry-report.js +16 -1
- package/dist/utils/extraction.d.ts +7 -0
- package/dist/utils/extraction.d.ts.map +1 -1
- package/dist/utils/state.d.ts +18 -1
- package/dist/utils/state.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/phases/verify.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* boundary; repair logic switches on `kind` and never reparses its own prose.
|
|
6
6
|
*/
|
|
7
7
|
import type { Model, Api, ProviderHeaders } from "@earendil-works/pi-ai";
|
|
8
|
-
import type { CompactionState, StructuredExtraction, VerificationGap, VerificationGateStage, VerificationResult, LlmMessage } from "../types.ts";
|
|
8
|
+
import type { CompactionState, ContinuityOverride, StructuredExtraction, VerificationGap, VerificationGateStage, VerificationResult, LlmMessage } from "../types.ts";
|
|
9
9
|
import type { SmartCompactServices } from "../infra/services.ts";
|
|
10
10
|
export interface VerificationEvidence {
|
|
11
11
|
sourceMessages?: readonly LlmMessage[];
|
|
@@ -14,6 +14,8 @@ export interface VerificationEvidence {
|
|
|
14
14
|
note?: string;
|
|
15
15
|
};
|
|
16
16
|
summaryBudgetTokens?: number;
|
|
17
|
+
/** Run-scoped fact overrides (e.g. constraints retired this run). */
|
|
18
|
+
factOverrides?: readonly ContinuityOverride[];
|
|
17
19
|
}
|
|
18
20
|
export declare function formatVerificationGap(gap: VerificationGap): string;
|
|
19
21
|
export declare function verificationFailureMessage(result: VerificationResult): string | null;
|
|
@@ -26,6 +28,18 @@ export declare class VerificationGateError extends Error {
|
|
|
26
28
|
readonly gapCount: number;
|
|
27
29
|
constructor(result: VerificationResult, initialScore: number, stage: VerificationGateStage);
|
|
28
30
|
}
|
|
31
|
+
export declare function hasSemanticContradiction(source: string, target: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* True when `release` (a later user message) frees `constraint`.
|
|
34
|
+
*
|
|
35
|
+
* Two safe paths: a rich release trips the full contradiction check, and a
|
|
36
|
+
* terse release ("ok push it now") flips the polarity of the constrained
|
|
37
|
+
* action — but only for deferral constraints. Standing rules ("never commit
|
|
38
|
+
* directly to main") keep the strict check: a terse imperative sharing one
|
|
39
|
+
* verb must not silently drop a live rule the summary is still checked
|
|
40
|
+
* against.
|
|
41
|
+
*/
|
|
42
|
+
export declare function releasesConstraint(constraint: string, release: string): boolean;
|
|
29
43
|
export declare function isDeterministicallyPatchable(gap: VerificationGap): boolean;
|
|
30
44
|
/** Apply safe repairs to a fixed point; newly introduced patchable gaps get another bounded pass. */
|
|
31
45
|
export declare function repairSummaryDeterministically(summary: string, result: VerificationResult, extraction: StructuredExtraction, continuity?: CompactionState | null, evidence?: VerificationEvidence, maxRounds?: number): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/phases/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,KAAK,EACL,GAAG,EACH,eAAe,EAEf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACX,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/phases/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/provider-eval.js
CHANGED
|
@@ -154,7 +154,7 @@ function formatProviderEvaluation(report) {
|
|
|
154
154
|
import fs2 from "fs";
|
|
155
155
|
|
|
156
156
|
// src/constants.ts
|
|
157
|
-
var VERSION = "9.7.
|
|
157
|
+
var VERSION = "9.7.1";
|
|
158
158
|
var SETTLED_TRIGGER_COOLDOWN_MS = 10 * 60000;
|
|
159
159
|
var COMPACT_SYSTEM_PREFIX = "You are an expert conversation summarizer for a coding agent. " + "Produce structured markdown summaries. " + "Follow output format exactly. " + "Use EXACT names \u2014 never paraphrase code identifiers. " + "Trust deterministic extraction data over intuition.";
|
|
160
160
|
var PROFILES = {
|
|
@@ -910,6 +910,11 @@ function metricsLogFile() {
|
|
|
910
910
|
function damageReportsFile() {
|
|
911
911
|
return path.join(smartCompactCacheDir(), "damage-reports.jsonl");
|
|
912
912
|
}
|
|
913
|
+
// src/utils/helpers.ts
|
|
914
|
+
function normalizeFactKey(text) {
|
|
915
|
+
return text.toLowerCase().replace(/\s+/g, " ").trim();
|
|
916
|
+
}
|
|
917
|
+
|
|
913
918
|
// src/utils/file-ref-detect.ts
|
|
914
919
|
var CODE_EXT_RE = /\.(ts|tsx|js|jsx|mjs|cjs|rs|py|go|java|rb|cs|cpp|c|h|hpp|swift|kt|scala|php|css|scss|html|json|yaml|yml|toml|md|mdx|sh|sql|tf|ini|env|lock|gradle|xml)$/i;
|
|
915
920
|
var VERSION_RE = /^v?\d+(?:\.\d+)+(?:[-+][\w.-]+)?$/i;
|
|
@@ -1219,6 +1224,16 @@ function isDiagnosticConstraintText(text) {
|
|
|
1219
1224
|
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1220
1225
|
return /^(?:\[[^\]]+\]\s*)?(?:npm\s+(?:error|warn|notice|audit|verbose|info)\b|(?:rg|grep):|command exited\b)/i.test(candidate);
|
|
1221
1226
|
}
|
|
1227
|
+
var OWN_OUTPUT_RE = /(?:verification stopped apply|yield check stopped apply|smart compact failed|do not bypass verification|conversation unchanged|review \/smart-compact metrics|restart pi with debug=smart-compact)/i;
|
|
1228
|
+
var COMPLETED_CHECKLIST_RE = /^\[[xX\u2713\u2714]\]\s*\S/;
|
|
1229
|
+
function isNonLiveConstraintText(text) {
|
|
1230
|
+
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1231
|
+
return isDiagnosticConstraintText(candidate) || isCompactionStatusText(candidate) || OWN_OUTPUT_RE.test(candidate) || COMPLETED_CHECKLIST_RE.test(candidate);
|
|
1232
|
+
}
|
|
1233
|
+
function isCompactionStatusText(text) {
|
|
1234
|
+
const candidate = summaryEvidenceLine(text, TRUNC.MESSAGE).replace(/^["'`]+/, "").trim();
|
|
1235
|
+
return /^(?:EESV Compact\b|Smart compact (?:skipped|prepared|run finished)\b|Auto-compacting\b)/i.test(candidate);
|
|
1236
|
+
}
|
|
1222
1237
|
|
|
1223
1238
|
// src/infra/clock.ts
|
|
1224
1239
|
var systemClock = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { ModelRegistry, ModelRuntime } from "@earendil-works/pi-coding-agent";
|
|
4
4
|
|
|
5
5
|
// src/constants.ts
|
|
6
|
-
var VERSION = "9.7.
|
|
6
|
+
var VERSION = "9.7.1";
|
|
7
7
|
var SETTLED_TRIGGER_COOLDOWN_MS = 10 * 60000;
|
|
8
8
|
var COMPACT_SYSTEM_PREFIX = "You are an expert conversation summarizer for a coding agent. " + "Produce structured markdown summaries. " + "Follow output format exactly. " + "Use EXACT names \u2014 never paraphrase code identifiers. " + "Trust deterministic extraction data over intuition.";
|
|
9
9
|
var PROFILES = {
|
|
@@ -933,6 +933,11 @@ function metricsLogFile() {
|
|
|
933
933
|
function damageReportsFile() {
|
|
934
934
|
return path.join(smartCompactCacheDir(), "damage-reports.jsonl");
|
|
935
935
|
}
|
|
936
|
+
// src/utils/helpers.ts
|
|
937
|
+
function normalizeFactKey(text) {
|
|
938
|
+
return text.toLowerCase().replace(/\s+/g, " ").trim();
|
|
939
|
+
}
|
|
940
|
+
|
|
936
941
|
// src/utils/file-ref-detect.ts
|
|
937
942
|
var CODE_EXT_RE = /\.(ts|tsx|js|jsx|mjs|cjs|rs|py|go|java|rb|cs|cpp|c|h|hpp|swift|kt|scala|php|css|scss|html|json|yaml|yml|toml|md|mdx|sh|sql|tf|ini|env|lock|gradle|xml)$/i;
|
|
938
943
|
var VERSION_RE = /^v?\d+(?:\.\d+)+(?:[-+][\w.-]+)?$/i;
|
|
@@ -1242,6 +1247,16 @@ function isDiagnosticConstraintText(text) {
|
|
|
1242
1247
|
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1243
1248
|
return /^(?:\[[^\]]+\]\s*)?(?:npm\s+(?:error|warn|notice|audit|verbose|info)\b|(?:rg|grep):|command exited\b)/i.test(candidate);
|
|
1244
1249
|
}
|
|
1250
|
+
var OWN_OUTPUT_RE = /(?:verification stopped apply|yield check stopped apply|smart compact failed|do not bypass verification|conversation unchanged|review \/smart-compact metrics|restart pi with debug=smart-compact)/i;
|
|
1251
|
+
var COMPLETED_CHECKLIST_RE = /^\[[xX\u2713\u2714]\]\s*\S/;
|
|
1252
|
+
function isNonLiveConstraintText(text) {
|
|
1253
|
+
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1254
|
+
return isDiagnosticConstraintText(candidate) || isCompactionStatusText(candidate) || OWN_OUTPUT_RE.test(candidate) || COMPLETED_CHECKLIST_RE.test(candidate);
|
|
1255
|
+
}
|
|
1256
|
+
function isCompactionStatusText(text) {
|
|
1257
|
+
const candidate = summaryEvidenceLine(text, TRUNC.MESSAGE).replace(/^["'`]+/, "").trim();
|
|
1258
|
+
return /^(?:EESV Compact\b|Smart compact (?:skipped|prepared|run finished)\b|Auto-compacting\b)/i.test(candidate);
|
|
1259
|
+
}
|
|
1245
1260
|
|
|
1246
1261
|
// src/infra/clock.ts
|
|
1247
1262
|
var systemClock = {
|
|
@@ -2383,11 +2398,12 @@ function collectVerificationEvidence(extraction, continuity, evidence) {
|
|
|
2383
2398
|
if (evidence.steering?.note?.trim()) {
|
|
2384
2399
|
steeringConstraints.push({ text: evidence.steering.note });
|
|
2385
2400
|
}
|
|
2401
|
+
const retired = new Set([...continuity?.factOverrides ?? [], ...evidence.factOverrides ?? []].filter((item) => item.kind === "constraint" && item.status !== "active").map((item) => item.summaryKey));
|
|
2386
2402
|
const constraints = uniqueByText([
|
|
2387
2403
|
...extraction.constraints.flatMap((item) => item.confidence >= 0.8 ? [{ text: item.text }] : []),
|
|
2388
2404
|
...(continuity?.constraints ?? []).flatMap((item) => item.confidence >= 0.8 ? [{ text: item.text }] : []),
|
|
2389
2405
|
...steeringConstraints
|
|
2390
|
-
], (item) => item.text).filter((item) => !
|
|
2406
|
+
], (item) => item.text).filter((item) => !isNonLiveConstraintText(item.text) && !retired.has(normalizeFactKey(item.text)));
|
|
2391
2407
|
const decisions = uniqueByText([
|
|
2392
2408
|
...extraction.decisions.flatMap((item) => item.type === "explicit" ? [{ summary: item.summary }] : []),
|
|
2393
2409
|
...(continuity?.decisions ?? []).flatMap((item) => item.type === "explicit" ? [{ summary: item.summary }] : [])
|
package/dist/telemetry-report.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// src/constants.ts
|
|
3
|
-
var VERSION = "9.7.
|
|
3
|
+
var VERSION = "9.7.1";
|
|
4
4
|
var SETTLED_TRIGGER_COOLDOWN_MS = 10 * 60000;
|
|
5
5
|
var COMPACT_SYSTEM_PREFIX = "You are an expert conversation summarizer for a coding agent. " + "Produce structured markdown summaries. " + "Follow output format exactly. " + "Use EXACT names \u2014 never paraphrase code identifiers. " + "Trust deterministic extraction data over intuition.";
|
|
6
6
|
var PROFILES = {
|
|
@@ -984,6 +984,11 @@ function classifyToolOperation(args, toolName) {
|
|
|
984
984
|
return "read";
|
|
985
985
|
return "unknown";
|
|
986
986
|
}
|
|
987
|
+
// src/utils/helpers.ts
|
|
988
|
+
function normalizeFactKey(text) {
|
|
989
|
+
return text.toLowerCase().replace(/\s+/g, " ").trim();
|
|
990
|
+
}
|
|
991
|
+
|
|
987
992
|
// src/utils/file-ref-detect.ts
|
|
988
993
|
var CODE_EXT_RE = /\.(ts|tsx|js|jsx|mjs|cjs|rs|py|go|java|rb|cs|cpp|c|h|hpp|swift|kt|scala|php|css|scss|html|json|yaml|yml|toml|md|mdx|sh|sql|tf|ini|env|lock|gradle|xml)$/i;
|
|
989
994
|
var VERSION_RE = /^v?\d+(?:\.\d+)+(?:[-+][\w.-]+)?$/i;
|
|
@@ -1293,6 +1298,16 @@ function isDiagnosticConstraintText(text) {
|
|
|
1293
1298
|
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1294
1299
|
return /^(?:\[[^\]]+\]\s*)?(?:npm\s+(?:error|warn|notice|audit|verbose|info)\b|(?:rg|grep):|command exited\b)/i.test(candidate);
|
|
1295
1300
|
}
|
|
1301
|
+
var OWN_OUTPUT_RE = /(?:verification stopped apply|yield check stopped apply|smart compact failed|do not bypass verification|conversation unchanged|review \/smart-compact metrics|restart pi with debug=smart-compact)/i;
|
|
1302
|
+
var COMPLETED_CHECKLIST_RE = /^\[[xX\u2713\u2714]\]\s*\S/;
|
|
1303
|
+
function isNonLiveConstraintText(text) {
|
|
1304
|
+
const candidate = text.replace(/^\s*[-*]\s+/, "").trim();
|
|
1305
|
+
return isDiagnosticConstraintText(candidate) || isCompactionStatusText(candidate) || OWN_OUTPUT_RE.test(candidate) || COMPLETED_CHECKLIST_RE.test(candidate);
|
|
1306
|
+
}
|
|
1307
|
+
function isCompactionStatusText(text) {
|
|
1308
|
+
const candidate = summaryEvidenceLine(text, TRUNC.MESSAGE).replace(/^["'`]+/, "").trim();
|
|
1309
|
+
return /^(?:EESV Compact\b|Smart compact (?:skipped|prepared|run finished)\b|Auto-compacting\b)/i.test(candidate);
|
|
1310
|
+
}
|
|
1296
1311
|
|
|
1297
1312
|
// src/infra/clock.ts
|
|
1298
1313
|
var systemClock = {
|
|
@@ -54,6 +54,13 @@ export declare function isTransientToolDiagnostic(text: string): boolean;
|
|
|
54
54
|
export declare function catalogErrors(msgs: LlmMessage[], _tcIdx?: ToolCallIndex): StructuredExtraction["errors"];
|
|
55
55
|
export declare function extractDecisions(msgs: LlmMessage[], _tcIdx?: ToolCallIndex): StructuredExtraction["decisions"];
|
|
56
56
|
export declare function isDiagnosticConstraintText(text: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Text that must never become a constraint: tool noise, this extension's own
|
|
59
|
+
* output, compaction status lines, and completed checklist items. Constraints
|
|
60
|
+
* are checked against the summary by the verification gate, so a non-rule here
|
|
61
|
+
* costs 20 points and fail-closes the session permanently.
|
|
62
|
+
*/
|
|
63
|
+
export declare function isNonLiveConstraintText(text: string): boolean;
|
|
57
64
|
export declare function mineConstraints(msgs: LlmMessage[]): StructuredExtraction["constraints"];
|
|
58
65
|
export declare function segmentTopicsHeuristic(msgs: LlmMessage[], pc: ProfileConfig, maxSegs?: number, _tcIdx?: ToolCallIndex): StructuredExtraction["topics"];
|
|
59
66
|
/** Machine status from an earlier compaction is context, not an active user goal. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/utils/extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,eAAe,EAChB,MAAM,aAAa,CAAC;AA2BrB,iFAAiF;AACjF,eAAO,MAAM,WAAW,QAAW,CAAC;AAMpC,oCAAoC;AACpC,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CACvE,CAAC;AAEF,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,CAgB/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAUpD;AAWD,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CA4C7E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,aAAa,CAmC7E;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAAE,EAClB,MAAM,CAAC,EAAE,aAAa,GACrB;IACD,QAAQ,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAoFA;AAsCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa7E;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU/D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAAE,EAClB,MAAM,CAAC,EAAE,aAAa,GACrB,oBAAoB,CAAC,QAAQ,CAAC,CAyFhC;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAAE,EAClB,MAAM,CAAC,EAAE,aAAa,GACrB,oBAAoB,CAAC,WAAW,CAAC,CA4CnC;AA2CD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,UAAU,EAAE,GACjB,oBAAoB,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/utils/extraction.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/state.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Produced alongside the human-readable Markdown summary.
|
|
4
4
|
* Supports cross-compaction tracking and delta computation.
|
|
5
5
|
*/
|
|
6
|
-
import type { StructuredExtraction, OpenLoop, CompactionState, ExplorationReport, LoopOverride, ContinuityOverride, ContinuityScope } from "../types.ts";
|
|
6
|
+
import type { StructuredExtraction, OpenLoop, CompactionState, ExplorationReport, LoopOverride, ContinuityOverride, ContinuityScope, LlmMessage } from "../types.ts";
|
|
7
7
|
export declare function sanitizeCompactionStateEvidence(state: CompactionState): CompactionState;
|
|
8
8
|
/**
|
|
9
9
|
* Persist compaction state for cross-compaction tracking.
|
|
@@ -21,6 +21,23 @@ export declare function loadScopedCompactionState(scope: Pick<ContinuityScope, "
|
|
|
21
21
|
export declare function applyLoopOverrides(loops: OpenLoop[], overrides: LoopOverride[]): OpenLoop[];
|
|
22
22
|
export declare function upsertLoopOverride(overrides: LoopOverride[], loop: OpenLoop, patch: Partial<Omit<LoopOverride, "id" | "summaryKey">>): LoopOverride[];
|
|
23
23
|
export declare function upsertContinuityOverride(overrides: ContinuityOverride[], kind: ContinuityOverride["kind"], text: string, patch: Pick<ContinuityOverride, "status"> & Partial<Pick<ContinuityOverride, "replacement">>): ContinuityOverride[];
|
|
24
|
+
/**
|
|
25
|
+
* Retire constraints the conversation has since released.
|
|
26
|
+
*
|
|
27
|
+
* A rule stated once ("don't push yet") and released later ("push it now")
|
|
28
|
+
* used to live forever: continuity merges it into every later state, and the
|
|
29
|
+
* gate then reads the factually correct summary as a contradiction (-20, an
|
|
30
|
+
* unpatchable gap) on every run. The newer user message is the better evidence,
|
|
31
|
+
* so it supersedes the constraint instead of losing to it — the released rule
|
|
32
|
+
* is kept as critical context, not as a rule the summary must still satisfy.
|
|
33
|
+
*
|
|
34
|
+
* Only *later* user messages count, and only an explicit polarity flip on the
|
|
35
|
+
* same concepts (the same check the gate uses) — a restatement does not retire.
|
|
36
|
+
*/
|
|
37
|
+
export declare function retireSupersededConstraints(constraints: ReadonlyArray<{
|
|
38
|
+
text: string;
|
|
39
|
+
index?: number;
|
|
40
|
+
}>, msgs: LlmMessage[], overrides: ContinuityOverride[]): ContinuityOverride[];
|
|
24
41
|
export declare function buildCompactionState(extraction: StructuredExtraction, openLoops: OpenLoop[], report: ExplorationReport | null, nextActions: string[], criticalContext: string[], loopOverrides?: LoopOverride[]): CompactionState;
|
|
25
42
|
/**
|
|
26
43
|
* Conservative cross-compaction merge: neither absence nor free-form goal text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,oBAAoB,EACpB,QAAQ,EACR,eAAe,EACf,iBAAiB,EAEjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-smart-compact",
|
|
3
|
-
"version": "9.7.
|
|
3
|
+
"version": "9.7.1",
|
|
4
4
|
"description": "Verification-oriented smart compaction extension for Pi Coding Agent — deterministic extraction, exploration, synthesis, verification, metrics, and safety checks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.4.0",
|