projscan 4.2.0 → 4.3.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 (47) hide show
  1. package/README.md +93 -26
  2. package/dist/cli/commands/missionProof.d.ts +1 -0
  3. package/dist/cli/commands/missionProof.js +478 -0
  4. package/dist/cli/commands/missionProof.js.map +1 -0
  5. package/dist/cli/commands/start.js +18 -0
  6. package/dist/cli/commands/start.js.map +1 -1
  7. package/dist/cli/index.js +2 -0
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/core/missionOutcome.d.ts +2 -0
  10. package/dist/core/missionOutcome.js +219 -0
  11. package/dist/core/missionOutcome.js.map +1 -0
  12. package/dist/core/missionProof.d.ts +6 -0
  13. package/dist/core/missionProof.js +92 -0
  14. package/dist/core/missionProof.js.map +1 -0
  15. package/dist/core/missionProofBaseline.d.ts +10 -0
  16. package/dist/core/missionProofBaseline.js +131 -0
  17. package/dist/core/missionProofBaseline.js.map +1 -0
  18. package/dist/core/missionProofMarkdown.d.ts +2 -0
  19. package/dist/core/missionProofMarkdown.js +80 -0
  20. package/dist/core/missionProofMarkdown.js.map +1 -0
  21. package/dist/core/missionProofSummary.d.ts +2 -0
  22. package/dist/core/missionProofSummary.js +16 -0
  23. package/dist/core/missionProofSummary.js.map +1 -0
  24. package/dist/core/start.d.ts +1 -0
  25. package/dist/core/start.js +9 -4
  26. package/dist/core/start.js.map +1 -1
  27. package/dist/index.d.ts +6 -1
  28. package/dist/index.js +5 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/mcp/tools/start.js +5 -0
  31. package/dist/mcp/tools/start.js.map +1 -1
  32. package/dist/projscan-sbom.cdx.json +6 -6
  33. package/dist/tool-manifest.json +6 -2
  34. package/dist/types.d.ts +91 -0
  35. package/dist/utils/formatSupport.d.ts +1 -0
  36. package/dist/utils/formatSupport.js +1 -0
  37. package/dist/utils/formatSupport.js.map +1 -1
  38. package/docs/GUIDE.md +23 -1
  39. package/docs/demos/projscan-4-1-demo.html +78 -94
  40. package/docs/demos/projscan-mission-control.tape +13 -0
  41. package/docs/demos/projscan-mission-proof.tape +25 -0
  42. package/docs/projscan-mission-control.gif +0 -0
  43. package/docs/projscan-mission-control.png +0 -0
  44. package/docs/projscan-mission-proof.gif +0 -0
  45. package/docs/projscan-proof-router.png +0 -0
  46. package/package.json +9 -2
  47. package/scripts/capture-vhs-demos.mjs +80 -0
package/README.md CHANGED
@@ -33,24 +33,29 @@ The local plugin platform lets teams add project-specific findings and render `d
33
33
  npx projscan
34
34
  ```
35
35
 
36
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-reporter-plugin.gif" alt="projscan doctor rendered through a local reporter plugin in a macOS-style terminal window" width="700">
36
+ <img src="docs/projscan-mission-control.gif" alt="projscan Mission Control turning a plain-language goal into shortcut commands, proof commands, and review gates" width="760">
37
37
 
38
- ## What's New in 4.2.0
38
+ ## What's New in 4.3.1
39
39
 
40
- 4.2.0 turns Mission Control into a runnable handoff system: tell projscan the work, then get the next command, MCP call, proof queue, review gate, and saved bundle an agent can resume.
40
+ 4.3.1 polishes the Mission Control loop. Agents can save a mission, run proof, resume from the saved proof state, report whether the work is ready for version review, and share the workflow with reproducible terminal demos.
41
41
 
