@delete101020/aidlc 4.0.20 → 4.0.22

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 +56 -14
  2. package/package.json +1 -1
package/dist/bundle.js CHANGED
@@ -20839,7 +20839,7 @@ var require_runProgress = __commonJS({
20839
20839
  exports2.isActiveStatus = isActiveStatus;
20840
20840
  exports2.isStepOptional = isStepOptional;
20841
20841
  exports2.deriveRunProgress = deriveRunProgress;
20842
- exports2.isRunComplete = isRunComplete;
20842
+ exports2.isRunComplete = isRunComplete2;
20843
20843
  exports2.weighStepProgress = weighStepProgress2;
20844
20844
  var WorkspaceSchema_1 = require_WorkspaceSchema();
20845
20845
  var ACTIVE = /* @__PURE__ */ new Set([
@@ -20892,20 +20892,59 @@ var require_runProgress = __commonJS({
20892
20892
  }
20893
20893
  });
20894
20894
  const stuck = blocking.length > 0 && actionable.length === 0;
20895
- const status = state.status === "completed" ? "done" : stuck ? "failed" : "in_progress";
20895
+ const complete = state.status === "completed" || pipeline != null && state.steps.length > 0 && isRunComplete2(state, pipeline);
20896
+ const status = complete ? "done" : stuck ? "failed" : "in_progress";
20896
20897
  return { actionable, rejected, blocking, stuck, status };
20897
20898
  }
20898
- function isRunComplete(state, pipeline) {
20899
+ function isRunComplete2(state, pipeline) {
20900
+ const excused = usesDag(pipeline) ? deadEndPeersOfApproved(state, pipeline) : /* @__PURE__ */ new Set();
20899
20901
  return state.steps.every((s, i) => {
20900
20902
  if (s.status === "approved") {
20901
20903
  return true;
20902
20904
  }
20905
+ if (excused.has(i)) {
20906
+ return true;
20907
+ }
20903
20908
  if (!isStepOptional(pipeline, i)) {
20904
20909
  return false;
20905
20910
  }
20906
20911
  return s.status === "rejected" || s.status === "pending";
20907
20912
  });
20908
20913
  }
20914
+ function deadEndPeersOfApproved(state, pipeline) {
20915
+ const normalized = state.steps.map((s, i) => (0, WorkspaceSchema_1.normalizeStep)(pipeline.steps[i] ?? { agent: s.agent }));
20916
+ const ids = normalized.map((n) => n.name ?? n.agent);
20917
+ const { ranks } = weighStepProgress2(normalized.map((n, i) => ({
20918
+ id: ids[i],
20919
+ dependsOn: n.depends_on,
20920
+ done: state.steps[i].status === "approved"
20921
+ })));
20922
+ const dependedOn = /* @__PURE__ */ new Set();
20923
+ for (const n of normalized) {
20924
+ for (const d of n.depends_on) {
20925
+ dependedOn.add(d);
20926
+ }
20927
+ }
20928
+ const approvedRanks = /* @__PURE__ */ new Set();
20929
+ state.steps.forEach((s, i) => {
20930
+ if (s.status === "approved") {
20931
+ approvedRanks.add(ranks[i]);
20932
+ }
20933
+ });
20934
+ const excused = /* @__PURE__ */ new Set();
20935
+ state.steps.forEach((s, i) => {
20936
+ if (s.status === "approved") {
20937
+ return;
20938
+ }
20939
+ if (dependedOn.has(ids[i])) {
20940
+ return;
20941
+ }
20942
+ if (approvedRanks.has(ranks[i])) {
20943
+ excused.add(i);
20944
+ }
20945
+ });
20946
+ return excused;
20947
+ }
20909
20948
  function weighStepProgress2(steps) {
20910
20949
  const n = steps.length;
20911
20950
  if (n === 0) {
@@ -42979,7 +43018,7 @@ var require_package = __commonJS({
42979
43018
  "package.json"(exports2, module2) {
42980
43019
  module2.exports = {
42981
43020
  name: "@delete101020/aidlc",
42982
- version: "4.0.20",
43021
+ version: "4.0.22",
42983
43022
  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.",
42984
43023
  license: "MIT",
42985
43024
  repository: {
@@ -46648,6 +46687,13 @@ function requirePipeline(root, pipelineId) {
46648
46687
  function requirePipelineForRun(root, state) {
46649
46688
  return requirePipeline(root, state.pipelineId).pipeline;
46650
46689
  }
46690
+ function findPipelineForRun(root, state) {
46691
+ try {
46692
+ return import_core7.WorkspaceLoader.load(root).config.pipelines.find((p) => p.id === state.pipelineId) ?? null;
46693
+ } catch {
46694
+ return null;
46695
+ }
46696
+ }
46651
46697
  var AMBIGUOUS_STEP = -2;
46652
46698
  function resolveStepIdx(state, step) {
46653
46699
  const asInt = parseInt(step, 10);
@@ -48253,11 +48299,7 @@ function registerStep(program3) {
48253
48299
  state.status = "running";
48254
48300
  }
48255
48301
  }
48256
- if (state.steps.every((s) => s.status === "approved")) {
48257
- state.status = "completed";
48258
- } else {
48259
- state.status = "running";
48260
- }
48302
+ state.status = runIsComplete(root, state) ? "completed" : "running";
48261
48303
  import_core14.RunStateStore.save(root, state);
48262
48304
  mirrorEpicState(root, state);
48263
48305
  const agent = state.steps[idx].agent;
@@ -48282,11 +48324,7 @@ function registerStep(program3) {
48282
48324
  state.currentStepIdx = nextIdx;
48283
48325
  }
48284
48326
  }
48285
- if (state.steps.every((s) => s.status === "approved")) {
48286
- state.status = "completed";
48287
- } else {
48288
- state.status = "running";
48289
- }
48327
+ state.status = runIsComplete(root, state) ? "completed" : "running";
48290
48328
  import_core14.RunStateStore.save(root, state);
48291
48329
  mirrorEpicState(root, state);
48292
48330
  const agent = state.steps[idx].agent;
@@ -48366,6 +48404,10 @@ function registerStep(program3) {
48366
48404
  printRunSummary(state);
48367
48405
  });
48368
48406
  }
48407
+ function runIsComplete(root, state) {
48408
+ const pipeline = findPipelineForRun(root, state);
48409
+ return pipeline ? (0, import_core14.isRunComplete)(state, pipeline) : state.steps.every((s) => s.status === "approved");
48410
+ }
48369
48411
 
48370
48412
  // src/commands/watch.ts
48371
48413
  var path8 = __toESM(require("path"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delete101020/aidlc",
3
- "version": "4.0.20",
3
+ "version": "4.0.22",
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": {