@delete101020/aidlc 4.0.44 → 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 +80 -9
  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);
@@ -21887,7 +21930,7 @@ ${route.note}` : verdict.reason;
21887
21930
  }
21888
21931
  const next = clone(state);
21889
21932
  delete next.sendBacks;
21890
- return advance(next, idx, pipeline);
21933
+ return advance(next, idx, pipeline, args.auto);
21891
21934
  }
21892
21935
  function rejectStep3(args) {
21893
21936
  const { state, reason, targetIdx, pipeline } = args;
@@ -22220,7 +22263,7 @@ ${route.note}` : verdict.reason;
22220
22263
  next.status = "running";
22221
22264
  return next;
22222
22265
  }
22223
- function advance(next, idx, pipeline) {
22266
+ function advance(next, idx, pipeline, auto) {
22224
22267
  const finishedAt = (/* @__PURE__ */ new Date()).toISOString();
22225
22268
  const approved = next.steps[idx];
22226
22269
  next.steps[idx] = {
@@ -22236,7 +22279,8 @@ ${route.note}` : verdict.reason;
22236
22279
  at: finishedAt,
22237
22280
  revision: approved.revision,
22238
22281
  ...approved.skill ? { skill: approved.skill } : {},
22239
- ...approved.chosenModel ? { model: approved.chosenModel } : {}
22282
+ ...approved.chosenModel ? { model: approved.chosenModel } : {},
22283
+ ...auto ? { auto: true } : {}
22240
22284
  })
22241
22285
  };
22242
22286
  const normalized = pipeline.steps.map(WorkspaceSchema_1.normalizeStep);
@@ -32467,6 +32511,26 @@ var require_execEngine = __commonJS({
32467
32511
  hooks.onRunFailed?.("Run failed.");
32468
32512
  return { kind: "error" };
32469
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
+ }
32470
32534
  const step = state.steps[state.currentStepIdx];
32471
32535
  if (step.status === "awaiting_auto_review") {
32472
32536
  const proceed = await runAutoReviewStep(root, runId, hooks);
@@ -33063,7 +33127,7 @@ About these inputs: ${(0, inheritedContext_1.inheritedContextNote)(epicRoot)}` :
33063
33127
  async function autoApproveStep(root, state, hooks) {
33064
33128
  const ws = WorkspaceLoader_1.WorkspaceLoader.load(root);
33065
33129
  const pipeline = ws.config.pipelines.find((p) => p.id === state.pipelineId);
33066
- const next = { ...(0, PipelineRunner_1.approveStep)({ state, pipeline }), sendBacks: state.sendBacks };
33130
+ const next = { ...(0, PipelineRunner_1.approveStep)({ state, pipeline, auto: true }), sendBacks: state.sendBacks };
33067
33131
  persist(root, next, state);
33068
33132
  hooks.onAutoApproved?.({ agent: state.steps[state.currentStepIdx].agent, label: stepLabel3(state.steps[state.currentStepIdx]) });
33069
33133
  }
@@ -33232,7 +33296,7 @@ var require_runReport = __commonJS({
33232
33296
  case "auto_review":
33233
33297
  return ` - \u{1F916} auto-review ${h.decision} (rev ${h.revision}): ${h.reason}`;
33234
33298
  case "approve":
33235
- return ` - \u2714 approved (rev ${h.revision}${h.skill ? `, ${h.skill}` : ""}${h.model ? `, ${h.model}` : ""})`;
33299
+ return ` - \u2714 ${h.auto ? "auto-approved" : "approved"} (rev ${h.revision}${h.skill ? `, ${h.skill}` : ""}${h.model ? `, ${h.model}` : ""})`;
33236
33300
  case "undo":
33237
33301
  return ` - \u21B6 mark-done undone (rev ${h.revision}, was ${h.from})`;
33238
33302
  case "interrupted":
@@ -35462,9 +35526,9 @@ var require_dist = __commonJS({
35462
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;
35463
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;
35464
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;
35465
- 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;
35466
- 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;
35467
- 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;
35468
35532
  var WorkspaceSchema_1 = require_WorkspaceSchema();
35469
35533
  Object.defineProperty(exports2, "WorkspaceSchema", { enumerable: true, get: function() {
35470
35534
  return WorkspaceSchema_1.WorkspaceSchema;
@@ -36271,6 +36335,9 @@ var require_dist = __commonJS({
36271
36335
  Object.defineProperty(exports2, "isActiveStatus", { enumerable: true, get: function() {
36272
36336
  return runProgress_1.isActiveStatus;
36273
36337
  } });
36338
+ Object.defineProperty(exports2, "nextRunnableStep", { enumerable: true, get: function() {
36339
+ return runProgress_1.nextRunnableStep;
36340
+ } });
36274
36341
  Object.defineProperty(exports2, "weighStepProgress", { enumerable: true, get: function() {
36275
36342
  return runProgress_1.weighStepProgress;
36276
36343
  } });
@@ -45292,7 +45359,7 @@ var require_package = __commonJS({
45292
45359
  "package.json"(exports2, module2) {
45293
45360
  module2.exports = {
45294
45361
  name: "@delete101020/aidlc",
45295
- version: "4.0.44",
45362
+ version: "4.0.46",
45296
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.",
45297
45364
  license: "MIT",
45298
45365
  repository: {
@@ -50598,6 +50665,10 @@ ${reason}`)),
50598
50665
  \u2933 Step "${e.label}" was rejected \u2014 carrying on.`) + import_chalk10.default.dim(` ${e.reason}`));
50599
50666
  info(import_chalk10.default.dim(` Want it back? aidlc run rerun ${e.runId} --step ${e.stepIdx}`));
50600
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
+ },
50601
50672
  onAutoReviewStart: (e) => info(import_chalk10.default.bold(`
50602
50673
  \u{1F50D} Auto-review: "${e.label}"`)),
50603
50674
  onAutoReviewResult: (e) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delete101020/aidlc",
3
- "version": "4.0.44",
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": {