substrate-ai 0.21.18 → 0.21.19

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
@@ -1,18 +1,18 @@
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-Bu5nYB6q.js";
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-CzbtBIx0.js";
3
3
  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, InMemoryDatabaseAdapter, IngestionServer, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProvidersSchema, RoutingRecommender, STORY_METRICS, TelemetryConfigSchema, addTokenUsage, aggregateTokenUsageForRun, checkDoltInstalled, compareRunMetrics, createAmendmentRun, createConfigSystem, createDecision, createGitWorktreeManager, 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-BZGqn-XQ.js";
6
6
  import "../adapter-registry-DXLMTmfD.js";
7
- import { ACCEPTANCE_CONTRACT_PROFILE_PATH, JOURNEY_CANDIDATE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, checkRegistryStaleness, clearGateDemotion, computePrecision, computeRecall, demoteGate, diffJourneySets, isProjectContainedPath, loadAcceptanceContractFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyCandidate, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, ratifyCandidate, readAcceptanceMetrics, readCurrentRunId, readGateState, readTrustedFileContent, recordCanary, recordOverride, renderRegistryDiff, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary } from "../manifest-read-leQdHLyo.js";
8
- import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-BXP4F8a2.js";
7
+ import { ACCEPTANCE_CONTRACT_PROFILE_PATH, JOURNEY_CANDIDATE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, checkRegistryStaleness, clearGateDemotion, computePrecision, computeRecall, demoteGate, diffJourneySets, isProjectContainedPath, loadAcceptanceContractFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyCandidate, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, ratifyCandidate, readAcceptanceMetrics, readCurrentRunId, readGateState, readTrustedFileContent, recordCanary, recordOverride, renderRegistryDiff, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary } from "../manifest-read-B80k9pb_.js";
8
+ import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-BYySwmdu.js";
9
9
  import "../errors-xSeGw6pf.js";
10
10
  import { AcceptanceCompletenessResultSchema, AcceptanceDeriveResultSchema, assemblePrompt, getTokenCeiling, runAcceptanceJudge } from "../acceptance-judge-COyOxhQ2.js";
11
11
  import "../routing-DZT5PN3N.js";
12
12
  import { WorkGraphRepository } from "../work-graph-repository-4cKsf8Lf.js";
13
13
  import "../decisions-BAaxpVD0.js";
14
14
  import "../decision-router-Dyby0fUf.js";
15
- import "../interactive-prompt-BbeQO4mm.js";
15
+ import "../interactive-prompt-DVX_J6Mp.js";
16
16
  import "../recovery-engine-dtLHyV4M.js";
17
17
  import "../version-manager-impl-DMTw551Q.js";
18
18
  import { registerUpgradeCommand } from "../upgrade-CNGc12AV.js";
@@ -7138,7 +7138,7 @@ async function runStatusAction(options) {
7138
7138
  logger$17.debug({ err }, "Work graph query failed, continuing without work graph data");
7139
7139
  }
