@delete101020/aidlc 4.0.45 → 4.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/bundle.js +74 -4
  2. package/package.json +1 -1
package/dist/bundle.js CHANGED
@@ -21157,6 +21157,7 @@ var require_runProgress = __commonJS({
21157
21157
  exports2.isStepOptional = isStepOptional;
21158
21158
  exports2.deriveRunProgress = deriveRunProgress;
21159
21159
  exports2.isRunComplete = isRunComplete2;
21160
+ exports2.nextRunnableStep = nextRunnableStep;
21160
21161
  exports2.weighStepProgress = weighStepProgress2;
21161
21162
  var WorkspaceSchema_1 = require_WorkspaceSchema();
21162
21163
  var ACTIVE = /* @__PURE__ */ new Set([
@@ -21228,6 +21229,48 @@ var require_runProgress = __commonJS({
21228
21229
  return s.status === "rejected" || s.status === "pending";
21229
21230
  });
21230
21231
  }
21232
+ function nextRunnableStep(state, pipeline, untilIdx = -1) {
21233
+ if (!usesDag(pipeline)) {
21234
+ return state.currentStepIdx;
21235
+ }
21236
+ const skipped = deadEndPeersOfApproved(state, pipeline);
21237
+ if (untilIdx >= 0) {
21238
+ skipped.delete(untilIdx);
21239
+ const onPath = ancestorsOf(pipeline, untilIdx);
21240
+ onPath.add(untilIdx);
21241
+ state.steps.forEach((_, i) => {
21242
+ if (!onPath.has(i)) {
21243
+ skipped.add(i);
21244
+ }
21245
+ });
21246
+ }
21247
+ const runnable = (i) => isActiveStatus(state.steps[i]?.status ?? "pending") && !skipped.has(i);
21248
+ if (runnable(state.currentStepIdx)) {
21249
+ return state.currentStepIdx;
21250
+ }
21251
+ return state.steps.findIndex((_, i) => runnable(i));
21252
+ }
21253
+ function ancestorsOf(pipeline, idx) {
21254
+ const normalized = pipeline.steps.map(WorkspaceSchema_1.normalizeStep);
21255
+ const idxByDagId = /* @__PURE__ */ new Map();
21256
+ normalized.forEach((s, i) => {
21257
+ idxByDagId.set(s.name ?? s.agent, i);
21258
+ });
21259
+ const found = /* @__PURE__ */ new Set();
21260
+ const queue = [idx];
21261
+ while (queue.length > 0) {
21262
+ const cur = queue.pop();
21263
+ for (const dep of normalized[cur]?.depends_on ?? []) {
21264
+ const di = idxByDagId.get(dep);
21265
+ if (di === void 0 || found.has(di) || di === idx) {
21266
+ continue;
21267
+ }
21268
+ found.add(di);
21269
+ queue.push(di);
21270
+ }
21271
+ }
21272
+ return found;
21273
+ }
21231
21274
  function deadEndPeersOfApproved(state, pipeline) {
21232
21275
  const normalized = state.steps.map((s, i) => (0, WorkspaceSchema_1.normalizeStep)(pipeline.steps[i] ?? { agent: s.agent }));
21233
21276
  const ids = normalized.map((n) => n.name ?? n.agent);
@@ -32468,6 +32511,26 @@ var require_execEngine = __commonJS({
32468
32511
  hooks.onRunFailed?.("Run failed.");
32469
32512
  return { kind: "error" };
32470
32513
  }
32514
+ const atIdx = state.currentStepIdx;
32515
+ if (state.steps[atIdx] && state.steps[atIdx].status !== "rejected") {
32516
+ const pick = (0, runProgress_1.nextRunnableStep)(state, initialPipeline, untilIdx);
32517
+ if (pick >= 0 && pick !== atIdx) {
32518
+ hooks.onStepBypassed?.({
32519
+ stepIdx: atIdx,
32520
+ label: stepLabel3(state.steps[atIdx]),
32521
+ nextStepIdx: pick,
32522
+ nextLabel: stepLabel3(state.steps[pick]),
32523
+ runId
32524
+ });
32525
+ state.currentStepIdx = pick;
32526
+ if (!opts.dryRun) {
32527
+ persist(root, state);
32528
+ }
32529
+ } else if (pick < 0 && untilIdx >= 0 && (0, runProgress_1.isActiveStatus)(state.steps[atIdx].status)) {
32530
+ hooks.onUntilStop?.({ untilIdx });
32531
+ return { kind: "until" };
32532
+ }
32533
+ }
32471
32534
  const step = state.steps[state.currentStepIdx];
32472
32535
  if (step.status === "awaiting_auto_review") {
32473
32536
  const proceed = await runAutoReviewStep(root, runId, hooks);
@@ -35463,9 +35526,9 @@ var require_dist = __commonJS({
35463
35526
  exports2.readUserConfig = exports2.readGitUserName = exports2.ensureUserConfigIgnored = exports2.USER_CONFIG_RELPATH = exports2.USER_CONFIG_IGNORE_LINE = exports2.suggestEpicId = exports2.resolveEpicIdPrefixChain = exports2.resolveEpicIdPrefix = exports2.epicIdDateStamp = exports2.deriveEpicIdPrefix = exports2.EPIC_ID_PREFIX_PATTERN = exports2.EPIC_ID_PREFIX_KEY = exports2.resolveArtifactLanguage = exports2.commandBodyPredatesArtifactLanguage = exports2.artifactLanguageSection = exports2.ARTIFACT_LANGUAGE_HEADING = exports2.stripPersonaDirectives = exports2.composeAgentPrompt = exports2.PROJECT_INSTRUCTION_FILES = exports2.findProjectInstructions = exports2.stripPersonaMetadata = exports2.PersonaLoader = exports2.SkillNotFoundError = exports2.SkillLoader = exports2.EnvVarMissingError = exports2.EnvResolver = exports2.epicPipelineReport = exports2.planEpicPipelineExtraction = exports2.epicOwningPipeline = exports2.unstageEpicPipeline = exports2.stageEpicPipeline = exports2.writeEpicPipelines = exports2.splitEpicPipelines = exports2.mergeEpicPipelines = exports2.epicPipelinePath = exports2.EPIC_PIPELINE_FILENAME = exports2.unusedAfterStepRemoval = exports2.skillReferences = exports2.agentReferences = exports2.renameSkillRefs = exports2.renameAgentRefs = exports2.dropRecipesForPipeline = exports2.dropRecipeStep = exports2.recipesDrawingFrom = exports2.WORKSPACE_DIR = exports2.WORKSPACE_FILENAME = exports2.WorkspaceParseError = exports2.WorkspaceNotFoundError = exports2.WorkspaceLoader = exports2.renderPlanMarkdown = void 0;
35464
35527
  exports2.hasEmptyCiChecks = exports2.findApprovalGate = exports2.autopilotPreflight = exports2.STOP_GRACE_MS = exports2.stopProcessTree = exports2.stopOnAbort = exports2.processGroupSpawnOptions = exports2.claudeModelArg = exports2.DefaultRunner = exports2.RunnerRegistry = exports2.targetPath = exports2.scopePaths = exports2.discoverAssets = exports2.commandBodyIsStale = exports2.readEpicTags = exports2.normalizeTags = exports2.normalizeTag = exports2.epicMatchesTags = exports2.applyTagEdit = exports2.MAX_TAG_LENGTH = exports2.EPIC_TAGS_KEY = exports2.inheritedContextNote = exports2.INHERITED_CONTEXT_MARKER = exports2.strictModeSection = exports2.resolveEpicStrictMode = exports2.epicStrictMode = exports2.commandBodyPredatesStrictMode = exports2.STRICT_MODE_KEY = exports2.STRICT_MODE_HEADING = exports2.setEpicWatched = exports2.setEpicListFlat = exports2.setEpicSort = exports2.setActiveEpic = exports2.recordEpicOpened = exports2.readEpicListFlat = exports2.readEpicSort = exports2.readEpicFocus = exports2.pushRecent = exports2.epicSortFrom = exports2.epicIdFromBranch = exports2.epicFocusFrom = exports2.WATCHED_EPICS_KEY = exports2.RECENT_EPICS_LIMIT = exports2.RECENT_EPICS_KEY = exports2.EPIC_LIST_FLAT_KEY = exports2.EPIC_SORT_KEY = exports2.ACTIVE_EPIC_KEY = exports2.writeUserEpicIdPrefix = exports2.userConfigPath = exports2.updateUserConfig = void 0;
35465
35528
  exports2.isRunComplete = exports2.deriveRunProgress = exports2.PipelineRunError = exports2.retryAutoReview = exports2.submitAutoReviewVerdict = exports2.dirtyUpstreamOf = exports2.rerunApprovedStep = exports2.canRerunApprovedStep = exports2.recordLaunchFeedback = exports2.chooseStepModel = exports2.chooseStepSkill = exports2.requestStepUpdate = exports2.rerunStep = exports2.rejectStep = exports2.approveStep = exports2.undoStepDone = exports2.canUndoStepDone = exports2.markStepDone = exports2.canStartStep = exports2.startRun = exports2.activateBackendFromWorkspace = exports2.activateRunStateBackend = exports2.resolveRunStateBackend = exports2.GitRunStateStore = exports2.RUN_ID_PATTERN = exports2.FileRunStateStore = exports2.RunStateStore = exports2.harnessCapabilities = exports2.NO_HARNESS_CAPABILITIES = exports2.RunnerValidationError = exports2.validateRunnerExport = exports2.CustomRunnerLoader = exports2.buildClaudeSpawnEnv = exports2.hasClaudeLogin = exports2.isInsideClaudeCodeSession = exports2.createJsonSink = exports2.createLineSink = exports2.isCodexMcpConfigured = exports2.codexConfigPath = exports2.readProjectMcpServer = exports2.mcpRegistrarFor = exports2.codexMcpRegistrar = exports2.claudeMcpRegistrar = exports2.copilotMcpConfig = exports2.copilotGraphServer = exports2.CopilotRunner = exports2.CodexRunner = exports2.AUTOPILOT_ENV = exports2.APPROVAL_GATE_SCRIPT = exports2.emptyCiChecksMessage = void 0;
35466
- exports2.FAST_MODEL = exports2.CODING_MODEL = exports2.PLANNING_MODEL = exports2.isBuiltinPreset = exports2.BUILTIN_PRESET_IDS = exports2.writeBuiltinAutoReviewValidators = exports2.resolvePrimaryStack = exports2.getSdlcArtifactTemplates = exports2.getBuiltinArtifactTemplates = exports2.phaseArtifactFileName = exports2.sdlcClaudeCommand = exports2.builtinClaudeCommand = exports2.loadAllBuiltinPresets = exports2.loadBuiltinPreset = exports2.planRecipeMigration = exports2.getBuiltinRecipeSummaries = exports2.getAllBuiltinPipelineSummaries = exports2.getSdlcBuiltinPipelineSummary = exports2.getBuiltinPipelineSummary = exports2.getBuiltinWorkflowByPipelineId = exports2.getBuiltinWorkflow = exports2.workflowSlug = exports2.builtinTemplatesRoot = exports2.pipelineCommandId = exports2.PHASES = exports2.BUILTIN_WORKFLOWS = exports2.withBackfilledStepNames = exports2.describeDrift = exports2.reconcileRunSteps = exports2.RUN_STATE_SCHEMA_VERSION = exports2.migrateRunState = exports2.stepIdentity = exports2.resolvePath = exports2.AutoReviewerError = exports2.runAutoReview = exports2.renderRunReport = exports2.verifyRun = exports2.stepLabel = exports2.runExecLoop = exports2.estimateCostUsd = exports2.providerAliases = exports2.ratesFromConfig = exports2.mergeRates = exports2.BUILTIN_RATES = exports2.unchangedProduces = exports2.snapshotProduces = exports2.checkBudget = exports2.weighStepProgress = exports2.isActiveStatus = exports2.isStepOptional = void 0;
35467
- exports2.setClaudeConfigDir = exports2.resolveDeclaredPath = exports2.expandHome = exports2.ProfileLoadError = exports2.UnknownStandardError = exports2.builtinProfiles = exports2.loadActiveProfile = exports2.loadProfile = exports2.listProfileManifests = exports2.resolveStandard = exports2.workspaceStandard = exports2.isBuiltinProfileId = exports2.ProfileSchema = exports2.TRACE_RULES = exports2.PROFILES_DIR = exports2.DEFAULT_PROFILE_ID = exports2.BUILTIN_PROFILE_IDS = exports2.setEpicMemoryHook = exports2.isEpicMemoryHookEnabled = exports2.installAnnotationTools = exports2.relativeEpicRoot = exports2.provisionDeclaredWorkflows = exports2.provisionWorkflowFiles = exports2.writeWorkflowArtifactTemplates = exports2.writeWorkflowCommands = exports2.provisionShortcutDocs = exports2.writeTwoLayerCommands = exports2.shortcutCommandDoc = exports2.backboneCommandDoc = exports2.unprovisionedPhases = exports2.nextEligiblePhase = exports2.resolveComposition = exports2.shortcutCommandId = exports2.getCanonicalPhase = exports2.isCanonicalPhase = exports2.BACKBONE_COMMAND_ID = exports2.CANONICAL_PHASE_IDS = exports2.CANONICAL_PHASES = exports2.renderTemplate = exports2.DEFAULT_GLOBAL_WORKFLOW_IDS = exports2.detectGlobalBuiltinSource = exports2.uninstallWorkflowGlobalsByIds = exports2.isWorkflowGloballyInstalled = exports2.installWorkflowGlobalsByIds = exports2.installGlobalDefaults = exports2.stepModelOptions = exports2.pickAgentModel = exports2.resolveProviderModel = exports2.isClaudeTierAlias = exports2.CLAUDE_TIER_ALIASES = void 0;
35468
- exports2.AIDLC_CORE_VERSION = exports2.AIDLC_CLI_GUIDE_TEXT = exports2.AIDLC_KNOWLEDGE = exports2.clearResolveCommandCache = exports2.resolveCommand = exports2.remapClaudePath = exports2.claudeConfigEnv = exports2.claudeJsonPath = exports2.isDefaultClaudeConfigDir = exports2.claudeConfigDir = exports2.resolveClaudeConfigDir = exports2.defaultClaudeConfigDir = exports2.getClaudeConfigDirOverride = void 0;
35529
+ exports2.CODING_MODEL = exports2.PLANNING_MODEL = exports2.isBuiltinPreset = exports2.BUILTIN_PRESET_IDS = exports2.writeBuiltinAutoReviewValidators = exports2.resolvePrimaryStack = exports2.getSdlcArtifactTemplates = exports2.getBuiltinArtifactTemplates = exports2.phaseArtifactFileName = exports2.sdlcClaudeCommand = exports2.builtinClaudeCommand = exports2.loadAllBuiltinPresets = exports2.loadBuiltinPreset = exports2.planRecipeMigration = exports2.getBuiltinRecipeSummaries = exports2.getAllBuiltinPipelineSummaries = exports2.getSdlcBuiltinPipelineSummary = exports2.getBuiltinPipelineSummary = exports2.getBuiltinWorkflowByPipelineId = exports2.getBuiltinWorkflow = exports2.workflowSlug = exports2.builtinTemplatesRoot = exports2.pipelineCommandId = exports2.PHASES = exports2.BUILTIN_WORKFLOWS = exports2.withBackfilledStepNames = exports2.describeDrift = exports2.reconcileRunSteps = exports2.RUN_STATE_SCHEMA_VERSION = exports2.migrateRunState = exports2.stepIdentity = exports2.resolvePath = exports2.AutoReviewerError = exports2.runAutoReview = exports2.renderRunReport = exports2.verifyRun = exports2.stepLabel = exports2.runExecLoop = exports2.estimateCostUsd = exports2.providerAliases = exports2.ratesFromConfig = exports2.mergeRates = exports2.BUILTIN_RATES = exports2.unchangedProduces = exports2.snapshotProduces = exports2.checkBudget = exports2.weighStepProgress = exports2.nextRunnableStep = exports2.isActiveStatus = exports2.isStepOptional = void 0;
35530
+ exports2.resolveDeclaredPath = exports2.expandHome = exports2.ProfileLoadError = exports2.UnknownStandardError = exports2.builtinProfiles = exports2.loadActiveProfile = exports2.loadProfile = exports2.listProfileManifests = exports2.resolveStandard = exports2.workspaceStandard = exports2.isBuiltinProfileId = exports2.ProfileSchema = exports2.TRACE_RULES = exports2.PROFILES_DIR = exports2.DEFAULT_PROFILE_ID = exports2.BUILTIN_PROFILE_IDS = exports2.setEpicMemoryHook = exports2.isEpicMemoryHookEnabled = exports2.installAnnotationTools = exports2.relativeEpicRoot = exports2.provisionDeclaredWorkflows = exports2.provisionWorkflowFiles = exports2.writeWorkflowArtifactTemplates = exports2.writeWorkflowCommands = exports2.provisionShortcutDocs = exports2.writeTwoLayerCommands = exports2.shortcutCommandDoc = exports2.backboneCommandDoc = exports2.unprovisionedPhases = exports2.nextEligiblePhase = exports2.resolveComposition = exports2.shortcutCommandId = exports2.getCanonicalPhase = exports2.isCanonicalPhase = exports2.BACKBONE_COMMAND_ID = exports2.CANONICAL_PHASE_IDS = exports2.CANONICAL_PHASES = exports2.renderTemplate = exports2.DEFAULT_GLOBAL_WORKFLOW_IDS = exports2.detectGlobalBuiltinSource = exports2.uninstallWorkflowGlobalsByIds = exports2.isWorkflowGloballyInstalled = exports2.installWorkflowGlobalsByIds = exports2.installGlobalDefaults = exports2.stepModelOptions = exports2.pickAgentModel = exports2.resolveProviderModel = exports2.isClaudeTierAlias = exports2.CLAUDE_TIER_ALIASES = exports2.FAST_MODEL = void 0;
35531
+ exports2.AIDLC_CORE_VERSION = exports2.AIDLC_CLI_GUIDE_TEXT = exports2.AIDLC_KNOWLEDGE = exports2.clearResolveCommandCache = exports2.resolveCommand = exports2.remapClaudePath = exports2.claudeConfigEnv = exports2.claudeJsonPath = exports2.isDefaultClaudeConfigDir = exports2.claudeConfigDir = exports2.resolveClaudeConfigDir = exports2.defaultClaudeConfigDir = exports2.getClaudeConfigDirOverride = exports2.setClaudeConfigDir = void 0;
35469
35532
  var WorkspaceSchema_1 = require_WorkspaceSchema();
35470
35533
  Object.defineProperty(exports2, "WorkspaceSchema", { enumerable: true, get: function() {
35471
35534
  return WorkspaceSchema_1.WorkspaceSchema;
@@ -36272,6 +36335,9 @@ var require_dist = __commonJS({
36272
36335
  Object.defineProperty(exports2, "isActiveStatus", { enumerable: true, get: function() {
36273
36336
  return runProgress_1.isActiveStatus;
36274
36337
  } });
36338
+ Object.defineProperty(exports2, "nextRunnableStep", { enumerable: true, get: function() {
36339
+ return runProgress_1.nextRunnableStep;
36340
+ } });
36275
36341
  Object.defineProperty(exports2, "weighStepProgress", { enumerable: true, get: function() {
36276
36342
  return runProgress_1.weighStepProgress;
36277
36343
  } });
@@ -45293,7 +45359,7 @@ var require_package = __commonJS({
45293
45359
  "package.json"(exports2, module2) {
45294
45360
  module2.exports = {
45295
45361
  name: "@delete101020/aidlc",
45296
- version: "4.0.45",
45362
+ version: "4.0.46",
45297
45363
  description: "AIDLC Native CLI, a fork of AIDLC \u2014 drive Claude through the six-stage AI-Native SDLC Playbook: Plan \u2192 Design \u2192 Build \u2192 Test \u2192 Deploy \u2192 Maintain, with artifact gates, requirements traceability, an incident loop back to Plan, and Spec Kit support.",
45298
45364
  license: "MIT",
45299
45365
  repository: {
@@ -50599,6 +50665,10 @@ ${reason}`)),
50599
50665
  \u2933 Step "${e.label}" was rejected \u2014 carrying on.`) + import_chalk10.default.dim(` ${e.reason}`));
50600
50666
  info(import_chalk10.default.dim(` Want it back? aidlc run rerun ${e.runId} --step ${e.stepIdx}`));
50601
50667
  },
50668
+ onStepBypassed: (e) => {
50669
+ info(import_chalk10.default.dim(`
50670
+ \u2933 Not running "${e.label}" \u2014 the run does not need it here. Running "${e.nextLabel}" instead.`));
50671
+ },
50602
50672
  onAutoReviewStart: (e) => info(import_chalk10.default.bold(`
50603
50673
  \u{1F50D} Auto-review: "${e.label}"`)),
50604
50674
  onAutoReviewResult: (e) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delete101020/aidlc",
3
- "version": "4.0.45",
3
+ "version": "4.0.46",
4
4
  "description": "AIDLC Native CLI, a fork of AIDLC — drive Claude through the six-stage AI-Native SDLC Playbook: Plan → Design → Build → Test → Deploy → Maintain, with artifact gates, requirements traceability, an incident loop back to Plan, and Spec Kit support.",
5
5
  "license": "MIT",
6
6
  "repository": {