projscan 4.16.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.
@@ -0,0 +1,278 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { createBaseframeAssessment } from './baseframeAssessment.js';
4
+ import { computeProve } from './prove.js';
5
+ import { prepareProofArtifactWritePath } from './proofLedger.js';
6
+ import { quoteShellArg } from './startShellArgs.js';
7
+ import { atomicWriteFile } from '../utils/atomicWrite.js';
8
+ const DEFAULT_CONTRACT_PATH = '.projscan/proof-contract.json';
9
+ const DEFAULT_PASSPORT_PATH = '.projscan/passport.json';
10
+ export async function computePassport(rootPath, options = {}) {
11
+ const root = path.resolve(rootPath);
12
+ const intent = normalizeOptionalText(options.intent);
13
+ const contractReport = intent
14
+ ? await computeProve(root, {
15
+ intent,
16
+ saveContractPath: options.saveContractPath,
17
+ maxFiles: options.maxFiles,
18
+ feedbackPath: options.feedbackPath,
19
+ baseRef: options.baseRef,
20
+ proofRecipes: options.proofRecipes,
21
+ })
22
+ : undefined;
23
+ const contractPath = options.contractPath ?? contractReport?.savedContractPath;
24
+ const changedReport = await computeProve(root, {
25
+ changed: true,
26
+ contract: contractReport?.contract,
27
+ contractPath,
28
+ baseRef: options.baseRef,
29
+ ledgerPath: options.ledgerPath,
30
+ });
31
+ const baseframe = await maybeCreateBaseframe(root, {
32
+ intent,
33
+ taskId: options.taskId,
34
+ emitBaseframe: options.emitBaseframe,
35
+ });
36
+ const artifacts = {
37
+ ...(contractPath ? { contractPath } : {}),
38
+ ...(contractReport?.savedContractPath ? { contractPath: contractReport.savedContractPath } : {}),
39
+ };
40
+ const passport = buildPassport({
41
+ contractReport,
42
+ changedReport,
43
+ intent: intent ?? changedReport.contract?.intent,
44
+ contractPath: artifacts.contractPath ?? options.contractPath,
45
+ baseframe,
46
+ });
47
+ if (options.outputPath) {
48
+ const passportPath = await writePassportArtifact(root, options.outputPath, passport);
49
+ return {
50
+ ...passport,
51
+ artifacts: {
52
+ ...passport.artifacts,
53
+ passportPath,
54
+ },
55
+ };
56
+ }
57
+ return passport;
58
+ }
59
+ function buildPassport(input) {
60
+ const contract = input.changedReport.contract ?? input.contractReport?.contract;
61
+ const receipt = input.changedReport.receipt;
62
+ const receiptSummary = summarizeReceipt(receipt);
63
+ const reviewer = reviewerSummary(input.changedReport, receipt);
64
+ const status = passportStatus(input.changedReport, receipt, reviewer.action);
65
+ const boundary = summarizeBoundary(contract);
66
+ const nextCommands = nextCommandsFor({
67
+ contractPath: input.contractPath,
68
+ boundary,
69
+ receipt: receiptSummary,
70
+ reviewerAction: reviewer.action,
71
+ });
72
+ const artifacts = {
73
+ ...(input.contractPath ? { contractPath: input.contractPath } : {}),
74
+ };
75
+ const passport = {
76
+ schemaVersion: 1,
77
+ kind: 'agent-change-passport',
78
+ generatedAt: new Date().toISOString(),
79
+ status,
80
+ ...(input.intent ? { intent: input.intent } : {}),
81
+ summary: summarizePassport(status, reviewer),
82
+ boundary,
83
+ receipt: receiptSummary,
84
+ reviewer,
85
+ nextCommands,
86
+ warnings: unique([...(input.contractReport?.warnings ?? []), ...input.changedReport.warnings]),
87
+ artifacts,
88
+ ...(input.baseframe ? { baseframe: input.baseframe } : {}),
89
+ prove: {
90
+ verdict: input.changedReport.verdict,
91
+ verifiedWorkflow: input.changedReport.verifiedWorkflow,
92
+ ...(contract ? { contract } : {}),
93
+ ...(receipt ? { receipt } : {}),
94
+ },
95
+ };
96
+ return passport;
97
+ }
98
+ function summarizeBoundary(contract) {
99
+ return {
100
+ ...(contract?.id ? { contractId: contract.id } : {}),
101
+ allowedFiles: contract?.allowedFiles ?? [],
102
+ forbiddenFiles: contract?.forbiddenFiles ?? [],
103
+ likelyTests: contract?.likelyTests ?? [],
104
+ riskyContracts: contract?.riskyContracts ?? [],
105
+ proofCommands: contract?.proofCommands ?? [],
106
+ ...(contract?.receiptCommand ? { receiptCommand: contract.receiptCommand } : {}),
107
+ };
108
+ }
109
+ function summarizeReceipt(receipt) {
110
+ return {
111
+ scopeStatus: receipt?.scope.status ?? 'missing-contract',
112
+ proofStatus: receipt?.proofStatus.status ?? 'missing',
113
+ ...(receipt?.proofSufficiency?.status ? { proofSufficiencyStatus: receipt.proofSufficiency.status } : {}),
114
+ ...(receipt?.proofReplay?.status ? { proofReplayStatus: receipt.proofReplay.status } : {}),
115
+ changedFiles: receipt?.scope.changedFiles ?? [],
116
+ forbiddenTouched: receipt?.scope.forbiddenTouched ?? [],
117
+ outsideAllowed: receipt?.scope.outsideAllowed ?? [],
118
+ changedAfterProof: receipt?.proofReplay?.changedAfterProof ?? [],
119
+ missingCommands: receipt?.proofStatus.missingCommands ?? [],
120
+ failedCommands: receipt?.proofStatus.failedCommands ?? [],
121
+ staleCommands: receipt?.proofStatus.staleCommands ?? [],
122
+ requiredReviewers: receipt?.requiredReviewers ?? [],
123
+ };
124
+ }
125
+ function reviewerSummary(report, receipt) {
126
+ const action = reviewerAction(report, receipt);
127
+ const decision = receipt?.reviewerDecision ?? 'needs-focused-review';
128
+ return {
129
+ decision,
130
+ action,
131
+ summary: reviewerSummaryText(action, receipt),
132
+ };
133
+ }
134
+ function reviewerAction(report, receipt) {
135
+ if (!receipt || receipt.scope.status === 'missing-contract')
136
+ return 'stop-and-recontract';
137
+ if (receipt.scope.status === 'drifted' || report.verdict === 'blocked')
138
+ return 'stop-and-recontract';
139
+ if (receipt.proofStatus.status === 'failed')
140
+ return 'rerun-proof';
141
+ if (receipt.proofStatus.status === 'stale' || receipt.proofReplay?.changedAfterProof.length) {
142
+ return 'rerun-proof';
143
+ }
144
+ if (receipt.proofStatus.status === 'missing' ||
145
+ receipt.proofStatus.status === 'not-run' ||
146
+ receipt.proofStatus.status === 'partial' ||
147
+ receipt.proofSufficiency?.status === 'missing' ||
148
+ receipt.proofSufficiency?.status === 'weak') {
149
+ return 'run-proof';
150
+ }
151
+ return 'review';
152
+ }
153
+ function reviewerSummaryText(action, receipt) {
154
+ if (action === 'stop-and-recontract') {
155
+ const drift = receipt?.scope.forbiddenTouched.concat(receipt.scope.outsideAllowed) ?? [];
156
+ return drift.length > 0
157
+ ? `Stop and create a new contract before reviewing: ${drift.join(', ')} drifted.`
158
+ : 'Stop and create a Proof Contract before reviewing.';
159
+ }
160
+ if (action === 'rerun-proof')
161
+ return 'Rerun proof before review because proof is failed or stale.';
162
+ if (action === 'run-proof')
163
+ return 'Run the missing proof commands before review.';
164
+ return 'Review can proceed with the current passport evidence.';
165
+ }
166
+ function passportStatus(report, receipt, action) {
167
+ if (!receipt || report.verdict === 'blocked')
168
+ return 'blocked';
169
+ if (action === 'stop-and-recontract')
170
+ return 'drifted';
171
+ if (action === 'run-proof' || action === 'rerun-proof')
172
+ return 'needs-proof';
173
+ return 'ready';
174
+ }
175
+ function summarizePassport(status, reviewer) {
176
+ if (status === 'ready')
177
+ return 'ready: scope and proof are review-ready.';
178
+ if (status === 'needs-proof')
179
+ return `needs-proof: ${reviewer.summary}`;
180
+ if (status === 'drifted')
181
+ return `drifted: ${reviewer.summary}`;
182
+ return `blocked: ${reviewer.summary}`;
183
+ }
184
+ function nextCommandsFor(input) {
185
+ const commands = [];
186
+ const contractPath = input.contractPath ?? DEFAULT_CONTRACT_PATH;
187
+ if (input.reviewerAction === 'stop-and-recontract') {
188
+ commands.push('projscan prove --intent "<change intent>" --save-contract .projscan/proof-contract.json');
189
+ }
190
+ if (input.reviewerAction === 'run-proof' || input.reviewerAction === 'rerun-proof') {
191
+ commands.push(...input.receipt.missingCommands);
192
+ commands.push(...input.receipt.failedCommands);
193
+ commands.push(...input.receipt.staleCommands);
194
+ if (commands.length === 0)
195
+ commands.push(...input.boundary.proofCommands);
196
+ }
197
+ commands.push(`projscan prove --changed --contract ${quoteShellArg(contractPath)} --format markdown`);
198
+ commands.push(`projscan passport --contract ${quoteShellArg(contractPath)} --format markdown`);
199
+ return unique(commands);
200
+ }
201
+ async function maybeCreateBaseframe(root, input) {
202
+ if (!input.emitBaseframe && !input.taskId)
203
+ return undefined;
204
+ if (!input.intent)
205
+ throw new Error('passport Baseframe export requires --intent.');
206
+ if (!input.taskId)
207
+ throw new Error('passport Baseframe export requires --task-id.');
208
+ await createBaseframeAssessment({
209
+ root,
210
+ intent: input.intent,
211
+ taskId: input.taskId,
212
+ });
213
+ return {
214
+ taskId: input.taskId,
215
+ assessmentPath: `.baseframe/evidence/${input.taskId}/projscan-assessment.json`,
216
+ workflowPath: '.baseframe/agent-workflow.json',
217
+ };
218
+ }
219
+ async function writePassportArtifact(root, outputPath, passport) {
220
+ const fullPath = resolvePassportOutputPath(root, outputPath);
221
+ await prepareProofArtifactWritePath(root, fullPath);
222
+ await assertWritablePassportOutput(fullPath);
223
+ await atomicWriteFile(fullPath, `${JSON.stringify(passport, null, 2)}\n`);
224
+ return path.relative(root, fullPath).split(path.sep).join('/');
225
+ }
226
+ function resolvePassportOutputPath(rootPath, outputPath) {
227
+ const root = path.resolve(rootPath);
228
+ const requested = outputPath.trim() || DEFAULT_PASSPORT_PATH;
229
+ const fullPath = path.resolve(root, requested);
230
+ const relative = path.relative(root, fullPath);
231
+ if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {
232
+ throw new Error('Passport artifact path must stay inside the project root.');
233
+ }
234
+ const normalized = relative.split(path.sep).join('/');
235
+ if (normalized !== DEFAULT_PASSPORT_PATH && !/^\.projscan\/passports\/[^/]+\.json$/.test(normalized)) {
236
+ throw new Error('Passport artifact path must be .projscan/passport.json or .projscan/passports/<name>.json.');
237
+ }
238
+ return fullPath;
239
+ }
240
+ async function assertWritablePassportOutput(fullPath) {
241
+ let stat;
242
+ try {
243
+ stat = await fs.lstat(fullPath);
244
+ }
245
+ catch (error) {
246
+ if (isNodeErrorCode(error, 'ENOENT'))
247
+ return;
248
+ throw error;
249
+ }
250
+ if (stat.isSymbolicLink())
251
+ throw new Error(`Refusing to overwrite symlinked passport: ${fullPath}`);
252
+ if (!stat.isFile())
253
+ throw new Error(`Existing passport path is not a file: ${fullPath}`);
254
+ let parsed;
255
+ try {
256
+ parsed = JSON.parse(await fs.readFile(fullPath, 'utf-8'));
257
+ }
258
+ catch {
259
+ throw new Error(`Refusing to overwrite existing output that is not an Agent Change Passport: ${fullPath}`);
260
+ }
261
+ if (!isRecord(parsed) || parsed.kind !== 'agent-change-passport' || parsed.schemaVersion !== 1) {
262
+ throw new Error(`Refusing to overwrite existing output that is not an Agent Change Passport: ${fullPath}`);
263
+ }
264
+ }
265
+ function normalizeOptionalText(value) {
266
+ const trimmed = value?.trim() ?? '';
267
+ return trimmed.length > 0 ? trimmed : undefined;
268
+ }
269
+ function unique(values) {
270
+ return [...new Set(values.filter(Boolean))];
271
+ }
272
+ function isRecord(value) {
273
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
274
+ }
275
+ function isNodeErrorCode(error, code) {
276
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === code;
277
+ }
278
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.js","sourceRoot":"","sources":["../../src/core/passport.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ import { qualityScorecardTool } from './tools/qualityScorecard.js';
43
43
  import { assessTool } from './tools/assess.js';
