prjct-cli 2.20.2 → 2.21.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 +25 -33
- package/README.md +3 -0
- package/dist/bin/prjct-core.mjs +328 -322
- package/dist/bin/prjct.mjs +1 -1
- package/dist/daemon/entry.mjs +204 -204
- package/dist/mcp/server.mjs +36 -36
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,48 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [2.
|
|
3
|
+
## [2.21.1] - 2026-05-18
|
|
4
4
|
|
|
5
5
|
### Bug Fixes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- route all remaining os.homedir()/.prjct-cli sites through pathManager (#344)
|
|
8
|
+
- optimistic CAS on StorageManager.update() — close the lost-update data race (#346)
|
|
9
|
+
- gate workflow rules ingested from repo markdown (close clone-to-RCE) (#345)
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
## [Unreleased]
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- **Skill routing triages complexity FIRST — spec is the exception, not the default.** `prjct-skill-body.ts` (skill SSOT) led with "substantive work → default to `spec` first", which pushed every simple one-file change through `spec` + `audit-spec` + 3 reviewer subagents — ceremony tax that slowed ship for zero protection on a fix. Inverted: an explicit **triage** step routes simple work (≈1 file, known root cause, reversible, "fix"/"hoy") DIRECT to `task` → implement → `qa`/`review` → `ship` with no spec; `spec`/`audit-spec` reserved for genuinely complex/high-stakes framing. Prose-only, no code-path change; skill-generator suite green (31/31).
|
|
15
|
-
|
|
16
|
-
## [2.20.1] - 2026-05-17
|
|
17
|
-
|
|
18
|
-
### Bug Fixes
|
|
19
|
-
|
|
20
|
-
- skill-miss-detector — crew-isolation guard (no false nags after crew runs) (v2.19.10) (#339)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## [Unreleased]
|
|
14
|
+
## [2.21.0] - 2026-05-17
|
|
24
15
|
|
|
25
|
-
###
|
|
16
|
+
### Features
|
|
26
17
|
|
|
27
|
-
-
|
|
18
|
+
- **`prjct review-risk [--md]`** — advisory size/delivery-geometry signal (minimal cut of harnesses #18/19/20). Reads the committed changeset vs the merge-base with the default branch (`git diff --shortstat`), derives a size tier (trivial/normal/large) and suggests a delivery geometry (`direct`/`single`/`split`, with the touched top-level dirs as natural split lines). Read-only/Tier-1 (retro/health shape); never gates, never splits, never mutates git; graceful no-signal when there is no base or nothing committed. (#340)
|
|
28
19
|
|
|
29
|
-
## [2.20.
|
|
20
|
+
## [2.20.2] - 2026-05-17
|
|
30
21
|
|
|
31
|
-
###
|
|
22
|
+
### Added
|
|
32
23
|
|
|
33
|
-
-
|
|
24
|
+
- **Architecture guard: SQLite connection factory is now an enforced invariant.** `openDatabase()` in `core/storage/database/sqlite-compat.ts` already baked the daemon-safety PRAGMAs (`journal_mode=WAL`, `busy_timeout=5000`) into every connection, but nothing stopped a future caller from doing a raw `new Database(...)` / `require('bun:sqlite')` / `require('better-sqlite3')` and silently bypassing them — the open half of the HIGH-severity daemon-vs-CLI write-lock anti-pattern. New `core/__tests__/storage/sqlite-factory-guard.test.ts` scans `core/` + `bin/` and fails CI if any file outside the sanctioned factory acquires a driver, and separately asserts the factory keeps both PRAGMAs. Closes the anti-pattern by moving it from convention to enforced. No runtime code change. (#342)
|
|
34
25
|
|
|
26
|
+
### Bug Fixes
|
|
35
27
|
|
|
36
|
-
|
|
28
|
+
- skill routing triages complexity FIRST — spec is the exception, not the default (v2.20.1) (#341)
|
|
37
29
|
|
|
38
|
-
|
|
30
|
+
## [2.20.1] - 2026-05-17
|
|
39
31
|
|
|
40
|
-
|
|
32
|
+
### Fixed
|
|
41
33
|
|
|
34
|
+
- **skill-miss-detector no longer false-positives after a crew run (#16 follow-up) (#339).** Crew implementer/reviewer run as isolated subagents in the *shared* working tree, so at the leader's Stop hook `getModifiedFiles()` saw their edits and path-overlap relevance fired — but the leader transcript never carries the memory references the subagent made in its own isolated transcript, producing a false skill-miss nag for every crew-touched file. Fix: `detectSkillMisses` collects the `files_touched` of crew runs whose `ended_at` is within `CREW_RUN_RECENCY_MS` (6h) via `crewRunStorage.list` and excludes them from path-overlap relevance; token-overlap detection stays active so non-crew work in the same session is still covered. Crew itself is unchanged (it was architecturally correct). Best-effort — any failure degrades to prior behavior. Tests: `core/__tests__/services/skill-miss-detector.test.ts`.
|
|
42
35
|
|
|
43
|
-
## [Unreleased]
|
|
44
36
|
|
|
45
|
-
## [2.
|
|
37
|
+
## [2.20.0] - 2026-05-17
|
|
46
38
|
|
|
47
39
|
### Added
|
|
48
40
|
|
|
@@ -56,6 +48,12 @@
|
|
|
56
48
|
### Fixed
|
|
57
49
|
- **`getProjectId` no longer silently mints a random orphan project.** Root cause: `ConfigManager.getProjectId()` fell through to `pathManager.generateProjectId()` (`crypto.randomUUID()`) whenever `readConfig()` returned null, so any path-resolution miss (daemon resolving the wrong cwd, config transiently unreadable, case-variant path) forked a brand-new project and scattered specs/memory across ghost projects with no error surfaced. Now returns `''` — the falsy sentinel 31/32 call sites already guard with `if (!projectId)` → callers fail loud ("run prjct init") instead of writing into a random new project. Only explicit `prjct init` (`createConfig`) mints. Regression test: `core/__tests__/infrastructure/config-manager-getprojectid.test.ts`.
|
|
58
50
|
|
|
51
|
+
## [2.19.9] - 2026-05-16
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
- strictly-monotonic updated_at so the CAS token can't collide (#337)
|
|
56
|
+
|
|
59
57
|
## [2.19.8] - 2026-05-14
|
|
60
58
|
|
|
61
59
|
Crew-mode persistence v7 (spec a50b32d1). SQLite becomes the single source of truth for crew runs, team enrollment, and checkpoint customization. Disk mirrors exist only where an external read contract demands one (the pre-commit hook).
|
|
@@ -172,15 +170,7 @@ Crew-mode persistence v7 (spec a50b32d1). SQLite becomes the single source of tr
|
|
|
172
170
|
|
|
173
171
|
## [2.15.0] - 2026-05-03
|
|
174
172
|
|
|
175
|
-
### Features
|
|
176
|
-
|
|
177
|
-
- prjct as a Spec-Driven Development system (#318)
|
|
178
|
-
- self-heal prjct SKILL.md on every CLI invocation (#317)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
## [Unreleased]
|
|
182
|
-
|
|
183
|
-
### Features — SDD: Spec-Driven Development
|
|
173
|
+
### Features — SDD: Spec-Driven Development (#318)
|
|
184
174
|
|
|
185
175
|
prjct now ships an end-to-end SDD primitive. The canonical sequence is `spec → audit-spec → task --spec → implement → ship (acceptance gate) → remember learning`.
|
|
186
176
|
|
|
@@ -193,6 +183,8 @@ prjct now ships an end-to-end SDD primitive. The canonical sequence is `spec →
|
|
|
193
183
|
- **Skill body** — Claude is taught the SDD canonical sequence and the `spec` / `audit-spec` verbs in the intent map. The skill body's verb intent map now leads with `spec` for substantive work; `task` is the right call for routine work that doesn't deserve a spec.
|
|
194
184
|
- **Templates** — `templates/spec-template.md`, `templates/spec-reviewer-rubrics/{strategic,architecture,design}.md`, `templates/sdd-canonical-sequence.md`. Old `templates/planning-methodology.md` renamed to `planning-methodology-deep.md` (retained but de-defaulted).
|
|
195
185
|
|
|
186
|
+
- self-heal prjct SKILL.md on every CLI invocation (#317)
|
|
187
|
+
|
|
196
188
|
### Schema
|
|
197
189
|
|
|
198
190
|
- Migration 16 adds the `specs` table and the `tasks.linked_spec_id` column. Additive — existing memory and tasks unaffected.
|
package/README.md
CHANGED
|
@@ -58,6 +58,7 @@ After install, **next session in any prjct project**:
|
|
|
58
58
|
- `security` — OWASP Top 10 + STRIDE, 8/10 confidence gate, concrete exploit per finding
|
|
59
59
|
- `investigate` — Iron Law (no fix without investigation), max 3 failed hypotheses
|
|
60
60
|
- `ship` (endurecido) — Coverage Gate + Auto-Document
|
|
61
|
+
- **Delivery-geometry advisory** (`prjct review-risk`): reads the committed changeset vs the merge-base and suggests a size tier (trivial/normal/large) + whether to ship direct, as one PR, or split — with the touched top-level dirs as natural split lines. Purely advisory: never gates, never mutates git.
|
|
61
62
|
|
|
62
63
|
## How it works
|
|
63
64
|
|
|
@@ -132,6 +133,7 @@ Cursor / Windsurf use the same commands with a `/` prefix: `/capture`, `/task`,
|
|
|
132
133
|
| `prjct sync` | Re-index files, git co-change, imports; refresh project analysis. |
|
|
133
134
|
| `prjct regen` | Full rebuild of the Obsidian vault snapshot from SQLite. |
|
|
134
135
|
| `prjct suggest` | Smart recommendations based on current project state. |
|
|
136
|
+
| `prjct review-risk` | Advisory change-size + delivery-geometry signal for the branch (read-only; never gates, never splits). |
|
|
135
137
|
| `prjct seed <add\|list>` | Manage packs (persona, memory types, workflow slots). |
|
|
136
138
|
|
|
137
139
|
## Personas & Packs
|
|
@@ -205,6 +207,7 @@ prjct watch Auto-sync on file changes
|
|
|
205
207
|
prjct doctor Check system health
|
|
206
208
|
prjct hooks <install|uninstall|status> Git hooks for auto-sync
|
|
207
209
|
prjct context <files|signatures|imports|recent|summary> Smart context filters
|
|
210
|
+
prjct review-risk Advisory change-size + delivery-geometry hint (read-only)
|
|
208
211
|
prjct workflow ["config"] Configure hooks via natural language
|
|
209
212
|
prjct stop / restart Background daemon control
|
|
210
213
|
prjct login / logout / auth Cloud sync authentication
|