@joshuafolkken/kit 1.1379.0 → 1.1383.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 (70) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-progress.md +2 -3
  2. package/.claude/skills/workflow-commands/backlogrun-steps.md +2 -4
  3. package/.claude/skills/workflow-commands/retrospective.md +1 -2
  4. package/dist/hooks/batch-guard.js +6 -6
  5. package/dist/hooks/{chunk-YSDAH73S.js → chunk-2X2ART5G.js} +2 -2
  6. package/dist/hooks/{chunk-RW4XMF47.js → chunk-4MGHBTOM.js} +125 -232
  7. package/dist/hooks/{chunk-TG2AB3W6.js → chunk-6AC4C2IO.js} +45 -55
  8. package/dist/hooks/{chunk-HGA4EG5S.js → chunk-6MAW7BCM.js} +12 -12
  9. package/dist/hooks/{chunk-QARPP36N.js → chunk-7VSZ2N4B.js} +3 -3
  10. package/dist/hooks/{chunk-DHSKBAQ2.js → chunk-KC6LUZZ2.js} +1 -1
  11. package/dist/hooks/{chunk-4RWRP3FF.js → chunk-KCF2YE7O.js} +5 -5
  12. package/dist/hooks/{chunk-E7LZL5AN.js → chunk-LC56R53A.js} +3 -3
  13. package/dist/hooks/{chunk-546X4PX3.js → chunk-LOJTBU5V.js} +3 -3
  14. package/dist/hooks/{chunk-7ZM464OW.js → chunk-RYP3TSUJ.js} +3 -3
  15. package/dist/hooks/{chunk-TORRSNDJ.js → chunk-TT742SIO.js} +2 -2
  16. package/dist/hooks/{chunk-NBEAGPS4.js → chunk-Y5R47QHU.js} +1 -1
  17. package/dist/hooks/{chunk-PV3FWDSQ.js → chunk-YKUITFT7.js} +2 -2
  18. package/dist/hooks/codex-hook-adapter.js +13 -13
  19. package/dist/hooks/duplicate-read-guard.js +7 -7
  20. package/dist/hooks/format-edited.js +3 -3
  21. package/dist/hooks/inputs.json +199 -200
  22. package/dist/hooks/investigation-guard.js +7 -7
  23. package/dist/hooks/pretool-guard.js +12 -12
  24. package/dist/hooks/session-lang.js +3 -3
  25. package/dist/hooks/stop-guard.js +19 -15
  26. package/dist/josh.js +1 -1
  27. package/package.json +1 -1
  28. package/prompts/collaboration-workflow/upstream-interrupt.md +1 -1
  29. package/scripts/backlog/backlog-budget-cli.ts +2 -20
  30. package/scripts/backlog/backlog-budget.ts +72 -109
  31. package/scripts/backlog/backlog-drive-cli.ts +10 -3
  32. package/scripts/backlog/backlog-drive.ts +5 -2
  33. package/scripts/backlog/backlog-offer-cli.ts +1 -15
  34. package/scripts/epic/epic-candidate-confirm.ts +1 -1
  35. package/scripts/epic/epic-cross-repo.ts +4 -4
  36. package/scripts/epic/epic-next.ts +1 -1
  37. package/scripts/hooks/stop-guard.ts +20 -9
  38. package/scripts/josh/josh-commands-ai.ts +1 -1
  39. package/scripts/lane/lane-cli.ts +1 -3
  40. package/scripts/run/board/run-board-header.ts +107 -84
  41. package/scripts/run/board/run-board-labels.ts +18 -17
  42. package/scripts/run/board/run-board-machine.ts +21 -8
  43. package/scripts/run/board/run-board-render.ts +1 -5
  44. package/scripts/run/board/run-board-span.ts +0 -1
  45. package/scripts/run/board/run-board-status.ts +0 -17
  46. package/scripts/run/board/run-board-tick.ts +1 -0
  47. package/scripts/run/carry/run-carry-cli.ts +8 -62
  48. package/scripts/run/carry/run-carry-ended.ts +1 -1
  49. package/scripts/run/carry/run-carry.ts +22 -68
  50. package/scripts/run/cut/run-cut.ts +4 -4
  51. package/scripts/run/event/run-event-render.ts +0 -1
  52. package/scripts/run/event/run-event-scope.ts +4 -8
  53. package/scripts/run/event/run-event-stream-emit.ts +0 -25
  54. package/scripts/run/event/run-event-stream.ts +23 -31
  55. package/scripts/run/merge/run-merge-collect.ts +1 -1
  56. package/scripts/run/merge/run-merge-steps.ts +1 -1
  57. package/scripts/run/progress/run-progress-read.ts +1 -1
  58. package/scripts/run/run-headless.ts +2 -2
  59. package/scripts/run/run-status-cli.ts +1 -5
  60. package/scripts/run/run-step.ts +2 -9
  61. package/scripts/run/run-stop-notify.ts +1 -1
  62. package/scripts/run/run-stranded-detect.ts +3 -3
  63. package/scripts/run/run-stranded.ts +25 -17
  64. package/scripts/run/wake/run-wake-cli.ts +7 -9
  65. package/scripts/run/wake/run-wake-describe.ts +3 -5
  66. package/scripts/run/wake/run-wake-driver.ts +3 -3
  67. package/scripts/run/wake/run-wake-loop.ts +4 -21
  68. package/scripts/run/wake/run-wake-restart.ts +1 -1
  69. package/scripts/run/wake/run-wake.ts +6 -7
  70. package/scripts/backlog/backlog-idle.ts +0 -88
