projscan 4.12.1 → 4.14.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 (59) hide show
  1. package/README.md +76 -12
  2. package/dist/cli/commands/prove.d.ts +3 -0
  3. package/dist/cli/commands/prove.js +379 -0
  4. package/dist/cli/commands/prove.js.map +1 -0
  5. package/dist/cli/commands/startMissionBundle.js +38 -0
  6. package/dist/cli/commands/startMissionBundle.js.map +1 -1
  7. package/dist/cli/registerCommands.js +2 -0
  8. package/dist/cli/registerCommands.js.map +1 -1
  9. package/dist/core/evidenceComment.js +31 -0
  10. package/dist/core/evidenceComment.js.map +1 -1
  11. package/dist/core/feedback.js +18 -0
  12. package/dist/core/feedback.js.map +1 -1
  13. package/dist/core/intentRouterCatalog.js +34 -0
  14. package/dist/core/intentRouterCatalog.js.map +1 -1
  15. package/dist/core/intentRouterKeywordToolGuards.js +10 -0
  16. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  17. package/dist/core/intentRouterWorkflowKeywordWeights.js +29 -0
  18. package/dist/core/intentRouterWorkflowKeywordWeights.js.map +1 -1
  19. package/dist/core/proofLedger.d.ts +9 -0
  20. package/dist/core/proofLedger.js +144 -0
  21. package/dist/core/proofLedger.js.map +1 -0
  22. package/dist/core/prove.d.ts +20 -0
  23. package/dist/core/prove.js +1121 -0
  24. package/dist/core/prove.js.map +1 -0
  25. package/dist/core/releaseEvidence.js +48 -0
  26. package/dist/core/releaseEvidence.js.map +1 -1
  27. package/dist/core/startFixedRouteCriteria.js +4 -0
  28. package/dist/core/startFixedRouteCriteria.js.map +1 -1
  29. package/dist/core/startRouteActions.js +5 -0
  30. package/dist/core/startRouteActions.js.map +1 -1
  31. package/dist/mcp/toolCatalog.js +2 -0
  32. package/dist/mcp/toolCatalog.js.map +1 -1
  33. package/dist/mcp/tools/prove.d.ts +2 -0
  34. package/dist/mcp/tools/prove.js +93 -0
  35. package/dist/mcp/tools/prove.js.map +1 -0
  36. package/dist/projscan-sbom.cdx.json +6 -6
  37. package/dist/publicCore.d.ts +1 -0
  38. package/dist/publicCore.js +1 -0
  39. package/dist/publicCore.js.map +1 -1
  40. package/dist/tool-manifest.json +68 -3
  41. package/dist/types/dogfood.d.ts +4 -0
  42. package/dist/types/evidencePack.d.ts +13 -0
  43. package/dist/types/proofLedger.d.ts +30 -0
  44. package/dist/types/proofLedger.js +2 -0
  45. package/dist/types/proofLedger.js.map +1 -0
  46. package/dist/types/prove.d.ts +123 -0
  47. package/dist/types/prove.js +2 -0
  48. package/dist/types/prove.js.map +1 -0
  49. package/dist/types.d.ts +2 -0
  50. package/dist/utils/formatSupport.d.ts +1 -0
  51. package/dist/utils/formatSupport.js +1 -0
  52. package/dist/utils/formatSupport.js.map +1 -1
  53. package/docs/GUIDE.md +54 -1
  54. package/docs/demos/projscan-4-1-demo.html +24 -24
  55. package/docs/projscan-mission-control.gif +0 -0
  56. package/docs/projscan-mission-control.png +0 -0
  57. package/docs/projscan-mission-proof.gif +0 -0
  58. package/docs/projscan-proof-router.png +0 -0
  59. package/package.json +1 -1
@@ -93,6 +93,26 @@ const BUG_HUNT_WEIGHT_TWO_KEYWORDS = new Set([
93
93
  'win',
94
94
  'wins',
95
95
  ]);
