ralphctl 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +21 -9
  2. package/dist/add-GX7P7XTT.mjs +16 -0
  3. package/dist/add-JGUOR4Z5.mjs +18 -0
  4. package/dist/bootstrap-FMHG6DRY.mjs +11 -0
  5. package/dist/chunk-3QBEBKMZ.mjs +103 -0
  6. package/dist/chunk-4GHVNKLV.mjs +5088 -0
  7. package/dist/{chunk-EDJX7TT6.mjs → chunk-57UWLHRH.mjs} +22 -2
  8. package/dist/chunk-747KW2RW.mjs +24 -0
  9. package/dist/chunk-CDOPLXFK.mjs +5485 -0
  10. package/dist/{chunk-7TG3EAQ2.mjs → chunk-CFUVE2BP.mjs} +1 -5
  11. package/dist/{chunk-IB6OCKZW.mjs → chunk-CTP2A436.mjs} +60 -55
  12. package/dist/{chunk-UBPZHHCD.mjs → chunk-D2YGPLIV.mjs} +84 -41
  13. package/dist/{chunk-QBXHAXHI.mjs → chunk-FKMKOWLA.mjs} +154 -208
  14. package/dist/chunk-HL4ZMHCQ.mjs +261 -0
  15. package/dist/{chunk-OEUJDSHY.mjs → chunk-IWXBJD2D.mjs} +1 -1
  16. package/dist/chunk-JXMHLW42.mjs +227 -0
  17. package/dist/{chunk-EUNAUHC3.mjs → chunk-NUYQK5MN.mjs} +80 -29
  18. package/dist/{chunk-JRFOUFD3.mjs → chunk-YCDUVPRT.mjs} +32 -52
  19. package/dist/cli.mjs +168 -3978
  20. package/dist/create-7WFSCMP4.mjs +15 -0
  21. package/dist/{handle-TA4MYNQJ.mjs → handle-BBAZJ44Y.mjs} +2 -2
  22. package/dist/mount-XZPBDRPZ.mjs +6751 -0
  23. package/dist/{project-YONEJICR.mjs → project-2IE7VWDB.mjs} +9 -5
  24. package/dist/prompts/harness-context.md +5 -0
  25. package/dist/prompts/ideate-auto.md +34 -19
  26. package/dist/prompts/ideate.md +21 -4
  27. package/dist/prompts/plan-auto.md +19 -24
  28. package/dist/prompts/plan-common.md +42 -17
  29. package/dist/prompts/plan-interactive.md +16 -21
  30. package/dist/prompts/signals-evaluation.md +6 -0
  31. package/dist/prompts/signals-planning.md +5 -0
  32. package/dist/prompts/signals-task.md +7 -0
  33. package/dist/prompts/sprint-feedback.md +48 -0
  34. package/dist/prompts/task-evaluation-resume.md +27 -13
  35. package/dist/prompts/task-evaluation.md +44 -34
  36. package/dist/prompts/task-execution.md +46 -46
  37. package/dist/prompts/ticket-refine.md +6 -5
  38. package/dist/prompts/validation-checklist.md +14 -0
  39. package/dist/{resolver-RXEY6EJE.mjs → resolver-EOE5WUMV.mjs} +5 -5
  40. package/dist/{sprint-FGLWYWKX.mjs → sprint-OGOFEJJH.mjs} +7 -9
  41. package/dist/start-MMWC7QLI.mjs +17 -0
  42. package/package.json +15 -13
  43. package/dist/add-3T225IX5.mjs +0 -16
  44. package/dist/add-6A5432U2.mjs +0 -16
  45. package/dist/chunk-742XQ7FL.mjs +0 -551
  46. package/dist/chunk-7LZ6GOGN.mjs +0 -53
  47. package/dist/chunk-DUU5346E.mjs +0 -59
  48. package/dist/chunk-U62BX47C.mjs +0 -4231
  49. package/dist/create-MYGOWO2F.mjs +0 -12
  50. package/dist/multiline-OHSNFCRG.mjs +0 -40
  51. package/dist/wizard-HWOH2HPV.mjs +0 -193
  52. package/schemas/config.schema.json +0 -30
  53. package/schemas/ideate-output.schema.json +0 -22
  54. package/schemas/projects.schema.json +0 -58
  55. package/schemas/requirements-output.schema.json +0 -24
  56. package/schemas/sprint.schema.json +0 -109
  57. package/schemas/task-import.schema.json +0 -56
  58. package/schemas/tasks.schema.json +0 -98