@@ -8,7 +8,7 @@ import {
8
8
  repo_origin,
9
9
  repository_lock,
10
10
  run_ship_stage
11
- } from "./chunk-YSDAH73S.js";
11
+ } from "./chunk-2X2ART5G.js";
12
12
  import {
13
13
  error_text
14
14
  } from "./chunk-CDY4NFQG.js";
@@ -30,10 +30,10 @@ import {
30
30
  time_density_hook,
31
31
  time_shell,
32
32
  time_transcript_line
33
- } from "./chunk-TORRSNDJ.js";
33
+ } from "./chunk-TT742SIO.js";
34
34
  import {
35
35
  lane_child_marker
36
- } from "./chunk-NBEAGPS4.js";
36
+ } from "./chunk-Y5R47QHU.js";
37
37
  import {
38
38
  agent_session_environment,
39
39
  backlog_budget,
@@ -42,9 +42,8 @@ import {
42
42
  has_timed_out,
43
43
  json_value,
44
44
  process_identity,
45
- run_carry,
46
- stamp_record
47
- } from "./chunk-RW4XMF47.js";
45
+ run_carry
46
+ } from "./chunk-4MGHBTOM.js";
48
47
  import {
49
48
  COMMAND_TIMEOUT_MS,
50
49
  stamp_file
@@ -339,6 +338,23 @@ var session_cite = {
339
338
  text
340
339
  };
341
340
 
341
+ // scripts/josh/stamp-record.ts
342
+ var NONE_READ = { kind: "none" };
343
+ var UNREADABLE_READ = { kind: "unreadable" };
344
+ function is_older_than(iso, max_age_ms, now) {
345
+ const at = Date.parse(iso);
346
+ if (Number.isNaN(at)) return true;
347
+ return now.getTime() - at > max_age_ms;
348
+ }
349
+ function classify(raw, spec, now) {
350
+ if (raw === void 0) return NONE_READ;
351
+ const record = spec.parse(raw);
352
+ if (record === void 0) return UNREADABLE_READ;
353
+ const is_expired3 = is_older_than(spec.timestamp_of(record), spec.max_age_ms, now);
354
+ return { kind: is_expired3 ? "expired" : "carried", record };
355
+ }
356
+ var stamp_record = { classify, is_older_than };
357
+
342
358
  // scripts/run/hold/run-hold.ts
343
359
  import { z } from "zod";
344
360
  var HOLD_PREFIX = "josh-run-hold-";
@@ -350,7 +366,7 @@ var RELEASE_COMMAND = "pnpm josh run:release";
350
366
  var FORCE_RELEASE_COMMAND = `${RELEASE_COMMAND} --force`;
351
367
  var NOT_IDLE = 'that is not "nothing is running here"';
352
368
  var FREE_READ = { kind: "free" };
353
- var UNREADABLE_READ = { kind: "unreadable" };
369
+ var UNREADABLE_READ2 = { kind: "unreadable" };
354
370
  function hold_path(git_directory) {
355
371
  return stamp_file.stamp_path(HOLD_PREFIX, git_directory);
356
372
  }
@@ -386,14 +402,14 @@ function is_owner_gone(hold) {
386
402
  function is_stale(hold, now) {
387
403
  return is_expired(hold, now) || is_owner_gone(hold);
388
404
  }
389
- function classify(raw, now) {
405
+ function classify2(raw, now) {
390
406
  if (raw === void 0) return FREE_READ;
391
407
  const hold = parse_hold(raw);
392
- if (hold === void 0) return UNREADABLE_READ;
408
+ if (hold === void 0) return UNREADABLE_READ2;
393
409
  return { kind: is_stale(hold, now) ? "stale" : "held", hold };
394
410
  }
395
411
  function read_hold(target, now = /* @__PURE__ */ new Date()) {
396
- return classify(stamp_file.read_stamp_text(target), now);
412
+ return classify2(stamp_file.read_stamp_text(target), now);
397
413
  }
398
414
  function session_owner(environment = process.env) {
399
415
  const pid = Number(environment[agent_session_environment.AGENT_PID_KEY]);
@@ -475,7 +491,7 @@ var run_hold = {
475
491
  HOLD_MAX_AGE_MS,
476
492
  RELEASE_COMMAND,
477
493
  UNNUMBERED_ISSUE,
478
- classify,
494
+ classify: classify2,
479
495
  create_halfrun_stop_hold,
480
496
  create_stop_hold,
481
497
  HALFRUN_STOP_FIELDS,
@@ -726,8 +742,8 @@ var run_cut_handoff = {
726
742
  var CUT_PREFIX = "josh-run-cut-";
727
743
  var { PRE_GATE_PHASE, IMPLEMENTATION_PHASE } = agent_role_profile;
728
744
  var IMPLEMENTATION_CONTEXT_THRESHOLD = CONTEXT_CUT_THRESHOLD;
729
- var CUT_MAX_AGE_MS = backlog_budget.WHOLE_RUN_BUDGET_MS;
730
- var CUT_MAX_AGE_HOURS = backlog_budget.WHOLE_RUN_BUDGET_HOURS;
745
+ var CUT_MAX_AGE_MS = backlog_budget.DEFAULT_IDLE_MS;
746
+ var CUT_MAX_AGE_HOURS = backlog_budget.IDLE_WAIT_HOURS;
731
747
  var END_COMMAND = "pnpm josh run:cut --end";
732
748
  var READ_COMMAND = "pnpm josh run:cut --json";
733
749
  var MAX_HANDOFF_BYTES = 8192;
@@ -762,13 +778,13 @@ var CUT_SPEC = {
762
778
  function is_expired2(cut, now) {
763
779
  return stamp_record.is_older_than(cut_at_of(cut), CUT_MAX_AGE_MS, now);
764
780
  }
765
- function classify2(raw, now) {
781
+ function classify3(raw, now) {
766
782
  const read = stamp_record.classify(raw, CUT_SPEC, now);
767
783
  if (!("record" in read)) return read;
768
784
  return { kind: read.kind, cut: read.record };
769
785
  }
770
786
  function read_cut(target, now = /* @__PURE__ */ new Date()) {
771
- return classify2(stamp_file.read_stamp_text(target), now);
787
+ return classify3(stamp_file.read_stamp_text(target), now);
772
788
  }
773
789
  function worktree_git_directory_sync() {
774
790
  return git_common_directory.own();
@@ -891,7 +907,7 @@ var run_cut = {
891
907
  begin_cut,
892
908
  busy_message,
893
909
  carried_cut_sync,
894
- classify: classify2,
910
+ classify: classify3,
895
911
  classify_resume,
896
912
  current_state,
897
913
  cut_path,
@@ -1116,11 +1132,6 @@ var EVENT_KIND = {
1116
1132
  // The position that hands control back: `run:step` prints the command that
1117
1133
  // shows the stopped report, so the agent fixes it and relaunches rather than rebuilding the context.
1118
1134
  SHIP_STOP: "ship-stop",
1119
- // The idle watch's window — when the run began waiting on an empty backlog and when that wait ends
1120
- // `backlog:offer` writes it whenever the window changes, so `run:board` reads
1121
- // the deadline rather than guessing it. It is a trace: `emit_once`'s drain dedup and `run:step`'s
1122
- // position both read past it, so a watching loop never re-marks the drain it is waiting after.
1123
- IDLE: "idle",
1124
1135
  // An Issue the run filed on its way, written by `issue:file`, so a run started from the command line
1125
1136
  // still surfaces what it found — `run:board`'s findings section reads it.
1126
1137
  FILED: "filed",
@@ -1144,18 +1155,13 @@ var EVENT_KINDS = Object.values(EVENT_KIND);
1144
1155
  var TRACE_KINDS = /* @__PURE__ */ new Set([
1145
1156
  EVENT_KIND.SHIP_STAGE,
1146
1157
  EVENT_KIND.HEARTBEAT,
1147
- EVENT_KIND.IDLE,
1148
1158
  EVENT_KIND.FILED,
1149
1159
  EVENT_KIND.NOTE,
1150
1160
  EVENT_KIND.LANE_PHASE,
1151
1161
  EVENT_KIND.ADD,
1152
1162
  EVENT_KIND.LANE_LIMIT
1153
1163
  ]);
1154
- var DISPOSABLE_KINDS = /* @__PURE__ */ new Set([
1155
- EVENT_KIND.SHIP_STAGE,
1156
- EVENT_KIND.HEARTBEAT,
1157
- EVENT_KIND.IDLE
1158
- ]);
1164
+ var DISPOSABLE_KINDS = /* @__PURE__ */ new Set([EVENT_KIND.SHIP_STAGE, EVENT_KIND.HEARTBEAT]);
1159
1165
  var event_schema = z4.object({
1160
1166
  pos: z4.number(),
1161
1167
  at: z4.string(),
@@ -1174,11 +1180,14 @@ function is_present(event) {
1174
1180
  function parse_line(line) {
1175
1181
  return event_schema.safeParse(json_value.parse_or_undefined(line)).data;
1176
1182
  }
1177
- function read_events(target) {
1183
+ function read_lines(target) {
1178
1184
  const raw = stamp_file.read_stamp_text(target);
1179
1185
  if (raw === void 0) return [];
1180
1186
  return raw.split(LINE_SEPARATOR).map((line) => line.trim()).filter((line) => line.length > 0).map((line) => parse_line(line)).filter(is_present);
1181
1187
  }
1188
+ function read_events(target) {
1189
+ return read_lines(target).filter((event) => is_event_kind(event.kind));
1190
+ }
1182
1191
  function last_position(events) {
1183
1192
  return events[events.length - POSITION_INCREMENT]?.pos ?? FIRST_POSITION;
1184
1193
  }
@@ -1196,15 +1205,12 @@ function is_stage_start(event) {
1196
1205
  if (event.kind !== EVENT_KIND.SHIP_STAGE) return false;
1197
1206
  return event.text.split(WORD_SEPARATOR)[STAGE_PHASE_INDEX] === run_ship_stage.PHASE.START;
1198
1207
  }
1199
- function is_drawn(event) {
1200
- return event.kind === EVENT_KIND.IDLE || is_stage_start(event);
1201
- }
1202
1208
  function droppable(events) {
1203
1209
  const kept = newest_stages(events);
1204
1210
  const disposable = events.filter((event) => DISPOSABLE_KINDS.has(event.kind) && !kept.has(event));
1205
1211
  return [
1206
- ...disposable.filter((event) => !is_drawn(event)),
1207
- ...disposable.filter((event) => is_drawn(event))
1212
+ ...disposable.filter((event) => !is_stage_start(event)),
1213
+ ...disposable.filter((event) => is_stage_start(event))
1208
1214
  ];
1209
1215
  }
1210
1216
  function bounded(events) {
@@ -1217,9 +1223,8 @@ function serialize(events) {
1217
1223
  return `${events.map((event) => JSON.stringify(event)).join(LINE_SEPARATOR)}${LINE_SEPARATOR}`;
1218
1224
  }
1219
1225
  function append_held(target, event) {
1220
- const existing = read_events(target);
1221
- const position = last_position(existing) + POSITION_INCREMENT;
1222
- const events = bounded([...existing, { pos: position, ...event }]);
1226
+ const position = last_position(read_lines(target)) + POSITION_INCREMENT;
1227
+ const events = bounded([...read_events(target), { pos: position, ...event }]);
1223
1228
  stamp_file.replace_text_stamp(target, serialize(events));
1224
1229
  return position;
1225
1230
  }
@@ -1291,10 +1296,8 @@ function scoped_events(events, scope) {
1291
1296
  return events.filter((event) => is_within(event, floor));
1292
1297
  }
1293
1298
  function scope_of(read) {
1294
- if (read.kind === "carried" || read.kind === "expired") {
1295
- return { kind: SINCE_SCOPE, started_at: read.carry.started_at };
1296
- }
1297
- return UNKNOWN_EVENT_SCOPE;
1299
+ if (read.kind !== "carried") return UNKNOWN_EVENT_SCOPE;
1300
+ return { kind: SINCE_SCOPE, started_at: read.carry.started_at };
1298
1301
  }
1299
1302
  function last_scoped_event(events, scope) {
1300
1303
  return scoped_events(events, scope)?.findLast(
@@ -1395,18 +1398,6 @@ async function emit_once(kind, text2) {
1395
1398
  return false;
1396
1399
  }
1397
1400
  }
1398
- async function emit_changed(kind, text2) {
1399
- try {
1400
- const target = await stream_target();
1401
- if (target === void 0) return false;
1402
- const newest = run_event_stream.read_events(target).findLast((event) => event.kind === kind);
1403
- if (newest?.text === text2) return false;
1404
- return run_event_stream.append(target, kind, text2, now_iso()).appended;
1405
- } catch (error) {
1406
- error_text.trace_swallowed("run_event_stream_emit.emit_changed", error);
1407
- return false;
1408
- }
1409
- }
1410
1401
  function invocation_events(repository, target) {
1411
1402
  const events = run_event_stream.read_events(target);
1412
1403
  const scope = run_event_scope.scope_of(run_carry.read_carry(run_carry.carry_path(repository)));
@@ -1461,7 +1452,6 @@ var run_event_stream_emit = {
1461
1452
  all_events,
1462
1453
  current_events,
1463
1454
  emit,
1464
- emit_changed,
1465
1455
  emit_heartbeat,
1466
1456
  emit_once,
1467
1457
  emit_once_since,
@@ -1888,7 +1878,7 @@ var THIRD_PARTY = "third-party";
1888
1878
  var UNKNOWN = "unknown";
1889
1879
  var GH_REPO_ENV_KEY = "GH_REPO";
1890
1880
  var GH_REPO_PATH_SEGMENTS = 2;
1891
- function classify3(session_owner2, target) {
1881
+ function classify4(session_owner2, target) {
1892
1882
  if (session_owner2 === void 0 || target === void 0) return UNKNOWN;
1893
1883
  return session_owner2.toLowerCase() === target.toLowerCase() ? FIRST_PARTY : THIRD_PARTY;
1894
1884
  }
@@ -1912,7 +1902,7 @@ var repo_party = {
1912
1902
  FIRST_PARTY,
1913
1903
  THIRD_PARTY,
1914
1904
  UNKNOWN,
1915
- classify: classify3,
1905
+ classify: classify4,
1916
1906
  current_owner,
1917
1907
  placeholder_owners,
1918
1908
  target_owner
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  duplicate_read_outcome
3
- } from "./chunk-4RWRP3FF.js";
3
+ } from "./chunk-KCF2YE7O.js";
4
4
  import {
5
5
  ALREADY_DONE_LABEL,
6
6
  CONTEXT_CUT_THRESHOLD,
@@ -28,7 +28,7 @@ import {
28
28
  session_cite,
29
29
  shell_segments,
30
30
  tail_commands
31
- } from "./chunk-TG2AB3W6.js";
31
+ } from "./chunk-6AC4C2IO.js";
32
32
  import {
33
33
  ancestor_directories,
34
34
  find_local_bin_upwards
@@ -41,25 +41,25 @@ import {
41
41
  lane_registry,
42
42
  repo_origin,
43
43
  run_headless
44
- } from "./chunk-YSDAH73S.js";
44
+ } from "./chunk-2X2ART5G.js";
45
45
  import {
46
46
  error_text
47
47
  } from "./chunk-CDY4NFQG.js";
48
48
  import {
49
49
  batch_outcome
50
- } from "./chunk-7ZM464OW.js";
50
+ } from "./chunk-RYP3TSUJ.js";
51
51
  import {
52
52
  investigation_refusal
53
- } from "./chunk-546X4PX3.js";
53
+ } from "./chunk-LOJTBU5V.js";
54
54
  import {
55
55
  investigation_reads
56
- } from "./chunk-QARPP36N.js";
56
+ } from "./chunk-7VSZ2N4B.js";
57
57
  import {
58
58
  lane_guard_policy
59
- } from "./chunk-DHSKBAQ2.js";
59
+ } from "./chunk-KC6LUZZ2.js";
60
60
  import {
61
61
  hook_decision
62
- } from "./chunk-E7LZL5AN.js";
62
+ } from "./chunk-LC56R53A.js";
63
63
  import {
64
64
  cost_attribute,
65
65
  cost_blocks,
@@ -67,10 +67,10 @@ import {
67
67
  time_batch_guard,
68
68
  time_density_hook,
69
69
  time_shell
70
- } from "./chunk-TORRSNDJ.js";
70
+ } from "./chunk-TT742SIO.js";
71
71
  import {
72
72
  lane_child_marker
73
- } from "./chunk-NBEAGPS4.js";
73
+ } from "./chunk-Y5R47QHU.js";
74
74
  import {
75
75
  PORCELAIN_FLAG,
76
76
  cli_flags,
@@ -84,7 +84,7 @@ import {
84
84
  lane_paths,
85
85
  own_session,
86
86
  run_carry
87
- } from "./chunk-RW4XMF47.js";
87
+ } from "./chunk-4MGHBTOM.js";
88
88
  import {
89
89
  PLATFORM_TEMP_ROOT,
90
90
  PROBE_TIMEOUT_MS,
@@ -4188,7 +4188,7 @@ function is_hold_present(read2) {
4188
4188
  return read2.kind === "held" || read2.kind === "stale";
4189
4189
  }
4190
4190
  function is_carry_present(read2) {
4191
- return read2.kind === "carried" || read2.kind === "expired";
4191
+ return read2.kind === "carried";
4192
4192
  }
4193
4193
  function hold_present(worktree) {
4194
4194
  return worktree !== void 0 && is_hold_present(run_hold.read_hold(run_hold.hold_path(worktree)));
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  hook_decision
3
- } from "./chunk-E7LZL5AN.js";
3
+ } from "./chunk-LC56R53A.js";
4
4
  import {
5
5
  cost_blocks,
6
6
  time_batch_guard,
7
7
  time_bundle_call,
8
8
  time_shell,
9
9
  time_spans
10
- } from "./chunk-TORRSNDJ.js";
10
+ } from "./chunk-TT742SIO.js";
11
11
  import {
12
12
  cost_transcript
13
- } from "./chunk-RW4XMF47.js";
13
+ } from "./chunk-4MGHBTOM.js";
14
14
 
15
15
  // scripts/delegation/investigation-reads.ts
16
16
  import path2 from "node:path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  lane_child_marker
3
- } from "./chunk-NBEAGPS4.js";
3
+ } from "./chunk-Y5R47QHU.js";
4
4
 
5
5
  // scripts/lane/lane-guard-policy.ts
6
6
  var DEFAULT_MODE = "refuse";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-QARPP36N.js";
3
+ } from "./chunk-7VSZ2N4B.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-DHSKBAQ2.js";
6
+ } from "./chunk-KC6LUZZ2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-E7LZL5AN.js";
9
+ } from "./chunk-LC56R53A.js";
10
10
  import {
11
11
  time_spans
12
- } from "./chunk-TORRSNDJ.js";
12
+ } from "./chunk-TT742SIO.js";
13
13
  import {
14
14
  json_value
15
- } from "./chunk-RW4XMF47.js";
15
+ } from "./chunk-4MGHBTOM.js";
16
16
 
17
17
  // scripts/delegation/duplicate-read-guard.ts
18
18
  import { statSync } from "node:fs";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  time_density_hook,
3
3
  time_hook_transcript
4
- } from "./chunk-TORRSNDJ.js";
4
+ } from "./chunk-TT742SIO.js";
5
5
  import {
6
6
  josh_environment_file
7
- } from "./chunk-NBEAGPS4.js";
7
+ } from "./chunk-Y5R47QHU.js";
8
8
  import {
9
9
  json_value
10
- } from "./chunk-RW4XMF47.js";
10
+ } from "./chunk-4MGHBTOM.js";
11
11
  import {
12
12
  stamp_file
13
13
  } from "./chunk-NEC4AT4Z.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  investigation_reads
