@agentic-coding-framework/orchestrator-core 0.2.0 → 0.3.0

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.
@@ -5,35 +5,37 @@
5
5
  * to drive the micro-waterfall pipeline. All decisions are deterministic —
6
6
  * zero LLM tokens.
7
7
  *
8
- * Main entry point: dispatch(projectRoot)
8
+ * Main entry points:
9
+ * dispatch(projectRoot) — dispatch next step (mutates STATE)
10
+ * peek(projectRoot) — [FIX P1] read-only dispatch preview (no mutation)
9
11
  */
10
- import { type State, type Step, type Status, type Reason } from "./state";
11
- import { type StepRule } from "./rules";
12
+ import { State } from "./state";
13
+ import { StepRule } from "./rules";
12
14
  export type DispatchResult = {
13
15
  type: "dispatched";
14
- step: Step;
16
+ step: string;
15
17
  attempt: number;
16
18
  prompt: string;
17
- fw_lv: 0 | 1 | 2;
19
+ fw_lv: number;
18
20
  } | {
19
- type: "blocked";
20
- step: Step;
21
- reason: string;
21
+ type: "done";
22
+ story: string;
23
+ summary: string;
22
24
  } | {
23
25
  type: "needs_human";
24
- step: Step;
26
+ step: string;
25
27
  message: string;
26
28
  } | {
27
- type: "done";
28
- story: string;
29
- summary: string;
29
+ type: "blocked";
30
+ step: string;
31
+ reason: string;
30
32
  } | {
31
33
  type: "already_running";
32
- step: Step;
34
+ step: string;
33
35
  elapsed_min: number;
34
36
  } | {
35
37
  type: "timeout";
36
- step: Step;
38
+ step: string;
37
39
  elapsed_min: number;
38
40
  };
39
41
  /**
@@ -47,30 +49,38 @@ export type DispatchResult = {
47
49
  * steps, etc.).
48
50
  */
49
51
  export declare function dispatch(projectRoot: string): DispatchResult;
52
+ /**
53
+ * [FIX P1] Read-only dispatch preview — returns the same DispatchResult
54
+ * as dispatch() but never writes to STATE.json.
55
+ *
56
+ * Use cases:
57
+ * - dispatch-claude-code.sh: check if dispatch would succeed before committing
58
+ * - Monitoring / debugging without state contamination
59
+ * - OpenClaw dry-run checks
60
+ */
61
+ export declare function peek(projectRoot: string): DispatchResult;
50
62
  /**
51
63
  * Build the dispatch prompt from the template.
52
64
  * Pure template filling — zero LLM reasoning.
53
65
  */
54
66
  export declare function buildPrompt(state: State, rule: StepRule): string;
