@hongmaple0820/scale-engine 0.48.0 → 0.50.1
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.
- package/README.en.md +2 -2
- package/README.md +2 -2
- package/dist/agents/evidenceDiscipline.d.ts +7 -0
- package/dist/agents/evidenceDiscipline.js +21 -0
- package/dist/agents/evidenceDiscipline.js.map +1 -0
- package/dist/agents/profiles.js +8 -1
- package/dist/agents/profiles.js.map +1 -1
- package/dist/agents/types.d.ts +1 -0
- package/dist/api/DashboardHttpConfig.d.ts +28 -0
- package/dist/api/DashboardHttpConfig.js +110 -0
- package/dist/api/DashboardHttpConfig.js.map +1 -0
- package/dist/api/cli.js +102 -11
- package/dist/api/cli.js.map +1 -1
- package/dist/api/http.d.ts +1 -0
- package/dist/api/http.js +50 -0
- package/dist/api/http.js.map +1 -0
- package/dist/artifact/types.d.ts +64 -0
- package/dist/artifact/types.js.map +1 -1
- package/dist/bootstrap/DependencyBootstrap.d.ts +1 -0
- package/dist/bootstrap/DependencyBootstrap.js +14 -3
- package/dist/bootstrap/DependencyBootstrap.js.map +1 -1
- package/dist/cli/cortexApplyCommand.d.ts +26 -0
- package/dist/cli/cortexApplyCommand.js +74 -0
- package/dist/cli/cortexApplyCommand.js.map +1 -0
- package/dist/cli/cortexCandidateCommands.d.ts +42 -0
- package/dist/cli/cortexCandidateCommands.js +119 -0
- package/dist/cli/cortexCandidateCommands.js.map +1 -0
- package/dist/cli/cortexCommands.d.ts +51 -0
- package/dist/cli/cortexCommands.js +127 -13
- package/dist/cli/cortexCommands.js.map +1 -1
- package/dist/cli/engineBootstrap.d.ts +1 -1
- package/dist/cli/engineBootstrap.js +2 -0
- package/dist/cli/engineBootstrap.js.map +1 -1
- package/dist/cli/evalCommands.js +13 -1
- package/dist/cli/evalCommands.js.map +1 -1
- package/dist/cli/phaseCommands.d.ts +81 -1
- package/dist/cli/phaseCommands.js +465 -31
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/cli/runtimeSkillCommands.js +12 -2
- package/dist/cli/runtimeSkillCommands.js.map +1 -1
- package/dist/cli/shieldCommands.d.ts +1 -0
- package/dist/cli/shieldCommands.js +20 -7
- package/dist/cli/shieldCommands.js.map +1 -1
- package/dist/cli/workflowEvidenceCommands.d.ts +120 -0
- package/dist/cli/workflowEvidenceCommands.js +228 -2
- package/dist/cli/workflowEvidenceCommands.js.map +1 -1
- package/dist/cortex/AutoFixEventObservations.d.ts +11 -0
- package/dist/cortex/AutoFixEventObservations.js +72 -0
- package/dist/cortex/AutoFixEventObservations.js.map +1 -0
- package/dist/cortex/GateEvidenceObservations.d.ts +22 -0
- package/dist/cortex/GateEvidenceObservations.js +179 -0
- package/dist/cortex/GateEvidenceObservations.js.map +1 -0
- package/dist/cortex/GovernanceMetrics.d.ts +2 -0
- package/dist/cortex/GovernanceMetrics.js +112 -22
- package/dist/cortex/GovernanceMetrics.js.map +1 -1
- package/dist/cortex/InstinctApplicationRecorder.d.ts +28 -0
- package/dist/cortex/InstinctApplicationRecorder.js +145 -0
- package/dist/cortex/InstinctApplicationRecorder.js.map +1 -0
- package/dist/cortex/InstinctCandidateAudit.d.ts +3 -0
- package/dist/cortex/InstinctCandidateAudit.js +39 -0
- package/dist/cortex/InstinctCandidateAudit.js.map +1 -0
- package/dist/cortex/InstinctCandidateReview.d.ts +32 -0
- package/dist/cortex/InstinctCandidateReview.js +125 -0
- package/dist/cortex/InstinctCandidateReview.js.map +1 -0
- package/dist/cortex/InstinctExtractor.d.ts +1 -0
- package/dist/cortex/InstinctExtractor.js +24 -17
- package/dist/cortex/InstinctExtractor.js.map +1 -1
- package/dist/cortex/InstinctRuntimeEvidence.d.ts +14 -0
- package/dist/cortex/InstinctRuntimeEvidence.js +120 -0
- package/dist/cortex/InstinctRuntimeEvidence.js.map +1 -0
- package/dist/cortex/InstinctStore.d.ts +50 -4
- package/dist/cortex/InstinctStore.js +262 -48
- package/dist/cortex/InstinctStore.js.map +1 -1
- package/dist/cortex/InstinctValidation.d.ts +9 -0
- package/dist/cortex/InstinctValidation.js +55 -0
- package/dist/cortex/InstinctValidation.js.map +1 -0
- package/dist/cortex/SessionInjector.d.ts +1 -0
- package/dist/cortex/SessionInjector.js +28 -8
- package/dist/cortex/SessionInjector.js.map +1 -1
- package/dist/dashboard/DashboardServer.d.ts +79 -0
- package/dist/dashboard/DashboardServer.js +330 -6
- package/dist/dashboard/DashboardServer.js.map +1 -1
- package/dist/dashboard/spa/app.js +515 -0
- package/dist/dashboard/spa/components/DataTable.js +53 -0
- package/dist/dashboard/spa/components/EventStream.js +66 -0
- package/dist/dashboard/spa/components/LoadingState.js +39 -0
- package/dist/dashboard/spa/components/MetricCard.js +30 -0
- package/dist/dashboard/spa/components/Panel.js +27 -0
- package/dist/dashboard/spa/components/StatusBadge.js +51 -0
- package/dist/dashboard/spa/i18n.js +767 -0
- package/dist/dashboard/spa/index.html +463 -0
- package/dist/dashboard/spa/pages/costs.js +522 -0
- package/dist/dashboard/spa/pages/documents.js +540 -0
- package/dist/dashboard/spa/pages/knowledge.js +457 -0
- package/dist/dashboard/spa/pages/monitoring.js +361 -0
- package/dist/dashboard/spa/pages/overview.js +301 -0
- package/dist/dashboard/spa/pages/topology-renderers.js +251 -0
- package/dist/dashboard/spa/pages/topology.js +370 -0
- package/dist/dashboard/spa/pages/workflow-renderers.js +239 -0
- package/dist/dashboard/spa/pages/workflow.js +217 -0
- package/dist/env/EnvironmentDoctor.js +12 -7
- package/dist/env/EnvironmentDoctor.js.map +1 -1
- package/dist/eval/BenchmarkPublisher.d.ts +2 -0
- package/dist/eval/BenchmarkPublisher.js +43 -0
- package/dist/eval/BenchmarkPublisher.js.map +1 -1
- package/dist/eval/WorkflowEval.d.ts +9 -0
- package/dist/eval/WorkflowEval.js +348 -2
- package/dist/eval/WorkflowEval.js.map +1 -1
- package/dist/guardrails/ast/confirmers.d.ts +18 -0
- package/dist/guardrails/ast/confirmers.js +69 -0
- package/dist/guardrails/ast/confirmers.js.map +1 -0
- package/dist/guardrails/ast/parse.d.ts +20 -0
- package/dist/guardrails/ast/parse.js +51 -0
- package/dist/guardrails/ast/parse.js.map +1 -0
- package/dist/memory/MemoryBrain.d.ts +13 -0
- package/dist/memory/MemoryBrain.js +47 -0
- package/dist/memory/MemoryBrain.js.map +1 -1
- package/dist/memory/MemoryFabric.d.ts +1 -0
- package/dist/memory/MemoryFabric.js +12 -8
- package/dist/memory/MemoryFabric.js.map +1 -1
- package/dist/memory/MemoryLearning.d.ts +1 -0
- package/dist/memory/MemoryLearning.js +6 -3
- package/dist/memory/MemoryLearning.js.map +1 -1
- package/dist/memory/MemoryProviders.d.ts +8 -1
- package/dist/memory/MemoryProviders.js +143 -29
- package/dist/memory/MemoryProviders.js.map +1 -1
- package/dist/output/HTMLDocumentRenderer.d.ts +9 -0
- package/dist/output/HTMLDocumentRenderer.js +19 -0
- package/dist/output/HTMLDocumentRenderer.js.map +1 -1
- package/dist/review/FreshContextVerifier.d.ts +35 -0
- package/dist/review/FreshContextVerifier.js +120 -0
- package/dist/review/FreshContextVerifier.js.map +1 -0
- package/dist/review/JsonLlmClient.d.ts +37 -0
- package/dist/review/JsonLlmClient.js +94 -0
- package/dist/review/JsonLlmClient.js.map +1 -0
- package/dist/review/LlmJudge.d.ts +61 -0
- package/dist/review/LlmJudge.js +167 -0
- package/dist/review/LlmJudge.js.map +1 -0
- package/dist/runtime/AiOsRuntime.d.ts +14 -1
- package/dist/runtime/AiOsRuntime.js +59 -3
- package/dist/runtime/AiOsRuntime.js.map +1 -1
- package/dist/runtime/RuntimeDoctor.js +3 -1
- package/dist/runtime/RuntimeDoctor.js.map +1 -1
- package/dist/runtime/RuntimeEvidenceLedger.d.ts +6 -0
- package/dist/runtime/RuntimeEvidenceLedger.js +52 -1
- package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -1
- package/dist/runtime/SessionLedger.d.ts +2 -0
- package/dist/runtime/SessionLedger.js +4 -0
- package/dist/runtime/SessionLedger.js.map +1 -1
- package/dist/setup/SetupVerification.js +53 -5
- package/dist/setup/SetupVerification.js.map +1 -1
- package/dist/shield/PolicyCompiler.js +73 -12
- package/dist/shield/PolicyCompiler.js.map +1 -1
- package/dist/shield/ProtectedPaths.js +4 -2
- package/dist/shield/ProtectedPaths.js.map +1 -1
- package/dist/skills/SkillCatalog.d.ts +2 -0
- package/dist/skills/SkillCatalog.js +8 -0
- package/dist/skills/SkillCatalog.js.map +1 -1
- package/dist/skills/SkillDoctor.d.ts +19 -2
- package/dist/skills/SkillDoctor.js +163 -13
- package/dist/skills/SkillDoctor.js.map +1 -1
- package/dist/tools/SafeCommandRunner.d.ts +1 -0
- package/dist/tools/SafeCommandRunner.js +1 -0
- package/dist/tools/SafeCommandRunner.js.map +1 -1
- package/dist/tools/ToolCapabilityRegistry.js +25 -3
- package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
- package/dist/tools/ToolOrchestrator.js +21 -0
- package/dist/tools/ToolOrchestrator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/AgentLoopReadiness.d.ts +103 -0
- package/dist/workflow/AgentLoopReadiness.js +371 -0
- package/dist/workflow/AgentLoopReadiness.js.map +1 -0
- package/dist/workflow/BoundaryEnforcement.d.ts +60 -0
- package/dist/workflow/BoundaryEnforcement.js +182 -0
- package/dist/workflow/BoundaryEnforcement.js.map +1 -0
- package/dist/workflow/EcosystemReadinessGate.d.ts +46 -0
- package/dist/workflow/EcosystemReadinessGate.js +126 -0
- package/dist/workflow/EcosystemReadinessGate.js.map +1 -0
- package/dist/workflow/EngineeringStandards.js +67 -12
- package/dist/workflow/EngineeringStandards.js.map +1 -1
- package/dist/workflow/GateCatalog.js +21 -2
- package/dist/workflow/GateCatalog.js.map +1 -1
- package/dist/workflow/GovernanceTemplatePacks.js +2 -26
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
- package/dist/workflow/GovernanceTemplates.js +8 -1
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/ProfileEnforcement.d.ts +7 -0
- package/dist/workflow/ProfileEnforcement.js +12 -0
- package/dist/workflow/ProfileEnforcement.js.map +1 -0
- package/dist/workflow/ReleaseDeploymentLedger.d.ts +63 -0
- package/dist/workflow/ReleaseDeploymentLedger.js +154 -0
- package/dist/workflow/ReleaseDeploymentLedger.js.map +1 -0
- package/dist/workflow/ReviewAnalyzer.js +50 -3
- package/dist/workflow/ReviewAnalyzer.js.map +1 -1
- package/dist/workflow/ReviewStore.d.ts +10 -0
- package/dist/workflow/ReviewStore.js.map +1 -1
- package/dist/workflow/SessionPreamble.d.ts +7 -0
- package/dist/workflow/SessionPreamble.js +48 -9
- package/dist/workflow/SessionPreamble.js.map +1 -1
- package/dist/workflow/SurfaceCoverage.d.ts +19 -0
- package/dist/workflow/SurfaceCoverage.js +57 -0
- package/dist/workflow/SurfaceCoverage.js.map +1 -0
- package/dist/workflow/VerificationCommands.d.ts +1 -0
- package/dist/workflow/VerificationCommands.js.map +1 -1
- package/dist/workflow/VerificationProfile.d.ts +5 -0
- package/dist/workflow/VerificationProfile.js +26 -0
- package/dist/workflow/VerificationProfile.js.map +1 -1
- package/dist/workflow/VerificationSchema.d.ts +3 -0
- package/dist/workflow/VerificationSchema.js +6 -0
- package/dist/workflow/VerificationSchema.js.map +1 -1
- package/dist/workflow/WorkflowEffectiveness.d.ts +97 -0
- package/dist/workflow/WorkflowEffectiveness.js +302 -0
- package/dist/workflow/WorkflowEffectiveness.js.map +1 -0
- package/dist/workflow/WorkflowEffectivenessRenderer.d.ts +2 -0
- package/dist/workflow/WorkflowEffectivenessRenderer.js +67 -0
- package/dist/workflow/WorkflowEffectivenessRenderer.js.map +1 -0
- package/dist/workflow/WorkflowEffectivenessScoring.d.ts +6 -0
- package/dist/workflow/WorkflowEffectivenessScoring.js +243 -0
- package/dist/workflow/WorkflowEffectivenessScoring.js.map +1 -0
- package/dist/workflow/gates/EnhancedGates.js +2 -0
- package/dist/workflow/gates/EnhancedGates.js.map +1 -1
- package/dist/workflow/gates/GateSystem.d.ts +16 -0
- package/dist/workflow/gates/GateSystem.js +208 -41
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/gates/MetaGovernanceGates.js +269 -8
- package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
- package/dist/workflow/gates/TestIntegrityGate.d.ts +51 -0
- package/dist/workflow/gates/TestIntegrityGate.js +175 -0
- package/dist/workflow/gates/TestIntegrityGate.js.map +1 -0
- package/dist/workflow/types.d.ts +1 -1
- package/docs/guides/DEVELOPMENT_WORKFLOW.md +28 -0
- package/docs/reference/cli.md +2 -1
- package/docs/start/agent-governance-demo.md +1 -1
- package/docs/workflow/E2E_EXAMPLE.md +133 -0
- package/docs/workflow/README.md +7 -1
- package/docs/workflow/TEMPLATE_GUIDE.md +162 -0
- package/docs/workflow/templates/github-actions-scale-preflight.yml +4 -1
- package/docs/workflow/templates/plan.md +26 -0
- package/docs/workflow/templates/spec.md +28 -0
- package/package.json +7 -3
- package/scripts/workflow/run-vitest.mjs +123 -0
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
// SCALE Engine — Workflow and Evidence Commands
|
|
2
2
|
import { defineCommand } from 'citty';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
3
5
|
import { SCALE_DIR } from './engineBootstrap.js';
|
|
6
|
+
import { recallMemoryProviders } from '../memory/MemoryProviders.js';
|
|
4
7
|
import { listWorkflowPresets, getPresetsByScenario } from '../workflows/presets.js';
|
|
5
8
|
import { EvidenceStore } from '../workflow/EvidenceStore.js';
|
|
9
|
+
import { ReleaseDeploymentLedger } from '../workflow/ReleaseDeploymentLedger.js';
|
|
10
|
+
import { createWorkflowEffectivenessReport, renderWorkflowEffectivenessReport } from '../workflow/WorkflowEffectiveness.js';
|
|
11
|
+
const DEFAULT_WORKFLOW_MEMORY_QUERY = 'workflow effectiveness memory recall';
|
|
6
12
|
export const workflowListCommand = defineCommand({
|
|
7
13
|
meta: { name: 'list', description: 'List all workflow presets' },
|
|
8
14
|
args: {
|
|
@@ -56,10 +62,230 @@ export const workflowListCommand = defineCommand({
|
|
|
56
62
|
console.log('\nUsage: scale workflow show <preset-id>');
|
|
57
63
|
},
|
|
58
64
|
});
|
|
65
|
+
export const workflowEffectivenessCommand = defineCommand({
|
|
66
|
+
meta: { name: 'effectiveness', description: 'Measure workflow effectiveness across gates, evals, memory, skills, and delivery signals' },
|
|
67
|
+
args: {
|
|
68
|
+
dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
|
|
69
|
+
days: { type: 'string', default: '30', description: 'Lookback period in days' },
|
|
70
|
+
'memory-query': { type: 'string', description: 'Read-only provider recall query used to measure memory quality' },
|
|
71
|
+
'skip-memory-recall': { type: 'boolean', default: false, description: 'Skip read-only provider recall probe' },
|
|
72
|
+
json: { type: 'boolean', default: false },
|
|
73
|
+
},
|
|
74
|
+
async run({ args }) {
|
|
75
|
+
const projectDir = String(args.dir ?? process.cwd());
|
|
76
|
+
const days = Number.parseInt(String(args.days ?? '30'), 10);
|
|
77
|
+
const memoryRecall = args['skip-memory-recall']
|
|
78
|
+
? null
|
|
79
|
+
: await recallWorkflowEffectivenessMemory(projectDir, optionalArg(args['memory-query']) ?? DEFAULT_WORKFLOW_MEMORY_QUERY);
|
|
80
|
+
const report = createWorkflowEffectivenessReport({
|
|
81
|
+
projectDir,
|
|
82
|
+
scaleDir: SCALE_DIR,
|
|
83
|
+
lookbackDays: Number.isFinite(days) ? days : 30,
|
|
84
|
+
deps: {
|
|
85
|
+
memoryRecall,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
if (args.json) {
|
|
89
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
process.stdout.write(`${renderWorkflowEffectivenessReport(report)}\n`);
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
async function recallWorkflowEffectivenessMemory(projectDir, query) {
|
|
96
|
+
try {
|
|
97
|
+
return await recallMemoryProviders({
|
|
98
|
+
projectDir,
|
|
99
|
+
scaleDir: SCALE_DIR,
|
|
100
|
+
query,
|
|
101
|
+
task: 'workflow effectiveness',
|
|
102
|
+
limit: 5,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export const workflowDeployRecordCommand = defineCommand({
|
|
110
|
+
meta: { name: 'record', description: 'Record a release/deployment event for DORA workflow metrics' },
|
|
111
|
+
args: {
|
|
112
|
+
dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
|
|
113
|
+
service: { type: 'string', default: 'scale-engine', description: 'Service name' },
|
|
114
|
+
environment: { type: 'string', default: 'production', description: 'Deployment environment' },
|
|
115
|
+
status: { type: 'string', default: 'succeeded', description: 'succeeded, failed, or rolled-back' },
|
|
116
|
+
version: { type: 'string', description: 'Released version' },
|
|
117
|
+
'git-tag': { type: 'string', description: 'Infer version, commit, commit timestamp, and release timestamp from a local Git tag' },
|
|
118
|
+
commit: { type: 'string', description: 'Git commit SHA' },
|
|
119
|
+
'commit-time': { type: 'string', description: 'Commit timestamp' },
|
|
120
|
+
'started-at': { type: 'string', description: 'Deployment start timestamp' },
|
|
121
|
+
'completed-at': { type: 'string', description: 'Deployment completion timestamp' },
|
|
122
|
+
'failed-at': { type: 'string', description: 'Failure timestamp for failed/rolled-back deployments' },
|
|
123
|
+
'restored-at': { type: 'string', description: 'Recovery completion timestamp' },
|
|
124
|
+
source: { type: 'string', description: 'manual, ci, release, or ship' },
|
|
125
|
+
evidence: { type: 'string', description: 'Comma-separated evidence paths or URLs' },
|
|
126
|
+
notes: { type: 'string', description: 'Short notes for this deployment event' },
|
|
127
|
+
json: { type: 'boolean', default: false },
|
|
128
|
+
},
|
|
129
|
+
async run({ args }) {
|
|
130
|
+
const projectDir = String(args.dir ?? process.cwd());
|
|
131
|
+
const ledger = new ReleaseDeploymentLedger(resolveCliScaleDir(projectDir));
|
|
132
|
+
const gitTag = optionalArg(args['git-tag']);
|
|
133
|
+
const gitTagDefaults = gitTag ? inferDeploymentFromGitTag(projectDir, gitTag) : undefined;
|
|
134
|
+
const explicitCommit = optionalArg(args.commit);
|
|
135
|
+
if (gitTagDefaults && explicitCommit && explicitCommit !== gitTagDefaults.commitSha) {
|
|
136
|
+
throw new Error(`Explicit --commit ${explicitCommit} does not match --git-tag ${gitTag} (${gitTagDefaults.commitSha})`);
|
|
137
|
+
}
|
|
138
|
+
const record = ledger.record({
|
|
139
|
+
service: optionalArg(args.service),
|
|
140
|
+
environment: optionalArg(args.environment),
|
|
141
|
+
status: parseDeploymentStatus(args.status),
|
|
142
|
+
version: optionalArg(args.version) ?? gitTagDefaults?.version,
|
|
143
|
+
commitSha: explicitCommit ?? gitTagDefaults?.commitSha,
|
|
144
|
+
commitTimestamp: optionalArg(args['commit-time']) ?? gitTagDefaults?.commitTimestamp,
|
|
145
|
+
startedAt: optionalArg(args['started-at']),
|
|
146
|
+
completedAt: optionalArg(args['completed-at']) ?? gitTagDefaults?.completedAt,
|
|
147
|
+
failedAt: optionalArg(args['failed-at']),
|
|
148
|
+
restoredAt: optionalArg(args['restored-at']),
|
|
149
|
+
source: parseDeploymentSource(args.source, gitTagDefaults ? 'release' : 'manual'),
|
|
150
|
+
evidencePaths: [
|
|
151
|
+
...(gitTagDefaults?.evidencePaths ?? []),
|
|
152
|
+
...parseDeployEvidencePaths(args.evidence),
|
|
153
|
+
],
|
|
154
|
+
notes: combineNotes(optionalArg(args.notes), gitTagDefaults?.notes),
|
|
155
|
+
});
|
|
156
|
+
if (args.json) {
|
|
157
|
+
process.stdout.write(`${JSON.stringify({ ok: true, record }, null, 2)}\n`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
process.stdout.write(`Recorded deployment ${record.id} (${record.status}) at ${record.completedAt}\n`);
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
export const workflowDeployListCommand = defineCommand({
|
|
164
|
+
meta: { name: 'list', description: 'List deployment events and summarize DORA workflow metrics' },
|
|
165
|
+
args: {
|
|
166
|
+
dir: { type: 'string', default: process.cwd(), description: 'Project directory' },
|
|
167
|
+
days: { type: 'string', default: '30', description: 'Lookback period in days' },
|
|
168
|
+
service: { type: 'string', description: 'Filter by service' },
|
|
169
|
+
environment: { type: 'string', description: 'Filter by environment' },
|
|
170
|
+
json: { type: 'boolean', default: false },
|
|
171
|
+
},
|
|
172
|
+
async run({ args }) {
|
|
173
|
+
const projectDir = String(args.dir ?? process.cwd());
|
|
174
|
+
const days = Number.parseInt(String(args.days ?? '30'), 10);
|
|
175
|
+
const lookbackDays = Number.isFinite(days) ? days : 30;
|
|
176
|
+
const query = {
|
|
177
|
+
lookbackDays,
|
|
178
|
+
service: optionalArg(args.service),
|
|
179
|
+
environment: optionalArg(args.environment),
|
|
180
|
+
};
|
|
181
|
+
const ledger = new ReleaseDeploymentLedger(resolveCliScaleDir(projectDir));
|
|
182
|
+
const records = ledger.list(query);
|
|
183
|
+
const metrics = ledger.summarize(query);
|
|
184
|
+
if (args.json) {
|
|
185
|
+
process.stdout.write(`${JSON.stringify({ ok: true, metrics, records }, null, 2)}\n`);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
process.stdout.write([
|
|
189
|
+
'SCALE Deployment Ledger',
|
|
190
|
+
`Period: last ${lookbackDays} day(s)`,
|
|
191
|
+
`Records: ${metrics.totalRecords}`,
|
|
192
|
+
`Deployment frequency: ${metrics.deploymentFrequencyPerDay} successful deploys/day`,
|
|
193
|
+
`Lead time: ${metrics.leadTimeHours === null ? 'missing' : `${metrics.leadTimeHours}h`}`,
|
|
194
|
+
`Change failure rate: ${metrics.changeFailureRate === null ? 'missing' : `${(metrics.changeFailureRate * 100).toFixed(1)}%`}`,
|
|
195
|
+
`Restore time: ${metrics.restoreTimeHours === null ? 'missing' : `${metrics.restoreTimeHours}h`}`,
|
|
196
|
+
'',
|
|
197
|
+
...records.map(record => ` ${record.id} ${record.service}/${record.environment} ${record.status} ${record.version ?? '-'} ${record.completedAt}`),
|
|
198
|
+
].join('\n') + '\n');
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
export const workflowDeployCommand = defineCommand({
|
|
202
|
+
meta: { name: 'deploy', description: 'Deployment evidence ledger for workflow effectiveness metrics' },
|
|
203
|
+
subCommands: { record: workflowDeployRecordCommand, list: workflowDeployListCommand },
|
|
204
|
+
});
|
|
59
205
|
export const workflowCommand = defineCommand({
|
|
60
|
-
meta: { name: 'workflow', description: 'Workflow preset management' },
|
|
61
|
-
subCommands: { list: workflowListCommand },
|
|
206
|
+
meta: { name: 'workflow', description: 'Workflow preset management and effectiveness reporting' },
|
|
207
|
+
subCommands: { list: workflowListCommand, effectiveness: workflowEffectivenessCommand, deploy: workflowDeployCommand },
|
|
62
208
|
});
|
|
209
|
+
function resolveCliScaleDir(projectDir) {
|
|
210
|
+
return isAbsolute(SCALE_DIR) ? SCALE_DIR : resolve(projectDir, SCALE_DIR);
|
|
211
|
+
}
|
|
212
|
+
function optionalArg(value) {
|
|
213
|
+
const normalized = typeof value === 'string' ? value.trim() : '';
|
|
214
|
+
return normalized ? normalized : undefined;
|
|
215
|
+
}
|
|
216
|
+
function parseDeploymentStatus(value) {
|
|
217
|
+
const normalized = optionalArg(value) ?? 'succeeded';
|
|
218
|
+
if (normalized === 'succeeded' || normalized === 'failed' || normalized === 'rolled-back')
|
|
219
|
+
return normalized;
|
|
220
|
+
throw new Error(`Invalid deployment status: ${normalized}`);
|
|
221
|
+
}
|
|
222
|
+
function parseDeploymentSource(value, fallback) {
|
|
223
|
+
const normalized = optionalArg(value) ?? fallback;
|
|
224
|
+
if (normalized === 'manual' || normalized === 'ci' || normalized === 'release' || normalized === 'ship')
|
|
225
|
+
return normalized;
|
|
226
|
+
throw new Error(`Invalid deployment source: ${normalized}`);
|
|
227
|
+
}
|
|
228
|
+
function parseDeployEvidencePaths(value) {
|
|
229
|
+
return optionalArg(value)
|
|
230
|
+
?.split(',')
|
|
231
|
+
.map(item => item.trim())
|
|
232
|
+
.filter(Boolean) ?? [];
|
|
233
|
+
}
|
|
234
|
+
function inferDeploymentFromGitTag(projectDir, tag) {
|
|
235
|
+
validateGitTagName(projectDir, tag);
|
|
236
|
+
const commitSha = gitOutput(projectDir, ['rev-parse', '--verify', `refs/tags/${tag}^{commit}`]);
|
|
237
|
+
const commitTimestamp = optionalArg(gitOutput(projectDir, ['show', '-s', '--format=%cI', commitSha]));
|
|
238
|
+
const tagTimestamp = optionalArg(tryGitOutput(projectDir, ['for-each-ref', `refs/tags/${tag}`, '--format=%(creatordate:iso-strict)']));
|
|
239
|
+
return {
|
|
240
|
+
version: tag,
|
|
241
|
+
commitSha,
|
|
242
|
+
commitTimestamp,
|
|
243
|
+
completedAt: tagTimestamp ?? commitTimestamp,
|
|
244
|
+
evidencePaths: [`git:tag:${tag}`],
|
|
245
|
+
notes: `gitTag=${tag}`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function validateGitTagName(projectDir, tag) {
|
|
249
|
+
try {
|
|
250
|
+
execFileSync('git', ['check-ref-format', `refs/tags/${tag}`], {
|
|
251
|
+
cwd: projectDir,
|
|
252
|
+
encoding: 'utf-8',
|
|
253
|
+
stdio: ['ignore', 'ignore', 'pipe'],
|
|
254
|
+
timeout: 10000,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
throw new Error(`Invalid Git tag name: ${tag}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function gitOutput(projectDir, args) {
|
|
262
|
+
try {
|
|
263
|
+
return execFileSync('git', args, {
|
|
264
|
+
cwd: projectDir,
|
|
265
|
+
encoding: 'utf-8',
|
|
266
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
267
|
+
timeout: 10000,
|
|
268
|
+
}).trim();
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
const stderr = error && typeof error === 'object' && 'stderr' in error
|
|
272
|
+
? String(error.stderr ?? '').trim()
|
|
273
|
+
: '';
|
|
274
|
+
throw new Error(`Git command failed: git ${args.join(' ')}${stderr ? `: ${stderr}` : ''}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
function tryGitOutput(projectDir, args) {
|
|
278
|
+
try {
|
|
279
|
+
return gitOutput(projectDir, args);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function combineNotes(...notes) {
|
|
286
|
+
const combined = notes.filter((note) => Boolean(note)).join('; ');
|
|
287
|
+
return combined || undefined;
|
|
288
|
+
}
|
|
63
289
|
export const evidenceListCommand = defineCommand({
|
|
64
290
|
meta: { name: 'list', description: 'List persisted gate evidence records' },
|
|
65
291
|
args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflowEvidenceCommands.js","sourceRoot":"","sources":["../../src/cli/workflowEvidenceCommands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflowEvidenceCommands.js","sourceRoot":"","sources":["../../src/cli/workflowEvidenceCommands.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAmC,MAAM,8BAA8B,CAAA;AACrG,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAqD,MAAM,wCAAwC,CAAA;AACnI,OAAO,EAAE,iCAAiC,EAAE,iCAAiC,EAAE,MAAM,sCAAsC,CAAA;AAE3H,MAAM,6BAA6B,GAAG,sCAAsC,CAAA;AAE5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAChE,IAAI,EAAE;QACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;QAChG,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iCAAiC,EAAE;KAC1F;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;YAC3B,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAA+C,CAAC;YAC5E,CAAC,CAAC,mBAAmB,EAAE,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,EAAE,EAAE,IAAI;gBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;gBAC/B,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC,CAAC;aACJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACZ,OAAM;QACR,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;QAEtE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YACzF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAA;YACvE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;YAEtC,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;YACtC,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,IAAI,MAAM,CAAC,YAAY,aAAa,cAAc,IAAI,UAAU,YAAY,CAAC,CAAA;YAE7G,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC7H,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBACvE,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;IACzD,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAC;IACxD,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,0FAA0F,EAAE;IACxI,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE;QAC/E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;QACjH,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAC9G,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1C;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAC7C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,iCAAiC,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAA;QAC3H,MAAM,MAAM,GAAG,iCAAiC,CAAC;YAC/C,UAAU;YACV,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC/C,IAAI,EAAE;gBACJ,YAAY;aACb;SACF,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;YAC5D,OAAM;QACR,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iCAAiC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxE,CAAC;CACF,CAAC,CAAA;AAEF,KAAK,UAAU,iCAAiC,CAAC,UAAkB,EAAE,KAAa;IAChF,IAAI,CAAC;QACH,OAAO,MAAM,qBAAqB,CAAC;YACjC,UAAU;YACV,QAAQ,EAAE,SAAS;YACnB,KAAK;YACL,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC;IACvD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;IACpG,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACjF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE;QACjF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE;QAC7F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,mCAAmC,EAAE;QAClG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAC5D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qFAAqF,EAAE;QACjI,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;QACzD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;QAClE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC3E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;QAClF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE;QACpG,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;QAC/E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;QACvE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;QACnF,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;QAC/E,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1C;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,cAAc,IAAI,cAAc,IAAI,cAAc,KAAK,cAAc,CAAC,SAAS,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,qBAAqB,cAAc,6BAA6B,MAAM,KAAK,cAAc,CAAC,SAAS,GAAG,CAAC,CAAA;QACzH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;YAC1C,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1C,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,cAAc,EAAE,OAAO;YAC7D,SAAS,EAAE,cAAc,IAAI,cAAc,EAAE,SAAS;YACtD,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,cAAc,EAAE,eAAe;YACpF,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1C,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,cAAc,EAAE,WAAW;YAC7E,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjF,aAAa,EAAE;gBACb,GAAG,CAAC,cAAc,EAAE,aAAa,IAAI,EAAE,CAAC;gBACxC,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3C;YACD,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC;SACpE,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;YAC1E,OAAM;QACR,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,QAAQ,MAAM,CAAC,WAAW,IAAI,CAAC,CAAA;IACxG,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;IACrD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,4DAA4D,EAAE;IACjG,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACjF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE;QAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAC7D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;QACrE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1C;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QACtD,MAAM,KAAK,GAAG;YACZ,YAAY;YACZ,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;SAC3C,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;YACpF,OAAM;QACR,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,yBAAyB;YACzB,gBAAgB,YAAY,SAAS;YACrC,YAAY,OAAO,CAAC,YAAY,EAAE;YAClC,yBAAyB,OAAO,CAAC,yBAAyB,yBAAyB;YACnF,cAAc,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,EAAE;YACxF,wBAAwB,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;YAC7H,iBAAiB,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,EAAE;YACjG,EAAE;YACF,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;SACvJ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACtB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;IACjD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;IACtG,WAAW,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE,IAAI,EAAE,yBAAyB,EAAE;CACtF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wDAAwD,EAAE;IACjG,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,EAAE,qBAAqB,EAAE;CACvH,CAAC,CAAA;AAEF,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAA;IACpD,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,aAAa;QAAE,OAAO,UAAU,CAAA;IAC5G,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,QAAyC;IACtF,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAA;IACjD,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,UAAU,CAAA;IAC1H,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAc;IAC9C,OAAO,WAAW,CAAC,KAAK,CAAC;QACvB,EAAE,KAAK,CAAC,GAAG,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;AAC1B,CAAC;AAWD,SAAS,yBAAyB,CAAC,UAAkB,EAAE,GAAW;IAChE,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,GAAG,WAAW,CAAC,CAAC,CAAA;IAC/F,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACrG,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,cAAc,EAAE,aAAa,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAA;IACtI,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,SAAS;QACT,eAAe;QACf,WAAW,EAAE,YAAY,IAAI,eAAe;QAC5C,aAAa,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC;QACjC,KAAK,EAAE,UAAU,GAAG,EAAE;KACvB,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,GAAW;IACzD,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,kBAAkB,EAAE,aAAa,GAAG,EAAE,CAAC,EAAE;YAC5D,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;YACnC,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;IACjD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,IAAc;IACnD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,UAAU;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,IAAI,EAAE,CAAA;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK;YACpE,CAAC,CAAC,MAAM,CAAE,KAA8B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC7D,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5F,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,IAAc;IACtD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAG,KAAgC;IACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjF,OAAO,QAAQ,IAAI,SAAS,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IAC3E,IAAI,EAAE;QACJ,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,2BAA2B,EAAE;QAClF,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1C;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACrE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACzC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;YACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACxF,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAA;QAClH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;IAClD,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;IAC5E,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1C;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;QACvC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QACvC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QACvC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,UAAU,IAAI,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YAC1B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,KAAK,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oCAAoC,EAAE;IAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE;CACtE,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface CortexAutoFixObservation {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
sessionId: string;
|
|
4
|
+
gateName: string;
|
|
5
|
+
gateStatus: 'PASS' | 'FAIL';
|
|
6
|
+
durationMs?: number;
|
|
7
|
+
tokensUsed: number;
|
|
8
|
+
estimatedCostUsd: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function loadAutoFixEventObservations(scaleDir: string): CortexAutoFixObservation[];
|
|
11
|
+
export declare function parseAutoFixEventObservation(value: unknown): CortexAutoFixObservation | null;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { logger } from '../core/logger.js';
|
|
4
|
+
export function loadAutoFixEventObservations(scaleDir) {
|
|
5
|
+
const eventsDir = join(scaleDir, 'events');
|
|
6
|
+
if (!existsSync(eventsDir))
|
|
7
|
+
return [];
|
|
8
|
+
const observations = [];
|
|
9
|
+
try {
|
|
10
|
+
for (const file of readdirSync(eventsDir)) {
|
|
11
|
+
if (!file.endsWith('.jsonl'))
|
|
12
|
+
continue;
|
|
13
|
+
const lines = readFileSync(join(eventsDir, file), 'utf-8').split('\n').filter(Boolean);
|
|
14
|
+
for (const [index, line] of lines.entries()) {
|
|
15
|
+
try {
|
|
16
|
+
const observation = parseAutoFixEventObservation(JSON.parse(line));
|
|
17
|
+
if (observation)
|
|
18
|
+
observations.push(observation);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
logger.debug({ err, file, lineNumber: index + 1 }, 'Skipped malformed auto-fix event line');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
logger.warn({ err }, 'Failed to load auto-fix event observations');
|
|
28
|
+
}
|
|
29
|
+
return observations;
|
|
30
|
+
}
|
|
31
|
+
export function parseAutoFixEventObservation(value) {
|
|
32
|
+
if (!isRecord(value) || value.type !== 'autofix.attempt')
|
|
33
|
+
return null;
|
|
34
|
+
const payload = isRecord(value.payload) ? value.payload : null;
|
|
35
|
+
if (!payload)
|
|
36
|
+
return null;
|
|
37
|
+
const timestamp = timestampValue(value.timestamp);
|
|
38
|
+
const category = stringValue(payload.category) ?? 'unknown';
|
|
39
|
+
if (!timestamp)
|
|
40
|
+
return null;
|
|
41
|
+
return {
|
|
42
|
+
timestamp,
|
|
43
|
+
sessionId: stringValue(value.sessionId) ?? stringValue(value.id) ?? `auto-fix-${timestamp}`,
|
|
44
|
+
gateName: `auto-fix:${category}`,
|
|
45
|
+
gateStatus: payload.success === true ? 'PASS' : 'FAIL',
|
|
46
|
+
durationMs: finiteNumber(payload.durationMs),
|
|
47
|
+
tokensUsed: 0,
|
|
48
|
+
estimatedCostUsd: 0,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function timestampValue(value) {
|
|
52
|
+
if (typeof value === 'string') {
|
|
53
|
+
const ts = new Date(value).getTime();
|
|
54
|
+
return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
|
|
55
|
+
}
|
|
56
|
+
const numeric = finiteNumber(value);
|
|
57
|
+
if (numeric === undefined)
|
|
58
|
+
return undefined;
|
|
59
|
+
const ms = numeric < 10_000_000_000 ? numeric * 1000 : numeric;
|
|
60
|
+
const ts = new Date(ms).getTime();
|
|
61
|
+
return Number.isFinite(ts) ? new Date(ms).toISOString() : undefined;
|
|
62
|
+
}
|
|
63
|
+
function stringValue(value) {
|
|
64
|
+
return typeof value === 'string' && value.trim().length > 0 ? value : undefined;
|
|
65
|
+
}
|
|
66
|
+
function finiteNumber(value) {
|
|
67
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
68
|
+
}
|
|
69
|
+
function isRecord(value) {
|
|
70
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=AutoFixEventObservations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoFixEventObservations.js","sourceRoot":"","sources":["../../src/cortex/AutoFixEventObservations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface CortexGateObservation {
|
|
2
|
+
timestamp: string;
|
|
3
|
+
sessionId: string;
|
|
4
|
+
gateName: string;
|
|
5
|
+
gateStatus: 'PASS' | 'FAIL' | 'WARN';
|
|
6
|
+
errorPattern?: string;
|
|
7
|
+
filePaths: string[];
|
|
8
|
+
rootCause?: string;
|
|
9
|
+
resolution?: string;
|
|
10
|
+
tokensUsed: number;
|
|
11
|
+
modelUsed: string;
|
|
12
|
+
durationMs?: number;
|
|
13
|
+
estimatedCostUsd?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function loadGateEvidenceObservations(scaleDir: string): CortexGateObservation[];
|
|
16
|
+
export declare function parseGateEvidenceObservation(value: unknown, fileName?: string): CortexGateObservation | null;
|
|
17
|
+
export declare function dedupeCortexObservations<T extends {
|
|
18
|
+
timestamp: string;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
gateName?: string;
|
|
21
|
+
gateStatus?: string;
|
|
22
|
+
}>(observations: T[]): T[];
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { logger } from '../core/logger.js';
|
|
4
|
+
export function loadGateEvidenceObservations(scaleDir) {
|
|
5
|
+
const evidenceDir = join(scaleDir, 'evidence');
|
|
6
|
+
if (!existsSync(evidenceDir))
|
|
7
|
+
return [];
|
|
8
|
+
const observations = [];
|
|
9
|
+
try {
|
|
10
|
+
for (const file of readdirSync(evidenceDir)) {
|
|
11
|
+
if (!/^GATE-.+\.json$/u.test(file))
|
|
12
|
+
continue;
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(readFileSync(join(evidenceDir, file), 'utf-8'));
|
|
15
|
+
const observation = parseGateEvidenceObservation(parsed, file);
|
|
16
|
+
if (observation)
|
|
17
|
+
observations.push(observation);
|
|
18
|
+
}
|
|
19
|
+
catch (err) {
|
|
20
|
+
logger.debug({ err, file }, 'Skipped malformed gate evidence file');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
logger.warn({ err }, 'Failed to load gate evidence observations');
|
|
26
|
+
}
|
|
27
|
+
return observations;
|
|
28
|
+
}
|
|
29
|
+
export function parseGateEvidenceObservation(value, fileName = '') {
|
|
30
|
+
if (!isRecord(value))
|
|
31
|
+
return null;
|
|
32
|
+
const gateName = stringValue(value.gate) ?? gateNameFromId(stringValue(value.id) ?? fileName);
|
|
33
|
+
const timestamp = timestampValue(value.createdAt) ?? timestampFromId(stringValue(value.id) ?? fileName);
|
|
34
|
+
if (!gateName || !timestamp)
|
|
35
|
+
return null;
|
|
36
|
+
const items = Array.isArray(value.evidenceItems)
|
|
37
|
+
? value.evidenceItems.filter(isRecord)
|
|
38
|
+
: [];
|
|
39
|
+
const gateStatus = statusFromEvidence(value);
|
|
40
|
+
const failureItems = items.filter(isFailedEvidenceItem);
|
|
41
|
+
const blockers = stringArray(value.blockers);
|
|
42
|
+
const failureSummary = gateStatus === 'FAIL'
|
|
43
|
+
? summarize(firstNonEmpty([
|
|
44
|
+
blockers[0],
|
|
45
|
+
evidenceItemSummary(failureItems[0]),
|
|
46
|
+
stringValue(value.evidence),
|
|
47
|
+
stringValue(value.status),
|
|
48
|
+
]))
|
|
49
|
+
: undefined;
|
|
50
|
+
return {
|
|
51
|
+
timestamp,
|
|
52
|
+
sessionId: stringValue(value.id) ?? `${gateName}-${timestamp}`,
|
|
53
|
+
gateName,
|
|
54
|
+
gateStatus,
|
|
55
|
+
errorPattern: failureSummary ? `${gateName}: ${failureSummary}` : undefined,
|
|
56
|
+
filePaths: uniqueStrings(items.map(item => stringValue(item.path)).filter(Boolean)),
|
|
57
|
+
rootCause: failureSummary,
|
|
58
|
+
resolution: failureSummary
|
|
59
|
+
? `Inspect .scale/evidence/${stringValue(value.id) ?? fileName} and rerun gate ${gateName}.`
|
|
60
|
+
: undefined,
|
|
61
|
+
tokensUsed: tokenCount(value, items),
|
|
62
|
+
modelUsed: 'gate-evidence',
|
|
63
|
+
durationMs: finiteNumber(value.durationMs) ?? sumNumbers(items.map(item => finiteNumber(item.durationMs))),
|
|
64
|
+
estimatedCostUsd: finiteNumber(value.estimatedCostUsd) ?? sumNumbers(items.map(item => finiteNumber(item.estimatedCostUsd))),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function dedupeCortexObservations(observations) {
|
|
68
|
+
const seen = new Set();
|
|
69
|
+
const deduped = [];
|
|
70
|
+
for (const observation of observations) {
|
|
71
|
+
const key = [
|
|
72
|
+
observation.sessionId ?? '',
|
|
73
|
+
observation.gateName ?? '',
|
|
74
|
+
observation.gateStatus ?? '',
|
|
75
|
+
observation.timestamp,
|
|
76
|
+
].join('\u0000');
|
|
77
|
+
if (seen.has(key))
|
|
78
|
+
continue;
|
|
79
|
+
seen.add(key);
|
|
80
|
+
deduped.push(observation);
|
|
81
|
+
}
|
|
82
|
+
return deduped;
|
|
83
|
+
}
|
|
84
|
+
function statusFromEvidence(value) {
|
|
85
|
+
if (value.passed === true || stringValue(value.status)?.toUpperCase() === 'PASSED')
|
|
86
|
+
return 'PASS';
|
|
87
|
+
if (value.passed === false)
|
|
88
|
+
return 'FAIL';
|
|
89
|
+
const status = stringValue(value.status)?.toUpperCase();
|
|
90
|
+
if (!status)
|
|
91
|
+
return 'WARN';
|
|
92
|
+
if (status.includes('FAIL') || status.includes('BLOCK'))
|
|
93
|
+
return 'FAIL';
|
|
94
|
+
if (status.includes('WARN'))
|
|
95
|
+
return 'WARN';
|
|
96
|
+
return 'WARN';
|
|
97
|
+
}
|
|
98
|
+
function isFailedEvidenceItem(item) {
|
|
99
|
+
if (item.passed === false)
|
|
100
|
+
return true;
|
|
101
|
+
const exitCode = finiteNumber(item.exitCode);
|
|
102
|
+
return exitCode !== undefined && exitCode !== 0;
|
|
103
|
+
}
|
|
104
|
+
function evidenceItemSummary(item) {
|
|
105
|
+
if (!item)
|
|
106
|
+
return undefined;
|
|
107
|
+
const label = stringValue(item.label);
|
|
108
|
+
const detail = stringValue(item.detail);
|
|
109
|
+
if (label && detail)
|
|
110
|
+
return `${label}: ${detail}`;
|
|
111
|
+
return label ?? detail;
|
|
112
|
+
}
|
|
113
|
+
function tokenCount(record, items) {
|
|
114
|
+
const itemTotal = sumNumbers(items.map(item => finiteNumber(item.rawEstimatedTokens)
|
|
115
|
+
?? finiteNumber(item.compressedEstimatedTokens)
|
|
116
|
+
?? finiteNumber(item.tokensUsed)));
|
|
117
|
+
if (itemTotal !== undefined && itemTotal > 0)
|
|
118
|
+
return itemTotal;
|
|
119
|
+
return finiteNumber(record.rawEstimatedTokens)
|
|
120
|
+
?? finiteNumber(record.compressedEstimatedTokens)
|
|
121
|
+
?? finiteNumber(record.tokensUsed)
|
|
122
|
+
?? 0;
|
|
123
|
+
}
|
|
124
|
+
function sumNumbers(values) {
|
|
125
|
+
let total = 0;
|
|
126
|
+
for (const value of values) {
|
|
127
|
+
total += value ?? 0;
|
|
128
|
+
}
|
|
129
|
+
return total > 0 ? total : undefined;
|
|
130
|
+
}
|
|
131
|
+
function timestampValue(value) {
|
|
132
|
+
if (typeof value === 'string') {
|
|
133
|
+
const ts = new Date(value).getTime();
|
|
134
|
+
return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
|
|
135
|
+
}
|
|
136
|
+
const numeric = finiteNumber(value);
|
|
137
|
+
if (numeric === undefined)
|
|
138
|
+
return undefined;
|
|
139
|
+
const ms = numeric < 10_000_000_000 ? numeric * 1000 : numeric;
|
|
140
|
+
const ts = new Date(ms).getTime();
|
|
141
|
+
return Number.isFinite(ts) ? new Date(ts).toISOString() : undefined;
|
|
142
|
+
}
|
|
143
|
+
function timestampFromId(id) {
|
|
144
|
+
const match = id?.match(/GATE-[A-Z0-9]+-(\d{10,})/u);
|
|
145
|
+
if (!match)
|
|
146
|
+
return undefined;
|
|
147
|
+
return timestampValue(Number(match[1]));
|
|
148
|
+
}
|
|
149
|
+
function gateNameFromId(id) {
|
|
150
|
+
const match = id?.match(/GATE-([A-Z0-9]+)-/u);
|
|
151
|
+
return match?.[1];
|
|
152
|
+
}
|
|
153
|
+
function stringArray(value) {
|
|
154
|
+
if (!Array.isArray(value))
|
|
155
|
+
return [];
|
|
156
|
+
return value.filter((entry) => typeof entry === 'string' && entry.trim().length > 0);
|
|
157
|
+
}
|
|
158
|
+
function uniqueStrings(values) {
|
|
159
|
+
return Array.from(new Set(values.filter((value) => Boolean(value))));
|
|
160
|
+
}
|
|
161
|
+
function firstNonEmpty(values) {
|
|
162
|
+
return values.find(value => value !== undefined && value.trim().length > 0);
|
|
163
|
+
}
|
|
164
|
+
function summarize(value) {
|
|
165
|
+
if (!value)
|
|
166
|
+
return undefined;
|
|
167
|
+
const normalized = value.replace(/\s+/gu, ' ').trim();
|
|
168
|
+
return normalized.length > 180 ? `${normalized.slice(0, 177)}...` : normalized;
|
|
169
|
+
}
|
|
170
|
+
function stringValue(value) {
|
|
171
|
+
return typeof value === 'string' && value.trim().length > 0 ? value : undefined;
|
|
172
|
+
}
|
|
173
|
+
function finiteNumber(value) {
|
|
174
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
175
|
+
}
|
|
176
|
+
function isRecord(value) {
|
|
177
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=GateEvidenceObservations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GateEvidenceObservations.js","sourceRoot":"","sources":["../../src/cortex/GateEvidenceObservations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Instinct } from './InstinctExtractor.js';
|
|
2
|
+
import { type InstinctRuntimeEvidenceSummary } from './InstinctRuntimeEvidence.js';
|
|
2
3
|
export interface GovernanceMetrics {
|
|
3
4
|
gates: {
|
|
4
5
|
totalRuns: number;
|
|
@@ -20,6 +21,7 @@ export interface GovernanceMetrics {
|
|
|
20
21
|
count: number;
|
|
21
22
|
hitRate: number;
|
|
22
23
|
}>;
|
|
24
|
+
runtimeEvidence?: InstinctRuntimeEvidenceSummary;
|
|
23
25
|
};
|
|
24
26
|
cost: {
|
|
25
27
|
totalTokens: number;
|