96
+ const PROVE_WEIGHT_TWO_KEYWORDS = new Set([
97
+ 'agent',
98
+ 'allowed',
99
+ 'allow',
100
+ 'permission',
101
+ 'permissions',
102
+ 'proof',
103
+ 'contract',
104
+ 'contracts',
105
+ 'scope',
106
+ 'scoped',
107
+ 'forbidden',
108
+ 'receipt',
109
+ 'receipts',
110
+ 'replay',
111
+ 'ledger',
112
+ 'stale',
113
+ 'fresh',
114
+ 'bounded',
115
+ ]);
96
116
  export function workflowKeywordWeight(tool, keyword) {
97
117
  if (tool === 'projscan_evidence_pack')
98
118
  return evidencePackKeywordWeight(keyword);
@@ -100,6 +120,8 @@ export function workflowKeywordWeight(tool, keyword) {
100
120
  return releaseTrainKeywordWeight(keyword);
101
121
  if (tool === 'projscan_bug_hunt')
102
122
  return bugHuntKeywordWeight(keyword);
123
+ if (tool === 'projscan_prove')
124
+ return proveKeywordWeight(keyword);
103
125
  return undefined;
104
126
  }
105
127
  function evidencePackKeywordWeight(keyword) {
@@ -121,4 +143,11 @@ function bugHuntKeywordWeight(keyword) {
121
143
  return 0.25;
122
144
  return undefined;
123
145
  }
146
+ function proveKeywordWeight(keyword) {
147
+ if (PROVE_WEIGHT_TWO_KEYWORDS.has(keyword))
148
+ return 2;
149
+ if (['change', 'changed', 'edit', 'edits', 'prove'].includes(keyword))
150
+ return 0.5;
151
+ return undefined;
152
+ }
124
153
  //# sourceMappingURL=intentRouterWorkflowKeywordWeights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intentRouterWorkflowKeywordWeights.js","sourceRoot":"","sources":["../../src/core/intentRouterWorkflowKeywordWeights.ts"],"names":[],"mappings":"AAAA,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhF,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,UAAU;IACV,OAAO;IACP,UAAU;IACV,SAAS;IACT,SAAS;IACT,WAAW;IACX,SAAS;IACT,aAAa;IACb,OAAO;IACP,KAAK;IACL,WAAW;IACX,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,UAAU;IACV,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,SAAS;IACT,WAAW;IACX,OAAO;IACP,SAAS;IACT,YAAY;IACZ,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,WAAW;IACX,QAAQ;IACR,WAAW;IACX,UAAU;IACV,YAAY;IACZ,OAAO;IACP,MAAM;IACN,SAAS;IACT,MAAM;IACN,SAAS;IACT,UAAU;IACV,SAAS;IACT,UAAU;IACV,YAAY;IACZ,aAAa;IACb,SAAS;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,UAAU;IACV,OAAO;IACP,KAAK;IACL,QAAQ;IACR,SAAS;IACT,aAAa;IACb,QAAQ;IACR,MAAM;IACN,UAAU;IACV,SAAS;IACT,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,OAAe;IACjE,IAAI,IAAI,KAAK,wBAAwB;QAAE,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACjF,IAAI,IAAI,KAAK,wBAAwB;QAAE,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACjF,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAe;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAe;IAChD,OAAO,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,IAAI,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"intentRouterWorkflowKeywordWeights.js","sourceRoot":"","sources":["../../src/core/intentRouterWorkflowKeywordWeights.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ProofLedgerRecord, ProofLedgerWriteInput } from '../types/proofLedger.js';
2
+ export declare const DEFAULT_PROOF_LEDGER_PATH = ".projscan/proof-ledger.jsonl";
3
+ export declare function normalizeProofCommand(command: string): string;
4
+ export declare function changedFileFingerprint(files: string[]): string;
5
+ export declare function redactProofSummary(value: string | undefined): string;
6
+ export declare function redactProofOutput(value: string): string;
7
+ export declare function appendProofLedgerRecord(rootPath: string, ledgerPath: string | undefined, input: ProofLedgerWriteInput): Promise<ProofLedgerRecord>;
8
+ export declare function readProofLedger(rootPath: string, ledgerPath: string | undefined): Promise<ProofLedgerRecord[]>;
9
+ export declare function latestProofRecordFor(records: ProofLedgerRecord[], command: string): ProofLedgerRecord | undefined;
@@ -0,0 +1,144 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ export const DEFAULT_PROOF_LEDGER_PATH = '.projscan/proof-ledger.jsonl';
5
+ const MAX_SUMMARY_LENGTH = 240;
6
+ const REDACTION_PATTERNS = [
7
+ /\bBearer\s+[A-Za-z0-9._~+/=-]+/gi,
8
+ /\b(?:sk|pk|whsec|ghp|gho|github_pat)_[A-Za-z0-9_=-]{8,}/gi,
9
+ /\b(password|passwd|pwd|token|secret|api[_-]?key)\s*[:=]\s*["']?[^"'\s,;]+/gi,
10
+ /\b(--?(?:password|passwd|pwd|token|secret|api[_-]?key))\s+[^"'\s,;]+/gi,
11
+ /\b[A-Za-z_][A-Za-z0-9_]*\.env\s*[:=]\s*[^"'\s,;]+/gi,
12
+ ];
13
+ export function normalizeProofCommand(command) {
14
+ return command.trim().replace(/\s+/g, ' ');
15
+ }
16
+ export function changedFileFingerprint(files) {
17
+ const normalized = [...new Set(files.map(normalizePath).filter(Boolean))].sort();
18
+ return crypto.createHash('sha256').update(normalized.join('\n')).digest('hex');
19
+ }
20
+ export function redactProofSummary(value) {
21
+ let summary = redactProofOutput(value ?? '').replace(/\s+/g, ' ').trim();
22
+ if (summary.length === 0)
23
+ summary = 'No proof output summary supplied.';
24
+ if (summary.length > MAX_SUMMARY_LENGTH) {
25
+ return `${summary.slice(0, MAX_SUMMARY_LENGTH - 1)}...`;
26
+ }
27
+ return summary;
28
+ }
29
+ export function redactProofOutput(value) {
30
+ let output = value;
31
+ for (const pattern of REDACTION_PATTERNS) {
32
+ output = output.replace(pattern, redactionReplacement);
33
+ }
34
+ return output;
35
+ }
36
+ export async function appendProofLedgerRecord(rootPath, ledgerPath, input) {
37
+ const completedAt = input.completedAt ?? new Date().toISOString();
38
+ const durationMs = Math.max(0, Math.round(input.durationMs));
39
+ const completedMs = Date.parse(completedAt);
40
+ const startedAt = Number.isFinite(completedMs)
41
+ ? new Date(completedMs - durationMs).toISOString()
42
+ : completedAt;
43
+ const changedFiles = [...new Set(input.changedFiles.map(normalizePath).filter(Boolean))].sort();
44
+ const record = {
45
+ schemaVersion: 1,
46
+ id: proofRecordId(input.command, completedAt, input.exitCode),
47
+ command: input.command,
48
+ normalizedCommand: normalizeProofCommand(input.command),
49
+ cwd: normalizePath(input.cwd ?? '.'),
50
+ exitCode: input.exitCode,
51
+ status: input.exitCode === 0 ? 'passed' : 'failed',
52
+ startedAt,
53
+ completedAt,
54
+ durationMs,
55
+ changedFileFingerprint: changedFileFingerprint(changedFiles),
56
+ changedFiles,
57
+ outputSummary: redactProofSummary(input.outputSummary),
58
+ source: input.source ?? 'prove-record',
59
+ ...(input.logPath ? { logPath: normalizePath(input.logPath) } : {}),
60
+ };
61
+ const fullPath = resolveProofLedgerPath(rootPath, ledgerPath);
62
+ await fs.mkdir(path.dirname(fullPath), { recursive: true });
63
+ await fs.appendFile(fullPath, `${JSON.stringify(record)}\n`, 'utf-8');
64
+ return record;
65
+ }
66
+ export async function readProofLedger(rootPath, ledgerPath) {
67
+ const fullPath = resolveProofLedgerPath(rootPath, ledgerPath);
68
+ let raw;
69
+ try {
70
+ raw = await fs.readFile(fullPath, 'utf-8');
71
+ }
72
+ catch (error) {
73
+ if (isNodeErrorCode(error, 'ENOENT'))
74
+ return [];
75
+ throw error;
76
+ }
77
+ return raw
78
+ .split('\n')
79
+ .map(parseProofLedgerRow)
80
+ .filter((record) => Boolean(record));
81
+ }
82
+ export function latestProofRecordFor(records, command) {
83
+ const normalized = normalizeProofCommand(command);
84
+ let latest;
85
+ for (const record of records) {
86
+ if (record.normalizedCommand !== normalized)
87
+ continue;
88
+ if (!latest || record.completedAt.localeCompare(latest.completedAt) >= 0)
89
+ latest = record;
90
+ }
91
+ return latest;
92
+ }
93
+ function proofRecordId(command, completedAt, exitCode) {
94
+ const digest = crypto
95
+ .createHash('sha256')
96
+ .update(`${normalizeProofCommand(command)}\n${completedAt}\n${exitCode}`)
97
+ .digest('hex')
98
+ .slice(0, 12);
99
+ return `proof-ledger-${digest}`;
100
+ }
101
+ function resolveProofLedgerPath(rootPath, ledgerPath) {
102
+ const root = path.resolve(rootPath);
103
+ const requested = ledgerPath?.trim() ? ledgerPath : DEFAULT_PROOF_LEDGER_PATH;
104
+ const fullPath = path.resolve(root, requested);
105
+ const relative = path.relative(root, fullPath);
106
+ if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {
107
+ throw new Error('Proof ledger path must stay inside the project root.');
108
+ }
109
+ return fullPath;
110
+ }
111
+ function parseProofLedgerRow(line) {
112
+ const trimmed = line.trim();
113
+ if (!trimmed)
114
+ return undefined;
115
+ try {
116
+ const parsed = JSON.parse(trimmed);
117
+ return isProofLedgerRecord(parsed) ? parsed : undefined;
118
+ }
119
+ catch {
120
+ // Ignore malformed local ledger rows; receipts can still report missing proof.
121
+ return undefined;
122
+ }
123
+ }
124
+ function isProofLedgerRecord(value) {
125
+ return (value.schemaVersion === 1 &&
126
+ typeof value.command === 'string' &&
127
+ typeof value.normalizedCommand === 'string' &&
128
+ typeof value.exitCode === 'number');
129
+ }
130
+ function normalizePath(value) {
131
+ return value.split(path.sep).join('/').replace(/^\.\//, '');
132
+ }
133
+ function redactionReplacement(_match, ...args) {
134
+ const captures = args.slice(0, -2);
135
+ const label = captures.find((value) => typeof value === 'string' && value.length > 0);
136
+ return label ? `${label}=[redacted]` : '[redacted]';
137
+ }
138
+ function isNodeErrorCode(error, code) {
139
+ return (typeof error === 'object' &&
140
+ error !== null &&
141
+ 'code' in error &&
142
+ error.code === code);
143
+ }
144
+ //# sourceMappingURL=proofLedger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofLedger.js","sourceRoot":"","sources":["../../src/core/proofLedger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ProveContract, ProveReport } from '../types/prove.js';
2
+ export interface ComputeProveOptions {
3
+ intent?: string;
4
+ changed?: boolean;
5
+ contract?: ProveContract;
6
+ contractPath?: string;
7
+ saveContractPath?: string;
8
+ maxFiles?: number;
9
+ feedbackPath?: string;
10
+ baseRef?: string;
11
+ ledgerPath?: string;
12
+ recordCommand?: string;
13
+ exitCode?: number;
14
+ durationMs?: number;
15
+ summary?: string;
16
+ logPath?: string;
17
+ runCommand?: string[];
18
+ runTimeoutMs?: number;
19
+ }
20
+ export declare function computeProve(rootPath: string, options?: ComputeProveOptions): Promise<ProveReport>;