pi-smart-compact 10.0.1 → 10.1.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.
Files changed (53) hide show
  1. package/ARCHITECTURE.md +71 -28
  2. package/CHANGELOG.md +124 -0
  3. package/README.md +12 -7
  4. package/assets/skills/context-management/SKILL.md +5 -5
  5. package/dist/app/background-preparation.d.ts +13 -0
  6. package/dist/app/background-preparation.d.ts.map +1 -1
  7. package/dist/app/compaction-commit-store.d.ts +1 -1
  8. package/dist/app/compaction-commit-store.d.ts.map +1 -1
  9. package/dist/app/context-operations.d.ts +8 -2
  10. package/dist/app/context-operations.d.ts.map +1 -1
  11. package/dist/app/effective-state.d.ts.map +1 -1
  12. package/dist/app/hindsight-memory.d.ts.map +1 -1
  13. package/dist/app/lazy-tools.d.ts.map +1 -1
  14. package/dist/app/pending-slot.d.ts +2 -2
  15. package/dist/app/pending-slot.d.ts.map +1 -1
  16. package/dist/app/register-context-tools.d.ts.map +1 -1
  17. package/dist/app/register-navigation.d.ts +3 -1
  18. package/dist/app/register-navigation.d.ts.map +1 -1
  19. package/dist/app/register-smart-compact-command.d.ts.map +1 -1
  20. package/dist/app/register-smart-compact-tool.d.ts.map +1 -1
  21. package/dist/app/register-smart-context-tool.d.ts +1 -0
  22. package/dist/app/register-smart-context-tool.d.ts.map +1 -1
  23. package/dist/app/settled-auto-trigger.d.ts.map +1 -1
  24. package/dist/app/stage-auth.d.ts.map +1 -1
  25. package/dist/app/steps/synthesize.d.ts.map +1 -1
  26. package/dist/constants.d.ts +5 -4
  27. package/dist/constants.d.ts.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1424 -357
  30. package/dist/phases/explore.d.ts.map +1 -1
  31. package/dist/phases/synthesize.d.ts +1 -1
  32. package/dist/phases/synthesize.d.ts.map +1 -1
  33. package/dist/phases/verify.d.ts +13 -5
  34. package/dist/phases/verify.d.ts.map +1 -1
  35. package/dist/rtk.js +8 -7
  36. package/dist/types.d.ts +5 -2
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/ui/profiles.d.ts +1 -1
  39. package/dist/ui/profiles.d.ts.map +1 -1
  40. package/dist/ui/settings-overlay.d.ts.map +1 -1
  41. package/dist/ui/tool-rows.d.ts +76 -0
  42. package/dist/ui/tool-rows.d.ts.map +1 -0
  43. package/dist/utils/cache.d.ts.map +1 -1
  44. package/dist/utils/config.d.ts.map +1 -1
  45. package/dist/utils/extraction.d.ts +22 -0
  46. package/dist/utils/extraction.d.ts.map +1 -1
  47. package/dist/utils/state.d.ts.map +1 -1
  48. package/docs/README.md +8 -13
  49. package/docs/RELEASE.md +4 -3
  50. package/docs/configuration.md +101 -38
  51. package/docs/evaluation.md +29 -24
  52. package/docs/guide.md +58 -32
  53. package/package.json +1 -1
package/ARCHITECTURE.md CHANGED
@@ -53,9 +53,7 @@ flowchart LR
53
53
  Quality means retained constraints, trustworthy failure evidence and low
54
54
  retrieval churn, not merely fewer tokens. There are no recurring
55
55
  model-visible status prompts, no automatic error deletion, and no destructive