3
- } from "./chunk-QARPP36N.js";
3
+ } from "./chunk-7VSZ2N4B.js";
4
4
  import {
5
5
  lane_guard_policy
6
- } from "./chunk-DHSKBAQ2.js";
6
+ } from "./chunk-KC6LUZZ2.js";
7
7
  import {
8
8
  hook_decision
9
- } from "./chunk-E7LZL5AN.js";
9
+ } from "./chunk-LC56R53A.js";
10
10
 
11
11
  // scripts/delegation/investigation-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  lane_guard_policy
3
- } from "./chunk-DHSKBAQ2.js";
3
+ } from "./chunk-KC6LUZZ2.js";
4
4
  import {
5
5
  hook_decision
6
- } from "./chunk-E7LZL5AN.js";
6
+ } from "./chunk-LC56R53A.js";
7
7
  import {
8
8
  time_batch_guard
9
- } from "./chunk-TORRSNDJ.js";
9
+ } from "./chunk-TT742SIO.js";
10
10
 
11
11
  // scripts/hooks/batch-guard.ts
12
12
  import { text } from "node:stream/consumers";
@@ -6,7 +6,7 @@ import {
6
6
  process_owner_schema,
7
7
  run_carry,
8
8
  time_instant
9
- } from "./chunk-RW4XMF47.js";
9
+ } from "./chunk-4MGHBTOM.js";
10
10
  import {
11
11
  PLATFORM_TEMP_ROOT,
12
12
  PROBE_TIMEOUT_MS,
@@ -739,7 +739,7 @@ var AI_COMMANDS = {
739
739
  // `.env` rather than the ambient environment: the strand notification needs the Telegram
740
740
  // credentials, the same reason `run:wake` carries these flags.
741
741
  tsx_arguments: OPTIONAL_ENV_FILE_FLAGS,
742
- description: "Report whether the run is stranded \u2014 budget handed off, owner gone, and no supervisor watching",
742
+ description: "Report whether the run is stranded \u2014 owner gone, no successor holding the budget, and no supervisor watching",
743
743
  category: "AI tools",
744
744
  reference: ["", "automation", ["processes", "notifications"]]
745
745
  },
@@ -2,7 +2,7 @@ import {
2
2
  ENV_FILE_NAME,
3
3
  issue_number_shape,
4
4
  lane_paths
5
- } from "./chunk-RW4XMF47.js";
5
+ } from "./chunk-4MGHBTOM.js";
6
6
 
