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.
Files changed (46) hide show
  1. package/README.md +81 -3
  2. package/dist/cli/commands/assess.js +36 -2
  3. package/dist/cli/commands/assess.js.map +1 -1
  4. package/dist/cli/commands/guard.d.ts +3 -0
  5. package/dist/cli/commands/guard.js +158 -0
  6. package/dist/cli/commands/guard.js.map +1 -0
  7. package/dist/cli/commands/passport.d.ts +3 -0
  8. package/dist/cli/commands/passport.js +154 -0
  9. package/dist/cli/commands/passport.js.map +1 -0
  10. package/dist/cli/registerCommands.js +4 -0
  11. package/dist/cli/registerCommands.js.map +1 -1
  12. package/dist/core/baseframeAssessment.d.ts +9 -0
  13. package/dist/core/baseframeAssessment.js +471 -0
  14. package/dist/core/baseframeAssessment.js.map +1 -0
  15. package/dist/core/guard.d.ts +2 -0
  16. package/dist/core/guard.js +107 -0
  17. package/dist/core/guard.js.map +1 -0
  18. package/dist/core/passport.d.ts +2 -0
  19. package/dist/core/passport.js +278 -0
  20. package/dist/core/passport.js.map +1 -0
  21. package/dist/mcp/toolCatalog.js +2 -0
  22. package/dist/mcp/toolCatalog.js.map +1 -1
  23. package/dist/mcp/tools/passport.d.ts +2 -0
  24. package/dist/mcp/tools/passport.js +80 -0
  25. package/dist/mcp/tools/passport.js.map +1 -0
  26. package/dist/projscan-sbom.cdx.json +6 -6
  27. package/dist/publicCore.d.ts +3 -0
  28. package/dist/publicCore.js +3 -0
  29. package/dist/publicCore.js.map +1 -1
  30. package/dist/tool-manifest.json +56 -3
  31. package/dist/types/baseframe.d.ts +75 -0
  32. package/dist/types/baseframe.js +2 -0
  33. package/dist/types/baseframe.js.map +1 -0
  34. package/dist/types/guard.d.ts +32 -0
  35. package/dist/types/guard.js +2 -0
  36. package/dist/types/guard.js.map +1 -0
  37. package/dist/types/passport.d.ts +75 -0
  38. package/dist/types/passport.js +2 -0
  39. package/dist/types/passport.js.map +1 -0
  40. package/dist/types.d.ts +3 -0
  41. package/dist/utils/formatSupport.d.ts +2 -0
  42. package/dist/utils/formatSupport.js +2 -0
  43. package/dist/utils/formatSupport.js.map +1 -1
  44. package/docs/GUIDE.md +48 -0
  45. package/docs/integrations/baseframe-suite-v1.md +163 -0
  46. package/package.json +2 -1