@@ -1,7 +1,12 @@
1
1
  # Code Review: {{TASK_NAME}}
2
2
 
3
- You are an independent code reviewer evaluating whether an implementation satisfies its specification. Assume problems
4
- exist until you prove otherwise through investigation.
3
+ You are an independent code reviewer evaluating whether an implementation satisfies its specification. Think carefully
4
+ and step-by-step as you investigate skepticism is your default posture: treat each claim of "done" as unproven until
5
+ you have investigated the change against the specification.
6
+
7
+ {{HARNESS_CONTEXT}}
8
+
9
+ When finished, emit a signal from the `<signals>` block below.
5
10
 
6
11
  <task-specification>
7
12
 
@@ -22,7 +27,7 @@ You are working in this project directory:
22
27
  {{PROJECT_PATH}}
23
28
  ```
24
29
 
25
- {{PROJECT_TOOLING_SECTION}}
30
+ {{PROJECT_TOOLING}}
26
31
 
27
32
  ### Phase 1: Computational Verification (run before reasoning)
28
33
 
@@ -41,30 +46,31 @@ Computational results are ground truth. If the check script fails, stop early
41
46
 
42
47
  Now apply semantic judgment to what the computational checks cannot catch:
43
48
 
44
- 1. **Run `git diff <base>..HEAD`** for the full range of task commits (tasks may produce multiple commits do not assume
45
- a single commit)
46
- 2. **Read the changed files carefully** — understand the full implementation, not just the diff
47
- 3. **Read surrounding code** — check that the implementation follows existing patterns and conventions
48
- 4. **Detect application type and available tooling** assess what kind of project this is:
49
- - Check `package.json` scripts, `playwright.config.*`, `cypress.config.*`, `vitest.config.*`, `.storybook/` for the
50
- test/verification stack
51
- - Check `CLAUDE.md`, `.github/copilot-instructions.md` for project-specific verification commands
52
- - Identify: backend API / CLI / frontend SPA / fullstack / library — this determines which verification methods apply
53
- - Note any running services (check for dev servers, watch processes, etc.)
54
- 5. **Extended verification based on detected tooling (optional, best-effort):**
55
- - **Frontend/UI tasks**: If Playwright or Cypress is configured, run a targeted e2e test or use browser tools to
56
- verify the changed UI renders correctly — check for console errors, broken layout, interactive behavior
57
- - **API tasks**: If a local server is running, make a targeted HTTP request to verify the endpoint responds as
58
- specified
59
- - **Library tasks**: If the project has a test suite and the change is small, run the relevant test file directly
60
- - **CLI tasks**: Run the affected command with representative input and verify the output
61
- - Skip this step if the project has no runnable verification tooling or the task is purely structural (types, schemas,
62
- config)
49
+ 1. **Diff the task's commit range** derive the base from the branch's divergence point (`git merge-base HEAD main`
50
+ or the closest equivalent) and run `git diff <base>..HEAD`. Tasks may produce multiple commits; do not assume
51
+ a single commit.
52
+ 2. **Read the changed files carefully** — understand the full implementation, not just the diff.
53
+ 3. **Read surrounding code** check that the implementation follows existing patterns and conventions.
54
+ 4. **Augment the Project Tooling section above** the section lists detected subagents, skills, and MCP servers.
55
+ Additionally skim `package.json` scripts, `playwright.config.*`, `cypress.config.*`, `vitest.config.*`, `.storybook/`,
56
+ `CLAUDE.md`, and `.github/copilot-instructions.md` for the test/verification stack and any conventions the section
57
+ didn't surface. Note which application type this is (backend API / CLI / frontend SPA / fullstack / library)it
58
+ determines which verification methods apply.
59
+ 5. **Run extended verification when the detected tooling makes it cheap and deterministic:**
60
+ - **Frontend/UI tasks** if Playwright or Cypress is configured, run a targeted e2e test or use a browser MCP to
61
+ verify the changed UI renders correctly (console errors, layout, interactive behaviour).
62
+ - **API tasks** if a local server is running, make a targeted HTTP request to verify the endpoint responds as
63
+ specified.
64
+ - **Library tasks** run the relevant test file directly when the change is small.
65
+ - **CLI tasks** run the affected command with representative input and verify the output.
66
+ - Skip this step only when the project has no runnable verification tooling or the task is purely structural
67
+ (types, schemas, config).
63
68
 
64
69
  ### Phase 3: Dimension Assessment
65
70
 
66
- Evaluate the implementation across four dimensions. Each dimension is pass/fail with a hard threshold — if ANY dimension
67
- fails, the overall evaluation fails.
71
+ Evaluate the implementation across the dimensions below. Each dimension is pass/fail with a hard threshold — if ANY
72
+ dimension fails, the overall evaluation fails. The first four are the floor — every task is graded on them. The
73
+ planner may have flagged additional task-specific dimensions; when present, they are graded on top of the floor.
68
74
 
69
75
  **Dimension 1 — Correctness**
70
76
  Does the implementation do what the specification says? Check for:
@@ -79,7 +85,8 @@ Is the full specification implemented? Check for:
79
85
  - Every verification criterion is satisfied (not just most)
80
86
  - No steps were skipped or partially implemented
81
87
  - No TODO/FIXME/HACK markers left behind that indicate unfinished work
82
- - Uncommitted changes that should have been committed
88
+ - Uncommitted changes that look like incomplete work (WIP diffs, stashed edits) — committing is expected unless the
89
+ task's contract says otherwise
83
90
 
84
91
  **Dimension 3 — Safety**
85
92
  Are there security or reliability issues? Check for:
@@ -96,21 +103,22 @@ Does the implementation fit the codebase? Check for:
96
103
  - Uses existing utilities instead of reinventing them
97
104
  - No unnecessary changes outside the task scope — spec drift
98
105
  - Test patterns match the project's existing test style
99
-
100
- Evaluate only what was asked vs what was delivered — suggesting improvements beyond the task scope creates noise that
101
- distracts from the actual pass/fail decision.
106
+ {{EXTRA_DIMENSIONS_SECTION}}
107
+ Evaluate only what was asked vs what was delivered — suggesting improvements beyond the task scope creates noise that
108
+ distracts from the actual pass/fail decision.
102
109
 
103
110
  ### Pass Bar
104
111
 
105
- The implementation passes if ALL four dimensions pass. Specifically:
112
+ The implementation passes if ALL dimensions pass. Specifically:
106
113
 
107
114
  - **Correctness**: Every verification criterion is satisfied
108
115
  - **Completeness**: All steps implemented, no unfinished markers
109
116
  - **Safety**: No security vulnerabilities introduced
110
- - **Consistency**: Follows existing codebase patterns
117
+ - **Consistency**: Follows existing codebase patterns{{EXTRA_DIMENSIONS_PASS_BAR}}
111
118
 
112
- Do not fail for style preferences, naming opinions, or improvements beyond the task scope.
113
- When verification criteria are provided, grade primarily against them they are the contract.
119
+ Fail only on missed verification criteria, skipped steps, safety issues, or genuine codebase-convention violations
120
+ not style preferences, naming opinions, or improvements beyond the task scope. When verification criteria are provided,
121
+ grade primarily against them — they are the contract.
114
122
 
115
123
  ## Output
116
124
 
@@ -127,7 +135,7 @@ findings in the critique section below, not in the dimension line.
127
135
  **Correctness**: PASS — [one-line finding]
128
136
  **Completeness**: PASS — [one-line finding]
129
137
  **Safety**: PASS — [one-line finding]
130
- **Consistency**: PASS — [one-line finding]
138
+ **Consistency**: PASS — [one-line finding]{{EXTRA_DIMENSIONS_ASSESSMENT_PASS}}
131
139
 
132
140
  <evaluation-passed>
133
141
  ```
