pi-smart-compact 8.0.6 → 8.0.7
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/ARCHITECTURE.md +513 -0
- package/CHANGELOG.md +19 -0
- package/README.md +70 -51
- package/SECURITY.md +8 -3
- package/dist/app/mode-policy.d.ts +0 -1
- package/dist/app/mode-policy.d.ts.map +1 -1
- package/dist/app/preflight.d.ts +16 -2
- package/dist/app/preflight.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/synthesize.d.ts.map +1 -1
- package/dist/app/steps/window.d.ts +3 -1
- package/dist/app/steps/window.d.ts.map +1 -1
- package/dist/constants.d.ts +18 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/domain/telemetry.d.ts +3 -0
- package/dist/domain/telemetry.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +759 -548
- package/dist/infra/context-graph.d.ts.map +1 -1
- package/dist/infra/fs.d.ts +1 -1
- package/dist/infra/fs.d.ts.map +1 -1
- package/dist/infra/git.d.ts.map +1 -1
- package/dist/infra/session-identity.d.ts +4 -0
- package/dist/infra/session-identity.d.ts.map +1 -1
- package/dist/phases/verify.d.ts.map +1 -1
- package/dist/provider-eval.js +113 -22
- package/dist/provider-scenario-eval.js +150 -110
- package/dist/telemetry-report.js +138 -41
- package/dist/ui/dashboard-insights.d.ts.map +1 -1
- package/dist/ui/overlays.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/extraction.d.ts +5 -0
- package/dist/utils/extraction.d.ts.map +1 -1
- package/dist/utils/fingerprint.d.ts +1 -1
- package/dist/utils/fingerprint.d.ts.map +1 -1
- package/dist/utils/pruning.d.ts.map +1 -1
- package/dist/utils/state.d.ts +4 -3
- package/dist/utils/state.d.ts.map +1 -1
- package/dist/utils/tokens.d.ts.map +1 -1
- package/docs/MIGRATING_TO_V8.md +30 -13
- package/docs/RELEASE.md +13 -10
- package/package.json +2 -1
- package/dist/app/explore-wrap.d.ts +0 -8
- package/dist/app/explore-wrap.d.ts.map +0 -1
package/dist/telemetry-report.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
4
|
// src/constants.ts
|
|
5
|
-
var VERSION = "8.0.
|
|
5
|
+
var VERSION = "8.0.7";
|
|
6
6
|
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.";
|
|
7
7
|
var PROFILES = {
|
|
8
8
|
light: {
|
|
@@ -216,10 +216,10 @@ function p95(values) {
|
|
|
216
216
|
return sorted[Math.max(0, Math.ceil(sorted.length * 0.95) - 1)] ?? 0;
|
|
217
217
|
}
|
|
218
218
|
function stats(entries, damage) {
|
|
219
|
-
const
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
const appliedRunIds = new Set(
|
|
219
|
+
const evidence = entries.filter((entry) => entry.status !== "dry-run");
|
|
220
|
+
const successfulRuns = evidence.filter((entry) => entry.status === "success");
|
|
221
|
+
const quality = successfulRuns.filter((entry) => typeof entry.verificationScore === "number");
|
|
222
|
+
const appliedRunIds = new Set(successfulRuns.filter((entry) => typeof entry.runId === "string" && entry.runId.length >= 8).map((entry) => entry.runId));
|
|
223
223
|
const observedScores = new Map;
|
|
224
224
|
for (const observation of damage) {
|
|
225
225
|
if (!observation.runId || !appliedRunIds.has(observation.runId) || typeof observation.damageScore !== "number" || !Number.isFinite(observation.damageScore))
|
|
@@ -229,14 +229,15 @@ function stats(entries, damage) {
|
|
|
229
229
|
const damaging = [...observedScores.values()].filter((score) => score > 0).length;
|
|
230
230
|
return {
|
|
231
231
|
runs: entries.length,
|
|
232
|
-
|
|
232
|
+
appliedRuns: evidence.length,
|
|
233
|
+
successRate: evidence.length ? successfulRuns.length / evidence.length : 1,
|
|
233
234
|
avgQuality: quality.length ? quality.reduce((sum, entry) => sum + (entry.verificationScore ?? 0), 0) / quality.length : null,
|
|
234
|
-
qualityCoverage:
|
|
235
|
-
p95LatencyMs: p95(
|
|
236
|
-
avgTokens:
|
|
237
|
-
fallbackRate:
|
|
235
|
+
qualityCoverage: evidence.length ? quality.length / evidence.length : 0,
|
|
236
|
+
p95LatencyMs: p95(evidence.map((entry) => entry.durationMs ?? entry.avgLatency).filter(Number.isFinite)),
|
|
237
|
+
avgTokens: evidence.length ? evidence.reduce((sum, entry) => sum + entry.totalInput + entry.totalCacheHit + (entry.totalCacheWrite ?? 0) + entry.totalOutput, 0) / evidence.length : 0,
|
|
238
|
+
fallbackRate: evidence.length ? evidence.filter((entry) => entry.method === "heuristic" || Array.isArray(entry.providerRoutes) && entry.providerRoutes.some((route) => route.successes < route.calls)).length / evidence.length : 0,
|
|
238
239
|
damageRate: observedScores.size ? damaging / observedScores.size : 0,
|
|
239
|
-
damageCoverage:
|
|
240
|
+
damageCoverage: successfulRuns.length ? observedScores.size / successfulRuns.length : 0
|
|
240
241
|
};
|
|
241
242
|
}
|
|
242
243
|
function roundStats(value) {
|
|
@@ -261,7 +262,7 @@ function assessCanary(entries, damageEntries, options) {
|
|
|
261
262
|
const triggers = [];
|
|
262
263
|
const failureBaseline = 1 - baseline.successRate;
|
|
263
264
|
const failureCanary = 1 - canary.successRate;
|
|
264
|
-
if (canary.
|
|
265
|
+
if (canary.appliedRuns >= 3 && (failureCanary > 0.050001 || failureCanary - failureBaseline >= 0.050001)) {
|
|
265
266
|
triggers.push({
|
|
266
267
|
metric: "failure-rate",
|
|
267
268
|
baseline: failureBaseline,
|
|
@@ -289,15 +290,17 @@ function assessCanary(entries, damageEntries, options) {
|
|
|
289
290
|
if (canary.damageRate - baseline.damageRate >= 0.1) {
|
|
290
291
|
triggers.push({ metric: "damage", baseline: baseline.damageRate, canary: canary.damageRate, threshold: "+10pp" });
|
|
291
292
|
}
|
|
292
|
-
const
|
|
293
|
+
const canarySampleAdequacy = Math.min(1, canary.appliedRuns / minCanaryRuns);
|
|
294
|
+
const baselineSampleAdequacy = Math.min(1, baseline.appliedRuns / Math.max(20, minCanaryRuns));
|
|
295
|
+
const dataConfidence = Math.round(100 * (canarySampleAdequacy * 0.25 + baselineSampleAdequacy * 0.15 + canary.qualityCoverage * canarySampleAdequacy * 0.2 + canary.damageCoverage * canarySampleAdequacy * 0.2 + baseline.damageCoverage * baselineSampleAdequacy * 0.2));
|
|
293
296
|
const reasons = [];
|
|
294
297
|
let decision = "hold";
|
|
295
|
-
if (triggers.length && canary.
|
|
298
|
+
if (triggers.length && canary.appliedRuns >= 3) {
|
|
296
299
|
decision = "rollback";
|
|
297
300
|
reasons.push(...triggers.map((trigger) => trigger.metric + " crossed " + trigger.threshold));
|
|
298
|
-
} else if (canary.
|
|
299
|
-
reasons.push("need " + (minCanaryRuns - canary.
|
|
300
|
-
} else if (baseline.
|
|
301
|
+
} else if (canary.appliedRuns < minCanaryRuns) {
|
|
302
|
+
reasons.push("need " + (minCanaryRuns - canary.appliedRuns) + " more canary runs with applied outcomes");
|
|
303
|
+
} else if (baseline.appliedRuns < Math.max(20, minCanaryRuns)) {
|
|
301
304
|
reasons.push("stable baseline is too small");
|
|
302
305
|
} else if (canary.qualityCoverage < 0.7) {
|
|
303
306
|
reasons.push("schema-v2 quality coverage is below 70%");
|
|
@@ -328,7 +331,7 @@ function safeMetricLabel(value, fallback) {
|
|
|
328
331
|
return fallback;
|
|
329
332
|
return value;
|
|
330
333
|
}
|
|
331
|
-
var
|
|
334
|
+
var TELEMETRY_FAILURE_KINDS = new Set([
|
|
332
335
|
"cancelled",
|
|
333
336
|
"timeout",
|
|
334
337
|
"rate-limit",
|
|
@@ -342,6 +345,9 @@ var FAILURE_KINDS = new Set([
|
|
|
342
345
|
"yield",
|
|
343
346
|
"internal"
|
|
344
347
|
]);
|
|
348
|
+
function isTelemetryFailureKind(value) {
|
|
349
|
+
return typeof value === "string" && TELEMETRY_FAILURE_KINDS.has(value);
|
|
350
|
+
}
|
|
345
351
|
function buildPrivacySafeTelemetry(entries, damageEntries, options) {
|
|
346
352
|
const groups = new Map;
|
|
347
353
|
const failures = {};
|
|
@@ -376,7 +382,7 @@ function buildPrivacySafeTelemetry(entries, damageEntries, options) {
|
|
|
376
382
|
group.input += entry.totalInput + entry.totalCacheHit + (entry.totalCacheWrite ?? 0);
|
|
377
383
|
group.output += entry.totalOutput;
|
|
378
384
|
groups.set(key, group);
|
|
379
|
-
if (
|
|
385
|
+
if (isTelemetryFailureKind(entry.failureKind)) {
|
|
380
386
|
failures[entry.failureKind] = (failures[entry.failureKind] ?? 0) + 1;
|
|
381
387
|
}
|
|
382
388
|
}
|
|
@@ -416,7 +422,7 @@ function formatPrivacySafeTelemetry(report) {
|
|
|
416
422
|
lines.push("", "## Canary: " + report.canary.decision.toUpperCase() + " (data confidence " + report.canary.dataConfidence + "%)", "");
|
|
417
423
|
const baseline = report.canary.baseline;
|
|
418
424
|
const canary = report.canary.canary;
|
|
419
|
-
lines.push("| Gate | Stable baseline | Canary |", "|---|---:|---:|", "| Runs | " + baseline.runs + " | " + canary.runs + " |", "| Success | " + Math.round(baseline.successRate * 100) + "% | " + Math.round(canary.successRate * 100) + "% |", "| Verify quality | " + (baseline.avgQuality ?? "n/a") + " | " + (canary.avgQuality ?? "n/a") + " |", "| p95 duration | " + baseline.p95LatencyMs + "ms | " + canary.p95LatencyMs + "ms |", "| Avg tokens | " + baseline.avgTokens + " | " + canary.avgTokens + " |", "| Fallback | " + Math.round(baseline.fallbackRate * 100) + "% | " + Math.round(canary.fallbackRate * 100) + "% |", "| Damage | " + Math.round(baseline.damageRate * 100) + "% | " + Math.round(canary.damageRate * 100) + "% |", "| Damage observed | " + Math.round(baseline.damageCoverage * 100) + "% | " + Math.round(canary.damageCoverage * 100) + "% |", "");
|
|
425
|
+
lines.push("| Gate | Stable baseline | Canary |", "|---|---:|---:|", "| Runs (total/applied) | " + baseline.runs + "/" + baseline.appliedRuns + " | " + canary.runs + "/" + canary.appliedRuns + " |", "| Success | " + Math.round(baseline.successRate * 100) + "% | " + Math.round(canary.successRate * 100) + "% |", "| Verify quality | " + (baseline.avgQuality ?? "n/a") + " | " + (canary.avgQuality ?? "n/a") + " |", "| p95 duration | " + baseline.p95LatencyMs + "ms | " + canary.p95LatencyMs + "ms |", "| Avg tokens | " + baseline.avgTokens + " | " + canary.avgTokens + " |", "| Fallback | " + Math.round(baseline.fallbackRate * 100) + "% | " + Math.round(canary.fallbackRate * 100) + "% |", "| Damage | " + Math.round(baseline.damageRate * 100) + "% | " + Math.round(canary.damageRate * 100) + "% |", "| Damage observed | " + Math.round(baseline.damageCoverage * 100) + "% | " + Math.round(canary.damageCoverage * 100) + "% |", "");
|
|
420
426
|
for (const reason of report.canary.reasons)
|
|
421
427
|
lines.push("- " + reason);
|
|
422
428
|
const failureText = Object.entries(report.failures).map(([kind, count]) => kind + "=" + count).join(", ");
|
|
@@ -491,6 +497,27 @@ function damageReportsFile() {
|
|
|
491
497
|
// src/utils/cache.ts
|
|
492
498
|
import fs2 from "fs";
|
|
493
499
|
|
|
500
|
+
// src/utils/lru.ts
|
|
501
|
+
function lruGet(m, key) {
|
|
502
|
+
if (!m.has(key))
|
|
503
|
+
return;
|
|
504
|
+
const v = m.get(key);
|
|
505
|
+
m.delete(key);
|
|
506
|
+
m.set(key, v);
|
|
507
|
+
return v;
|
|
508
|
+
}
|
|
509
|
+
function lruSet(m, key, value, max) {
|
|
510
|
+
if (m.has(key))
|
|
511
|
+
m.delete(key);
|
|
512
|
+
m.set(key, value);
|
|
513
|
+
while (m.size > max) {
|
|
514
|
+
const oldest = m.keys().next().value;
|
|
515
|
+
if (oldest === undefined)
|
|
516
|
+
break;
|
|
517
|
+
m.delete(oldest);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
494
521
|
// src/utils/tokens.ts
|
|
495
522
|
class TokenCalibrationStore {
|
|
496
523
|
maxEntries;
|
|
@@ -505,35 +532,19 @@ class TokenCalibrationStore {
|
|
|
505
532
|
if (!provider)
|
|
506
533
|
return 1;
|
|
507
534
|
const exactKey = calibrationKey(provider, model);
|
|
508
|
-
const exact = this.factors
|
|
509
|
-
if (exact !== undefined)
|
|
510
|
-
this.factors.delete(exactKey);
|
|
511
|
-
this.factors.set(exactKey, exact);
|
|
535
|
+
const exact = lruGet(this.factors, exactKey);
|
|
536
|
+
if (exact !== undefined)
|
|
512
537
|
return exact;
|
|
513
|
-
|
|
514
|
-
const providerKey = calibrationKey(provider);
|
|
515
|
-
const fallback = this.factors.get(providerKey);
|
|
516
|
-
if (fallback !== undefined) {
|
|
517
|
-
this.factors.delete(providerKey);
|
|
518
|
-
this.factors.set(providerKey, fallback);
|
|
519
|
-
}
|
|
520
|
-
return fallback ?? 1;
|
|
538
|
+
return lruGet(this.factors, calibrationKey(provider)) ?? 1;
|
|
521
539
|
}
|
|
522
540
|
calibrate(estimated, actual, provider, model) {
|
|
523
541
|
if (actual <= 0 || estimated <= 0 || !provider)
|
|
524
542
|
return;
|
|
525
543
|
const key = calibrationKey(provider, model);
|
|
526
|
-
const prev = this.factors
|
|
544
|
+
const prev = lruGet(this.factors, key) ?? 1;
|
|
527
545
|
const target = prev * actual / estimated;
|
|
528
546
|
const clamped = Math.max(TUNING.CALIBRATION_CLAMP_MIN, Math.min(TUNING.CALIBRATION_CLAMP_MAX, target));
|
|
529
|
-
this.factors.
|
|
530
|
-
this.factors.set(key, prev * TUNING.EMA_PREV + clamped * TUNING.EMA_SAMPLE);
|
|
531
|
-
while (this.factors.size > Math.max(1, this.maxEntries)) {
|
|
532
|
-
const oldest = this.factors.keys().next().value;
|
|
533
|
-
if (oldest === undefined)
|
|
534
|
-
break;
|
|
535
|
-
this.factors.delete(oldest);
|
|
536
|
-
}
|
|
547
|
+
lruSet(this.factors, key, prev * TUNING.EMA_PREV + clamped * TUNING.EMA_SAMPLE, Math.max(1, this.maxEntries));
|
|
537
548
|
}
|
|
538
549
|
size() {
|
|
539
550
|
return this.factors.size;
|
|
@@ -621,6 +632,92 @@ function extractFileRefs(summary) {
|
|
|
621
632
|
return candidates.filter(isLikelyFileRef);
|
|
622
633
|
}
|
|
623
634
|
|
|
635
|
+
// src/domain/summary-schema.ts
|
|
636
|
+
function classifyHeading(raw) {
|
|
637
|
+
const text = raw.replace(/^#+\s*/, "").replace(/[:\s]+$/, "").trim().toLowerCase();
|
|
638
|
+
if (!text)
|
|
639
|
+
return "unknown";
|
|
640
|
+
if (text === "goal" || text === "goals" || text === "objective" || text === "objectives")
|
|
641
|
+
return "goal";
|
|
642
|
+
if (text.startsWith("constraint") || text.includes("preference"))
|
|
643
|
+
return "constraints";
|
|
644
|
+
if (text === "progress" || text === "status")
|
|
645
|
+
return "progress";
|
|
646
|
+
if (text.includes("key decision") || text === "decisions")
|
|
647
|
+
return "decisions";
|
|
648
|
+
if (text.includes("file") && text.includes("modif"))
|
|
649
|
+
return "files-modified";
|
|
650
|
+
if (text.includes("file") && (text.includes("read") || text.includes("viewed")))
|
|
651
|
+
return "files-read";
|
|
652
|
+
if (text.includes("next step") || text === "next actions")
|
|
653
|
+
return "next-steps";
|
|
654
|
+
if (text.includes("critical context") || text === "important context")
|
|
655
|
+
return "critical-context";
|
|
656
|
+
if (text === "topics" || text.includes("topics covered"))
|
|
657
|
+
return "topics";
|
|
658
|
+
if (text.includes("open loop") || text.includes("unresolved"))
|
|
659
|
+
return "open-loops";
|
|
660
|
+
if (text.includes("changes since") || text === "changes")
|
|
661
|
+
return "changes";
|
|
662
|
+
if (text.includes("verification"))
|
|
663
|
+
return "verification-note";
|
|
664
|
+
return "unknown";
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
// src/domain/summary-parse.ts
|
|
668
|
+
var HEADING_RE = /^(#{1,3})\s+(.+?)\s*$/;
|
|
669
|
+
function summaryEvidenceLine(value, maxLength) {
|
|
670
|
+
return value.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim().replace(/^(?:(?:#{1,6}|[-*+]|>)\s+)+/, "").slice(0, maxLength).trim();
|
|
671
|
+
}
|
|
672
|
+
function mergeBodies(first, second) {
|
|
673
|
+
const seen = new Set;
|
|
674
|
+
return [first, second].filter(Boolean).flatMap((body) => body.split(`
|
|
675
|
+
`)).filter((line) => seen.has(line) ? false : (seen.add(line), true)).join(`
|
|
676
|
+
`).trim();
|
|
677
|
+
}
|
|
678
|
+
function parseSummary(markdown) {
|
|
679
|
+
const sections = [];
|
|
680
|
+
const lines = markdown.split(`
|
|
681
|
+
`);
|
|
682
|
+
let currentHeading = "";
|
|
683
|
+
let currentKind = "unknown";
|
|
684
|
+
let bodyLines = [];
|
|
685
|
+
let started = false;
|
|
686
|
+
const flush = () => {
|
|
687
|
+
if (!started)
|
|
688
|
+
return;
|
|
689
|
+
const body = bodyLines.join(`
|
|
690
|
+
`).trim();
|
|
691
|
+
const existing = currentKind === "unknown" ? undefined : sections.find((s) => s.kind === currentKind);
|
|
692
|
+
if (existing)
|
|
693
|
+
existing.body = mergeBodies(existing.body, body);
|
|
694
|
+
else
|
|
695
|
+
sections.push({ kind: currentKind, heading: currentHeading.trim(), body });
|
|
696
|
+
};
|
|
697
|
+
for (const line of lines) {
|
|
698
|
+
const m = line.match(HEADING_RE);
|
|
699
|
+
if (m) {
|
|
700
|
+
const kind = classifyHeading(m[2]);
|
|
701
|
+
if (m[1].length <= 2 || kind !== "unknown") {
|
|
702
|
+
flush();
|
|
703
|
+
currentHeading = "## " + m[2].trim();
|
|
704
|
+
currentKind = kind;
|
|
705
|
+
bodyLines = [];
|
|
706
|
+
started = true;
|
|
707
|
+
continue;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
if (started)
|
|
711
|
+
bodyLines.push(line);
|
|
712
|
+
}
|
|
713
|
+
flush();
|
|
714
|
+
return { sections };
|
|
715
|
+
}
|
|
716
|
+
function findSection(summary, kind) {
|
|
717
|
+
const parsed = typeof summary === "string" ? parseSummary(summary) : summary;
|
|
718
|
+
return parsed.sections.find((s) => s.kind === kind);
|
|
719
|
+
}
|
|
720
|
+
|
|
624
721
|
// src/utils/extraction.ts
|
|
625
722
|
var CONSTRAINT_PATTERNS = [
|
|
626
723
|
{ re: /\b(?:must|need|require|has to|important)\b.*\b(?:be|use|have|include|support)\b/i, cat: "requirement", conf: TUNING.CONFIDENCE_HIGH },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-insights.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-insights.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"dashboard-insights.d.ts","sourceRoot":"","sources":["../../src/ui/dashboard-insights.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChI,OAAO,KAAK,EAAE,mBAAmB,EAAuB,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGtH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,uBAAuB,CAAC;IACpC,OAAO,EAAE,uBAAuB,CAAC;IACjC,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAiBD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,GAAG,SAAa,GACf,uBAAuB,CA0CzB;AA4FD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAgB5E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAQ9E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAkB3E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,aAAa,GAAE,SAAS,oBAAoB,EAAO,EACnD,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACvE,iBAAiB,CAiBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../src/ui/overlays.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAiB,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,KAAK,EACV,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAC9E,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAClE,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG3F,OAAO,
|
|
1
|
+
{"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../src/ui/overlays.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7I,OAAO,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7I,OAAO,EAAmD,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGtG,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKnF,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAcrF,wBAAgB,SAAS,CACvB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,EACzC,QAAQ,EAAE,oBAAoB,GAC7B,iBAAiB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAkB5C;AAWD,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAgC;AAEpH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,SAAI,GACnB,MAAM,CAMR;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAU3N;AAKD,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAoD3B;AAUD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEzH;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAA+C;AAC7H,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAgD;AAE/H;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,IAAI,CAUN;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAS/E;AAwCD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACtC,aAAa,EAAE,UAAU,EAAE,EAC3B,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAAC,QAAQ,CAAC,CAyBhC;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,oBAAoB,EAC3B,YAAY,EAAE,MAAM,EACpB,aAAa,GAAE,UAAU,EAAO,EAChC,cAAc,GAAE,aAAyB,GACxC,oBAAoB,CAwDtB;AAUD,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,CAAC,GACtD,IAAI,CAIN;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,YAAY,GAAG,cAAc,CAAC,CAAC,GAAG,SAAS,EAC7L,QAAQ,EAAE,oBAAoB,GAC7B,IAAI,CASN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,SAAM,GAAG,mBAAmB,EAAE,CAkCjE"}
|
|
@@ -17,6 +17,8 @@ export interface FlatToolCall {
|
|
|
17
17
|
id?: string;
|
|
18
18
|
arguments: Record<string, unknown>;
|
|
19
19
|
}
|
|
20
|
+
/** Identity contract shared by extraction and pruning for nested parallel calls. */
|
|
21
|
+
export declare function nestedToolCallId(wrapperId: string | undefined, messageIndex: number, toolIndex: number, nestedId?: unknown): string;
|
|
20
22
|
/**
|
|
21
23
|
* Flatten a single assistant content block into one or more tool-call descriptors.
|
|
22
24
|
* Transparently expands `multi_tool_use.parallel` wrappers into their nested tool_uses.
|
|
@@ -42,12 +44,15 @@ export declare function trackFileOps(msgs: LlmMessage[], _tcIdx?: ToolCallIndex)
|
|
|
42
44
|
read: string[];
|
|
43
45
|
deleted: string[];
|
|
44
46
|
};
|
|
47
|
+
export declare function isTransientToolDiagnostic(text: string): boolean;
|
|
45
48
|
export declare function catalogErrors(msgs: LlmMessage[], _tcIdx?: ToolCallIndex): StructuredExtraction["errors"];
|
|
46
49
|
export declare function extractDecisions(msgs: LlmMessage[], _tcIdx?: ToolCallIndex): StructuredExtraction["decisions"];
|
|
47
50
|
export declare function isDiagnosticConstraintText(text: string): boolean;
|
|
48
51
|
export declare function mineConstraints(msgs: LlmMessage[]): StructuredExtraction["constraints"];
|
|
49
52
|
export declare function segmentTopicsHeuristic(msgs: LlmMessage[], pc: ProfileConfig, maxSegs?: number, _tcIdx?: ToolCallIndex): StructuredExtraction["topics"];
|
|
50
53
|
export declare function buildTimeline(msgs: LlmMessage[], errors: StructuredExtraction["errors"]): StructuredExtraction["timeline"];
|
|
54
|
+
/** Machine status from an earlier compaction is context, not an active user goal. */
|
|
55
|
+
export declare function isCompactionStatusText(text: string): boolean;
|
|
51
56
|
export declare function extractMainGoal(msgs: LlmMessage[]): string | null;
|
|
52
57
|
/** Extract open loops — unresolved tasks from the conversation */
|
|
53
58
|
export declare function extractOpenLoops(msgs: LlmMessage[], extraction: StructuredExtraction): OpenLoop[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/utils/extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/utils/extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export declare function findGitRoot(cwd: string): string | null;
|
|
|
31
31
|
* Using cwd/git-root as primary prevents cross-project fingerprint contamination
|
|
32
32
|
* when a session has no file operations (review, discussion, debugging).
|
|
33
33
|
*/
|
|
34
|
-
export declare function deriveProjectIdFromCwd(cwd: string): string;
|
|
34
|
+
export declare function deriveProjectIdFromCwd(cwd: string): string | null;
|
|
35
35
|
export declare function deriveProjectId(cwd: string, extraction: StructuredExtraction, sessionId?: string): string;
|
|
36
36
|
/**
|
|
37
37
|
* Load project fingerprint from cache.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/utils/fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqDD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEtD;AAkED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../src/utils/fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAOxD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqDD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEtD;AAkED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMjE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BzG;AAoDD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAKnF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,GAC/B,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,MAAM,CAQlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pruning.d.ts","sourceRoot":"","sources":["../../src/utils/pruning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"pruning.d.ts","sourceRoot":"","sources":["../../src/utils/pruning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGxG,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,gBAAgB,CAAC,EAAE,aAAa,GAAG,aAAa,CAgNlG"}
|
package/dist/utils/state.d.ts
CHANGED
|
@@ -24,10 +24,11 @@ export declare function upsertContinuityOverride(overrides: ContinuityOverride[]
|
|
|
24
24
|
export declare function applyContinuityOverrides(state: CompactionState, overrides: ContinuityOverride[]): CompactionState;
|
|
25
25
|
export declare function buildCompactionState(extraction: StructuredExtraction, openLoops: OpenLoop[], report: ExplorationReport | null, nextActions: string[], criticalContext: string[], loopOverrides?: LoopOverride[]): CompactionState;
|
|
26
26
|
/**
|
|
27
|
-
* Conservative cross-compaction merge: absence
|
|
28
|
-
* is
|
|
27
|
+
* Conservative cross-compaction merge: neither absence nor free-form goal text
|
|
28
|
+
* is evidence that a decision, constraint, error, or loop was resolved.
|
|
29
29
|
* Current facts win, old unresolved facts remain, and every collection is
|
|
30
|
-
* bounded so continuity cannot grow without limit.
|
|
30
|
+
* bounded so continuity cannot grow without limit. Goal shifts are recorded as
|
|
31
|
+
* context; only positive resolution evidence or an explicit override retires a fact.
|
|
31
32
|
*/
|
|
32
33
|
export declare function mergeCompactionStates(previous: CompactionState | null, current: CompactionState): CompactionState;
|
|
33
34
|
/** Build the bounded, deterministic context that must survive every generation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAClE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAClD,MAAM,aAAa,CAAC;AAqBrB,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/utils/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAkGpE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAQtE;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,YAA6B,UAAU,SAAM,EAAI;IAEjD,KAAK,IAAI,IAAI,CAA0B;IAEvC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ7C;IAED,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAUpF;IAED,IAAI,IAAI,MAAM,CAA8B;CAC7C;AAQD,mEAAmE;AACnE,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAmCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,wBAAuB,GAAG,MAAM,CAE1H;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,wBAAuB,GAAG,IAAI,CAEpJ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC;IACvG,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC;CACzH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,GAAE,qBAA4C,GACxD,cAAc,CAehB"}
|
package/docs/MIGRATING_TO_V8.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Migrating from v7 to v8
|
|
2
2
|
|
|
3
|
-
This guide applies to the stable `8.0.
|
|
3
|
+
This guide applies to the stable `8.0.7` release.
|
|
4
4
|
|
|
5
5
|
## Compatibility
|
|
6
6
|
|
|
@@ -34,10 +34,18 @@ the sanitized state. v8.0.3 keeps the same graph file and transparently opens it
|
|
|
34
34
|
with `node:sqlite` under Pi or `bun:sqlite` in Bun tooling. v8.0.4 changes only
|
|
35
35
|
compaction planning, UX, and privacy-safe operational metrics; v8.0.5 bounds
|
|
36
36
|
user-facing failure diagnostics; v8.0.6 streamlines the three-mode decision card
|
|
37
|
-
and live progress brief.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
and live progress brief. v8.0.7 reserves post-summary planning headroom,
|
|
38
|
+
sanitizes known transient diagnostics, bounds active continuity before resolved
|
|
39
|
+
history, and introduces branch-occurrence context-graph schema v1. On first graph
|
|
40
|
+
open, user-confirmed manual memories remain; older derived compaction nodes are
|
|
41
|
+
reset and repopulate from later apply-confirmed compactions.
|
|
42
|
+
|
|
43
|
+
Facts remain conservative across follow-ups and free-form goal changes: bounded
|
|
44
|
+
absence or new wording is never resolution. Goal shifts are retained as
|
|
45
|
+
`Previous goal` context; errors and loops retire only through positive resolution
|
|
46
|
+
evidence or an explicit override. Newer successful file access/mutation/delete
|
|
47
|
+
evidence still resolves contradictory file status. State and graph resolution use
|
|
48
|
+
the complete host-visible branch ancestry, not a truncated lineage or siblings.
|
|
41
49
|
|
|
42
50
|
### Persistent context graph
|
|
43
51
|
|
|
@@ -47,11 +55,14 @@ Applied, verified compactions are indexed into:
|
|
|
47
55
|
~/.pi/agent/.cache/smart-compact/context-graph.sqlite
|
|
48
56
|
```
|
|
49
57
|
|
|
50
|
-
The database is local, project-partitioned, mode `0600
|
|
51
|
-
|
|
52
|
-
queued for the next event-loop turn so
|
|
53
|
-
native compaction hook's latency. It enables
|
|
54
|
-
`smart_recall` and confirmation-gated `smart_save_memory`.
|
|
58
|
+
The database is local, project-partitioned, mode `0600`, and bounded to 2,000
|
|
59
|
+
non-structural fact nodes per project. Private artifact directories are 0700 and
|
|
60
|
+
files are 0600. Apply-confirmed state is queued for the next event-loop turn so
|
|
61
|
+
SQLite indexing is not part of the native compaction hook's latency. It enables
|
|
62
|
+
`smart_recall` and confirmation-gated `smart_save_memory`. Memory writes fail
|
|
63
|
+
closed when the working directory is exactly `HOME` or the filesystem root; the
|
|
64
|
+
interactive prompt shows the complete scrubbed memory and paths. A project may
|
|
65
|
+
hold at most 500 active manual memories. Set
|
|
55
66
|
`contextGraphEnabled` to `false` before first use to disable indexing and both
|
|
56
67
|
tools. Disabling does not delete an existing database.
|
|
57
68
|
|
|
@@ -66,7 +77,9 @@ Consequently Data Confidence may start below 85 and rise as complete v8 runs
|
|
|
66
77
|
replace legacy evidence.
|
|
67
78
|
|
|
68
79
|
`telemetryChannel` defaults to `stable`. Use `canary` only on an externally
|
|
69
|
-
selected canary installation
|
|
80
|
+
selected canary installation. Reports show total/applied runs, and only non-dry,
|
|
81
|
+
host-confirmed applied outcomes count toward promotion; deterministic green
|
|
82
|
+
checks do not imply `PROMOTE`. The extension reports Hold/Rollback/Promote but
|
|
70
83
|
never deploys, edits configuration, or rolls itself back.
|
|
71
84
|
|
|
72
85
|
## New optional settings
|
|
@@ -85,10 +98,14 @@ All defaults preserve the selected model and require no migration edits.
|
|
|
85
98
|
|
|
86
99
|
See the README configuration table for budgets and monitoring options.
|
|
87
100
|
|
|
88
|
-
##
|
|
101
|
+
## Backups and rollout
|
|
102
|
+
|
|
103
|
+
v8.0.7 backs up the complete selected pre-prune conversation after configured
|
|
104
|
+
scrubbing, using 0600 files in a 0700 directory. Retention only prunes
|
|
105
|
+
marker-owned backups.
|
|
89
106
|
|
|
90
107
|
1. Back up `~/.pi/agent/settings.json` and the Smart Compact cache directory.
|
|
91
|
-
2. Install the exact stable version: `pi install npm:pi-smart-compact@8.0.
|
|
108
|
+
2. Install the exact stable version: `pi install npm:pi-smart-compact@8.0.7`.
|
|
92
109
|
3. Leave all model routes null initially.
|
|
93
110
|
4. Keep `telemetryChannel: "stable"` unless intentionally running a separate
|
|
94
111
|
canary cohort.
|
package/docs/RELEASE.md
CHANGED
|
@@ -26,10 +26,11 @@ bun install --frozen-lockfile
|
|
|
26
26
|
bun run release:check
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
`release:check`
|
|
30
|
-
|
|
31
|
-
manifest/version/
|
|
32
|
-
|
|
29
|
+
`release:check` runs the expanded CI chain: source and scripts typechecking,
|
|
30
|
+
all tests, the adversarial gate, build, and release audit. The audit verifies the
|
|
31
|
+
packed manifest/version/peers, supported SECURITY major, package contents,
|
|
32
|
+
isolated and frozen installs, extension/tool registration, Node SQLite, and
|
|
33
|
+
packaged CLIs.
|
|
33
34
|
|
|
34
35
|
Then validate the host boundary in an isolated workspace:
|
|
35
36
|
|
|
@@ -52,8 +53,8 @@ bun run telemetry-report --min-canary-runs=20
|
|
|
52
53
|
|
|
53
54
|
Check that:
|
|
54
55
|
|
|
55
|
-
- [ ] packed files are limited to `dist`, `docs`, README
|
|
56
|
-
and package metadata;
|
|
56
|
+
- [ ] packed files are limited to `dist`, `docs`, README, LICENSE, CHANGELOG,
|
|
57
|
+
SECURITY, SUPPORT, ARCHITECTURE, and package metadata;
|
|
57
58
|
- [ ] `dist/index.js`, declarations, and all three bundled CLIs are present;
|
|
58
59
|
- [ ] the extension registers `smart_compact`, `smart_recall`, and
|
|
59
60
|
`smart_save_memory` from the packed install;
|
|
@@ -74,10 +75,12 @@ After explicit approval to publish an RC, use the npm `next` tag rather than
|
|
|
74
75
|
```
|
|
75
76
|
|
|
76
77
|
Keep all stage model routes null unless a separate routing decision is approved.
|
|
77
|
-
Collect at least 20 schema-v2 canary runs,
|
|
78
|
-
≥70% run-correlated damage-observation
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
Collect at least 20 non-dry, host-confirmed **applied** schema-v2 canary runs,
|
|
79
|
+
≥70% verifier-quality coverage, and ≥70% run-correlated damage-observation
|
|
80
|
+
coverage in both stable and canary cohorts. Inspect the report's total/applied
|
|
81
|
+
counts: dry runs and staged-but-unapplied runs are not promotion evidence.
|
|
82
|
+
Missing observations are missing evidence, never clean runs. A deterministic
|
|
83
|
+
green release check never implies `PROMOTE`. Promotion requires:
|
|
81
84
|
|
|
82
85
|
- [ ] `telemetry-report` says `PROMOTE`;
|
|
83
86
|
- [ ] dashboard Data Confidence is ≥85;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-smart-compact",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.7",
|
|
4
4
|
"description": "Verification-oriented smart compaction extension for Pi Coding Agent — deterministic extraction, exploration, synthesis, verification, metrics, and safety checks.",
|
|
5
5
|
"packageManager": "bun@1.3.14",
|
|
6
6
|
"engines": {
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"dist",
|
|
41
41
|
"docs",
|
|
42
42
|
"README.md",
|
|
43
|
+
"ARCHITECTURE.md",
|
|
43
44
|
"LICENSE",
|
|
44
45
|
"CHANGELOG.md",
|
|
45
46
|
"SECURITY.md",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thin re-export shim that lets `app/steps/synthesize.ts` reach the
|
|
3
|
-
* exploration phase without importing through a deep path. Keeping the
|
|
4
|
-
* indirection here means callers don't need to know whether the
|
|
5
|
-
* implementation lives under `phases/` or some future `app/explore`.
|
|
6
|
-
*/
|
|
7
|
-
export { exploreConversation, shouldExplore } from "../phases/explore.ts";
|
|
8
|
-
//# sourceMappingURL=explore-wrap.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"explore-wrap.d.ts","sourceRoot":"","sources":["../../src/app/explore-wrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|