7
7
  // scripts/josh/josh-environment-file.ts
8
8
  function load_environment_file() {
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  ESLINT_EDIT_CACHE_FLAGS,
7
7
  time_density_hook
8
- } from "./chunk-TORRSNDJ.js";
8
+ } from "./chunk-TT742SIO.js";
9
9
  import {
10
10
  file_reader,
11
11
  json_value
12
- } from "./chunk-RW4XMF47.js";
12
+ } from "./chunk-4MGHBTOM.js";
13
13
  import {
14
14
  HOOK_PROCESS_TIMEOUT_MS
15
15
  } from "./chunk-NEC4AT4Z.js";
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env tsx
2
2
  import {
3
3
  pretool_guard
4
- } from "./chunk-HGA4EG5S.js";
5
- import "./chunk-4RWRP3FF.js";
4
+ } from "./chunk-6MAW7BCM.js";
5
+ import "./chunk-KCF2YE7O.js";
6
6
  import {
7
7
  bounded_pool
8
- } from "./chunk-TG2AB3W6.js";
8
+ } from "./chunk-6AC4C2IO.js";
9
9
  import {
10
10
  build_envelope,
11
11
  compose_context,
12
12
  format_edited_payload
13
- } from "./chunk-PV3FWDSQ.js";
13
+ } from "./chunk-YKUITFT7.js";
14
14
  import "./chunk-JBBMAPC4.js";