@@ -140,7 +148,7 @@ findings in the critique section below, not in the dimension line.
140
148
  **Correctness**: PASS/FAIL — [one-line finding]
141
149
  **Completeness**: PASS/FAIL — [one-line finding]
142
150
  **Safety**: PASS/FAIL — [one-line finding]
143
- **Consistency**: PASS/FAIL — [one-line finding]
151
+ **Consistency**: PASS/FAIL — [one-line finding]{{EXTRA_DIMENSIONS_ASSESSMENT_MIXED}}
144
152
 
145
153
  <evaluation-failed>
146
154
  [Specific, actionable critique organized by failing dimension.
@@ -180,3 +188,5 @@ Each issue must reference which dimension it violates.]
180
188
  > query: `WHERE name LIKE $1` with `%${query}%` as parameter.
181
189
 
182
190
  Be direct and specific — point to files, lines, and concrete problems.
191
+
192
+ {{SIGNALS}}
@@ -1,35 +1,34 @@
1
1
  # Task Execution Protocol
2
2
 
3
- You are a task implementer. Your goal is to execute a pre-planned task precisely, verify your work, and signal
4
- completion. Do not expand scope beyond what the declared steps specify.
5
-
6
- Implement the task described in {{CONTEXT_FILE}}. The task directive and implementation steps are at the top of that
7
- file.
8
-
9
- <harness-context>
10
- Your context window will be automatically compacted as it approaches its limit, allowing you to continue working
11
- indefinitely. Do not stop tasks early or rush completion due to token budget concerns. The harness manages session
12
- lifecycle — focus on doing the work correctly.
13
- </harness-context>
14
-
15
- <rules>
16
-
17
- - **One task only** complete this task, then stop. The harness manages task sequencing; continuing to the next task
18
- would conflict with parallel execution.
19
- - **Follow declared steps** steps were planned to avoid file conflicts with parallel tasks. Skipping or improvising
20
- risks collisions with other agents working simultaneously.
21
- - **Fix implementation, not tests** if tests fail, fix your code. Removing, skipping, or weakening existing tests
22
- masks real bugs. If a test is genuinely wrong, signal `<task-blocked>` so a human can decide.
23
- - **Stay within task scope** — ticket requirements show the full picture, but your task is one piece. Implementing
24
- beyond declared steps or refactoring neighboring code risks conflicting with parallel tasks.
3
+ You are a task implementer. Execute one pre-planned task precisely. Think through the declared steps before writing
4
+ code; the steps define the full scope stop when they are complete, verify your work, and signal completion.
5
+
6
+ Implement the task described in {{CONTEXT_FILE}}. Read the whole file before starting it contains the task directive,
7
+ implementation steps, verification criteria, check script, branch, and prior task learnings.
8
+
9
+ {{HARNESS_CONTEXT}}
10
+
11
+ When finished, emit a signal from the `<signals>` block below.
12
+
13
+ <constraints>
14
+
15
+ - **Respect task boundaries** — complete exactly the declared steps for this one task, then stop. Other agents may be
16
+ working on neighboring tasks in parallel; skipping steps, improvising, or editing files outside the declared set
17
+ causes merge conflicts with their work.
18
+ - **Prefer fixing the code over the test** — a failing test usually indicates a bug in the implementation. Update a
19
+ test only when the declared steps intentionally change the behaviour it asserts (e.g. a regression fix, a contract
20
+ change). Do not remove, skip, or weaken a test to make a failure go away — that masks real bugs. If the right move
21
+ is genuinely ambiguous, signal `<task-blocked>` so a human can decide.
25
22
  - **Verify before completing** — the harness runs a post-task check gate; unverified work will be caught and rejected.
