ralph-teams 1.0.19 → 1.0.21
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/commands/run.d.ts +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +7 -6
- package/dist/commands/run.js.map +1 -1
- package/package.json +2 -1
- package/prompts/team-lead-policy.md +2 -1
- package/ralph.sh +47 -20
package/dist/commands/run.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { loadConfig, loadExplicitAgentModelOverrides } from '../config';
|
|
|
4
4
|
interface RunDeps {
|
|
5
5
|
existsSync: typeof fs.existsSync;
|
|
6
6
|
chmodSync: typeof fs.chmodSync;
|
|
7
|
-
|
|
7
|
+
rmSync: typeof fs.rmSync;
|
|
8
8
|
spawnSync: typeof spawnSync;
|
|
9
9
|
exit: (code?: number) => never;
|
|
10
10
|
cwd: () => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAqB,MAAM,WAAW,CAAC;AAI3F,UAAU,OAAO;IACf,UAAU,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IACjC,SAAS,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAqB,MAAM,WAAW,CAAC;AAI3F,UAAU,OAAO;IACf,UAAU,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IACjC,SAAS,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;CAC1E;AA2CD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,IAAI,GAAE,OAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsJf"}
|
package/dist/commands/run.js
CHANGED
|
@@ -47,7 +47,7 @@ const package_json_1 = __importDefault(require("../../package.json"));
|
|
|
47
47
|
const defaultDeps = {
|
|
48
48
|
existsSync: fs.existsSync,
|
|
49
49
|
chmodSync: fs.chmodSync,
|
|
50
|
-
|
|
50
|
+
rmSync: fs.rmSync,
|
|
51
51
|
spawnSync: child_process_1.spawnSync,
|
|
52
52
|
exit: (code) => process.exit(code),
|
|
53
53
|
cwd: () => process.cwd(),
|
|
@@ -81,7 +81,8 @@ function parseParallel(parallel) {
|
|
|
81
81
|
}
|
|
82
82
|
async function runCommand(prdPath, options, deps = defaultDeps) {
|
|
83
83
|
const resolved = path.resolve(prdPath);
|
|
84
|
-
const
|
|
84
|
+
const projectRoot = path.dirname(resolved);
|
|
85
|
+
const runtimeDir = (0, runtime_paths_1.getRalphRuntimeDir)(projectRoot);
|
|
85
86
|
const parallel = options.parallel;
|
|
86
87
|
if (!deps.existsSync(resolved)) {
|
|
87
88
|
console.error(chalk_1.default.red(`Error: prd.json not found at ${resolved}`));
|
|
@@ -197,14 +198,14 @@ async function runCommand(prdPath, options, deps = defaultDeps) {
|
|
|
197
198
|
RALPH_MODEL_FINAL_VALIDATOR_EXPLICIT: explicitAgentOverrides?.finalValidator !== undefined ? '1' : '0',
|
|
198
199
|
RALPH_MODEL_MERGER_EXPLICIT: explicitAgentOverrides?.merger !== undefined ? '1' : '0',
|
|
199
200
|
};
|
|
200
|
-
if (deps.existsSync(
|
|
201
|
+
if (deps.existsSync(runtimeDir)) {
|
|
201
202
|
try {
|
|
202
|
-
deps.
|
|
203
|
-
console.log(chalk_1.default.dim(`Removed stale
|
|
203
|
+
deps.rmSync(runtimeDir, { recursive: true, force: true });
|
|
204
|
+
console.log(chalk_1.default.dim(`Removed stale Ralph runtime artifacts: ${runtimeDir}`));
|
|
204
205
|
}
|
|
205
206
|
catch (err) {
|
|
206
207
|
const msg = err instanceof Error ? err.message : String(err);
|
|
207
|
-
console.error(chalk_1.default.red(`Error: failed to remove stale Ralph
|
|
208
|
+
console.error(chalk_1.default.red(`Error: failed to remove stale Ralph runtime artifacts: ${msg}`));
|
|
208
209
|
deps.exit(1);
|
|
209
210
|
}
|
|
210
211
|
}
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ralph-teams",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"description": "CLI tool for Ralph Teams",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ralph-teams": "dist/index.js",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"prd.json.example"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
+
"prepare": "npm run build",
|
|
20
21
|
"build": "rm -rf dist && tsc && chmod +x dist/index.js dist/json-tool.js",
|
|
21
22
|
"sync:agents": "node --import tsx scripts/sync-agent-prompts.ts",
|
|
22
23
|
"test": "node --import tsx --test --test-concurrency=4 $(find ./test -type f -name '*.test.ts' | sort)",
|
|
@@ -14,8 +14,9 @@ You coordinate epic execution. Do not write implementation code yourself.
|
|
|
14
14
|
## Epic Planning
|
|
15
15
|
|
|
16
16
|
- If `epicPlanning.enabled = 0`, do not spawn an epic planner. Use the epic as provided.
|
|
17
|
+
- If a usable canonical plan file already exists at the path provided in the prompt, do not spawn the epic planner. Use that plan even if `planned` is still `false`.
|
|
17
18
|
- If the epic is already marked `planned=true`, do not spawn the epic planner. Read the canonical plan file path provided in the prompt and follow it.
|
|
18
|
-
- Otherwise, if `epicPlanning.enabled = 1`, spawn the epic planner for any medium- or high-complexity epic.
|
|
19
|
+
- Otherwise, if `epicPlanning.enabled = 1`, spawn the epic planner for any medium- or high-complexity epic that does not already have a usable canonical plan.
|
|
19
20
|
- Only skip epic planning for clearly low-complexity epics where the acceptance criteria can be implemented literally with no meaningful design decisions.
|
|
20
21
|
- When delegating epic planning, explicitly tell the epic planner the exact output path for the epic plan file and require it to write the plan there before replying.
|
|
21
22
|
- Treat an epic planner response as incomplete if it only pastes or summarizes the plan in chat. The epic planner must perform the file write itself and only then report completion.
|
package/ralph.sh
CHANGED
|
@@ -133,9 +133,13 @@ resolve_rjq_bin() {
|
|
|
133
133
|
fi
|
|
134
134
|
done
|
|
135
135
|
|
|
136
|
-
if
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
if type -P rjq >/dev/null 2>&1; then
|
|
137
|
+
local path_rjq
|
|
138
|
+
path_rjq="$(type -P rjq)"
|
|
139
|
+
if [ -n "$path_rjq" ] && [ -e "$path_rjq" ] && [ -x "$path_rjq" ]; then
|
|
140
|
+
echo "$path_rjq"
|
|
141
|
+
return 0
|
|
142
|
+
fi
|
|
139
143
|
fi
|
|
140
144
|
|
|
141
145
|
return 1
|
|
@@ -144,14 +148,12 @@ resolve_rjq_bin() {
|
|
|
144
148
|
RJQ_BIN="$(resolve_rjq_bin || true)"
|
|
145
149
|
|
|
146
150
|
rjq() {
|
|
147
|
-
if [ -z "${RJQ_BIN:-}" ]; then
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
echo "Error: resolved rjq binary does not exist: $RJQ_BIN" >&2
|
|
154
|
-
exit 1
|
|
151
|
+
if [ -z "${RJQ_BIN:-}" ] || [ ! -e "$RJQ_BIN" ]; then
|
|
152
|
+
RJQ_BIN="$(resolve_rjq_bin || true)"
|
|
153
|
+
if [ -z "${RJQ_BIN:-}" ] || [ ! -e "$RJQ_BIN" ]; then
|
|
154
|
+
echo "Error: resolved rjq binary does not exist: ${RJQ_BIN:-<unset>}" >&2
|
|
155
|
+
exit 1
|
|
156
|
+
fi
|
|
155
157
|
fi
|
|
156
158
|
|
|
157
159
|
case "$RJQ_BIN" in
|
|
@@ -727,7 +729,16 @@ write_codex_agent_config() {
|
|
|
727
729
|
{
|
|
728
730
|
printf 'sandbox_mode = "workspace-write"\n'
|
|
729
731
|
printf 'model = "%s"\n' "$model"
|
|
730
|
-
|
|
732
|
+
awk '
|
|
733
|
+
/^[[:space:]]*developer_instructions[[:space:]]*=/ {
|
|
734
|
+
in_prompt_body = 1
|
|
735
|
+
print
|
|
736
|
+
next
|
|
737
|
+
}
|
|
738
|
+
!in_prompt_body && /^[[:space:]]*sandbox_mode[[:space:]]*=/ { next }
|
|
739
|
+
!in_prompt_body && /^[[:space:]]*model[[:space:]]*=/ { next }
|
|
740
|
+
{ print }
|
|
741
|
+
' "$source_file"
|
|
731
742
|
} > "$output_file"
|
|
732
743
|
}
|
|
733
744
|
|
|
@@ -881,13 +892,16 @@ run_opencode_exec() {
|
|
|
881
892
|
local model="$4"
|
|
882
893
|
shift 4
|
|
883
894
|
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
895
|
+
(
|
|
896
|
+
cd "$ROOT_DIR"
|
|
897
|
+
opencode run \
|
|
898
|
+
--format json \
|
|
899
|
+
--dir "$workdir" \
|
|
900
|
+
--agent "$agent_name" \
|
|
901
|
+
--model "$model" \
|
|
902
|
+
"$@" \
|
|
903
|
+
"$prompt"
|
|
904
|
+
)
|
|
891
905
|
}
|
|
892
906
|
|
|
893
907
|
normalize_epic_statuses() {
|
|
@@ -1211,6 +1225,8 @@ spawn_epic_bg() {
|
|
|
1211
1225
|
EPIC_TITLE=$(rjq read "$PRD_FILE" ".epics[$EPIC_INDEX].title")
|
|
1212
1226
|
local EPIC_JSON
|
|
1213
1227
|
EPIC_JSON=$(rjq read "$PRD_FILE" ".epics[$EPIC_INDEX]")
|
|
1228
|
+
local EPIC_PLANNED
|
|
1229
|
+
EPIC_PLANNED=$(rjq read "$PRD_FILE" ".epics[$EPIC_INDEX].planned" "false")
|
|
1214
1230
|
local PENDING_STORIES_JSON
|
|
1215
1231
|
PENDING_STORIES_JSON=$(rjq read "$PRD_FILE" ".epics[$EPIC_INDEX].userStories" | \
|
|
1216
1232
|
node -e 'const fs=require("fs"); const stories=JSON.parse(fs.readFileSync(0,"utf8")); process.stdout.write(JSON.stringify(stories.filter(s => s.passes !== true)));')
|
|
@@ -1226,6 +1242,10 @@ spawn_epic_bg() {
|
|
|
1226
1242
|
local WORKTREE_PRD_PATH="${WORKTREE_ABS_PATH}/${PRD_REL_PATH}"
|
|
1227
1243
|
local WORKTREE_STATE_FILE="${WORKTREE_ABS_PATH}/${RALPH_RUNTIME_DIRNAME}/state/${EPIC_ID}.json"
|
|
1228
1244
|
local WORKTREE_PLAN_FILE="${WORKTREE_ABS_PATH}/${RALPH_RUNTIME_DIRNAME}/plans/plan-${EPIC_ID}.md"
|
|
1245
|
+
local WORKTREE_PLAN_EXISTS="false"
|
|
1246
|
+
if [ -f "$WORKTREE_PLAN_FILE" ]; then
|
|
1247
|
+
WORKTREE_PLAN_EXISTS="true"
|
|
1248
|
+
fi
|
|
1229
1249
|
|
|
1230
1250
|
init_epic_state_file "$EPIC_ID" "$EPIC_INDEX"
|
|
1231
1251
|
|
|
@@ -1256,6 +1276,12 @@ $EPIC_JSON
|
|
|
1256
1276
|
If this epic has planned=true in the PRD, the canonical implementation plan is:
|
|
1257
1277
|
$WORKTREE_PLAN_FILE
|
|
1258
1278
|
|
|
1279
|
+
## Planning Status
|
|
1280
|
+
- epic.planned = ${EPIC_PLANNED}
|
|
1281
|
+
- canonical_plan.exists = ${WORKTREE_PLAN_EXISTS}
|
|
1282
|
+
- If a usable canonical plan already exists, do NOT spawn the epic planner. Use it even if epic.planned is false.
|
|
1283
|
+
- Only spawn the epic planner when epicPlanning.enabled = 1 and there is no usable canonical plan for this epic.
|
|
1284
|
+
|
|
1259
1285
|
## Stories To Plan And Execute
|
|
1260
1286
|
Only these stories should be planned or worked in this run. Stories omitted here are already passed and must be treated as done context only.
|
|
1261
1287
|
$PENDING_STORIES_JSON
|
|
@@ -1310,6 +1336,7 @@ $TEAM_LEAD_POLICY
|
|
|
1310
1336
|
- Use the exact epic state file path shown above for every story update. The PRD path is read-only context.
|
|
1311
1337
|
- If your runtime supports named sub-agents, use the dedicated story-planner, epic-planner, builder, story-validator, and epic-validator roles and choose their models using the policy above.
|
|
1312
1338
|
- If a story fails validation and still has retries left, spawn a new Builder for the retry instead of reusing the previous Builder run.
|
|
1339
|
+
- If your runtime is Codex exec mode, `request_user_input` is unavailable. Never call it. Do not stop to ask the user questions. Make a reasonable assumption, continue, and report the assumption in your final summary only if it matters.
|
|
1313
1340
|
|
|
1314
1341
|
Begin."
|
|
1315
1342
|
|
|
@@ -1537,7 +1564,7 @@ run_backend_agent_session() {
|
|
|
1537
1564
|
local prompt_file="${SCRIPT_DIR}/prompts/agents/${agent_name}.md"
|
|
1538
1565
|
local role_body
|
|
1539
1566
|
role_body="$(extract_prompt_body "$prompt_file")"
|
|
1540
|
-
printf '%s\n\n## Assignment\n%s\n' "$role_body" "$prompt" | codex \
|
|
1567
|
+
printf 'Runtime note: This Codex session runs in exec mode. `request_user_input` is unavailable. Never call it. Do not stop to ask the user questions. Make a reasonable assumption and continue.\n\n%s\n\n## Assignment\n%s\n' "$role_body" "$prompt" | codex \
|
|
1541
1568
|
-a never \
|
|
1542
1569
|
exec \
|
|
1543
1570
|
-C "$workdir" \
|