openplanr 1.14.4 → 1.15.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 (75) hide show
  1. package/dist/cli/commands/operate.d.ts.map +1 -1
  2. package/dist/cli/commands/operate.js +54 -87
  3. package/dist/cli/commands/operate.js.map +1 -1
  4. package/dist/services/operate/config.d.ts +4 -1
  5. package/dist/services/operate/config.d.ts.map +1 -1
  6. package/dist/services/operate/config.js +56 -2
  7. package/dist/services/operate/config.js.map +1 -1
  8. package/dist/services/operate/doctor.d.ts.map +1 -1
  9. package/dist/services/operate/doctor.js +15 -0
  10. package/dist/services/operate/doctor.js.map +1 -1
  11. package/dist/services/operate/evidence-classifications.d.ts +59 -0
  12. package/dist/services/operate/evidence-classifications.d.ts.map +1 -0
  13. package/dist/services/operate/evidence-classifications.js +132 -0
  14. package/dist/services/operate/evidence-classifications.js.map +1 -0
  15. package/dist/services/operate/evidence-diagnostics.d.ts +23 -0
  16. package/dist/services/operate/evidence-diagnostics.d.ts.map +1 -0
  17. package/dist/services/operate/evidence-diagnostics.js +152 -0
  18. package/dist/services/operate/evidence-diagnostics.js.map +1 -0
  19. package/dist/services/operate/evidence.d.ts.map +1 -1
  20. package/dist/services/operate/evidence.js +54 -7
  21. package/dist/services/operate/evidence.js.map +1 -1
  22. package/dist/services/operate/index.d.ts.map +1 -1
  23. package/dist/services/operate/index.js +459 -62
  24. package/dist/services/operate/index.js.map +1 -1
  25. package/dist/services/operate/interaction/action-service.d.ts +17 -0
  26. package/dist/services/operate/interaction/action-service.d.ts.map +1 -0
  27. package/dist/services/operate/interaction/action-service.js +84 -0
  28. package/dist/services/operate/interaction/action-service.js.map +1 -0
  29. package/dist/services/operate/interaction/answer-service.d.ts +33 -0
  30. package/dist/services/operate/interaction/answer-service.d.ts.map +1 -0
  31. package/dist/services/operate/interaction/answer-service.js +239 -0
  32. package/dist/services/operate/interaction/answer-service.js.map +1 -0
  33. package/dist/services/operate/interaction/charter-suggestions.d.ts +29 -0
  34. package/dist/services/operate/interaction/charter-suggestions.d.ts.map +1 -0
  35. package/dist/services/operate/interaction/charter-suggestions.js +104 -0
  36. package/dist/services/operate/interaction/charter-suggestions.js.map +1 -0
  37. package/dist/services/operate/interaction/confirmation-service.d.ts +30 -0
  38. package/dist/services/operate/interaction/confirmation-service.d.ts.map +1 -0
  39. package/dist/services/operate/interaction/confirmation-service.js +78 -0
  40. package/dist/services/operate/interaction/confirmation-service.js.map +1 -0
  41. package/dist/services/operate/interaction/question-engine.d.ts +39 -0
  42. package/dist/services/operate/interaction/question-engine.d.ts.map +1 -0
  43. package/dist/services/operate/interaction/question-engine.js +277 -0
  44. package/dist/services/operate/interaction/question-engine.js.map +1 -0
  45. package/dist/services/operate/interaction/question-registry.d.ts +16 -0
  46. package/dist/services/operate/interaction/question-registry.d.ts.map +1 -0
  47. package/dist/services/operate/interaction/question-registry.js +190 -0
  48. package/dist/services/operate/interaction/question-registry.js.map +1 -0
  49. package/dist/services/operate/interaction/session-service.d.ts +55 -0
  50. package/dist/services/operate/interaction/session-service.d.ts.map +1 -0
  51. package/dist/services/operate/interaction/session-service.js +272 -0
  52. package/dist/services/operate/interaction/session-service.js.map +1 -0
  53. package/dist/services/operate/interaction/terminal-renderer.d.ts +8 -0
  54. package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -0
  55. package/dist/services/operate/interaction/terminal-renderer.js +103 -0
  56. package/dist/services/operate/interaction/terminal-renderer.js.map +1 -0
  57. package/dist/services/operate/maintenance.d.ts.map +1 -1
  58. package/dist/services/operate/maintenance.js +40 -3
  59. package/dist/services/operate/maintenance.js.map +1 -1
  60. package/dist/services/operate/types.d.ts +194 -1
  61. package/dist/services/operate/types.d.ts.map +1 -1
  62. package/dist/services/operate/types.js.map +1 -1
  63. package/dist/services/operate/workspace.d.ts +1 -0
  64. package/dist/services/operate/workspace.d.ts.map +1 -1
  65. package/dist/services/operate/workspace.js +2 -0
  66. package/dist/services/operate/workspace.js.map +1 -1
  67. package/dist/services/pipeline-package-service.d.ts +14 -0
  68. package/dist/services/pipeline-package-service.d.ts.map +1 -1
  69. package/dist/services/pipeline-package-service.js +45 -1
  70. package/dist/services/pipeline-package-service.js.map +1 -1
  71. package/dist/services/runtime-manager-service.d.ts +3 -0
  72. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  73. package/dist/services/runtime-manager-service.js +26 -2
  74. package/dist/services/runtime-manager-service.js.map +1 -1
  75. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export declare function classifyEvidenceDiagnostic(input: {
2
+ projectRoot: string;
3
+ candidateId: string;
4
+ status: 'false-positive' | 'confirmed-secret';
5
+ reason: string;
6
+ classifiedBy: string;
7
+ confirmationDigest?: string;
8
+ confirmed: boolean;
9
+ localRoot?: string;
10
+ now?: Date;
11
+ }): Promise<{
12
+ state: string;
13
+ candidateId: string;
14
+ action: import("./types.js").StructuredOperatingAction;
15
+ confirmation: import("./types.js").GuidedConfirmation | null;
16
+ valueDisclosed: boolean;
17
+ diagnostic?: undefined;
18
+ } | {
19
+ state: string;
20
+ diagnostic: {
21
+ classification: {
22
+ status: "false-positive" | "confirmed-secret";
23
+ ruleId: string;
24
+ contentDigest: `sha256:${string}`;
25
+ projectHead: `sha256:${string}`;
26
+ reason: string;
27
+ confirmationDigest: `sha256:${string}`;
28
+ classifiedAt: string;
29
+ classifiedBy: string;
30
+ };
31
+ kind: "evidence-diagnostic";
32
+ schemaVersion: "1.0.0";
33
+ protocolVersion: "1.2.0";
34
+ candidateId: string;
35
+ source: "repository" | "planr" | "git" | "import-json" | "import-csv" | "github" | "linear";
36
+ componentId: string;
37
+ location?: string;
38
+ line?: number;
39
+ ruleId: string;
40
+ category: "assignment" | "known-token" | "authorization" | "private-key" | "jwt" | "credential-url" | "structured-secret";
41
+ contentDigest: `sha256:${string}`;
42
+ projectHead: `sha256:${string}`;
43
+ valueDisclosed: false;
44
+ actions: import("./types.js").StructuredOperatingAction[];
45
+ };
46
+ candidateId?: undefined;
47
+ action?: undefined;
48
+ confirmation?: undefined;
49
+ valueDisclosed?: undefined;
50
+ }>;
51
+ export declare function purgeStaleEvidenceClassifications(input: {
52
+ projectRoot: string;
53
+ localRoot?: string;
54
+ purge?: boolean;
55
+ }): Promise<{
56
+ stale: number;
57
+ purged: number;
58
+ }>;
59
+ //# sourceMappingURL=evidence-classifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-classifications.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence-classifications.ts"],"names":[],"mappings":"AAuBA,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkHA;AAED,wBAAsB,iCAAiC,CAAC,KAAK,EAAE;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB7C"}
@@ -0,0 +1,132 @@
1
+ import { appendFile, mkdir } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { canonicalDigest, canonicalize } from './canonical.js';
4
+ import { listEvidenceDiagnostics, readEvidenceDiagnostic, writeEvidenceDiagnostic, } from './evidence-diagnostics.js';
5
+ import { createOperatingAction } from './interaction/action-service.js';
6
+ import { assertOperatingConfirmation } from './interaction/confirmation-service.js';
7
+ import { currentGuidedSessionBindings } from './interaction/session-service.js';
8
+ import { redactSensitiveText } from './redaction.js';
9
+ import { OperateError } from './types.js';
10
+ import { resolveOperatingPaths } from './workspace.js';
11
+ const HARD_BLOCK_CATEGORIES = new Set([
12
+ 'known-token',
13
+ 'private-key',
14
+ 'jwt',
15
+ 'authorization',
16
+ 'credential-url',
17
+ ]);
18
+ export async function classifyEvidenceDiagnostic(input) {
19
+ const diagnostic = await readEvidenceDiagnostic(input);
20
+ const bindings = await currentGuidedSessionBindings(input.projectRoot);
21
+ if (bindings.projectHead !== diagnostic.projectHead) {
22
+ throw new OperateError('E_OPERATE_ROUTE_DRIFT', 'The project head changed after evidence diagnosis.', { changedDimensions: ['projectHead'], candidateId: diagnostic.candidateId });
23
+ }
24
+ if (input.status === 'false-positive' && HARD_BLOCK_CATEGORIES.has(diagnostic.category)) {
25
+ throw new OperateError('E_OPERATE_SECRET_DETECTED', 'Known credential, authorization, private-key, JWT, and credential-URL signatures cannot be classified as false positives.', {
26
+ candidateId: diagnostic.candidateId,
27
+ ruleId: diagnostic.ruleId,
28
+ category: diagnostic.category,
29
+ valueDisclosed: false,
30
+ });
31
+ }
32
+ const reason = input.reason.replace(/\s+/g, ' ').trim();
33
+ if (!reason || reason.length > 1_000) {
34
+ throw new OperateError('E_OPERATE_CONFIG_INVALID', 'Evidence classification requires a bounded reason.');
35
+ }
36
+ const sanitizedReason = redactSensitiveText(reason);
37
+ if (sanitizedReason.redactions.length > 0) {
38
+ throw new OperateError('E_OPERATE_CONFIG_INVALID', 'Evidence classification reasons cannot contain sensitive material.');
39
+ }
40
+ const created = await createOperatingAction({
41
+ id: 'operate.evidence.classify',
42
+ label: input.status === 'false-positive'
43
+ ? 'Classify this exact candidate as a false positive'
44
+ : 'Confirm that this candidate requires source remediation',
45
+ command: `planr operate evidence classify ${diagnostic.candidateId}`,
46
+ effect: 'machine-local-write',
47
+ confirmation: {
48
+ sessionId: `GIS-evidence-${diagnostic.candidateId.slice('EVC-'.length)}`,
49
+ confirmationScope: `operate.evidence.classify:${diagnostic.candidateId}:${input.status}`,
50
+ projectIdentity: bindings.projectIdentity,
51
+ projectHead: bindings.projectHead,
52
+ configHead: bindings.configHead,
53
+ eventHead: null,
54
+ arguments: [
55
+ input.status,
56
+ canonicalDigest(reason),
57
+ diagnostic.ruleId,
58
+ diagnostic.contentDigest,
59
+ ],
60
+ destinations: [],
61
+ writes: [`evidence-diagnostics/${diagnostic.candidateId}.json`],
62
+ },
63
+ });
64
+ if (!input.confirmed || !input.confirmationDigest || !created.confirmation) {
65
+ return {
66
+ state: 'preview',
67
+ candidateId: diagnostic.candidateId,
68
+ action: created.action,
69
+ confirmation: created.confirmation,
70
+ valueDisclosed: false,
71
+ };
72
+ }
73
+ const accepted = assertOperatingConfirmation({
74
+ expected: created.confirmation,
75
+ actionId: created.action.id,
76
+ confirmationDigest: input.confirmationDigest,
77
+ confirmed: input.confirmed,
78
+ now: input.now,
79
+ });
80
+ const classifiedAt = (input.now ?? new Date()).toISOString();
81
+ const next = {
82
+ ...diagnostic,
83
+ classification: {
84
+ status: input.status,
85
+ ruleId: diagnostic.ruleId,
86
+ contentDigest: diagnostic.contentDigest,
87
+ projectHead: diagnostic.projectHead,
88
+ reason,
89
+ confirmationDigest: accepted.confirmationDigest,
90
+ classifiedAt,
91
+ classifiedBy: input.classifiedBy,
92
+ },
93
+ };
94
+ await writeEvidenceDiagnostic({ ...input, diagnostic: next });
95
+ const auditPath = path.join(resolveOperatingPaths(input.projectRoot, { localRoot: input.localRoot }).quarantine, 'classification-audit.jsonl');
96
+ await mkdir(path.dirname(auditPath), { recursive: true, mode: 0o700 });
97
+ await appendFile(auditPath, `${canonicalize({
98
+ candidateId: diagnostic.candidateId,
99
+ status: input.status,
100
+ ruleId: diagnostic.ruleId,
101
+ contentDigest: diagnostic.contentDigest,
102
+ projectHead: diagnostic.projectHead,
103
+ reasonDigest: canonicalDigest(reason),
104
+ confirmationDigest: accepted.confirmationDigest,
105
+ classifiedAt,
106
+ classifiedBy: input.classifiedBy,
107
+ valueDisclosed: false,
108
+ })}\n`, { mode: 0o600 });
109
+ return { state: 'classified', diagnostic: next };
110
+ }
111
+ export async function purgeStaleEvidenceClassifications(input) {
112
+ const bindings = await currentGuidedSessionBindings(input.projectRoot);
113
+ const diagnostics = await listEvidenceDiagnostics(input);
114
+ let stale = 0;
115
+ let purged = 0;
116
+ for (const diagnostic of diagnostics) {
117
+ if (!diagnostic.classification || diagnostic.projectHead === bindings.projectHead)
118
+ continue;
119
+ stale += 1;
120
+ if (!input.purge)
121
+ continue;
122
+ const { classification: _classification, ...current } = diagnostic;
123
+ await writeEvidenceDiagnostic({
124
+ projectRoot: input.projectRoot,
125
+ localRoot: input.localRoot,
126
+ diagnostic: current,
127
+ });
128
+ purged += 1;
129
+ }
130
+ return { stale, purged };
131
+ }
132
+ //# sourceMappingURL=evidence-classifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-classifications.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-classifications.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { SecretDetectionMetadata } from './redaction.js';
2
+ import { type CollectedEvidenceItem, type EvidenceDiagnostic } from './types.js';
3
+ export declare function createEvidenceDiagnostic(input: {
4
+ projectRoot: string;
5
+ item: CollectedEvidenceItem;
6
+ detection: SecretDetectionMetadata;
7
+ localRoot?: string;
8
+ }): Promise<EvidenceDiagnostic>;
9
+ export declare function readEvidenceDiagnostic(input: {
10
+ projectRoot: string;
11
+ candidateId: string;
12
+ localRoot?: string;
13
+ }): Promise<EvidenceDiagnostic>;
14
+ export declare function listEvidenceDiagnostics(input: {
15
+ projectRoot: string;
16
+ localRoot?: string;
17
+ }): Promise<EvidenceDiagnostic[]>;
18
+ export declare function writeEvidenceDiagnostic(input: {
19
+ projectRoot: string;
20
+ diagnostic: EvidenceDiagnostic;
21
+ localRoot?: string;
22
+ }): Promise<void>;
23
+ //# sourceMappingURL=evidence-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence-diagnostics.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAgB,MAAM,YAAY,CAAC;AA4D/F,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,uBAAuB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwE9B;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAa9B;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAehC;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB"}
@@ -0,0 +1,152 @@
1
+ import { chmod, mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { resolveGuidedInteractionValidators } from '../pipeline-package-service.js';
4
+ import { canonicalDigest, canonicalize, sha256Digest } from './canonical.js';
5
+ import { createOperatingAction } from './interaction/action-service.js';
6
+ import { currentGuidedSessionBindings } from './interaction/session-service.js';
7
+ import { OperateError } from './types.js';
8
+ import { resolveOperatingPaths } from './workspace.js';
9
+ const CANDIDATE_ID = /^EVC-[A-Za-z0-9._-]{8,128}$/;
10
+ function diagnosticDirectory(projectRoot, localRoot) {
11
+ return path.join(resolveOperatingPaths(projectRoot, { localRoot }).quarantine, 'diagnostics');
12
+ }
13
+ function diagnosticPath(projectRoot, candidateId, localRoot) {
14
+ if (!CANDIDATE_ID.test(candidateId)) {
15
+ throw new OperateError('E_OPERATE_CONFIG_INVALID', 'Evidence candidate ID is invalid.');
16
+ }
17
+ return path.join(diagnosticDirectory(projectRoot, localRoot), `${candidateId}.json`);
18
+ }
19
+ function diagnosticSource(item) {
20
+ if (item.source === 'file-import') {
21
+ return item.location.toLowerCase().endsWith('.csv') ? 'import-csv' : 'import-json';
22
+ }
23
+ if (['repository', 'planr', 'git', 'github', 'linear'].includes(item.source)) {
24
+ return item.source;
25
+ }
26
+ return 'repository';
27
+ }
28
+ function safeLocation(item) {
29
+ const value = item.location.replaceAll('\\', '/').trim();
30
+ if (!value ||
31
+ path.posix.isAbsolute(value) ||
32
+ /^[A-Za-z]:\//.test(value) ||
33
+ value.split('/').includes('..') ||
34
+ /(?:\/Users\/|\/home\/|[A-Za-z]:\/Users\/)/i.test(value)) {
35
+ return undefined;
36
+ }
37
+ return value.slice(0, 4_096);
38
+ }
39
+ async function atomicDiagnosticWrite(projectRoot, diagnostic, localRoot) {
40
+ const validators = await resolveGuidedInteractionValidators();
41
+ if (validators.validateEvidenceDiagnostic(diagnostic).length > 0) {
42
+ throw new OperateError('E_OPERATE_CONFIG_INVALID', `Evidence diagnostic ${diagnostic.candidateId} failed Protocol v1.2 validation.`);
43
+ }
44
+ const target = diagnosticPath(projectRoot, diagnostic.candidateId, localRoot);
45
+ await mkdir(path.dirname(target), { recursive: true, mode: 0o700 });
46
+ const temporary = `${target}.${process.pid}.tmp`;
47
+ await writeFile(temporary, `${canonicalize(diagnostic)}\n`, { mode: 0o600 });
48
+ await rename(temporary, target);
49
+ await chmod(target, 0o600);
50
+ }
51
+ export async function createEvidenceDiagnostic(input) {
52
+ const bindings = await currentGuidedSessionBindings(input.projectRoot);
53
+ const contentDigest = sha256Digest(input.item.content);
54
+ const candidateId = `EVC-${canonicalDigest({
55
+ source: input.item.source,
56
+ componentId: input.item.repository?.componentId ?? 'control',
57
+ location: input.item.location,
58
+ line: input.detection.line,
59
+ ruleId: input.detection.ruleId,
60
+ contentDigest,
61
+ projectHead: bindings.projectHead,
62
+ }).slice('sha256:'.length, 'sha256:'.length + 24)}`;
63
+ const componentId = input.item.repository?.componentId ?? 'control';
64
+ const diagnose = await createOperatingAction({
65
+ id: 'operate.evidence.diagnose',
66
+ label: 'Inspect the safe evidence diagnostic',
67
+ command: `planr operate evidence diagnose ${candidateId}`,
68
+ effect: 'read-only',
69
+ recommended: true,
70
+ });
71
+ const classify = await createOperatingAction({
72
+ id: 'operate.evidence.classify',
73
+ label: 'Review an eligible exact false-positive classification',
74
+ command: `planr operate evidence classify ${candidateId}`,
75
+ effect: 'machine-local-write',
76
+ confirmation: {
77
+ sessionId: `GIS-evidence-${candidateId.slice('EVC-'.length)}`,
78
+ confirmationScope: `operate.evidence.classify:${candidateId}`,
79
+ projectIdentity: bindings.projectIdentity,
80
+ projectHead: bindings.projectHead,
81
+ configHead: bindings.configHead,
82
+ eventHead: null,
83
+ arguments: [
84
+ input.detection.ruleId,
85
+ contentDigest,
86
+ canonicalDigest({ location: safeLocation(input.item) ?? null }),
87
+ ],
88
+ destinations: [],
89
+ writes: [`evidence-diagnostics/${candidateId}.json`],
90
+ },
91
+ });
92
+ const diagnostic = {
93
+ kind: 'evidence-diagnostic',
94
+ schemaVersion: '1.0.0',
95
+ protocolVersion: '1.2.0',
96
+ candidateId,
97
+ source: diagnosticSource(input.item),
98
+ componentId,
99
+ ...(safeLocation(input.item) ? { location: safeLocation(input.item) } : {}),
100
+ ...(Number.isInteger(input.detection.line) ? { line: input.detection.line } : {}),
101
+ ruleId: input.detection.ruleId,
102
+ category: input.detection.category,
103
+ contentDigest,
104
+ projectHead: bindings.projectHead,
105
+ valueDisclosed: false,
106
+ actions: [diagnose.action, classify.action],
107
+ };
108
+ const existing = await readEvidenceDiagnostic({
109
+ projectRoot: input.projectRoot,
110
+ candidateId,
111
+ localRoot: input.localRoot,
112
+ }).catch(() => null);
113
+ if (existing &&
114
+ existing.ruleId === diagnostic.ruleId &&
115
+ existing.contentDigest === diagnostic.contentDigest &&
116
+ existing.projectHead === diagnostic.projectHead) {
117
+ return existing;
118
+ }
119
+ await atomicDiagnosticWrite(input.projectRoot, diagnostic, input.localRoot);
120
+ return diagnostic;
121
+ }
122
+ export async function readEvidenceDiagnostic(input) {
123
+ const target = diagnosticPath(input.projectRoot, input.candidateId, input.localRoot);
124
+ try {
125
+ const diagnostic = JSON.parse(await readFile(target, 'utf8'));
126
+ const validators = await resolveGuidedInteractionValidators();
127
+ if (validators.validateEvidenceDiagnostic(diagnostic).length > 0)
128
+ throw new Error('invalid');
129
+ return diagnostic;
130
+ }
131
+ catch {
132
+ throw new OperateError('E_OPERATE_STATE_INVALID', `Evidence diagnostic ${input.candidateId} is unavailable or invalid.`);
133
+ }
134
+ }
135
+ export async function listEvidenceDiagnostics(input) {
136
+ const directory = diagnosticDirectory(input.projectRoot, input.localRoot);
137
+ const names = (await readdir(directory).catch(() => []))
138
+ .filter((name) => /^EVC-[A-Za-z0-9._-]+\.json$/.test(name))
139
+ .sort();
140
+ const diagnostics = [];
141
+ for (const name of names) {
142
+ diagnostics.push(await readEvidenceDiagnostic({
143
+ ...input,
144
+ candidateId: name.slice(0, -'.json'.length),
145
+ }));
146
+ }
147
+ return diagnostics;
148
+ }
149
+ export async function writeEvidenceDiagnostic(input) {
150
+ await atomicDiagnosticWrite(input.projectRoot, input.diagnostic, input.localRoot);
151
+ }
152
+ //# sourceMappingURL=evidence-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-diagnostics.js","sourceRoot":"","sources":["../../../src/services/operate/evidence-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/services/operate/evidence.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@ import path from 'node:path';
3
3
  import { loadConfig } from '../config-service.js';
4
4
  import { resolveApiKey } from '../credentials-service.js';
5
5
  import { canonicalDigest, canonicalize } from './canonical.js';
6
+ import { createEvidenceDiagnostic } from './evidence-diagnostics.js';
6
7
  import { readImportedEvidenceFile } from './evidence-import.js';
7
8
  import { assertOperatingArtifact } from './protocol.js';
8
9
  import { executeGitHubReadOnly, executeGitReadOnly, executeLinearReadOnlyQuery, executeRestReadOnlyJson, } from './read-only-providers.js';
9
- import { compareSensitivity, sanitizeEvidenceItem } from './redaction.js';
10
+ import { compareSensitivity, detectSecretMetadata, sanitizeEvidenceItem } from './redaction.js';
10
11
  import { OPERATE_PROTOCOL_VERSION, OPERATE_SCHEMA_VERSION, OperateError, } from './types.js';
11
12
  import { isPathInside, resolveOperatingPaths } from './workspace.js';
12
13
  const TEXT_EXTENSIONS = new Set([
@@ -908,10 +909,57 @@ export async function collectOperatingEvidence(input) {
908
909
  if (rejected.length > 0) {
909
910
  warnings.push(`${rejected.length} evidence item(s) exceeded the configured sensitivity ceiling.`);
910
911
  }
911
- const flattened = raw
912
- .filter((item) => compareSensitivity(item.sensitivity, input.sensitivityCeiling) <= 0)
913
- .slice(0, input.budgets.maxItems)
914
- .map(sanitizeEvidenceItem);
912
+ const flattened = [];
913
+ for (const item of raw
914
+ .filter((candidate) => compareSensitivity(candidate.sensitivity, input.sensitivityCeiling) <= 0)
915
+ .slice(0, input.budgets.maxItems)) {
916
+ try {
917
+ flattened.push(sanitizeEvidenceItem(item));
918
+ }
919
+ catch (error) {
920
+ if (!(error instanceof OperateError) || error.code !== 'E_OPERATE_SECRET_DETECTED') {
921
+ throw error;
922
+ }
923
+ const details = error.details ?? {};
924
+ const fallback = detectSecretMetadata(item.content)[0];
925
+ const ruleId = typeof details.ruleId === 'string' ? details.ruleId : (fallback?.ruleId ?? 'unknown.v1');
926
+ const category = typeof details.category === 'string'
927
+ ? details.category
928
+ : (fallback?.category ?? 'structured-secret');
929
+ const diagnostic = await createEvidenceDiagnostic({
930
+ projectRoot: input.projectRoot,
931
+ item,
932
+ localRoot: input.localRoot,
933
+ detection: {
934
+ ruleId,
935
+ category,
936
+ line: typeof details.line === 'number' && Number.isInteger(details.line)
937
+ ? details.line
938
+ : (fallback?.line ?? 1),
939
+ hardBlock: typeof details.hardBlock === 'boolean'
940
+ ? details.hardBlock
941
+ : (fallback?.hardBlock ?? false),
942
+ },
943
+ });
944
+ if (diagnostic.classification?.status === 'false-positive') {
945
+ warnings.push(`Evidence candidate ${diagnostic.candidateId} was omitted under its exact false-positive classification.`);
946
+ continue;
947
+ }
948
+ throw new OperateError('E_OPERATE_SECRET_DETECTED', `Evidence candidate ${diagnostic.candidateId} requires safe review before advisors can run.`, {
949
+ candidateId: diagnostic.candidateId,
950
+ source: diagnostic.source,
951
+ componentId: diagnostic.componentId,
952
+ ...(diagnostic.location ? { location: diagnostic.location } : {}),
953
+ ...(diagnostic.line ? { line: diagnostic.line } : {}),
954
+ ruleId: diagnostic.ruleId,
955
+ category: diagnostic.category,
956
+ contentDigest: diagnostic.contentDigest,
957
+ projectHead: diagnostic.projectHead,
958
+ valueDisclosed: false,
959
+ recoveryCommand: `planr operate evidence diagnose ${diagnostic.candidateId} --json`,
960
+ });
961
+ }
962
+ }
915
963
  if (Date.now() >= deadline) {
916
964
  truncated = true;
917
965
  warnings.push('Evidence collection reached the configured duration budget.');
@@ -976,8 +1024,7 @@ export async function collectOperatingEvidence(input) {
976
1024
  export async function unqualifiedCommercialEvidenceGaps(input) {
977
1025
  const unqualified = input.evidence.items
978
1026
  .filter((item) => item.claimTypes.includes('commercial-metric') &&
979
- (!item.metric ||
980
- !item.metric.identity.trim() ||
1027
+ (!item.metric?.identity.trim() ||
981
1028
  !item.metric.query.trim() ||
982
1029
  !validIsoWindow(item.metric.observedFrom, item.metric.observedTo)))
983
1030
  .sort((left, right) => left.source.localeCompare(right.source) ||