paqad-ai 1.60.2 → 1.61.0
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 +96 -0
- package/dist/cli/index.js +979 -912
- package/dist/cli/index.js.map +1 -1
- package/dist/{feature-development-policy-C-X0Wwyb.d.ts → feature-development-policy-DQIrb8Oj.d.ts} +3 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +799 -645
- package/dist/index.js.map +1 -1
- package/dist/kernel/gate.js +67 -29
- package/dist/kernel/gate.js.map +1 -1
- package/dist/rule-scripts/index.js +1 -11
- package/dist/rule-scripts/index.js.map +1 -1
- package/dist/stage-evidence/live-writer.d.ts +2 -2
- package/dist/stage-evidence/live-writer.js +1 -11
- package/dist/stage-evidence/live-writer.js.map +1 -1
- package/dist/stage-evidence/marker-parse.d.ts +2 -2
- package/dist/stage-evidence/marker-parse.js +114 -20
- package/dist/stage-evidence/marker-parse.js.map +1 -1
- package/dist/stage-evidence/narration.d.ts +2 -2
- package/dist/stage-evidence/narration.js +1 -11
- package/dist/stage-evidence/narration.js.map +1 -1
- package/dist/{stages-DUIvMjp6.d.ts → stages-BIaLgHS-.d.ts} +1 -1
- package/package.json +1 -1
- package/runtime/AGENT-BOOTSTRAP.md +23 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,101 @@
|
|
|
1
1
|
# paqad-ai
|
|
2
2
|
|
|
3
|
+
## 1.61.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9467f47: feat(#389): imperative advisory-host stage protocol + honest JetBrains tiering
|
|
8
|
+
|
|
9
|
+
The JetBrains Claude Agent incident (framework followed, but stages unenforced and
|
|
10
|
+
the ledger empty of planning/specification artifacts) exposed that on advisory hosts
|
|
11
|
+
paqad had zero enforcement and relied on the model voluntarily self-recording. The
|
|
12
|
+
bootstrap only said "narrate every stage and the verdict yourself" — too weak. The
|
|
13
|
+
advisory-host section now imperatively requires running the host-independent CLI for
|
|
14
|
+
a feature-development change: `paqad-ai stage start/end`, `paqad-ai plan compile`, and
|
|
15
|
+
`paqad-ai spec freeze`, in order, so the stage-evidence ledger carries real planning +
|
|
16
|
+
specification artifacts even where no lifecycle hook fires.
|
|
17
|
+
|
|
18
|
+
The verification-enforcement doc now documents the three JetBrains products honestly:
|
|
19
|
+
**Claude Agent / AI Assistant** reads `CLAUDE.md`-equivalent guidance but fires no
|
|
20
|
+
Claude Code hooks (advisory — the incident's host), the **Claude Code [Beta] plugin**
|
|
21
|
+
runs the real `claude` CLI so paqad's hooks fire (full, hook-enforced — the supported
|
|
22
|
+
enforcement path), and **Junie** is advisory. The `aiassistant` adapter (already
|
|
23
|
+
correctly `hooks:false`) is now listed in the per-adapter coverage matrix, and a
|
|
24
|
+
reproducible manual advisory-host protocol is documented. No host-detection change and
|
|
25
|
+
no overclaim of enforcement paqad does not have on the host.
|
|
26
|
+
|
|
27
|
+
- 9467f47: fix(#390): gate feature-evidence bundle creation + report render to the feature-development route
|
|
28
|
+
|
|
29
|
+
Feature-evidence artifacts — the `feature-evidence/change-<ULID>/` bundle,
|
|
30
|
+
`stage-evidence.jsonl`, `report.html`, `receipt.json`, `ai-bom.json`, `rag.jsonl`,
|
|
31
|
+
and `_session/<id>.json` — were created for **every** workflow, not only
|
|
32
|
+
feature-development. A `root-cause-analysis` (or any non-feature) session that emitted
|
|
33
|
+
`paqad:stage` markers and reached Stop still minted a `change-<ULID>` bundle and a
|
|
34
|
+
`report.html`, because both the marker-driven auto-open and the report/receipt render
|
|
35
|
+
gated only on "is a feature pointer active?" (`currentFeature() != null`), never on the
|
|
36
|
+
routed workflow.
|
|
37
|
+
|
|
38
|
+
Both seams now consult the **persisted route** via `isFeatureDevelopmentRoute` (a new
|
|
39
|
+
`routeIsAffirmativelyNonFeature` helper), not the working-tree diff:
|
|
40
|
+
|
|
41
|
+
- `parseAndRecordMarkers` records nothing when the route is affirmatively
|
|
42
|
+
non-feature-development, so no bundle or `_session` control is minted.
|
|
43
|
+
- The per-feature receipt/AI-BOM projection and `renderActiveFeatureReport` in
|
|
44
|
+
`run-repository-verification.ts` write nothing when the route is affirmatively
|
|
45
|
+
non-feature-development, even if a pointer leaks through.
|
|
46
|
+
|
|
47
|
+
**Cross-provider safe by design:** suppression fires **only** on a route we can prove
|
|
48
|
+
is non-feature. The route seam runs only in Claude's UserPromptSubmit hook, so
|
|
49
|
+
Codex/Gemini sessions — which record markers through the same recorder but never write
|
|
50
|
+
route state — have **no** route state; an absent route is treated as "unknown" and
|
|
51
|
+
preserves today's recording behaviour rather than silently killing all cross-provider
|
|
52
|
+
feature-evidence. Feature-development behaviour is unchanged.
|
|
53
|
+
|
|
54
|
+
- 9467f47: feat(#388): stop auto-opening report.html in the browser and remove the `feature_report_auto_open` config option
|
|
55
|
+
|
|
56
|
+
The per-feature `report.html` no longer opens in the OS browser. The auto-open-on-completion
|
|
57
|
+
path (fired by the completion hook) and the manual `paqad-ai feature report --open` path are
|
|
58
|
+
both removed, and the sandbox-aware opener (`report-open.ts`) is deleted — no code path opens a
|
|
59
|
+
browser anymore.
|
|
60
|
+
|
|
61
|
+
**Removed config key:** `feature_report_auto_open` is gone from the config registry, resolver,
|
|
62
|
+
serializer, listing, the project-profile type and JSON schema, the onboarding default seed, and
|
|
63
|
+
the generated config templates. On the next onboard/update the config-split reconcile (#227)
|
|
64
|
+
prunes the key from team/local `.config.*` files, so existing projects stop opening the browser
|
|
65
|
+
without manual edits — every still-valid value is preserved.
|
|
66
|
+
|
|
67
|
+
Report **generation** is unchanged: the `feature_report` flag (default on) and
|
|
68
|
+
`renderActiveFeatureReport` still write `report.html` into the feature bundle exactly as before.
|
|
69
|
+
|
|
70
|
+
### Patch Changes
|
|
71
|
+
|
|
72
|
+
- 9467f47: fix(#387): reject sequential decision ids at write, migrate legacy fixtures
|
|
73
|
+
|
|
74
|
+
Decision packets could still be minted with sequential `D-{number}` ids when an
|
|
75
|
+
agent bypassed the sanctioned writer and hand-authored the JSON, seeded by legacy
|
|
76
|
+
`D-1`/`D-2`/`D-3` example packets. The creation paths now funnel through a single
|
|
77
|
+
canonical `D-<ULID>` guard — `DecisionStore.writePending` rejects a caller-supplied
|
|
78
|
+
non-ULID id, and `createPendingDecision` already mints one — while read, validate,
|
|
79
|
+
and list stay tolerant of legacy ids so pre-existing packets keep working. Onboard
|
|
80
|
+
and update now best-effort migrate any `.paqad/decisions/{pending,resolved}/D-{N}.json`
|
|
81
|
+
to a minted ULID id (updating the in-file id and index reference, idempotent on
|
|
82
|
+
already-ULID packets), the repo's own legacy fixtures are migrated, and the bootstrap
|
|
83
|
+
now states imperatively that packets are created only via the `decision` skill,
|
|
84
|
+
never by hand — including on advisory hosts with no Decision-Pause hook.
|
|
85
|
+
|
|
86
|
+
- 9467f47: Close two CodeQL high-severity findings surfaced on the evidence/decision paths:
|
|
87
|
+
|
|
88
|
+
- **Resource exhaustion (`js/resource-exhaustion-from-deep-object-traversal`)** — `SchemaValidator` no longer sets ajv `allErrors: true`, so validation short-circuits at the first error instead of traversing an entire (potentially deeply nested, caller-influenced) object to collect every error. `verbose` is retained so error output still carries the offending value; results now report the first failure rather than all of them.
|
|
89
|
+
- **File-system race (`js/file-system-race`)** — the legacy decision-id migration's `remapIndex` dropped its `existsSync` check-then-`writeFileSync` sequence, which was a time-of-check/time-of-use race. It now relies on the existing `try/catch` (a missing index throws `ENOENT`, treated as "nothing to remap"), with identical behaviour and no race window.
|
|
90
|
+
|
|
91
|
+
- 9467f47: fix(#386): batch onboarding's git check-ignore to a single call
|
|
92
|
+
|
|
93
|
+
Repository discovery spawned two synchronous `git check-ignore` subprocesses per
|
|
94
|
+
visited directory, so onboarding stalled for seconds before the provider prompt on
|
|
95
|
+
large repositories. It now walks the tree once into memory and resolves all
|
|
96
|
+
git-ignored paths with a single batched `git check-ignore` call, cutting spawns
|
|
97
|
+
from O(directories) to O(1) with identical detection output.
|
|
98
|
+
|
|
3
99
|
## 1.60.2
|
|
4
100
|
|
|
5
101
|
### Patch Changes
|