projscan 4.15.0 → 4.17.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/README.md +81 -3
- package/dist/cli/commands/assess.js +36 -2
- package/dist/cli/commands/assess.js.map +1 -1
- package/dist/cli/commands/guard.d.ts +3 -0
- package/dist/cli/commands/guard.js +158 -0
- package/dist/cli/commands/guard.js.map +1 -0
- package/dist/cli/commands/passport.d.ts +3 -0
- package/dist/cli/commands/passport.js +154 -0
- package/dist/cli/commands/passport.js.map +1 -0
- package/dist/cli/registerCommands.js +4 -0
- package/dist/cli/registerCommands.js.map +1 -1
- package/dist/core/baseframeAssessment.d.ts +9 -0
- package/dist/core/baseframeAssessment.js +471 -0
- package/dist/core/baseframeAssessment.js.map +1 -0
- package/dist/core/guard.d.ts +2 -0
- package/dist/core/guard.js +107 -0
- package/dist/core/guard.js.map +1 -0
- package/dist/core/passport.d.ts +2 -0
- package/dist/core/passport.js +278 -0
- package/dist/core/passport.js.map +1 -0
- package/dist/mcp/toolCatalog.js +2 -0
- package/dist/mcp/toolCatalog.js.map +1 -1
- package/dist/mcp/tools/passport.d.ts +2 -0
- package/dist/mcp/tools/passport.js +80 -0
- package/dist/mcp/tools/passport.js.map +1 -0
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/publicCore.d.ts +3 -0
- package/dist/publicCore.js +3 -0
- package/dist/publicCore.js.map +1 -1
- package/dist/tool-manifest.json +56 -3
- package/dist/types/baseframe.d.ts +75 -0
- package/dist/types/baseframe.js +2 -0
- package/dist/types/baseframe.js.map +1 -0
- package/dist/types/guard.d.ts +32 -0
- package/dist/types/guard.js +2 -0
- package/dist/types/guard.js.map +1 -0
- package/dist/types/passport.d.ts +75 -0
- package/dist/types/passport.js +2 -0
- package/dist/types/passport.js.map +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/utils/formatSupport.d.ts +2 -0
- package/dist/utils/formatSupport.js +2 -0
- package/dist/utils/formatSupport.js.map +1 -1
- package/docs/GUIDE.md +48 -0
- package/docs/integrations/baseframe-suite-v1.md +163 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -25,8 +25,9 @@ Use projscan when an agent asks one of these questions:
|
|
|
25
25
|
- Which proof commands should I run before handoff?
|
|
26
26
|
- Which risks need fixes, reviewer attention, or release sign-off?
|
|
27
27
|
- Which risk should I fix first?
|
|
28
|
+
- Did the agent stay inside the approved change boundary?
|
|
28
29
|
|
|
29
|
-
projscan runs core scans on your machine. It respects `.gitignore`, keeps `.env` values out of scans unless you opt in, and exposes the same evidence through a CLI and a
|
|
30
|
+
projscan runs core scans on your machine. It respects `.gitignore`, keeps `.env` values out of scans unless you opt in, and exposes the same evidence through a CLI and a 49-tool MCP server. The language layer uses 11 AST adapters covering 12 named languages.
|
|
30
31
|
|
|
31
32
|
```text
|
|
32
33
|
Your agent / engineer
|
|
@@ -41,6 +42,8 @@ Your agent / engineer
|
|
|
41
42
|
| | | +- allowed files
|
|
42
43
|
| | | +- forbidden files
|
|
43
44
|
| | | +- proof receipt
|
|
45
|
+
| | | +- change passport
|
|
46
|
+
| | | +- live guard
|
|
44
47
|
| | +- bounded extraction |
|
|
45
48
|
| | +- regression test first |
|
|
46
49
|
| | +- leave unchanged |
|
|
@@ -104,6 +107,7 @@ projscan prove --intent "is my agent allowed to change billing retry logic?" --s
|
|
|
104
107
|
# Make the bounded edit, then run the proof command.
|
|
105
108
|
projscan prove --run -- npm test -- tests/billing/retry.test.ts
|
|
106
109
|
projscan prove --changed --contract .projscan/proof-contract.json --format markdown
|
|
110
|
+
projscan passport --contract .projscan/proof-contract.json --format markdown
|
|
107
111
|
```
|
|
108
112
|
|
|
109
113
|
The command path is `start -> prove -> run -> changed`. Make the bounded edit after the contract exists and before `prove --run`. `start` chooses the contract workflow. `prove --intent` writes `.projscan/proof-contract.json` only when `--save-contract` is present. `prove --run -- <command...>` executes a local proof command, records the exit code, captures a redacted log, and fingerprints the current changed files. `prove --record-command` remains available for imported CI or external evidence when projscan did not run the command. `prove --changed` checks the current working tree against the contract and local ledger.
|
|
@@ -119,6 +123,22 @@ Saved contracts are the source of truth for `prove --changed`; update the contra
|
|
|
119
123
|
|
|
120
124
|
Every `prove` report includes `verifiedWorkflow`, a compact JSON summary for agents and MCP clients. It names the phase, next action, next command, scope status, proof status, proof sufficiency status, risk delta direction, reviewer decision, and stale/missing/failed proof flags.
|
|
121
125
|
|
|
126
|
+
`projscan passport` turns the contract and receipt into one handoff artifact. It names allowed files, forbidden files, changed files, proof replay status, Proof Sufficiency, reviewer action, and next commands. Save it when a reviewer or another agent needs the whole change story in one JSON file:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
projscan passport \
|
|
130
|
+
--intent "is my agent allowed to change billing retry logic?" \
|
|
131
|
+
--save-contract .projscan/proof-contract.json \
|
|
132
|
+
--output .projscan/passport.json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`projscan guard` checks the current working tree against a saved Proof Contract. Use it after an agent edits files, or run `--watch` during a session:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
projscan guard --contract .projscan/proof-contract.json
|
|
139
|
+
projscan guard --contract .projscan/proof-contract.json --watch
|
|
140
|
+
```
|
|
141
|
+
|
|
122
142
|
Success criteria: the reviewer sees scope, proof execution, proof freshness, and sufficiency for the changed risk surface.
|
|
123
143
|
|
|
124
144
|
### Before handoff or commit
|
|
@@ -164,6 +184,25 @@ Use the risk delta simulator before a refactor or extraction. It predicts likely
|
|
|
164
184
|
|
|
165
185
|
Success criteria: the team sees the one or two highest-value fixes, why they matter, how to prove them, and whether ship-readiness still needs caution or review.
|
|
166
186
|
|
|
187
|
+
### Baseframe Suite assessment artifact
|
|
188
|
+
|
|
189
|
+
ProjScan finds the risk.
|
|
190
|
+
AgentLoopKit controls the work.
|
|
191
|
+
AgentFlight proves the result.
|
|
192
|
+
|
|
193
|
+
When a Baseframe Suite task needs a stable local artifact, run:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
projscan assess \
|
|
197
|
+
--intent "Implement password reset" \
|
|
198
|
+
--task-id auth-password-reset-20260626-01 \
|
|
199
|
+
--emit-baseframe
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
ProjScan writes `.baseframe/evidence/<task-id>/projscan-assessment.json` and
|
|
203
|
+
updates `.baseframe/agent-workflow.json` without writing AgentLoopKit or
|
|
204
|
+
AgentFlight artifacts. See [Baseframe Suite Integration v1](docs/integrations/baseframe-suite-v1.md).
|
|
205
|
+
|
|
167
206
|
## Mission Control
|
|
168
207
|
|
|
169
208
|
`projscan start --intent "<goal>"` turns a plain-language goal into an execution plan:
|
|
@@ -203,6 +242,41 @@ npm run docs:screenshots
|
|
|
203
242
|
npm run docs:demos
|
|
204
243
|
```
|
|
205
244
|
|
|
245
|
+
## 4.17.0 Notes
|
|
246
|
+
|
|
247
|
+
4.17.0 ships the Agent Change Passport and Live Guard:
|
|
248
|
+
|
|
249
|
+
- `projscan passport --intent "<task>" --save-contract .projscan/proof-contract.json`
|
|
250
|
+
creates a Proof Contract, checks the current working tree, and returns one
|
|
251
|
+
local passport with boundary, receipt, proof replay, Proof Sufficiency,
|
|
252
|
+
reviewer action, and next commands.
|
|
253
|
+
- `projscan passport --contract .projscan/proof-contract.json --output
|
|
254
|
+
.projscan/passport.json` writes a JSON handoff artifact. ProjScan writes to
|
|
255
|
+
`.projscan/passport.json` or `.projscan/passports/<name>.json`, rejects
|
|
256
|
+
traversal, checks symlink paths, and refuses to overwrite unrelated files.
|
|
257
|
+
- `projscan guard --contract .projscan/proof-contract.json` reports whether the
|
|
258
|
+
current diff stayed inside the approved boundary. `--watch` polls during an
|
|
259
|
+
agent session, and `--fail-on-drift` exits non-zero when the guard sees drift.
|
|
260
|
+
- MCP now includes `projscan_passport`, bringing the MCP surface to 49 tools.
|
|
261
|
+
The tool returns passport evidence for agents without adding proof-command
|
|
262
|
+
execution to MCP.
|
|
263
|
+
- Passport can attach Baseframe assessment evidence with `--task-id <id>
|
|
264
|
+
--emit-baseframe`, while ProjScan limits ownership to its assessment artifact
|
|
265
|
+
and shared manifest update.
|
|
266
|
+
|
|
267
|
+
## 4.16.0 Notes
|
|
268
|
+
|
|
269
|
+
4.16.0 ships Baseframe Suite assessment export:
|
|
270
|
+
|
|
271
|
+
- `projscan assess --intent "<task>" --task-id <id> --emit-baseframe` writes
|
|
272
|
+
`.baseframe/evidence/<task-id>/projscan-assessment.json`.
|
|
273
|
+
- ProjScan updates `.baseframe/agent-workflow.json` with its own status while
|
|
274
|
+
preserving AgentLoopKit, AgentFlight, and unknown manifest fields.
|
|
275
|
+
- The package exports `createBaseframeAssessment()` plus Baseframe v1
|
|
276
|
+
assessment and workflow manifest types.
|
|
277
|
+
- Artifact writes are local, atomic, task-ID validated, and protected against
|
|
278
|
+
traversal and symlink output paths.
|
|
279
|
+
|
|
206
280
|
## 4.15.0 Notes
|
|
207
281
|
|
|
208
282
|
4.15.0 strengthens the proof-first change loop:
|
|
@@ -353,6 +427,8 @@ npx -y projscan mcp --watch
|
|
|
353
427
|
| Is this refactor worth doing? | `projscan simulate --plan "split bugHunt.ts into ranking, evidence, and output modules"` |
|
|
354
428
|
| Is my agent allowed to make this change? | `projscan start --intent "is my agent allowed to change billing retry logic?"` |
|
|
355
429
|
| Did the change stay inside scope? | `projscan prove --changed --contract .projscan/proof-contract.json --format markdown` |
|
|
430
|
+
| Can a reviewer trust this agent handoff? | `projscan passport --contract .projscan/proof-contract.json --format markdown` |
|
|
431
|
+
| Is the agent drifting from the contract? | `projscan guard --contract .projscan/proof-contract.json` |
|
|
356
432
|
| Which files have high risk and low coverage? | `projscan coverage --format json` |
|
|
357
433
|
| What should my agent do next? | `projscan workplan --format json` |
|
|
358
434
|
| Which proof belongs in this PR? | `projscan evidence-pack --pr-comment` |
|
|
@@ -368,6 +444,8 @@ npx -y projscan mcp --watch
|
|
|
368
444
|
| `projscan assess` | proof-first assessment with Proof Cards, risk delta, and fix-first guidance |
|
|
369
445
|
| `projscan simulate` | risk delta simulator for a proposed change plan before editing |
|
|
370
446
|
| `projscan prove` | executable Proof Contracts, Verified Workflow JSON, and Proof Receipts |
|
|
447
|
+
| `projscan passport` | local change passport with boundary, receipt, proof, and reviewer action |
|
|
448
|
+
| `projscan guard` | current working tree check against a saved Proof Contract |
|
|
371
449
|
| `projscan evidence-pack` | review evidence with risks, owners, proof receipts, and next commands |
|
|
372
450
|
| `projscan bug-hunt` | ranked fix queue from health, hotspots, session, and preflight evidence |
|
|
373
451
|
| `projscan workplan` | ordered agent tasks with proof and handoff text |
|
|
@@ -572,7 +650,7 @@ Supply-chain scanners may flag package strings or APIs used by `git`, `npm audit
|
|
|
572
650
|
|
|
573
651
|
## Install Notes
|
|
574
652
|
|
|
575
|
-
`projscan@4.
|
|
653
|
+
`projscan@4.17.0` has seven direct runtime dependencies:
|
|
576
654
|
|
|
577
655
|
- `@babel/parser`
|
|
578
656
|
- `@babel/types`
|
|
@@ -582,7 +660,7 @@ Supply-chain scanners may flag package strings or APIs used by `git`, `npm audit
|
|
|
582
660
|
- `ora`
|
|
583
661
|
- `web-tree-sitter`
|
|
584
662
|
|
|
585
|
-
If npm prints `allow-scripts` warnings during a global install, check which package names it lists. projscan core does not need `node-gyp` grammar builds at runtime in 4.
|
|
663
|
+
If npm prints `allow-scripts` warnings during a global install, check which package names it lists. projscan core does not need `node-gyp` grammar builds at runtime in 4.17.0. Open an issue with the warning text if npm reports install scripts from `projscan@latest`, or run `projscan feedback intake --text "<warning text>" --format json` to turn it into a focused setup-trust task.
|
|
586
664
|
|
|
587
665
|
The grammar packages are build-time sources, not global-install dependencies. Published grammar assets include `tree-sitter-python.wasm` and `tree-sitter-c_sharp.wasm`.
|
|
588
666
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
2
3
|
import chalk from 'chalk';
|
|
3
4
|
import { assertFormatSupported, getRootPath, maybeCompactBanner, program, setupLogLevel, } from '../_shared.js';
|
|
5
|
+
import { createBaseframeAssessment } from '../../core/baseframeAssessment.js';
|
|
4
6
|
import { computeAssess } from '../../core/assess.js';
|
|
5
7
|
const ASSESS_MODES = ['standard', 'fix-first', 'ship-readiness'];
|
|
6
8
|
export function registerAssess() {
|
|
@@ -12,11 +14,28 @@ export function registerAssess() {
|
|
|
12
14
|
.option('--max-cards <count>', 'maximum Proof Cards to return', parsePositiveInt)
|
|
13
15
|
.option('--baseline <path>', 'prior assess JSON file to compare risk delta against')
|
|
14
16
|
.option('--feedback <path>', 'local projscan feedback artifact to apply as trust memory')
|
|
17
|
+
.option('--intent <text>', 'Baseframe task intent to include in the assessment artifact')
|
|
18
|
+
.option('--task-id <id>', 'Baseframe task ID for the assessment artifact')
|
|
19
|
+
.option('--emit-baseframe', 'write the Baseframe ProjScan assessment artifact')
|
|
20
|
+
.option('--output <path>', 'explicit ProjScan-owned Baseframe assessment output path')
|
|
15
21
|
.action(async (cmdOpts) => {
|
|
16
22
|
setupLogLevel();
|
|
17
|
-
maybeCompactBanner();
|
|
18
|
-
const format = assertFormatSupported('assess');
|
|
19
23
|
try {
|
|
24
|
+
if (shouldEmitBaseframe(cmdOpts)) {
|
|
25
|
+
const root = getRootPath();
|
|
26
|
+
const intent = requireBaseframeOption(cmdOpts.intent, '--intent');
|
|
27
|
+
const taskId = requireBaseframeOption(cmdOpts.taskId, '--task-id');
|
|
28
|
+
await createBaseframeAssessment({
|
|
29
|
+
root,
|
|
30
|
+
intent,
|
|
31
|
+
taskId,
|
|
32
|
+
outputPath: cmdOpts.output,
|
|
33
|
+
});
|
|
34
|
+
console.log(baseframeAssessmentRelativePath(root, taskId, cmdOpts.output));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
maybeCompactBanner();
|
|
38
|
+
const format = assertFormatSupported('assess');
|
|
20
39
|
const report = await computeAssess(getRootPath(), {
|
|
21
40
|
goal: cmdOpts.goal,
|
|
22
41
|
mode: cmdOpts.mode,
|
|
@@ -153,6 +172,21 @@ function parsePositiveInt(value) {
|
|
|
153
172
|
}
|
|
154
173
|
return parsed;
|
|
155
174
|
}
|
|
175
|
+
function shouldEmitBaseframe(cmdOpts) {
|
|
176
|
+
return Boolean(cmdOpts.emitBaseframe || cmdOpts.output);
|
|
177
|
+
}
|
|
178
|
+
function requireBaseframeOption(value, name) {
|
|
179
|
+
const trimmed = typeof value === 'string' ? value.trim() : '';
|
|
180
|
+
if (!trimmed)
|
|
181
|
+
throw new Error(`projscan assess Baseframe export requires ${name}.`);
|
|
182
|
+
return trimmed;
|
|
183
|
+
}
|
|
184
|
+
function baseframeAssessmentRelativePath(root, taskId, outputPath) {
|
|
185
|
+
const absolutePath = outputPath
|
|
186
|
+
? path.resolve(root, outputPath)
|
|
187
|
+
: path.join(root, '.baseframe', 'evidence', taskId, 'projscan-assessment.json');
|
|
188
|
+
return path.relative(root, absolutePath).replace(/\\/g, '/');
|
|
189
|
+
}
|
|
156
190
|
async function readAssessBaseline(filePath) {
|
|
157
191
|
try {
|
|
158
192
|
const parsed = JSON.parse(await fs.readFile(filePath, 'utf-8'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assess.js","sourceRoot":"","sources":["../../../src/cli/commands/assess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,CAAiC,CAAC;AAEjG,MAAM,UAAU,cAAc;IAC5B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,gCAAgC,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,sDAAsD,EAAE,SAAS,CAAC;SAC1F,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,gBAAgB,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;SACxF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"assess.js","sourceRoot":"","sources":["../../../src/cli/commands/assess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,CAAiC,CAAC;AAEjG,MAAM,UAAU,cAAc;IAC5B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,gCAAgC,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,sDAAsD,EAAE,SAAS,CAAC;SAC1F,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,gBAAgB,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC;SACxF,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;SACzE,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;SAC9E,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC;SACrF,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,aAAa,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,yBAAyB,CAAC;oBAC9B,IAAI;oBACJ,MAAM;oBACN,MAAM;oBACN,UAAU,EAAE,OAAO,CAAC,MAAM;iBAC3B,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,kBAAkB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,EAAE;gBAChD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,YAAY,EAAE,OAAO,CAAC,QAAQ;gBAC9B,GAAG,CAAC,OAAO,CAAC,QAAQ;oBAClB,CAAC,CAAC;wBACE,cAAc,EAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAC1D,YAAY,EAAE,OAAO,CAAC,QAAQ;qBAC/B;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,kBAAkB;QAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU;QAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC3G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;IACtF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,IAAqB;IAC7D,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CACR,4BAA4B,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAC3F,CAAC;IACF,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,WAAW,CAAC,MAAM,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAK,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAmB,CAAC;IACpF,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAG5B;IACC,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAAY;IAC1D,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,GAAG,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,+BAA+B,CACtC,IAAY,EACZ,MAAc,EACd,UAA8B;IAE9B,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;QAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAA0B,CAAC;QACzF,IACE,MAAM,CAAC,aAAa,KAAK,CAAC;YAC1B,CAAC,MAAM,CAAC,SAAS;YACjB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,KAAK,QAAQ,EACnD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,KACxC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cACvC,EAAE,EACF,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { assertFormatSupported, getRootPath, maybeCompactBanner, program, setupLogLevel, } from '../_shared.js';
|
|
3
|
+
import { computeGuard } from '../../core/guard.js';
|
|
4
|
+
import { escapeMarkdownText, markdownInlineCode } from '../../core/markdownSafety.js';
|
|
5
|
+
export function registerGuard() {
|
|
6
|
+
program
|
|
7
|
+
.command('guard')
|
|
8
|
+
.description('Check the current working tree against a saved Proof Contract')
|
|
9
|
+
.option('--contract <path>', 'Proof Contract JSON path')
|
|
10
|
+
.option('--base-ref <ref>', 'base ref for changed-file detection')
|
|
11
|
+
.option('--ledger <path>', 'proof ledger JSONL path')
|
|
12
|
+
.option('--fail-on-drift', 'exit non-zero when scope drift or missing contract is detected')
|
|
13
|
+
.option('--watch', 'poll for guard status changes until interrupted')
|
|
14
|
+
.option('--interval-ms <ms>', 'watch poll interval in milliseconds', parsePositiveInt, 2000)
|
|
15
|
+
.action(async (cmdOpts) => {
|
|
16
|
+
setupLogLevel();
|
|
17
|
+
maybeCompactBanner();
|
|
18
|
+
const format = assertFormatSupported('guard');
|
|
19
|
+
try {
|
|
20
|
+
const options = {
|
|
21
|
+
contractPath: cmdOpts.contract,
|
|
22
|
+
baseRef: cmdOpts.baseRef,
|
|
23
|
+
ledgerPath: cmdOpts.ledger,
|
|
24
|
+
};
|
|
25
|
+
if (cmdOpts.watch) {
|
|
26
|
+
await watchGuard(options, {
|
|
27
|
+
format,
|
|
28
|
+
intervalMs: cmdOpts.intervalMs,
|
|
29
|
+
failOnDrift: Boolean(cmdOpts.failOnDrift),
|
|
30
|
+
});
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const report = await computeGuard(getRootPath(), options);
|
|
34
|
+
printGuard(report, format);
|
|
35
|
+
if (cmdOpts.failOnDrift && (report.status === 'drift' || report.status === 'blocked')) {
|
|
36
|
+
process.exit(report.exitCode);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
console.error(chalk.red(err instanceof Error ? err.message : String(err)));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function watchGuard(options, settings) {
|
|
46
|
+
let last = '';
|
|
47
|
+
let stopped = false;
|
|
48
|
+
const stop = () => {
|
|
49
|
+
stopped = true;
|
|
50
|
+
};
|
|
51
|
+
process.once('SIGINT', stop);
|
|
52
|
+
while (!stopped) {
|
|
53
|
+
const report = await computeGuard(getRootPath(), options);
|
|
54
|
+
const key = JSON.stringify({
|
|
55
|
+
status: report.status,
|
|
56
|
+
drift: report.drift.files,
|
|
57
|
+
proof: report.proof.status,
|
|
58
|
+
missing: report.proof.missingCommands,
|
|
59
|
+
stale: report.proof.staleCommands,
|
|
60
|
+
failed: report.proof.failedCommands,
|
|
61
|
+
});
|
|
62
|
+
if (key !== last) {
|
|
63
|
+
printGuard(report, settings.format);
|
|
64
|
+
last = key;
|
|
65
|
+
if (settings.failOnDrift && (report.status === 'drift' || report.status === 'blocked')) {
|
|
66
|
+
process.exit(report.exitCode);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
await delay(settings.intervalMs);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function printGuard(report, format) {
|
|
73
|
+
if (format === 'json') {
|
|
74
|
+
console.log(JSON.stringify(report, null, 2));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (format === 'markdown') {
|
|
78
|
+
console.log(renderGuardMarkdown(report));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
printGuardConsole(report);
|
|
82
|
+
}
|
|
83
|
+
function printGuardConsole(report) {
|
|
84
|
+
const color = report.status === 'blocked' || report.status === 'drift'
|
|
85
|
+
? chalk.red
|
|
86
|
+
: report.status === 'attention'
|
|
87
|
+
? chalk.yellow
|
|
88
|
+
: chalk.green;
|
|
89
|
+
console.log(color(`Projscan Guard: ${report.status}`));
|
|
90
|
+
console.log(report.summary);
|
|
91
|
+
console.log('');
|
|
92
|
+
console.log(chalk.bold('Drift'));
|
|
93
|
+
printList(report.drift.files, 'No scope drift detected');
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log(chalk.bold('Proof'));
|
|
96
|
+
console.log(`- status: ${report.proof.status}`);
|
|
97
|
+
console.log(`- sufficiency: ${report.proof.sufficiencyStatus ?? 'unknown'}`);
|
|
98
|
+
printList(report.proof.missingCommands.slice(0, 5), 'No missing proof commands');
|
|
99
|
+
}
|
|
100
|
+
export function renderGuardMarkdown(report) {
|
|
101
|
+
const lines = [
|
|
102
|
+
'# Projscan Guard',
|
|
103
|
+
'',
|
|
104
|
+
`- **Status:** ${report.status}`,
|
|
105
|
+
`- **Summary:** ${escapeMarkdownText(report.summary)}`,
|
|
106
|
+
`- **Reviewer action:** ${report.reviewerAction}`,
|
|
107
|
+
`- **Exit code:** ${report.exitCode}`,
|
|
108
|
+
'',
|
|
109
|
+
'## Drift',
|
|
110
|
+
'',
|
|
111
|
+
];
|
|
112
|
+
renderList(lines, report.drift.files);
|
|
113
|
+
lines.push('');
|
|
114
|
+
lines.push('## Proof');
|
|
115
|
+
lines.push('');
|
|
116
|
+
lines.push(`- **Status:** ${report.proof.status}`);
|
|
117
|
+
lines.push(`- **Sufficiency:** ${report.proof.sufficiencyStatus ?? 'unknown'}`);
|
|
118
|
+
renderCommandGroup(lines, 'Missing', report.proof.missingCommands);
|
|
119
|
+
renderCommandGroup(lines, 'Failed', report.proof.failedCommands);
|
|
120
|
+
renderCommandGroup(lines, 'Stale', report.proof.staleCommands);
|
|
121
|
+
return lines.join('\n');
|
|
122
|
+
}
|
|
123
|
+
function renderCommandGroup(lines, label, values) {
|
|
124
|
+
lines.push(`- **${label}:**`);
|
|
125
|
+
if (values.length === 0) {
|
|
126
|
+
lines.push(' - none');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
for (const value of values)
|
|
130
|
+
lines.push(` - ${markdownInlineCode(value)}`);
|
|
131
|
+
}
|
|
132
|
+
function renderList(lines, values) {
|
|
133
|
+
if (values.length === 0) {
|
|
134
|
+
lines.push('- none');
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
for (const value of values)
|
|
138
|
+
lines.push(`- ${markdownInlineCode(value)}`);
|
|
139
|
+
}
|
|
140
|
+
function printList(values, empty) {
|
|
141
|
+
if (values.length === 0) {
|
|
142
|
+
console.log(`- ${empty}`);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
for (const value of values)
|
|
146
|
+
console.log(`- ${value}`);
|
|
147
|
+
}
|
|
148
|
+
function parsePositiveInt(value) {
|
|
149
|
+
const parsed = Number.parseInt(value, 10);
|
|
150
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
151
|
+
throw new Error('value must be a positive integer');
|
|
152
|
+
}
|
|
153
|
+
return parsed;
|
|
154
|
+
}
|
|
155
|
+
function delay(ms) {
|
|
156
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { assertFormatSupported, getRootPath, loadProjectConfig, maybeCompactBanner, program, setupLogLevel, } from '../_shared.js';
|
|
3
|
+
import { computePassport } from '../../core/passport.js';
|
|
4
|
+
import { escapeMarkdownText, markdownInlineCode } from '../../core/markdownSafety.js';
|
|
5
|
+
export function registerPassport() {
|
|
6
|
+
program
|
|
7
|
+
.command('passport')
|
|
8
|
+
.description('Create an Agent Change Passport from a Proof Contract and current proof receipt')
|
|
9
|
+
.option('--intent <text>', 'plain-language change intent to contract before or during work')
|
|
10
|
+
.option('--contract <path>', 'existing Proof Contract JSON path')
|
|
11
|
+
.option('--save-contract <path>', 'write the generated Proof Contract JSON when --intent is supplied')
|
|
12
|
+
.option('--output <path>', 'write passport JSON to .projscan/passport.json or .projscan/passports/<name>.json')
|
|
13
|
+
.option('--max-files <count>', 'maximum likely touched files to include in a generated contract', parsePositiveInt)
|
|
14
|
+
.option('--feedback <path>', 'local projscan feedback artifact to apply as trust memory')
|
|
15
|
+
.option('--base-ref <ref>', 'base ref for changed-file detection')
|
|
16
|
+
.option('--ledger <path>', 'proof ledger JSONL path')
|
|
17
|
+
.option('--task-id <id>', 'Baseframe task ID for attached assessment evidence')
|
|
18
|
+
.option('--emit-baseframe', 'write the Baseframe ProjScan assessment artifact')
|
|
19
|
+
.action(async (cmdOpts) => {
|
|
20
|
+
setupLogLevel();
|
|
21
|
+
maybeCompactBanner();
|
|
22
|
+
const format = assertFormatSupported('passport');
|
|
23
|
+
try {
|
|
24
|
+
const config = await loadProjectConfig();
|
|
25
|
+
const passport = await computePassport(getRootPath(), {
|
|
26
|
+
intent: cmdOpts.intent,
|
|
27
|
+
contractPath: cmdOpts.contract,
|
|
28
|
+
saveContractPath: cmdOpts.saveContract,
|
|
29
|
+
outputPath: cmdOpts.output,
|
|
30
|
+
maxFiles: cmdOpts.maxFiles,
|
|
31
|
+
feedbackPath: cmdOpts.feedback,
|
|
32
|
+
baseRef: cmdOpts.baseRef,
|
|
33
|
+
ledgerPath: cmdOpts.ledger,
|
|
34
|
+
taskId: cmdOpts.taskId,
|
|
35
|
+
emitBaseframe: Boolean(cmdOpts.emitBaseframe),
|
|
36
|
+
proofRecipes: config.proofRecipes,
|
|
37
|
+
});
|
|
38
|
+
if (format === 'json') {
|
|
39
|
+
console.log(JSON.stringify(passport, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (format === 'markdown') {
|
|
43
|
+
console.log(renderPassportMarkdown(passport));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
printPassportConsole(passport);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
console.error(chalk.red(err instanceof Error ? err.message : String(err)));
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function printPassportConsole(passport) {
|
|
55
|
+
const color = passport.status === 'blocked' || passport.status === 'drifted'
|
|
56
|
+
? chalk.red
|
|
57
|
+
: passport.status === 'needs-proof'
|
|
58
|
+
? chalk.yellow
|
|
59
|
+
: chalk.green;
|
|
60
|
+
console.log(color(`Projscan Passport: ${passport.status}`));
|
|
61
|
+
console.log(passport.summary);
|
|
62
|
+
console.log('');
|
|
63
|
+
console.log(chalk.bold('Reviewer'));
|
|
64
|
+
console.log(`- decision: ${passport.reviewer.decision}`);
|
|
65
|
+
console.log(`- action: ${passport.reviewer.action}`);
|
|
66
|
+
console.log(`- ${passport.reviewer.summary}`);
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log(chalk.bold('Boundary'));
|
|
69
|
+
printList(passport.boundary.allowedFiles.slice(0, 8), 'No allowed files in contract');
|
|
70
|
+
if (passport.boundary.forbiddenFiles.length > 0) {
|
|
71
|
+
console.log('');
|
|
72
|
+
console.log(chalk.bold('Forbidden'));
|
|
73
|
+
printList(passport.boundary.forbiddenFiles.slice(0, 8), 'No forbidden files in contract');
|
|
74
|
+
}
|
|
75
|
+
console.log('');
|
|
76
|
+
console.log(chalk.bold('Receipt'));
|
|
77
|
+
console.log(`- scope: ${passport.receipt.scopeStatus}`);
|
|
78
|
+
console.log(`- proof: ${passport.receipt.proofStatus}`);
|
|
79
|
+
console.log(`- sufficiency: ${passport.receipt.proofSufficiencyStatus ?? 'unknown'}`);
|
|
80
|
+
console.log(`- changed files: ${passport.receipt.changedFiles.length}`);
|
|
81
|
+
console.log('');
|
|
82
|
+
console.log(chalk.bold('Next Commands'));
|
|
83
|
+
printList(passport.nextCommands.slice(0, 8), 'No next commands');
|
|
84
|
+
}
|
|
85
|
+
export function renderPassportMarkdown(passport) {
|
|
86
|
+
const lines = [
|
|
87
|
+
'# Projscan Agent Change Passport',
|
|
88
|
+
'',
|
|
89
|
+
`- **Status:** ${passport.status}`,
|
|
90
|
+
`- **Summary:** ${escapeMarkdownText(passport.summary)}`,
|
|
91
|
+
`- **Reviewer action:** ${passport.reviewer.action}`,
|
|
92
|
+
`- **Reviewer decision:** ${passport.reviewer.decision}`,
|
|
93
|
+
];
|
|
94
|
+
if (passport.intent)
|
|
95
|
+
lines.push(`- **Intent:** ${escapeMarkdownText(passport.intent)}`);
|
|
96
|
+
if (passport.artifacts.contractPath) {
|
|
97
|
+
lines.push(`- **Contract:** ${markdownInlineCode(passport.artifacts.contractPath)}`);
|
|
98
|
+
}
|
|
99
|
+
if (passport.artifacts.passportPath) {
|
|
100
|
+
lines.push(`- **Passport:** ${markdownInlineCode(passport.artifacts.passportPath)}`);
|
|
101
|
+
}
|
|
102
|
+
if (passport.baseframe) {
|
|
103
|
+
lines.push(`- **Baseframe assessment:** ${markdownInlineCode(passport.baseframe.assessmentPath)}`);
|
|
104
|
+
}
|
|
105
|
+
lines.push('');
|
|
106
|
+
lines.push('## Boundary');
|
|
107
|
+
lines.push('');
|
|
108
|
+
renderCommandOrFileList(lines, 'Allowed files', passport.boundary.allowedFiles);
|
|
109
|
+
renderCommandOrFileList(lines, 'Forbidden files', passport.boundary.forbiddenFiles);
|
|
110
|
+
renderCommandOrFileList(lines, 'Likely tests', passport.boundary.likelyTests);
|
|
111
|
+
renderCommandOrFileList(lines, 'Proof commands', passport.boundary.proofCommands);
|
|
112
|
+
lines.push('');
|
|
113
|
+
lines.push('## Receipt');
|
|
114
|
+
lines.push('');
|
|
115
|
+
lines.push(`- **Scope:** ${passport.receipt.scopeStatus}`);
|
|
116
|
+
lines.push(`- **Proof:** ${passport.receipt.proofStatus}`);
|
|
117
|
+
lines.push(`- **Proof sufficiency:** ${passport.receipt.proofSufficiencyStatus ?? 'unknown'}`);
|
|
118
|
+
lines.push(`- **Proof replay:** ${passport.receipt.proofReplayStatus ?? 'unknown'}`);
|
|
119
|
+
renderCommandOrFileList(lines, 'Changed files', passport.receipt.changedFiles);
|
|
120
|
+
renderCommandOrFileList(lines, 'Forbidden touched', passport.receipt.forbiddenTouched);
|
|
121
|
+
renderCommandOrFileList(lines, 'Outside allowed', passport.receipt.outsideAllowed);
|
|
122
|
+
renderCommandOrFileList(lines, 'Changed after proof', passport.receipt.changedAfterProof);
|
|
123
|
+
lines.push('');
|
|
124
|
+
lines.push('## Next Commands');
|
|
125
|
+
lines.push('');
|
|
126
|
+
for (const command of passport.nextCommands)
|
|
127
|
+
lines.push(`- ${markdownInlineCode(command)}`);
|
|
128
|
+
return lines.join('\n');
|
|
129
|
+
}
|
|
130
|
+
function renderCommandOrFileList(lines, label, values) {
|
|
131
|
+
lines.push(`- **${label}:**`);
|
|
132
|
+
if (values.length === 0) {
|
|
133
|
+
lines.push(' - none');
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
for (const value of values.slice(0, 12))
|
|
137
|
+
lines.push(` - ${markdownInlineCode(value)}`);
|
|
138
|
+
}
|
|
139
|
+
function printList(values, empty) {
|
|
140
|
+
if (values.length === 0) {
|
|
141
|
+
console.log(`- ${empty}`);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
for (const value of values)
|
|
145
|
+
console.log(`- ${value}`);
|
|
146
|
+
}
|
|
147
|
+
function parsePositiveInt(value) {
|
|
148
|
+
const parsed = Number.parseInt(value, 10);
|
|
149
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
150
|
+
throw new Error('value must be a positive integer');
|
|
151
|
+
}
|
|
152
|
+
return parsed;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=passport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passport.js","sourceRoot":"","sources":["../../../src/cli/commands/passport.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,8 @@ import { registerQualityScorecard } from './commands/qualityScorecard.js';
|
|
|
51
51
|
import { registerAssess } from './commands/assess.js';
|
|
52
52
|
import { registerSimulate } from './commands/simulate.js';
|
|
53
53
|
import { registerProve } from './commands/prove.js';
|
|
54
|
+
import { registerPassport } from './commands/passport.js';
|
|
55
|
+
import { registerGuard } from './commands/guard.js';
|
|
54
56
|
import { registerFirstRun, registerRecipes } from './commands/recipes.js';
|
|
55
57
|
import { registerStart } from './commands/start.js';
|
|
56
58
|
import { registerTrial } from './commands/trial.js';
|
|
@@ -113,6 +115,8 @@ export const CLI_COMMAND_REGISTRARS = [
|
|
|
113
115
|
registerAssess,
|
|
114
116
|
registerSimulate,
|
|
115
117
|
registerProve,
|
|
118
|
+
registerPassport,
|
|
119
|
+
registerGuard,
|
|
116
120
|
registerStart,
|
|
117
121
|
registerTrial,
|
|
118
122
|
registerTelemetry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerCommands.js","sourceRoot":"","sources":["../../src/cli/registerCommands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registerCommands.js","sourceRoot":"","sources":["../../src/cli/registerCommands.ts"],"names":[],"mappings":"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"}
|