@fraction12/deepclean 0.1.0-alpha.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 (56) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/README.md +171 -0
  4. package/dist/args.d.ts +9 -0
  5. package/dist/args.js +105 -0
  6. package/dist/args.js.map +1 -0
  7. package/dist/candidates.d.ts +6 -0
  8. package/dist/candidates.js +319 -0
  9. package/dist/candidates.js.map +1 -0
  10. package/dist/cli.d.ts +2 -0
  11. package/dist/cli.js +521 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/clusters.d.ts +7 -0
  14. package/dist/clusters.js +399 -0
  15. package/dist/clusters.js.map +1 -0
  16. package/dist/defaults.d.ts +5 -0
  17. package/dist/defaults.js +130 -0
  18. package/dist/defaults.js.map +1 -0
  19. package/dist/discovery.d.ts +10 -0
  20. package/dist/discovery.js +48 -0
  21. package/dist/discovery.js.map +1 -0
  22. package/dist/evidence.d.ts +16 -0
  23. package/dist/evidence.js +853 -0
  24. package/dist/evidence.js.map +1 -0
  25. package/dist/ids.d.ts +4 -0
  26. package/dist/ids.js +16 -0
  27. package/dist/ids.js.map +1 -0
  28. package/dist/json.d.ts +3 -0
  29. package/dist/json.js +12 -0
  30. package/dist/json.js.map +1 -0
  31. package/dist/plans.d.ts +3 -0
  32. package/dist/plans.js +171 -0
  33. package/dist/plans.js.map +1 -0
  34. package/dist/reporting.d.ts +13 -0
  35. package/dist/reporting.js +227 -0
  36. package/dist/reporting.js.map +1 -0
  37. package/dist/reviewers.d.ts +22 -0
  38. package/dist/reviewers.js +461 -0
  39. package/dist/reviewers.js.map +1 -0
  40. package/dist/state.d.ts +41 -0
  41. package/dist/state.js +211 -0
  42. package/dist/state.js.map +1 -0
  43. package/dist/synthesis.d.ts +17 -0
  44. package/dist/synthesis.js +396 -0
  45. package/dist/synthesis.js.map +1 -0
  46. package/dist/types.d.ts +389 -0
  47. package/dist/types.js +236 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/verification.d.ts +11 -0
  50. package/dist/verification.js +111 -0
  51. package/dist/verification.js.map +1 -0
  52. package/docs/privacy-and-trust.md +33 -0
  53. package/docs/public-readiness.md +19 -0
  54. package/docs/reviewer-references.md +33 -0
  55. package/docs/troubleshooting.md +80 -0
  56. package/package.json +55 -0