42
- - **Execution plans with a cursor.** `projscan start --intent "<goal>"` now returns ordered phases, blocked inputs, follow-ups, done criteria, and a current cursor so agents know what to run next.
43
- - **Copyable shortcuts for humans and MCP clients.** Use `--next-command`, `--next-tool-call`, `--proof-commands`, `--checklist`, `--resume-json`, `--handoff-json`, `--task-card`, and `--runbook` when you need one surface instead of the full report.
44
- - **Saved mission bundles.** `--save-mission <dir>` writes a runnable bundle with `mission.sh`, `status.sh`, `review.sh`, quick commands, manifest metadata, prompts, JSON handoff files, proof logs, run reports, and `summary.json`.
45
- - **Stop-and-review gates.** Mission Control now carries review policy, worktree evidence, proof queues, done criteria, reviewer decisions, and copyable reply text so agents stop before another slice, release, publish, deploy, push, merge, or version bump.
46
- - **Safer shell handoffs.** Generated commands and saved mission scripts now escape `$` and backticks in freeform intent text, so copied commands treat developer goals as literal arguments.
42
+ - **Mission outcome resume.** `projscan start --mission <dir>` reads a saved Mission Control bundle, includes the latest proof status from `proof-logs/summary.json`, and adds a resume prompt that starts from real pass/fail evidence.
43
+ - **Proof-to-review summary.** The start report now includes `missionControl.outcome`: what changed, what remains, failed command details, reviewer decisions, reruns, and a version-candidate recommendation.
44
+ - **Local adoption proof.** `projscan mission-proof --mission <dir> --format markdown` prints a paste-ready proof report. Use `--format json` for scripts. Both formats can compare one or more mission bundles with an optional manual baseline to estimate reruns avoided, failed gates caught, and developer time saved.
45
+ - **Mission Proof triage.** `--latest`, `--all`, `--list`, `--needs-attention`, `--mission-status`, `--summary`, `--require-passed`, and `--write` turn saved mission bundles into local release-review artifacts.
46
+ - **Reproducible demo media.** `npm run docs:demos` renders checked-in VHS demos for Mission Control and Mission Proof; `npm run docs:assets` refreshes screenshots and GIFs together.
47
+ - **Clear public language count.** projscan now describes language support as 11 AST adapters covering 12 named languages, matching README, website prompt, and MCP Registry copy.
47
48
 
48
49
  <img src="docs/projscan-proof-router.png" alt="projscan intent router and proof workflow showing impact routing, setup discovery, dependency intelligence, and stable-surface guardrails" width="760">
49
50
 
50
- Regenerate the README screenshots with Playwright:
51
+ <img src="docs/projscan-mission-proof.gif" alt="projscan saving a Mission Control bundle, reporting local mission proof, and resuming from saved proof state" width="760">
52
+
53
+ Regenerate the README media with Playwright and VHS:
51
54
 
52
55
  ```bash
56
+ npm run docs:assets
53
57
  npm run docs:screenshots
58
+ npm run docs:demos
54
59
  ```
55
60
 
56
61
  ## Mission Execution Plan + Copyable Handoffs
@@ -80,10 +85,54 @@ projscan start --review-policy --intent "<goal>" # Review policy JSON
80
85
  projscan start --review-replies --intent "<goal>" # Copy-only reviewer replies
81
86
  projscan start --runbook --intent "<goal>" # Markdown mission runbook
82
87
  projscan start --handoff-prompt --intent "<goal>" # One-line handoff prompt