56
- file rollback. The [2026-09-24 context hygiene report](https://github.com/alpertarhan/pi-smart-compact/blob/main/docs/reports/context-hygiene-2026-09-24.md)
57
- (repository only, historical) records the original experiments and acceptance
58
- criteria.
56
+ file rollback.
59
57
 
60
58
  ## Design ideas
61
59
 
@@ -112,10 +110,10 @@ tool exposure, policy and navigation state;
112
110
  (see [recoverable trimming](#recoverable-trimming)); the RTK companion uses
113
111
  `tool_call`.
114
112
 
115
- Tool exposure is owned by `app/lazy-tools.ts`. With `toolLoading: "lazy"`
116
- (default) only the `smart_tools` loader is active; a group becomes active when
117
- the agent loads it, and loaded groups are forgotten at `session_start`,
118
- `session_tree` and `session_compact`. `eager` activates every permitted group;
113
+ Tool exposure is owned by `app/lazy-tools.ts`. The default `eager` mode keeps
114
+ permitted declarations stable from session start. Optional `lazy` exposes
115
+ `smart_tools` first; loaded groups reset at `session_start` and `session_tree`,
116
+ not `session_compact` (native kept thinking may still bind system/tools).
119
117
  `off` removes all owned tools while the human UI keeps working. Group
120
118
  permissions (`agentToolAccess`, memory backend, `contextNavigationEnabled`)
121
119
  apply in every mode. The exposure removes only its own tools, restores only
@@ -144,7 +142,7 @@ settings.
144
142
  `ui/profiles.ts` derives presets from exact persisted flags. Behavior presets
145
143
  are **Manual only**, **Manual + agent**, **Cleanup only** and **Fully
146
144
  automatic**; the built-in defaults, which match none of them, are labeled
147
- **With Pi (default)**. Summary formats are **Verified text**, **Text +
145
+ **Pressure-first (default)**. Summary formats are **Verified text**, **Text +
148
146
  images** and **Provider (experimental)**; provider output needs a second
149
147
  confirming Enter, and capacity-ineligible models cannot be selected. Fully
150
148
  automatic selects the `settled` strategy. Presets atomically patch existing
@@ -342,6 +340,15 @@ anchor footer and the Anthropic anchor cache marker (`app/anchor-cache.ts`).
342
340
  type `smart-context-anchor`, plus `smart_navigation` tool results) and legacy
343
341
  `context` tool anchors; recall scans other sessions' JSONL read-only.
344
342
 
343
+ Agent anchors require the shared early pressure gate by default. An anchor
344
+ requests one safe consolidation through `smart_context`'s existing queue;
345
+ only its new region can be trimmed before first replay. Previous anchor and
346
+ checkpoint prefixes stay protected. Append-only anchors do not invalidate a
347
+ prepared summary; ready/running compaction takes priority over agent cleanup.
348
+ Human commands bypass pressure gates, not safety checks. Selective trim/rewind
349
+ fail closed if they would change history before retained signed Anthropic
350
+ thinking. Byte-identical thinking alone does not preserve its prefix binding.
351
+
345
352
  A human anchor is a `sendMessage` custom message followed by a native label on
346
353
  that entry; a human pivot navigates to the label so Pi's `custom_message`
347
354
  handling cannot drop the anchor text. An agent pivot is queued by the tool,
@@ -372,6 +379,12 @@ breadcrumbs, and a "Changes Since Last Compaction" delta. Snapshots are scoped
372
379
  to project, session and branch head; see
373
380
  [state, caching and persistence](#state-caching-and-persistence).
374
381
 
382
+ Same-question decisions keep the latest non-empty answered record, including
383
+ its provenance; an unanswered re-ask does not erase the prior answer. Fallback,
384
+ verification and state merging share this selection rule. Automatic constraint
385
+ retirement uses bounded recognition of explicit releases, not general
386
+ natural-language entailment: question, report and denial forms are not grants.
387
+
375
388
  ## 3. Verified compaction
376
389
 
377
390
  ### Automatic strategies
@@ -380,33 +393,45 @@ to project, session and branch head; see
380
393
  `background` runs and the native hook does not replace Pi's summaries. Pi's own
381
394
  compactor is not affected. Hygiene can still run.
382
395
 
383
- - **`native-hook`** (default) is passive. It participates only when Pi starts
396
+ - **`native-hook`** is passive. It participates only when Pi starts
384
397
  a compaction; its percentage setting is a minimum replacement gate, not a
385
398
  scheduler, and Pi auto-compaction must itself be enabled for host-driven
386
399
  runs.
387
- - **`settled`** applies finite token/percentage, queue, in-flight and
400
+ - **`settled`** (default, 80% apply gate) applies finite token/percentage, queue, in-flight and
388
401
  per-session cooldown guards at idle `agent_settled`, then asks Pi for a
389
- normal host compaction. Pi re-enters `session_before_compact`, which reuses an
402
+ normal host compaction. Every finished attempt, including callback errors,
403
+ synchronous throws and watchdog expiry, starts the cooldown; late callbacks
404
+ cannot reset it or change a newer request's state. Pi re-enters `session_before_compact`, which reuses an
390
405
  already tool-staged summary or runs EESV exactly once under the host's signal
391
406
  and timeout. `session_compact` stays the only durable commit authority;
392
407
  `session_compact_failed` discards the candidate. This keeps proactive
393
408
  triggering out of the pending/commit state machine and preserves
394
- branch-provenance checks.
395
- - **`background`** (`app/background-preparation.ts`) snapshots branch, model,
396
- session and usage before asynchronous work. `prepareContextPercent` sets an
409
+ branch-provenance checks. Watchdog expiry is not a host cancellation: a busy
410
+ host is reported as pending without manual-retry advice, and late completion
411
+ remains valid.
412
+ - **`background`** (opt-in, `app/background-preparation.ts`) snapshots branch,
413
+ model, session, system prompt and usage before asynchronous work. Effective
414
+ tool definitions are fingerprinted and checked again before use. `prepareContextPercent` sets an
397
415
  independent early gate with the existing minimum token floor; null preserves
398
416
  `applyTokens - clamp(floor(applyTokens * 0.125), 8192, 32000)`. An explicit
399
417
  prepare percentage must be below the effective `minContextPercent` apply gate.
400
418
  Only pipeline admission is lowered; targets, yield and apply-time safety are
401
419
  unchanged. A private pending slot isolates cancellation from foreground
402
- staging. One task, a ten-minute attempt cooldown and a five-minute ready TTL
403
- bound speculation. Model/config changes, branch navigation, new compaction or
420
+ staging. One task, a ten-minute attempt cooldown and configured `pendingTtlMs`
421
+ (default five minutes) bound speculation. Model/system/tool/config changes, branch navigation, new compaction or
404
422
  context edits, switch/shutdown and native compaction invalidate unfinished
405
423
  work, and late completion cannot publish after cancellation. Before reuse, a
406
424
  content fingerprint proves the captured prefix is unchanged; appended tail
407
425
  growth must still satisfy the verified target, minimum yield and response
408
426
  reserve.
409
427
 
428
+ `contextPressure` supplies execution, status and TUI with the same policy window
429
+ and early/apply gates (288k/320k for a 400k window at default 80%). Roomy history
430
+ stays unchanged by default; `contextPressureOnly: false` opts into legacy
431
+ break-even/cold-cache hygiene. Metadata checkpoints and first-delivery offload
432
+ are independent of old-prefix pruning. Cleanup commits before preparation can
433
+ snapshot it, and later compaction observes Pi's updated projected usage.
434
+
410
435
  Preparation never waits inside `turn_end`. Proactive application waits for
411
436
  idle `agent_settled`; an ongoing tool loop relies on Pi's native maintenance
412
437
  boundary. No boundary draft bypasses the `session_compact` commit protocol. The
@@ -554,7 +579,12 @@ Deterministically pulls modified/read/deleted files, tool and bash-like errors,
554
579
  retry/resolution signals, explicit and implicit decisions, constraints and
555
580
  preferences, heuristic topic segments, timeline events, the main goal and open
556
581
  loops across the whole compacted prefix. This is the ground truth that
557
- synthesis and verification trust.
582
+ synthesis and verification trust. Dialog answers follow tool-call IDs rather
583
+ than a fixed next-message window. Fresh extraction and cached reconciliation
584
+ share retry-result classification and inspect later/sibling retries; a false
585
+ `isError` flag cannot turn an error-bearing command result into success.
586
+ Self-notice filtering distinguishes a standalone user rule from that phrase
587
+ inside an attributed Smart Compact warning.
558
588
 
559
589
  ### Explore
560
590
 
@@ -566,7 +596,8 @@ error chains. Tool support is probed once and cached per run; without function
566
596
  calling the system falls back to a direct structured analysis. The tool
567
597
  conversation is capped at three rounds, each response is capped where the
568
598
  provider supports output limits, and the shared prefix uses short-lived prompt
569
- caching.
599
+ caching. Every exploration path leaves two calls for batch synthesis and final
600
+ assembly; with two or fewer calls remaining it uses deterministic boundaries.
570
601
 
571
602
  ### Synthesize
572
603
 
@@ -583,7 +614,12 @@ caching.
583
614
  Session-aware prompting, decision propagation across later batches,
584
615
  mode-specific thresholds and output limits, provider-aware wave concurrency,
585
616
  aggregate prompt-token reservation and deterministic fallback assembly when any
586
- budget or LLM call fails.
617
+ budget or LLM call fails. Batch retries and queued workers recheck remaining
618
+ calls before dispatch so they cannot spend the final assembly call.
619
+ Single-pass and final assembly reject known nonterminal stop reasons and
620
+ unclosed Markdown fences before the synthesis cache can retain the result.
621
+ Their existing error paths use deterministic fallback, without extra retries
622
+ or enlarged budgets.
587
623
 
588
624
  ### Verify
589
625
 
@@ -595,6 +631,13 @@ fabricated paths, done/unresolved inconsistencies, explicit decisions, open
595
631
  loops and unsupported high-risk outcome claims. Claims such as "tests passed"
596
632
  need matching source prose or a successful related tool result.
597
633
 
634
+ Explicit decisions are question–answer units, not independent bags of words:
635
+ short/symbolic/numeric answers retain their identity, and one question cannot
636
+ borrow another question's answer. Answer polarity is separate from the
637
+ question's wording. A conflicting answer is an inconsistency that cannot be
638
+ repaired by simply appending the expected answer. These deterministic checks
639
+ remain bounded heuristics, not a proof of arbitrary prose equivalence.
640
+
598
641
  Repair order is intentional: (1) deterministic patch first (free, idempotent);
599
642
  (2) one LLM patch only in `thorough` mode if still insufficient; (3) replace
600
643
  lower-scoring output with a deterministic quality floor built only from
@@ -722,9 +765,7 @@ Anthropic blocks or opaque OpenAI items, so this extension does both:
722
765
  on-demand compaction.
723
766
 
724
767
  `test/native-compaction-compat.test.ts` pins what stock adapters drop by
725
- themselves. The design research and measured runs are in the
726
- [2026-09-24 research report](https://github.com/alpertarhan/pi-smart-compact/blob/main/docs/reports/hindsight-native-compaction-research-2026-09-24.md)
727
- (repository only, historical).
768
+ themselves.
728
769
 
729
770
  ### Experimental visual evidence
730
771
 
@@ -759,9 +800,8 @@ summary. Changing model/provider/API or using a text-only model withholds
759
800
  images; stricter scrubbing also withholds old pixels that cannot be
760
801
  retroactively redacted. Only the latest compaction's archive is eligible, and
761
802
  native fallback can discard it. Metrics record only visual token estimates and
762
- frame counts. The [2026-09-24 visual pilot](https://github.com/alpertarhan/pi-smart-compact/blob/main/docs/reports/visual-pilot-2026-09-24.md)
763
- (repository only) is a dated single-model synthetic sample, not production or
764
- cross-model accuracy.
803
+ frame counts. Historical visual-pilot results are dated single-model synthetic
804
+ samples, not production or cross-model accuracy evidence.
765
805
 
766
806
  ## 4. Optional cross-session memory
767
807
 
@@ -879,7 +919,7 @@ derived-only reset from confirmed all-project graph deletion; neither changes
879
919
  Mnemopi/Hindsight, compaction state or backups. Closing a local ref only marks
880
920
  its node resolved.
881
921
 
882
- **Retention limits:** pending in-memory compaction 5 min · exploration
922
+ **Retention limits:** pending in-memory compaction `pendingTtlMs` (default 5 min) · exploration
883
923
  tool-support cache 1 h / 128 routes · token calibration 128 routes · extraction
884
924
  cache 1 h · compaction state 7 d / 64 snapshots · context graph 2,000
885
925
  active derived fact nodes, 2,000 tombstones (resolved facts and closed manual
@@ -903,7 +943,7 @@ loop). `consume()` returns a discriminated result:
903
943
  | --- | --- |
904
944
  | `ok` | fresh payload for this session |
905
945
  | `empty` | nothing staged |
906
- | `expired` | older than the 5-minute TTL |
946
+ | `expired` | older than the configured `pendingTtlMs` |
907
947
  | `mismatch` | staged by a different session, project, or non-ancestor branch head |
908
948
 
909
949
  Session identity comes from
@@ -922,7 +962,10 @@ deadline through a shared [`ExternalCancellation`](https://github.com/alpertarha
922
962
  handle. Either source calls `abort()`, and every side-effect gate checks the
923
963
  shared state before writing or applying. The caller waits for a safe pipeline
924
964
  unwind; no `Promise.race` hard return can leave work running past the hook
925
- lifecycle.
965
+ lifecycle. Lazy auth preflight also observes this signal, so a non-cooperative
966
+ registry cannot pin the cancelled run's lock. The underlying registry operation
967
+ may finish later; its outcome is consumed without caching credentials into the
968
+ cancelled stage or allowing staging/apply to resume.
926
969
 
927
970
  ### Filesystem and locks
928
971
 
package/CHANGELOG.md CHANGED
@@ -2,6 +2,130 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [10.1.1] - 2026-09-30
6
+
7
+ ### Release approval
8
+
9
+ - Patch release approved by the release owner after the deterministic gates
10
+ on the exact candidate. No version-specific applied-canary cohort or live
11
+ provider run exists for `10.1.1`; the verifier and extraction fixes are
12
+ evidenced by offline replay of recorded sessions only.
13
+
14
+ ### Fixed
15
+
16
+ - Verification no longer rejects every candidate over its own required
17
+ evidence. Two recorded defects had the same shape: the deterministic floor
18
+ is built from exactly the lines the verifier demands, so a line the verifier
19
+ also scores as a defect leaves nothing that can pass, the session stays
20
+ uncompacted at 99% context, and Pi's own summarizer then hits its output
21
+ cap. First, the contradiction scan judged "Continue to avoid commits,
22
+ installation, or live daemon restart ... (`agm restart` deliberately
23
+ deferred)" as a positive "restart" beside "avoid live daemon restart":
24
+ negation near the anchor cannot see a coordinated list or a split clause.
25
+ Required evidence lines are now compared by sentence-level polarity, the
26
+ judgment the scan already applies to its source, so lines that agree are
27
+ not scored against each other; two required lines of opposite polarity
28
+ ("Do not publish stable" beside "Must publish stable now") remain a gap,
29
+ and summary-authored contradictions are never exempt. Second, the outcome
30
+ claim scan read a recorded bug ("message lost with no error surfaced") as
31
+ a success claim, repair removed it, and the next pass reported the
32
+ constraint missing. Exact renderings of required evidence are no longer
33
+ outcome claims; prose that echoes such a phrase still needs tool evidence.
34
+ - Extraction ignores harness-injected `user` messages: pi-processes
35
+ `<process_event>` notifications, this extension's own continuity bridge
36
+ ledger, and agent-mesh envelopes. They were mined as the active goal, as
37
+ constraints (with `Constraint:` labels accumulating across generations),
38
+ decisions, and recent user requests. Continuity labels quoted by Pi's own
39
+ compaction summary are stripped before constraints are stored.
40
+
41
+ ### Changed
42
+
43
+ - Automatic runs are capped at 300 seconds instead of 60, and
44
+ `autoTriggerTimeoutMs` defaults to 300,000 ms. Recorded MiniMax M3 runs took
45
+ 26–45 s when they finished and ~40% of automatic attempts were cut at the
46
+ old 60 s cap, each leaving the session for Pi's own compactor.
47
+
48
+ ### Repository
49
+
50
+ - Research reports and review findings are now local, ignored artifacts rather
51
+ than tracked repository content. Existing files stay on disk; Git history
52
+ and published release tags are unchanged.
53
+
54
+ ## [10.1.0] - 2026-09-29
55
+
56
+ ### Release approval
57
+
58
+ - The release owner explicitly approved shipping `10.1.0` to stable without
59
+ a new version-specific applied-canary cohort or a `PROMOTE` result for this
60
+ version. Deterministic release gates and protected PR CI still apply. This
61
+ is an approval and evidence limit, not a claim that live quality or savings
62
+ were measured for `10.1.0`, and not a claim that final release checks have
63
+ already passed.
64
+
65
+ ### Added
66
+
67
+ - Native tool rows for all six agent tools (`smart_tools`, `smart_context`,
68
+ `smart_navigation`, `smart_recall`, `smart_save_memory`, `smart_compact`):
69
+ compact status lines with honest states (queued, staged, dry-run, skipped,
70
+ pending, failed, cancelled are never shown as done/applied/saved), bounded
71
+ previews when collapsed, and the full original result text when expanded
72
+ via the configured native expansion key. Rows are call-time snapshots with
73
+ no polling.
74
+ - Memory saves surface stable refs and titles: completed saves are marked
75
+ searchable, accepted saves are clearly not yet searchable, and uncertain
76
+ outcomes keep their operation identity. Recall shows prior-save receipt
77
+ states (completed/pending/failed/unknown) from the refresh it already runs,
78
+ and long recalled facts are marked as excerpts rather than complete memory.
79
+ - Shared usage/pressure gates in `smart_context status`, navigation footer and TUI.
80
+ - `task-eval --tool-loading=eager|lazy`, with tool schemas included in normalized
81
+ prefix comparisons. Offline results remain lifecycle evidence, not billing proof.
82
+ - A documented cache-first configuration using idle compaction and initial
83
+ output offload, pressure-only cleanup and no speculative preparation.
84
+
85
+ ### Changed
86
+
87
+ - Intermediate synthesis fallbacks stay in progress/metrics instead of warning
88
+ toasts; applied results still disclose fallback use. Prompt-cache attribution
89
+ stays in Readiness/metrics without duplicating Pi's cache-miss notice.
90
+ - Pressure-first defaults: stable eager tool exposure, early batched cleanup,
91
+ and idle compaction at 80%. `contextPressureOnly: false` explicitly opts into
92
+ earlier economic/cold-cache cleanup. Human commands keep early-operation access.
93
+ - Agent anchors now request one safe cleanup of their new region through the
94
+ existing trim controller. Prior anchor prefixes and recent work stay protected;
95
+ append-only anchors no longer discard paid background preparation.
96
+
97
+ ### Fixed
98
+
99
+ - EESV preserves verbatim constraints and negative contractions, verifies explicit
100
+ question–answer pairs (including short and numeric choices), and keeps the
101
+ latest answered decision across fallback, verification and continuity state.
102
+ Repair cannot certify a wrong answer by merely appending the correct one.
103
+ - Constraint retirement requires directed release evidence instead of treating
104
+ questions, criticism, reported behavior or denied permission as authorization.
105
+ Genuine user rules are no longer discarded merely for saying “do not bypass
106
+ verification.” Dialog results are paired by tool-call ID, and fresh/cached
107
+ extraction use consistent retry-result classification, including sibling retries.
108
+ - Single-pass and final assembly reject known nonterminal or fence-truncated
109
+ responses before synthesis caching and use the existing deterministic fallback.
110
+ - Credential availability checks honor run cancellation without holding the run
111
+ lock until auth finishes. Late auth results cannot resume the cancelled run.
112
+ The settled watchdog distinguishes a busy host from an idle missing result
113
+ instead of suggesting a conflicting manual retry while Pi is busy.
114
+ - Exploration now leaves two calls for batch synthesis and final assembly,
115
+ including probe/direct/retry paths. Batch retries and queued workers also
116
+ preserve the final assembly call instead of exhausting the shared budget.
117
+ - Continuity display labels (`Constraint:`, `Goal:`, `Decision:`) no longer make
118
+ an unchanged carried fact fail semantic verification. Actual contradictions
119
+ still block apply.
120
+ - Automatic idle compaction now cools down after failed and timed-out attempts,
121
+ not only successful compactions, preventing repeated idle events from spending
122
+ another model budget. Manual compaction and Pi's own recovery stay available.
123
+
124
+ - Client trim/rewind refuse edits that would invalidate retained signed Anthropic
125
+ thinking. Background candidates validate system/tool changes; configured
126
+ `pendingTtlMs` now governs both staged and background summaries. Loaded tools
127
+ remain stable across compaction.
128
+
5
129
  ## [10.0.1] - 2026-09-28
6
130
 
7
131
  ### Removed
package/README.md CHANGED
@@ -19,10 +19,12 @@ this extension adds context hygiene and continuity policies around it.
19
19
  > The TUI still says **Smart Compact**. No data or configuration migration is
20
20
  > needed. [Identity and naming](./docs/identity.md).
21
21
  >
22
- > **Pi Continuity 10.0.1:** upgrading from 9.x? Update Pi to 0.87.1 or newer
22
+ > **Pi Continuity 10.1.0:** upgrading from 9.x? Update Pi to 0.87.1 or newer
23
23
  > and read the [upgrade notes](./docs/guide.md#upgrade-from-9x). Optional memory
24
24
  > engines and image rendering are installed separately. The
25
25
  > [changelog](./CHANGELOG.md) records the full release and its evidence limits.
26
+ > These defaults (pressure-first cleanup, eager tool exposure, native tool
27
+ > rows) ship with 10.1.0.
26
28
 
27
29
  ## What it does
28
30
 
@@ -66,9 +68,10 @@ Open **Settings → How it runs** to choose your level of control:
66
68
  | **Cleanup only** | Local, recoverable cleanup; no automatic summary generation. |
67
69
  | **Fully automatic** | Cleanup plus compaction requests when idle at the configured context threshold. |
68
70
 
69
- Pi's own compaction setting is separate. **With Pi (default)** participates when
70
- Pi starts compaction; it does not independently schedule it. A threshold alone
71
- is not an automatic trigger. [Trigger settings](./docs/configuration.md).
71
+ Pi's own compaction setting is separate. **Pressure-first (default)** keeps
72
+ roomy history unchanged, allows cleanup at an early pressure gate, then requests
73
+ compaction when idle at 80% if still needed. The optional `native-hook` strategy
74
+ participates only when Pi starts compaction. [Trigger settings](./docs/configuration.md).
72
75
 
73
76
  For your first run, choose **Compact now**, inspect the plan, then review the
74
77
  result. **A** applies it; **C** or **Esc** cancels. **Enter does not apply** on
@@ -118,9 +121,11 @@ actions explain why.
118
121
  | `/smart-compact handoff dry-run` | Previews a new-session seed without opening one. Use `handoff [-- note]` to proceed. |
119
122
  | `/smart-compact metrics` | Shows effective state, run outcomes, recent issues and the host prompt-cache ledger. |
120
123
 
121
- By default the agent sees only the `smart_tools` loader, then loads the groups
122
- it needs. The context guide is read on request, not injected. Tool availability
123
- and compaction permission are separate controls.
124
+ By default permitted agent tools stay visible from session start, avoiding late
125
+ schema changes to cached prefixes. Actions, not visibility, are pressure-gated;
126
+ read-only recovery and metadata checkpoints remain available while roomy.
127
+ Optional lazy loading uses `smart_tools`. The context guide is read on request,
128
+ not injected. Tool availability and compaction permission are separate controls.
124
129
  [Agent tools](./docs/guide.md#agent-tools) · [All commands](./docs/guide.md#command-reference)
125
130
 
126
131
  ## Memory is optional; continuity is the core
@@ -5,14 +5,14 @@ disable-model-invocation: true
5
5
  ---
6
6
  # Context continuity
7
7
 
8
- Load only the tools needed for the current job with `smart_tools(action="load", group=...)`. Loading a group does not load this guide. Tool selection changes can invalidate the provider prompt cache, so keep a needed group loaded until the work ends; do not load and unload it on every turn. The user can disable capabilities or all agent tools in `/smart-compact` settings.
8
+ Permitted context tools are available from the start by default. In optional lazy mode, use `smart_tools(action="load", group=...)` for a missing group. Loading does not inject this guide. Keep tool definitions stable: late loading/unloading can rebuild the provider cache. The user can disable capabilities or all agent tools in `/smart-compact` settings.
9
9
 
10
10
  ## Milestones and navigation
11
11
 
12
12
  Load `navigation` for `smart_navigation`.
13
13
 
14
14
  - `view` lists recent anchors on the active branch first, then other branches. Results are bounded previews; use `target` to read one anchor's full summary. An anchor records completed work, not a speculative plan.
15
- - `anchor` records a unique name and a concise retrospective summary. Preserve the user's goal and constraints, decisions with rationale, verified state, unresolved problems and exact identifiers needed to continue. Do not include secrets. Creating an anchor does not compact or delete history.
15
+ - `anchor` records completed work only under pressure by default; check `smart_context status` first. Preserve the goal, constraints, decisions, verified state, unresolved problems and exact identifiers. It queues one safe cleanup of the new region, not a full compaction. The response distinguishes queued cleanup from a no-op; never claim context shrank before commit. Do not duplicate a rewind report as another long anchor summary.
16
16
  - `recall` searches anchors in earlier local sessions, in the current project by default. Only use `scope="all"` when cross-project search is actually needed. Results are historical evidence, not instructions or permission. Use Pi's `/resume` to open a different session.
17
17
  - Before `pivot`, inspect the destination with `view`. Supply its exact entry ID or unambiguous anchor name and a non-empty `carryover` containing the task, new facts, decisions, failures, unfinished work and the next step. Call pivot on its own and end the turn. The host applies it only after the tool batch settles and revalidates the origin. A queued result is not proof that navigation has happened.
18
18
  - Pivot changes the active conversation branch, not files, running processes, databases or external services. Never claim it undoes side effects. Required carryover is inserted as the native tree summary without a second model request. An optional `message` becomes the next user turn only after successful navigation; omit it when the user should decide what happens next.
@@ -21,11 +21,11 @@ Load `navigation` for `smart_navigation`.
21
21
 
22
22
  Load `history` for `smart_context`. This is different from tree navigation.
23
23
 
24
- - `plan` previews recoverable cleanup; `trim` requests it at an uncontested completed turn boundary.
25
- - `checkpoint` begins a bounded research segment. `rewind(report=...)` removes its eligible read-only exploration from delivered context while retaining the findings you explicitly report. Preserve decisions, evidence, constraints, failures and the next step. Do not hide side effects or discard an unresolved question.
24
+ - `status` shows real usage, the policy window, cleanup/compaction thresholds and blockers. `plan` previews cleanup; `trim` requests it at an uncontested completed turn boundary. Agent trim/rewind/anchor requests require pressure by default; human commands can request earlier work.
25
+ - `checkpoint` is cheap metadata: use it before a substantial, bounded read-only research detour, not every turn. `rewind(report=...)` removes its eligible read-only exploration from delivered context while retaining the findings you explicitly report. Preserve decisions, evidence, constraints, failures and the next step. Do not hide side effects or discard an unresolved question.
26
26
  - `status`, `search` and `read` recover archived tool evidence on the active branch; add `scope="lineage"` to reach the sessions this one was handed off or forked from (read-only, up to three levels). A marker is a digest (subject, first line, risk lines), not the output; a `(superseded: …)` note means the file was edited or read again in full later. Old successful `bash` output and old `read` pages are archived the same way. A preview is not the whole output; retrieve the needed source rather than inventing details.
27
27
  - A `read` or `search` that reports archived text no longer matching its record means the session file changed after archiving; treat that source as unavailable and say so, never reconstruct it.
28
- - Anchor prefixes are protected. There is only one cleanup owner; do not add another extension that independently truncates the same history.
28
+ - Published anchor prefixes stay protected. A new anchor may consolidate only its new region once, before first replay. Signed Anthropic thinking that depends on removed history blocks unsafe trim/rewind; do not bypass this safeguard. Prepared compaction takes priority. There is one cleanup owner; do not stack independent truncators.
29
29
 
30
30
  ## Compaction and durable memory
31
31
 
@@ -18,10 +18,23 @@ export declare function preparationWindow(config: Pick<CompactConfig, "minContex
18
18
  startTokens: number;
19
19
  applyTokens: number;
20
20
  };
21
+ /** Shared execution/status gates; unknown usage fails closed, never means zero pressure. */
22
+ export declare function contextPressure(ctx: Pick<ExtensionContext, "model" | "getContextUsage">, config: Pick<CompactConfig, "minContextPercent" | "prepareContextPercent" | "maxContextTokens">): {
23
+ tokens: number | null;
24
+ modelWindow: number | null;
25
+ policyWindow: number | null;
26
+ percent: number | null;
27
+ cleanupTokens: number | null;
28
+ compactionTokens: number | null;
29
+ cleanup: boolean;
30
+ compaction: boolean;
31
+ };
21
32
  export declare function createBackgroundPreparation(options: {
22
33
  prepare(ctx: ExtensionContext, config: CompactConfig, signal: AbortSignal): Promise<PendingCompaction | null>;
23
34
  now?: () => number;
24
35
  ttlMs?: number;
36
+ /** Effective active-tool definitions, not just names. Never inject this into the model context. */
37
+ toolSignature?: () => string;
25
38
  cooldownMs?: number;
26
39
  /** Test seam for the bounded local discard metrics entry. */
27
40
  discardRecorder?: (sessionId: string, snapshot: MetricsSnapshot, reason: PreparationDiscardReason) => void | Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"background-preparation.d.ts","sourceRoot":"","sources":["../../src/app/background-preparation.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAM/G;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,wBAAwB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAQlB;AACD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,uBAAuB,CAAC,EAC1E,MAAM,EAAE,MAAM,GACZ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAS9C;AAgDD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACpD,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC9G,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9H;mBAiEsB,gBAAgB,UAAU,aAAa,KAAG,IAAI;gBAgDjD,gBAAgB,UAAU,aAAa,KAAG,iBAAiB,GAAG,IAAI;sBA5E7D,wBAAwB,KAAiB,IAAI;+BAoGnC,MAAM,UAAU,YAAY,GAAG,OAAO,KAAG,IAAI;gBAS5D,OAAO,CAAC,IAAI,CAAC;;IAM/B,2EAA2E;sBACzD,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO;8BAK/B,MAAM;EAKjC"}
1
+ {"version":3,"file":"background-preparation.d.ts","sourceRoot":"","sources":["../../src/app/background-preparation.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAM/G;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,wBAAwB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAQlB;AACD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,uBAAuB,CAAC,EAC1E,MAAM,EAAE,MAAM,GACZ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAS9C;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,iBAAiB,CAAC,EACxD,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,kBAAkB,CAAC;;;;;;;;;EAgB/F;AAkDD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACpD,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC9G,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9H;mBAiEsB,gBAAgB,UAAU,aAAa,KAAG,IAAI;gBAoDjD,gBAAgB,UAAU,aAAa,KAAG,iBAAiB,GAAG,IAAI;sBAhF7D,wBAAwB,KAAiB,IAAI;+BAwGnC,MAAM,UAAU,YAAY,GAAG,OAAO,KAAG,IAAI;gBAS5D,OAAO,CAAC,IAAI,CAAC;;IAM/B,2EAA2E;sBACzD,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO;8BAK/B,MAAM;EAKjC"}
@@ -16,7 +16,7 @@ export interface CompactionCommitStore {
16
16
  * Nothing durable is written until `take()` confirms both run and session.
17
17
  */
18
18
  export declare function createCompactionCommitStore(options?: {
19
- ttlMs?: number;
19
+ ttlMs?: number | (() => number);
20
20
  maxEntries?: number;
21
21
  onDiscard?: (pending: PendingCompaction, reason: CommitDiscardReason) => void;
22
22
  }): CompactionCommitStore;
@@ -1 +1 @@
1
- {"version":3,"file":"compaction-commit-store.d.ts","sourceRoot":"","sources":["../../src/app/compaction-commit-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAElI,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACjE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAC9E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;IACnF,IAAI,IAAI,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1E,GAAG,qBAAqB,CAoE7B"}
1
+ {"version":3,"file":"compaction-commit-store.d.ts","sourceRoot":"","sources":["../../src/app/compaction-commit-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOrD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAElI,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACjE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAC9E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,EAAE,CAAC;IACnF,IAAI,IAAI,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE;IACnD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1E,GAAG,qBAAqB,CAoE7B"}
@@ -66,7 +66,12 @@ export declare function buildTrimMarker(input: {
66
66
  };
67
67
  note?: string;
68
68
  }): string;
69
- export declare function planContextTrim(branch: SessionEntry[], afterId?: string): {
69
+ /** Signed Anthropic thinking may bind the entire preceding history, not only its own bytes. */
70
+ export declare function thinkingEditReason(branch: SessionEntry[], entries: SessionBoundaryDraft[], readerApi?: string): string | undefined;
71
+ export declare function planContextTrim(branch: SessionEntry[], afterId?: string, options?: {
72
+ anchorBoundary?: string | null;
73
+ readerApi?: string;
74
+ }): {
70
75
  entries: SessionBoundaryDraft[];
71
76
  references: string[];
72
77
  archives: ArchiveRecord[];
@@ -74,6 +79,7 @@ export declare function planContextTrim(branch: SessionEntry[], afterId?: string
74
79
  automatic: string;
75
80
  cooldownTurns: number;
76
81
  superseded: number;
82
+ blockedReason: string | undefined;
77
83
  };
78
84
  /** The plan's context edits followed by a trim control entry recording `cause`. */
79
85
  export declare function trimEntries(plan: {
@@ -96,7 +102,7 @@ export declare function trimTokens(branch: SessionEntry[], entries: SessionBound
96
102
  * the price is unknown.
97
103
  */
98
104
  export declare function trimBreakEvenRequests(cost: Partial<ModelCostRates> | undefined, savedTokens: number, tailTokens: number): number | null;
99
- export declare function planContextRewind(branch: SessionEntry[], sessionId: string, checkpointId: string, report: string): {
105
+ export declare function planContextRewind(branch: SessionEntry[], sessionId: string, checkpointId: string, report: string, readerApi?: string): {
100
106
  entries: SessionBoundaryDraft[];
101
107
  removed: number;
102
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"context-operations.d.ts","sourceRoot":"","sources":["../../src/app/context-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-operations.d.ts","sourceRoot":"","sources":["../../src/app/context-operations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"effective-state.d.ts","sourceRoot":"","sources":["../../src/app/effective-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,8EAA8E;AAC9E,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,qBAAqB,EAC/B,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAsC7B;AAaD,wGAAwG;AACxG,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4FjB"}
1
+ {"version":3,"file":"effective-state.d.ts","sourceRoot":"","sources":["../../src/app/effective-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAOxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED,8EAA8E;AAC9E,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,qBAAqB,EAC/B,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAsC7B;AAaD,wGAAwG;AACxG,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,gBAAgB,EACrB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAgGjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"hindsight-memory.d.ts","sourceRoot":"","sources":["../../src/app/hindsight-memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hindsight-memory.d.ts","sourceRoot":"","sources":["../../src/app/hindsight-memory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-tools.d.ts","sourceRoot":"","sources":["../../src/app/lazy-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,MAAM;aACX,UAAU,YAAG,kBAAkB;aAC/B,OAAO,YAAG,eAAe;aACzB,MAAM,YAAG,cAAc,EAAE,mBAAmB;aAC5C,UAAU,YAAG,eAAe;CACnB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,MAAM,CAAC;AAKnD,MAAM,WAAW,mBAAmB;IACnC,4EAA4E;IAC5E,KAAK,IAAI,IAAI,CAAC;IACd,mEAAmE;IACnE,UAAU,IAAI,IAAI,CAAC;IACnB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAAC;IACxC,sFAAsF;IACtF,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,MAAM,CAAC;IAClB,MAAM,IAAI;QAAE,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,gBAAgB,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACnI;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE;IAC/G,MAAM,CAAC,EAAE,MAAM,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACzD,GAAG,mBAAmB,CAmGtB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CA4B/F"}
1
+ {"version":3,"file":"lazy-tools.d.ts","sourceRoot":"","sources":["../../src/app/lazy-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAYpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,QAAA,MAAM,MAAM;aACX,UAAU,YAAG,kBAAkB;aAC/B,OAAO,YAAG,eAAe;aACzB,MAAM,YAAG,cAAc,EAAE,mBAAmB;aAC5C,UAAU,YAAG,eAAe;CACnB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,MAAM,CAAC;AAKnD,MAAM,WAAW,mBAAmB;IACnC,4EAA4E;IAC5E,KAAK,IAAI,IAAI,CAAC;IACd,mEAAmE;IACnE,UAAU,IAAI,IAAI,CAAC;IACnB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAAC;IACxC,sFAAsF;IACtF,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,MAAM,CAAC;IAClB,MAAM,IAAI;QAAE,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,gBAAgB,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACnI;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE;IAC/G,MAAM,CAAC,EAAE,MAAM,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACzD,GAAG,mBAAmB,CAmGtB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CA6C/F"}
@@ -8,7 +8,7 @@ export declare function pendingMatchesBranch(pending: PendingCompaction, branch:
8
8
  id?: unknown;
9
9
  }[]): boolean;
10
10
  /** Capture before preparation starts, not after a possibly long-running provider call. */
11
- export declare function readerSignature(ctx: Pick<ExtensionContext, "model">): string | undefined;
11
+ export declare function readerSignature(ctx: Pick<ExtensionContext, "model"> & Partial<Pick<ExtensionContext, "getSystemPrompt">>): string | undefined;
12
12
  /** Shared final gate for foreground and background candidates. Missing proof fails closed. */
13
13
  export declare function revalidatePending(pending: PendingCompaction, ctx: ExtensionContext, reserveTokens?: number): PendingCompaction | null;
14
14
  export type ConsumeResult = {
@@ -33,7 +33,7 @@ export interface PendingSlot {
33
33
  size(): number;
34
34
  }
35
35
  export interface PendingSlotOptions {
36
- ttlMs: number;
36
+ ttlMs: number | (() => number);
37
37
  now?: () => number;
38
38
  maxEntries?: number;
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pending-slot.d.ts","sourceRoot":"","sources":["../../src/app/pending-slot.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAoC,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7G,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAI9H;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,OAAO,CAO7G;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,aAAa,SAAI,GAAG,iBAAiB,GAAG,IAAI,CA8BhI;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAAC;IACpD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAsFvE"}
1
+ {"version":3,"file":"pending-slot.d.ts","sourceRoot":"","sources":["../../src/app/pending-slot.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAoC,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE7G,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAI9H;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,OAAO,CAO7G;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAK7I;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,EAAE,aAAa,SAAI,GAAG,iBAAiB,GAAG,IAAI,CA8BhI;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,sBAAsB,GAAG,aAAa,CAAC;IACpD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC7D,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,CAsFvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-context-tools.d.ts","sourceRoot":"","sources":["../../src/app/register-context-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAON,KAAK,iBAAiB,EAEtB,MAAM,2BAA2B,CAAC;AAiDnC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,gBAAgB,GACnB,iBAAiB,GAAG,IAAI,CAiB1B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAoF3D;AAED,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/C,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAM5D,UAAU,YAAY;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAClC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,UAAU,CAAC,CA8GrB"}
1
+ {"version":3,"file":"register-context-tools.d.ts","sourceRoot":"","sources":["../../src/app/register-context-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAEhB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAON,KAAK,iBAAiB,EAEtB,MAAM,2BAA2B,CAAC;AA6DnC,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,gBAAgB,GACnB,iBAAiB,GAAG,IAAI,CAiB1B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA0G3D;AAED,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/C,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAuQ5D,UAAU,YAAY;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAClC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,UAAU,CAAC,CAuHrB"}
@@ -12,7 +12,9 @@ export interface NavigationController {
12
12
  export declare function registerNavigation(pi: ExtensionAPI, options?: {
13
13
  config?: () => CompactConfig;
14
14
  mutationBlocked?: (ctx: ExtensionContext) => string | undefined;
15
- /** Staging-time signal: anchors, queued and about-to-apply pivots. */
15
+ /** Anchor creation may request one safe consolidation, without invalidating prepared compaction. */
16
+ onAnchor?: (ctx: ExtensionContext, originId: string, callId?: string, signal?: AbortSignal) => string;
17
+ /** Staging-time signal: queued and about-to-apply pivots, never append-only anchors. */
16
18
  onContextChange?: (ctx: ExtensionContext) => void;
17
19
  /** Commit-time signal: fires only after Pi applied a pivot's tree navigation. */
18
20
  onContextEdit?: (ctx: ExtensionContext, kind: ContextEditKind) => void;