44
44
  import { simulateTool } from './tools/simulate.js';
45
45
  import { proveTool } from './tools/prove.js';
46
+ import { passportTool } from './tools/passport.js';
46
47
  import { adoptionTool } from './tools/adoption.js';
47
48
  import { startTool } from './tools/start.js';
48
49
  import { understandTool } from './tools/understand.js';
@@ -86,6 +87,7 @@ export const mcpTools = [
86
87
  assessTool,
87
88
  simulateTool,
88
89
  proveTool,
90
+ passportTool,
89
91
  adoptionTool,
90
92
  startTool,
91
93
  understandTool,
@@ -1 +1 @@
1
- {"version":3,"file":"toolCatalog.js","sourceRoot":"","sources":["../../src/mcp/toolCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolCatalog.js","sourceRoot":"","sources":["../../src/mcp/toolCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { McpTool } from './_shared.js';
2
+ export declare const passportTool: McpTool;
@@ -0,0 +1,80 @@
1
+ import { computePassport } from '../../core/passport.js';
2
+ import { loadConfig } from '../../utils/config.js';
3
+ export const passportTool = {
4
+ name: 'projscan_passport',
5
+ description: 'Create a local Agent Change Passport for reviewer handoff. Returns Proof Contract boundary, changed-file scope, proof replay, proof sufficiency, reviewer action, next commands, and optional Baseframe assessment paths without executing proof commands.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ intent: {
10
+ type: 'string',
11
+ description: 'Plain-language change intent to contract before or during work.',
12
+ },
13
+ contract_path: {
14
+ type: 'string',
15
+ description: 'Optional local Proof Contract JSON path for receipt validation.',
16
+ },
17
+ save_contract_path: {
18
+ type: 'string',
19
+ description: 'Optional local path to write the generated Proof Contract in intent mode.',
20
+ },
21
+ output_path: {
22
+ type: 'string',
23
+ description: 'Optional local passport JSON path under .projscan/passport.json or .projscan/passports/.',
24
+ },
25
+ max_files: {
26
+ type: 'number',
27
+ description: 'Maximum likely touched files to include. Default: 5, max: 25.',
28
+ },
29
+ feedback_path: {
30
+ type: 'string',
31
+ description: 'Optional local feedback artifact path to apply as trust memory.',
32
+ },
33
+ base_ref: {
34
+ type: 'string',
35
+ description: 'Optional git base ref for changed-file detection.',
36
+ },
37
+ ledger_path: {
38
+ type: 'string',
39
+ description: 'Optional local Proof Ledger JSONL path.',
40
+ },
41
+ task_id: {
42
+ type: 'string',
43
+ description: 'Optional Baseframe task ID when emit_baseframe is true.',
44
+ },
45
+ emit_baseframe: {
46
+ type: 'boolean',
47
+ description: 'Write the Baseframe ProjScan assessment artifact for this task.',
48
+ },
49
+ max_tokens: {
50
+ type: 'number',
51
+ description: 'Cap the response to roughly this many tokens.',
52
+ },
53
+ },
54
+ },
55
+ handler: async (args, rootPath) => {
56
+ const { config } = await loadConfig(rootPath);
57
+ return {
58
+ passport: await computePassport(rootPath, {
59
+ intent: stringArg(args.intent),
60
+ contractPath: stringArg(args.contract_path),
61
+ saveContractPath: stringArg(args.save_contract_path),
62
+ outputPath: stringArg(args.output_path),
63
+ maxFiles: finiteNumberArg(args.max_files),
64
+ feedbackPath: stringArg(args.feedback_path),
65
+ baseRef: stringArg(args.base_ref),
66
+ ledgerPath: stringArg(args.ledger_path),
67
+ taskId: stringArg(args.task_id),
68
+ emitBaseframe: args.emit_baseframe === true,
69
+ proofRecipes: config.proofRecipes,
70
+ }),
71
+ };
72
+ },
73
+ };
74
+ function stringArg(value) {
75
+ return typeof value === 'string' ? value : undefined;
76
+ }
77
+ function finiteNumberArg(value) {
78
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
79
+ }
80
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.js","sourceRoot":"","sources":["../../../src/mcp/tools/passport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,4PAA4P;IAC9P,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iEAAiE;aAC/E;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iEAAiE;aAC/E;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2EAA2E;aACzF;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0FAA0F;aACxG;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+DAA+D;aAC7E;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iEAAiE;aAC/E;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yCAAyC;aACvD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,iEAAiE;aAC/E;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO;YACL,QAAQ,EAAE,MAAM,eAAe,CAAC,QAAQ,EAAE;gBACxC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC3C,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBACpD,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC3C,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC/B,aAAa,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;gBAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC"}
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:12b15eac-df3a-433e-8905-e162e6e28c3c",
4
+ "serialNumber": "urn:uuid:2ec981e4-2508-486e-9eb4-ab553d92dabb",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-06-26T21:00:43.477Z",
7
+ "timestamp": "2026-06-27T22:41:33.247Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "projscan",
11
11
  "name": "projscan-sbom-generator",
12
- "version": "4.16.0"
12
+ "version": "4.17.0"
13
13
  }