@@ -0,0 +1,389 @@
1
+ import { z } from "zod";
2
+ export declare const schemaVersion: "0.1.0";
3
+ export declare const candidateStatuses: readonly ["open", "investigating", "handed-off", "ignored", "false-positive", "stale"];
4
+ export declare const candidateCategories: readonly ["architecture", "complexity", "duplication", "testability", "dead-weight", "ai-slop", "domain-drift", "diagnostic"];
5
+ export declare const priorities: readonly ["P0", "P1", "P2", "P3"];
6
+ export declare const confidenceLevels: readonly ["low", "medium", "high"];
7
+ export declare const effortLevels: readonly ["small", "medium", "large"];
8
+ export declare const impactLevels: readonly ["local", "feature", "cross-cutting"];
9
+ export declare const riskLevels: readonly ["safe", "moderate", "design-needed"];
10
+ export declare const clusterActionability: readonly ["bounded", "too-broad"];
11
+ export declare const diagnosticSchema: z.ZodObject<{
12
+ level: z.ZodEnum<{
13
+ error: "error";
14
+ info: "info";
15
+ warning: "warning";
16
+ }>;
17
+ code: z.ZodString;
18
+ message: z.ZodString;
19
+ adapter: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export declare const configSchema: z.ZodObject<{
22
+ schemaVersion: z.ZodLiteral<"0.1.0">;
23
+ recordType: z.ZodLiteral<"config">;
24
+ enabledAdapters: z.ZodArray<z.ZodString>;
25
+ exclude: z.ZodArray<z.ZodString>;
26
+ reviewSynthesis: z.ZodObject<{
27
+ enabled: z.ZodBoolean;
28
+ provider: z.ZodLiteral<"codex">;
29
+ command: z.ZodString;
30
+ model: z.ZodOptional<z.ZodString>;
31
+ timeoutMs: z.ZodNumber;
32
+ maxCandidates: z.ZodNumber;
33
+ }, z.core.$strip>;
34
+ candidateCaps: z.ZodObject<{
35
+ byKind: z.ZodRecord<z.ZodString, z.ZodNumber>;
36
+ byKindAndArea: z.ZodRecord<z.ZodString, z.ZodNumber>;
37
+ }, z.core.$strip>;
38
+ clusters: z.ZodObject<{
39
+ maxCandidates: z.ZodNumber;
40
+ maxFiles: z.ZodNumber;
41
+ splitBroad: z.ZodBoolean;
42
+ }, z.core.$strip>;
43
+ reviewers: z.ZodObject<{
44
+ enabled: z.ZodArray<z.ZodString>;
45
+ customPaths: z.ZodArray<z.ZodString>;
46
+ }, z.core.$strip>;
47
+ externalAnalyzers: z.ZodObject<{
48
+ jscpd: z.ZodObject<{
49
+ enabled: z.ZodBoolean;
50
+ command: z.ZodString;
51
+ minTokens: z.ZodNumber;
52
+ maxFindings: z.ZodNumber;
53
+ }, z.core.$strip>;
54
+ semgrep: z.ZodObject<{
55
+ enabled: z.ZodBoolean;
56
+ command: z.ZodString;
57
+ config: z.ZodString;
58
+ timeoutMs: z.ZodNumber;
59
+ maxFindings: z.ZodNumber;
60
+ }, z.core.$strip>;
61
+ sarifPaths: z.ZodArray<z.ZodString>;
62
+ }, z.core.$strip>;
63
+ privacy: z.ZodObject<{
64
+ allowSourceInModel: z.ZodBoolean;
65
+ allowWebResearch: z.ZodBoolean;
66
+ }, z.core.$strip>;
67
+ }, z.core.$strip>;
68
+ export type DeepcleanConfig = z.infer<typeof configSchema>;
69
+ export declare const fileReferenceSchema: z.ZodObject<{
70
+ path: z.ZodString;
71
+ startLine: z.ZodOptional<z.ZodNumber>;
72
+ endLine: z.ZodOptional<z.ZodNumber>;
73
+ }, z.core.$strip>;
74
+ export type FileReference = z.infer<typeof fileReferenceSchema>;
75
+ export declare const evidenceRecordSchema: z.ZodObject<{
76
+ schemaVersion: z.ZodLiteral<"0.1.0">;
77
+ recordType: z.ZodLiteral<"evidence">;
78
+ id: z.ZodString;
79
+ runId: z.ZodString;
80
+ adapter: z.ZodString;
81
+ kind: z.ZodString;
82
+ title: z.ZodString;
83
+ summary: z.ZodString;
84
+ files: z.ZodArray<z.ZodObject<{
85
+ path: z.ZodString;
86
+ startLine: z.ZodOptional<z.ZodNumber>;
87
+ endLine: z.ZodOptional<z.ZodNumber>;
88
+ }, z.core.$strip>>;
89
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
90
+ confidence: z.ZodEnum<{
91
+ medium: "medium";
92
+ low: "low";
93
+ high: "high";
94
+ }>;
95
+ createdAt: z.ZodString;
96
+ }, z.core.$strip>;
97
+ export type EvidenceRecord = z.infer<typeof evidenceRecordSchema>;
98
+ export declare const candidateRecordSchema: z.ZodObject<{
99
+ schemaVersion: z.ZodLiteral<"0.1.0">;
100
+ recordType: z.ZodLiteral<"candidate">;
101
+ id: z.ZodString;
102
+ runId: z.ZodString;
103
+ title: z.ZodString;
104
+ category: z.ZodEnum<{
105
+ architecture: "architecture";
106
+ complexity: "complexity";
107
+ duplication: "duplication";
108
+ testability: "testability";
109
+ "dead-weight": "dead-weight";
110
+ "ai-slop": "ai-slop";
111
+ "domain-drift": "domain-drift";
112
+ diagnostic: "diagnostic";
113
+ }>;
114
+ status: z.ZodEnum<{
115
+ open: "open";
116
+ investigating: "investigating";
117
+ "handed-off": "handed-off";
118
+ ignored: "ignored";
119
+ "false-positive": "false-positive";
120
+ stale: "stale";
121
+ }>;
122
+ priority: z.ZodEnum<{
123
+ P0: "P0";
124
+ P1: "P1";
125
+ P2: "P2";
126
+ P3: "P3";
127
+ }>;
128
+ confidence: z.ZodEnum<{
129
+ medium: "medium";
130
+ low: "low";
131
+ high: "high";
132
+ }>;
133
+ impact: z.ZodEnum<{
134
+ local: "local";
135
+ feature: "feature";
136
+ "cross-cutting": "cross-cutting";
137
+ }>;
138
+ effort: z.ZodEnum<{
139
+ small: "small";
140
+ medium: "medium";
141
+ large: "large";
142
+ }>;
143
+ risk: z.ZodEnum<{
144
+ safe: "safe";
145
+ moderate: "moderate";
146
+ "design-needed": "design-needed";
147
+ }>;
148
+ files: z.ZodArray<z.ZodObject<{
149
+ path: z.ZodString;
150
+ startLine: z.ZodOptional<z.ZodNumber>;
151
+ endLine: z.ZodOptional<z.ZodNumber>;
152
+ }, z.core.$strip>>;
153
+ evidenceIds: z.ZodArray<z.ZodString>;
154
+ whyItMatters: z.ZodString;
155
+ likelyRootCause: z.ZodString;
156
+ suggestedDirection: z.ZodString;
157
+ verification: z.ZodArray<z.ZodString>;
158
+ provenance: z.ZodObject<{
159
+ source: z.ZodEnum<{
160
+ "local-evidence": "local-evidence";
161
+ "model-synthesis": "model-synthesis";
162
+ }>;
163
+ provider: z.ZodOptional<z.ZodString>;
164
+ model: z.ZodOptional<z.ZodString>;
165
+ promptVersion: z.ZodOptional<z.ZodString>;
166
+ reviewers: z.ZodOptional<z.ZodArray<z.ZodString>>;
167
+ }, z.core.$strip>;
168
+ createdAt: z.ZodString;
169
+ updatedAt: z.ZodString;
170
+ }, z.core.$strip>;
171
+ export type CandidateRecord = z.infer<typeof candidateRecordSchema>;
172
+ export declare const clusterRecordSchema: z.ZodObject<{
173
+ schemaVersion: z.ZodLiteral<"0.1.0">;
174
+ recordType: z.ZodLiteral<"cluster">;
175
+ id: z.ZodString;
176
+ runId: z.ZodString;
177
+ title: z.ZodString;
178
+ summary: z.ZodString;
179
+ category: z.ZodEnum<{
180
+ architecture: "architecture";
181
+ complexity: "complexity";
182
+ duplication: "duplication";
183
+ testability: "testability";
184
+ "dead-weight": "dead-weight";
185
+ "ai-slop": "ai-slop";
186
+ "domain-drift": "domain-drift";
187
+ diagnostic: "diagnostic";
188
+ }>;
189
+ status: z.ZodEnum<{
190
+ open: "open";
191
+ investigating: "investigating";
192
+ "handed-off": "handed-off";
193
+ ignored: "ignored";
194
+ "false-positive": "false-positive";
195
+ stale: "stale";
196
+ }>;
197
+ priority: z.ZodEnum<{
198
+ P0: "P0";
199
+ P1: "P1";
200
+ P2: "P2";
201
+ P3: "P3";
202
+ }>;
203
+ confidence: z.ZodEnum<{
204
+ medium: "medium";
205
+ low: "low";
206
+ high: "high";
207
+ }>;
208
+ impact: z.ZodEnum<{
209
+ local: "local";
210
+ feature: "feature";
211
+ "cross-cutting": "cross-cutting";
212
+ }>;
213
+ effort: z.ZodEnum<{
214
+ small: "small";
215
+ medium: "medium";
216
+ large: "large";
217
+ }>;
218
+ risk: z.ZodEnum<{
219
+ safe: "safe";
220
+ moderate: "moderate";
221
+ "design-needed": "design-needed";
222
+ }>;
223
+ candidateIds: z.ZodArray<z.ZodString>;
224
+ evidenceIds: z.ZodArray<z.ZodString>;
225
+ files: z.ZodArray<z.ZodObject<{
226
+ path: z.ZodString;
227
+ startLine: z.ZodOptional<z.ZodNumber>;
228
+ endLine: z.ZodOptional<z.ZodNumber>;
229
+ }, z.core.$strip>>;
230
+ rationale: z.ZodString;
231
+ suggestedDirection: z.ZodString;
232
+ verification: z.ZodArray<z.ZodString>;
233
+ actionability: z.ZodOptional<z.ZodEnum<{
234
+ bounded: "bounded";
235
+ "too-broad": "too-broad";
236
+ }>>;
237
+ warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
238
+ createdAt: z.ZodString;
239
+ updatedAt: z.ZodString;
240
+ }, z.core.$strip>;
241
+ export type ClusterRecord = z.infer<typeof clusterRecordSchema>;
242
+ export declare const runRecordSchema: z.ZodObject<{
243
+ schemaVersion: z.ZodLiteral<"0.1.0">;
244
+ recordType: z.ZodLiteral<"run">;
245
+ id: z.ZodString;
246
+ command: z.ZodLiteral<"scan">;
247
+ root: z.ZodString;
248
+ startedAt: z.ZodString;
249
+ completedAt: z.ZodString;
250
+ evidenceCount: z.ZodNumber;
251
+ candidateCount: z.ZodNumber;
252
+ clusterCount: z.ZodOptional<z.ZodNumber>;
253
+ synthesis: z.ZodObject<{
254
+ requested: z.ZodBoolean;
255
+ provider: z.ZodOptional<z.ZodString>;
256
+ candidateCount: z.ZodNumber;
257
+ }, z.core.$strip>;
258
+ diagnostics: z.ZodArray<z.ZodObject<{
259
+ level: z.ZodEnum<{
260
+ error: "error";
261
+ info: "info";
262
+ warning: "warning";
263
+ }>;
264
+ code: z.ZodString;
265
+ message: z.ZodString;
266
+ adapter: z.ZodOptional<z.ZodString>;
267
+ }, z.core.$strip>>;
268
+ }, z.core.$strip>;
269
+ export type RunRecord = z.infer<typeof runRecordSchema>;
270
+ export declare const triageRecordSchema: z.ZodObject<{
271
+ schemaVersion: z.ZodLiteral<"0.1.0">;
272
+ recordType: z.ZodLiteral<"triage">;
273
+ id: z.ZodString;
274
+ candidateId: z.ZodString;
275
+ fromStatus: z.ZodEnum<{
276
+ open: "open";
277
+ investigating: "investigating";
278
+ "handed-off": "handed-off";
279
+ ignored: "ignored";
280
+ "false-positive": "false-positive";
281
+ stale: "stale";
282
+ }>;
283
+ toStatus: z.ZodEnum<{
284
+ open: "open";
285
+ investigating: "investigating";
286
+ "handed-off": "handed-off";
287
+ ignored: "ignored";
288
+ "false-positive": "false-positive";
289
+ stale: "stale";
290
+ }>;
291
+ note: z.ZodString;
292
+ createdAt: z.ZodString;
293
+ }, z.core.$strip>;
294
+ export type TriageRecord = z.infer<typeof triageRecordSchema>;
295
+ export declare const reportRecordSchema: z.ZodObject<{
296
+ schemaVersion: z.ZodLiteral<"0.1.0">;
297
+ recordType: z.ZodLiteral<"report">;
298
+ id: z.ZodString;
299
+ runId: z.ZodString;
300
+ createdAt: z.ZodString;
301
+ candidateIds: z.ZodArray<z.ZodString>;
302
+ summary: z.ZodObject<{
303
+ open: z.ZodNumber;
304
+ total: z.ZodNumber;
305
+ byPriority: z.ZodRecord<z.ZodString, z.ZodNumber>;
306
+ }, z.core.$strip>;
307
+ recommendations: z.ZodOptional<z.ZodObject<{
308
+ startHere: z.ZodOptional<z.ZodObject<{
309
+ id: z.ZodString;
310
+ type: z.ZodEnum<{
311
+ candidate: "candidate";
312
+ theme: "theme";
313
+ }>;
314
+ reason: z.ZodString;
315
+ }, z.core.$strip>>;
316
+ topCandidateIds: z.ZodArray<z.ZodString>;
317
+ topThemeIds: z.ZodArray<z.ZodString>;
318
+ warnings: z.ZodArray<z.ZodString>;
319
+ suggestedPlanTargets: z.ZodArray<z.ZodString>;
320
+ }, z.core.$strip>>;
321
+ }, z.core.$strip>;
322
+ export type ReportRecord = z.infer<typeof reportRecordSchema>;
323
+ export declare const planStepSchema: z.ZodObject<{
324
+ title: z.ZodString;
325
+ description: z.ZodString;
326
+ candidateIds: z.ZodArray<z.ZodString>;
327
+ files: z.ZodArray<z.ZodObject<{
328
+ path: z.ZodString;
329
+ startLine: z.ZodOptional<z.ZodNumber>;
330
+ endLine: z.ZodOptional<z.ZodNumber>;
331
+ }, z.core.$strip>>;
332
+ verification: z.ZodArray<z.ZodString>;
333
+ }, z.core.$strip>;
334
+ export declare const planRecordSchema: z.ZodObject<{
335
+ schemaVersion: z.ZodLiteral<"0.1.0">;
336
+ recordType: z.ZodLiteral<"plan">;
337
+ id: z.ZodString;
338
+ runId: z.ZodString;
339
+ targetType: z.ZodEnum<{
340
+ candidate: "candidate";
341
+ cluster: "cluster";
342
+ }>;
343
+ targetId: z.ZodString;
344
+ title: z.ZodString;
345
+ summary: z.ZodString;
346
+ steps: z.ZodArray<z.ZodObject<{
347
+ title: z.ZodString;
348
+ description: z.ZodString;
349
+ candidateIds: z.ZodArray<z.ZodString>;
350
+ files: z.ZodArray<z.ZodObject<{
351
+ path: z.ZodString;
352
+ startLine: z.ZodOptional<z.ZodNumber>;
353
+ endLine: z.ZodOptional<z.ZodNumber>;
354
+ }, z.core.$strip>>;
355
+ verification: z.ZodArray<z.ZodString>;
356
+ }, z.core.$strip>>;
357
+ constraints: z.ZodArray<z.ZodString>;
358
+ verification: z.ZodArray<z.ZodString>;
359
+ createdAt: z.ZodString;
360
+ content: z.ZodString;
361
+ }, z.core.$strip>;
362
+ export type PlanRecord = z.infer<typeof planRecordSchema>;
363
+ export declare const handoffRecordSchema: z.ZodObject<{
364
+ schemaVersion: z.ZodLiteral<"0.1.0">;
365
+ recordType: z.ZodLiteral<"handoff">;
366
+ id: z.ZodString;
367
+ candidateId: z.ZodString;
368
+ format: z.ZodString;
369
+ createdAt: z.ZodString;
370
+ content: z.ZodString;
371
+ }, z.core.$strip>;
372
+ export type HandoffRecord = z.infer<typeof handoffRecordSchema>;
373
+ export type Diagnostic = z.infer<typeof diagnosticSchema>;
374
+ export interface CommandEnvelope<T> {
375
+ ok: true;
376
+ command: string;
377
+ data: T;
378
+ diagnostics: Diagnostic[];
379
+ }
380
+ export interface ErrorEnvelope {
381
+ ok: false;
382
+ command: string;
383
+ error: {
384
+ code: string;
385
+ message: string;
386
+ };
387
+ diagnostics: Diagnostic[];
388
+ }
389
+ export type JsonEnvelope<T> = CommandEnvelope<T> | ErrorEnvelope;
package/dist/types.js ADDED
@@ -0,0 +1,236 @@
1
+ import { z } from "zod";
2
+ export const schemaVersion = "0.1.0";
3
+ export const candidateStatuses = [
4
+ "open",
5
+ "investigating",
6
+ "handed-off",
7
+ "ignored",
8
+ "false-positive",
9
+ "stale",
10
+ ];
11
+ export const candidateCategories = [
12
+ "architecture",
13
+ "complexity",
14
+ "duplication",
15
+ "testability",
16
+ "dead-weight",
17
+ "ai-slop",
18
+ "domain-drift",
19
+ "diagnostic",
20
+ ];
21
+ export const priorities = ["P0", "P1", "P2", "P3"];
22
+ export const confidenceLevels = ["low", "medium", "high"];
23
+ export const effortLevels = ["small", "medium", "large"];
24
+ export const impactLevels = ["local", "feature", "cross-cutting"];
25
+ export const riskLevels = ["safe", "moderate", "design-needed"];
26
+ export const clusterActionability = ["bounded", "too-broad"];
27
+ export const diagnosticSchema = z.object({
28
+ level: z.enum(["info", "warning", "error"]),
29
+ code: z.string(),
30
+ message: z.string(),
31
+ adapter: z.string().optional(),
32
+ });
33
+ export const configSchema = z.object({
34
+ schemaVersion: z.literal(schemaVersion),
35
+ recordType: z.literal("config"),
36
+ enabledAdapters: z.array(z.string()),
37
+ exclude: z.array(z.string()),
38
+ reviewSynthesis: z.object({
39
+ enabled: z.boolean(),
40
+ provider: z.literal("codex"),
41
+ command: z.string(),
42
+ model: z.string().optional(),
43
+ timeoutMs: z.number().int().positive(),
44
+ maxCandidates: z.number().int().positive(),
45
+ }),
46
+ candidateCaps: z.object({
47
+ byKind: z.record(z.string(), z.number().int().nonnegative()),
48
+ byKindAndArea: z.record(z.string(), z.number().int().nonnegative()),
49
+ }),
50
+ clusters: z.object({
51
+ maxCandidates: z.number().int().positive(),
52
+ maxFiles: z.number().int().positive(),
53
+ splitBroad: z.boolean(),
54
+ }),
55
+ reviewers: z.object({
56
+ enabled: z.array(z.string()),
57
+ customPaths: z.array(z.string()),
58
+ }),
59
+ externalAnalyzers: z.object({
60
+ jscpd: z.object({
61
+ enabled: z.boolean(),
62
+ command: z.string(),
63
+ minTokens: z.number().int().positive(),
64
+ maxFindings: z.number().int().positive(),
65
+ }),
66
+ semgrep: z.object({
67
+ enabled: z.boolean(),
68
+ command: z.string(),
69
+ config: z.string(),
70
+ timeoutMs: z.number().int().positive(),
71
+ maxFindings: z.number().int().positive(),
72
+ }),
73
+ sarifPaths: z.array(z.string()),
74
+ }),
75
+ privacy: z.object({
76
+ allowSourceInModel: z.boolean(),
77
+ allowWebResearch: z.boolean(),
78
+ }),
79
+ });
80
+ export const fileReferenceSchema = z.object({
81
+ path: z.string(),
82
+ startLine: z.number().int().positive().optional(),
83
+ endLine: z.number().int().positive().optional(),
84
+ });
85
+ export const evidenceRecordSchema = z.object({
86
+ schemaVersion: z.literal(schemaVersion),
87
+ recordType: z.literal("evidence"),
88
+ id: z.string(),
89
+ runId: z.string(),
90
+ adapter: z.string(),
91
+ kind: z.string(),
92
+ title: z.string(),
93
+ summary: z.string(),
94
+ files: z.array(fileReferenceSchema),
95
+ data: z.record(z.string(), z.unknown()),
96
+ confidence: z.enum(confidenceLevels),
97
+ createdAt: z.string(),
98
+ });
99
+ export const candidateRecordSchema = z.object({
100
+ schemaVersion: z.literal(schemaVersion),
101
+ recordType: z.literal("candidate"),
102
+ id: z.string(),
103
+ runId: z.string(),
104
+ title: z.string(),
105
+ category: z.enum(candidateCategories),
106
+ status: z.enum(candidateStatuses),
107
+ priority: z.enum(priorities),
108
+ confidence: z.enum(confidenceLevels),
109
+ impact: z.enum(impactLevels),
110
+ effort: z.enum(effortLevels),
111
+ risk: z.enum(riskLevels),
112
+ files: z.array(fileReferenceSchema),
113
+ evidenceIds: z.array(z.string()),
114
+ whyItMatters: z.string(),
115
+ likelyRootCause: z.string(),
116
+ suggestedDirection: z.string(),
117
+ verification: z.array(z.string()),
118
+ provenance: z.object({
119
+ source: z.enum(["local-evidence", "model-synthesis"]),
120
+ provider: z.string().optional(),
121
+ model: z.string().optional(),
122
+ promptVersion: z.string().optional(),
123
+ reviewers: z.array(z.string()).optional(),
124
+ }),
125
+ createdAt: z.string(),
126
+ updatedAt: z.string(),
127
+ });
128
+ export const clusterRecordSchema = z.object({
129
+ schemaVersion: z.literal(schemaVersion),
130
+ recordType: z.literal("cluster"),
131
+ id: z.string(),
132
+ runId: z.string(),
133
+ title: z.string(),
134
+ summary: z.string(),
135
+ category: z.enum(candidateCategories),
136
+ status: z.enum(candidateStatuses),
137
+ priority: z.enum(priorities),
138
+ confidence: z.enum(confidenceLevels),
139
+ impact: z.enum(impactLevels),
140
+ effort: z.enum(effortLevels),
141
+ risk: z.enum(riskLevels),
142
+ candidateIds: z.array(z.string()),
143
+ evidenceIds: z.array(z.string()),
144
+ files: z.array(fileReferenceSchema),
145
+ rationale: z.string(),
146
+ suggestedDirection: z.string(),
147
+ verification: z.array(z.string()),
148
+ actionability: z.enum(clusterActionability).optional(),
149
+ warnings: z.array(z.string()).optional(),
150
+ createdAt: z.string(),
151
+ updatedAt: z.string(),
152
+ });
153
+ export const runRecordSchema = z.object({
154
+ schemaVersion: z.literal(schemaVersion),
155
+ recordType: z.literal("run"),
156
+ id: z.string(),
157
+ command: z.literal("scan"),
158
+ root: z.string(),
159
+ startedAt: z.string(),
160
+ completedAt: z.string(),
161
+ evidenceCount: z.number().int().nonnegative(),
162
+ candidateCount: z.number().int().nonnegative(),
163
+ clusterCount: z.number().int().nonnegative().optional(),
164
+ synthesis: z.object({
165
+ requested: z.boolean(),
166
+ provider: z.string().optional(),
167
+ candidateCount: z.number().int().nonnegative(),
168
+ }),
169
+ diagnostics: z.array(diagnosticSchema),
170
+ });
171
+ export const triageRecordSchema = z.object({
172
+ schemaVersion: z.literal(schemaVersion),
173
+ recordType: z.literal("triage"),
174
+ id: z.string(),
175
+ candidateId: z.string(),
176
+ fromStatus: z.enum(candidateStatuses),
177
+ toStatus: z.enum(candidateStatuses),
178
+ note: z.string(),
179
+ createdAt: z.string(),
180
+ });
181
+ export const reportRecordSchema = z.object({
182
+ schemaVersion: z.literal(schemaVersion),
183
+ recordType: z.literal("report"),
184
+ id: z.string(),
185
+ runId: z.string(),
186
+ createdAt: z.string(),
187
+ candidateIds: z.array(z.string()),
188
+ summary: z.object({
189
+ open: z.number().int().nonnegative(),
190
+ total: z.number().int().nonnegative(),
191
+ byPriority: z.record(z.string(), z.number().int().nonnegative()),
192
+ }),
193
+ recommendations: z.object({
194
+ startHere: z.object({
195
+ id: z.string(),
196
+ type: z.enum(["candidate", "theme"]),
197
+ reason: z.string(),
198
+ }).optional(),
199
+ topCandidateIds: z.array(z.string()),
200
+ topThemeIds: z.array(z.string()),
201
+ warnings: z.array(z.string()),
202
+ suggestedPlanTargets: z.array(z.string()),
203
+ }).optional(),
204
+ });
205
+ export const planStepSchema = z.object({
206
+ title: z.string(),
207
+ description: z.string(),
208
+ candidateIds: z.array(z.string()),
209
+ files: z.array(fileReferenceSchema),
210
+ verification: z.array(z.string()),
211
+ });
212
+ export const planRecordSchema = z.object({
213
+ schemaVersion: z.literal(schemaVersion),
214
+ recordType: z.literal("plan"),
215
+ id: z.string(),
216
+ runId: z.string(),
217
+ targetType: z.enum(["candidate", "cluster"]),
218
+ targetId: z.string(),
219
+ title: z.string(),
220
+ summary: z.string(),
221
+ steps: z.array(planStepSchema),
222
+ constraints: z.array(z.string()),
223
+ verification: z.array(z.string()),
224
+ createdAt: z.string(),
225
+ content: z.string(),
226
+ });
227
+ export const handoffRecordSchema = z.object({
228
+ schemaVersion: z.literal(schemaVersion),
229
+ recordType: z.literal("handoff"),
230
+ id: z.string(),
231
+ candidateId: z.string(),
232
+ format: z.string(),
233
+ createdAt: z.string(),
234
+ content: z.string(),
235
+ });
236
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,OAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM;IACN,eAAe;IACf,YAAY;IACZ,SAAS;IACT,gBAAgB;IAChB,OAAO;CACC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,SAAS;IACT,cAAc;IACd,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AACnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAU,CAAC;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAU,CAAC;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,WAAW,CAAU,CAAC;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC3C,CAAC;IACF,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5D,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;KACpE,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACrC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KACjC,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SACzC,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;SACzC,CAAC;QACF,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAChC,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC/B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;KAC9B,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;QACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC1C,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACxB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IACtD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC7C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KAC/C,CAAC;IACF,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACvC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;KACjE,CAAC;IACF,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CAAC,QAAQ,EAAE;QACb,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC1C,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface VerificationProfile {
2
+ defaultCommands: string[];
3
+ pythonCommands: string[];
4
+ frontendCommands: string[];
5
+ adminCommands: string[];
6
+ }
7
+ export declare function inferVerificationProfile(root: string): Promise<VerificationProfile>;
8
+ export declare function commandsForFiles(profile: VerificationProfile, files: Array<{
9
+ path: string;
10
+ }>, fallback?: string[]): string[];
11
+ export declare function mergeVerificationCommands(inferred: string[], existing: string[]): string[];