88
+ projscan start --mission .projscan/mission # Resume from saved proof state
89
+ projscan mission-proof --mission .projscan/mission --format markdown # Paste-ready proof report
90
+ projscan mission-proof --list --format json # List saved mission bundles
91
+ projscan mission-proof --list --needs-attention --format json # List bundles that are not passed
92
+ projscan mission-proof --latest --format markdown # Report the newest saved mission bundle
93
+ projscan mission-proof --all --format markdown # Roll up local saved mission bundles
94
+ projscan mission-proof --all --require-passed # Fail if any selected bundle is not passed
95
+ projscan mission-proof --all --summary # One-line proof status for CI logs
96
+ projscan mission-proof --mission .projscan/mission --format json # Local proof summary for scripts
97
+ projscan mission-proof --init-baseline manual-runs.json # Create baseline template
98
+ projscan mission-proof --add-baseline-run manual-runs.json --id manual-1 --status passed --minutes-spent 25 # Record manual run
99
+ projscan mission-proof --check-baseline manual-runs.json # Validate baseline file
100
+ projscan mission-proof --mission .projscan/mission --write reports/mission-proof.md # Save a proof artifact
83
101
  ```
84
102
 
85
103
  Saved mission bundles include `README.md`, `next-command.txt`, `next-tool-call.json`, `handoff-prompt.txt`, `resume-prompt.txt`, `task-card.md`, `review-gate.md`, `review-gate.json`, `review-policy.json`, `review-replies.txt`, the Markdown runbook, structured handoff/resume JSON, `ready-tool-calls.json`, `shortcuts.json`, `mission.sh`, `status.sh`, `review.sh`, `proof-logs/README.md`, `proof-logs/status.jsonl`, `proof-logs/run-report.md`, `proof-logs/summary.json`, proof commands, and a manifest. The saved bundle README starts with quick commands for `./mission.sh`, `./status.sh`, and `./review.sh`; `manifest.json` exposes the same quick commands under `quickCommands` for agents and JSON clients. Running saved `mission.sh` writes current and proof command output under `proof-logs/`, appends exit codes to `status.jsonl`, refreshes `run-report.md` for review, and writes the latest run state plus next action to `summary.json` for agents. Run `./status.sh` from the bundle to print the latest mission state and next action; it exits `0` for passed, `1` for failed, and `2` for not-run or running states. Run `./review.sh` from the bundle to print the status, review gate, run report, evidence command checklist, and reviewer replies in one terminal view.
86
104
 
105
+ When work resumes, point start at the saved bundle:
106
+
107
+ ```bash
108
+ projscan start --mission .projscan/mission
109
+ ```
110
+
111
+ `projscan start` reads `proof-logs/summary.json`, `proof-logs/status.jsonl`, and local review decision files. The report tells the next agent what changed, what remains, which command failed if proof did not pass, and whether the bundle is ready for a version-candidate review. For a local measurement report, run:
112
+
113
+ ```bash
114
+ projscan mission-proof --mission .projscan/mission --format markdown
115
+ projscan mission-proof --list --format json
116
+ projscan mission-proof --list --needs-attention --format json
117
+ projscan mission-proof --list --mission-status failed --format json
118
+ projscan mission-proof --latest --format markdown
119
+ projscan mission-proof --all --format markdown
120
+ projscan mission-proof --all --require-passed
121
+ projscan mission-proof --all --summary --require-passed
122
+ projscan mission-proof --all --write reports/mission-proof.md
123
+ projscan mission-proof --mission .projscan/mission --write reports/mission-proof.md
124
+ projscan mission-proof --init-baseline manual-runs.json
125
+ projscan mission-proof --init-baseline manual-runs.json --format json
126
+ projscan mission-proof --add-baseline-run manual-runs.json --id manual-1 --status passed --minutes-spent 25 --reruns 1 --failed-gates 0 --reviewer-approvals 1
127
+ projscan mission-proof --add-baseline-run manual-runs.json --id manual-2 --status failed --format json
128
+ projscan mission-proof --check-baseline manual-runs.json
129
+ projscan mission-proof --check-baseline manual-runs.json --format json
130
+ projscan mission-proof --mission .projscan/mission --baseline manual-runs.json --format json
131
+ projscan mission-proof --mission .projscan/mission --baseline manual-runs.json --format json --write reports/mission-proof.json
132
+ ```
133
+
134
+ The Markdown report is ready for PR notes, release review, and handoff docs. Add `--list` to show saved mission bundles, status, update time, totals, and copyable resume/proof commands before choosing a target. Add `--needs-attention` or `--mission-status failed` to focus that list. Add `--latest` to select the saved mission bundle with the newest `proof-logs/summary.json`. Add `--all` to discover `.projscan/mission` plus direct child bundles under `.projscan/missions/`. Add `--summary` when terminal logs need one status line. Add `--require-passed` when a local script or CI job should exit nonzero unless every selected bundle passed. Add `--write reports/mission-proof.md` to save the report as a local artifact; `.md` and `.markdown` paths write Markdown by default. Use JSON when agents or scripts need the same proof data, and add `--write reports/mission-proof.json` when CI should archive it. Run `--init-baseline manual-runs.json` to create the local baseline template, then use `--add-baseline-run` to record measured manual runs without editing JSON. Add `--format json` to baseline init, append, or check commands when a wrapper needs the written path, run count, added run, or totals. If `--baseline` or `--check-baseline` points at a missing or malformed file, projscan prints the exact template command or expected JSON shape. Baseline run IDs must be non-empty and unique. Baseline run statuses must be `passed`, `failed`, `running`, `not_run`, or `unknown`; metric fields must be non-negative numbers. The baseline file is optional. When present, it can list manual runs with minutes spent, reruns, failed gates, and reviewer approvals; projscan compares that local baseline with Mission Control proof without uploading source.
135
+
87
136
  Default console output shows the same sections inline: `Run Cursor`, `Resume Checklist`, `Handoff Prompt`, `Ready Proof`, and `Proof Queue`. The proof views use the resume-aware remaining queue, so projscan does not repeat the current cursor command as proof.
88
137
 
89
138
  Console output shows the same model for humans:
@@ -189,7 +238,7 @@ Run `projscan doctor` for a focused health check:
189
238
  npx projscan doctor
190
239
  ```
