@aicopycoders/exodus 2026.6.2902 → 2026.7.200-beta.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.
|
@@ -23,6 +23,7 @@ Hook gate (manual mode — review hooks in Claude Code):
|
|
|
23
23
|
on pause the run prints a numbered hook pool, then:
|
|
24
24
|
genesis continue --id <runId> --hooks 1,3,5 write the picked hooks (one ad each)
|
|
25
25
|
genesis regenerate --id <runId> [--steering "…"] re-roll the pool (reject + steer)
|
|
26
|
+
genesis reject --id <runId> abandon the run (terminal "superseded")
|
|
26
27
|
genesis hooks --id <runId> re-print the pool (fresh-session resume)
|
|
27
28
|
```
|
|
28
29
|
|
|
@@ -157,6 +158,14 @@ npx @aicopycoders/exodus genesis regenerate --id <runId> --steering "lead with t
|
|
|
157
158
|
- Steering is **additive across rounds**: round 2's "punchier" stacks on round 1's "lead with the cost" — pass only the *new* direction each time; the backend accumulates.
|
|
158
159
|
- If the user references a specific hook ("**7** is the closest but too aggressive"), **resolve that number to the real hook text yourself** and fold it into the steering you pass — e.g. `--steering "build on 'Your cortisol is wrecking your sleep' but soften the aggression"`. The CLI sends steering as plain text; the bot never sees your numbering.
|
|
159
160
|
|
|
161
|
+
**C. Abandon the run (reject):** when the user is done with this run entirely — "kill it", "forget this one", or they're starting over with a different brief:
|
|
162
|
+
```bash
|
|
163
|
+
npx @aicopycoders/exodus genesis reject --id <runId>
|
|
164
|
+
```
|
|
165
|
+
- The run lands in the terminal **superseded** state — not failed, not awaiting anything — instead of sitting at the hook gate forever.
|
|
166
|
+
- If they replaced it with a new run, link the two: `--superseded-by <newRunId>`.
|
|
167
|
+
- Terminal: a rejected run cannot be continued or re-rolled afterward.
|
|
168
|
+
|
|
160
169
|
**Fresh session / lost the list?** Re-fetch and reprint the pool any time with:
|
|
161
170
|
```bash
|
|
162
171
|
npx @aicopycoders/exodus genesis hooks --id <runId>
|
package/dist/commands/genesis.js
CHANGED
|
@@ -239,6 +239,8 @@ export async function run(flags) {
|
|
|
239
239
|
return runContinue(flags, cc);
|
|
240
240
|
if (sub === "regenerate")
|
|
241
241
|
return runRegenerate(flags, cc);
|
|
242
|
+
if (sub === "reject")
|
|
243
|
+
return runReject(flags, cc);
|
|
242
244
|
if (sub === "hooks")
|
|
243
245
|
return runHooks(flags);
|
|
244
246
|
const action = resolveGenesisAction(flags);
|
|
@@ -575,6 +577,22 @@ async function runRegenerate(flags, cc) {
|
|
|
575
577
|
: `Regenerating hooks for run ${runId}…`);
|
|
576
578
|
await waitForGenesisRun(runId);
|
|
577
579
|
}
|
|
580
|
+
async function runReject(flags, cc) {
|
|
581
|
+
const runId = typeof flags["id"] === "string" ? flags["id"].trim() : "";
|
|
582
|
+
if (!runId) {
|
|
583
|
+
console.error("Usage: exodus genesis reject --id <runId> [--superseded-by <newRunId>]");
|
|
584
|
+
process.exit(1);
|
|
585
|
+
}
|
|
586
|
+
const supersededBy = typeof flags["superseded-by"] === "string" ? flags["superseded-by"].trim() : "";
|
|
587
|
+
const res = await apiPost("/api/v2/genesis/reject", supersededBy ? { runId, supersededByRunId: supersededBy } : { runId }, { ccCommand: cc });
|
|
588
|
+
if (!res.ok) {
|
|
589
|
+
console.log(formatError(res));
|
|
590
|
+
process.exit(1);
|
|
591
|
+
}
|
|
592
|
+
console.log(`Run ${runId} rejected — marked superseded. Nothing further will run.`);
|
|
593
|
+
if (supersededBy)
|
|
594
|
+
console.log(`Linked replacement run: ${supersededBy}`);
|
|
595
|
+
}
|
|
578
596
|
function requireActiveBrand() {
|
|
579
597
|
const slug = resolveActiveBrand().slug;
|
|
580
598
|
if (!slug) {
|