ralphctl 0.2.5 → 0.3.1
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/dist/add-CIM72NE3.mjs +18 -0
- package/dist/add-GX7P7XTT.mjs +16 -0
- package/dist/bootstrap-FMHG6DRY.mjs +11 -0
- package/dist/chunk-3QBEBKMZ.mjs +103 -0
- package/dist/{chunk-EDJX7TT6.mjs → chunk-57UWLHRH.mjs} +22 -2
- package/dist/chunk-747KW2RW.mjs +24 -0
- package/dist/chunk-7JLZQICD.mjs +228 -0
- package/dist/{chunk-7TG3EAQ2.mjs → chunk-CFUVE2BP.mjs} +1 -5
- package/dist/chunk-CSC4TBJB.mjs +5546 -0
- package/dist/{chunk-IB6OCKZW.mjs → chunk-CTP2A436.mjs} +60 -55
- package/dist/{chunk-UBPZHHCD.mjs → chunk-D2YGPLIV.mjs} +84 -41
- package/dist/chunk-EPDR6VO5.mjs +5109 -0
- package/dist/{chunk-QBXHAXHI.mjs → chunk-FKMKOWLA.mjs} +154 -208
- package/dist/{chunk-OEUJDSHY.mjs → chunk-IWXBJD2D.mjs} +1 -1
- package/dist/chunk-JOQO4HMM.mjs +269 -0
- package/dist/{chunk-EUNAUHC3.mjs → chunk-NUYQK5MN.mjs} +80 -29
- package/dist/{chunk-JRFOUFD3.mjs → chunk-YCDUVPRT.mjs} +32 -52
- package/dist/cli.mjs +171 -3996
- package/dist/create-7WFSCMP4.mjs +15 -0
- package/dist/{handle-TA4MYNQJ.mjs → handle-BBAZJ44Y.mjs} +2 -2
- package/dist/mount-U7QXVB5Q.mjs +6804 -0
- package/dist/{project-YONEJICR.mjs → project-2IE7VWDB.mjs} +9 -5
- package/dist/prompts/harness-context.md +3 -3
- package/dist/prompts/ideate-auto.md +8 -10
- package/dist/prompts/ideate.md +3 -2
- package/dist/prompts/plan-auto.md +12 -12
- package/dist/prompts/plan-common.md +47 -19
- package/dist/prompts/plan-interactive.md +8 -8
- package/dist/prompts/signals-evaluation.md +1 -1
- package/dist/prompts/sprint-feedback.md +48 -0
- package/dist/prompts/task-evaluation-resume.md +12 -5
- package/dist/prompts/task-evaluation.md +37 -33
- package/dist/prompts/task-execution.md +33 -24
- package/dist/prompts/ticket-refine.md +6 -5
- package/dist/prompts/validation-checklist.md +10 -10
- package/dist/{resolver-RXEY6EJE.mjs → resolver-EOE5WUMV.mjs} +5 -5
- package/dist/{sprint-FGLWYWKX.mjs → sprint-OGOFEJJH.mjs} +7 -9
- package/dist/start-WG7VMEB2.mjs +17 -0
- package/package.json +15 -13
- package/dist/add-3T225IX5.mjs +0 -16
- package/dist/add-6A5432U2.mjs +0 -16
- package/dist/chunk-742XQ7FL.mjs +0 -551
- package/dist/chunk-7LZ6GOGN.mjs +0 -53
- package/dist/chunk-CSICORGV.mjs +0 -4333
- package/dist/chunk-DUU5346E.mjs +0 -59
- package/dist/create-MYGOWO2F.mjs +0 -12
- package/dist/multiline-OHSNFCRG.mjs +0 -40
- package/dist/wizard-XZ7OGBCJ.mjs +0 -193
- package/schemas/config.schema.json +0 -30
- package/schemas/ideate-output.schema.json +0 -22
- package/schemas/projects.schema.json +0 -58
- package/schemas/requirements-output.schema.json +0 -24
- package/schemas/sprint.schema.json +0 -109
- package/schemas/task-import.schema.json +0 -56
- package/schemas/tasks.schema.json +0 -98
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Requirements Refinement Protocol
|
|
2
2
|
|
|
3
|
-
You are a requirements analyst.
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
121
|
-
|
|
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
|
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Before writing the JSON output, verify EVERY item:
|
|
4
4
|
|
|
5
|
-
1. **Requirements complete** —
|
|
6
|
-
2. **
|
|
7
|
-
3. **Foundations before dependents** —
|
|
8
|
-
4. **Valid dependencies** —
|
|
9
|
-
5. **Maximized parallelism** —
|
|
10
|
-
6. **Precise steps** —
|
|
11
|
-
7. **Verification steps** —
|
|
12
|
-
8. **`projectPath` assigned** —
|
|
13
|
-
9. **Verification criteria** —
|
|
14
|
-
10. **
|
|
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 specific, actionable steps with file references — as many as the scope needs (a small task may have 2 steps, a larger coherent one may have 8+)
|
|
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-
|
|
4
|
+
} from "./chunk-IWXBJD2D.mjs";
|
|
5
5
|
import {
|
|
6
6
|
IOError
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
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-
|
|
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-CSC4TBJB.mjs";
|
|
6
|
+
import "./chunk-JOQO4HMM.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.
|
|
3
|
+
"version": "0.3.1",
|
|
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
|
-
"@
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
56
|
+
"@vitest/coverage-v8": "^4.1.4",
|
|
56
57
|
"eslint": "^10.2.0",
|
|
57
58
|
"eslint-config-prettier": "^10.1.8",
|
|
58
|
-
"globals": "^17.
|
|
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.
|
|
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.
|
|
66
|
-
"vitest": "^4.1.
|
|
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/
|
|
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 .",
|
package/dist/add-3T225IX5.mjs
DELETED
|
@@ -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
|
-
};
|
package/dist/add-6A5432U2.mjs
DELETED
|
@@ -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
|
-
};
|