191
240
 
192
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
241
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20doctor.gif" alt="npx projscan doctor" width="700">
193
242
 
194
243
  ## Install
195
244
 
@@ -522,9 +571,9 @@ npm run test:trust-smoke
522
571
 
523
572
  The full command catalog is below. Most users should start with the five-command path above instead of scanning the catalog.
524
573
 
525
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
574
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
526
575
 
527
- For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/GUIDE.md)**.
576
+ For a comprehensive walkthrough, see the **[Full Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/GUIDE.md)**.
528
577
 
529
578
  ## Repo Understanding
530
579
 
@@ -547,6 +596,7 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
547
596
  | `projscan analyze` | Full analysis - languages, frameworks, dependencies, issues |
548
597
  | `projscan route` | Map a plain-language goal to the best projscan tool with weighted confidence and matched keywords |
549
598
  | `projscan start` | First-60-seconds workflow orientation with setup diagnostics, Mission Control, top risks, and next commands. Add `--intent "<goal>"` to route a plain-language goal to route confidence, phased execution plan, ready actions, done criteria, and proof commands |
599
+ | `projscan mission-proof` | Summarize saved Mission Control proof, reviewer decisions, reruns, failed gates, and optional manual-baseline comparison |
550
600
  | `projscan first-run` | First-run setup diagnostics plus the shared `firstTenMinutes` command path |
551
601
  | `projscan init mcp` | Ready-to-paste MCP client configs for popular agent clients |
552
602
  | `projscan mcp doctor` | Verify MCP setup and print paste-ready client config with checks |
@@ -605,25 +655,25 @@ projscan --help
605
655
  <details>
606
656
  <summary><strong>projscan structure</strong> - Directory tree with file counts</summary>
607
657
 
608
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
658
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20structure.gif" alt="npx projscan structure" width="700">
609
659
  </details>
610
660
 
611
661
  <details>
612
662
  <summary><strong>projscan diagram</strong> - Architecture visualization</summary>
613
663
 
614
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
664
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20diagram.gif" alt="npx projscan diagram" width="700">
615
665
  </details>
616
666
 
617
667
  <details>
618
668
  <summary><strong>projscan dependencies</strong> - Dependency analysis</summary>
619
669
 
620
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
670
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20dependencies.gif" alt="npx projscan dependencies" width="700">
621
671
  </details>
622
672
 
623
673
  <details>
624
674
  <summary><strong>projscan badge</strong> - Health badge generation</summary>
625
675
 
626
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
676
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20badge.gif" alt="npx projscan badge" width="700">
627
677
  </details>
628
678
 
629
679
  ### Output Formats
@@ -634,6 +684,8 @@ Commands accept `--format` for different output targets. Supported formats are c
634
684
  projscan analyze --format json # Machine-readable JSON
635
685
  projscan analyze --format html # Self-contained HTML report
636
686
  projscan doctor --format markdown # Markdown for docs/PRs
687
+ projscan mission-proof --format markdown # Mission proof report for handoffs
688
+ projscan mission-proof --write reports/mission-proof.md # Save Markdown proof
637
689
  projscan ci --format sarif # SARIF 2.1.0 for GitHub Code Scanning
638
690
  ```
639
691
 
@@ -645,7 +697,7 @@ Run `projscan help` for the generated command-by-command support matrix.
645
697
 
646
698
  projscan can load local plugins from `.projscan-plugins/` when `PROJSCAN_PLUGINS_PREVIEW=1` is set. The environment flag is kept for explicit local-code opt-in. Analyzer plugins emit normal projscan issues; reporter plugins render supported CLI commands with team-specific output.
647
699
 
648
- **2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/plugin.schema.json) as the stable contract.
700
+ **2.0 upgrade notes:** migrating from 1.x or authoring plugins? Start with the [2.0 Migration Guide](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/2.0-MIGRATION.md), then use [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-AUTHORING.md), the [Plugin Gallery](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-GALLERY.md), and the [manifest schema](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/plugin.schema.json) as the stable contract.
649
701
 
650
702
  ```bash
651
703
  projscan plugin list