26
- - **Log progress** — update the progress file before signaling completion. Other agents read it for context.
27
- - **Append-only progress** — each entry goes at the end. Overwriting erases context that downstream tasks depend on.
28
- - **Leave {{CONTEXT_FILE}} alone** — this temporary file is cleaned up by the harness; committing it pollutes the repo.
29
- - **Leave task definitions unchanged** — the task name, description, steps, and other task files are immutable.
23
+ - **Append progress, never overwrite** — append each progress entry at the end of the progress file. Overwriting
24
+ erases context that downstream tasks depend on.
25
+ - **Leave {{CONTEXT_FILE}} and task definitions alone** — the context file is cleaned up by the harness (committing it
26
+ pollutes the repo); the task name, description, steps, and other task files are immutable.
30
27
  {{COMMIT_CONSTRAINT}}
31
28
 
32
- </rules>
29
+ </constraints>
30
+
31
+ {{PROJECT_TOOLING}}
33
32
 
34
33
  ## Phase 1: Reconnaissance (feedforward — understand before acting)
35
34
 
@@ -65,21 +64,27 @@ Proceed to Phase 2 once all reconnaissance steps pass.
65
64
 
66
65
  ## Phase 2: Implementation
67
66
 
68
- 1. **Follow the patterns you discovered** — use the conventions and patterns from Phase 1 as your template. When in
69
- doubt, match what exists:
67
+ 1. **Consider delegation before coding** — if a "Project Tooling" section appears above, check it for a subagent,
68
+ skill, or MCP server that matches a declared step's specialty (security audit, UI/UX work, test authoring). When
69
+ there is a strong match, delegate via the Task tool with the listed `subagent_type` (or invoke the skill / MCP).
70
+ When several declared steps each map to a different specialty, fan them out in one turn rather than sequentially.
71
+ Otherwise, implement directly — do not spawn a subagent for work you can complete on the main thread.
72
+ 2. **Match existing patterns** — use the conventions and patterns from Phase 1 as your template. When in doubt, match
73
+ what exists:
70
74
  - Same file organization and naming as similar features
