prjct-cli 2.42.0 → 2.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -10
- package/dist/bin/prjct-core.mjs +347 -337
- package/dist/daemon/entry.mjs +267 -257
- package/dist/mcp/server.mjs +154 -142
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,20 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Hot-path performance pass over the hooks that fire on every Claude turn.
|
|
6
6
|
|
|
7
|
-
###
|
|
8
|
-
- **
|
|
9
|
-
- **One-line trap cue on prompts.** The per-turn state hook stays PULL-not-PUSH for decisions/learnings/facts, with one exception: when the prompt's keywords BM25-match a `gotcha`/`anti-pattern`, a single `> Trap on this topic:` line rides along with the state block — the same preventive class the pre-edit guard pushes, because a trap only helps *before* it's stepped in.
|
|
10
|
-
- **Skill-miss feedback loop closed.** The Stop-hook detector already recorded "relevant but never referenced" knowledge as improvement-signals; now those signals act. Write side: each miss cancels the automatic `relates:` reference credit and nets the missed entry −0.3 usefulness (a miss is not usage). Read side: the cold-start digest gains a **Keeps being missed** slot for the entry flagged ≥2×, so chronically-missed knowledge gets pushed in front of the agent instead of accumulating silently.
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Session-end embedding backfill was a silent no-op.** The Stop hook passed the project *path* where `backfill` expects the project *id*, so every session end wrote vectors to a phantom database under `~/.prjct-cli/projects/Users/…` instead of the real project DB. Vectors now land where semantic search reads them.
|
|
11
9
|
|
|
12
|
-
###
|
|
13
|
-
- **
|
|
14
|
-
-
|
|
10
|
+
### Performance (per-turn hooks)
|
|
11
|
+
- **Stop hook reads the config once and the transcript once.** It read `prjct.config.json` 4–5× per turn (once per sub-service, plus once per `remember()` call) and read+parsed the session transcript JSONL 3× (transcript-learner, friction-detector, skill-miss-detector). The hook now reads each once and threads them through; the three detectors share one JSONL tokenizer (`transcript-jsonl.ts`), deduplicating three identical parsers.
|
|
12
|
+
- **`StorageManager.update` is one transaction.** The optimistic-CAS retry loop (up to 8 × [2 SELECTs + UPDATE]) is now a single `BEGIN IMMEDIATE` read-modify-write — strictly stronger for multi-agent state (concurrent writers wait on the lock instead of looping), with 1 SELECT + 1 write per update.
|
|
13
|
+
- **Embedding backfill fetches only new entries.** A SQL anti-join replaces deserializing the whole memory corpus per Stop hook; noise-vector pruning (which needs the full corpus) is throttled to every 10th run.
|
|
14
|
+
- **Global config is stat-cached.** `resolveGlobalEmbeddings` did 7 `readFileSync`+parse of `global.json` per Stop hook; reads now revalidate against mtime+size, so a CLI write is still picked up by a long-lived daemon.
|
|
15
|
+
- **CLI cold-path reorder.** The hook fast path runs before the verb-registry import and the update/self-heal blocks (hooks need none of them); self-heal moved after the daemon fast path (SessionStart's own self-heal keeps coverage).
|
|
16
|
+
|
|
17
|
+
## [2.42.1] - 2026-06-10
|
|
15
18
|
|
|
16
19
|
### Performance
|
|
17
|
-
|
|
18
|
-
-
|
|
20
|
+
|
|
21
|
+
- hot paths — Stop hook config/transcript once, CAS→txn, backfill anti-join + ghost-DB fix (#416)
|
|
22
|
+
|
|
23
|
+
### Refactoring
|
|
24
|
+
|
|
25
|
+
- perf: hot paths — Stop hook config/transcript once, CAS→txn, backfill anti-join + ghost-DB fix (#416)
|
|
26
|
+
|
|
19
27
|
|
|
20
28
|
## [2.42.0] - 2026-06-10
|
|
21
29
|
|