55
- /** Parsed result from HANDOFF.md's YAML front matter */
56
- export interface HandoffResult {
67
+ export interface HandoffData {
57
68
  story: string | null;
58
69
  step: string | null;
59
70
  attempt: number | null;
60
- status: Status | null;
61
- reason: Reason | null;
71
+ status: string | null;
72
+ reason: string | null;
62
73
  files_changed: string[];
63
74
  tests_pass: number | null;
64
75
  tests_fail: number | null;
65
76
  tests_skip: number | null;
66
- /** The markdown body (everything after the second ---) */
67
77
  body: string;
68
78
  }
69
79
  /**
70
80
  * Parse HANDOFF.md — prioritize YAML front matter, fallback to grep.
71
81
  * Direct translation of Protocol's hook pseudocode.
72
82
  */
73
- export declare function parseHandoff(projectRoot: string): HandoffResult | null;
83
+ export declare function parseHandoff(projectRoot: string): HandoffData | null;
74
84
  /**
75
85
  * After executor exits, read HANDOFF.md and update STATE.json accordingly.
76
86
  * This is the TypeScript equivalent of the Protocol's post-execution hook.
@@ -93,7 +103,7 @@ export declare function approveReview(projectRoot: string, humanNote?: string):
93
103
  /**
94
104
  * Reject the review with a reason and optional note.
95
105
  */
96
- export declare function rejectReview(projectRoot: string, reason: Reason, humanNote?: string): void;
106
+ export declare function rejectReview(projectRoot: string, reason: string, humanNote?: string): void;
97
107
  /**
98
108
  * Begin a new User Story. Resets state to bdd step with attempt 1.
99
109
  * Auto-initializes STATE.json if the project hasn't adopted the framework yet.
@@ -102,33 +112,10 @@ export declare function startStory(projectRoot: string, storyId: string, options
102
112
  agentTeams?: boolean;
103
113
  }): State;
104
114
  /**
105
- * Get a human-friendly project status summary.
106
- * OpenClaw calls this when the user asks "how's the project?" or "open project X".
107
- *
108
- * Returns structured data that OpenClaw LLM can translate to natural language.
115
+ * Detect whether a project uses the Agentic Coding Framework.
116
+ * OpenClaw calls this when the user asks "is this project using the framework?"
109
117
  */
110
- export interface ProjectStatus {
111
- project: string;
112
- task_type: string;
113
- story: string | null;
114
- step: string;
115
- status: string;
116
- attempt: number;
117
- max_attempts: number;
118
- reason: string | null;
119
- tests: {
120
- pass: number;
121
- fail: number;
122
- skip: number;
123
- } | null;
124
- lint_pass: boolean | null;
125
- files_changed: string[];
126
- blocked_by: string[];
127
- human_note: string | null;
128
- memory_summary: string | null;
129
- has_framework: FrameworkDetection;
130
- }
131
- export interface FrameworkDetection {
118
+ export declare function detectFramework(projectRoot: string): {
132
119
  has_state: boolean;
133
120
  has_memory: boolean;
134
121
  has_context: boolean;
@@ -136,62 +123,25 @@ export interface FrameworkDetection {
136
123
  has_sdd: boolean;
137
124
  has_handoff: boolean;
138
125
  has_history: boolean;
139
- /** Adoption level: 0 = none, 1 = partial (some files), 2 = full (all core files) */
140
- level: 0 | 1 | 2;
141
- }
142
- /**
143
- * Detect whether a project uses the Agentic Coding Framework.
144
- * OpenClaw calls this when the user asks "is this project using the framework?"
145
- */
146
- export declare function detectFramework(projectRoot: string): FrameworkDetection;
126
+ level: number;
127
+ };
147
128
  /**
148
129
  * Get comprehensive project status for OpenClaw to summarize to the user.
149
- * Works for ANY project — with or without the Agentic Coding Framework.
150
- *
151
- * - Framework project (has STATE.json): returns full state + memory summary
152
- * - Non-framework project: returns framework detection + whatever files exist
153
130
  */
154
- export declare function queryProjectStatus(projectRoot: string): ProjectStatus;
155
- /** Project entry returned by listProjects */
156
- export interface ProjectEntry {
157
- /** Project name (from STATE.json, package.json, or directory name) */
158
- name: string;
159
- /** Directory name relative to workspace root */
160
- dir: string;
161
- /** Current step ("none" if not using framework) */
162
- step: string;
163
- /** Current status ("not_initialized" if not using framework) */
164
- status: string;
165
- /** Current story ID */
166
- story: string | null;
167
- /** Whether this project uses the Agentic Coding Framework */
168
- has_framework: boolean;
169
- }
131
+ export declare function queryProjectStatus(projectRoot: string): Record<string, unknown>;
170
132
  /**
171
- * Scan a workspace directory for all projects — both framework and non-framework.
172
- * OpenClaw calls this when the user asks "list my projects" or "switch project".
173
- *
174
- * A directory is considered a "project" if it contains any of:
175
- * - .ai/STATE.json (framework project)
176
- * - package.json (Node.js project)
177
- * - go.mod (Go project)
178
- * - Cargo.toml (Rust project)
179
- * - pyproject.toml or setup.py (Python project)
180
- * - .git/ (any git repo)
133
+ * Scan a workspace directory for all projects.
181
134
  */
182
- export declare function listProjects(workspaceRoot: string): ProjectEntry[];
135
+ export declare function listProjects(workspaceRoot: string): Record<string, unknown>[];
183
136
  /**
184
137
  * Begin a custom (ad-hoc) task. The orchestrator forwards the instruction
185
138
  * to Claude Code with full project context, without going through the
186
139
  * micro-waterfall pipeline.
187
140
  *
188
141
  * Pipeline: custom → update-memory → done
189
- * Auto-initializes STATE.json if the project hasn't adopted the framework yet.
190
- *
191
- * Use cases: refactoring, code review, bug fix, DevOps, documentation,
192
- * testing, migration, performance optimization, security, cleanup, etc.
193
142
  */
194
143
  export declare function startCustom(projectRoot: string, instruction: string, options?: {
195
144
  label?: string;
196
145
  agentTeams?: boolean;
197
146
  }): State;
147
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
package/dist/dispatch.js CHANGED
@@ -6,10 +6,13 @@
6
6
  * to drive the micro-waterfall pipeline. All decisions are deterministic —
7
7
  * zero LLM tokens.
8
8
  *
9
- * Main entry point: dispatch(projectRoot)
9
+ * Main entry points:
10
+ * dispatch(projectRoot) — dispatch next step (mutates STATE)
11
+ * peek(projectRoot) — [FIX P1] read-only dispatch preview (no mutation)
10
12
  */
11
13
  Object.defineProperty(exports, "__esModule", { value: true });
12
14
  exports.dispatch = dispatch;
15
+ exports.peek = peek;
13
16
  exports.buildPrompt = buildPrompt;
14
17
  exports.parseHandoff = parseHandoff;
15
18
  exports.applyHandoff = applyHandoff;
@@ -37,6 +40,22 @@ const rules_1 = require("./rules");
37
40
  * steps, etc.).
38
41
  */
39
42
  function dispatch(projectRoot) {
43
+ return _dispatch(projectRoot, false);
44
+ }
45
+ /**
46
+ * [FIX P1] Read-only dispatch preview — returns the same DispatchResult
47
+ * as dispatch() but never writes to STATE.json.
48
+ *
49
+ * Use cases:
50
+ * - dispatch-claude-code.sh: check if dispatch would succeed before committing
51
+ * - Monitoring / debugging without state contamination
52
+ * - OpenClaw dry-run checks
53
+ */
54
+ function peek(projectRoot) {
55
+ return _dispatch(projectRoot, true);
56
+ }
57
+ /** Internal dispatch implementation with optional dry-run mode */
58
+ function _dispatch(projectRoot, dryRun) {
40
59
  const state = (0, state_1.readState)(projectRoot);
41
60
  // ── Story complete ──
42
61
  if (state.step === "done") {
@@ -50,9 +69,11 @@ function dispatch(projectRoot) {
50
69
  // ── Timeout check ──
51
70
  if (state.status === "running") {
52
71
  if ((0, state_1.isTimedOut)(state)) {
53
- state.status = "timeout";
54
- state.completed_at = new Date().toISOString();
55
- (0, state_1.writeState)(projectRoot, state);
72
+ if (!dryRun) {
73
+ state.status = "timeout";
74
+ state.completed_at = new Date().toISOString();
75
+ (0, state_1.writeState)(projectRoot, state);
76
+ }
56
77
  const elapsed = elapsedMinutes(state.dispatched_at);
57
78
  return {
58
79
  type: "timeout",
@@ -69,7 +90,7 @@ function dispatch(projectRoot) {
69
90
  }
70
91
  // ── Requires human (review checkpoint) ──
71
92
  if (rule.requires_human && state.status !== "pass") {
72
- if (state.status !== "needs_human") {
93
+ if (state.status !== "needs_human" && !dryRun) {
73
94
  state.status = "needs_human";
74
95
  (0, state_1.writeState)(projectRoot, state);
75
96
  }
@@ -92,7 +113,8 @@ function dispatch(projectRoot) {
92
113
  state.files_changed = [];
93
114
  // Check if we just reached "done"
94
115
  if (state.step === "done") {
95
- (0, state_1.writeState)(projectRoot, state);
116
+ if (!dryRun)
117
+ (0, state_1.writeState)(projectRoot, state);
96
118
  return {
97
119
  type: "done",
98
120
  story: state.story ?? "(no story)",
@@ -103,7 +125,8 @@ function dispatch(projectRoot) {
103
125
  const newRule = (0, rules_1.getRule)(state.step);
104
126
  if (newRule.requires_human) {
105
127
  state.status = "needs_human";
106
- (0, state_1.writeState)(projectRoot, state);
128
+ if (!dryRun)
129
+ (0, state_1.writeState)(projectRoot, state);
107
130
  return {
108
131
  type: "needs_human",
109
132
  step: state.step,
@@ -118,12 +141,15 @@ function dispatch(projectRoot) {
118
141
  if (state.status === "failing") {
119
142
  if ((0, state_1.isMaxedOut)(state)) {
120
143
  state.status = "needs_human";
121
- (0, state_1.writeState)(projectRoot, state);
144
+ if (!dryRun)
145
+ (0, state_1.writeState)(projectRoot, state);
122
146
  return {
123
147
  type: "blocked",
124
148
  step: state.step,
125
149
  reason: `Max attempts (${state.max_attempts}) exhausted at step "${state.step}". ` +
126
- (state.reason ? `Last reason: ${state.reason}` : "No specific reason."),
150
+ (state.reason
151
+ ? `Last reason: ${state.reason}`
152
+ : "No specific reason."),
127
153
  };
128
154
  }
129
155
  const target = (0, rules_1.getFailTarget)(state.step, state.reason);
@@ -144,14 +170,16 @@ function dispatch(projectRoot) {
144
170
  // ── Dispatch executor ──
145
171
  const currentRule = (0, rules_1.getRule)(state.step);
146
172
  const prompt = buildPrompt(state, currentRule);
147
- const running = (0, state_1.markRunning)(state);
148
- (0, state_1.writeState)(projectRoot, running);
173
+ if (!dryRun) {
174
+ const running = (0, state_1.markRunning)(state);
175
+ (0, state_1.writeState)(projectRoot, running);
176
+ }
149
177
  // Detect framework adoption level so caller knows the context richness
150
178
  const framework = detectFramework(projectRoot);
151
179
  return {
152
180
  type: "dispatched",
153
- step: running.step,
154
- attempt: running.attempt,
181
+ step: state.step,
182
+ attempt: state.attempt,
155
183
  prompt,
156
184
  fw_lv: framework.level,
157
185
  };
@@ -261,11 +289,17 @@ function parseYamlFrontMatter(content) {
261
289
  step: yaml["step"] ?? null,
262
290
  attempt: yaml["attempt"] ? parseInt(yaml["attempt"], 10) : null,
263
291
  status: yaml["status"] ?? null,
264
- reason: (yaml["reason"] || null),
292
+ reason: yaml["reason"] || null,
265
293
  files_changed: parseYamlList(yaml["files_changed"]),
266
- tests_pass: yaml["tests_pass"] ? parseInt(yaml["tests_pass"], 10) : null,
267
- tests_fail: yaml["tests_fail"] ? parseInt(yaml["tests_fail"], 10) : null,
268
- tests_skip: yaml["tests_skip"] ? parseInt(yaml["tests_skip"], 10) : null,
294
+ tests_pass: yaml["tests_pass"]
295
+ ? parseInt(yaml["tests_pass"], 10)
296
+ : null,
297
+ tests_fail: yaml["tests_fail"]
298
+ ? parseInt(yaml["tests_fail"], 10)
299
+ : null,
300
+ tests_skip: yaml["tests_skip"]
301
+ ? parseInt(yaml["tests_skip"], 10)
302
+ : null,
269
303
  body,
270
304
  };
271
305
  }
@@ -300,6 +334,11 @@ function parseFallback(content) {
300
334
  * Minimal YAML parser for flat key: value pairs.
301
335
  * Handles simple scalars and inline lists. NOT a full YAML parser —
302
336
  * just enough for HANDOFF.md front matter.
337
+ *
338
+ * [FIX P2] Improved to handle:
339
+ * - Inline bracket lists: `files: [a.go, b.ts]`
340
+ * - Values containing colons: `reason: needs_clarification: details here`
341
+ * (only first colon splits key/value, rest is part of the value)
303
342
  */
304
343
  function parseSimpleYaml(block) {
305
344
  const result = {};
@@ -319,16 +358,25 @@ function parseSimpleYaml(block) {
319
358
  result[currentKey] = JSON.stringify(listValues);
320
359
  listValues = [];
321
360
  }
322
- // Key: value pair
361
+ // Key: value pair — use FIRST colon only, rest is value
323
362
  const colonIdx = trimmed.indexOf(":");
324
363
  if (colonIdx > 0) {
325
364
  const key = trimmed.slice(0, colonIdx).trim();
326
365
  const value = trimmed.slice(colonIdx + 1).trim();
327
366
  currentKey = key;
328
367
  if (value) {
329
- // "null" empty
330
- result[key] = value === "null" ? "" : value;
331
- currentKey = null; // not expecting list items
368
+ // [FIX P2] Handle inline bracket lists: `files: [a.go, b.ts]`
369
+ if (value.startsWith("[") && value.endsWith("]")) {
370
+ const inner = value.slice(1, -1);
371
+ const items = inner.split(",").map((s) => s.trim()).filter(Boolean);
372
+ result[key] = JSON.stringify(items);
373
+ currentKey = null;
374
+ }
375
+ else {
376
+ // "null" → empty
377
+ result[key] = value === "null" ? "" : value;
378
+ currentKey = null; // not expecting list items
379
+ }
332
380
  }
333
381
  // else: value on next lines (list)
334
382
  }
@@ -456,9 +504,6 @@ function rejectReview(projectRoot, reason, humanNote) {
456
504
  * Ensure STATE.json exists. If not, auto-initialize it.
457
505
  * This allows startStory() and startCustom() to work on ANY project,
458
506
  * even if the Agentic Coding Framework hasn't been set up yet.
459
- *
460
- * Project name is inferred from: package.json name → go.mod module →
461
- * directory name (in that order).
462
507
  */
463
508
  function ensureState(projectRoot) {
464
509
  const path = (0, path_1.join)(projectRoot, ".ai", "STATE.json");
@@ -474,19 +519,25 @@ function ensureState(projectRoot) {
474
519
  if (pkg.name)
475
520
  projectName = pkg.name;
476
521
  }
477
- catch { /* ignore */ }
522
+ catch {
523
+ /* ignore */
524
+ }
478
525
  }
479
526
  const goModPath = (0, path_1.join)(projectRoot, "go.mod");
480
527
  if ((0, fs_1.existsSync)(goModPath)) {
481
528
  try {
482
529
  const goMod = (0, fs_1.readFileSync)(goModPath, "utf-8");
483
- const moduleLine = goMod.split("\n").find((l) => l.startsWith("module "));
530
+ const moduleLine = goMod
531
+ .split("\n")
532
+ .find((l) => l.startsWith("module "));
484
533
  if (moduleLine) {
485
534
  const parts = moduleLine.replace("module ", "").trim().split("/");
486
535
  projectName = parts[parts.length - 1] ?? projectName;
487
536
  }
488
537
  }
489
- catch { /* ignore */ }
538
+ catch {
539
+ /* ignore */
540
+ }
490
541
  }
491
542
  const { state } = (0, state_1.initState)(projectRoot, projectName);
492
543
  return state;
@@ -531,7 +582,13 @@ function detectFramework(projectRoot) {
531
582
  const has_sdd = check("docs/sdd.md");
532
583
  const has_handoff = check(".ai/HANDOFF.md");
533
584
  const has_history = check(".ai/history.md");
534
- const core = [has_state, has_memory, has_context, has_constitution, has_sdd];
585
+ const core = [
586
+ has_state,
587
+ has_memory,
588
+ has_context,
589
+ has_constitution,
590
+ has_sdd,
591
+ ];
535
592
  const coreCount = core.filter(Boolean).length;
536
593
  let level = 0;
537
594
  if (coreCount === core.length)
@@ -539,16 +596,18 @@ function detectFramework(projectRoot) {
539
596
  else if (coreCount > 0)
540
597
  level = 1;
541
598
  return {
542
- has_state, has_memory, has_context, has_constitution,
543
- has_sdd, has_handoff, has_history, level,
599
+ has_state,
600
+ has_memory,
601
+ has_context,
602
+ has_constitution,
603
+ has_sdd,
604
+ has_handoff,
605
+ has_history,
606
+ level,
544
607
  };
545
608
  }
546
609
  /**
547
610
  * Get comprehensive project status for OpenClaw to summarize to the user.
548
- * Works for ANY project — with or without the Agentic Coding Framework.
549
- *
550
- * - Framework project (has STATE.json): returns full state + memory summary
551
- * - Non-framework project: returns framework detection + whatever files exist
552
611
  */
553
612
  function queryProjectStatus(projectRoot) {
554
613
  const framework = detectFramework(projectRoot);
@@ -562,9 +621,7 @@ function queryProjectStatus(projectRoot) {
562
621
  memory_summary = nextMatch[0].trim().slice(0, 500);
563
622
  }
564
623
  }
565
- // If no STATE.json, return a minimal status with framework detection
566
624
  if (!framework.has_state) {
567
- // Try to infer project name from package.json or directory name
568
625
  let project = "(not initialized)";
569
626
  const pkgPath = (0, path_1.join)(projectRoot, "package.json");
570
627
  if ((0, fs_1.existsSync)(pkgPath)) {
@@ -572,7 +629,9 @@ function queryProjectStatus(projectRoot) {
572
629
  const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, "utf-8"));
573
630
  project = pkg.name ?? project;
574
631
  }
575
- catch { /* ignore */ }
632
+ catch {
633
+ /* ignore */
634
+ }
576
635
  }
577
636
  return {
578
637
  project,
@@ -592,7 +651,6 @@ function queryProjectStatus(projectRoot) {
592
651
  has_framework: framework,
593
652
  };
594
653
  }
595
- // Framework project: read full state
596
654
  const state = (0, state_1.readState)(projectRoot);
597
655
  return {
598
656
  project: state.project,
@@ -613,16 +671,7 @@ function queryProjectStatus(projectRoot) {
613
671
  };
614
672
  }
615
673
  /**
616
- * Scan a workspace directory for all projects — both framework and non-framework.
617
- * OpenClaw calls this when the user asks "list my projects" or "switch project".
618
- *
619
- * A directory is considered a "project" if it contains any of:
620
- * - .ai/STATE.json (framework project)
621
- * - package.json (Node.js project)
622
- * - go.mod (Go project)
623
- * - Cargo.toml (Rust project)
624
- * - pyproject.toml or setup.py (Python project)
625
- * - .git/ (any git repo)
674
+ * Scan a workspace directory for all projects.
626
675
  */
627
676
  function listProjects(workspaceRoot) {
628
677
  const { readdirSync, statSync } = require("fs");
@@ -644,21 +693,18 @@ function listProjects(workspaceRoot) {
644
693
  return results;
645
694
  }
646
695
  for (const entry of entries) {
647
- // Skip hidden directories (except .git check is internal)
648
696
  if (entry.startsWith("."))
649
697
  continue;
650
698
  const dir = (0, path_1.join)(workspaceRoot, entry);
651
699
  try {
652
700
  if (!statSync(dir).isDirectory())
653
701
  continue;
654
- // Check if this directory is a project
655
702
  const isProject = PROJECT_MARKERS.some((marker) => (0, fs_1.existsSync)((0, path_1.join)(dir, marker)));
656
703
  if (!isProject)
657
704
  continue;
658
705
  const stateFile = (0, path_1.join)(dir, ".ai", "STATE.json");
659
706
  const hasFramework = (0, fs_1.existsSync)(stateFile);
660
707
  if (hasFramework) {
661
- // Framework project: read state
662
708
  const state = JSON.parse((0, fs_1.readFileSync)(stateFile, "utf-8"));
663
709
  results.push({
664
710
  name: state.project,
@@ -670,7 +716,6 @@ function listProjects(workspaceRoot) {
670
716
  });
671
717
  }
672
718
  else {
673
- // Non-framework project: infer name from package.json or dir name
674
719
  let name = entry;
675
720
  const pkgPath = (0, path_1.join)(dir, "package.json");
676
721
  if ((0, fs_1.existsSync)(pkgPath)) {
@@ -678,7 +723,9 @@ function listProjects(workspaceRoot) {
678
723
  const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, "utf-8"));
679
724
  name = pkg.name ?? entry;
680
725
  }
681
- catch { /* ignore */ }
726
+ catch {
727
+ /* ignore */
728
+ }
682
729
  }
683
730
  results.push({
684
731
  name,
@@ -703,10 +750,6 @@ function listProjects(workspaceRoot) {
703
750
  * micro-waterfall pipeline.
704
751
  *
705
752
  * Pipeline: custom → update-memory → done
706
- * Auto-initializes STATE.json if the project hasn't adopted the framework yet.
707
- *
708
- * Use cases: refactoring, code review, bug fix, DevOps, documentation,
709
- * testing, migration, performance optimization, security, cleanup, etc.
710
753
  */
711
754
  function startCustom(projectRoot, instruction, options = {}) {
712
755
  const state = ensureState(projectRoot);
@@ -735,12 +778,21 @@ function startCustom(projectRoot, instruction, options = {}) {
735
778
  function elapsedMinutes(isoTimestamp) {
736
779
  return Math.round((Date.now() - new Date(isoTimestamp).getTime()) / 60_000);
737
780
  }
781
+ /**
782
+ * [FIX P2] Use resolvePaths() for review request paths to stay consistent
783
+ * with the path resolution logic (prevents stale paths if format changes).
784
+ */
738
785
  function formatReviewRequest(state) {
739
786
  const storyId = state.story ?? "(no story)";
787
+ const paths = (0, rules_1.resolvePaths)([
788
+ "docs/bdd/US-{story}.md",
789
+ "docs/deltas/US-{story}.md",
790
+ ], storyId);
740
791
  return (`Story ${storyId} is ready for review.\n` +
741
792
  `Please check:\n` +
742
- `- docs/bdd/${storyId}.md (BDD scenarios)\n` +
743
- `- docs/deltas/${storyId}.md (Delta Spec)\n` +
793
+ `- ${paths[0]} (BDD scenarios)\n` +
794
+ `- ${paths[1]} (Delta Spec)\n` +
744
795
  `- docs/api/openapi.yaml (contract changes)\n\n` +
745
796
  `Reply "approved" to continue, or provide feedback.`);
746
797
  }
798
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,12 @@
6
6
  * rules.ts → Step transition rules table (pure data)
7
7
  * dispatch.ts → State machine + prompt builder + handoff parser
8
8
  */
9
- export { type State, type Step, type Status, type Reason, type TaskType, type TestResult, createInitialState, readState, writeState, initState, validate, isTimedOut, isMaxedOut, markRunning, markCompleted, generateClaudeMd, writeClaudeMd, } from "./state";
10
- export { type StepRule, type FailRouting, type TeamRole, type TeamRoles, type DispatchMode, STEP_RULES, BOOTSTRAP_RULE, DEFAULT_TEAM_ROLES, DISPATCH_MODES, getRule, resolvePaths, getDispatchMode, getFailTarget, getStepSequence, } from "./rules";
11
- export { type AutoResult, auto, classify, } from "./auto";
12
- export { type DispatchResult, type HandoffResult, dispatch, buildPrompt, parseHandoff, applyHandoff, runPostCheck, approveReview, rejectReview, startStory, startCustom, type ProjectStatus, type FrameworkDetection, type ProjectEntry, detectFramework, queryProjectStatus, listProjects, } from "./dispatch";
9
+ export { createInitialState, readState, writeState, initState, validate, isTimedOut, isMaxedOut, markRunning, markCompleted, generateClaudeMd, writeClaudeMd, } from "./state";
10
+ export type { State, TestResults } from "./state";
11
+ export { STEP_RULES, BOOTSTRAP_RULE, DEFAULT_TEAM_ROLES, DISPATCH_MODES, getRule, resolvePaths, getDispatchMode, getFailTarget, getStepSequence, } from "./rules";
12
+ export type { StepRule } from "./rules";
13
+ export { auto, classify } from "./auto";
14
+ export { dispatch, peek, // [FIX P1] New: read-only dispatch preview
15
+ buildPrompt, parseHandoff, applyHandoff, runPostCheck, approveReview, rejectReview, startStory, startCustom, detectFramework, queryProjectStatus, listProjects, } from "./dispatch";
16
+ export type { DispatchResult, HandoffData } from "./dispatch";
17
+ //# sourceMappingURL=index.d.ts.map