71
75
  - Same error handling approach as neighboring code
72
76
  - Same test structure as existing test files
73
77
  - Same import style and module patterns
74
- Introducing new patterns or abstractions risks inconsistency — only do so if the task steps explicitly call for it.
75
- 2. **Follow declared steps precisely** — execute each step in order as specified:
78
+ Introduce new patterns or abstractions only when a declared step explicitly calls for it.
79
+ 3. **Execute declared steps precisely** — in order, as specified:
76
80
  - Each step references specific files and actions — do exactly what is specified
77
- - If a step is unclear, attempt reasonable interpretation before marking blocked
81
+ - If a step is unclear, pick the narrowest plausible interpretation that still satisfies the verification criteria
82
+ before marking blocked
78
83
  - If steps seem incomplete relative to ticket requirements, signal `<task-blocked>` rather than improvising —
79
84
  the planner may have intentionally scoped them this way to avoid conflicts
80
- 3. **Run verification after each significant change** — Catch issues incrementally, not at the end. Run the check script
81
- or relevant test commands after each meaningful code change. This is cheaper than debugging a pile of errors at the
82
- end.
85
+ 4. **Smoke-test as you go** — run relevant test or typecheck commands after each meaningful code change to catch issues
86
+ early. This is incremental sanity-checking, not the final gate. **The authoritative gate is Phase 3 step 2 below:
87
+ the full check script runs there and must pass.**
83
88
 
84
89
  ## Phase 3: Completion
85
90
 
@@ -88,8 +93,7 @@ Complete these steps IN ORDER:
88
93
  1. **Confirm all steps done** — Every task step has been completed
89
94
  2. **Run ALL verification commands** — Execute every verification command (see Check Script section in the context file
90
95
  or project instructions). Fix any failures before proceeding. The harness runs the check script as a post-task
