substrate-ai 0.20.147 → 0.20.148
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/adapter-registry-hLwwiJGM.js +4 -0
- package/dist/cli/index.js +33 -25
- package/dist/{decisions-qFnqErZ5.js → decisions-DSDqOEN4.js} +1 -1
- package/dist/{dist-DT378h1M.js → dist-CZk5SeSt.js} +19 -11
- package/dist/{errors-BGE3kaH8.js → errors-_tbIg6Cv.js} +2 -2
- package/dist/{experimenter-COLnRT8i.js → experimenter-RnaEiLUD.js} +1 -1
- package/dist/{health-nQ_Txd5T.js → health-Aqc5cghP.js} +3 -3
- package/dist/{health-BJoVPIyR.js → health-Cm0aQCQL.js} +3 -3
- package/dist/{index-DaBYDiWn.d.ts → index-CvNLhgKV.d.ts} +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +2 -2
- package/dist/{interactive-prompt-xJ3K-IUQ.js → interactive-prompt-BLkX0iE_.js} +2 -2
- package/dist/{manifest-read-DlWwZpfO.js → manifest-read-D6NAZgt8.js} +2 -2
- package/dist/modules/interactive-prompt/index.js +3 -3
- package/dist/{routing-Dz4GQta5.js → routing-QBUaShFv.js} +1 -1
- package/dist/{run-BBVZdkEo.js → run-B9DV9sro.js} +163 -15
- package/dist/{run-D3mhgkIL.js → run-BX-__EJm.js} +5 -5
- package/dist/src/modules/recovery-engine/index.d.ts +1 -1
- package/dist/{upgrade-BVHnUYUd.js → upgrade-BEfZJU4K.js} +2 -2
- package/dist/{upgrade-V0xYGkQs.js → upgrade-emlrK3YW.js} +2 -2
- package/dist/{version-manager-impl-BWqvme_f.js → version-manager-impl-_x1n4xZk.js} +1 -1
- package/package.json +1 -1
- package/dist/adapter-registry-SL7-DtOW.js +0 -4
package/dist/cli/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { FileKvStore, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, buildPipelineStatusOutput, createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion } from "../health-
|
|
2
|
+
import { FileKvStore, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, buildPipelineStatusOutput, createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion } from "../health-Aqc5cghP.js";
|
|
3
3
|
import { createLogger } from "../logger-KeHncl-f.js";
|
|
4
4
|
import { createEventBus } from "../helpers-CElYrONe.js";
|
|
5
|
-
import { AdapterRegistry, BudgetConfigSchema, CURRENT_CONFIG_FORMAT_VERSION, CURRENT_TASK_GRAPH_VERSION, ConfigError, CostTrackerConfigSchema, DEFAULT_CONFIG, DoltClient, DoltNotInstalled, GlobalSettingsSchema, InMemoryDatabaseAdapter, IngestionServer, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProvidersSchema, RoutingRecommender, STORY_METRICS, TelemetryConfigSchema, addTokenUsage, aggregateTokenUsageForRun, checkDoltInstalled, compareRunMetrics, createAmendmentRun, createConfigSystem, createDecision, createPipelineRun, createStderrLogger, getActiveDecisions, getAllCostEntriesFiltered, getBaselineRunMetrics, getDecisionsByCategory, getDecisionsByPhaseForRun, getLatestCompletedRun, getLatestRun, getPipelineRunById, getPlanningCostTotal, getRetryableEscalations, getRunMetrics, getRunningPipelineRuns, getSessionCostSummary, getSessionCostSummaryFiltered, getStoryMetricsForRun, getTokenUsageSummary, incrementRunRestarts, initSchema, initWorkGraphSchema, initializeDolt, listRunMetrics, loadParentRunDecisions, supersedeDecision, swallowDebug, tagRunAsBaseline, updatePipelineRun } from "../dist-
|
|
6
|
-
import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createGitWorktreeManager, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-
|
|
5
|
+
import { AdapterRegistry, BudgetConfigSchema, CURRENT_CONFIG_FORMAT_VERSION, CURRENT_TASK_GRAPH_VERSION, ConfigError, CostTrackerConfigSchema, DEFAULT_CONFIG, DoltClient, DoltNotInstalled, GlobalSettingsSchema, InMemoryDatabaseAdapter, IngestionServer, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProvidersSchema, RoutingRecommender, STORY_METRICS, TelemetryConfigSchema, addTokenUsage, aggregateTokenUsageForRun, checkDoltInstalled, compareRunMetrics, createAmendmentRun, createConfigSystem, createDecision, createPipelineRun, createStderrLogger, getActiveDecisions, getAllCostEntriesFiltered, getBaselineRunMetrics, getDecisionsByCategory, getDecisionsByPhaseForRun, getLatestCompletedRun, getLatestRun, getPipelineRunById, getPlanningCostTotal, getRetryableEscalations, getRunMetrics, getRunningPipelineRuns, getSessionCostSummary, getSessionCostSummaryFiltered, getStoryMetricsForRun, getTokenUsageSummary, incrementRunRestarts, initSchema, initWorkGraphSchema, initializeDolt, listRunMetrics, loadParentRunDecisions, supersedeDecision, swallowDebug, tagRunAsBaseline, updatePipelineRun } from "../dist-CZk5SeSt.js";
|
|
6
|
+
import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createGitWorktreeManager, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-B9DV9sro.js";
|
|
7
7
|
import "../adapter-registry-DIcrxjH8.js";
|
|
8
|
-
import { RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, parseRuntimeProbes, readCurrentRunId, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck } from "../manifest-read-
|
|
9
|
-
import "../errors-
|
|
8
|
+
import { RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, parseRuntimeProbes, readCurrentRunId, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck } from "../manifest-read-D6NAZgt8.js";
|
|
9
|
+
import "../errors-_tbIg6Cv.js";
|
|
10
10
|
import "../routing-DFxoKHDt.js";
|
|
11
11
|
import { WorkGraphRepository } from "../work-graph-repository-DZyJv5pV.js";
|
|
12
12
|
import "../decisions-CzSIEeGP.js";
|
|
13
13
|
import "../decision-router-BAPpON_C.js";
|
|
14
|
-
import "../interactive-prompt-
|
|
14
|
+
import "../interactive-prompt-BLkX0iE_.js";
|
|
15
15
|
import "../recovery-engine-BKGBeBnW.js";
|
|
16
16
|
import "../version-manager-impl-qFBiO4Eh.js";
|
|
17
|
-
import { registerUpgradeCommand } from "../upgrade-
|
|
17
|
+
import { registerUpgradeCommand } from "../upgrade-BEfZJU4K.js";
|
|
18
18
|
import { Command } from "commander";
|
|
19
19
|
import { fileURLToPath } from "url";
|
|
20
20
|
import { dirname, join, resolve } from "path";
|
|
@@ -624,11 +624,15 @@ const SubstrateConfigSchema = z.object({
|
|
|
624
624
|
supervisor_poll_interval_seconds: z.number().int().positive().optional(),
|
|
625
625
|
retry_budget: z.number().int().positive().optional(),
|
|
626
626
|
epics_path: z.string().optional(),
|
|
627
|
-
finalization: z.object({
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
627
|
+
finalization: z.object({
|
|
628
|
+
mode: z.enum([
|
|
629
|
+
"merge",
|
|
630
|
+
"branch",
|
|
631
|
+
"pr"
|
|
632
|
+
]).optional(),
|
|
633
|
+
merge_strategy: z.enum(["ff-only", "three-way"]).optional(),
|
|
634
|
+
epic_gate_command: z.string().optional()
|
|
635
|
+
}).strict().optional()
|
|
632
636
|
}).strict();
|
|
633
637
|
const PartialSubstrateConfigSchema = z.object({
|
|
634
638
|
config_format_version: z.enum(["1"]).optional(),
|
|
@@ -648,11 +652,15 @@ const PartialSubstrateConfigSchema = z.object({
|
|
|
648
652
|
supervisor_poll_interval_seconds: z.number().int().positive().optional(),
|
|
649
653
|
retry_budget: z.number().int().positive().optional(),
|
|
650
654
|
epics_path: z.string().optional(),
|
|
651
|
-
finalization: z.object({
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
655
|
+
finalization: z.object({
|
|
656
|
+
mode: z.enum([
|
|
657
|
+
"merge",
|
|
658
|
+
"branch",
|
|
659
|
+
"pr"
|
|
660
|
+
]).optional(),
|
|
661
|
+
merge_strategy: z.enum(["ff-only", "three-way"]).optional(),
|
|
662
|
+
epic_gate_command: z.string().optional()
|
|
663
|
+
}).strict().optional()
|
|
656
664
|
}).strict();
|
|
657
665
|
|
|
658
666
|
//#endregion
|
|
@@ -7062,7 +7070,7 @@ async function runStatusAction(options) {
|
|
|
7062
7070
|
logger$15.debug({ err }, "Work graph query failed, continuing without work graph data");
|
|
7063
7071
|
}
|
|
7064
7072
|
if (run === void 0) {
|
|
7065
|
-
const { inspectProcessTree: inspectProcessTree$1 } = await import("../health-
|
|
7073
|
+
const { inspectProcessTree: inspectProcessTree$1 } = await import("../health-Cm0aQCQL.js");
|
|
7066
7074
|
const substrateDirPath = join(projectRoot, ".substrate");
|
|
7067
7075
|
const processInfo = inspectProcessTree$1({
|
|
7068
7076
|
projectRoot,
|
|
@@ -8010,7 +8018,7 @@ function defaultSupervisorDeps() {
|
|
|
8010
8018
|
if (cached === null) {
|
|
8011
8019
|
const { AdapterRegistry: AR } = await import(
|
|
8012
8020
|
/* @vite-ignore */
|
|
8013
|
-
"../adapter-registry-
|
|
8021
|
+
"../adapter-registry-hLwwiJGM.js"
|
|
8014
8022
|
);
|
|
8015
8023
|
cached = new AR();
|
|
8016
8024
|
await cached.discoverAndRegister();
|
|
@@ -8577,11 +8585,11 @@ async function runSupervisorAction(options, deps = {}) {
|
|
|
8577
8585
|
try {
|
|
8578
8586
|
const { createExperimenter } = await import(
|
|
8579
8587
|
/* @vite-ignore */
|
|
8580
|
-
"../experimenter-
|
|
8588
|
+
"../experimenter-RnaEiLUD.js"
|
|
8581
8589
|
);
|
|
8582
8590
|
const { getLatestRun: getLatest } = await import(
|
|
8583
8591
|
/* @vite-ignore */
|
|
8584
|
-
"../decisions-
|
|
8592
|
+
"../decisions-DSDqOEN4.js"
|
|
8585
8593
|
);
|
|
8586
8594
|
const expAdapter = createDatabaseAdapter({
|
|
8587
8595
|
backend: "auto",
|
|
@@ -8591,7 +8599,7 @@ async function runSupervisorAction(options, deps = {}) {
|
|
|
8591
8599
|
await initSchema(expAdapter);
|
|
8592
8600
|
const { runRunAction: runPipeline } = await import(
|
|
8593
8601
|
/* @vite-ignore */
|
|
8594
|
-
"../run-
|
|
8602
|
+
"../run-BX-__EJm.js"
|
|
8595
8603
|
);
|
|
8596
8604
|
const runStoryFn = async (opts) => {
|
|
8597
8605
|
const exitCode = await runPipeline({
|
|
@@ -9116,7 +9124,7 @@ async function runMetricsAction(options) {
|
|
|
9116
9124
|
const routingConfigPath = join(dbDir, "routing.yml");
|
|
9117
9125
|
let routingConfig = null;
|
|
9118
9126
|
if (existsSync$1(routingConfigPath)) try {
|
|
9119
|
-
const { loadModelRoutingConfig } = await import("../routing-
|
|
9127
|
+
const { loadModelRoutingConfig } = await import("../routing-QBUaShFv.js");
|
|
9120
9128
|
routingConfig = loadModelRoutingConfig(routingConfigPath);
|
|
9121
9129
|
} catch {}
|
|
9122
9130
|
if (routingConfig === null) routingConfig = {
|
|
@@ -13442,8 +13450,8 @@ async function createProgram() {
|
|
|
13442
13450
|
/** Fire-and-forget startup version check (story 8.3, AC3/AC5) */
|
|
13443
13451
|
function checkForUpdatesInBackground(currentVersion) {
|
|
13444
13452
|
if (process.env.SUBSTRATE_NO_UPDATE_CHECK === "1") return;
|
|
13445
|
-
import("../upgrade-
|
|
13446
|
-
const { createVersionManager } = await import("../version-manager-impl-
|
|
13453
|
+
import("../upgrade-emlrK3YW.js").then(async () => {
|
|
13454
|
+
const { createVersionManager } = await import("../version-manager-impl-_x1n4xZk.js");
|
|
13447
13455
|
const vm = createVersionManager();
|
|
13448
13456
|
const result = await vm.checkForUpdates();
|
|
13449
13457
|
if (result.updateAvailable) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addTokenUsage, createDecision, createPipelineRun, createRequirement, getArtifactByTypeForRun, getArtifactsByRun, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestRun, getPipelineRunById, getRunningPipelineRuns, getTokenUsageSummary, listRequirements, registerArtifact, updateDecision, updatePipelineRun, updatePipelineRunConfig, upsertDecision } from "./dist-
|
|
1
|
+
import { addTokenUsage, createDecision, createPipelineRun, createRequirement, getArtifactByTypeForRun, getArtifactsByRun, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestRun, getPipelineRunById, getRunningPipelineRuns, getTokenUsageSummary, listRequirements, registerArtifact, updateDecision, updatePipelineRun, updatePipelineRunConfig, upsertDecision } from "./dist-CZk5SeSt.js";
|
|
2
2
|
import "./decisions-CzSIEeGP.js";
|
|
3
3
|
|
|
4
4
|
export { getLatestRun };
|
|
@@ -6252,11 +6252,15 @@ const SubstrateConfigSchema = z.object({
|
|
|
6252
6252
|
telemetry: TelemetryConfigSchema.optional(),
|
|
6253
6253
|
worktree: WorktreeConfigSchema.optional(),
|
|
6254
6254
|
trivialOutputThreshold: z.number().int().nonnegative().optional(),
|
|
6255
|
-
finalization: z.object({
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6259
|
-
|
|
6255
|
+
finalization: z.object({
|
|
6256
|
+
mode: z.enum([
|
|
6257
|
+
"merge",
|
|
6258
|
+
"branch",
|
|
6259
|
+
"pr"
|
|
6260
|
+
]).optional(),
|
|
6261
|
+
merge_strategy: z.enum(["ff-only", "three-way"]).optional(),
|
|
6262
|
+
epic_gate_command: z.string().optional()
|
|
6263
|
+
}).strict().optional()
|
|
6260
6264
|
}).passthrough();
|
|
6261
6265
|
const PartialProviderConfigSchema = ProviderConfigSchema.partial();
|
|
6262
6266
|
const PartialGlobalSettingsSchema = GlobalSettingsSchema.partial();
|
|
@@ -6274,11 +6278,15 @@ const PartialSubstrateConfigSchema = z.object({
|
|
|
6274
6278
|
telemetry: TelemetryConfigSchema.partial().optional(),
|
|
6275
6279
|
worktree: WorktreeConfigSchema.partial().optional(),
|
|
6276
6280
|
trivialOutputThreshold: z.number().int().nonnegative().optional(),
|
|
6277
|
-
finalization: z.object({
|
|
6278
|
-
|
|
6279
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
6281
|
+
finalization: z.object({
|
|
6282
|
+
mode: z.enum([
|
|
6283
|
+
"merge",
|
|
6284
|
+
"branch",
|
|
6285
|
+
"pr"
|
|
6286
|
+
]).optional(),
|
|
6287
|
+
merge_strategy: z.enum(["ff-only", "three-way"]).optional(),
|
|
6288
|
+
epic_gate_command: z.string().optional()
|
|
6289
|
+
}).strict().optional()
|
|
6282
6290
|
}).passthrough();
|
|
6283
6291
|
|
|
6284
6292
|
//#endregion
|
|
@@ -11646,4 +11654,4 @@ async function callLLM(params) {
|
|
|
11646
11654
|
|
|
11647
11655
|
//#endregion
|
|
11648
11656
|
export { ADVISORY_NOTES, AdapterRegistry, AdtError, BudgetConfigSchema, CLAUDE_AUTH_FAILURE_HINT, CODEX_SANDBOX_BLOCK_HINT, CURRENT_CONFIG_FORMAT_VERSION, CURRENT_TASK_GRAPH_VERSION, Categorizer, ClaudeCodeAdapter, CodexCLIAdapter, ConfigError, ConfigIncompatibleFormatError, ConsumerAnalyzer, CostTrackerConfigSchema, DEFAULT_CONFIG, DEFAULT_GLOBAL_SETTINGS, DispatcherImpl, DoltClient, DoltNotInstalled, DoltQueryError, ESCALATION_DIAGNOSIS, EXPERIMENT_RESULT, EfficiencyScorer, GeminiCLIAdapter, GlobalSettingsSchema, InMemoryDatabaseAdapter, IngestionServer, LEARNING_FINDING, LogTurnAnalyzer, ModelRoutingConfigSchema, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProviderPolicySchema, ProvidersSchema, Recommender, RoutingConfigError, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, STORY_METRICS, STORY_OUTCOME, SubstrateConfigSchema, TASK_TYPE_PHASE_MAP, TEST_EXPANSION_FINDING, TEST_PLAN, TelemetryConfigSchema, TelemetryNormalizer, TelemetryPipeline, TurnAnalyzer, VersionManagerImpl, addTokenUsage, aggregateTokenUsageForRun, aggregateTokenUsageForStory, buildAuditLogEntry, buildBranchName, buildModificationDirective, buildPRBody, buildWorktreePath, callLLM, checkDoltInstalled, classifyVersionGap, compareRunMetrics, createAmendmentRun, createConfigSystem, createDatabaseAdapter as createDatabaseAdapter$1, createDecision, createExperimenter, createPipelineRun, createRequirement, createStderrLogger, createVersionManager, detectClaudeAuthFailure, detectCodexSandboxBlock, detectInterfaceChanges, determineVerdict, getActiveDecisions, getAllCostEntriesFiltered, getArtifactByTypeForRun, getArtifactsByRun, getBaselineRunMetrics, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestCompletedRun, getLatestRun, getModelTier, getPipelineRunById, getPlanningCostTotal, getRetryableEscalations, getRunMetrics, getRunningPipelineRuns, getSessionCostSummary, getSessionCostSummaryFiltered, getStoryMetricsForRun, getTokenUsageSummary, incrementRunRestarts, initSchema, initWorkGraphSchema, initializeDolt, listRequirements, listRunMetrics, loadModelRoutingConfig, loadParentRunDecisions, registerArtifact, resolvePromptFile, supersedeDecision, swallowDebug, tagRunAsBaseline, updateDecision, updatePipelineRun, updatePipelineRunConfig, upsertDecision, writeRunMetrics, writeStoryMetrics };
|
|
11649
|
-
//# sourceMappingURL=dist-
|
|
11657
|
+
//# sourceMappingURL=dist-CZk5SeSt.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdtError } from "./dist-
|
|
1
|
+
import { AdtError } from "./dist-CZk5SeSt.js";
|
|
2
2
|
|
|
3
3
|
//#region src/core/errors.ts
|
|
4
4
|
/** Error thrown when task configuration is invalid */
|
|
@@ -71,4 +71,4 @@ var TaskGraphIncompatibleFormatError = class extends AdtError {
|
|
|
71
71
|
|
|
72
72
|
//#endregion
|
|
73
73
|
export { BudgetExceededError, GitError, RecoveryError, TaskConfigError, TaskGraphCycleError, TaskGraphError, TaskGraphIncompatibleFormatError, WorkerError, WorkerNotFoundError };
|
|
74
|
-
//# sourceMappingURL=errors-
|
|
74
|
+
//# sourceMappingURL=errors-_tbIg6Cv.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { buildAuditLogEntry, buildBranchName, buildModificationDirective, buildPRBody, buildWorktreePath, createExperimenter, determineVerdict, resolvePromptFile } from "./dist-
|
|
1
|
+
import { buildAuditLogEntry, buildBranchName, buildModificationDirective, buildPRBody, buildWorktreePath, createExperimenter, determineVerdict, resolvePromptFile } from "./dist-CZk5SeSt.js";
|
|
2
2
|
|
|
3
3
|
export { createExperimenter };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "./logger-KeHncl-f.js";
|
|
2
|
-
import { DoltClient, DoltQueryError, createDatabaseAdapter$1 as createDatabaseAdapter, getLatestRun, getPipelineRunById, initSchema } from "./dist-
|
|
3
|
-
import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-
|
|
2
|
+
import { DoltClient, DoltQueryError, createDatabaseAdapter$1 as createDatabaseAdapter, getLatestRun, getPipelineRunById, initSchema } from "./dist-CZk5SeSt.js";
|
|
3
|
+
import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-D6NAZgt8.js";
|
|
4
4
|
import { createRequire } from "module";
|
|
5
5
|
import { dirname, join } from "path";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -1000,4 +1000,4 @@ function registerHealthCommand(program, _version = "0.0.0", projectRoot = proces
|
|
|
1000
1000
|
|
|
1001
1001
|
//#endregion
|
|
1002
1002
|
export { BMAD_BASELINE_TOKENS_FULL, DEFAULT_STALL_THRESHOLD_SECONDS, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter$1 as createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, isOrchestratorProcessLine, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion, runHealthAction, validateStoryKey };
|
|
1003
|
-
//# sourceMappingURL=health-
|
|
1003
|
+
//# sourceMappingURL=health-Aqc5cghP.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-
|
|
1
|
+
import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-Aqc5cghP.js";
|
|
2
2
|
import "./logger-KeHncl-f.js";
|
|
3
|
-
import "./dist-
|
|
4
|
-
import "./manifest-read-
|
|
3
|
+
import "./dist-CZk5SeSt.js";
|
|
4
|
+
import "./manifest-read-D6NAZgt8.js";
|
|
5
5
|
import "./work-graph-repository-DZyJv5pV.js";
|
|
6
6
|
import "./decisions-CzSIEeGP.js";
|
|
7
7
|
|
|
@@ -298,6 +298,11 @@ declare const SubstrateConfigSchema: z.ZodObject<{
|
|
|
298
298
|
branch: "branch";
|
|
299
299
|
pr: "pr";
|
|
300
300
|
}>>;
|
|
301
|
+
merge_strategy: z.ZodOptional<z.ZodEnum<{
|
|
302
|
+
"ff-only": "ff-only";
|
|
303
|
+
"three-way": "three-way";
|
|
304
|
+
}>>;
|
|
305
|
+
epic_gate_command: z.ZodOptional<z.ZodString>;
|
|
301
306
|
}, z.core.$strict>>;
|
|
302
307
|
}, z.core.$loose>;
|
|
303
308
|
type SubstrateConfig = z.infer<typeof SubstrateConfigSchema>; //#endregion
|
|
@@ -1591,4 +1596,4 @@ interface Recommendation {
|
|
|
1591
1596
|
|
|
1592
1597
|
//#endregion
|
|
1593
1598
|
export { AdapterDiscoveryResult, AdapterRegistry as AdapterRegistry$1, AdtError as AdtError$1, ClaudeCodeAdapter as ClaudeCodeAdapter$1, CodexCLIAdapter as CodexCLIAdapter$1, ConfigError as ConfigError$1, ConfigIncompatibleFormatError as ConfigIncompatibleFormatError$1, CoreEvents, DatabaseAdapter, DiscoveryReport, GeminiCLIAdapter as GeminiCLIAdapter$1, Recommendation, TypedEventBus };
|
|
1594
|
-
//# sourceMappingURL=index-
|
|
1599
|
+
//# sourceMappingURL=index-CvNLhgKV.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdapterDiscoveryResult, AdapterRegistry$1 as AdapterRegistry, AdtError$1 as AdtError, ClaudeCodeAdapter$1 as ClaudeCodeAdapter, CodexCLIAdapter$1 as CodexCLIAdapter, ConfigError$1 as ConfigError, ConfigIncompatibleFormatError$1 as ConfigIncompatibleFormatError, DiscoveryReport, GeminiCLIAdapter$1 as GeminiCLIAdapter, Recommendation, TypedEventBus } from "./index-
|
|
1
|
+
import { AdapterDiscoveryResult, AdapterRegistry$1 as AdapterRegistry, AdtError$1 as AdtError, ClaudeCodeAdapter$1 as ClaudeCodeAdapter, CodexCLIAdapter$1 as CodexCLIAdapter, ConfigError$1 as ConfigError, ConfigIncompatibleFormatError$1 as ConfigIncompatibleFormatError, DiscoveryReport, GeminiCLIAdapter$1 as GeminiCLIAdapter, Recommendation, TypedEventBus } from "./index-CvNLhgKV.js";
|
|
2
2
|
import pino from "pino";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { Readable, Writable } from "node:stream";
|
|
@@ -1074,6 +1074,11 @@ declare const SubstrateConfigSchema: z.ZodObject<{
|
|
|
1074
1074
|
branch: "branch";
|
|
1075
1075
|
pr: "pr";
|
|
1076
1076
|
}>>;
|
|
1077
|
+
merge_strategy: z.ZodOptional<z.ZodEnum<{
|
|
1078
|
+
"ff-only": "ff-only";
|
|
1079
|
+
"three-way": "three-way";
|
|
1080
|
+
}>>;
|
|
1081
|
+
epic_gate_command: z.ZodOptional<z.ZodString>;
|
|
1077
1082
|
}, z.core.$strict>>;
|
|
1078
1083
|
}, z.core.$strict>;
|
|
1079
1084
|
type SubstrateConfig = z.infer<typeof SubstrateConfigSchema>;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { childLogger, createLogger, logger } from "./logger-KeHncl-f.js";
|
|
2
2
|
import { assertDefined, createEventBus, createTuiApp, deepClone, formatDuration, generateId, isPlainObject, isTuiCapable, printNonTtyWarning, sleep, withRetry } from "./helpers-CElYrONe.js";
|
|
3
|
-
import { AdapterRegistry, AdtError, ClaudeCodeAdapter, CodexCLIAdapter, ConfigError, ConfigIncompatibleFormatError, GeminiCLIAdapter } from "./dist-
|
|
3
|
+
import { AdapterRegistry, AdtError, ClaudeCodeAdapter, CodexCLIAdapter, ConfigError, ConfigIncompatibleFormatError, GeminiCLIAdapter } from "./dist-CZk5SeSt.js";
|
|
4
4
|
import "./adapter-registry-DIcrxjH8.js";
|
|
5
|
-
import { BudgetExceededError, GitError, RecoveryError, TaskConfigError, TaskGraphCycleError, TaskGraphError, TaskGraphIncompatibleFormatError, WorkerError, WorkerNotFoundError } from "./errors-
|
|
5
|
+
import { BudgetExceededError, GitError, RecoveryError, TaskConfigError, TaskGraphCycleError, TaskGraphError, TaskGraphIncompatibleFormatError, WorkerError, WorkerNotFoundError } from "./errors-_tbIg6Cv.js";
|
|
6
6
|
|
|
7
7
|
//#region src/core/di.ts
|
|
8
8
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "./logger-KeHncl-f.js";
|
|
2
|
-
import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-
|
|
2
|
+
import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-D6NAZgt8.js";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
5
5
|
import * as readline from "node:readline";
|
|
@@ -180,4 +180,4 @@ async function runInteractivePrompt(decisionContext) {
|
|
|
180
180
|
|
|
181
181
|
//#endregion
|
|
182
182
|
export { runInteractivePrompt };
|
|
183
|
-
//# sourceMappingURL=interactive-prompt-
|
|
183
|
+
//# sourceMappingURL=interactive-prompt-BLkX0iE_.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "./logger-KeHncl-f.js";
|
|
2
|
-
import { LEARNING_FINDING, createDecision, getDecisionsByCategory } from "./dist-
|
|
2
|
+
import { LEARNING_FINDING, createDecision, getDecisionsByCategory } from "./dist-CZk5SeSt.js";
|
|
3
3
|
import * as path$1 from "path";
|
|
4
4
|
import { join } from "path";
|
|
5
5
|
import { readFile } from "fs/promises";
|
|
@@ -6300,4 +6300,4 @@ async function resolveRunManifest(dbRoot, runId) {
|
|
|
6300
6300
|
|
|
6301
6301
|
//#endregion
|
|
6302
6302
|
export { FindingsInjector, RunManifest, RuntimeProbeListSchema, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, applyConfigToGraph, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, extractTargetFilesFromStoryContent, parseRuntimeProbes, readCurrentRunId, renderFindings, resolveGraphPath, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runStaleVerificationRecovery };
|
|
6303
|
-
//# sourceMappingURL=manifest-read-
|
|
6303
|
+
//# sourceMappingURL=manifest-read-D6NAZgt8.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../../logger-KeHncl-f.js";
|
|
2
|
-
import "../../dist-
|
|
3
|
-
import "../../manifest-read-
|
|
4
|
-
import { runInteractivePrompt } from "../../interactive-prompt-
|
|
2
|
+
import "../../dist-CZk5SeSt.js";
|
|
3
|
+
import "../../manifest-read-D6NAZgt8.js";
|
|
4
|
+
import { runInteractivePrompt } from "../../interactive-prompt-BLkX0iE_.js";
|
|
5
5
|
|
|
6
6
|
export { runInteractivePrompt };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModelRoutingConfigSchema, ProviderPolicySchema, RoutingConfigError, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, TASK_TYPE_PHASE_MAP, getModelTier, loadModelRoutingConfig } from "./dist-
|
|
1
|
+
import { ModelRoutingConfigSchema, ProviderPolicySchema, RoutingConfigError, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, TASK_TYPE_PHASE_MAP, getModelTier, loadModelRoutingConfig } from "./dist-CZk5SeSt.js";
|
|
2
2
|
import "./routing-DFxoKHDt.js";
|
|
3
3
|
|
|
4
4
|
export { loadModelRoutingConfig };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { BMAD_BASELINE_TOKENS_FULL, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter, formatOutput, formatPipelineSummary, formatTokenTelemetry, inspectProcessTree, parseDbTimestampAsUtc, validateStoryKey } from "./health-
|
|
1
|
+
import { BMAD_BASELINE_TOKENS_FULL, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter, formatOutput, formatPipelineSummary, formatTokenTelemetry, inspectProcessTree, parseDbTimestampAsUtc, validateStoryKey } from "./health-Aqc5cghP.js";
|
|
2
2
|
import { createLogger } from "./logger-KeHncl-f.js";
|
|
3
3
|
import { TypedEventBusImpl, createEventBus, createTuiApp, isTuiCapable, printNonTtyWarning, sleep } from "./helpers-CElYrONe.js";
|
|
4
|
-
import { ADVISORY_NOTES, CLAUDE_AUTH_FAILURE_HINT, CODEX_SANDBOX_BLOCK_HINT, Categorizer, ConsumerAnalyzer, DEFAULT_GLOBAL_SETTINGS, DispatcherImpl, DoltClient, ESCALATION_DIAGNOSIS, EXPERIMENT_RESULT, EfficiencyScorer, IngestionServer, LogTurnAnalyzer, OPERATIONAL_FINDING, Recommender, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, STORY_METRICS, STORY_OUTCOME, SubstrateConfigSchema, TEST_EXPANSION_FINDING, TEST_PLAN, TelemetryNormalizer, TelemetryPipeline, TurnAnalyzer, addTokenUsage, aggregateTokenUsageForRun, aggregateTokenUsageForStory, callLLM, classifyVersionGap, createConfigSystem, createDatabaseAdapter$1, createDecision, createPipelineRun, createRequirement, createStderrLogger, detectClaudeAuthFailure, detectCodexSandboxBlock, detectInterfaceChanges, getArtifactByTypeForRun, getArtifactsByRun, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestRun, getPipelineRunById, getRunMetrics, getRunningPipelineRuns, getStoryMetricsForRun, getTokenUsageSummary, initSchema, listRequirements, loadModelRoutingConfig, registerArtifact, swallowDebug, updatePipelineRun, updatePipelineRunConfig, upsertDecision, writeRunMetrics, writeStoryMetrics } from "./dist-
|
|
5
|
-
import { FindingsInjector, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, extractTargetFilesFromStoryContent, parseRuntimeProbes, renderFindings, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery } from "./manifest-read-
|
|
4
|
+
import { ADVISORY_NOTES, CLAUDE_AUTH_FAILURE_HINT, CODEX_SANDBOX_BLOCK_HINT, Categorizer, ConsumerAnalyzer, DEFAULT_GLOBAL_SETTINGS, DispatcherImpl, DoltClient, ESCALATION_DIAGNOSIS, EXPERIMENT_RESULT, EfficiencyScorer, IngestionServer, LogTurnAnalyzer, OPERATIONAL_FINDING, Recommender, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, STORY_METRICS, STORY_OUTCOME, SubstrateConfigSchema, TEST_EXPANSION_FINDING, TEST_PLAN, TelemetryNormalizer, TelemetryPipeline, TurnAnalyzer, addTokenUsage, aggregateTokenUsageForRun, aggregateTokenUsageForStory, callLLM, classifyVersionGap, createConfigSystem, createDatabaseAdapter$1, createDecision, createPipelineRun, createRequirement, createStderrLogger, detectClaudeAuthFailure, detectCodexSandboxBlock, detectInterfaceChanges, getArtifactByTypeForRun, getArtifactsByRun, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestRun, getPipelineRunById, getRunMetrics, getRunningPipelineRuns, getStoryMetricsForRun, getTokenUsageSummary, initSchema, listRequirements, loadModelRoutingConfig, registerArtifact, swallowDebug, updatePipelineRun, updatePipelineRunConfig, upsertDecision, writeRunMetrics, writeStoryMetrics } from "./dist-CZk5SeSt.js";
|
|
5
|
+
import { FindingsInjector, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, extractTargetFilesFromStoryContent, parseRuntimeProbes, renderFindings, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery } from "./manifest-read-D6NAZgt8.js";
|
|
6
6
|
import { WorkGraphRepository, detectCycles } from "./work-graph-repository-DZyJv5pV.js";
|
|
7
7
|
import { deriveExitCode, routeDecision } from "./decision-router-BAPpON_C.js";
|
|
8
|
-
import { runInteractivePrompt } from "./interactive-prompt-
|
|
8
|
+
import { runInteractivePrompt } from "./interactive-prompt-BLkX0iE_.js";
|
|
9
9
|
import { runRecoveryEngine } from "./recovery-engine-BKGBeBnW.js";
|
|
10
10
|
import { basename, dirname, extname, join } from "path";
|
|
11
11
|
import { access, readFile, readdir, stat } from "fs/promises";
|
|
@@ -9606,11 +9606,26 @@ const logger$16 = createLogger("compiled-workflows:merge-to-main");
|
|
|
9606
9606
|
*/
|
|
9607
9607
|
async function runMergeToMain(params) {
|
|
9608
9608
|
const { storyKey, branchName, startBranch, worktreeManager, eventBus, projectRoot } = params;
|
|
9609
|
+
const mergeStrategy = params.mergeStrategy ?? "ff-only";
|
|
9609
9610
|
logger$16.info({
|
|
9610
9611
|
storyKey,
|
|
9611
9612
|
branchName,
|
|
9612
|
-
startBranch
|
|
9613
|
+
startBranch,
|
|
9614
|
+
mergeStrategy
|
|
9613
9615
|
}, "Starting merge-to-main phase");
|
|
9616
|
+
const dirtiedFiles = listParentDirtyIntersection(branchName, startBranch, projectRoot);
|
|
9617
|
+
if (dirtiedFiles.length > 0) {
|
|
9618
|
+
logger$16.warn({
|
|
9619
|
+
storyKey,
|
|
9620
|
+
branchName,
|
|
9621
|
+
dirtiedFiles
|
|
9622
|
+
}, "parent working tree has uncommitted changes to files in the story diff — refusing to merge");
|
|
9623
|
+
return {
|
|
9624
|
+
success: false,
|
|
9625
|
+
reason: "parent-tree-dirtied-by-run",
|
|
9626
|
+
dirtiedFiles
|
|
9627
|
+
};
|
|
9628
|
+
}
|
|
9614
9629
|
const ffSuccess = tryFfMerge(branchName, projectRoot);
|
|
9615
9630
|
if (ffSuccess) {
|
|
9616
9631
|
logger$16.info({
|
|
@@ -9620,6 +9635,17 @@ async function runMergeToMain(params) {
|
|
|
9620
9635
|
await cleanupAfterSuccessfulMerge(storyKey, branchName, worktreeManager, projectRoot);
|
|
9621
9636
|
return { success: true };
|
|
9622
9637
|
}
|
|
9638
|
+
if (mergeStrategy === "ff-only") {
|
|
9639
|
+
logger$16.warn({
|
|
9640
|
+
storyKey,
|
|
9641
|
+
branchName,
|
|
9642
|
+
startBranch
|
|
9643
|
+
}, "fast-forward not possible (base moved since the story branched) and merge_strategy is ff-only — refusing 3-way merge. Set finalization.merge_strategy: three-way to allow it (required for concurrent multi-story runs), or integrate the branch manually.");
|
|
9644
|
+
return {
|
|
9645
|
+
success: false,
|
|
9646
|
+
reason: "ff-only-merge-not-possible"
|
|
9647
|
+
};
|
|
9648
|
+
}
|
|
9623
9649
|
logger$16.info({
|
|
9624
9650
|
storyKey,
|
|
9625
9651
|
branchName
|
|
@@ -9651,6 +9677,47 @@ async function runMergeToMain(params) {
|
|
|
9651
9677
|
};
|
|
9652
9678
|
}
|
|
9653
9679
|
/**
|
|
9680
|
+
* H3.3 (AC1): files that are both dirty in the parent working tree and part of
|
|
9681
|
+
* the story branch's diff against the start branch. Best-effort: if either
|
|
9682
|
+
* git query fails, returns [] (the merge itself will surface genuine issues).
|
|
9683
|
+
*/
|
|
9684
|
+
function listParentDirtyIntersection(branchName, startBranch, projectRoot) {
|
|
9685
|
+
try {
|
|
9686
|
+
const statusOut = execFileSync("git", ["status", "--porcelain"], {
|
|
9687
|
+
cwd: projectRoot,
|
|
9688
|
+
encoding: "utf-8",
|
|
9689
|
+
stdio: [
|
|
9690
|
+
"ignore",
|
|
9691
|
+
"pipe",
|
|
9692
|
+
"pipe"
|
|
9693
|
+
]
|
|
9694
|
+
});
|
|
9695
|
+
const dirty = new Set(statusOut.split("\n").filter((line) => line.trim().length > 0).map((line) => {
|
|
9696
|
+
const body = line.slice(3).trim();
|
|
9697
|
+
const arrow = body.indexOf(" -> ");
|
|
9698
|
+
return arrow === -1 ? body : body.slice(arrow + 4);
|
|
9699
|
+
}));
|
|
9700
|
+
if (dirty.size === 0) return [];
|
|
9701
|
+
const diffOut = execFileSync("git", [
|
|
9702
|
+
"diff",
|
|
9703
|
+
"--name-only",
|
|
9704
|
+
`${startBranch}...${branchName}`
|
|
9705
|
+
], {
|
|
9706
|
+
cwd: projectRoot,
|
|
9707
|
+
encoding: "utf-8",
|
|
9708
|
+
stdio: [
|
|
9709
|
+
"ignore",
|
|
9710
|
+
"pipe",
|
|
9711
|
+
"pipe"
|
|
9712
|
+
]
|
|
9713
|
+
});
|
|
9714
|
+
return diffOut.split("\n").filter((f$1) => f$1.trim().length > 0).filter((f$1) => dirty.has(f$1));
|
|
9715
|
+
} catch (err) {
|
|
9716
|
+
logger$16.warn({ err }, "parent-clean precondition check failed (best-effort) — proceeding to merge");
|
|
9717
|
+
return [];
|
|
9718
|
+
}
|
|
9719
|
+
}
|
|
9720
|
+
/**
|
|
9654
9721
|
* Attempt a fast-forward merge of `branchName` into the current branch.
|
|
9655
9722
|
*
|
|
9656
9723
|
* @param branchName - Branch to merge
|
|
@@ -16746,6 +16813,63 @@ function createImplementationOrchestrator(deps) {
|
|
|
16746
16813
|
}, "merge-to-main pre-flight verification failed — proceeding with merge phase");
|
|
16747
16814
|
}
|
|
16748
16815
|
const finalizationMode = config.finalizationMode ?? "merge";
|
|
16816
|
+
const epicGateCommand = config.epicGateCommand;
|
|
16817
|
+
if (epicGateCommand !== void 0 && epicGateCommand.trim() !== "" && finalizationMode !== "branch") {
|
|
16818
|
+
const epicOf = (key) => key.includes("-") ? key.slice(0, key.lastIndexOf("-")) : key;
|
|
16819
|
+
const epicId = epicOf(storyKey);
|
|
16820
|
+
const TERMINAL_PHASES = ["COMPLETE", "ESCALATED"];
|
|
16821
|
+
const isLastOfEpic = [..._stories.entries()].filter(([key]) => key !== storyKey && epicOf(key) === epicId).every(([, st]) => TERMINAL_PHASES.includes(st.phase));
|
|
16822
|
+
if (isLastOfEpic) {
|
|
16823
|
+
logger$27.info({
|
|
16824
|
+
storyKey,
|
|
16825
|
+
epicId,
|
|
16826
|
+
epicGateCommand
|
|
16827
|
+
}, "H3.4: last story of epic — running epic gate command");
|
|
16828
|
+
let gateOutput = "";
|
|
16829
|
+
let gatePassed = false;
|
|
16830
|
+
try {
|
|
16831
|
+
gateOutput = execSync(epicGateCommand, {
|
|
16832
|
+
cwd: projectRoot,
|
|
16833
|
+
encoding: "utf-8",
|
|
16834
|
+
stdio: [
|
|
16835
|
+
"ignore",
|
|
16836
|
+
"pipe",
|
|
16837
|
+
"pipe"
|
|
16838
|
+
],
|
|
16839
|
+
timeout: 6e5,
|
|
16840
|
+
maxBuffer: 10 * 1024 * 1024
|
|
16841
|
+
});
|
|
16842
|
+
gatePassed = true;
|
|
16843
|
+
} catch (gateCmdErr) {
|
|
16844
|
+
const e = gateCmdErr;
|
|
16845
|
+
gateOutput = `${e.stdout ?? ""}${e.stderr ?? ""}`.trim() || (e.message ?? String(gateCmdErr));
|
|
16846
|
+
}
|
|
16847
|
+
if (!gatePassed) {
|
|
16848
|
+
logger$27.error({
|
|
16849
|
+
storyKey,
|
|
16850
|
+
epicId,
|
|
16851
|
+
output: gateOutput.slice(0, 500)
|
|
16852
|
+
}, "H3.4: epic gate command failed — halting finalization; branch preserved");
|
|
16853
|
+
updateStory(storyKey, {
|
|
16854
|
+
phase: "ESCALATED",
|
|
16855
|
+
error: "epic-gate-failed",
|
|
16856
|
+
completedAt: new Date().toISOString()
|
|
16857
|
+
});
|
|
16858
|
+
await emitEscalation({
|
|
16859
|
+
storyKey,
|
|
16860
|
+
lastVerdict: "epic-gate-failed",
|
|
16861
|
+
reviewCycles: completedReviewCycles,
|
|
16862
|
+
issues: [`epic gate command failed for epic ${epicId} (last story ${storyKey}): \`${epicGateCommand}\`\noutput (truncated):\n${gateOutput.slice(0, 4e3)}`]
|
|
16863
|
+
});
|
|
16864
|
+
await persistState();
|
|
16865
|
+
return "terminal";
|
|
16866
|
+
}
|
|
16867
|
+
logger$27.info({
|
|
16868
|
+
storyKey,
|
|
16869
|
+
epicId
|
|
16870
|
+
}, "H3.4: epic gate passed");
|
|
16871
|
+
}
|
|
16872
|
+
}
|
|
16749
16873
|
if (finalizationMode === "branch" || finalizationMode === "pr") {
|
|
16750
16874
|
let prUrl;
|
|
16751
16875
|
if (finalizationMode === "pr") try {
|
|
@@ -16822,7 +16946,8 @@ function createImplementationOrchestrator(deps) {
|
|
|
16822
16946
|
startBranch: _orchestratorStartBranch,
|
|
16823
16947
|
worktreeManager: _worktreeManager,
|
|
16824
16948
|
eventBus,
|
|
16825
|
-
projectRoot
|
|
16949
|
+
projectRoot,
|
|
16950
|
+
mergeStrategy: config.mergeStrategy ?? "ff-only"
|
|
16826
16951
|
});
|
|
16827
16952
|
} catch (mergeErr) {
|
|
16828
16953
|
const errMsg = mergeErr instanceof Error ? mergeErr.message : String(mergeErr);
|
|
@@ -16845,21 +16970,28 @@ function createImplementationOrchestrator(deps) {
|
|
|
16845
16970
|
return "terminal";
|
|
16846
16971
|
}
|
|
16847
16972
|
if (!mergeResult.success) {
|
|
16973
|
+
const failReason = mergeResult.reason ?? "merge-conflict-detected";
|
|
16974
|
+
const issues = [];
|
|
16975
|
+
if (failReason === "parent-tree-dirtied-by-run") issues.push(`parent working tree has uncommitted changes to ${mergeResult.dirtiedFiles?.length ?? 0} file(s) the story also modified: ${(mergeResult.dirtiedFiles ?? []).join(", ")} — merging would entangle unreviewed parent edits with verified story content. Commit or stash the parent changes, then merge ${branchName} manually.`);
|
|
16976
|
+
else if (failReason === "ff-only-merge-not-possible") issues.push(`${_orchestratorStartBranch ?? "the start branch"} moved since ${branchName} was created and merge_strategy is ff-only — substrate will not synthesize a merge commit. Set finalization.merge_strategy: three-way (required for concurrent multi-story runs) or integrate the branch manually.`);
|
|
16977
|
+
else issues.push(`merge conflict in ${mergeResult.conflictingFiles?.length ?? 0} file(s): ${(mergeResult.conflictingFiles ?? []).join(", ")}`);
|
|
16848
16978
|
logger$27.warn({
|
|
16849
16979
|
storyKey,
|
|
16850
16980
|
branchName,
|
|
16851
|
-
|
|
16852
|
-
|
|
16981
|
+
reason: failReason,
|
|
16982
|
+
conflictingFiles: mergeResult.conflictingFiles,
|
|
16983
|
+
dirtiedFiles: mergeResult.dirtiedFiles
|
|
16984
|
+
}, `merge-to-main failed — escalating story with ${failReason}`);
|
|
16853
16985
|
updateStory(storyKey, {
|
|
16854
16986
|
phase: "ESCALATED",
|
|
16855
|
-
error:
|
|
16987
|
+
error: failReason,
|
|
16856
16988
|
completedAt: new Date().toISOString()
|
|
16857
16989
|
});
|
|
16858
16990
|
await emitEscalation({
|
|
16859
16991
|
storyKey,
|
|
16860
|
-
lastVerdict:
|
|
16992
|
+
lastVerdict: failReason,
|
|
16861
16993
|
reviewCycles: completedReviewCycles,
|
|
16862
|
-
issues
|
|
16994
|
+
issues
|
|
16863
16995
|
});
|
|
16864
16996
|
await persistState();
|
|
16865
16997
|
return "terminal";
|
|
@@ -18116,7 +18248,13 @@ function createImplementationOrchestrator(deps) {
|
|
|
18116
18248
|
}).trim();
|
|
18117
18249
|
logger$27.info({ orchestratorStartBranch: _orchestratorStartBranch }, "Captured orchestrator start branch for merge-to-main");
|
|
18118
18250
|
} catch (branchErr) {
|
|
18119
|
-
|
|
18251
|
+
if (config.noWorktree !== true) {
|
|
18252
|
+
logger$27.error({ err: branchErr }, "FATAL: failed to capture the orchestrator start branch (git rev-parse --abbrev-ref HEAD). Worktree finalization cannot work without it. Fix git in the project root or re-run with --no-worktree.");
|
|
18253
|
+
_state = "FAILED";
|
|
18254
|
+
_completedAt = new Date().toISOString();
|
|
18255
|
+
return getStatus();
|
|
18256
|
+
}
|
|
18257
|
+
logger$27.warn({ err: branchErr }, "Failed to capture orchestrator start branch — merge-to-main will skip worktree integration (--no-worktree run)");
|
|
18120
18258
|
}
|
|
18121
18259
|
for (const key of storyKeys) {
|
|
18122
18260
|
const pendingState = {
|
|
@@ -46953,6 +47091,8 @@ async function runRunAction(options) {
|
|
|
46953
47091
|
let meshProjectId;
|
|
46954
47092
|
let configRetryBudget;
|
|
46955
47093
|
let configFinalizationMode;
|
|
47094
|
+
let configMergeStrategy;
|
|
47095
|
+
let configEpicGateCommand;
|
|
46956
47096
|
let configWorktreeCopyFiles;
|
|
46957
47097
|
try {
|
|
46958
47098
|
const configSystem = createConfigSystem({ projectConfigDir: dbDir });
|
|
@@ -46980,6 +47120,8 @@ async function runRunAction(options) {
|
|
|
46980
47120
|
}
|
|
46981
47121
|
if (typeof cfg.retry_budget === "number") configRetryBudget = cfg.retry_budget;
|
|
46982
47122
|
if (cfg.finalization?.mode !== void 0) configFinalizationMode = cfg.finalization.mode;
|
|
47123
|
+
if (cfg.finalization?.merge_strategy !== void 0) configMergeStrategy = cfg.finalization.merge_strategy;
|
|
47124
|
+
if (cfg.finalization?.epic_gate_command !== void 0) configEpicGateCommand = cfg.finalization.epic_gate_command;
|
|
46983
47125
|
if (Array.isArray(cfg.worktree?.copy_files) && cfg.worktree.copy_files.length > 0) {
|
|
46984
47126
|
configWorktreeCopyFiles = [...cfg.worktree.copy_files];
|
|
46985
47127
|
logger.info({ copyFiles: configWorktreeCopyFiles }, "Loaded worktree.copy_files from config");
|
|
@@ -47080,6 +47222,8 @@ async function runRunAction(options) {
|
|
|
47080
47222
|
agentId,
|
|
47081
47223
|
...noWorktree === true ? { noWorktree: true } : {},
|
|
47082
47224
|
...finalization !== void 0 ? { finalizationMode: finalization } : configFinalizationMode !== void 0 ? { finalizationMode: configFinalizationMode } : {},
|
|
47225
|
+
...configMergeStrategy !== void 0 ? { mergeStrategy: configMergeStrategy } : {},
|
|
47226
|
+
...configEpicGateCommand !== void 0 ? { epicGateCommand: configEpicGateCommand } : {},
|
|
47083
47227
|
...configWorktreeCopyFiles !== void 0 ? { worktreeCopyFiles: configWorktreeCopyFiles } : {}
|
|
47084
47228
|
});
|
|
47085
47229
|
let storyKeys = [...parsedStoryKeys];
|
|
@@ -47644,6 +47788,8 @@ async function runRunAction(options) {
|
|
|
47644
47788
|
probeAuthorStateIntegrating: resolvedProbeAuthorStateIntegrating,
|
|
47645
47789
|
...noWorktree === true ? { noWorktree: true } : {},
|
|
47646
47790
|
...finalization !== void 0 ? { finalizationMode: finalization } : configFinalizationMode !== void 0 ? { finalizationMode: configFinalizationMode } : {},
|
|
47791
|
+
...configMergeStrategy !== void 0 ? { mergeStrategy: configMergeStrategy } : {},
|
|
47792
|
+
...configEpicGateCommand !== void 0 ? { epicGateCommand: configEpicGateCommand } : {},
|
|
47647
47793
|
...configWorktreeCopyFiles !== void 0 ? { worktreeCopyFiles: configWorktreeCopyFiles } : {}
|
|
47648
47794
|
},
|
|
47649
47795
|
projectRoot,
|
|
@@ -47867,7 +48013,7 @@ async function runRunAction(options) {
|
|
|
47867
48013
|
}
|
|
47868
48014
|
}
|
|
47869
48015
|
async function runFullPipeline(options) {
|
|
47870
|
-
const { packName, packPath, dbDir, dbPath, startPhase, stopAfter, concept, concurrency, outputFormat, projectRoot, events: eventsFlag, skipUx, research: researchFlag, skipResearch: skipResearchFlag, skipPreflight, skipVerification, maxReviewCycles = 2, retryBudget, registry: injectedRegistry, tokenCeilings, stories: explicitStories, telemetryEnabled: fullTelemetryEnabled, telemetryPort: fullTelemetryPort, agentId, meshUrl: fpMeshUrl, meshProjectId: fpMeshProjectId, engineType: fpEngineType, probeAuthor, probeAuthorStateIntegrating: fpProbeAuthorStateIntegrating, noWorktree, worktreeCopyFiles: fpWorktreeCopyFiles, finalizationMode: fpFinalizationMode } = options;
|
|
48016
|
+
const { packName, packPath, dbDir, dbPath, startPhase, stopAfter, concept, concurrency, outputFormat, projectRoot, events: eventsFlag, skipUx, research: researchFlag, skipResearch: skipResearchFlag, skipPreflight, skipVerification, maxReviewCycles = 2, retryBudget, registry: injectedRegistry, tokenCeilings, stories: explicitStories, telemetryEnabled: fullTelemetryEnabled, telemetryPort: fullTelemetryPort, agentId, meshUrl: fpMeshUrl, meshProjectId: fpMeshProjectId, engineType: fpEngineType, probeAuthor, probeAuthorStateIntegrating: fpProbeAuthorStateIntegrating, noWorktree, worktreeCopyFiles: fpWorktreeCopyFiles, finalizationMode: fpFinalizationMode, mergeStrategy: fpMergeStrategy, epicGateCommand: fpEpicGateCommand } = options;
|
|
47871
48017
|
if (!existsSync$1(dbDir)) mkdirSync$1(dbDir, { recursive: true });
|
|
47872
48018
|
let doltServerFull = null;
|
|
47873
48019
|
try {
|
|
@@ -48178,6 +48324,8 @@ async function runFullPipeline(options) {
|
|
|
48178
48324
|
...fpProbeAuthorStateIntegrating !== void 0 ? { probeAuthorStateIntegrating: fpProbeAuthorStateIntegrating } : {},
|
|
48179
48325
|
...noWorktree === true ? { noWorktree: true } : {},
|
|
48180
48326
|
...fpFinalizationMode !== void 0 ? { finalizationMode: fpFinalizationMode } : {},
|
|
48327
|
+
...fpMergeStrategy !== void 0 ? { mergeStrategy: fpMergeStrategy } : {},
|
|
48328
|
+
...fpEpicGateCommand !== void 0 ? { epicGateCommand: fpEpicGateCommand } : {},
|
|
48181
48329
|
...fpWorktreeCopyFiles !== void 0 ? { worktreeCopyFiles: fpWorktreeCopyFiles } : {}
|
|
48182
48330
|
},
|
|
48183
48331
|
projectRoot,
|
|
@@ -48348,7 +48496,7 @@ async function runFullPipeline(options) {
|
|
|
48348
48496
|
*/
|
|
48349
48497
|
async function emitPreDispatchVersionAdvisory(currentVersion) {
|
|
48350
48498
|
if (process.env["SUBSTRATE_NO_UPDATE_CHECK"] === "1") return;
|
|
48351
|
-
const { createVersionManager } = await import("./version-manager-impl-
|
|
48499
|
+
const { createVersionManager } = await import("./version-manager-impl-_x1n4xZk.js");
|
|
48352
48500
|
const vm = createVersionManager();
|
|
48353
48501
|
const result = await vm.checkForUpdates(true);
|
|
48354
48502
|
const gap = classifyVersionGap(currentVersion, result.latestVersion);
|
|
@@ -48455,4 +48603,4 @@ function registerRunCommand(program, version = "0.0.0", projectRoot = process.cw
|
|
|
48455
48603
|
|
|
48456
48604
|
//#endregion
|
|
48457
48605
|
export { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR$1 as GLOBSTAR, GitClient, GrammarLoader, Minimatch$1 as Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createGitWorktreeManager, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape$1 as escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, normalizeGraphSummaryToStatus, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runRunAction, runSolutioningPhase, unescape$1 as unescape, validateStopAfterFromConflict, wireNdjsonEmitter };
|
|
48458
|
-
//# sourceMappingURL=run-
|
|
48606
|
+
//# sourceMappingURL=run-B9DV9sro.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import "./health-
|
|
1
|
+
import "./health-Aqc5cghP.js";
|
|
2
2
|
import "./logger-KeHncl-f.js";
|
|
3
3
|
import "./helpers-CElYrONe.js";
|
|
4
|
-
import "./dist-
|
|
5
|
-
import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-
|
|
6
|
-
import "./manifest-read-
|
|
4
|
+
import "./dist-CZk5SeSt.js";
|
|
5
|
+
import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-B9DV9sro.js";
|
|
6
|
+
import "./manifest-read-D6NAZgt8.js";
|
|
7
7
|
import "./routing-DFxoKHDt.js";
|
|
8
8
|
import "./work-graph-repository-DZyJv5pV.js";
|
|
9
9
|
import "./decisions-CzSIEeGP.js";
|
|
10
10
|
import "./decision-router-BAPpON_C.js";
|
|
11
|
-
import "./interactive-prompt-
|
|
11
|
+
import "./interactive-prompt-BLkX0iE_.js";
|
|
12
12
|
import "./recovery-engine-BKGBeBnW.js";
|
|
13
13
|
|
|
14
14
|
export { runRunAction };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createVersionManager } from "./dist-
|
|
1
|
+
import { createVersionManager } from "./dist-CZk5SeSt.js";
|
|
2
2
|
import { execSync, spawn } from "child_process";
|
|
3
3
|
import * as readline from "readline";
|
|
4
4
|
|
|
@@ -123,4 +123,4 @@ function registerUpgradeCommand(program) {
|
|
|
123
123
|
|
|
124
124
|
//#endregion
|
|
125
125
|
export { isGlobalInstall, registerUpgradeCommand, runUpgradeCommand };
|
|
126
|
-
//# sourceMappingURL=upgrade-
|
|
126
|
+
//# sourceMappingURL=upgrade-BEfZJU4K.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import "./dist-
|
|
1
|
+
import "./dist-CZk5SeSt.js";
|
|
2
2
|
import "./version-manager-impl-qFBiO4Eh.js";
|
|
3
|
-
import { isGlobalInstall, registerUpgradeCommand, runUpgradeCommand } from "./upgrade-
|
|
3
|
+
import { isGlobalInstall, registerUpgradeCommand, runUpgradeCommand } from "./upgrade-BEfZJU4K.js";
|
|
4
4
|
|
|
5
5
|
export { isGlobalInstall, registerUpgradeCommand, runUpgradeCommand };
|
package/package.json
CHANGED