@aicopycoders/exodus 2026.6.2900-beta.4 → 2026.6.2900-beta.5

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.
@@ -50,6 +50,7 @@ export type IdeaAction = {
50
50
  kind: "error";
51
51
  message: string;
52
52
  };
53
+ export declare function runsWillPauseAtHooks(stopAtHooks: boolean | undefined, savedPref: "manual" | "auto" | null): boolean;
53
54
  export declare function resolveIdeaAction(positionals: string[], flags: Record<string, string | boolean>): IdeaAction;
54
55
  export declare function run(flags: Record<string, string | boolean>): Promise<void>;
55
56
  export {};
@@ -67,6 +67,15 @@ function resolveStopAtHooks(flags) {
67
67
  return false;
68
68
  return undefined;
69
69
  }
70
+ export function runsWillPauseAtHooks(stopAtHooks, savedPref) {
71
+ if (typeof stopAtHooks === "boolean")
72
+ return stopAtHooks;
73
+ return savedPref === "manual";
74
+ }
75
+ async function fetchSavedHookPref() {
76
+ const res = await apiGet("/api/v2/genesis/hook-pref");
77
+ return res.ok ? (res.data.preference ?? null) : null;
78
+ }
70
79
  function printHookPauseHint(dispatched) {
71
80
  if (dispatched.length === 0)
72
81
  return;
@@ -250,7 +259,8 @@ export async function run(flags) {
250
259
  }
251
260
  for (const d of result.dispatched)
252
261
  console.log(` ✓ banked ${d.key} → Genesis run ${d.runId}`);
253
- if (action.stopAtHooks === true)
262
+ const willPause = runsWillPauseAtHooks(action.stopAtHooks, action.stopAtHooks === undefined ? await fetchSavedHookPref() : null);
263
+ if (willPause)
254
264
  printHookPauseHint(result.dispatched);
255
265
  console.log("");
256
266
  console.log("Track them: exodus idea list (status flips to 'written' with a doc link)");
@@ -335,12 +345,15 @@ export async function run(flags) {
335
345
  }
336
346
  const dispatched = res.data.dispatched ?? [];
337
347
  const skipped = res.data.skipped ?? [];
338
- console.log(`Dispatched ${dispatched.length} run(s) — fire-and-forget.`);
348
+ const willPause = runsWillPauseAtHooks(action.stopAtHooks, action.stopAtHooks === undefined ? await fetchSavedHookPref() : null);
349
+ console.log(willPause
350
+ ? `Dispatched ${dispatched.length} run(s).`
351
+ : `Dispatched ${dispatched.length} run(s) — fire-and-forget.`);
339
352
  for (const d of dispatched)
340
353
  console.log(` ${d.key} → run ${d.runId}`);
341
354
  for (const s of skipped)
342
355
  console.log(` skipped ${s.key}: ${s.reason}`);
343
- if (action.stopAtHooks === true)
356
+ if (willPause)
344
357
  printHookPauseHint(dispatched);
345
358
  console.log("");
346
359
  console.log("Track them: exodus idea list (status flips to 'written' with a doc link)");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aicopycoders/exodus",
3
- "version": "2026.6.2900-beta.4",
3
+ "version": "2026.6.2900-beta.5",
4
4
  "description": "CLI + Claude Code skills for the Copycoders Exodus ad pipeline",
5
5
  "repository": {
6
6
  "type": "git",