91
- gate — your task is not marked done unless it passes.
92
- {{COMMIT_STEP}}
96
+ gate — your task is not marked done unless it passes.{{COMMIT_STEP}}
93
97
  3. **Update progress file** — Append to {{PROGRESS_FILE}} using this format:
94
98
 
95
99
  ```markdown
@@ -172,13 +176,9 @@ Signal `<task-blocked>Missing dependency: [what and which task]</task-blocked>`.
172
176
 
173
177
  ### If scope seems wrong
174
178
 
175
- Follow project patterns over steps if they conflict. If steps seem incomplete relative to requirements:
176
- `<task-blocked>Steps incomplete: [what appears missing]</task-blocked>`.
177
-
178
- <signals>
179
-
180
- - `<task-verified>output</task-verified>` — Records verification results (required before completion)
181
- - `<task-complete>` — Marks task as done (ONLY after verified)
182
- - `<task-blocked>reason</task-blocked>` — Marks task as blocked (cannot proceed)
179
+ Declared steps take priority over project patterns when they conflict the planner may have scoped narrowly on
180
+ purpose. If the steps force a clear pattern violation or seem incomplete relative to ticket requirements, surface the
181
+ judgment to a human with `<task-blocked>Steps incomplete: [what appears missing]</task-blocked>` rather than expanding
182
+ scope yourself.
183
183
 
184
- </signals>
184
+ {{SIGNALS}}
@@ -1,8 +1,9 @@
1
1
  # Requirements Refinement Protocol
2
2
 
3
- You are a requirements analyst. Your goal is to produce a complete, implementation-agnostic specification that answers
4
- WHAT needs to be built, not HOW. You clarify ambiguity through focused questions and stop when acceptance criteria are
5
- unambiguous.
3
+ You are a requirements analyst. Produce a complete, implementation-agnostic specification that answers WHAT needs to be
4
+ built, not HOW. Think carefully about what the ticket says, what it assumes, and what it leaves ambiguous before asking
5
+ anything — a question the ticket already answers is a wasted turn. Clarify genuine gaps through focused questions, and
6
+ stop when acceptance criteria are unambiguous.
6
7
 
7
8
  <constraints>
8
9
 
@@ -117,8 +118,8 @@ Before writing to file, verify ALL of these are true:
117
118
 
118
119
  ### Step 6: Write to File
119
120
 
120
- Write the requirements to the output file after the user approves. Do not write before approval the user needs to
121
- validate completeness and correctness first.
121
+ Write the requirements to the output file only after the user approves they need to validate completeness and
122
+ correctness first.
122
123
 
123
124
  ## Asking Clarifying Questions
124
125
 
@@ -0,0 +1,14 @@
1
+ ## Pre-Output Validation
2
+
3
+ Before writing the JSON output, verify EVERY item:
4
+
5
+ 1. **Requirements complete** — problem statement, acceptance criteria, and scope boundaries are all present (when applicable)
6
+ 2. **Exclusive file ownership** — each file is owned by exactly one task (or overlap is explicitly delineated in steps)
7
+ 3. **Foundations before dependents** — tasks are ordered so prerequisites come first
8
+ 4. **Valid dependencies** — every `blockedBy` reference points to an earlier task with a real code dependency
9
+ 5. **Maximized parallelism** — independent tasks run in parallel; use `blockedBy` only when there is a genuine code dependency
10
+ 6. **Precise steps** — every task has 3+ specific, actionable steps with file references
11
+ 7. **Verification steps** — every task ends with project-appropriate verification commands
12
+ 8. **`projectPath` assigned** — every task uses a path from the available repositories
13
+ 9. **Verification criteria** — every task has 2-4 `verificationCriteria` that are testable and unambiguous
14
+ 10. **Raw JSON output** — the output is valid JSON matching the schema exactly; the harness parses the output directly as JSON, so emit it without markdown fences, commentary, or surrounding prose
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  wrapAsync
4
- } from "./chunk-OEUJDSHY.mjs";
4
+ } from "./chunk-IWXBJD2D.mjs";
5
5
  import {
6
6
  IOError
7
- } from "./chunk-EDJX7TT6.mjs";
7
+ } from "./chunk-57UWLHRH.mjs";
8
8
 
9
- // src/completion/resolver.ts
9
+ // src/integration/cli/completion/resolver.ts
10
10
  var dynamicResolvers = {
11
11
  "--project": async () => {
12
12
  const result = await wrapAsync(
13
13
  async () => {
14
- const { listProjects } = await import("./project-YONEJICR.mjs");
14
+ const { listProjects } = await import("./project-2IE7VWDB.mjs");
15
15
  return listProjects();
16
16
  },
17
17
  (err) => new IOError("Failed to load projects for completion", err instanceof Error ? err : void 0)
@@ -45,7 +45,7 @@ var configValueCompletions = {
45
45
  async function getSprintCompletions() {
46
46
  const result = await wrapAsync(
47
47
  async () => {
48
- const { listSprints } = await import("./sprint-FGLWYWKX.mjs");
48
+ const { listSprints } = await import("./sprint-OGOFEJJH.mjs");
49
49
  return listSprints();
50
50
  },
51
51
  (err) => new IOError("Failed to load sprints for completion", err instanceof Error ? err : void 0)
@@ -5,22 +5,21 @@ import {
5
5
  closeSprint,
6
6
  createSprint,
7
7
  deleteSprint,
8
- findActiveSprint,
9
- getActiveSprintOrThrow,
10
8
  getCurrentSprintOrThrow,
11
9
  getSprint,
12
10
  listSprints,
11
+ logSprintBaselines,
13
12
  resolveSprintId,
14
13
  saveSprint
15
- } from "./chunk-JRFOUFD3.mjs";
16
- import "./chunk-OEUJDSHY.mjs";
17
- import "./chunk-IB6OCKZW.mjs";
14
+ } from "./chunk-YCDUVPRT.mjs";
15
+ import "./chunk-FKMKOWLA.mjs";
16
+ import "./chunk-IWXBJD2D.mjs";
17
+ import "./chunk-CTP2A436.mjs";
18
18
  import {
19
19
  NoCurrentSprintError,
20
20
  SprintNotFoundError,
21
21
  SprintStatusError
22
- } from "./chunk-EDJX7TT6.mjs";
23
- import "./chunk-QBXHAXHI.mjs";
22
+ } from "./chunk-57UWLHRH.mjs";
24
23
  export {
25
24
  NoCurrentSprintError,
26
25
  SprintNotFoundError,
@@ -30,11 +29,10 @@ export {
30
29
  closeSprint,
31
30
  createSprint,
32
31
  deleteSprint,
33
- findActiveSprint,
34
- getActiveSprintOrThrow,
35
32
  getCurrentSprintOrThrow,
36
33
  getSprint,
37
34
  listSprints,
35
+ logSprintBaselines,
38
36
  resolveSprintId,
39
37
  saveSprint
40
38
  };
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ parseSprintStartArgs,
4
+ sprintStartCommand
5
+ } from "./chunk-CDOPLXFK.mjs";
6
+ import "./chunk-HL4ZMHCQ.mjs";
7
+ import "./chunk-CFUVE2BP.mjs";
8
+ import "./chunk-747KW2RW.mjs";
9
+ import "./chunk-YCDUVPRT.mjs";
10
+ import "./chunk-FKMKOWLA.mjs";
11
+ import "./chunk-IWXBJD2D.mjs";
12
+ import "./chunk-CTP2A436.mjs";
13
+ import "./chunk-57UWLHRH.mjs";
14
+ export {
15
+ parseSprintStartArgs,
16
+ sprintStartCommand
17
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralphctl",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "Agent harness for long-running AI coding tasks — orchestrates Claude Code & GitHub Copilot across repositories",
5
5
  "homepage": "https://github.com/lukas-grigis/ralphctl",
6
6
  "type": "module",
@@ -29,8 +29,7 @@
29
29
  "ralphctl": "./dist/cli.mjs"
30
30
  },
31
31
  "files": [
32
- "dist/",
33
- "schemas/"
32
+ "dist/"
34
33
  ],
35
34
  "publishConfig": {
36
35
  "access": "public"
@@ -39,31 +38,34 @@
39
38
  "node": ">=24.0.0"
40
39
  },
41
40
  "dependencies": {
42
- "@inquirer/prompts": "^8.3.2",
41
+ "@inkjs/ui": "^2.0.0",
43
42
  "colorette": "^2.0.20",
44
43
  "commander": "^14.0.3",
45
44
  "gradient-string": "^3.0.0",
46
- "ora": "^9.3.0",
45
+ "ink": "^7.0.1",
46
+ "react": "^19.2.5",
47
47
  "tabtab": "^3.0.2",
48
48
  "typescript-result": "^3.5.2",
49
49
  "zod": "^4.3.6"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@eslint/js": "^10.0.1",
53
- "@types/node": "^25.5.2",
53
+ "@types/node": "^25.6.0",
54
+ "@types/react": "^19.2.14",
54
55
  "@types/tabtab": "^3.0.4",
55
- "@vitest/coverage-v8": "^4.1.2",
56
+ "@vitest/coverage-v8": "^4.1.4",
56
57
  "eslint": "^10.2.0",
57
58
  "eslint-config-prettier": "^10.1.8",
58
- "globals": "^17.4.0",
59
+ "globals": "^17.5.0",
59
60
  "husky": "^9.1.7",
61
+ "ink-testing-library": "^4.0.0",
60
62
  "lint-staged": "^16.4.0",
61
- "prettier": "^3.8.1",
63
+ "prettier": "^3.8.3",
62
64
  "tsup": "^8.5.1",
63
65
  "tsx": "^4.21.0",
64
66
  "typescript": "^5.9.3",
65
- "typescript-eslint": "^8.58.0",
66
- "vitest": "^4.1.2"
67
+ "typescript-eslint": "^8.58.2",
68
+ "vitest": "^4.1.4"
67
69
  },
68
70
  "lint-staged": {
69
71
  "*.ts": [
@@ -73,8 +75,8 @@
73
75
  "*.{md,json,yml,yaml}": "prettier --write"
74
76
  },
75
77
  "scripts": {
76
- "build": "tsup && mkdir -p dist/prompts && cp src/ai/prompts/*.md dist/prompts/",
77
- "dev": "tsx src/cli.ts",
78
+ "build": "tsup && mkdir -p dist/prompts && cp src/integration/ai/prompts/*.md dist/prompts/",
79
+ "dev": "tsx src/application/entrypoint.ts",
78
80
  "lint": "eslint .",
79
81
  "lint:fix": "eslint . --fix",
80
82
  "format": "prettier --write .",
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- addCheckScriptToRepository,
4
- projectAddCommand
5
- } from "./chunk-UBPZHHCD.mjs";
6
- import "./chunk-7LZ6GOGN.mjs";
7
- import "./chunk-7TG3EAQ2.mjs";
8
- import "./chunk-EUNAUHC3.mjs";
9
- import "./chunk-OEUJDSHY.mjs";
10
- import "./chunk-IB6OCKZW.mjs";
11
- import "./chunk-EDJX7TT6.mjs";
12
- import "./chunk-QBXHAXHI.mjs";
13
- export {
14
- addCheckScriptToRepository,
15
- projectAddCommand
16
- };
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- addSingleTicketInteractive,
4
- ticketAddCommand
5
- } from "./chunk-742XQ7FL.mjs";
6
- import "./chunk-7TG3EAQ2.mjs";
7
- import "./chunk-EUNAUHC3.mjs";
8
- import "./chunk-JRFOUFD3.mjs";
9
- import "./chunk-OEUJDSHY.mjs";
10
- import "./chunk-IB6OCKZW.mjs";
11
- import "./chunk-EDJX7TT6.mjs";
12
- import "./chunk-QBXHAXHI.mjs";
13
- export {
14
- addSingleTicketInteractive,
15
- ticketAddCommand
16
- };