@@ -656,9 +708,9 @@ PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --reporter team-radar
656
708
  PROJSCAN_PLUGINS_PREVIEW=1 projscan ci --reporter team-radar --min-score 80
657
709
  ```
658
710
 
659
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
711
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/projscan-reporter-plugin.gif" alt="projscan local reporter plugin rendering a team health report" width="700">
660
712
 
661
- Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
713
+ Reporter plugins are intentionally CLI-only. MCP tools keep returning structured JSON-compatible payloads so agents can reason over stable data, while humans can get a polished local report for their team. Custom presentation, team-branded summaries, and white-label reports belong in reporter plugins rather than new core HTML theming flags. See [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-AUTHORING.md) for manifest shape, `render(context)`, validation, and the trust model.
662
714
 
663
715
  ### Options
664
716
 
@@ -681,6 +733,21 @@ Reporter plugins are intentionally CLI-only. MCP tools keep returning structured
681
733
  | `--handoff-json` | Print only the Mission Control handoff object as JSON (`start`) |
682
734
  | `--mission-script` | Print the Mission Control shell script (`start`) |
683
735
  | `--save-mission <dir>` | Write the Mission Control bundle to a directory (`start`) |
736
+ | `--mission <dir>` | Read a saved Mission Control bundle and include proof outcome in `start`; repeatable mission selector for `mission-proof` |
737
+ | `--list` | List saved Mission Control bundles with status and update time (`mission-proof`) |
738
+ | `--needs-attention` | Filter `mission-proof --list` to bundles that are not passed |
739
+ | `--mission-status <status>` | Filter `mission-proof --list` by `passed`, `failed`, `running`, `not_run`, or `unknown` |
740
+ | `--latest` | Select the saved Mission Control bundle with the newest `proof-logs/summary.json` (`mission-proof`) |
741
+ | `--all` | Discover `.projscan/mission` and direct child bundles under `.projscan/missions/` (`mission-proof`) |
742
+ | `--baseline <path>` | Compare `mission-proof` with a local manual-run baseline JSON file |
743
+ | `--init-baseline <file>` | Write a local manual-run baseline JSON template (`mission-proof`) |
744
+ | `--add-baseline-run <file>` | Append one measured manual run to a local baseline JSON file (`mission-proof`) |
745
+ | `--check-baseline <file>` | Validate a local manual-run baseline JSON file (`mission-proof`) |
746
+ | `--id <id>` / `--status <status>` | Identify a run added with `--add-baseline-run` (`mission-proof`) |
747
+ | `--minutes-spent`, `--reruns`, `--failed-gates`, `--reviewer-approvals` | Numeric fields for `--add-baseline-run` (`mission-proof`) |
748
+ | `--write <file>` | Write a Markdown or JSON artifact (`mission-proof`, `handoff`) |
749
+ | `--require-passed` | Exit nonzero unless every selected mission bundle passed proof (`mission-proof`) |
750
+ | `--summary` | Print one compact Mission Proof status line (`mission-proof`) |
684
751
  | `--task-card` | Print only the Mission Control Markdown task card (`start`) |
685
752
  | `--review-gate` | Print only the Mission Control stop-and-review gate (`start`) |
686
753
  | `--review-gate-json` | Print only the Mission Control review gate as JSON (`start`) |
@@ -719,7 +786,7 @@ This outputs a [shields.io](https://shields.io) badge URL and markdown snippet y
719
786
 
720
787
  ## What It Detects
721
788
 
722
- **Languages**: TypeScript, JavaScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++ (full AST analysis for all 11), plus file-level detection for C, Dart, Lua, Scala, R, Shell, CSS, HTML, SQL, and more.
789
+ **Languages**: 11 AST adapters covering 12 named languages: TypeScript, JavaScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++. projscan also provides file-level detection for C, Dart, Lua, Scala, R, Shell, CSS, HTML, SQL, and more.
723
790
 
724
791
  **Frameworks**: React, Next.js, Vue, Nuxt, Svelte, Angular, Express, Fastify, NestJS, Vite, Tailwind CSS, Prisma, and more
725
792
 
@@ -843,7 +910,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
843
910
  ### Audit it yourself
844
911
 
845
912
  - **Source is open** at [github.com/abhiyoheswaran1/projscan](https://github.com/abhiyoheswaran1/projscan). The npm tarball matches the `dist/` produced by `npm run build` at the matching tag.
846
- - **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/STABILITY.md).
913
+ - **Public API surface is locked** by `scripts/check-stability.mjs`, which runs in CI on every PR and fails on any rename or removal of an MCP tool, CLI command, or exit code. See [`docs/STABILITY.md`](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/STABILITY.md).
847
914
  - **Run it offline:** `npm install -g projscan` followed by anything except `audit` and `--mode semantic` works without network.
848
915
  - **Drop privilege further:** in CI, run projscan in a sandbox that disallows network egress; everything except `audit` will pass.
849
916
 
@@ -894,7 +961,7 @@ projscan ci --changed-only # Gate only on this PR's diff
894
961
  projscan ci --format sarif > projscan.sarif # SARIF for Code Scanning
895
962
  ```