15
- import "./chunk-YSDAH73S.js";
15
+ import "./chunk-2X2ART5G.js";
16
16
  import "./chunk-CDY4NFQG.js";
17
- import "./chunk-7ZM464OW.js";
18
- import "./chunk-546X4PX3.js";
19
- import "./chunk-QARPP36N.js";
20
- import "./chunk-DHSKBAQ2.js";
17
+ import "./chunk-RYP3TSUJ.js";
18
+ import "./chunk-LOJTBU5V.js";
19
+ import "./chunk-7VSZ2N4B.js";
20
+ import "./chunk-KC6LUZZ2.js";
21
21
  import {
22
22
  hook_decision
23
- } from "./chunk-E7LZL5AN.js";
23
+ } from "./chunk-LC56R53A.js";
24
24
  import {
25
25
  time_density_hook
26
- } from "./chunk-TORRSNDJ.js";
27
- import "./chunk-NBEAGPS4.js";
26
+ } from "./chunk-TT742SIO.js";
27
+ import "./chunk-Y5R47QHU.js";
28
28
  import {
29
29
  json_value
30
- } from "./chunk-RW4XMF47.js";
30
+ } from "./chunk-4MGHBTOM.js";
31
31
  import "./chunk-NEC4AT4Z.js";
32
32
 