@@ -0,0 +1,32 @@
1
+ import type { ProveProofStatus, ProveProofSufficiencyStatus, ProveReceipt, ProveScopeStatus } from './prove.js';
2
+ export type GuardStatus = 'clear' | 'attention' | 'drift' | 'blocked';
3
+ export type GuardReviewerAction = 'continue' | 'run-proof' | 'rerun-proof' | 'stop-and-recontract';
4
+ export interface ComputeGuardOptions {
5
+ contractPath?: string;
6
+ baseRef?: string;
7
+ ledgerPath?: string;
8
+ }
9
+ export interface GuardReport {
10
+ schemaVersion: 1;
11
+ kind: 'agent-scope-guard';
12
+ status: GuardStatus;
13
+ exitCode: number;
14
+ summary: string;
15
+ reviewerAction: GuardReviewerAction;
16
+ drift: {
17
+ status: ProveScopeStatus;
18
+ files: string[];
19
+ forbiddenTouched: string[];
20
+ outsideAllowed: string[];
21
+ changedAfterProof: string[];
22
+ };
23
+ proof: {
24
+ status: ProveProofStatus;
25
+ sufficiencyStatus?: ProveProofSufficiencyStatus;
26
+ missingCommands: string[];
27
+ failedCommands: string[];
28
+ staleCommands: string[];
29
+ };
30
+ mutatedFiles: string[];
31
+ receipt?: ProveReceipt;
32
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/types/guard.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ import type { ProveContract, ProveProofReplayStatus, ProveProofStatus, ProveProofSufficiencyStatus, ProveReceipt, ProveReviewerDecision, ProveScopeStatus, ProveVerifiedWorkflow, ProveVerdict } from './prove.js';
2
+ import type { ProofRecipeConfig } from './config.js';
3
+ export type AgentChangePassportStatus = 'ready' | 'needs-proof' | 'drifted' | 'blocked';
4
+ export type AgentChangePassportReviewerAction = 'review' | 'run-proof' | 'rerun-proof' | 'stop-and-recontract';
5
+ export interface ComputePassportOptions {
6
+ intent?: string;
7
+ contractPath?: string;
8
+ saveContractPath?: string;
9
+ outputPath?: string;
10
+ maxFiles?: number;
11
+ feedbackPath?: string;
12
+ baseRef?: string;
13
+ ledgerPath?: string;
14
+ taskId?: string;
15
+ emitBaseframe?: boolean;
16
+ proofRecipes?: ProofRecipeConfig[];
17
+ }
18
+ export interface AgentChangePassportBoundary {
19
+ contractId?: string;
20
+ allowedFiles: string[];
21
+ forbiddenFiles: string[];
22
+ likelyTests: string[];
23
+ riskyContracts: string[];
24
+ proofCommands: string[];
25
+ receiptCommand?: string;
26
+ }
27
+ export interface AgentChangePassportReceiptSummary {
28
+ scopeStatus: ProveScopeStatus;
29
+ proofStatus: ProveProofStatus;
30
+ proofSufficiencyStatus?: ProveProofSufficiencyStatus;
31
+ proofReplayStatus?: ProveProofReplayStatus;
32
+ changedFiles: string[];
33
+ forbiddenTouched: string[];
34
+ outsideAllowed: string[];
35
+ changedAfterProof: string[];
36
+ missingCommands: string[];
37
+ failedCommands: string[];
38
+ staleCommands: string[];
39
+ requiredReviewers: string[];
40
+ }
41
+ export interface AgentChangePassportReviewerSummary {
42
+ decision: ProveReviewerDecision;
43
+ action: AgentChangePassportReviewerAction;
44
+ summary: string;
45
+ }
46
+ export interface AgentChangePassportArtifacts {
47
+ contractPath?: string;
48
+ passportPath?: string;
49
+ }
50
+ export interface AgentChangePassportBaseframe {
51
+ taskId: string;
52
+ assessmentPath: string;
53
+ workflowPath: string;
54
+ }
55
+ export interface AgentChangePassport {
56
+ schemaVersion: 1;
57
+ kind: 'agent-change-passport';
58
+ generatedAt: string;
59
+ status: AgentChangePassportStatus;
60
+ intent?: string;
61
+ summary: string;
62
+ boundary: AgentChangePassportBoundary;
63
+ receipt: AgentChangePassportReceiptSummary;
64
+ reviewer: AgentChangePassportReviewerSummary;
65
+ nextCommands: string[];
66
+ warnings: string[];
67
+ artifacts: AgentChangePassportArtifacts;
68
+ baseframe?: AgentChangePassportBaseframe;
69
+ prove: {
70
+ verdict: ProveVerdict;
71
+ verifiedWorkflow: ProveVerifiedWorkflow;
72
+ contract?: ProveContract;
73
+ receipt?: ProveReceipt;
74
+ };
75
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.js","sourceRoot":"","sources":["../../src/types/passport.ts"],"names":[],"mappings":""}
package/dist/types.d.ts CHANGED
@@ -25,8 +25,11 @@ export type * from './types/trial.js';
25
25
  export type * from './types/understand.js';
26
26
  export type * from './types/qualityScorecard.js';
27
27
  export type * from './types/assess.js';
28
+ export type * from './types/baseframe.js';
28
29
  export type * from './types/simulate.js';
29
30
  export type * from './types/prove.js';
31
+ export type * from './types/passport.js';
32
+ export type * from './types/guard.js';
30
33
  export type * from './types/proofLedger.js';
31
34
  export type * from './types/regressionPlan.js';
32
35
  export type * from './types/start.js';
@@ -6,6 +6,8 @@ export declare const COMMAND_FORMAT_SUPPORT: {
6
6
  readonly assess: readonly ["console", "json", "markdown"];
7
7
  readonly simulate: readonly ["console", "json", "markdown"];
8
8
  readonly prove: readonly ["console", "json", "markdown"];
9
+ readonly passport: readonly ["console", "json", "markdown"];
10
+ readonly guard: readonly ["console", "json", "markdown"];
9
11
  readonly 'apply-fix': readonly ["console", "json"];
10
12
  readonly audit: readonly ["console", "json", "markdown", "sarif"];
11
13
  readonly badge: readonly ["console"];
@@ -11,6 +11,8 @@ export const COMMAND_FORMAT_SUPPORT = {
11
11
  assess: ['console', 'json', 'markdown'],
12
12
  simulate: ['console', 'json', 'markdown'],
13
13
  prove: ['console', 'json', 'markdown'],
14
+ passport: ['console', 'json', 'markdown'],
15
+ guard: ['console', 'json', 'markdown'],
14
16
  'apply-fix': ['console', 'json'],
15
17
  audit: ['console', 'json', 'markdown', 'sarif'],
16
18
  badge: ['console'],
@@ -1 +1 @@
1
- {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"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"}
package/docs/GUIDE.md CHANGED
@@ -26,6 +26,8 @@ This guide starts with demonstrated workflows before the command reference. For
26
26
  - [assess](#assess)
27
27
  - [simulate](#simulate)
28
28
  - [prove](#prove)
29
+ - [passport](#passport)
30
+ - [guard](#guard)
29
31
  - [evidence-pack](#evidence-pack)
30
32
  - [privacy-check](#privacy-check)
31
33
  - [mission-proof](#mission-proof)
@@ -138,6 +140,8 @@ projscan prove --intent "is my agent allowed to change billing retry logic?" --s
138
140
  # Make the bounded edit, then run the proof command.
139
141
  projscan prove --run -- npm test -- tests/billing/retry.test.ts
140
142
  projscan prove --changed --contract .projscan/proof-contract.json --format markdown
143
+ projscan passport --contract .projscan/proof-contract.json --format markdown
144
+ projscan guard --contract .projscan/proof-contract.json
141
145
  ```
142
146
 
143
147
  The path is `start -> prove -> run -> changed`. Agent-permission intents route
@@ -165,6 +169,13 @@ and MCP clients. It names the phase, next action, next command, scope status,
165
169
  proof status, proof sufficiency status, risk delta direction, reviewer decision,
166
170
  and stale/missing/failed proof flags.
167
171
 
172
+ `projscan passport` packages the contract and receipt into a reviewer handoff.
173
+ It includes allowed files, forbidden files, changed files, proof replay, Proof
174
+ Sufficiency, reviewer action, and next commands. `projscan guard` checks the
175
+ current working tree against the same contract and reports drift, missing proof,
176
+ stale proof, or a clear state. Use `guard --watch` during an agent session when
177
+ you want repeated scope checks without running proof commands.
178
+
168
179
  Team Proof Recipes let the repo encode path-specific proof in `proofRecipes`;
169
180
  when a matching recipe is configured, `prove --intent` adds its required
170
181
  commands, reviewers, and forbidden files to the Proof Contract. `prove --changed`
@@ -336,6 +347,8 @@ When the agent first opens a repo, or before starting a refactor, the question i
336
347
  - **`projscan_assess` / `projscan assess`** — proof-first assessment. Composes quality-scorecard, bug-hunt, and preflight into Proof Cards with local evidence, impact, a safe fix shape, verification commands, feedback or suppression guidance, and risk delta. Proof Cards include evidence strength, confidence reason, ranking reasons, trust memory, evidence gaps, and an AgentLoopKit handoff packet. Use `projscan assess --goal "make this repo safer to ship this week"` for a broad weekly pass, `projscan assess --mode fix-first --format markdown` when you want one or two next actions instead of a long list, `--feedback .projscan-feedback.json` when local reviewer memory should affect ranking, or `--baseline previous-assess.json` to compare against a prior assessment. The command is read-only and does not release, tag, publish, or deploy.
337
348
  - **`projscan_simulate` / `projscan simulate`** — risk delta simulator. Evaluates a proposed change plan before editing and returns likely touched files, affected tests, contract surfaces, rollout steps, proof commands, confidence, projected before/after risk, alternatives, and a recommended option. Use `projscan simulate --plan "split bugHunt.ts into ranking, evidence, and output modules"` before doing a refactor. The command is read-only and does not execute the plan.
338
349
  - **`projscan_prove` / `projscan prove`** — executable Proof Contracts, Verified Workflow JSON, Proof Replay, and Proof Sufficiency. Use `projscan prove --intent "<change>"` before editing to get allowed files, forbidden files, risky contracts, likely tests, proof commands, rollback, confidence, Trust Memory signals, reviewer guidance, and `proofRequirements`. Use `projscan prove --run -- <command...>` to execute a local proof command and record a `prove-run` ledger row. Use `projscan prove --record-command "<command>" --exit-code <code>` for imported proof outcomes from CI or another runner. Use `projscan prove --changed --contract .projscan/proof-contract.json --format markdown` after editing to produce a Proof Receipt with changed-file classes, scope drift, forbidden touches, proof status, `proofReplay`, `changedAfterProof`, receipt fingerprint, `proofSufficiency`, stale proof, failed proof, risk delta, reviewer decision, and commit readiness. MCP can create and replay contracts and record imported proof; only the CLI `prove --run` executes local commands. Read `verifiedWorkflow` when an agent needs the next action without parsing Markdown.
350
+ - **`projscan_passport` / `projscan passport`**: Agent Change Passport for reviewer handoff. It returns the Proof Contract boundary, current receipt, proof replay, Proof Sufficiency, reviewer action, next commands, and optional Baseframe assessment paths. MCP returns evidence and does not run proof commands.
351
+ - **`projscan guard`**: local scope guard for a saved Proof Contract. It reports clear, attention, drift, or blocked for the current working tree and can poll with `--watch`.
339
352
  - **`projscan_understand` / `projscan understand`** — cited repo-comprehension surface. Returns repo maps, runtime flow maps, contract maps, change-readiness guidance, verification tiers, unknowns, read-first files, and exact next commands.
340
353
  - **`projscan_adoption` / `projscan init team` / `projscan init mcp` / `projscan mcp doctor` / `projscan init policy` / `projscan init github-action` / `projscan recipes` / `projscan first-run` / `projscan telemetry` / `projscan dogfood`** — adoption layer. Returns MCP client config snippets, setup verification, policy starters, PR workflow scaffolding with validated PR comments and block-only enforcement, baseline memory, ownership routing, first-PR onboarding steps, repeatable team-bootstrap and PR-automation recipes, multi-repo dogfood evidence, measured reviewer feedback, default-off telemetry controls, adoption trial reports, and setup diagnostics.
341
354
  - **`projscan_release_train` / `projscan release-train`** — product-line readiness planner. Plans upcoming product lines with version, scope, readiness, and next-action evidence.
@@ -964,6 +977,40 @@ projscan prove --changed --contract .projscan/proof-contract.json --format markd
964
977
 
965
978
  Creates a local Proof Contract, records explicit proof command outcomes in the Proof Ledger, and checks the current working tree against the saved contract after the edit. `prove --run` executes only the command after `--` and keeps shell execution disabled. `prove --record-command` imports external proof into the local ledger without running it.
966
979
 
980
+ ### passport
981
+
982
+ ```bash
983
+ projscan passport --intent "is my agent allowed to change billing retry logic?" --save-contract .projscan/proof-contract.json --format markdown
984
+ projscan passport --contract .projscan/proof-contract.json --output .projscan/passport.json --format json
985
+ projscan passport --intent "Implement password reset" --task-id auth-password-reset-20260627-01 --emit-baseframe
986
+ ```
987
+
988
+ Creates an Agent Change Passport from the Proof Contract and current Proof
989
+ Receipt. The passport names the approved boundary, changed files, proof replay,
990
+ Proof Sufficiency, reviewer decision, reviewer action, next commands, and saved
991
+ artifact paths. It does not execute tests. Run proof through `projscan prove
992
+ --run -- <command...>` before you expect the passport to report ready proof.
993
+
994
+ Passport JSON writes stay under `.projscan/passport.json` or
995
+ `.projscan/passports/<name>.json`. ProjScan rejects traversal, symlink paths, and
996
+ existing files that are not Agent Change Passports. Add `--task-id <id>
997
+ --emit-baseframe` when a Baseframe Suite task also needs
998
+ `.baseframe/evidence/<task-id>/projscan-assessment.json`.
999
+
1000
+ ### guard
1001
+
1002
+ ```bash
1003
+ projscan guard --contract .projscan/proof-contract.json
1004
+ projscan guard --contract .projscan/proof-contract.json --watch
1005
+ projscan guard --contract .projscan/proof-contract.json --fail-on-drift
1006
+ ```
1007
+
1008
+ Checks the current working tree against a saved Proof Contract. Guard reports
1009
+ `clear` when scope and proof satisfy the receipt, `attention` when proof is
1010
+ missing or stale, `drift` when files changed outside the boundary, and `blocked`
1011
+ when the contract is missing or proof failed. `--watch` polls until interrupted.
1012
+ `--fail-on-drift` exits non-zero for drift or a missing contract.
1013
+
967
1014
  ### evidence-pack
968
1015
 
969
1016
  ```bash
@@ -1566,6 +1613,7 @@ _Structural / agent-native:_
1566
1613
  - `projscan_assess` — proof-first assessment with Proof Cards, risk delta, and fix-first guidance.
1567
1614
  - `projscan_simulate` — risk delta simulator for proposed change plans before editing.
1568
1615
  - `projscan_prove` — Proof Contracts and Proof Receipts for proposed and completed changes. MCP records and replays imported proof; only CLI `prove --run` executes commands.
1616
+ - `projscan_passport`: Agent Change Passport with boundary, receipt, proof status, reviewer action, and next commands.
1569
1617
  - `projscan_adoption` — adoption helper for MCP client snippets, MCP setup doctor, agent workflow recipes, and first-run diagnostics.
1570
1618
  - `projscan_release_train` — product-line readiness plan with scope and next-action evidence.
1571
1619
  - `projscan_evidence_pack` — approval packet with planning, bug-hunt, workplan, preflight, changelog, and website prompt evidence.
@@ -0,0 +1,163 @@
1
+ # Baseframe Suite Integration v1
2
+
3
+ ProjScan produces the repository-risk assessment for a specific task. AgentLoopKit
4
+ can consume that assessment to create a task contract, and AgentFlight can later
5
+ consume both artifacts for review readiness. The products stay separate:
6
+ ProjScan does not depend on AgentLoopKit or AgentFlight packages and does not
7
+ write their artifacts.
8
+
9
+ ## Artifact Paths
10
+
11
+ All artifacts are local files inside the target repository:
12
+
13
+ ```text
14
+ .baseframe/
15
+ agent-workflow.json
16
+ evidence/
17
+ <task-id>/
18
+ projscan-assessment.json
19
+ agentloopkit-task.json
20
+ agentflight-result.json
21
+ ```
22
+
23
+ ProjScan owns only:
24
+
25
+ ```text
26
+ .baseframe/evidence/<task-id>/projscan-assessment.json
27
+ ```
28
+
29
+ ProjScan may create or update `.baseframe/agent-workflow.json`. It preserves
30
+ unknown fields and existing AgentLoopKit or AgentFlight sections, and updates
31
+ only shared task timestamps plus `tools.projscan`.
32
+
33
+ ## Command
34
+
35
+ ```bash
36
+ projscan assess \
37
+ --intent "Implement password reset" \
38
+ --task-id auth-password-reset-20260626-01 \
39
+ --emit-baseframe
40
+ ```
41
+
42
+ The command prints the relative assessment path:
43
+
44
+ ```text
45
+ .baseframe/evidence/auth-password-reset-20260626-01/projscan-assessment.json
46
+ ```
47
+
48
+ An explicit ProjScan-owned output path is also supported:
49
+
50
+ ```bash
51
+ projscan assess \
52
+ --intent "Implement password reset" \
53
+ --task-id auth-password-reset-20260626-01 \
54
+ --output .baseframe/evidence/auth-password-reset-20260626-01/projscan-assessment.json
55
+ ```
56
+
57
+ Task IDs must be filesystem-safe: 1 to 128 characters, start and end with a
58
+ letter or number, and contain only letters, numbers, hyphen, or underscore.
59
+
60
+ ## Assessment Schema
61
+
62
+ ```ts
63
+ type ProjScanAssessmentV1 = {
64
+ schemaVersion: "1.0";
65
+ kind: "projscan-assessment";
66
+ producer: { name: "projscan"; version: string };
67
+ taskId: string;
68
+ intent: string;
69
+ generatedAt: string;
70
+ repository: { root: string; branch?: string; commit?: string };
71
+ verdict: "proceed" | "caution" | "block" | "unknown";
72
+ summary: string;
73
+ repositoryType?: string;
74
+ impactedAreas: Array<{ name: string; paths: string[]; reason: string }>;
75
+ reviewFocus: Array<{
76
+ path: string;
77
+ priority: "high" | "medium" | "low";
78
+ reasons: string[];
79
+ }>;
80
+ risks: Array<{
81
+ id: string;
82
+ severity: "info" | "warning" | "blocking";
83
+ category: string;
84
+ message: string;
85
+ files?: string[];
86
+ suggestedAction?: string;
87
+ }>;
88
+ suggestedChecks: Array<{
89
+ command: string;
90
+ reason: string;
91
+ required: boolean;
92
+ }>;
93
+ artifacts?: Array<{ kind: "report" | "scan" | "log"; path: string }>;
94
+ };
95
+ ```
96
+
97
+ ProjScan maps local evidence from `assess`, quality scorecard, bug hunt,
98
+ preflight, language detection, and framework detection. When a signal is not
99
+ available, ProjScan emits `unknown`, omits optional fields, uses empty arrays,
100
+ and explains the limitation in `summary`.
101
+
102
+ ## Workflow Manifest
103
+
104
+ ProjScan writes manifest paths relative to the repository root:
105
+
106
+ ```ts
107
+ type BaseframeAgentWorkflowV1 = {
108
+ schemaVersion: "1.0";
109
+ taskId: string;
110
+ intent: string;
111
+ createdAt: string;
112
+ updatedAt: string;
113
+ tools: {
114
+ projscan?: {
115
+ status: "created" | "completed" | "failed";
116
+ assessmentPath: string;
117
+ version: string;
118
+ };
119
+ agentloopkit?: {
120
+ status: "created" | "completed" | "failed";
121
+ taskPath?: string;
122
+ version?: string;
123
+ };
124
+ agentflight?: {
125
+ status: "created" | "completed" | "failed";
126
+ resultPath?: string;
127
+ version?: string;
128
+ };
129
+ };
130
+ };
131
+ ```
132
+
133
+ Writes are local and atomic. ProjScan rejects malformed task IDs, traversal
134
+ paths, symlinked Baseframe directories, and existing output files that are not a
135
+ matching ProjScan assessment for the same task.
136
+
137
+ ## AgentLoopKit Consumption
138
+
139
+ AgentLoopKit should read:
140
+
141
+ ```text
142
+ .baseframe/evidence/<task-id>/projscan-assessment.json
143
+ ```
144
+
145
+ It should use `taskId`, `intent`, `verdict`, `impactedAreas`, `reviewFocus`,
146
+ `risks`, and `suggestedChecks` to create its own task contract artifact at:
147
+
148
+ ```text
149
+ .baseframe/evidence/<task-id>/agentloopkit-task.json
150
+ ```
151
+
152
+ ProjScan does not call AgentLoopKit and does not write that file.
153
+
154
+ ## Independent Use
155
+
156
+ The existing assessment workflows remain unchanged:
157
+
158
+ ```bash
159
+ projscan assess --mode fix-first --format markdown
160
+ projscan assess --goal "make this repo safer to ship this week" --format json
161
+ ```
162
+
163
+ Use the Baseframe flags only when a stable suite artifact is needed.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
3
  "mcpName": "io.github.abhiyoheswaran1/projscan",
4
- "version": "4.15.0",
4
+ "version": "4.17.0",
5
5
  "description": "Local code intelligence for agent-assisted engineering. Focused daily workflows for repo orientation before edits, proof before handoff or commit, and release-candidate review, with AST-backed evidence through an MCP server and CLI. Runs locally by default.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -14,6 +14,7 @@
14
14
  "README.md",
15
15
  "docs/2.0-MIGRATION.md",
16
16
  "docs/GUIDE.md",
17
+ "docs/integrations/baseframe-suite-v1.md",
17
18
  "docs/PLUGIN-AUTHORING.md",
18
19
  "docs/PLUGIN-GALLERY.md",
19
20
  "docs/ROADMAP.md",