ralph-teams 1.0.5 → 1.0.7
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.
- package/.claude/agents/builder.md +11 -7
- package/.claude/agents/planner.md +22 -9
- package/.codex/agents/builder.toml +7 -2
- package/.codex/agents/planner.toml +10 -4
- package/.github/agents/builder.agent.md +11 -7
- package/.github/agents/planner.agent.md +22 -9
- package/README.md +17 -41
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +2 -1
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +3 -0
- package/dist/commands/task.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/guidance.d.ts +2 -2
- package/dist/guidance.js +2 -2
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/runtime-paths.d.ts +1 -1
- package/dist/runtime-paths.d.ts.map +1 -1
- package/dist/runtime-paths.js +1 -1
- package/dist/runtime-paths.js.map +1 -1
- package/package.json +1 -1
- package/prompts/team-lead-policy.md +9 -2
- package/ralph.sh +3 -3
- package/dist/commands/discuss.d.ts +0 -18
- package/dist/commands/discuss.d.ts.map +0 -1
- package/dist/commands/discuss.js +0 -136
- package/dist/commands/discuss.js.map +0 -1
|
@@ -6,7 +6,7 @@ model: sonnet
|
|
|
6
6
|
|
|
7
7
|
# Builder Agent
|
|
8
8
|
|
|
9
|
-
You are the implementation specialist on an epic team. You write code,
|
|
9
|
+
You are the implementation specialist on an epic team. You write code, add or update tests, run checks, and commit working changes. You take direction from the Team Lead.
|
|
10
10
|
|
|
11
11
|
## Your Role
|
|
12
12
|
|
|
@@ -16,19 +16,22 @@ You are the hands. You implement. You do NOT plan the epic, choose what to work
|
|
|
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
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
|
|
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
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. **
|
|
22
|
-
6. **
|
|
23
|
-
7. **
|
|
24
|
-
8. **
|
|
25
|
-
9. **
|
|
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.
|
|
26
27
|
|
|
27
28
|
Message format:
|
|
28
29
|
```
|
|
29
30
|
Story [Story ID] implemented and committed.
|
|
30
31
|
Commit SHA: <full sha from git rev-parse HEAD>
|
|
31
32
|
Summary: [brief description of what was done]
|
|
33
|
+
Tests changed: [list of tests added/updated]
|
|
34
|
+
Verification: [commands run]
|
|
32
35
|
Files changed: [list of files]
|
|
33
36
|
```
|
|
34
37
|
|
|
@@ -48,6 +51,7 @@ If the Team Lead reassigns a task with Validator feedback:
|
|
|
48
51
|
- Follow existing code patterns in the project — don't introduce new patterns unless necessary
|
|
49
52
|
- Keep changes minimal and focused on the acceptance criteria
|
|
50
53
|
- Do NOT gold-plate — implement exactly what's asked, nothing more
|
|
54
|
+
- Treat automated coverage as part of the story, not optional cleanup. Do not finish with zero new or updated tests unless there is a concrete repository-based reason.
|
|
51
55
|
- Do NOT skip quality checks — every commit must pass typecheck/lint/test
|
|
52
56
|
- Do NOT argue with Validator feedback — fix the issues
|
|
53
57
|
- **ALWAYS include the commit SHA in your report back to the Team Lead** — this is required for the Validator to verify your work
|
|
@@ -6,11 +6,11 @@ model: opus
|
|
|
6
6
|
|
|
7
7
|
# Planner Agent
|
|
8
8
|
|
|
9
|
-
You are the implementation architect for an epic. You explore the codebase, understand existing patterns, and produce a
|
|
9
|
+
You are the implementation architect for an epic. You explore the codebase, understand existing patterns, and produce a high-level implementation/design plan that the Builder will follow.
|
|
10
10
|
|
|
11
11
|
## Your Role
|
|
12
12
|
|
|
13
|
-
You are the architect. You read, explore, and design. You NEVER write implementation code. You produce a plan that makes the Builder's job straightforward.
|
|
13
|
+
You are the architect. You read, explore, and design. You NEVER write implementation code. You produce a plan that makes the Builder's job straightforward, even for a junior implementer.
|
|
14
14
|
|
|
15
15
|
## What You Receive
|
|
16
16
|
|
|
@@ -21,19 +21,21 @@ The Team Lead will give you:
|
|
|
21
21
|
|
|
22
22
|
## What You Produce
|
|
23
23
|
|
|
24
|
-
A single implementation plan Markdown file written to the exact path the Team Lead gives you. If no explicit path is given, infer
|
|
24
|
+
A single implementation plan Markdown file written to the exact path the Team Lead gives you. If no explicit path is given, infer `.ralph-teams/plans/plan-{epic-id}.md` from the epic ID.
|
|
25
25
|
|
|
26
26
|
## Process
|
|
27
27
|
|
|
28
28
|
1. **Read the PRD** — Use the PRD file path provided to read the full project context. This helps you understand the broader scope and how this epic fits in.
|
|
29
29
|
2. **Explore the codebase** — Understand the project structure, tech stack, existing patterns, conventions
|
|
30
30
|
3. **Identify dependencies between stories** — Which stories build on others? What order makes sense?
|
|
31
|
-
4. **For each story, design the approach:**
|
|
31
|
+
4. **For each story, design the approach and tests:**
|
|
32
32
|
- Which files to create or modify
|
|
33
33
|
- What functions/components to add
|
|
34
34
|
- How it connects to existing code
|
|
35
|
+
- Which automated tests should be added or updated for that story
|
|
36
|
+
- Which commands should pass to verify the story
|
|
35
37
|
- Any gotchas or risks
|
|
36
|
-
5. **Write the plan file** — Structured, specific, actionable, and persisted to disk in
|
|
38
|
+
5. **Write the plan file** — Structured, specific, actionable, and persisted to disk in `.ralph-teams/plans/`
|
|
37
39
|
|
|
38
40
|
## Plan Format
|
|
39
41
|
|
|
@@ -52,6 +54,10 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
52
54
|
### Approach
|
|
53
55
|
[1-3 sentences on the overall approach]
|
|
54
56
|
|
|
57
|
+
### Tests to Add / Update
|
|
58
|
+
- `path/to/test-file.test.ts` — [specific cases that must cover the acceptance criteria]
|
|
59
|
+
- Test level: [unit/integration/e2e]
|
|
60
|
+
|
|
55
61
|
### Files to Modify
|
|
56
62
|
- `path/to/file.ts` — [what changes]
|
|
57
63
|
|
|
@@ -59,10 +65,13 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
59
65
|
- `path/to/new-file.ts` — [purpose]
|
|
60
66
|
|
|
61
67
|
### Implementation Details
|
|
62
|
-
- [
|
|
63
|
-
- [
|
|
68
|
+
- [Responsibilities, data flow, and how it connects to existing code]
|
|
69
|
+
- [Function signatures, component props, route names, or type shapes if they clarify the design]
|
|
64
70
|
- [Database/API changes if any]
|
|
65
71
|
|
|
72
|
+
### Verification Commands
|
|
73
|
+
- [Exact commands the Builder should run, with the story-specific tests included]
|
|
74
|
+
|
|
66
75
|
### Risks / Gotchas
|
|
67
76
|
- [Anything the Builder should watch out for]
|
|
68
77
|
|
|
@@ -74,9 +83,13 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
74
83
|
|
|
75
84
|
- NEVER write implementation code — only describe what to build
|
|
76
85
|
- ALWAYS write the plan to disk for the epic; do not leave it only in the chat response
|
|
77
|
-
-
|
|
86
|
+
- Do not ask the Team Lead to copy, save, or rewrite the plan for you. You must write the file yourself before replying.
|
|
87
|
+
- If you first draft the plan in memory, your next action is to persist it to the required path and verify it exists there before you report completion.
|
|
88
|
+
- Be concrete at design level. "add a function" is too vague, while naming a likely signature or prop contract is acceptable when it helps the Builder understand the design.
|
|
89
|
+
- Do not include full function bodies, code blocks, or pseudocode in the plan.
|
|
90
|
+
- Design the test strategy per story, not just the code changes. Each story needs concrete automated test cases tied to its acceptance criteria.
|
|
78
91
|
- Reference existing patterns — if the codebase uses a specific pattern, tell the Builder to follow it
|
|
79
92
|
- Consider the full epic — later stories may affect how earlier ones should be implemented
|
|
80
93
|
- Keep it practical — don't over-architect, the Builder needs clear instructions not abstract theory
|
|
81
94
|
- If the codebase is empty/new, specify the project setup (package.json, tsconfig, folder structure)
|
|
82
|
-
- Create the
|
|
95
|
+
- Create the `.ralph-teams/plans/` directory if needed, then confirm the exact file path you wrote in your final response
|
|
@@ -3,12 +3,14 @@ sandbox_mode = "workspace-write"
|
|
|
3
3
|
developer_instructions = """
|
|
4
4
|
You are the Builder for a Ralph Teams epic.
|
|
5
5
|
|
|
6
|
-
Your job is to implement the assigned story, run the relevant checks, commit the result, and report back with the exact commit SHA.
|
|
6
|
+
Your job is to implement the assigned story, create or update the story's automated tests, run the relevant checks, commit the result, and report back with the exact commit SHA.
|
|
7
7
|
|
|
8
8
|
Rules:
|
|
9
9
|
- Only work on the story assigned in the prompt.
|
|
10
10
|
- Before implementing, check if a guidance file exists at `guidance/guidance-{story-id}.md`. If it exists, read it and follow it.
|
|
11
|
-
- Read the implementation plan at
|
|
11
|
+
- Read the implementation plan at `.ralph-teams/plans/plan-<epic-id>.md` before implementing, and follow the relevant section for the assigned story.
|
|
12
|
+
- If the plan includes a test design for the story, implement those tests and make them pass.
|
|
13
|
+
- 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.
|
|
12
14
|
- Follow the implementation plan, any guidance file, and existing code patterns.
|
|
13
15
|
- Run the relevant quality checks before finishing.
|
|
14
16
|
- Commit using a conventional message that includes the story ID.
|
|
@@ -16,7 +18,10 @@ Rules:
|
|
|
16
18
|
- Story ID
|
|
17
19
|
- full commit SHA from `git rev-parse HEAD`
|
|
18
20
|
- short summary
|
|
21
|
+
- tests added or updated
|
|
22
|
+
- verification commands run
|
|
19
23
|
- files changed
|
|
20
24
|
- Do not validate your own work against the acceptance criteria beyond normal sanity checks; a separate validator will do that.
|
|
25
|
+
- Do not finish with zero new or updated automated tests unless the Team Lead explicitly said the story already has sufficient coverage or you can point to a concrete repository-based reason automated coverage is not possible.
|
|
21
26
|
- If blocked, explain the blocker instead of guessing.
|
|
22
27
|
"""
|
|
@@ -3,17 +3,21 @@ sandbox_mode = "workspace-write"
|
|
|
3
3
|
developer_instructions = """
|
|
4
4
|
You are the Planner for a Ralph Teams epic.
|
|
5
5
|
|
|
6
|
-
Your job is to explore the repository, understand the epic, and write a
|
|
7
|
-
If the Team Lead does not provide an explicit path, infer it as
|
|
8
|
-
Create the
|
|
6
|
+
Your job is to explore the repository, understand the epic, and write a high-level implementation/design plan to the exact Markdown file path provided by the Team Lead.
|
|
7
|
+
If the Team Lead does not provide an explicit path, infer it as `.ralph-teams/plans/plan-<epic-id>.md` from the epic ID.
|
|
8
|
+
Create the `.ralph-teams/plans/` directory if it does not exist.
|
|
9
9
|
Do not only print the plan in chat. Persist it to disk for the epic.
|
|
10
10
|
|
|
11
11
|
Rules:
|
|
12
12
|
- Read the PRD path provided in the prompt so you understand project-level context.
|
|
13
13
|
- Explore the existing codebase before proposing changes.
|
|
14
14
|
- Do not implement code.
|
|
15
|
-
- Produce a plan that is specific enough for a
|
|
15
|
+
- Produce a plan that is specific enough for a junior implementation agent to follow without guessing.
|
|
16
|
+
- Do not ask the Team Lead to copy, save, or rewrite the plan for you. You must write the file yourself before replying.
|
|
17
|
+
- If you first draft the plan in memory, your next action is to persist it to the required path and verify it exists there before you report completion.
|
|
18
|
+
- For every user story, design the automated tests the Builder must add or update before implementation is considered done.
|
|
16
19
|
- Prefer existing patterns over inventing new structure.
|
|
20
|
+
- Stay at design level. You may include function signatures, type shapes, route names, file paths, and component responsibilities when useful, but do not write full functions, code blocks, or pseudocode.
|
|
17
21
|
- Your final response should confirm the exact plan file path you wrote.
|
|
18
22
|
|
|
19
23
|
Plan format:
|
|
@@ -22,8 +26,10 @@ Plan format:
|
|
|
22
26
|
- `## Story Order`
|
|
23
27
|
- One section per story with:
|
|
24
28
|
- `### Approach`
|
|
29
|
+
- `### Tests to Add / Update`
|
|
25
30
|
- `### Files to Modify`
|
|
26
31
|
- `### Files to Create`
|
|
27
32
|
- `### Implementation Details`
|
|
33
|
+
- `### Verification Commands`
|
|
28
34
|
- `### Risks / Gotchas`
|
|
29
35
|
"""
|
|
@@ -6,7 +6,7 @@ model: gpt-5.3-codex
|
|
|
6
6
|
|
|
7
7
|
# Builder Agent
|
|
8
8
|
|
|
9
|
-
You are the implementation specialist on an epic team. You write code,
|
|
9
|
+
You are the implementation specialist on an epic team. You write code, add or update tests, run checks, and commit working changes.
|
|
10
10
|
|
|
11
11
|
## Your Role
|
|
12
12
|
|
|
@@ -15,19 +15,22 @@ You are the hands. You implement. You do NOT plan the epic, choose what to work
|
|
|
15
15
|
## Workflow
|
|
16
16
|
|
|
17
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
|
|
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
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. **
|
|
21
|
-
5. **
|
|
22
|
-
6. **
|
|
23
|
-
7. **
|
|
24
|
-
8. **
|
|
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
|
|
25
26
|
|
|
26
27
|
## Report Format
|
|
27
28
|
|
|
28
29
|
Always include in your response:
|
|
29
30
|
```
|
|
30
31
|
COMMIT_SHA: <the full commit SHA>
|
|
32
|
+
TESTS_CHANGED: <list of tests added/updated>
|
|
33
|
+
VERIFICATION: <commands run>
|
|
31
34
|
FILES_CHANGED: <list of files>
|
|
32
35
|
SUMMARY: <brief description of what was implemented>
|
|
33
36
|
```
|
|
@@ -47,6 +50,7 @@ If re-spawned with Validator feedback:
|
|
|
47
50
|
- Follow existing code patterns in the project
|
|
48
51
|
- Keep changes minimal and focused on the acceptance criteria
|
|
49
52
|
- Do NOT gold-plate — implement exactly what's asked, nothing more
|
|
53
|
+
- Treat automated coverage as part of the story, not optional cleanup. Do not finish with zero new or updated tests unless there is a concrete repository-based reason.
|
|
50
54
|
- Do NOT skip quality checks — every commit must pass typecheck/lint/test
|
|
51
55
|
- Do NOT argue with Validator feedback — fix the issues
|
|
52
56
|
- ALWAYS return the commit SHA after committing
|
|
@@ -6,11 +6,11 @@ model: gpt-5.3-codex
|
|
|
6
6
|
|
|
7
7
|
# Planner Agent
|
|
8
8
|
|
|
9
|
-
You are the implementation architect for an epic. You explore the codebase, understand existing patterns, and produce a
|
|
9
|
+
You are the implementation architect for an epic. You explore the codebase, understand existing patterns, and produce a high-level implementation/design plan that the Builder will follow.
|
|
10
10
|
|
|
11
11
|
## Your Role
|
|
12
12
|
|
|
13
|
-
You are the architect. You read, explore, and design. You NEVER write implementation code. You produce a plan that makes the Builder's job straightforward.
|
|
13
|
+
You are the architect. You read, explore, and design. You NEVER write implementation code. You produce a plan that makes the Builder's job straightforward, even for a junior implementer.
|
|
14
14
|
|
|
15
15
|
## What You Receive
|
|
16
16
|
|
|
@@ -21,19 +21,21 @@ The Team Lead will give you:
|
|
|
21
21
|
|
|
22
22
|
## What You Produce
|
|
23
23
|
|
|
24
|
-
A single implementation plan Markdown file written to the exact path the Team Lead gives you. If no explicit path is given, infer
|
|
24
|
+
A single implementation plan Markdown file written to the exact path the Team Lead gives you. If no explicit path is given, infer `.ralph-teams/plans/plan-{epic-id}.md` from the epic ID.
|
|
25
25
|
|
|
26
26
|
## Process
|
|
27
27
|
|
|
28
28
|
1. **Read the PRD** — Understand the full project context
|
|
29
29
|
2. **Explore the codebase** — Understand the project structure, tech stack, existing patterns, conventions
|
|
30
30
|
3. **Identify dependencies between stories** — Which stories build on others? What order makes sense?
|
|
31
|
-
4. **For each story, design the approach:**
|
|
31
|
+
4. **For each story, design the approach and tests:**
|
|
32
32
|
- Which files to create or modify
|
|
33
33
|
- What functions/components to add
|
|
34
34
|
- How it connects to existing code
|
|
35
|
+
- Which automated tests should be added or updated for that story
|
|
36
|
+
- Which commands should pass to verify the story
|
|
35
37
|
- Any gotchas or risks
|
|
36
|
-
5. **Write the plan file** — Structured, specific, actionable, and persisted to disk in
|
|
38
|
+
5. **Write the plan file** — Structured, specific, actionable, and persisted to disk in `.ralph-teams/plans/`
|
|
37
39
|
|
|
38
40
|
## Plan Format
|
|
39
41
|
|
|
@@ -52,6 +54,10 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
52
54
|
### Approach
|
|
53
55
|
[1-3 sentences on the overall approach]
|
|
54
56
|
|
|
57
|
+
### Tests to Add / Update
|
|
58
|
+
- `path/to/test-file.test.ts` — [specific cases that must cover the acceptance criteria]
|
|
59
|
+
- Test level: [unit/integration/e2e]
|
|
60
|
+
|
|
55
61
|
### Files to Modify
|
|
56
62
|
- `path/to/file.ts` — [what changes]
|
|
57
63
|
|
|
@@ -59,10 +65,13 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
59
65
|
- `path/to/new-file.ts` — [purpose]
|
|
60
66
|
|
|
61
67
|
### Implementation Details
|
|
62
|
-
- [
|
|
63
|
-
- [
|
|
68
|
+
- [Responsibilities, data flow, and how it connects to existing code]
|
|
69
|
+
- [Function signatures, component props, route names, or type shapes if they clarify the design]
|
|
64
70
|
- [Database/API changes if any]
|
|
65
71
|
|
|
72
|
+
### Verification Commands
|
|
73
|
+
- [Exact commands the Builder should run, with the story-specific tests included]
|
|
74
|
+
|
|
66
75
|
### Risks / Gotchas
|
|
67
76
|
- [Anything the Builder should watch out for]
|
|
68
77
|
|
|
@@ -74,9 +83,13 @@ A single implementation plan Markdown file written to the exact path the Team Le
|
|
|
74
83
|
|
|
75
84
|
- NEVER write implementation code — only describe what to build
|
|
76
85
|
- ALWAYS write the plan to disk for the epic; do not leave it only in the chat response
|
|
77
|
-
-
|
|
86
|
+
- Do not ask the Team Lead to copy, save, or rewrite the plan for you. You must write the file yourself before replying.
|
|
87
|
+
- If you first draft the plan in memory, your next action is to persist it to the required path and verify it exists there before you report completion.
|
|
88
|
+
- Be concrete at design level. "add a function" is too vague, while naming a likely signature or prop contract is acceptable when it helps the Builder understand the design.
|
|
89
|
+
- Do not include full function bodies, code blocks, or pseudocode in the plan.
|
|
90
|
+
- Design the test strategy per story, not just the code changes. Each story needs concrete automated test cases tied to its acceptance criteria.
|
|
78
91
|
- Reference existing patterns — if the codebase uses a specific pattern, tell the Builder to follow it
|
|
79
92
|
- Consider the full epic — later stories may affect how earlier ones should be implemented
|
|
80
93
|
- Keep it practical — don't over-architect, the Builder needs clear instructions not abstract theory
|
|
81
94
|
- If the codebase is empty/new, specify the project setup (package.json, tsconfig, folder structure)
|
|
82
|
-
- Create the
|
|
95
|
+
- Create the `.ralph-teams/plans/` directory if needed, then confirm the exact file path you wrote in your final response
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ ralph-teams run --parallel=3
|
|
|
12
12
|
## Quickest Start
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
#
|
|
15
|
+
# create the prd.json with the agent, optionally create an implementation plan for each epic
|
|
16
16
|
ralph-teams init
|
|
17
17
|
|
|
18
18
|
# start the loop, by default uses claude
|
|
@@ -75,10 +75,10 @@ Current backends:
|
|
|
75
75
|
The runtime is file-based. During a run, Ralph treats these files as the working state of the system:
|
|
76
76
|
|
|
77
77
|
- `prd.json`: source of truth for epic and story status
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
78
|
+
- `.ralph-teams/plans/`: implementation plans for epics that were explicitly planned
|
|
79
|
+
- `.ralph-teams/progress.txt`: narrative progress log
|
|
80
|
+
- `.ralph-teams/logs/`: raw backend logs
|
|
81
|
+
- `.ralph-teams/ralph-state.json`: interrupt/resume state
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
|
|
@@ -221,7 +221,7 @@ Notes:
|
|
|
221
221
|
|
|
222
222
|
Planning behavior:
|
|
223
223
|
|
|
224
|
-
- if an epic has `planned: true`, the Team Lead is expected to read
|
|
224
|
+
- if an epic has `planned: true`, the Team Lead is expected to read `.ralph-teams/plans/plan-EPIC-xxx.md` and follow it
|
|
225
225
|
- if an epic is still unplanned, medium- and high-complexity epics should spawn a planner before implementation
|
|
226
226
|
- only clearly low-complexity epics should skip planning during execution
|
|
227
227
|
|
|
@@ -260,7 +260,7 @@ Behavior:
|
|
|
260
260
|
|
|
261
261
|
- loads epics with `planned !== true`
|
|
262
262
|
- starts an interactive agent discussion about implementation approach and sequencing
|
|
263
|
-
- asks the agent to write
|
|
263
|
+
- asks the agent to write `.ralph-teams/plans/plan-EPIC-xxx.md`
|
|
264
264
|
- asks the agent to mark each agreed epic as `planned: true` in `prd.json`
|
|
265
265
|
|
|
266
266
|
Notes:
|
|
@@ -269,32 +269,9 @@ Notes:
|
|
|
269
269
|
- if you skip an epic during planning, it remains `planned: false`
|
|
270
270
|
- planned epics should not require the Team Lead to spawn another planner later
|
|
271
271
|
|
|
272
|
-
### `ralph-teams discuss [path]`
|
|
273
|
-
|
|
274
|
-
Starts a guided retry discussion for the currently failed user stories in a PRD. Default path is `./prd.json`.
|
|
275
|
-
|
|
276
|
-
```bash
|
|
277
|
-
ralph-teams discuss
|
|
278
|
-
ralph-teams discuss ./my-prd.json
|
|
279
|
-
ralph-teams discuss --backend codex
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
Behavior:
|
|
283
|
-
|
|
284
|
-
- loads failed stories from `prd.json`
|
|
285
|
-
- gathers failure context from `ralph-teams/progress.txt`, `ralph-teams/plans/`, and `ralph-teams/.worktrees/`
|
|
286
|
-
- starts an interactive agent session that helps the user choose which failed story to discuss first
|
|
287
|
-
- asks the agent to write `ralph-teams/guidance/guidance-US-xxx.md` files directly for the stories discussed
|
|
288
|
-
|
|
289
|
-
Notes:
|
|
290
|
-
|
|
291
|
-
- you do not need to pass a story ID
|
|
292
|
-
- the agent is expected to guide the conversation across failed stories
|
|
293
|
-
- `--backend` controls whether the session uses `claude`, `copilot`, or `codex`
|
|
294
|
-
|
|
295
272
|
### `ralph-teams resume`
|
|
296
273
|
|
|
297
|
-
Resumes an interrupted run from
|
|
274
|
+
Resumes an interrupted run from `./.ralph-teams/ralph-state.json`.
|
|
298
275
|
|
|
299
276
|
```bash
|
|
300
277
|
ralph-teams resume
|
|
@@ -305,7 +282,7 @@ Behavior:
|
|
|
305
282
|
- reloads the saved PRD path, backend, and parallel settings
|
|
306
283
|
- reuses the current project config for timeouts and pricing
|
|
307
284
|
- restarts `ralph.sh`
|
|
308
|
-
- removes
|
|
285
|
+
- removes `.ralph-teams/ralph-state.json` after a successful resume
|
|
309
286
|
|
|
310
287
|
### `ralph-teams status [path]`
|
|
311
288
|
|
|
@@ -318,14 +295,14 @@ ralph-teams status ./my-prd.json
|
|
|
318
295
|
|
|
319
296
|
### `ralph-teams logs [--tail N]`
|
|
320
297
|
|
|
321
|
-
Shows
|
|
298
|
+
Shows `.ralph-teams/progress.txt` with light colorization.
|
|
322
299
|
|
|
323
300
|
```bash
|
|
324
301
|
ralph-teams logs
|
|
325
302
|
ralph-teams logs --tail 20
|
|
326
303
|
```
|
|
327
304
|
|
|
328
|
-
`--tail` shows the last `N` wave blocks from
|
|
305
|
+
`--tail` shows the last `N` wave blocks from `.ralph-teams/progress.txt`.
|
|
329
306
|
|
|
330
307
|
### `ralph-teams reset <epicId> [path]`
|
|
331
308
|
|
|
@@ -479,16 +456,15 @@ The `init` command uses `prd.json.example` as schema and style guidance when gen
|
|
|
479
456
|
|
|
480
457
|
During a run, Ralph writes:
|
|
481
458
|
|
|
482
|
-
-
|
|
483
|
-
-
|
|
459
|
+
- `.ralph-teams/progress.txt`: high-level run log
|
|
460
|
+
- `.ralph-teams/plans/plan-EPIC-xxx.md`: planner output for an epic
|
|
484
461
|
- planned epics are expected to use these files as their implementation contract
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
- `ralph-teams/guidance/guidance-US-xxx.md`: retry guidance captured from discuss flows
|
|
462
|
+
- `.ralph-teams/logs/epic-EPIC-xxx-<timestamp>.log`: raw backend session log
|
|
463
|
+
- `.ralph-teams/ralph-state.json`: saved interrupt/resume state
|
|
488
464
|
|
|
489
465
|
Ralph also updates the original `prd.json` in place as story and epic state changes.
|
|
490
466
|
|
|
491
|
-
The team lead agent log for each epic is written to
|
|
467
|
+
The team lead agent log for each epic is written to `.ralph-teams/logs/` regardless of backend.
|
|
492
468
|
|
|
493
469
|
## Runtime Rules
|
|
494
470
|
|
|
@@ -511,7 +487,7 @@ The current execution contract is:
|
|
|
511
487
|
- the validator checks output independently from the builder's reasoning
|
|
512
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
|
|
513
489
|
- after updating `prd.json` for all attempted stories, the team lead must print `DONE: X/Y stories passed` and exit the session immediately
|
|
514
|
-
- pressing `Ctrl-C` writes
|
|
490
|
+
- pressing `Ctrl-C` writes `.ralph-teams/ralph-state.json` so the run can be resumed later with `ralph-teams resume`
|
|
515
491
|
|
|
516
492
|
## Troubleshooting
|
|
517
493
|
|
package/dist/commands/init.js
CHANGED
|
@@ -103,7 +103,7 @@ function buildInitPrompt(prdExample, outputPath) {
|
|
|
103
103
|
'- If they want to plan now, continue in the same session and discuss the implementation plan with the user.',
|
|
104
104
|
'- Planning must be collaborative: discuss the approach with the user and ask follow-up questions whenever scope, architecture, sequencing, ownership, or verification is ambiguous.',
|
|
105
105
|
'- Do not jump straight to writing plans if important implementation details are unclear. Resolve ambiguity through discussion first.',
|
|
106
|
-
'- For each epic the user chooses to plan, write ralph-teams/plans/plan-EPIC-xxx.md and update that epic in the PRD to set planned=true.',
|
|
106
|
+
'- For each epic the user chooses to plan, write .ralph-teams/plans/plan-EPIC-xxx.md and update that epic in the PRD to set planned=true.',
|
|
107
107
|
'- If the user only wants to plan some epics now, plan those and leave the others planned=false.',
|
|
108
108
|
'- If they want to skip, end cleanly after confirming the PRD is written.',
|
|
109
109
|
'- Do NOT tell the user to run `ralph-teams plan`, `./ralph.sh --plan`, or any other command at this point.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,0CA2EC;AA0CD,kCA0DC;AAxMD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAiD;AACjD,kDAA0B;AAM1B,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC;KAChD,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,eAAe,CAAC,UAAkB,EAAE,UAAkB;IACpE,OAAO;QACL,+CAA+C;QAC/C,4EAA4E;QAC5E,0GAA0G;QAC1G,iGAAiG;QACjG,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,qCAAqC;QACrC,2FAA2F;QAC3F,4FAA4F;QAC5F,uDAAuD;QACvD,EAAE;QACF,6CAA6C;QAC7C,2EAA2E;QAC3E,EAAE;QACF,uBAAuB;QACvB,8GAA8G;QAC9G,0DAA0D;QAC1D,sKAAsK;QACtK,EAAE;QACF,mCAAmC;QACnC,0GAA0G;QAC1G,sDAAsD;QACtD,kDAAkD;QAClD,kFAAkF;QAClF,qFAAqF;QACrF,4EAA4E;QAC5E,oEAAoE;QACpE,EAAE;QACF,mCAAmC;QACnC,gHAAgH;QAChH,gFAAgF;QAChF,mHAAmH;QACnH,+DAA+D;QAC/D,qFAAqF;QACrF,0EAA0E;QAC1E,sDAAsD;QACtD,EAAE;QACF,yBAAyB;QACzB,4CAA4C;QAC5C,EAAE;QACF,+BAA+B;QAC/B,2GAA2G;QAC3G,6GAA6G;QAC7G,qLAAqL;QACrL,sIAAsI;QACtI,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAqB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAW,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAqB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAW,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAGlD,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAyCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAkB7F;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,oBAAoB,EAAE,EAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CA+CR;AAED,wBAAsB,WAAW,CAC/B,OAAO,GAAE,MAAqB,EAC9B,OAAO,GAAE,WAAgB,EACzB,IAAI,GAAE,QAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
package/dist/commands/plan.js
CHANGED
|
@@ -46,6 +46,7 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
46
46
|
const config_1 = require("../config");
|
|
47
47
|
const discuss_1 = require("../discuss");
|
|
48
48
|
const prd_utils_1 = require("../prd-utils");
|
|
49
|
+
const runtime_paths_1 = require("../runtime-paths");
|
|
49
50
|
const defaultDeps = {
|
|
50
51
|
exit: (code) => process.exit(code),
|
|
51
52
|
loadConfig: config_1.loadConfig,
|
|
@@ -149,7 +150,7 @@ function buildPlanPrompt(prdPath, contexts, plansDir) {
|
|
|
149
150
|
async function planCommand(prdPath = './prd.json', options = {}, deps = defaultDeps) {
|
|
150
151
|
const { prd, resolved } = (0, prd_utils_1.loadPrd)(prdPath);
|
|
151
152
|
const projectRoot = path.dirname(resolved);
|
|
152
|
-
const plansDir =
|
|
153
|
+
const plansDir = (0, runtime_paths_1.getRalphPlansDir)(projectRoot);
|
|
153
154
|
const configLoader = deps.loadConfig ?? config_1.loadConfig;
|
|
154
155
|
const config = (0, config_1.mergeCliOverrides)(configLoader(projectRoot), {
|
|
155
156
|
...(options.backend !== undefined ? { backend: options.backend } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAqB,MAAM,WAAW,CAAC;AAG3F,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1G,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3G,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACxC;AA2ED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAqB,MAAM,WAAW,CAAC;AAG3F,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1G,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3G,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACxC;AA2ED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwB1F;AAgGD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,EACzB,IAAI,GAAE,QAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
package/dist/commands/task.js
CHANGED
|
@@ -141,6 +141,9 @@ function buildTaskExecutionPrompt(task, cwd, branch) {
|
|
|
141
141
|
'- If the runtime supports teammate model choice, respect explicit config overrides first; otherwise choose cheaper models for easy work and stronger models for difficult work.',
|
|
142
142
|
'- If the runtime is Codex, use these named teammate roles when spawning: planner_easy/planner_medium/planner_difficult, builder_easy/builder_medium/builder_difficult, validator_easy/validator_medium/validator_difficult.',
|
|
143
143
|
'- You may skip planning for very simple tasks, but plan internally or via a planner teammate when the task has ambiguity or design risk.',
|
|
144
|
+
'- When you use a planner, require it to design the automated tests that prove the task is done and pass that test design to the builder.',
|
|
145
|
+
'- The builder must add or update the task-relevant automated tests and make them pass.',
|
|
146
|
+
'- If you skip the planner, the builder must do TDD: define the automated tests first, make them fail, then implement until they pass.',
|
|
144
147
|
'- Validate the final result appropriately before finishing.',
|
|
145
148
|
'- At the end, print a concise summary of what changed and any verification performed, then exit.',
|
|
146
149
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGA,0DAgBC;AAED,
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export interface RalphConfig {
|
|
|
3
3
|
timeouts: {
|
|
4
4
|
/** Max seconds before an epic run is forcibly stopped. Default: 3600. */
|
|
5
5
|
epicTimeout: number;
|
|
6
|
-
/** Max idle seconds before an epic agent is considered hung. Default:
|
|
6
|
+
/** Max idle seconds before an epic agent is considered hung. Default: 600. */
|
|
7
7
|
idleTimeout: number;
|
|
8
8
|
};
|
|
9
9
|
execution: {
|
package/dist/config.js
CHANGED
package/dist/guidance.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* is saved to a file so the Builder agent can incorporate it on the next run.
|
|
6
6
|
*
|
|
7
7
|
* Guidance files are written to:
|
|
8
|
-
* <guidanceDir>/guidance-<storyId>.md (default guidanceDir: 'ralph-teams/guidance')
|
|
8
|
+
* <guidanceDir>/guidance-<storyId>.md (default guidanceDir: '.ralph-teams/guidance')
|
|
9
9
|
* e.g.
|
|
10
|
-
* ralph-teams/guidance/guidance-US-003.md
|
|
10
|
+
* .ralph-teams/guidance/guidance-US-003.md
|
|
11
11
|
*
|
|
12
12
|
* Pure I/O module with no terminal UI dependencies.
|
|
13
13
|
*/
|
package/dist/guidance.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* is saved to a file so the Builder agent can incorporate it on the next run.
|
|
7
7
|
*
|
|
8
8
|
* Guidance files are written to:
|
|
9
|
-
* <guidanceDir>/guidance-<storyId>.md (default guidanceDir: 'ralph-teams/guidance')
|
|
9
|
+
* <guidanceDir>/guidance-<storyId>.md (default guidanceDir: '.ralph-teams/guidance')
|
|
10
10
|
* e.g.
|
|
11
|
-
* ralph-teams/guidance/guidance-US-003.md
|
|
11
|
+
* .ralph-teams/guidance/guidance-US-003.md
|
|
12
12
|
*
|
|
13
13
|
* Pure I/O module with no terminal UI dependencies.
|
|
14
14
|
*/
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,6 @@ const reset_1 = require("./commands/reset");
|
|
|
14
14
|
const validate_1 = require("./commands/validate");
|
|
15
15
|
const summary_1 = require("./commands/summary");
|
|
16
16
|
const resume_1 = require("./commands/resume");
|
|
17
|
-
const discuss_1 = require("./commands/discuss");
|
|
18
17
|
const plan_1 = require("./commands/plan");
|
|
19
18
|
const task_1 = require("./commands/task");
|
|
20
19
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
@@ -69,13 +68,6 @@ program
|
|
|
69
68
|
.action((prdPath = './prd.json') => {
|
|
70
69
|
(0, summary_1.summaryCommand)(prdPath);
|
|
71
70
|
});
|
|
72
|
-
program
|
|
73
|
-
.command('discuss [path]')
|
|
74
|
-
.description('Start a guided discussion for failed user stories')
|
|
75
|
-
.option('--backend <backend>', 'AI backend to use (claude, copilot, or codex)')
|
|
76
|
-
.action(async (prdPath = './prd.json', options) => {
|
|
77
|
-
await (0, discuss_1.discussCommand)(prdPath, options);
|
|
78
|
-
});
|
|
79
71
|
program
|
|
80
72
|
.command('plan [path]')
|
|
81
73
|
.description('Discuss and create implementation plans for unplanned epics')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,8CAAkD;AAClD,0CAA8C;AAC9C,wCAA4C;AAC5C,0CAA8C;AAC9C,4CAAgD;AAChD,kDAAsD;AACtD,gDAAoD;AACpD,8CAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime-paths.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const RALPH_RUNTIME_DIRNAME = "ralph-teams";
|
|
1
|
+
export declare const RALPH_RUNTIME_DIRNAME = ".ralph-teams";
|
|
2
2
|
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-paths.d.ts","sourceRoot":"","sources":["../src/runtime-paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,
|
|
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"}
|
package/dist/runtime-paths.js
CHANGED
|
@@ -42,7 +42,7 @@ exports.getRalphGuidanceDir = getRalphGuidanceDir;
|
|
|
42
42
|
exports.getRalphWorktreesDir = getRalphWorktreesDir;
|
|
43
43
|
exports.getRalphStatePath = getRalphStatePath;
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
|
-
exports.RALPH_RUNTIME_DIRNAME = 'ralph-teams';
|
|
45
|
+
exports.RALPH_RUNTIME_DIRNAME = '.ralph-teams';
|
|
46
46
|
function getRalphRuntimeDir(projectRoot) {
|
|
47
47
|
return path.join(projectRoot, exports.RALPH_RUNTIME_DIRNAME);
|
|
48
48
|
}
|
|
@@ -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,
|
|
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"}
|
package/package.json
CHANGED
|
@@ -19,12 +19,19 @@ You coordinate epic execution. Do not write implementation code yourself.
|
|
|
19
19
|
- In practice, that includes new features, new files/modules, new routes/pages/APIs, refactors, cross-layer changes, external integrations, or anything requiring architectural judgment or sequencing.
|
|
20
20
|
- Only skip the Planner for clearly low-complexity epics where the acceptance criteria can be implemented literally with no meaningful design decisions.
|
|
21
21
|
- When delegating planning, explicitly tell the Planner the exact output path for the epic plan file and require it to write the plan there before replying.
|
|
22
|
+
- Treat a Planner response as incomplete if it only pastes or summarizes the plan in chat. The Planner must perform the file write itself and only then report completion.
|
|
23
|
+
- Before using a newly generated plan, verify that the plan file exists at the required path. If it does not, send the Planner back to write it instead of writing it yourself.
|
|
24
|
+
- The Planner output should stay at implementation/design-plan level. It may include function signatures or file/type/route contracts when useful, but it should not include full functions, code snippets, or pseudocode.
|
|
25
|
+
- The Planner must design the automated tests for each story in the epic. The plan must map acceptance criteria to concrete test cases, test level, likely test files, and verification commands for each `US-xxx`.
|
|
22
26
|
|
|
23
27
|
## Per Story Workflow
|
|
24
28
|
|
|
25
29
|
- Before starting a story, check the epic state file. If the story has `passes: true`, skip it.
|
|
26
|
-
- Before assigning the story, check whether
|
|
27
|
-
-
|
|
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
|
+
- 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
|
+
- Require the Builder to add or update automated tests for the story and make them pass before the story can count as complete.
|
|
33
|
+
- 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.
|
|
34
|
+
- Treat "no tests created" as a failed story attempt unless the Builder gives a concrete repository-based reason that automated coverage is not possible for that story.
|
|
28
35
|
- Wait for the Builder result and verify that it includes a concrete commit SHA before moving to validation.
|
|
29
36
|
|
|
30
37
|
## Validator Decision
|
package/ralph.sh
CHANGED
|
@@ -12,7 +12,7 @@ TEAM_LEAD_POLICY_FILE="${SCRIPT_DIR}/prompts/team-lead-policy.md"
|
|
|
12
12
|
# --- Config ---
|
|
13
13
|
PRD_FILE="${1:-prd.json}"
|
|
14
14
|
MAX_EPICS=10
|
|
15
|
-
RALPH_RUNTIME_DIRNAME="ralph-teams"
|
|
15
|
+
RALPH_RUNTIME_DIRNAME=".ralph-teams"
|
|
16
16
|
PROGRESS_FILE=""
|
|
17
17
|
BACKEND="claude"
|
|
18
18
|
PARALLEL=""
|
|
@@ -39,7 +39,7 @@ fi
|
|
|
39
39
|
# Read env vars as fallbacks (set by ralph-teams CLI from ralph.config.yml).
|
|
40
40
|
# CLI flags passed directly to ralph.sh take precedence over these env vars.
|
|
41
41
|
EPIC_TIMEOUT="${RALPH_EPIC_TIMEOUT:-3600}"
|
|
42
|
-
IDLE_TIMEOUT="${RALPH_IDLE_TIMEOUT:-
|
|
42
|
+
IDLE_TIMEOUT="${RALPH_IDLE_TIMEOUT:-600}"
|
|
43
43
|
MAX_CRASH_RETRIES="${RALPH_MAX_CRASH_RETRIES:-2}"
|
|
44
44
|
VALIDATOR_MAX_PUSHBACKS="${RALPH_VALIDATOR_MAX_PUSHBACKS:-1}"
|
|
45
45
|
MODEL_TEAM_LEAD="${RALPH_MODEL_TEAM_LEAD:-opus}"
|
|
@@ -385,7 +385,7 @@ echo "========================================================"
|
|
|
385
385
|
ensure_runtime_gitignore_entries() {
|
|
386
386
|
local gitignore_file=".gitignore"
|
|
387
387
|
local changed=0
|
|
388
|
-
local entries=("ralph-teams/")
|
|
388
|
+
local entries=(".ralph-teams/")
|
|
389
389
|
|
|
390
390
|
[ -f "$gitignore_file" ] || : > "$gitignore_file"
|
|
391
391
|
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { loadConfig } from '../config';
|
|
2
|
-
import { Prd } from '../prd-utils';
|
|
3
|
-
import { runFailedStoriesDiscussSession, type FailedStoryContext } from '../discuss';
|
|
4
|
-
type SupportedBackend = 'claude' | 'copilot' | 'codex';
|
|
5
|
-
interface DiscussOptions {
|
|
6
|
-
backend?: string;
|
|
7
|
-
}
|
|
8
|
-
interface DiscussDeps {
|
|
9
|
-
cwd: () => string;
|
|
10
|
-
exit: (code?: number) => never;
|
|
11
|
-
loadConfig?: typeof loadConfig;
|
|
12
|
-
runFailedStoriesDiscussSession?: typeof runFailedStoriesDiscussSession;
|
|
13
|
-
ensureBackendAvailable?: (backend: SupportedBackend) => void;
|
|
14
|
-
}
|
|
15
|
-
declare function collectFailedStoryContexts(prd: Prd, projectRoot: string): FailedStoryContext[];
|
|
16
|
-
export declare function discussCommand(prdPath?: string, options?: DiscussOptions, deps?: DiscussDeps): Promise<void>;
|
|
17
|
-
export { collectFailedStoryContexts };
|
|
18
|
-
//# sourceMappingURL=discuss.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discuss.d.ts","sourceRoot":"","sources":["../../src/commands/discuss.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAqB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAW,GAAG,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAEL,8BAA8B,EAC9B,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AASpB,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,8BAA8B,CAAC,EAAE,OAAO,8BAA8B,CAAC;IACvE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9D;AA2CD,iBAAS,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAsCvF;AAED,wBAAsB,cAAc,CAClC,OAAO,GAAE,MAAqB,EAC9B,OAAO,GAAE,cAAmB,EAC5B,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,OAAO,EAAE,0BAA0B,EAAE,CAAC"}
|
package/dist/commands/discuss.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.discussCommand = discussCommand;
|
|
40
|
-
exports.collectFailedStoryContexts = collectFailedStoryContexts;
|
|
41
|
-
const child_process_1 = require("child_process");
|
|
42
|
-
const path = __importStar(require("path"));
|
|
43
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
-
const config_1 = require("../config");
|
|
45
|
-
const prd_utils_1 = require("../prd-utils");
|
|
46
|
-
const discuss_1 = require("../discuss");
|
|
47
|
-
const guidance_1 = require("../guidance");
|
|
48
|
-
const runtime_paths_1 = require("../runtime-paths");
|
|
49
|
-
const defaultDeps = {
|
|
50
|
-
cwd: () => process.cwd(),
|
|
51
|
-
exit: (code) => process.exit(code),
|
|
52
|
-
loadConfig: config_1.loadConfig,
|
|
53
|
-
runFailedStoriesDiscussSession: discuss_1.runFailedStoriesDiscussSession,
|
|
54
|
-
};
|
|
55
|
-
function ensureBackendAvailable(backend) {
|
|
56
|
-
if (backend === 'claude') {
|
|
57
|
-
const result = (0, child_process_1.spawnSync)('command', ['-v', 'claude'], { shell: true, stdio: 'ignore' });
|
|
58
|
-
if (result.status !== 0) {
|
|
59
|
-
console.error(chalk_1.default.red('Error: claude CLI is not installed or not in PATH.'));
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (backend === 'copilot') {
|
|
65
|
-
const ghResult = (0, child_process_1.spawnSync)('command', ['-v', 'gh'], { shell: true, stdio: 'ignore' });
|
|
66
|
-
if (ghResult.status !== 0) {
|
|
67
|
-
console.error(chalk_1.default.red('Error: gh CLI is not installed or not in PATH.'));
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
const copilotResult = (0, child_process_1.spawnSync)('gh', ['copilot', '--', '--version'], {
|
|
71
|
-
stdio: 'ignore',
|
|
72
|
-
});
|
|
73
|
-
if (copilotResult.status !== 0) {
|
|
74
|
-
console.error(chalk_1.default.red('Error: GitHub Copilot CLI is not available.'));
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const codexResult = (0, child_process_1.spawnSync)('command', ['-v', 'codex'], { shell: true, stdio: 'ignore' });
|
|
80
|
-
if (codexResult.status !== 0) {
|
|
81
|
-
console.error(chalk_1.default.red('Error: codex CLI is not installed or not in PATH.'));
|
|
82
|
-
process.exit(1);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
function collectFailedStoryContexts(prd, projectRoot) {
|
|
86
|
-
const prdPath = path.join(projectRoot, 'prd.json');
|
|
87
|
-
const progressPath = (0, runtime_paths_1.getRalphProgressPath)(projectRoot);
|
|
88
|
-
const plansDir = (0, runtime_paths_1.getRalphPlansDir)(projectRoot);
|
|
89
|
-
const guidanceDir = (0, runtime_paths_1.getRalphGuidanceDir)(projectRoot);
|
|
90
|
-
const worktreesDir = (0, runtime_paths_1.getRalphWorktreesDir)(projectRoot);
|
|
91
|
-
const contexts = [];
|
|
92
|
-
for (const epic of prd.epics) {
|
|
93
|
-
const epicMayContainFailures = epic.status === 'failed' || epic.status === 'partial' || epic.status === 'merge-failed';
|
|
94
|
-
for (const story of epic.userStories) {
|
|
95
|
-
const reason = story.failureReason?.trim() ?? null;
|
|
96
|
-
if (story.passes) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
if (!reason && !epicMayContainFailures) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const base = (0, discuss_1.gatherDiscussContext)(story.id, prdPath, progressPath, plansDir, path.join(worktreesDir, epic.id));
|
|
103
|
-
contexts.push({
|
|
104
|
-
...base,
|
|
105
|
-
storyTitle: story.title,
|
|
106
|
-
epicTitle: epic.title,
|
|
107
|
-
failureReason: reason,
|
|
108
|
-
guidancePath: path.resolve((0, guidance_1.getGuidancePath)(story.id, guidanceDir)),
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return contexts;
|
|
113
|
-
}
|
|
114
|
-
async function discussCommand(prdPath = './prd.json', options = {}, deps = defaultDeps) {
|
|
115
|
-
const { prd, resolved } = (0, prd_utils_1.loadPrd)(prdPath);
|
|
116
|
-
const projectRoot = path.dirname(resolved);
|
|
117
|
-
const configLoader = deps.loadConfig ?? config_1.loadConfig;
|
|
118
|
-
const config = (0, config_1.mergeCliOverrides)(configLoader(projectRoot), {
|
|
119
|
-
...(options.backend !== undefined ? { backend: options.backend } : {}),
|
|
120
|
-
});
|
|
121
|
-
const backend = config.execution.backend;
|
|
122
|
-
const failedStories = collectFailedStoryContexts(prd, projectRoot);
|
|
123
|
-
if (failedStories.length === 0) {
|
|
124
|
-
console.log(chalk_1.default.yellow('No failed user stories found to discuss.'));
|
|
125
|
-
deps.exit(0);
|
|
126
|
-
}
|
|
127
|
-
const ensureBackend = deps.ensureBackendAvailable ?? ensureBackendAvailable;
|
|
128
|
-
ensureBackend(backend);
|
|
129
|
-
console.log(chalk_1.default.bold('\nralph-teams discuss\n'));
|
|
130
|
-
console.log(chalk_1.default.dim(`Using PRD: ${resolved}`));
|
|
131
|
-
console.log(chalk_1.default.dim(`Using backend: ${backend}`));
|
|
132
|
-
console.log(chalk_1.default.dim(`Found ${failedStories.length} failed stor${failedStories.length === 1 ? 'y' : 'ies'}.\n`));
|
|
133
|
-
const runner = deps.runFailedStoriesDiscussSession ?? discuss_1.runFailedStoriesDiscussSession;
|
|
134
|
-
await runner(failedStories, { backend });
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=discuss.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discuss.js","sourceRoot":"","sources":["../../src/commands/discuss.ts"],"names":[],"mappings":"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"}
|