33
33
  // scripts/hooks/codex-hook-adapter.ts
@@ -9,13 +9,13 @@ import {
9
9
  is_enabled,
10
10
  notice_refusal_path,
11
11
  refusal_path
12
- } from "./chunk-4RWRP3FF.js";
13
- import "./chunk-QARPP36N.js";
14
- import "./chunk-DHSKBAQ2.js";
15
- import "./chunk-E7LZL5AN.js";
16
- import "./chunk-TORRSNDJ.js";
17
- import "./chunk-NBEAGPS4.js";
18
- import "./chunk-RW4XMF47.js";
12
+ } from "./chunk-KCF2YE7O.js";
13
+ import "./chunk-7VSZ2N4B.js";
14
+ import "./chunk-KC6LUZZ2.js";
15
+ import "./chunk-LC56R53A.js";
16
+ import "./chunk-TT742SIO.js";
17
+ import "./chunk-Y5R47QHU.js";
18
+ import "./chunk-4MGHBTOM.js";
19
19
  import "./chunk-NEC4AT4Z.js";
20
20
  export {
21
21
  DISABLED_VALUES,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  report_no_payload,
4
4
  run_hook
5
- } from "./chunk-PV3FWDSQ.js";
5
+ } from "./chunk-YKUITFT7.js";
6
6
  import "./chunk-JBBMAPC4.js";
7
- import "./chunk-TORRSNDJ.js";
8
- import "./chunk-RW4XMF47.js";
7
+ import "./chunk-TT742SIO.js";
8
+ import "./chunk-4MGHBTOM.js";
9
9
  import "./chunk-NEC4AT4Z.js";
10
10
 
11
11
  // scripts/hooks/format-edited-cli.ts