14
14
  ],
15
15
  "component": {
16
16
  "type": "application",
17
- "bom-ref": "pkg:npm/projscan@4.16.0",
17
+ "bom-ref": "pkg:npm/projscan@4.17.0",
18
18
  "name": "projscan",
19
- "version": "4.16.0",
20
- "purl": "pkg:npm/projscan@4.16.0"
19
+ "version": "4.17.0",
20
+ "purl": "pkg:npm/projscan@4.17.0"
21
21
  }
22
22
  },
23
23
  "components": [
@@ -8,6 +8,8 @@ export { computeAssess } from './core/assess.js';
8
8
  export { createBaseframeAssessment, type CreateBaseframeAssessmentOptions, } from './core/baseframeAssessment.js';
9
9
  export { computeSimulation } from './core/simulate.js';
10
10
  export { computeProve } from './core/prove.js';
11
+ export { computePassport } from './core/passport.js';
12
+ export { computeGuard } from './core/guard.js';
11
13
  export { inspectFile } from './core/fileInspector.js';
12
14
  export { buildImportGraph, toPackageName, isPackageUsed, filesImporting, } from './core/importGraph.js';
13
15
  export { detectOutdated } from './core/outdatedDetector.js';
@@ -8,6 +8,8 @@ export { computeAssess } from './core/assess.js';
8
8
  export { createBaseframeAssessment, } from './core/baseframeAssessment.js';
9
9
  export { computeSimulation } from './core/simulate.js';
10
10
  export { computeProve } from './core/prove.js';
11
+ export { computePassport } from './core/passport.js';
12
+ export { computeGuard } from './core/guard.js';
11
13
  export { inspectFile } from './core/fileInspector.js';
12
14
  export { buildImportGraph, toPackageName, isPackageUsed, filesImporting, } from './core/importGraph.js';
13
15
  export { detectOutdated } from './core/outdatedDetector.js';
@@ -1 +1 @@
1
- {"version":3,"file":"publicCore.js","sourceRoot":"","sources":["../src/publicCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,yBAAyB,GAE1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAwD,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,WAAW,GAEZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,KAAK,IAAI,WAAW,EACpB,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"publicCore.js","sourceRoot":"","sources":["../src/publicCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,yBAAyB,GAE1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAwD,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,WAAW,GAEZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,KAAK,IAAI,WAAW,EACpB,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,WAAW,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "projscan",
3
- "version": "4.16.0",
3
+ "version": "4.17.0",
4
4
  "mcpProtocolVersion": null,
5
- "generatedAt": "2026-06-26T21:00:51.373Z",
6
- "toolCount": 48,
5
+ "generatedAt": "2026-06-27T22:41:40.825Z",
6
+ "toolCount": 49,
7
7
  "tools": [
8
8
  {
9
9
  "name": "projscan_analyze",
@@ -1119,6 +1119,59 @@
1119
1119
  }
1120
1120
  }
1121
1121
  },
1122
+ {
1123
+ "name": "projscan_passport",
1124
+ "description": "Create a local Agent Change Passport for reviewer handoff. Returns Proof Contract boundary, changed-file scope, proof replay, proof sufficiency, reviewer action, next commands, and optional Baseframe assessment paths without executing proof commands.",
1125
+ "inputSchema": {
1126
+ "type": "object",
1127
+ "properties": {
1128
+ "intent": {
1129
+ "type": "string",
1130
+ "description": "Plain-language change intent to contract before or during work."
1131
+ },
1132
+ "contract_path": {
1133
+ "type": "string",
1134
+ "description": "Optional local Proof Contract JSON path for receipt validation."
1135
+ },
1136
+ "save_contract_path": {
1137
+ "type": "string",
1138
+ "description": "Optional local path to write the generated Proof Contract in intent mode."
1139
+ },
1140
+ "output_path": {
1141
+ "type": "string",
1142
+ "description": "Optional local passport JSON path under .projscan/passport.json or .projscan/passports/."
1143
+ },
1144
+ "max_files": {
1145
+ "type": "number",
1146
+ "description": "Maximum likely touched files to include. Default: 5, max: 25."
1147
+ },
1148
+ "feedback_path": {
1149
+ "type": "string",
1150
+ "description": "Optional local feedback artifact path to apply as trust memory."
1151
+ },
1152
+ "base_ref": {
1153
+ "type": "string",
1154
+ "description": "Optional git base ref for changed-file detection."
1155
+ },
1156
+ "ledger_path": {
1157
+ "type": "string",
1158
+ "description": "Optional local Proof Ledger JSONL path."
1159
+ },
1160
+ "task_id": {
1161
+ "type": "string",
1162
+ "description": "Optional Baseframe task ID when emit_baseframe is true."
1163
+ },
1164
+ "emit_baseframe": {
1165
+ "type": "boolean",
1166
+ "description": "Write the Baseframe ProjScan assessment artifact for this task."
1167
+ },
1168
+ "max_tokens": {
1169
+ "type": "number",
1170
+ "description": "Cap the response to roughly this many tokens."
1171
+ }
1172
+ }
1173
+ }
1174
+ },
1122
1175
  {
1123
1176
  "name": "projscan_adoption",
1124
1177
  "description": "Adoption helper for new projscan users and agents. Returns ready-to-paste MCP client configs, workflow recipes, or first-run diagnostics without mutating the repo.",
@@ -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":""}