substrate-ai 0.19.44 → 0.19.45
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/dist/cli/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createLogger } from "../logger-KeHncl-f.js";
|
|
|
4
4
|
import { createEventBus } from "../helpers-CElYrONe.js";
|
|
5
5
|
import { AdapterRegistry, BudgetConfigSchema, CURRENT_CONFIG_FORMAT_VERSION, CURRENT_TASK_GRAPH_VERSION, ConfigError, CostTrackerConfigSchema, DEFAULT_CONFIG, DoltClient, DoltNotInstalled, GlobalSettingsSchema, IngestionServer, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProvidersSchema, RoutingRecommender, STORY_METRICS, TelemetryConfigSchema, addTokenUsage, aggregateTokenUsageForRun, checkDoltInstalled, compareRunMetrics, createAmendmentRun, createConfigSystem, createDecision, createDoltClient, createPipelineRun, getActiveDecisions, getAllCostEntriesFiltered, getBaselineRunMetrics, getDecisionsByCategory, getDecisionsByPhaseForRun, getLatestCompletedRun, getLatestRun, getPipelineRunById, getPlanningCostTotal, getRetryableEscalations, getRunMetrics, getRunningPipelineRuns, getSessionCostSummary, getSessionCostSummaryFiltered, getStoryMetricsForRun, getTokenUsageSummary, incrementRunRestarts, initSchema, initializeDolt, listRunMetrics, loadParentRunDecisions, supersedeDecision, tagRunAsBaseline, updatePipelineRun } from "../dist-sNh9XQ6V.js";
|
|
6
6
|
import "../adapter-registry-DXLMTmfD.js";
|
|
7
|
-
import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GitClient, GrammarLoader, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runSolutioningPhase, validateStopAfterFromConflict } from "../run-
|
|
7
|
+
import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GitClient, GrammarLoader, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runSolutioningPhase, validateStopAfterFromConflict } from "../run-BekA_Ns3.js";
|
|
8
8
|
import "../errors-RupuC-ES.js";
|
|
9
9
|
import "../routing-CcBOCuC9.js";
|
|
10
10
|
import "../decisions-C0pz9Clx.js";
|
|
@@ -4833,7 +4833,7 @@ async function runSupervisorAction(options, deps = {}) {
|
|
|
4833
4833
|
await initSchema(expAdapter);
|
|
4834
4834
|
const { runRunAction: runPipeline } = await import(
|
|
4835
4835
|
/* @vite-ignore */
|
|
4836
|
-
"../run-
|
|
4836
|
+
"../run-D4Ivv2xD.js"
|
|
4837
4837
|
);
|
|
4838
4838
|
const runStoryFn = async (opts) => {
|
|
4839
4839
|
const exitCode = await runPipeline({
|
|
@@ -18478,16 +18478,129 @@ async function loadEscalationDiagnoses(adapter, runId) {
|
|
|
18478
18478
|
}
|
|
18479
18479
|
return results;
|
|
18480
18480
|
}
|
|
18481
|
+
async function buildRunReportFromManifest(runId, runsDir, adapter, opts) {
|
|
18482
|
+
try {
|
|
18483
|
+
const manifest = RunManifest.open(runId, runsDir);
|
|
18484
|
+
const data = await manifest.read();
|
|
18485
|
+
if (!data?.per_story_state || Object.keys(data.per_story_state).length === 0) {
|
|
18486
|
+
logger$2.warn({ runId }, "RunManifest has no per_story_state — cannot build RunReport");
|
|
18487
|
+
return null;
|
|
18488
|
+
}
|
|
18489
|
+
const MANIFEST_RESULT_MAP = {
|
|
18490
|
+
"complete": "SHIP_IT",
|
|
18491
|
+
"escalated": "ESCALATED",
|
|
18492
|
+
"failed": "FAILED",
|
|
18493
|
+
"verification-failed": "FAILED",
|
|
18494
|
+
"gated": "FAILED"
|
|
18495
|
+
};
|
|
18496
|
+
const stories = [];
|
|
18497
|
+
let totalInputTokens = 0;
|
|
18498
|
+
let totalOutputTokens = 0;
|
|
18499
|
+
let totalCostUsd = 0;
|
|
18500
|
+
let totalReviewCycles = 0;
|
|
18501
|
+
let totalDispatches = 0;
|
|
18502
|
+
let storiesSucceeded = 0;
|
|
18503
|
+
let storiesFailed = 0;
|
|
18504
|
+
let storiesEscalated = 0;
|
|
18505
|
+
const storyKeys = Object.keys(data.per_story_state);
|
|
18506
|
+
const escalationDiagnoses = await loadEscalationDiagnoses(adapter, runId);
|
|
18507
|
+
for (const [storyKey, state] of Object.entries(data.per_story_state)) {
|
|
18508
|
+
const result = MANIFEST_RESULT_MAP[state.status] ?? state.status.toUpperCase();
|
|
18509
|
+
let wallClockSeconds$1 = 0;
|
|
18510
|
+
if (state.started_at && state.completed_at) wallClockSeconds$1 = Math.round((new Date(state.completed_at).getTime() - new Date(state.started_at).getTime()) / 1e3);
|
|
18511
|
+
const costUsd = state.cost_usd ?? 0;
|
|
18512
|
+
const reviewCycles = state.review_cycles ?? 0;
|
|
18513
|
+
const dispatches = state.dispatches ?? 0;
|
|
18514
|
+
totalCostUsd += costUsd;
|
|
18515
|
+
totalReviewCycles += reviewCycles;
|
|
18516
|
+
totalDispatches += dispatches;
|
|
18517
|
+
if (result === "SHIP_IT" || result === "LGTM_WITH_NOTES" || result === "NEEDS_MINOR_FIXES") storiesSucceeded++;
|
|
18518
|
+
else if (result === "ESCALATED") storiesEscalated++;
|
|
18519
|
+
else storiesFailed++;
|
|
18520
|
+
const vr = state.verification_result ? {
|
|
18521
|
+
status: state.verification_result.status ?? "pass",
|
|
18522
|
+
checks: (state.verification_result.checks ?? []).map((c) => ({
|
|
18523
|
+
checkName: c.checkName,
|
|
18524
|
+
status: c.status,
|
|
18525
|
+
...c.details !== void 0 && { details: c.details },
|
|
18526
|
+
...c.duration_ms !== void 0 && { durationMs: c.duration_ms }
|
|
18527
|
+
}))
|
|
18528
|
+
} : void 0;
|
|
18529
|
+
const escalation = escalationDiagnoses[storyKey];
|
|
18530
|
+
stories.push({
|
|
18531
|
+
storyKey,
|
|
18532
|
+
result,
|
|
18533
|
+
wallClockSeconds: wallClockSeconds$1,
|
|
18534
|
+
...state.started_at && { startedAt: state.started_at },
|
|
18535
|
+
...state.completed_at && { completedAt: state.completed_at },
|
|
18536
|
+
inputTokens: 0,
|
|
18537
|
+
outputTokens: 0,
|
|
18538
|
+
costUsd,
|
|
18539
|
+
reviewCycles,
|
|
18540
|
+
dispatches,
|
|
18541
|
+
...escalation !== void 0 && {
|
|
18542
|
+
escalationReason: escalation.reason,
|
|
18543
|
+
...escalation.issues.length > 0 && { escalationIssues: escalation.issues }
|
|
18544
|
+
},
|
|
18545
|
+
...vr !== void 0 && {
|
|
18546
|
+
verificationStatus: vr.status,
|
|
18547
|
+
verificationChecks: vr.checks
|
|
18548
|
+
}
|
|
18549
|
+
});
|
|
18550
|
+
}
|
|
18551
|
+
const escalationFindings = Object.values(escalationDiagnoses).map((d) => d.finding);
|
|
18552
|
+
let wallClockSeconds = 0;
|
|
18553
|
+
if (data.created_at && data.updated_at) wallClockSeconds = Math.round((new Date(data.updated_at).getTime() - new Date(data.created_at).getTime()) / 1e3);
|
|
18554
|
+
const rawStatus = data.run_status ?? "completed";
|
|
18555
|
+
const status = rawStatus === "completed" ? "completed" : rawStatus === "failed" ? "failed" : "partial";
|
|
18556
|
+
const projectId = opts.projectId ?? (opts.projectRoot ? basename$1(opts.projectRoot) : "unknown");
|
|
18557
|
+
logger$2.info({
|
|
18558
|
+
runId,
|
|
18559
|
+
storyCount: stories.length
|
|
18560
|
+
}, "Built RunReport from manifest fallback");
|
|
18561
|
+
return {
|
|
18562
|
+
runId,
|
|
18563
|
+
projectId,
|
|
18564
|
+
substrateVersion: opts.substrateVersion ?? getSubstrateVersion(),
|
|
18565
|
+
timestamp: data.updated_at ?? new Date().toISOString(),
|
|
18566
|
+
...data.created_at && { startedAt: data.created_at },
|
|
18567
|
+
...data.updated_at && { completedAt: data.updated_at },
|
|
18568
|
+
status,
|
|
18569
|
+
wallClockSeconds,
|
|
18570
|
+
totalInputTokens,
|
|
18571
|
+
totalOutputTokens,
|
|
18572
|
+
totalCostUsd,
|
|
18573
|
+
storiesAttempted: stories.length,
|
|
18574
|
+
storiesSucceeded,
|
|
18575
|
+
storiesFailed,
|
|
18576
|
+
storiesEscalated,
|
|
18577
|
+
totalReviewCycles,
|
|
18578
|
+
totalDispatches,
|
|
18579
|
+
restarts: data.restart_count ?? 0,
|
|
18580
|
+
stories,
|
|
18581
|
+
...escalationFindings.length > 0 && { escalationFindings },
|
|
18582
|
+
agentBackend: opts.agentBackend ?? "claude-code",
|
|
18583
|
+
engineType: opts.engineType ?? "linear",
|
|
18584
|
+
concurrency: opts.concurrency ?? 3
|
|
18585
|
+
};
|
|
18586
|
+
} catch (err) {
|
|
18587
|
+
logger$2.warn({
|
|
18588
|
+
runId,
|
|
18589
|
+
err
|
|
18590
|
+
}, "Failed to build RunReport from manifest fallback");
|
|
18591
|
+
return null;
|
|
18592
|
+
}
|
|
18593
|
+
}
|
|
18481
18594
|
async function buildRunReport(adapter, runId, opts) {
|
|
18482
18595
|
const runMetrics = await getRunMetrics(adapter, runId);
|
|
18596
|
+
const storyMetrics = runMetrics ? await getStoryMetricsForRun(adapter, runId) : [];
|
|
18597
|
+
const dbDir = opts.projectRoot ? join$1(opts.projectRoot, ".substrate") : ".substrate";
|
|
18598
|
+
const runsDir = join$1(dbDir, "runs");
|
|
18483
18599
|
if (!runMetrics) {
|
|
18484
|
-
logger$2.warn({ runId }, "No run_metrics
|
|
18485
|
-
return
|
|
18600
|
+
logger$2.warn({ runId }, "No run_metrics in Dolt — falling back to RunManifest");
|
|
18601
|
+
return buildRunReportFromManifest(runId, runsDir, adapter, opts);
|
|
18486
18602
|
}
|
|
18487
|
-
const storyMetrics = await getStoryMetricsForRun(adapter, runId);
|
|
18488
18603
|
const storyKeys = storyMetrics.map((s$1) => s$1.story_key);
|
|
18489
|
-
const dbDir = opts.projectRoot ? join$1(opts.projectRoot, ".substrate") : ".substrate";
|
|
18490
|
-
const runsDir = join$1(dbDir, "runs");
|
|
18491
18604
|
const verificationResults = await loadVerificationResults(runId, runsDir);
|
|
18492
18605
|
const efficiencyScores = await loadEfficiencyScores(adapter, storyKeys);
|
|
18493
18606
|
const contractVerification = await loadContractVerification(adapter, runId);
|
|
@@ -42796,4 +42909,4 @@ function registerRunCommand(program, _version = "0.0.0", projectRoot = process.c
|
|
|
42796
42909
|
|
|
42797
42910
|
//#endregion
|
|
42798
42911
|
export { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GitClient, GrammarLoader, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, normalizeGraphSummaryToStatus, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveMaxReviewCycles, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runRunAction, runSolutioningPhase, validateStopAfterFromConflict, wireNdjsonEmitter };
|
|
42799
|
-
//# sourceMappingURL=run-
|
|
42912
|
+
//# sourceMappingURL=run-BekA_Ns3.js.map
|
|
@@ -2,7 +2,7 @@ import "./health-BbsWlD8o.js";
|
|
|
2
2
|
import "./logger-KeHncl-f.js";
|
|
3
3
|
import "./helpers-CElYrONe.js";
|
|
4
4
|
import "./dist-sNh9XQ6V.js";
|
|
5
|
-
import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, runRunAction, wireNdjsonEmitter } from "./run-
|
|
5
|
+
import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, runRunAction, wireNdjsonEmitter } from "./run-BekA_Ns3.js";
|
|
6
6
|
import "./routing-CcBOCuC9.js";
|
|
7
7
|
import "./decisions-C0pz9Clx.js";
|
|
8
8
|
|