896
963
 
897
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
964
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20ci%20--min-score%2070.gif" alt="npx projscan ci --min-score 70" width="700">
898
965
 
899
966
  ### GitHub Action (recommended)
900
967
 
@@ -971,7 +1038,7 @@ Fields:
971
1038
  - `hotspots.limit` / `hotspots.since` - defaults for the `hotspots` command
972
1039
  - `monorepo.importPolicy` - cross-package import allow/deny rules in monorepos *(0.14+)*
973
1040
 
974
- See [`docs/GUIDE.md` -> Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
1041
+ See [`docs/GUIDE.md` -> Configuration](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/GUIDE.md#configuration-projscanrc) for the full reference (field types, validation behavior, embedding config in `package.json`, monorepo `importPolicy` semantics).
975
1042
 
976
1043
  ## Tracking Health Over Time
977
1044
 
@@ -984,7 +1051,7 @@ projscan diff # Compare against baseline
984
1051
  projscan diff --format markdown # Markdown diff for PRs
985
1052
  ```
986
1053
 
987
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
1054
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20diff%20--save-baseline.gif" alt="npx projscan diff --save-baseline" width="700">
988
1055
 
989
1056
  ## Hotspots - Where to Fix First
990
1057
 
@@ -1073,7 +1140,7 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
1073
1140
 
1074
1141
  **This is the primary way to use projscan.** `projscan mcp` starts an [MCP](https://modelcontextprotocol.io) server over stdio so AI coding agents can query your codebase with real structural accuracy - not regex, not grep.
1075
1142
 
1076
- <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.2.0/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
1143
+ <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
1077
1144
 
1078
1145
  Two questions an agent asks; structural answers in milliseconds. *"What breaks if I rename `buildCodeGraph`?"* → 31 direct callers, 97 files reachable. *"Where should I fix first?"* → ranked hotspots with AST cyclomatic complexity, churn, and ownership signals.
1079
1146
 
@@ -1283,7 +1350,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
1283
1350
  - **`projscan_apply_fix`** *(1.6)* - mechanically execute the safe fix templates. Default is dry-run; pass `confirm: true` to write. Atomic writes, per-apply rollback record at `.projscan-cache/rollbacks/<id>.json`. Reverse with `action: "rollback", rollback_id: ...`. Six templates supported at this release: `unused-dependency-*`, `missing-test-framework`, `missing-eslint`, `missing-prettier`, `missing-editorconfig`, `missing-readme`.
1284
1351
  - **`projscan_taint`** *(1.6)* - source-to-sink reachability over the per-function call graph. Built-in defaults cover common JS / Python sources (`process.env`, `req.body`, etc.) and sinks (`exec`, `eval`, `db.query`, etc.). Project-specific names go in `.projscanrc.json` `taint`. `projscan_review` automatically diffs taint flows between base and head and **blocks any PR that introduces a new flow**. In 3.0.2, review surfaces hardened `newDataflowRisks`, compact `graphEvidence`, and graph-readiness gates for safer handoff.
1285
1352
 
1286
- Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.2.0/docs/PLUGIN-AUTHORING.md).
1353
+ Analyzer plugins can optionally read graph/dataflow context through `check(rootPath, files, context)` while staying on manifest schema v1. The packaged `graph-context` example shows `context.getSemanticGraph()` and `context.getDataflow()` in a real analyzer. For analyzer and reporter plugin authoring, manifest validation, `--reporter <name>`, and the trust model, see [Plugin Authoring](https://github.com/abhiyoheswaran1/projscan/blob/v4.3.1/docs/PLUGIN-AUTHORING.md).
1287
1354
 
1288
1355
  ### Context-window budgeting
1289
1356
 
@@ -0,0 +1 @@
1
+ export declare function registerMissionProof(): void;