@hongmaple0820/scale-engine 0.47.0 → 0.48.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 (58) hide show
  1. package/README.en.md +8 -2
  2. package/README.md +9 -3
  3. package/dist/api/cli.js +975 -6222
  4. package/dist/api/cli.js.map +1 -1
  5. package/dist/cli/artifactCrudCommands.d.ts +67 -0
  6. package/dist/cli/artifactCrudCommands.js +182 -0
  7. package/dist/cli/artifactCrudCommands.js.map +1 -0
  8. package/dist/cli/codegraphCommands.d.ts +1 -0
  9. package/dist/cli/codegraphCommands.js +241 -0
  10. package/dist/cli/codegraphCommands.js.map +1 -0
  11. package/dist/cli/contextCommands.d.ts +1 -0
  12. package/dist/cli/contextCommands.js +415 -0
  13. package/dist/cli/contextCommands.js.map +1 -0
  14. package/dist/cli/dependencyTddCommands.d.ts +92 -0
  15. package/dist/cli/dependencyTddCommands.js +174 -0
  16. package/dist/cli/dependencyTddCommands.js.map +1 -0
  17. package/dist/cli/diagnoseHuntCommands.d.ts +135 -0
  18. package/dist/cli/diagnoseHuntCommands.js +224 -0
  19. package/dist/cli/diagnoseHuntCommands.js.map +1 -0
  20. package/dist/cli/engineBootstrap.d.ts +39 -0
  21. package/dist/cli/engineBootstrap.js +129 -0
  22. package/dist/cli/engineBootstrap.js.map +1 -0
  23. package/dist/cli/evalCommands.d.ts +1 -0
  24. package/dist/cli/evalCommands.js +262 -0
  25. package/dist/cli/evalCommands.js.map +1 -0
  26. package/dist/cli/evolveDoctorCommands.d.ts +18 -0
  27. package/dist/cli/evolveDoctorCommands.js +59 -0
  28. package/dist/cli/evolveDoctorCommands.js.map +1 -0
  29. package/dist/cli/gateInlineCommands.d.ts +43 -0
  30. package/dist/cli/gateInlineCommands.js +74 -0
  31. package/dist/cli/gateInlineCommands.js.map +1 -0
  32. package/dist/cli/initConfigCommands.d.ts +138 -0
  33. package/dist/cli/initConfigCommands.js +602 -0
  34. package/dist/cli/initConfigCommands.js.map +1 -0
  35. package/dist/cli/metaGovernanceCommands.d.ts +11 -0
  36. package/dist/cli/metaGovernanceCommands.js +55 -0
  37. package/dist/cli/metaGovernanceCommands.js.map +1 -0
  38. package/dist/cli/runtimeSkillCommands.d.ts +6 -0
  39. package/dist/cli/runtimeSkillCommands.js +1515 -0
  40. package/dist/cli/runtimeSkillCommands.js.map +1 -0
  41. package/dist/cli/sessionCommands.d.ts +17 -0
  42. package/dist/cli/sessionCommands.js +38 -0
  43. package/dist/cli/sessionCommands.js.map +1 -0
  44. package/dist/cli/toolAgentCommands.d.ts +3 -0
  45. package/dist/cli/toolAgentCommands.js +441 -0
  46. package/dist/cli/toolAgentCommands.js.map +1 -0
  47. package/dist/cli/transitionCommands.d.ts +62 -0
  48. package/dist/cli/transitionCommands.js +174 -0
  49. package/dist/cli/transitionCommands.js.map +1 -0
  50. package/dist/cli/upgradeAssetsCommands.d.ts +44 -0
  51. package/dist/cli/upgradeAssetsCommands.js +933 -0
  52. package/dist/cli/upgradeAssetsCommands.js.map +1 -0
  53. package/dist/cli/workflowEvidenceCommands.d.ts +34 -0
  54. package/dist/cli/workflowEvidenceCommands.js +130 -0
  55. package/dist/cli/workflowEvidenceCommands.js.map +1 -0
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +2 -1
@@ -0,0 +1,174 @@
1
+ // SCALE Engine — Dependency, TDD, Stats, and Metrics Commands
2
+ import { defineCommand } from 'citty';
3
+ import { getEngine, SCALE_DIR, PROJECT_DIR, isTruthyFlag, commandEvidence } from './engineBootstrap.js';
4
+ import { auditDependencies } from '../guardrails/DependencyAuditor.js';
5
+ import { createTddSlice, evaluateTddSlice, renderTddSliceMarkdown, } from '../workflow/TddLoop.js';
6
+ import { removeWorkflowOpenTask } from '../workflow/WorkflowOpenTasks.js';
7
+ import { TaskMetricsStore } from '../workflow/TaskMetricsStore.js';
8
+ import { WorkflowArtifactWriter } from '../workflow/WorkflowArtifactWriter.js';
9
+ import { appendTddSliceArtifact, } from '../workflow/TaskArtifactScaffolder.js';
10
+ import { join } from 'node:path';
11
+ function parseCommaList(value) {
12
+ if (value === undefined || value === null || value === '')
13
+ return [];
14
+ return String(value).split(',').map(s => s.trim()).filter(s => s.length > 0);
15
+ }
16
+ export const dependencyAuditCommand = defineCommand({
17
+ meta: { name: 'audit', description: 'Audit lockfile-scoped dependency supply-chain risk' },
18
+ args: {
19
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
20
+ mode: { type: 'string', description: 'Audit mode: compatibility, strict, or offline' },
21
+ 'changed-packages': { type: 'string', description: 'Comma-separated package names to audit instead of direct dependencies' },
22
+ json: { type: 'boolean', default: false },
23
+ },
24
+ run({ args }) {
25
+ const mode = args.mode === 'compatibility' || args.mode === 'strict' || args.mode === 'offline'
26
+ ? args.mode
27
+ : undefined;
28
+ const report = auditDependencies({
29
+ projectDir: args.dir ? String(args.dir) : PROJECT_DIR,
30
+ mode,
31
+ changedPackages: parseCommaList(args['changed-packages']),
32
+ });
33
+ if (args.json) {
34
+ console.log(JSON.stringify(report, null, 2));
35
+ }
36
+ else {
37
+ console.log(`SCALE Dependency Audit: ${report.ok ? 'OK' : 'FAILED'}`);
38
+ console.log(` Packages audited: ${report.summary.packagesAudited}`);
39
+ console.log(` Findings: ${report.summary.totalFindings}`);
40
+ console.log(` Mode: ${report.mode}`);
41
+ for (const finding of report.findings.slice(0, 20)) {
42
+ console.log(` [${finding.severity}] ${finding.ruleId} ${finding.packageName}${finding.version ? `@${finding.version}` : ''}: ${finding.message}`);
43
+ }
44
+ if (report.findings.length > 20)
45
+ console.log(` ... ${report.findings.length - 20} more finding(s)`);
46
+ }
47
+ if (!report.ok)
48
+ process.exitCode = 1;
49
+ },
50
+ });
51
+ export const dependencyCommand = defineCommand({
52
+ meta: { name: 'dependency', description: 'Supply-chain dependency governance' },
53
+ subCommands: { audit: dependencyAuditCommand },
54
+ });
55
+ export const tddSliceCommand = defineCommand({
56
+ meta: { name: 'slice', description: 'Create and evaluate a TDD vertical slice' },
57
+ args: {
58
+ 'task-id': { type: 'string', required: true },
59
+ behavior: { type: 'string', required: true },
60
+ 'public-interface': { type: 'string', required: true },
61
+ 'failing-test': { type: 'string', required: true },
62
+ 'test-file': { type: 'string', required: true },
63
+ 'impl-files': { type: 'string', required: true },
64
+ 'red-exit-code': { type: 'string', description: 'Exit code from the RED command' },
65
+ 'red-summary': { type: 'string', description: 'Short RED output summary' },
66
+ 'green-exit-code': { type: 'string', description: 'Exit code from the GREEN command' },
67
+ 'green-summary': { type: 'string', description: 'Short GREEN output summary' },
68
+ 'refactor-exit-code': { type: 'string', description: 'Exit code from the REFACTOR command' },
69
+ 'refactor-summary': { type: 'string', description: 'Short REFACTOR output summary' },
70
+ 'artifact-dir': { type: 'string', description: 'Task artifact directory where verification.md should be updated' },
71
+ write: { type: 'boolean', default: false, description: 'Append TDD slice output to the task verification artifact' },
72
+ json: { type: 'boolean', default: false },
73
+ },
74
+ run({ args }) {
75
+ const failingTest = String(args['failing-test']);
76
+ const slice = createTddSlice({
77
+ taskId: String(args['task-id']),
78
+ behavior: String(args.behavior),
79
+ publicInterface: String(args['public-interface']),
80
+ failingTestCommand: failingTest,
81
+ testFile: String(args['test-file']),
82
+ implementationFiles: parseCommaList(args['impl-files']),
83
+ redEvidence: commandEvidence(failingTest, args['red-exit-code'], args['red-summary']),
84
+ greenEvidence: commandEvidence(failingTest, args['green-exit-code'], args['green-summary']),
85
+ refactorEvidence: commandEvidence(failingTest, args['refactor-exit-code'], args['refactor-summary']),
86
+ });
87
+ const evaluation = evaluateTddSlice(slice);
88
+ const artifactPath = isTruthyFlag(args.write)
89
+ ? appendTddSliceArtifact({
90
+ projectDir: PROJECT_DIR,
91
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']) : undefined,
92
+ slice,
93
+ }) ?? undefined
94
+ : undefined;
95
+ let tddStatePath;
96
+ if (slice.redEvidence && slice.greenEvidence && slice.refactorEvidence) {
97
+ const writer = new WorkflowArtifactWriter(SCALE_DIR);
98
+ writer.writeTDDEvidence({
99
+ timestamp: new Date().toISOString(),
100
+ taskId: slice.taskId,
101
+ red: slice.redEvidence.exitCode !== 0,
102
+ green: slice.greenEvidence.exitCode === 0,
103
+ refactor: slice.refactorEvidence.exitCode === 0,
104
+ testFirst: slice.redEvidence.exitCode !== 0,
105
+ testFile: slice.testFile,
106
+ implFile: slice.implementationFiles[0] ?? '',
107
+ });
108
+ writer.updateCurrentState({
109
+ taskId: slice.taskId,
110
+ phase: 'verify',
111
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']).replace(/\\/g, '/') : undefined,
112
+ filesModified: slice.implementationFiles,
113
+ openTasks: removeWorkflowOpenTask(writer.readCurrentState()?.openTasks, 'tdd-slice'),
114
+ });
115
+ tddStatePath = join(writer.getStateDir(), `tdd-${slice.taskId}.json`);
116
+ }
117
+ if (args.json) {
118
+ console.log(JSON.stringify({ slice, evaluation, artifactPath, tddStatePath }, null, 2));
119
+ return;
120
+ }
121
+ console.log(renderTddSliceMarkdown(slice));
122
+ if (evaluation.blockers.length > 0) {
123
+ console.log('\nBlockers:');
124
+ for (const blocker of evaluation.blockers)
125
+ console.log(` - ${blocker}`);
126
+ }
127
+ if (artifactPath)
128
+ console.log(`\nArtifact: ${artifactPath}`);
129
+ if (tddStatePath)
130
+ console.log(`TDD state: ${tddStatePath}`);
131
+ },
132
+ });
133
+ export const tddCommand = defineCommand({
134
+ meta: { name: 'tdd', description: 'TDD vertical slice workflows' },
135
+ subCommands: { slice: tddSliceCommand },
136
+ });
137
+ export const statsCommand = defineCommand({
138
+ meta: { name: 'stats', description: 'Show engine stats' },
139
+ args: {},
140
+ async run() {
141
+ const { store, eventBus } = getEngine();
142
+ const s = store.stats();
143
+ const events = await eventBus.query({ limit: 1000 });
144
+ console.log(JSON.stringify({ ...s, eventCount: events.length }, null, 2));
145
+ },
146
+ });
147
+ export const metricsListCommand = defineCommand({
148
+ meta: { name: 'list', description: 'List M/L task workflow metrics' },
149
+ args: {
150
+ json: { type: 'boolean', default: false },
151
+ },
152
+ async run({ args }) {
153
+ const store = new TaskMetricsStore(SCALE_DIR);
154
+ const records = store.list();
155
+ const summary = store.summarize();
156
+ if (args.json) {
157
+ console.log(JSON.stringify({ summary, records }, null, 2));
158
+ return;
159
+ }
160
+ console.log('\nWorkflow Metrics');
161
+ console.log(` Total tasks: ${summary.total}`);
162
+ console.log(` First-pass verification rate: ${(summary.firstPassRate * 100).toFixed(1)}%`);
163
+ console.log(` Average fix iterations: ${summary.averageFixIterations.toFixed(2)}`);
164
+ console.log(` Artifact completeness: ${(summary.artifactCompletenessRate * 100).toFixed(1)}%`);
165
+ for (const record of records.slice(-10)) {
166
+ console.log(` - ${record.date} ${record.level} ${record.taskName}: ${record.finalGateStatus}`);
167
+ }
168
+ },
169
+ });
170
+ export const metricsCommand = defineCommand({
171
+ meta: { name: 'metrics', description: 'Inspect workflow task metrics' },
172
+ subCommands: { list: metricsListCommand },
173
+ });
174
+ //# sourceMappingURL=dependencyTddCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencyTddCommands.js","sourceRoot":"","sources":["../../src/cli/dependencyTddCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ export declare const diagnosePlanCommand: import("citty").CommandDef<{
2
+ 'task-id': {
3
+ type: "string";
4
+ required: true;
5
+ };
6
+ symptom: {
7
+ type: "string";
8
+ required: true;
9
+ };
10
+ repro: {
11
+ type: "string";
12
+ description: string;
13
+ };
14
+ 'expected-failure': {
15
+ type: "string";
16
+ description: string;
17
+ };
18
+ files: {
19
+ type: "string";
20
+ description: string;
21
+ };
22
+ verify: {
23
+ type: "string";
24
+ description: string;
25
+ };
26
+ 'artifact-dir': {
27
+ type: "string";
28
+ description: string;
29
+ };
30
+ write: {
31
+ type: "boolean";
32
+ default: false;
33
+ description: string;
34
+ };
35
+ json: {
36
+ type: "boolean";
37
+ default: false;
38
+ };
39
+ }>;
40
+ export declare const diagnoseCommand: import("citty").CommandDef<import("citty").ArgsDef>;
41
+ export declare const huntScanCommand: import("citty").CommandDef<{
42
+ dir: {
43
+ type: "string";
44
+ default: string;
45
+ description: string;
46
+ };
47
+ changed: {
48
+ type: "boolean";
49
+ default: false;
50
+ description: string;
51
+ };
52
+ 'changed-files': {
53
+ type: "string";
54
+ description: string;
55
+ };
56
+ json: {
57
+ type: "boolean";
58
+ default: false;
59
+ };
60
+ }>;
61
+ export declare const huntReportCommand: import("citty").CommandDef<{
62
+ dir: {
63
+ type: "string";
64
+ default: string;
65
+ description: string;
66
+ };
67
+ changed: {
68
+ type: "boolean";
69
+ default: false;
70
+ description: string;
71
+ };
72
+ 'changed-files': {
73
+ type: "string";
74
+ description: string;
75
+ };
76
+ json: {
77
+ type: "boolean";
78
+ default: false;
79
+ };
80
+ }>;
81
+ export declare const huntDiagnoseCommand: import("citty").CommandDef<{
82
+ id: {
83
+ type: "positional";
84
+ required: true;
85
+ description: string;
86
+ };
87
+ dir: {
88
+ type: "string";
89
+ default: string;
90
+ description: string;
91
+ };
92
+ changed: {
93
+ type: "boolean";
94
+ default: false;
95
+ description: string;
96
+ };
97
+ 'changed-files': {
98
+ type: "string";
99
+ description: string;
100
+ };
101
+ json: {
102
+ type: "boolean";
103
+ default: false;
104
+ };
105
+ }>;
106
+ export declare const huntIgnoreCommand: import("citty").CommandDef<{
107
+ id: {
108
+ type: "positional";
109
+ required: true;
110
+ description: string;
111
+ };
112
+ reason: {
113
+ type: "string";
114
+ description: string;
115
+ };
116
+ dir: {
117
+ type: "string";
118
+ default: string;
119
+ description: string;
120
+ };
121
+ changed: {
122
+ type: "boolean";
123
+ default: false;
124
+ description: string;
125
+ };
126
+ 'changed-files': {
127
+ type: "string";
128
+ description: string;
129
+ };
130
+ json: {
131
+ type: "boolean";
132
+ default: false;
133
+ };
134
+ }>;
135
+ export declare const huntCommand: import("citty").CommandDef<import("citty").ArgsDef>;
@@ -0,0 +1,224 @@
1
+ // SCALE Engine — Diagnose and Hunt Commands
2
+ import { defineCommand } from 'citty';
3
+ import { SCALE_DIR, PROJECT_DIR, isTruthyFlag } from './engineBootstrap.js';
4
+ import { WorkflowArtifactWriter } from '../workflow/WorkflowArtifactWriter.js';
5
+ import { createDiagnosticLoop, renderDiagnosticLoopMarkdown, validateDiagnosticLoop, } from '../workflow/DiagnosticLoop.js';
6
+ import { BackgroundHunter, HuntFindingStore } from '../workflow/autonomous/BackgroundHunter.js';
7
+ import { removeWorkflowOpenTask } from '../workflow/WorkflowOpenTasks.js';
8
+ import { appendDiagnosticLoopArtifact } from '../workflow/TaskArtifactScaffolder.js';
9
+ function parseCommaList(value) {
10
+ if (value === undefined || value === null || value === '')
11
+ return [];
12
+ return String(value).split(',').map(s => s.trim()).filter(s => s.length > 0);
13
+ }
14
+ function uniqueStrings(items) {
15
+ return [...new Set(items)];
16
+ }
17
+ function resolveChangedFilesArg(args) {
18
+ if (args['changed-files'])
19
+ return parseCommaList(args['changed-files']);
20
+ if (!args.changed)
21
+ return undefined;
22
+ return undefined;
23
+ }
24
+ export const diagnosePlanCommand = defineCommand({
25
+ meta: { name: 'plan', description: 'Create a reproducible diagnostic loop before fixing a bug' },
26
+ args: {
27
+ 'task-id': { type: 'string', required: true },
28
+ symptom: { type: 'string', required: true },
29
+ repro: { type: 'string', description: 'Command that reproduces the current failure' },
30
+ 'expected-failure': { type: 'string', description: 'Expected failing behavior or assertion' },
31
+ files: { type: 'string', description: 'Comma-separated changed or suspicious files' },
32
+ verify: { type: 'string', description: 'Comma-separated verification commands after the fix' },
33
+ 'artifact-dir': { type: 'string', description: 'Task artifact directory where plan.md should be updated' },
34
+ write: { type: 'boolean', default: false, description: 'Append diagnostic loop output to the task plan artifact' },
35
+ json: { type: 'boolean', default: false },
36
+ },
37
+ run({ args }) {
38
+ const changedFiles = parseCommaList(args.files);
39
+ const loop = createDiagnosticLoop({
40
+ taskId: String(args['task-id']),
41
+ symptom: String(args.symptom),
42
+ reproductionCommand: args.repro ? String(args.repro) : undefined,
43
+ expectedFailure: args['expected-failure'] ? String(args['expected-failure']) : undefined,
44
+ changedFiles,
45
+ verificationCommands: parseCommaList(args.verify),
46
+ });
47
+ const validation = validateDiagnosticLoop(loop);
48
+ const artifactPath = isTruthyFlag(args.write)
49
+ ? appendDiagnosticLoopArtifact({
50
+ projectDir: PROJECT_DIR,
51
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']) : undefined,
52
+ loop,
53
+ validation,
54
+ }) ?? undefined
55
+ : undefined;
56
+ if (artifactPath || args['artifact-dir']) {
57
+ const writer = new WorkflowArtifactWriter(SCALE_DIR);
58
+ const current = writer.readCurrentState();
59
+ const currentOpenTasks = current?.taskId === loop.taskId ? current.openTasks : [];
60
+ writer.updateCurrentState({
61
+ taskId: loop.taskId,
62
+ phase: 'plan',
63
+ artifactsDir: args['artifact-dir'] ? String(args['artifact-dir']).replace(/\\/g, '/') : undefined,
64
+ filesModified: changedFiles,
65
+ openTasks: validation.ready
66
+ ? removeWorkflowOpenTask(currentOpenTasks.filter(task => task.trim().startsWith('scale ')), 'diagnostic-loop')
67
+ : uniqueStrings([
68
+ ...currentOpenTasks,
69
+ ...validation.blockers,
70
+ ]),
71
+ });
72
+ }
73
+ if (args.json) {
74
+ console.log(JSON.stringify({ loop, validation, artifactPath }, null, 2));
75
+ return;
76
+ }
77
+ console.log(renderDiagnosticLoopMarkdown(loop));
78
+ if (!validation.ready) {
79
+ console.log('\nBlockers:');
80
+ for (const blocker of validation.blockers)
81
+ console.log(` - ${blocker}`);
82
+ }
83
+ if (artifactPath)
84
+ console.log(`\nArtifact: ${artifactPath}`);
85
+ },
86
+ });
87
+ export const diagnoseCommand = defineCommand({
88
+ meta: { name: 'diagnose', description: 'Evidence-first debugging workflows' },
89
+ subCommands: { plan: diagnosePlanCommand },
90
+ });
91
+ function createBackgroundHunter(args) {
92
+ return new BackgroundHunter({ projectDir: args.dir ? String(args.dir) : PROJECT_DIR });
93
+ }
94
+ export const huntScanCommand = defineCommand({
95
+ meta: { name: 'scan', description: 'Run a readonly proactive governance scan' },
96
+ args: {
97
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
98
+ changed: { type: 'boolean', default: false, description: 'Scan changed Git files only' },
99
+ 'changed-files': { type: 'string', description: 'Comma or newline separated file list to scan' },
100
+ json: { type: 'boolean', default: false },
101
+ },
102
+ run({ args }) {
103
+ const report = createBackgroundHunter(args).scan({
104
+ changedFiles: resolveChangedFilesArg(args),
105
+ });
106
+ if (args.json) {
107
+ console.log(JSON.stringify(report, null, 2));
108
+ return;
109
+ }
110
+ printHuntReport(report);
111
+ },
112
+ });
113
+ export const huntReportCommand = defineCommand({
114
+ meta: { name: 'report', description: 'Print open and ignored hunt findings' },
115
+ args: {
116
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
117
+ changed: { type: 'boolean', default: false, description: 'Scan changed Git files only' },
118
+ 'changed-files': { type: 'string', description: 'Comma or newline separated file list to scan' },
119
+ json: { type: 'boolean', default: false },
120
+ },
121
+ run({ args }) {
122
+ const report = createBackgroundHunter(args).scan({
123
+ changedFiles: resolveChangedFilesArg(args),
124
+ });
125
+ if (args.json) {
126
+ console.log(JSON.stringify(report, null, 2));
127
+ return;
128
+ }
129
+ printHuntReport(report);
130
+ },
131
+ });
132
+ export const huntDiagnoseCommand = defineCommand({
133
+ meta: { name: 'diagnose', description: 'Create a diagnostic loop from a hunt finding' },
134
+ args: {
135
+ id: { type: 'positional', required: true, description: 'Hunt finding id' },
136
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
137
+ changed: { type: 'boolean', default: false, description: 'Scan changed Git files only' },
138
+ 'changed-files': { type: 'string', description: 'Comma or newline separated file list to scan' },
139
+ json: { type: 'boolean', default: false },
140
+ },
141
+ run({ args }) {
142
+ const report = createBackgroundHunter(args).scan({
143
+ changedFiles: resolveChangedFilesArg(args),
144
+ });
145
+ const finding = report.findings.find(item => item.id === String(args.id));
146
+ if (!finding) {
147
+ console.error(`Hunt finding not found: ${String(args.id)}`);
148
+ process.exitCode = 1;
149
+ return;
150
+ }
151
+ const loop = createDiagnosticLoop(finding.diagnosticInput);
152
+ const validation = validateDiagnosticLoop(loop);
153
+ if (args.json) {
154
+ console.log(JSON.stringify({ finding, loop, validation }, null, 2));
155
+ return;
156
+ }
157
+ console.log(renderDiagnosticLoopMarkdown(loop));
158
+ if (!validation.ready) {
159
+ console.log('\nBlockers:');
160
+ for (const blocker of validation.blockers)
161
+ console.log(` - ${blocker}`);
162
+ }
163
+ },
164
+ });
165
+ export const huntIgnoreCommand = defineCommand({
166
+ meta: { name: 'ignore', description: 'Ignore a stable hunt finding fingerprint' },
167
+ args: {
168
+ id: { type: 'positional', required: true, description: 'Hunt finding id' },
169
+ reason: { type: 'string', description: 'Why this finding is accepted or deferred' },
170
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
171
+ changed: { type: 'boolean', default: false, description: 'Scan changed Git files only' },
172
+ 'changed-files': { type: 'string', description: 'Comma or newline separated file list to scan' },
173
+ json: { type: 'boolean', default: false },
174
+ },
175
+ run({ args }) {
176
+ const projectDir = args.dir ? String(args.dir) : PROJECT_DIR;
177
+ const report = new BackgroundHunter({ projectDir }).scan({
178
+ changedFiles: resolveChangedFilesArg(args),
179
+ });
180
+ const finding = report.findings.find(item => item.id === String(args.id));
181
+ if (!finding) {
182
+ console.error(`Hunt finding not found: ${String(args.id)}`);
183
+ process.exitCode = 1;
184
+ return;
185
+ }
186
+ const ignored = new HuntFindingStore({ projectDir }).ignore({
187
+ id: finding.id,
188
+ fingerprint: finding.fingerprint,
189
+ reason: args.reason ? String(args.reason) : undefined,
190
+ ignoredAt: new Date().toISOString(),
191
+ });
192
+ if (args.json) {
193
+ console.log(JSON.stringify({ ignored }, null, 2));
194
+ return;
195
+ }
196
+ console.log(`Ignored hunt finding: ${ignored.id}`);
197
+ if (ignored.reason)
198
+ console.log(` Reason: ${ignored.reason}`);
199
+ },
200
+ });
201
+ export const huntCommand = defineCommand({
202
+ meta: { name: 'hunt', description: 'Readonly proactive governance scans' },
203
+ subCommands: {
204
+ scan: huntScanCommand,
205
+ report: huntReportCommand,
206
+ diagnose: huntDiagnoseCommand,
207
+ ignore: huntIgnoreCommand,
208
+ },
209
+ });
210
+ function printHuntReport(report) {
211
+ console.log('SCALE Hunt Report');
212
+ console.log(` Project: ${report.projectDir}`);
213
+ console.log(` Open findings: ${report.summary.open}`);
214
+ console.log(` Ignored findings: ${report.summary.ignored}`);
215
+ console.log(` Blocking findings: ${report.summary.blocking}`);
216
+ for (const finding of report.findings.slice(0, 20)) {
217
+ const line = finding.line ? `:${finding.line}` : '';
218
+ const status = finding.status === 'ignored' ? 'IGNORED' : finding.severity.toUpperCase();
219
+ console.log(` [${status}] ${finding.id} ${finding.ruleId} ${finding.path ?? 'project'}${line}: ${finding.message}`);
220
+ }
221
+ if (report.findings.length > 20)
222
+ console.log(` ... ${report.findings.length - 20} more finding(s)`);
223
+ }
224
+ //# sourceMappingURL=diagnoseHuntCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnoseHuntCommands.js","sourceRoot":"","sources":["../../src/cli/diagnoseHuntCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { EventBus } from '../core/eventBus.js';
2
+ import { SQLiteArtifactStore } from '../artifact/sqliteStore.js';
3
+ import { FSM } from '../artifact/fsm.js';
4
+ import { Gateway } from '../guardrails/Gateway.js';
5
+ import { RoleGateDetector } from '../guardrails/advancedDetectors.js';
6
+ import { GraphifyKnowledgeBase } from '../knowledge/GraphifyKnowledgeBase.js';
7
+ import { ContextBuilder } from '../context/ContextBuilder.js';
8
+ import { FSMAgentBridge } from '../fsm/FSMAgentBridge.js';
9
+ import { WorkflowEngine } from '../workflow/WorkflowEngine.js';
10
+ import type { GateStage } from '../workflow/types.js';
11
+ import type { GovernanceMode } from '../workflow/GovernanceTemplates.js';
12
+ import type { TddCommandEvidence } from '../workflow/TddLoop.js';
13
+ export declare const SCALE_DIR: string;
14
+ export declare const PROJECT_DIR: string;
15
+ export declare const DB_PATH: string;
16
+ export declare function ensureDir(dir: string): void;
17
+ export declare function isTruthyFlag(value: unknown): boolean;
18
+ export declare function governanceModeFromScenario(scenario: string): GovernanceMode;
19
+ export declare function profileFromScenario(scenario: string): string;
20
+ export declare function writeConfigYaml(projectDir: string, profileId: string, projectName: string, agents: string[]): string;
21
+ export declare function commandEvidence(command: string, exitCode: unknown, summary: unknown): TddCommandEvidence | undefined;
22
+ export type PreflightProfile = 'quick' | 'full' | 'ci';
23
+ export declare function normalizePreflightProfile(value: unknown): PreflightProfile;
24
+ export declare function gatesForPreflightProfile(profile: PreflightProfile): GateStage[];
25
+ export declare function resolveScaleDirForProject(projectDir: string): string;
26
+ interface Engine {
27
+ eventBus: EventBus;
28
+ store: SQLiteArtifactStore;
29
+ fsm: FSM;
30
+ gateway: Gateway;
31
+ roleGate: RoleGateDetector;
32
+ kb: GraphifyKnowledgeBase;
33
+ ctx: ContextBuilder;
34
+ fsmAgentBridge: FSMAgentBridge;
35
+ workflowEngine: WorkflowEngine;
36
+ }
37
+ export declare function getEngine(): Engine;
38
+ export declare function createVerificationWorkflowEngine(scaleDir: string): WorkflowEngine;
39
+ export {};