7140
7140
  if (run === void 0) {
7141
- const { inspectProcessTree: inspectProcessTree$1 } = await import("../health-4VCoTtz_.js");
7141
+ const { inspectProcessTree: inspectProcessTree$1 } = await import("../health-Dn_4DY__.js");
7142
7142
  const substrateDirPath = join(projectRoot, ".substrate");
7143
7143
  const processInfo = inspectProcessTree$1({
7144
7144
  projectRoot,
@@ -8668,7 +8668,7 @@ async function runSupervisorAction(options, deps = {}) {
8668
8668
  await initSchema(expAdapter);
8669
8669
  const { runRunAction: runPipeline } = await import(
8670
8670
  /* @vite-ignore */
8671
- "../run-CTfGK9yU.js"
8671
+ "../run-In1WjgGG.js"
8672
8672
  );
8673
8673
  const runStoryFn = async (opts) => {
8674
8674
  const exitCode = await runPipeline({
@@ -13603,6 +13603,37 @@ async function runAcceptanceDerive(deps, params) {
13603
13603
  //#region src/modules/compiled-workflows/acceptance-completeness.ts
13604
13604
  const logger$1 = createLogger("compiled-workflows:acceptance-completeness");
13605
13605
  const SOURCE_CONTENT_CAP = 12e4;
13606
+ /**
13607
+ * Generic actor/domain words that appear across nearly every journey title —
13608
+ * excluded from the F2 registered-disposition cross-check so a shared
13609
+ * "operator"/"user" doesn't let an unrelated id launder a journey.
13610
+ */
13611
+ const GENERIC_JOURNEY_TOKENS = new Set([
13612
+ "operator",
13613
+ "user",
13614
+ "users",
13615
+ "system",
13616
+ "admin",
13617
+ "customer",
13618
+ "client",
13619
+ "receives",
13620
+ "receive",
13621
+ "views",
13622
+ "view",
13623
+ "gets",
13624
+ "sees",
13625
+ "runs",
13626
+ "uses",
13627
+ "page",
13628
+ "data",
13629
+ "their",
13630
+ "them",
13631
+ "from",
13632
+ "with",
13633
+ "into",
13634
+ "when",
13635
+ "then"
13636
+ ]);
13606
13637
  function normalizeForGrounding(s) {
13607
13638
  return s.replace(/\s+/g, " ").trim().toLowerCase();
13608
13639
  }
@@ -13615,23 +13646,48 @@ function normalizeForGrounding(s) {
13615
13646
  * 120k-char document ground trivially, fabrications don't)
13616
13647
  */
13617
13648
  function validateCompletenessClaims(claims, registry, prdContent) {
13618
- const registered = new Set(registry.journeys.map((j) => j.id));
13649
+ const registeredById = new Map(registry.journeys.map((j) => [j.id, j]));
13619
13650
  const excluded = new Set((registry.provenance?.excluded ?? []).map((e) => e.candidate));
13620
- const haystack = ` ${normalizeForGrounding(prdContent)} `;
13651
+ const haystack = normalizeForGrounding(prdContent);
13621
13652
  for (const claim of claims) {
13653
+ let citedJourneyTitle;
13622
13654
  if (claim.disposition === "registered") {
13623
- if (claim.registry_ref === void 0 || !registered.has(claim.registry_ref)) return `claim "${claim.description}" says registered but cites no real registry id (got ${JSON.stringify(claim.registry_ref)})`;
13655
+ const journey = claim.registry_ref !== void 0 ? registeredById.get(claim.registry_ref) : void 0;
13656
+ if (journey === void 0) return `claim "${claim.description}" says registered but cites no real registry id (got ${JSON.stringify(claim.registry_ref)})`;
13657
+ citedJourneyTitle = journey.title;
13624
13658
  }
13625
13659
  if (claim.disposition === "excluded") {
13626
13660
  if (claim.registry_ref === void 0 || !excluded.has(claim.registry_ref)) return `claim "${claim.description}" says excluded but cites no real exclusion candidate (got ${JSON.stringify(claim.registry_ref)})`;
13627
13661
  }
13628
- const tokens = normalizeForGrounding(claim.prd_span).split(" ").map((t) => t.replace(/[^a-z0-9]/g, "")).filter((t) => t.length >= 4);
13629
- if (tokens.length < 2) return `claim "${claim.description}" cites too thin a prd_span ("${claim.prd_span}") quote a substantive span of the document`;
13630
- const present = tokens.filter((t) => haystack.includes(t)).length;
13631
- if (present / tokens.length < .6) return `claim "${claim.description}" prd_span does not appear in the document (only ${String(present)}/${String(tokens.length)} tokens present — fabricated citation?)`;
13662
+ const normSpan = normalizeForGrounding(claim.prd_span);
13663
+ const spanTokens = normSpan.split(" ").map((t) => t.replace(/[^a-z0-9]/g, "")).filter((t) => t.length >= 3);
13664
+ if (spanTokens.length < 3) return `claim "${claim.description}" cites too thin a prd_span ("${claim.prd_span}") quote a substantive span (a full phrase) of the document`;
13665
+ const present = spanTokens.filter((t) => haystack.includes(t)).length;
13666
+ if (present / spanTokens.length < .6) return `claim "${claim.description}" prd_span does not appear in the document (only ${String(present)}/${String(spanTokens.length)} tokens present — fabricated citation?)`;
13667
+ if (!hasContiguousAnchor(spanTokens, haystack)) return `claim "${claim.description}" prd_span has no contiguous fragment in the document ("${claim.prd_span.slice(0, 80)}…" — assembled from scattered words rather than quoted?)`;
13668
+ if (citedJourneyTitle !== void 0) {
13669
+ const alnum = (s) => normalizeForGrounding(s).split(" ").map((t) => t.replace(/[^a-z0-9]/g, "")).filter((t) => t.length >= 4);
13670
+ const titleTokens = new Set(alnum(citedJourneyTitle).filter((t) => !GENERIC_JOURNEY_TOKENS.has(t)));
13671
+ const claimTokens = new Set([...alnum(claim.description), ...alnum(claim.prd_span)]);
13672
+ const overlaps = [...titleTokens].some((t) => claimTokens.has(t));
13673
+ if (titleTokens.size > 0 && !overlaps) return `claim "${claim.description}" is marked registered→${claim.registry_ref ?? ""} but shares no distinctive language with that journey's title ("${citedJourneyTitle}") — a registered disposition must be about the journey it cites (possible undispositioned-suppression)`;
13674
+ }
13632
13675
  }
13633
13676
  return void 0;
13634
13677
  }
13678
+ /**
13679
+ * Anti-fabrication anchor (RP5.1 F4, corpus-calibrated): at least ONE
13680
+ * contiguous 3-token run of the span must appear in the document. A real
13681
+ * quote/near-quote always retains some intact fragment; F4's attack (a span
13682
+ * assembled from individually-common words) has none. Deliberately lenient —
13683
+ * a single 3-gram, not a majority contiguous run — because the checker's
13684
+ * findings are advisory and false positives burn operator trust (F7).
13685
+ */
13686
+ function hasContiguousAnchor(spanTokens, haystack) {
13687
+ if (spanTokens.length < 3) return false;
13688
+ for (let i = 0; i + 3 <= spanTokens.length; i++) if (haystack.includes(spanTokens.slice(i, i + 3).join(" "))) return true;
13689
+ return false;
13690
+ }
13635
13691
  function renderRegistryForPrompt(registry) {
13636
13692
  const journeys = registry.journeys.map((j) => `- id: ${j.id}\n title: ${j.title}\n criticality: ${j.criticality}`).join("\n");
13637
13693
  const excluded = (registry.provenance?.excluded ?? []).map((e) => `- candidate: ${e.candidate}\n reason: ${e.reason}`).join("\n");
@@ -14247,6 +14303,11 @@ function registerAcceptanceCommand(program, version, registry) {
14247
14303
  } catch {
14248
14304
  existingRegistry = void 0;
14249
14305
  }
14306
+ if (!isProjectContainedPath(candidate.derived_from)) {
14307
+ process.stdout.write(`acceptance ratify: candidate derived_from "${candidate.derived_from}" resolves outside the project — refusing to ratify\n`);
14308
+ process.exit(ACCEPTANCE_EXIT_ERROR);
14309
+ return;
14310
+ }
14250
14311
  let sourceContent;
14251
14312
  try {
14252
14313
  sourceContent = await readFile$1(join$1(projectRoot, candidate.derived_from), "utf-8");
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from "./logger-KeHncl-f.js";
2
2
  import { DoltClient, DoltQueryError, createDatabaseAdapter$1 as createDatabaseAdapter, getLatestRun, getPipelineRunById, initSchema } from "./dist-BZGqn-XQ.js";
3
- import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-leQdHLyo.js";
3
+ import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-B80k9pb_.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-Bu5nYB6q.js.map
1003
+ //# sourceMappingURL=health-CzbtBIx0.js.map
@@ -1,7 +1,7 @@
1
- import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-Bu5nYB6q.js";
1
+ import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-CzbtBIx0.js";
2
2
  import "./logger-KeHncl-f.js";
3
3
  import "./dist-BZGqn-XQ.js";
4
- import "./manifest-read-leQdHLyo.js";
4
+ import "./manifest-read-B80k9pb_.js";
5
5
  import "./work-graph-repository-4cKsf8Lf.js";
6
6
  import "./decisions-BAaxpVD0.js";
7
7
 
@@ -1,5 +1,5 @@
1
1
  import { createLogger } from "./logger-KeHncl-f.js";
2
- import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-leQdHLyo.js";
2
+ import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-B80k9pb_.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-BbeQO4mm.js.map
183
+ //# sourceMappingURL=interactive-prompt-DVX_J6Mp.js.map
@@ -5558,8 +5558,9 @@ function endStatesEqual(a, b) {
5558
5558
  es.walk,
5559
5559
  es.then
5560
5560
  ]);
5561
- const aKeys = new Set(a.map(key));
5562
- return b.every((es) => aKeys.has(key(es)));
5561
+ const aKeys = a.map(key).sort();
5562
+ const bKeys = b.map(key).sort();
5563
+ return aKeys.every((k, i) => k === bKeys[i]);
5563
5564
  }
5564
5565
  /**
5565
5566
  * Diff the current registry's journeys against a candidate's. Field-level on
@@ -7787,4 +7788,4 @@ async function resolveRunManifest(dbRoot, runId) {
7787
7788
 
7788
7789
  //#endregion
7789
7790
  export { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_CANDIDATE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, RuntimeProbeListSchema, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, applyConfigToGraph, checkRegistryStaleness, clearGateDemotion, computeJourneyCoverage, computePrecision, computeRecall, computeUndispositioned, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, demoteGate, detectsEventDrivenAC, detectsStateIntegratingAC, diffJourneySets, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, isProjectContainedPath, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyCandidate, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, parseStoryFrontmatter, ratifyCandidate, readAcceptanceMetrics, readCurrentRunId, readGateState, readTrustedFileContent, recordCanary, recordCriticalFail, recordOverride, renderFindings, renderRegistryDiff, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary, runStaleVerificationRecovery, summarizeCoverage };
7790
- //# sourceMappingURL=manifest-read-leQdHLyo.js.map
7791
+ //# sourceMappingURL=manifest-read-B80k9pb_.js.map
@@ -1,6 +1,6 @@
1
1
  import "../../logger-KeHncl-f.js";
2
2
  import "../../dist-BZGqn-XQ.js";
3
- import "../../manifest-read-leQdHLyo.js";
4
- import { runInteractivePrompt } from "../../interactive-prompt-BbeQO4mm.js";
3
+ import "../../manifest-read-B80k9pb_.js";
4
+ import { runInteractivePrompt } from "../../interactive-prompt-DVX_J6Mp.js";
5
5
 
6
6
  export { runInteractivePrompt };
@@ -1,12 +1,12 @@
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-Bu5nYB6q.js";
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-CzbtBIx0.js";
2
2
  import { createLogger } from "./logger-KeHncl-f.js";
3
3
  import { TypedEventBusImpl, createEventBus, createTuiApp, isTuiCapable, printNonTtyWarning, sleep } from "./helpers-CElYrONe.js";
4
4
  import { ADVISORY_NOTES, BRANCH_PREFIX, 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, createGitWorktreeManager, createPipelineRun, createRequirement, 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-BZGqn-XQ.js";
5
- import { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_CANDIDATE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, checkRegistryStaleness, computeJourneyCoverage, computeUndispositioned, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, isProjectContainedPath, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromTrustedTree, parseJourneyRegistry, parseRuntimeProbes, parseStoryFrontmatter, readTrustedFileContent, recordCriticalFail, renderFindings, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery, summarizeCoverage } from "./manifest-read-leQdHLyo.js";
5
+ import { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_CANDIDATE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, checkRegistryStaleness, computeJourneyCoverage, computeUndispositioned, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, isProjectContainedPath, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromTrustedTree, parseJourneyRegistry, parseRuntimeProbes, parseStoryFrontmatter, readTrustedFileContent, recordCriticalFail, renderFindings, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery, summarizeCoverage } from "./manifest-read-B80k9pb_.js";
6
6
  import { CodeReviewResultSchema, CreateStoryResultSchema, DevStoryResultSchema, ProbeAuthorResultSchema, TestExpansionResultSchema, TestPlanResultSchema, assemblePrompt, countTokens, getTokenCeiling, runAcceptanceJudge, truncateToTokens } from "./acceptance-judge-COyOxhQ2.js";
7
7
  import { WorkGraphRepository, detectCycles } from "./work-graph-repository-4cKsf8Lf.js";
8
8
  import { deriveExitCode, routeDecision } from "./decision-router-Dyby0fUf.js";
9
- import { runInteractivePrompt } from "./interactive-prompt-BbeQO4mm.js";
9
+ import { runInteractivePrompt } from "./interactive-prompt-DVX_J6Mp.js";
10
10
  import { runRecoveryEngine } from "./recovery-engine-dtLHyV4M.js";
11
11
  import { basename, dirname, extname, join } from "path";
12
12
  import { access, readFile, readdir, stat } from "fs/promises";
@@ -48619,4 +48619,4 @@ function registerRunCommand(program, version = "0.0.0", projectRoot = process.cw
48619
48619
 
48620
48620
  //#endregion
48621
48621
  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, 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 };
48622
- //# sourceMappingURL=run-BXP4F8a2.js.map
48622
+ //# sourceMappingURL=run-BYySwmdu.js.map
@@ -1,15 +1,15 @@
1
- import "./health-Bu5nYB6q.js";
1
+ import "./health-CzbtBIx0.js";
2
2
  import "./logger-KeHncl-f.js";
3
3
  import "./helpers-CElYrONe.js";
4
4
  import "./dist-BZGqn-XQ.js";
5
- import "./manifest-read-leQdHLyo.js";
6
- import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-BXP4F8a2.js";
5
+ import "./manifest-read-B80k9pb_.js";
6
+ import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-BYySwmdu.js";
7
7
  import "./acceptance-judge-COyOxhQ2.js";
8
8
  import "./routing-DZT5PN3N.js";
9
9
  import "./work-graph-repository-4cKsf8Lf.js";
10
10
  import "./decisions-BAaxpVD0.js";
11
11
  import "./decision-router-Dyby0fUf.js";
12
- import "./interactive-prompt-BbeQO4mm.js";
12
+ import "./interactive-prompt-DVX_J6Mp.js";
13
13
  import "./recovery-engine-dtLHyV4M.js";
14
14
 
15
15
  export { runRunAction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "substrate-ai",
3
- "version": "0.21.18",
3
+ "version": "0.21.19",
4
4
  "description": "Substrate — multi-agent orchestration daemon for AI coding agents",
5
5
  "type": "module",
6
6
  "license": "MIT",