ralph-teams 1.0.7 → 1.0.8

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.
@@ -15,15 +15,14 @@ You are the hands. You implement. You do NOT plan the epic, choose what to work
15
15
  ## Workflow
16
16
 
17
17
  1. **Read the Team Lead's assignment** — The Team Lead will message you directly with the story details, acceptance criteria, relevant plan section, and any retry feedback.
18
- 2. **Check for guidance** — Before implementing, check if a guidance file exists at `guidance/guidance-{story-id}.md` (e.g. `guidance/guidance-US-003.md`). If the file exists, read it it contains user-provided guidance from a previous discuss session that you MUST follow.
19
- 3. **Read the implementation plan** — Check `.ralph-teams/plans/plan-{epic-id}.md` for the Planner's approach and test design for this story
20
- 4. **Understand the task** — Read the story details, acceptance criteria, plan section, any guidance file content, and any feedback from previous attempts
21
- 5. **Create or update the story tests first** — If the plan includes tests to add or update, implement those tests. If no Planner/test design exists, work TDD-style: define the story's automated tests yourself, confirm they fail on the current code, then proceed.
22
- 6. **Implement** — Write clean, minimal code that satisfies the acceptance criteria and makes the story tests pass
23
- 7. **Quality checks** — Run whatever the project uses (typecheck, lint, test), including the story-specific verification commands. Fix issues before committing.
24
- 8. **Commit** — Use conventional commit format: `feat: [Story ID] - [Story Title]`
25
- 9. **Get the commit SHA** — After committing, run `git rev-parse HEAD` to get the full commit SHA
26
- 10. **Report back** — Send a message to the Team Lead confirming completion. **Always include the full commit SHA** so the Validator can inspect exactly what changed.
18
+ 2. **Read the implementation plan** — Check `.ralph-teams/plans/plan-{epic-id}.md` for the Planner's approach and test design for this story
19
+ 3. **Understand the task** — Read the story details, acceptance criteria, plan section, and any feedback from previous attempts
20
+ 4. **Create or update the story tests first** — If the plan includes tests to add or update, implement those tests. If no Planner/test design exists, work TDD-style: define the story's automated tests yourself, confirm they fail on the current code, then proceed.
21
+ 5. **Implement** — Write clean, minimal code that satisfies the acceptance criteria and makes the story tests pass
22
+ 6. **Quality checks** — Run whatever the project uses (typecheck, lint, test), including the story-specific verification commands. Fix issues before committing.
23
+ 7. **Commit** — Use conventional commit format: `feat: [Story ID] - [Story Title]`
24
+ 8. **Get the commit SHA** — After committing, run `git rev-parse HEAD` to get the full commit SHA
25
+ 9. **Report back** — Send a message to the Team Lead confirming completion. **Always include the full commit SHA** so the Validator can inspect exactly what changed.
27
26
 
28
27
  Message format:
29
28
  ```
@@ -7,11 +7,10 @@ Your job is to implement the assigned story, create or update the story's automa
7
7
 
8
8
  Rules:
9
9
  - Only work on the story assigned in the prompt.
10
- - Before implementing, check if a guidance file exists at `guidance/guidance-{story-id}.md`. If it exists, read it and follow it.
11
10
  - Read the implementation plan at `.ralph-teams/plans/plan-<epic-id>.md` before implementing, and follow the relevant section for the assigned story.
12
11
  - If the plan includes a test design for the story, implement those tests and make them pass.
13
12
  - If no planner was used or no story test design is available, work in TDD order yourself: define or update the story's automated tests first, make sure they fail against the current code, then implement until they pass.
14
- - Follow the implementation plan, any guidance file, and existing code patterns.
13
+ - Follow the implementation plan and existing code patterns.
15
14
  - Run the relevant quality checks before finishing.
16
15
  - Commit using a conventional message that includes the story ID.
17
16
  - Report back with:
@@ -7,7 +7,7 @@ Your job is to independently verify whether the assigned story satisfies its acc
7
7
 
8
8
  Rules:
9
9
  - Inspect the exact commit with `git diff <sha>~1 <sha>`.
10
- - Verify against the story acceptance criteria provided by the Team Lead. If plan or guidance context is provided, use it as supporting context, but acceptance criteria remain the source of truth.
10
+ - Verify against the story acceptance criteria provided by the Team Lead. If plan context is provided, use it as supporting context, but acceptance criteria remain the source of truth.
11
11
  - Run the relevant tests or verification commands yourself.
12
12
  - If the story affects UI behavior and local verification is possible, use browser tooling when available.
13
13
  - Report in this structure:
@@ -14,15 +14,14 @@ You are the hands. You implement. You do NOT plan the epic, choose what to work
14
14
 
15
15
  ## Workflow
16
16
 
17
- 1. **Check for guidance** — Before implementing, check if a guidance file exists at `guidance/guidance-{story-id}.md` (e.g. `guidance/guidance-US-003.md`). If the file exists, read it it contains user-provided guidance from a previous discuss session that you MUST follow.
18
- 2. **Read the implementation plan** — Check `.ralph-teams/plans/plan-{epic-id}.md` for the Planner's approach and test design for this story
19
- 3. **Understand the task** — Read the story details, acceptance criteria, plan section, any guidance file content, and any feedback from previous attempts
20
- 4. **Create or update the story tests first** — If the plan includes tests to add or update, implement those tests. If no Planner/test design exists, work TDD-style: define the story's automated tests yourself, confirm they fail on the current code, then proceed.
21
- 5. **Implement** — Write clean, minimal code that satisfies the acceptance criteria and makes the story tests pass
22
- 6. **Quality checks** — Run whatever the project uses (typecheck, lint, test), including the story-specific verification commands. Fix issues before committing.
23
- 7. **Commit** — Use conventional commit format: `feat: [Story ID] - [Story Title]`
24
- 8. **Get commit SHA** — Run `git rev-parse HEAD` to get the commit SHA
25
- 9. **Report back** — Return the commit SHA and a brief summary of what was implemented
17
+ 1. **Read the implementation plan** — Check `.ralph-teams/plans/plan-{epic-id}.md` for the Planner's approach and test design for this story
18
+ 2. **Understand the task** — Read the story details, acceptance criteria, plan section, and any feedback from previous attempts
19
+ 3. **Create or update the story tests first** — If the plan includes tests to add or update, implement those tests. If no Planner/test design exists, work TDD-style: define the story's automated tests yourself, confirm they fail on the current code, then proceed.
20
+ 4. **Implement** — Write clean, minimal code that satisfies the acceptance criteria and makes the story tests pass
21
+ 5. **Quality checks** — Run whatever the project uses (typecheck, lint, test), including the story-specific verification commands. Fix issues before committing.
22
+ 6. **Commit** — Use conventional commit format: `feat: [Story ID] - [Story Title]`
23
+ 7. **Get commit SHA** — Run `git rev-parse HEAD` to get the commit SHA
24
+ 8. **Report back** — Return the commit SHA and a brief summary of what was implemented
26
25
 
27
26
  ## Report Format
28
27
 
package/README.md CHANGED
@@ -55,7 +55,7 @@ The system has two layers:
55
55
  - `builder` makes changes and runs tests
56
56
  - `validator` verifies the result independently
57
57
 
58
- Across all backends, `builder` and `validator` are one-shot story-scoped workers. The Team Lead must spawn a fresh Builder for each story attempt, spawn a fresh Validator when verification needs an independent agent, and never treat idle/task-lifecycle output as completion. A build attempt only counts when the Builder returns a concrete commit SHA and the Team Lead persists the story result to `prd.json`.
58
+ Across all backends, `builder` and `validator` are one-shot story-scoped workers. The Team Lead must spawn a fresh Builder for each story attempt, spawn a fresh Validator when verification needs an independent agent, and never treat idle/task-lifecycle output as completion. A build attempt only counts when the Builder returns a concrete commit SHA and the Team Lead persists the story result to the epic state file at `.ralph-teams/state/{epic-id}.json`.
59
59
 
60
60
  Default Team Lead policy by backend:
61
61
  - Claude: keep `team-lead` on `opus`; for spawned work use `haiku` for easy tasks, `sonnet` for medium tasks, `opus` for difficult tasks
@@ -74,7 +74,8 @@ Current backends:
74
74
 
75
75
  The runtime is file-based. During a run, Ralph treats these files as the working state of the system:
76
76
 
77
- - `prd.json`: source of truth for epic and story status
77
+ - `prd.json`: source of truth for epic dependencies and status
78
+ - `.ralph-teams/state/`: per-epic story pass/fail state files
78
79
  - `.ralph-teams/plans/`: implementation plans for epics that were explicitly planned
79
80
  - `.ralph-teams/progress.txt`: narrative progress log
80
81
  - `.ralph-teams/logs/`: raw backend logs
@@ -457,12 +458,13 @@ The `init` command uses `prd.json.example` as schema and style guidance when gen
457
458
  During a run, Ralph writes:
458
459
 
459
460
  - `.ralph-teams/progress.txt`: high-level run log
461
+ - `.ralph-teams/state/EPIC-xxx.json`: per-epic story pass/fail state (Team Lead reads/writes)
460
462
  - `.ralph-teams/plans/plan-EPIC-xxx.md`: planner output for an epic
461
463
  - planned epics are expected to use these files as their implementation contract
462
464
  - `.ralph-teams/logs/epic-EPIC-xxx-<timestamp>.log`: raw backend session log
463
465
  - `.ralph-teams/ralph-state.json`: saved interrupt/resume state
464
466
 
465
- Ralph also updates the original `prd.json` in place as story and epic state changes.
467
+ Ralph also updates the original `prd.json` in place as epic status changes.
466
468
 
467
469
  The team lead agent log for each epic is written to `.ralph-teams/logs/` regardless of backend.
468
470
 
@@ -485,8 +487,8 @@ The current execution contract is:
485
487
  - Builder and Validator are one-shot story-scoped workers, never long-lived mailboxes shared across stories
486
488
  - a Builder attempt only counts when the Team Lead receives a concrete commit SHA for that story attempt
487
489
  - the validator checks output independently from the builder's reasoning
488
- - `DONE: X/Y stories passed` is a required session footer, but the durable completion signal is the `prd.json` story state updated by the Team Lead
489
- - after updating `prd.json` for all attempted stories, the team lead must print `DONE: X/Y stories passed` and exit the session immediately
490
+ - `DONE: X/Y stories passed` is a required session footer, but the durable completion signal is the epic state file updated by the Team Lead
491
+ - after updating the epic state file for all attempted stories, the team lead must print `DONE: X/Y stories passed` and exit the session immediately
490
492
  - pressing `Ctrl-C` writes `.ralph-teams/ralph-state.json` so the run can be resumed later with `ralph-teams resume`
491
493
 
492
494
  ## Troubleshooting
package/dist/discuss.d.ts CHANGED
@@ -30,7 +30,6 @@ export interface FailedStoryContext extends DiscussContext {
30
30
  storyTitle: string;
31
31
  epicTitle: string;
32
32
  failureReason: string | null;
33
- guidancePath: string;
34
33
  }
35
34
  export interface DiscussResult {
36
35
  /** The story ID that was discussed */
@@ -54,12 +53,6 @@ export interface DiscussSessionOptions {
54
53
  spawnAgent?: AgentSpawner;
55
54
  /** Backend to launch for the guided session. Defaults to 'claude'. */
56
55
  backend?: 'claude' | 'copilot' | 'codex';
57
- /**
58
- * Directory in which to persist the guidance file after the session ends.
59
- * When provided, the guidance is saved to `<guidanceDir>/guidance-<storyId>.md`.
60
- * Defaults to 'guidance' if not specified.
61
- */
62
- guidanceDir?: string;
63
56
  }
64
57
  export interface FailedStoriesDiscussOptions {
65
58
  spawnAgent?: AgentSpawner;
@@ -1 +1 @@
1
- {"version":3,"file":"discuss.d.ts","sourceRoot":"","sources":["../src/discuss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,sEAAsE;IACtE,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;CAC1C;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyC5F;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsDxE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,cAAc,CAOhB;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA0BlE;AA2BD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CA4CtF;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,QAAQ,GAAG,SAAS,GAAG,OAAkB,GACjD,YAAY,CA4Cd;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAuDxB;AAED,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
1
+ {"version":3,"file":"discuss.d.ts","sourceRoot":"","sources":["../src/discuss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,sEAAsE;IACtE,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;CAC1C;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyC5F;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsDxE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,cAAc,CAOhB;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA0BlE;AAaD,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CA6BtF;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,QAAQ,GAAG,SAAS,GAAG,OAAkB,GACjD,YAAY,CA4Cd;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED,wBAAsB,8BAA8B,CAClD,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAiBf"}
package/dist/discuss.js CHANGED
@@ -62,7 +62,6 @@ exports.runFailedStoriesDiscussSession = runFailedStoriesDiscussSession;
62
62
  const fs = __importStar(require("fs"));
63
63
  const path = __importStar(require("path"));
64
64
  const child_process_1 = require("child_process");
65
- const guidance_1 = require("./guidance");
66
65
  // ---------------------------------------------------------------------------
67
66
  // Context gathering
68
67
  // ---------------------------------------------------------------------------
@@ -280,28 +279,14 @@ function buildContextPrompt(context) {
280
279
  sep,
281
280
  ].join('\n');
282
281
  }
283
- function buildGuidedDiscussPrompt(context, guidancePath) {
282
+ function buildGuidedDiscussPrompt(context) {
284
283
  return [
285
284
  buildContextPrompt(context),
286
285
  '',
287
286
  'You are running a guided retry discussion with the user.',
288
287
  'Behave like an interactive product/engineering interview session.',
289
288
  'Ask focused follow-up questions, help the user reason about the failure, and converge on concrete retry guidance.',
290
- '',
291
- 'Before ending the session, you MUST write the final guidance file yourself.',
292
- `Write it to this exact path: ${guidancePath}`,
293
- '',
294
- 'The guidance file must be Markdown and include these sections:',
295
- '# Story Guidance',
296
- '## Failure Context',
297
- '## User Instructions',
298
- '## Agreed Approach',
299
- '',
300
- 'Rules:',
301
- '- Create the parent directory if it does not exist.',
302
- '- Summarize the final guidance in the file, not just in chat.',
303
- '- Do not ask the user to create or save the file manually.',
304
- '- After writing the file, tell the user where you saved it and exit.',
289
+ 'Before exiting, summarize the agreed next steps clearly in chat.',
305
290
  ].join('\n');
306
291
  }
307
292
  function buildFailedStoriesDiscussPrompt(contexts) {
@@ -311,7 +296,6 @@ function buildFailedStoriesDiscussPrompt(contexts) {
311
296
  `${context.storyId} — ${context.storyTitle}`,
312
297
  `Epic: ${context.epicId} — ${context.epicTitle}`,
313
298
  `Failure reason: ${context.failureReason ?? '(not recorded)'}`,
314
- `Guidance file: ${context.guidancePath}`,
315
299
  '',
316
300
  '[Failure Report]',
317
301
  context.failureReport,
@@ -328,21 +312,7 @@ function buildFailedStoriesDiscussPrompt(contexts) {
328
312
  '',
329
313
  'Start by summarizing the failed stories and asking the user which one to discuss first.',
330
314
  'Guide the conversation story by story. Ask focused follow-up questions and converge on concrete retry instructions.',
331
- '',
332
- 'When the user finishes discussing a story, you MUST write that story guidance file yourself to the exact path listed for that story.',
333
- 'You may write multiple guidance files in this session if the user discusses multiple failed stories.',
334
- '',
335
- 'Each guidance file must be Markdown and include exactly these sections:',
336
- '# Story Guidance',
337
- '## Failure Context',
338
- '## User Instructions',
339
- '## Agreed Approach',
340
- '',
341
- 'Rules:',
342
- '- Create parent directories if they do not exist.',
343
- '- Do not ask the user to create or save files manually.',
344
- '- Keep guidance scoped to the story being discussed.',
345
- '- When the user says they are done, summarize which guidance files were written and exit.',
315
+ 'When the user says they are done, summarize the agreed retry steps and exit.',
346
316
  '',
347
317
  ...storyBlocks,
348
318
  sep,
@@ -370,7 +340,7 @@ function createDefaultSpawner(backend = 'claude') {
370
340
  const sep = '─'.repeat(72);
371
341
  process.stdout.write('\n');
372
342
  process.stdout.write(`${sep}\n`);
373
- process.stdout.write('Discuss session starting — the agent will guide the conversation and save the final guidance file.\n');
343
+ process.stdout.write('Discuss session starting — the agent will guide the conversation.\n');
374
344
  process.stdout.write(`${sep}\n\n`);
375
345
  let command;
376
346
  let args;
@@ -430,13 +400,7 @@ function createDefaultSpawner(backend = 'claude') {
430
400
  * @returns The collected guidance from the session
431
401
  */
432
402
  async function runDiscussSession(context, options) {
433
- const shouldPersistGuidance = options?.spawnAgent === undefined || options?.guidanceDir !== undefined;
434
- const guidanceDir = options?.guidanceDir ?? 'guidance';
435
- const guidancePath = path.resolve((0, guidance_1.getGuidancePath)(context.storyId, guidanceDir));
436
- if (shouldPersistGuidance) {
437
- fs.mkdirSync(path.dirname(guidancePath), { recursive: true });
438
- }
439
- const contextPrompt = buildGuidedDiscussPrompt(context, guidancePath);
403
+ const contextPrompt = buildGuidedDiscussPrompt(context);
440
404
  const spawner = options?.spawnAgent ?? createDefaultSpawner(options?.backend ?? 'claude');
441
405
  let guidance = '';
442
406
  try {
@@ -446,42 +410,22 @@ async function runDiscussSession(context, options) {
446
410
  // Spawner errors are non-fatal — session ends with empty guidance
447
411
  guidance = '';
448
412
  }
449
- const trimmedGuidance = guidance.trim();
450
- let finalGuidance = trimmedGuidance;
451
- if (!finalGuidance && options?.spawnAgent === undefined) {
452
- const savedGuidance = (0, guidance_1.loadGuidance)(context.storyId, guidanceDir);
453
- if (savedGuidance !== null) {
454
- finalGuidance = savedGuidance.trim();
455
- }
456
- }
413
+ const finalGuidance = guidance.trim();
457
414
  process.stdout.write('\n');
458
415
  if (finalGuidance) {
459
- process.stdout.write('[Guidance recorded]\n');
416
+ process.stdout.write('[Discussion summary]\n');
460
417
  process.stdout.write(`${finalGuidance}\n`);
461
418
  }
462
419
  else {
463
420
  process.stdout.write('[Discuss session ended]\n');
464
421
  }
465
422
  process.stdout.write('\n');
466
- if (trimmedGuidance && shouldPersistGuidance) {
467
- (0, guidance_1.saveGuidance)(context.storyId, {
468
- failureContext: context.failureReport,
469
- userInstructions: trimmedGuidance,
470
- approach: '',
471
- }, guidanceDir);
472
- }
473
- if (shouldPersistGuidance && fs.existsSync(guidancePath)) {
474
- process.stdout.write(`[Guidance saved to ${guidancePath}]\n`);
475
- }
476
423
  return { storyId: context.storyId, guidance: finalGuidance };
477
424
  }
478
425
  async function runFailedStoriesDiscussSession(contexts, options) {
479
426
  if (contexts.length === 0) {
480
427
  return;
481
428
  }
482
- for (const context of contexts) {
483
- fs.mkdirSync(path.dirname(context.guidancePath), { recursive: true });
484
- }
485
429
  const contextPrompt = buildFailedStoriesDiscussPrompt(contexts);
486
430
  const spawner = options?.spawnAgent ?? createDefaultSpawner(options?.backend ?? 'claude');
487
431
  try {
@@ -491,18 +435,7 @@ async function runFailedStoriesDiscussSession(contexts, options) {
491
435
  // Non-fatal: the user may have exited the interactive backend early.
492
436
  }
493
437
  process.stdout.write('\n');
494
- const savedPaths = contexts
495
- .map(context => context.guidancePath)
496
- .filter(filePath => fs.existsSync(filePath));
497
- if (savedPaths.length > 0) {
498
- process.stdout.write('[Guidance saved]\n');
499
- for (const filePath of savedPaths) {
500
- process.stdout.write(`${filePath}\n`);
501
- }
502
- }
503
- else {
504
- process.stdout.write('[Discuss session ended]\n');
505
- }
438
+ process.stdout.write('[Discuss session ended]\n');
506
439
  process.stdout.write('\n');
507
440
  }
508
441
  //# sourceMappingURL=discuss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discuss.js","sourceRoot":"","sources":["../src/discuss.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFH,gDA6BC;AAYD,gDAyCC;AASD,kCAsDC;AASD,4CAsBC;AAWD,oDAaC;AAYD,gDA0BC;AA2BD,0EA4CC;AAmBD,oDA8CC;AAwBD,8CA0DC;AAED,wEAmCC;AA5jBD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAA+D;AAC/D,yCAAyE;AA+DzE,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,YAAoB,EAAE,OAAe;IACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,qDAAqD;QACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC,CAAC,gCAAgC,OAAO,GAAG,CAAC;AACjD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAe;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,MAAM,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,yBAAyB,QAAQ,GAAG,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEpD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACrC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAE7B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,+BAA+B;gBAC/B,SAAS,GAAG,IAAI,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;gBACrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,SAAS,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAC9C,uDAAuD;gBACvD,MAAM;YACR,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,8BAA8B,OAAO,OAAO,QAAQ,GAAG,CAAC;IACjE,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,WAAmB,EAAE,OAAe;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,kCAAkC,WAAW,GAAG,CAAC;IAC1D,CAAC;IAED,wBAAwB;IACxB,MAAM,SAAS,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE;QAC9D,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,uDAAuD,CAAC;IACjE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE9D,wCAAwC;IACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAExE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,wCAAwC;QACxC,MAAM,UAAU,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;YACxE,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,4CAA4C,CAAC;IAC7E,CAAC;IAED,8CAA8C;IAC9C,MAAM,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,6CAA6C;IAC7C,MAAM,UAAU,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QACzE,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,yCAAyC;QACzC,MAAM,YAAY,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;YACrE,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ;YAC5C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;YAC5B,CAAC,CAAC,eAAe,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;QAC1C,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;QAC1B,CAAC,CAAC,cAAc,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,OAAe,EAAE,OAAe;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAEvD,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAClC,OAAe,EACf,OAAe,EACf,YAAoB,EACpB,QAAgB,EAChB,WAAmB;IAEnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,OAAuB;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO;QACL,6EAA6E,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,IAAI;QACnH,oFAAoF;QACpF,EAAE;QACF,GAAG;QACH,kBAAkB;QAClB,GAAG;QACH,OAAO,CAAC,aAAa;QACrB,EAAE;QACF,GAAG;QACH,kCAAkC;QAClC,GAAG;QACH,OAAO,CAAC,QAAQ;QAChB,EAAE;QACF,GAAG;QACH,gBAAgB;QAChB,GAAG;QACH,OAAO,CAAC,WAAW;QACnB,EAAE;QACF,GAAG;QACH,sFAAsF;QACtF,yEAAyE;QACzE,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAuB,EAAE,YAAoB;IAC7E,OAAO;QACL,kBAAkB,CAAC,OAAO,CAAC;QAC3B,EAAE;QACF,0DAA0D;QAC1D,mEAAmE;QACnE,mHAAmH;QACnH,EAAE;QACF,6EAA6E;QAC7E,gCAAgC,YAAY,EAAE;QAC9C,EAAE;QACF,gEAAgE;QAChE,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,EAAE;QACF,QAAQ;QACR,qDAAqD;QACrD,+DAA+D;QAC/D,4DAA4D;QAC5D,sEAAsE;KACvE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,+BAA+B,CAAC,QAA8B;IAC5E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,GAAG;QACH,GAAG,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,UAAU,EAAE;QAC5C,SAAS,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,SAAS,EAAE;QAChD,mBAAmB,OAAO,CAAC,aAAa,IAAI,gBAAgB,EAAE;QAC9D,kBAAkB,OAAO,CAAC,YAAY,EAAE;QACxC,EAAE;QACF,kBAAkB;QAClB,OAAO,CAAC,aAAa;QACrB,EAAE;QACF,kCAAkC;QAClC,OAAO,CAAC,QAAQ;QAChB,EAAE;QACF,gBAAgB;QAChB,OAAO,CAAC,WAAW;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEd,OAAO;QACL,4DAA4D;QAC5D,8EAA8E;QAC9E,EAAE;QACF,yFAAyF;QACzF,qHAAqH;QACrH,EAAE;QACF,sIAAsI;QACtI,sGAAsG;QACtG,EAAE;QACF,yEAAyE;QACzE,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,EAAE;QACF,QAAQ;QACR,mDAAmD;QACnD,yDAAyD;QACzD,sDAAsD;QACtD,2FAA2F;QAC3F,EAAE;QACF,GAAG,WAAW;QACd,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAClC,UAA0C,QAAQ;IAElD,OAAO,CAAC,aAAqB,EAAmB,EAAE;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sGAAsG,CAAC,CAAC;YAC7H,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;YAEnC,IAAI,OAAe,CAAC;YACpB,IAAI,IAAc,CAAC;YACnB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,OAAO,GAAG,QAAQ,CAAC;gBACnB,IAAI,GAAG,CAAC,gCAAgC,EAAE,aAAa,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,OAAO,CAAC;gBAClB,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,YAA0B,CAAC;YAC/B,IAAI,CAAC;gBACH,YAAY,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;oBAClC,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;iBACxB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;gBAC/C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,OAA+B;IAE/B,MAAM,qBAAqB,GAAG,OAAO,EAAE,UAAU,KAAK,SAAS,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC;IACtG,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAA,0BAAe,EAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IACjF,IAAI,qBAAqB,EAAE,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,aAAa,GAAG,wBAAwB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAiB,OAAO,EAAE,UAAU,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;IAExG,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,aAAa,GAAG,eAAe,CAAC;IAEpC,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,aAAa,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,eAAe,IAAI,qBAAqB,EAAE,CAAC;QAC7C,IAAA,uBAAY,EACV,OAAO,CAAC,OAAO,EACf;YACE,cAAc,EAAE,OAAO,CAAC,aAAa;YACrC,gBAAgB,EAAE,eAAe;YACjC,QAAQ,EAAE,EAAE;SACb,EACD,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,YAAY,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,8BAA8B,CAClD,QAA8B,EAC9B,OAAqC;IAErC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,OAAO,GAAiB,OAAO,EAAE,UAAU,IAAI,oBAAoB,CAAC,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;IAExG,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAG,QAAQ;SACxB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;SACpC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"discuss.js","sourceRoot":"","sources":["../src/discuss.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ export declare function getRalphRuntimeDir(projectRoot: string): string;
3
3
  export declare function getRalphProgressPath(projectRoot: string): string;
4
4
  export declare function getRalphPlansDir(projectRoot: string): string;
5
5
  export declare function getRalphLogsDir(projectRoot: string): string;
6
- export declare function getRalphGuidanceDir(projectRoot: string): string;
7
6
  export declare function getRalphWorktreesDir(projectRoot: string): string;
8
7
  export declare function getRalphStatePath(projectRoot: string): string;
9
8
  //# sourceMappingURL=runtime-paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-paths.d.ts","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"runtime-paths.d.ts","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -38,7 +38,6 @@ exports.getRalphRuntimeDir = getRalphRuntimeDir;
38
38
  exports.getRalphProgressPath = getRalphProgressPath;
39
39
  exports.getRalphPlansDir = getRalphPlansDir;
40
40
  exports.getRalphLogsDir = getRalphLogsDir;
41
- exports.getRalphGuidanceDir = getRalphGuidanceDir;
42
41
  exports.getRalphWorktreesDir = getRalphWorktreesDir;
43
42
  exports.getRalphStatePath = getRalphStatePath;
44
43
  const path = __importStar(require("path"));
@@ -55,9 +54,6 @@ function getRalphPlansDir(projectRoot) {
55
54
  function getRalphLogsDir(projectRoot) {
56
55
  return path.join(getRalphRuntimeDir(projectRoot), 'logs');
57
56
  }
58
- function getRalphGuidanceDir(projectRoot) {
59
- return path.join(getRalphRuntimeDir(projectRoot), 'guidance');
60
- }
61
57
  function getRalphWorktreesDir(projectRoot) {
62
58
  return path.join(getRalphRuntimeDir(projectRoot), '.worktrees');
63
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-paths.js","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gDAEC;AAED,oDAEC;AAED,4CAEC;AAED,0CAEC;AAED,kDAEC;AAED,oDAEC;AAED,8CAEC;AA9BD,2CAA6B;AAEhB,QAAA,qBAAqB,GAAG,cAAc,CAAC;AAEpD,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,6BAAqB,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"runtime-paths.js","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,gDAEC;AAED,oDAEC;AAED,4CAEC;AAED,0CAEC;AAED,oDAEC;AAED,8CAEC;AA1BD,2CAA6B;AAEhB,QAAA,qBAAqB,GAAG,cAAc,CAAC;AAEpD,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,6BAAqB,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACxE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralph-teams",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "CLI tool for Ralph Teams",
5
5
  "bin": {
6
6
  "ralph-teams": "dist/index.js",
@@ -27,7 +27,6 @@ You coordinate epic execution. Do not write implementation code yourself.
27
27
  ## Per Story Workflow
28
28
 
29
29
  - Before starting a story, check the epic state file. If the story has `passes: true`, skip it.
30
- - Before assigning the story, check whether `.ralph-teams/guidance/guidance-{story-id}.md` exists. If it does, explicitly tell the Builder: `Guidance file for this story: .ralph-teams/guidance/guidance-{story-id}.md — read it before implementing and follow the instructions in it.`
31
30
  - If a Planner was used or a canonical plan already exists, give the Builder the story, acceptance criteria, relevant plan section, and especially the story's planned test design.
32
31
  - Require the Builder to add or update automated tests for the story and make them pass before the story can count as complete.
33
32
  - If no Planner is spawned for the epic, explicitly instruct the Builder to work in TDD order for the story: define the story's automated tests first, make them fail against the current code, then implement until those tests and the relevant quality checks pass.
package/ralph.sh CHANGED
@@ -217,10 +217,9 @@ RALPH_RUNTIME_DIR="${ROOT_DIR}/${RALPH_RUNTIME_DIRNAME}"
217
217
  PROGRESS_FILE="${RALPH_RUNTIME_DIR}/progress.txt"
218
218
  PLANS_DIR="${RALPH_RUNTIME_DIR}/plans"
219
219
  LOGS_DIR="${RALPH_RUNTIME_DIR}/logs"
220
- GUIDANCE_DIR="${RALPH_RUNTIME_DIR}/guidance"
221
220
  STATE_DIR="${RALPH_RUNTIME_DIR}/state"
222
221
  WORKTREES_DIR="${RALPH_RUNTIME_DIR}/.worktrees"
223
- mkdir -p "$RALPH_RUNTIME_DIR" "$PLANS_DIR" "$LOGS_DIR" "$GUIDANCE_DIR" "$STATE_DIR" "$WORKTREES_DIR"
222
+ mkdir -p "$RALPH_RUNTIME_DIR" "$PLANS_DIR" "$LOGS_DIR" "$STATE_DIR" "$WORKTREES_DIR"
224
223
 
225
224
  # --- Validate PRD structure ---
226
225
  echo "Validating PRD structure..."
@@ -448,7 +447,7 @@ prompt_to_remove_stale_worktree_dir() {
448
447
  # --- Ensure loop branch exists and is checked out ---
449
448
  ensure_runtime_gitignore_entries
450
449
 
451
- mkdir -p "$RALPH_RUNTIME_DIR" "$PLANS_DIR" "$LOGS_DIR" "$GUIDANCE_DIR" "$STATE_DIR" "$WORKTREES_DIR"
450
+ mkdir -p "$RALPH_RUNTIME_DIR" "$PLANS_DIR" "$LOGS_DIR" "$STATE_DIR" "$WORKTREES_DIR"
452
451
 
453
452
  if [ "$CURRENT_BRANCH" != "$LOOP_BRANCH" ]; then
454
453
  if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then
@@ -1071,7 +1070,6 @@ $TEAM_LEAD_POLICY
1071
1070
 
1072
1071
  ## Runtime-Specific Notes
1073
1072
  - Use the exact plan path shown above when the policy refers to the canonical epic plan file.
1074
- - When the policy refers to guidance files, use this runtime path pattern: ${GUIDANCE_DIR}/guidance-{story-id}.md
1075
1073
  - Use the exact epic state file path shown above for every story update. The PRD path is read-only context.
1076
1074
  - If your runtime supports named sub-agents, use the dedicated planner, builder, and validator roles and choose their models using the policy above.
1077
1075
  - If a story fails validation and still has retries left, spawn a new Builder for the retry instead of reusing the previous Builder run.
@@ -1,59 +0,0 @@
1
- /**
2
- * guidance.ts — Standalone module for persisting and loading story guidance.
3
- *
4
- * When a user discusses a failed story with the discuss agent, their guidance
5
- * is saved to a file so the Builder agent can incorporate it on the next run.
6
- *
7
- * Guidance files are written to:
8
- * <guidanceDir>/guidance-<storyId>.md (default guidanceDir: '.ralph-teams/guidance')
9
- * e.g.
10
- * .ralph-teams/guidance/guidance-US-003.md
11
- *
12
- * Pure I/O module with no terminal UI dependencies.
13
- */
14
- /**
15
- * Returns the canonical file path for a story's guidance file.
16
- *
17
- * @param storyId - Story ID, e.g. 'US-003'
18
- * @param guidanceDir - Directory in which guidance files are stored (default: 'guidance')
19
- * @returns Path: `<guidanceDir>/guidance-<storyId>.md`
20
- */
21
- export declare function getGuidancePath(storyId: string, guidanceDir?: string): string;
22
- /**
23
- * Formats guidance context into a human-readable Markdown string.
24
- *
25
- * The Builder agent reads this file directly, so the format is intentionally
26
- * simple and readable without special parsing.
27
- *
28
- * @param context - Guidance context with failure details and user instructions
29
- * @returns Formatted markdown string
30
- */
31
- export declare function formatGuidanceContent(context: {
32
- failureContext: string;
33
- userInstructions: string;
34
- approach: string;
35
- }): string;
36
- /**
37
- * Persists guidance to disk as a Markdown file.
38
- *
39
- * Creates the guidance directory automatically if it does not exist.
40
- *
41
- * @param storyId - Story ID, e.g. 'US-003'
42
- * @param context - Guidance context (failure, instructions, approach)
43
- * @param guidanceDir - Directory in which to write guidance files (default: 'guidance')
44
- * @returns The file path where the guidance was written
45
- */
46
- export declare function saveGuidance(storyId: string, context: {
47
- failureContext: string;
48
- userInstructions: string;
49
- approach: string;
50
- }, guidanceDir?: string): string;
51
- /**
52
- * Reads the guidance file for a story, or returns null if it does not exist.
53
- *
54
- * @param storyId - Story ID, e.g. 'US-003'
55
- * @param guidanceDir - Directory in which guidance files are stored (default: 'guidance')
56
- * @returns The guidance file contents, or null if the file does not exist
57
- */
58
- export declare function loadGuidance(storyId: string, guidanceDir?: string): string | null;
59
- //# sourceMappingURL=guidance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAA6B,GAAG,MAAM,CAEnG;AAUD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAkBT;AAMD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC/E,WAAW,GAAE,MAA6B,GACzC,MAAM,CAQR;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAA6B,GAAG,MAAM,GAAG,IAAI,CAiBvG"}
package/dist/guidance.js DELETED
@@ -1,153 +0,0 @@
1
- "use strict";
2
- /**
3
- * guidance.ts — Standalone module for persisting and loading story guidance.
4
- *
5
- * When a user discusses a failed story with the discuss agent, their guidance
6
- * is saved to a file so the Builder agent can incorporate it on the next run.
7
- *
8
- * Guidance files are written to:
9
- * <guidanceDir>/guidance-<storyId>.md (default guidanceDir: '.ralph-teams/guidance')
10
- * e.g.
11
- * .ralph-teams/guidance/guidance-US-003.md
12
- *
13
- * Pure I/O module with no terminal UI dependencies.
14
- */
15
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- var desc = Object.getOwnPropertyDescriptor(m, k);
18
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
- desc = { enumerable: true, get: function() { return m[k]; } };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }) : (function(o, m, k, k2) {
23
- if (k2 === undefined) k2 = k;
24
- o[k2] = m[k];
25
- }));
26
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
- Object.defineProperty(o, "default", { enumerable: true, value: v });
28
- }) : function(o, v) {
29
- o["default"] = v;
30
- });
31
- var __importStar = (this && this.__importStar) || (function () {
32
- var ownKeys = function(o) {
33
- ownKeys = Object.getOwnPropertyNames || function (o) {
34
- var ar = [];
35
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
- return ar;
37
- };
38
- return ownKeys(o);
39
- };
40
- return function (mod) {
41
- if (mod && mod.__esModule) return mod;
42
- var result = {};
43
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
- __setModuleDefault(result, mod);
45
- return result;
46
- };
47
- })();
48
- Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.getGuidancePath = getGuidancePath;
50
- exports.formatGuidanceContent = formatGuidanceContent;
51
- exports.saveGuidance = saveGuidance;
52
- exports.loadGuidance = loadGuidance;
53
- const fs = __importStar(require("fs"));
54
- const path = __importStar(require("path"));
55
- const runtime_paths_1 = require("./runtime-paths");
56
- /** Default directory for guidance files, relative to project root. */
57
- const DEFAULT_GUIDANCE_DIR = path.join(runtime_paths_1.RALPH_RUNTIME_DIRNAME, 'guidance');
58
- // ---------------------------------------------------------------------------
59
- // Path helpers
60
- // ---------------------------------------------------------------------------
61
- /**
62
- * Returns the canonical file path for a story's guidance file.
63
- *
64
- * @param storyId - Story ID, e.g. 'US-003'
65
- * @param guidanceDir - Directory in which guidance files are stored (default: 'guidance')
66
- * @returns Path: `<guidanceDir>/guidance-<storyId>.md`
67
- */
68
- function getGuidancePath(storyId, guidanceDir = DEFAULT_GUIDANCE_DIR) {
69
- return path.join(guidanceDir, `guidance-${storyId}.md`);
70
- }
71
- function getLegacyGuidancePath(storyId, guidanceDir = DEFAULT_GUIDANCE_DIR) {
72
- return path.join(guidanceDir, `${storyId}.md`);
73
- }
74
- // ---------------------------------------------------------------------------
75
- // Content formatter
76
- // ---------------------------------------------------------------------------
77
- /**
78
- * Formats guidance context into a human-readable Markdown string.
79
- *
80
- * The Builder agent reads this file directly, so the format is intentionally
81
- * simple and readable without special parsing.
82
- *
83
- * @param context - Guidance context with failure details and user instructions
84
- * @returns Formatted markdown string
85
- */
86
- function formatGuidanceContent(context) {
87
- const lines = [
88
- '# Story Guidance',
89
- '',
90
- '## Failure Context',
91
- '',
92
- context.failureContext.trim() || '(no failure context recorded)',
93
- '',
94
- '## User Instructions',
95
- '',
96
- context.userInstructions.trim() || '(no explicit instructions provided)',
97
- '',
98
- '## Agreed Approach',
99
- '',
100
- context.approach.trim() || '(no specific approach agreed upon)',
101
- '',
102
- ];
103
- return lines.join('\n');
104
- }
105
- // ---------------------------------------------------------------------------
106
- // Writer
107
- // ---------------------------------------------------------------------------
108
- /**
109
- * Persists guidance to disk as a Markdown file.
110
- *
111
- * Creates the guidance directory automatically if it does not exist.
112
- *
113
- * @param storyId - Story ID, e.g. 'US-003'
114
- * @param context - Guidance context (failure, instructions, approach)
115
- * @param guidanceDir - Directory in which to write guidance files (default: 'guidance')
116
- * @returns The file path where the guidance was written
117
- */
118
- function saveGuidance(storyId, context, guidanceDir = DEFAULT_GUIDANCE_DIR) {
119
- // Ensure the guidance directory exists
120
- fs.mkdirSync(guidanceDir, { recursive: true });
121
- const filePath = getGuidancePath(storyId, guidanceDir);
122
- const content = formatGuidanceContent(context);
123
- fs.writeFileSync(filePath, content, 'utf-8');
124
- return filePath;
125
- }
126
- // ---------------------------------------------------------------------------
127
- // Reader
128
- // ---------------------------------------------------------------------------
129
- /**
130
- * Reads the guidance file for a story, or returns null if it does not exist.
131
- *
132
- * @param storyId - Story ID, e.g. 'US-003'
133
- * @param guidanceDir - Directory in which guidance files are stored (default: 'guidance')
134
- * @returns The guidance file contents, or null if the file does not exist
135
- */
136
- function loadGuidance(storyId, guidanceDir = DEFAULT_GUIDANCE_DIR) {
137
- try {
138
- const candidatePaths = [
139
- getGuidancePath(storyId, guidanceDir),
140
- getLegacyGuidancePath(storyId, guidanceDir),
141
- ];
142
- for (const filePath of candidatePaths) {
143
- if (fs.existsSync(filePath)) {
144
- return fs.readFileSync(filePath, 'utf-8');
145
- }
146
- }
147
- return null;
148
- }
149
- catch {
150
- return null;
151
- }
152
- }
153
- //# sourceMappingURL=guidance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guidance.js","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,0CAEC;AAmBD,sDAsBC;AAgBD,oCAYC;AAaD,oCAiBC;AAvHD,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAwD;AAExD,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,qCAAqB,EAAE,UAAU,CAAC,CAAC;AAE1E,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,OAAe,EAAE,cAAsB,oBAAoB;IACzF,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,OAAO,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe,EAAE,cAAsB,oBAAoB;IACxF,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,OAIrC;IACC,MAAM,KAAK,GAAa;QACtB,kBAAkB;QAClB,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,+BAA+B;QAChE,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,qCAAqC;QACxE,EAAE;QACF,oBAAoB;QACpB,EAAE;QACF,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,oCAAoC;QAC/D,EAAE;KACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,OAA+E,EAC/E,cAAsB,oBAAoB;IAE1C,uCAAuC;IACvC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,OAAe,EAAE,cAAsB,oBAAoB;IACtF,IAAI,CAAC;QACH,MAAM,cAAc,GAAG;YACrB,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC;YACrC,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC;SAC5C,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}