@telora/daemon 0.22.289 → 0.22.290

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 (281) hide show
  1. package/build-info.json +2 -2
  2. package/dist/backends/agent-backend.d.ts +2 -0
  3. package/dist/backends/agent-backend.d.ts.map +1 -1
  4. package/dist/backends/availability.d.ts +14 -0
  5. package/dist/backends/availability.d.ts.map +1 -1
  6. package/dist/backends/availability.js +37 -0
  7. package/dist/backends/availability.js.map +1 -1
  8. package/dist/backends/claude/claude-backend.d.ts.map +1 -1
  9. package/dist/backends/claude/claude-backend.js +2 -0
  10. package/dist/backends/claude/claude-backend.js.map +1 -1
  11. package/dist/backends/codex/codex-backend.d.ts.map +1 -1
  12. package/dist/backends/codex/codex-backend.js +2 -0
  13. package/dist/backends/codex/codex-backend.js.map +1 -1
  14. package/dist/backends/index.d.ts +1 -1
  15. package/dist/backends/index.d.ts.map +1 -1
  16. package/dist/backends/index.js +2 -17
  17. package/dist/backends/index.js.map +1 -1
  18. package/dist/cli/status-commands.d.ts +7 -0
  19. package/dist/cli/status-commands.d.ts.map +1 -1
  20. package/dist/cli/status-commands.js +17 -0
  21. package/dist/cli/status-commands.js.map +1 -1
  22. package/dist/completion/completion-event/event.d.ts +1 -0
  23. package/dist/completion/completion-event/event.d.ts.map +1 -1
  24. package/dist/completion/completion-event/event.js +1 -0
  25. package/dist/completion/completion-event/event.js.map +1 -1
  26. package/dist/completion/review-exit/review-census-record.d.ts +4 -2
  27. package/dist/completion/review-exit/review-census-record.d.ts.map +1 -1
  28. package/dist/completion/review-exit/review-census-record.js +11 -3
  29. package/dist/completion/review-exit/review-census-record.js.map +1 -1
  30. package/dist/completion/review-exit/review-exit-deps.js +1 -1
  31. package/dist/completion/review-exit/review-exit-phase.d.ts +9 -0
  32. package/dist/completion/review-exit/review-exit-phase.d.ts.map +1 -1
  33. package/dist/completion/review-exit/review-exit-phase.js +1 -1
  34. package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
  35. package/dist/completion/review-exit-holds/commit-verdict-release.d.ts.map +1 -1
  36. package/dist/completion/review-exit-holds/commit-verdict-release.js +2 -1
  37. package/dist/completion/review-exit-holds/commit-verdict-release.js.map +1 -1
  38. package/dist/completion/review-exit-holds/review-exit-verdict-gate.d.ts +1 -0
  39. package/dist/completion/review-exit-holds/review-exit-verdict-gate.d.ts.map +1 -1
  40. package/dist/completion/review-exit-holds/review-exit-verdict-gate.js +1 -0
  41. package/dist/completion/review-exit-holds/review-exit-verdict-gate.js.map +1 -1
  42. package/dist/completion/team-exit/team-completion.d.ts.map +1 -1
  43. package/dist/completion/team-exit/team-completion.js +3 -1
  44. package/dist/completion/team-exit/team-completion.js.map +1 -1
  45. package/dist/completion/team-liveness/liveness-firing.js +3 -3
  46. package/dist/completion/team-liveness/team-liveness-phase.d.ts +6 -1
  47. package/dist/completion/team-liveness/team-liveness-phase.d.ts.map +1 -1
  48. package/dist/completion/team-liveness/team-liveness-phase.js.map +1 -1
  49. package/dist/completion/team-outcome/apply-close.d.ts.map +1 -1
  50. package/dist/completion/team-outcome/apply-close.js +4 -1
  51. package/dist/completion/team-outcome/apply-close.js.map +1 -1
  52. package/dist/completion/team-outcome/apply-turn.d.ts.map +1 -1
  53. package/dist/completion/team-outcome/apply-turn.js +3 -1
  54. package/dist/completion/team-outcome/apply-turn.js.map +1 -1
  55. package/dist/completion/team-outcome/apply.d.ts.map +1 -1
  56. package/dist/completion/team-outcome/apply.js +3 -1
  57. package/dist/completion/team-outcome/apply.js.map +1 -1
  58. package/dist/completion/team-outcome/decide-shared.d.ts.map +1 -1
  59. package/dist/completion/team-outcome/decide-shared.js +3 -2
  60. package/dist/completion/team-outcome/decide-shared.js.map +1 -1
  61. package/dist/completion/team-outcome/exit-pipeline-state.d.ts.map +1 -1
  62. package/dist/completion/team-outcome/exit-pipeline-state.js +2 -1
  63. package/dist/completion/team-outcome/exit-pipeline-state.js.map +1 -1
  64. package/dist/completion/team-outcome/team-outcome.d.ts.map +1 -1
  65. package/dist/completion/team-outcome/team-outcome.js +3 -1
  66. package/dist/completion/team-outcome/team-outcome.js.map +1 -1
  67. package/dist/composition/execution-migrations-context.d.ts.map +1 -1
  68. package/dist/composition/execution-migrations-context.js +2 -0
  69. package/dist/composition/execution-migrations-context.js.map +1 -1
  70. package/dist/composition/execution-process-context.js +1 -1
  71. package/dist/composition/execution-spawn-context.d.ts.map +1 -1
  72. package/dist/composition/execution-spawn-context.js +2 -1
  73. package/dist/composition/execution-spawn-context.js.map +1 -1
  74. package/dist/composition/execution-spawn-process-context.d.ts.map +1 -1
  75. package/dist/composition/execution-spawn-process-context.js +3 -2
  76. package/dist/composition/execution-spawn-process-context.js.map +1 -1
  77. package/dist/composition/focus-activity-live-sources.d.ts +4 -0
  78. package/dist/composition/focus-activity-live-sources.d.ts.map +1 -0
  79. package/dist/composition/focus-activity-live-sources.js +65 -0
  80. package/dist/composition/focus-activity-live-sources.js.map +1 -0
  81. package/dist/composition/runtime-delivery-advance-context.d.ts +6 -1
  82. package/dist/composition/runtime-delivery-advance-context.d.ts.map +1 -1
  83. package/dist/composition/runtime-delivery-advance-context.js +14 -3
  84. package/dist/composition/runtime-delivery-advance-context.js.map +1 -1
  85. package/dist/composition/runtime-heartbeat-context.d.ts.map +1 -1
  86. package/dist/composition/runtime-heartbeat-context.js +3 -1
  87. package/dist/composition/runtime-heartbeat-context.js.map +1 -1
  88. package/dist/composition/team-lifecycle-context.d.ts.map +1 -1
  89. package/dist/composition/team-lifecycle-context.js +3 -1
  90. package/dist/composition/team-lifecycle-context.js.map +1 -1
  91. package/dist/composition/team-liveness-phase-sources.d.ts.map +1 -1
  92. package/dist/composition/team-liveness-phase-sources.js +1 -0
  93. package/dist/composition/team-liveness-phase-sources.js.map +1 -1
  94. package/dist/composition/verification-context.d.ts.map +1 -1
  95. package/dist/composition/verification-context.js +4 -1
  96. package/dist/composition/verification-context.js.map +1 -1
  97. package/dist/daemon-state/awaiting-slot.d.ts +8 -2
  98. package/dist/daemon-state/awaiting-slot.d.ts.map +1 -1
  99. package/dist/daemon-state/awaiting-slot.js +21 -8
  100. package/dist/daemon-state/awaiting-slot.js.map +1 -1
  101. package/dist/daemon-state/engine-readiness.d.ts +73 -0
  102. package/dist/daemon-state/engine-readiness.d.ts.map +1 -0
  103. package/dist/daemon-state/engine-readiness.js +191 -0
  104. package/dist/daemon-state/engine-readiness.js.map +1 -0
  105. package/dist/daemon-state/focus-progress-clock.d.ts +34 -0
  106. package/dist/daemon-state/focus-progress-clock.d.ts.map +1 -0
  107. package/dist/daemon-state/focus-progress-clock.js +167 -0
  108. package/dist/daemon-state/focus-progress-clock.js.map +1 -0
  109. package/dist/daemon-state/focus-team-state.d.ts +12 -9
  110. package/dist/daemon-state/focus-team-state.d.ts.map +1 -1
  111. package/dist/daemon-state/focus-team-state.js +15 -9
  112. package/dist/daemon-state/focus-team-state.js.map +1 -1
  113. package/dist/daemon-state/provider-window.d.ts.map +1 -1
  114. package/dist/daemon-state/provider-window.js +5 -1
  115. package/dist/daemon-state/provider-window.js.map +1 -1
  116. package/dist/daemon-state/review-park-record.d.ts +36 -0
  117. package/dist/daemon-state/review-park-record.d.ts.map +1 -0
  118. package/dist/daemon-state/review-park-record.js +27 -0
  119. package/dist/daemon-state/review-park-record.js.map +1 -0
  120. package/dist/daemon-state/worker-pidfile.d.ts.map +1 -1
  121. package/dist/daemon-state/worker-pidfile.js +3 -1
  122. package/dist/daemon-state/worker-pidfile.js.map +1 -1
  123. package/dist/delivery/commit-verdict-hold.d.ts.map +1 -1
  124. package/dist/delivery/commit-verdict-hold.js +3 -1
  125. package/dist/delivery/commit-verdict-hold.js.map +1 -1
  126. package/dist/directive/directive-queue.js +1 -1
  127. package/dist/focus/focus-activity-held.d.ts +37 -0
  128. package/dist/focus/focus-activity-held.d.ts.map +1 -0
  129. package/dist/focus/focus-activity-held.js +89 -0
  130. package/dist/focus/focus-activity-held.js.map +1 -0
  131. package/dist/focus/focus-activity-poll-facts.d.ts +39 -0
  132. package/dist/focus/focus-activity-poll-facts.d.ts.map +1 -0
  133. package/dist/focus/focus-activity-poll-facts.js +109 -0
  134. package/dist/focus/focus-activity-poll-facts.js.map +1 -0
  135. package/dist/focus/focus-activity-producers.d.ts +37 -0
  136. package/dist/focus/focus-activity-producers.d.ts.map +1 -0
  137. package/dist/focus/focus-activity-producers.js +118 -0
  138. package/dist/focus/focus-activity-producers.js.map +1 -0
  139. package/dist/focus/focus-activity-record.d.ts +58 -0
  140. package/dist/focus/focus-activity-record.d.ts.map +1 -0
  141. package/dist/focus/focus-activity-record.js +138 -0
  142. package/dist/focus/focus-activity-record.js.map +1 -0
  143. package/dist/focus/focus-activity-sources.d.ts +95 -0
  144. package/dist/focus/focus-activity-sources.d.ts.map +1 -0
  145. package/dist/focus/focus-activity-sources.js +45 -0
  146. package/dist/focus/focus-activity-sources.js.map +1 -0
  147. package/dist/focus/focus-executor.js +1 -1
  148. package/dist/focus/focus-executor.js.map +1 -1
  149. package/dist/focus/focus-poller-auto-advance.d.ts.map +1 -1
  150. package/dist/focus/focus-poller-auto-advance.js +2 -0
  151. package/dist/focus/focus-poller-auto-advance.js.map +1 -1
  152. package/dist/focus/heartbeat.d.ts +3 -0
  153. package/dist/focus/heartbeat.d.ts.map +1 -1
  154. package/dist/focus/heartbeat.js +31 -31
  155. package/dist/focus/heartbeat.js.map +1 -1
  156. package/dist/focus/pending-review-approved-head.d.ts.map +1 -1
  157. package/dist/focus/pending-review-approved-head.js +4 -2
  158. package/dist/focus/pending-review-approved-head.js.map +1 -1
  159. package/dist/focus/unchanged-reviewed-head.d.ts.map +1 -1
  160. package/dist/focus/unchanged-reviewed-head.js +4 -2
  161. package/dist/focus/unchanged-reviewed-head.js.map +1 -1
  162. package/dist/queries/deliveries/deliveries.d.ts +4 -0
  163. package/dist/queries/deliveries/deliveries.d.ts.map +1 -1
  164. package/dist/queries/deliveries/deliveries.js +6 -0
  165. package/dist/queries/deliveries/deliveries.js.map +1 -1
  166. package/dist/queries/deliveries/issues.d.ts +3 -0
  167. package/dist/queries/deliveries/issues.d.ts.map +1 -1
  168. package/dist/queries/deliveries/issues.js +10 -2
  169. package/dist/queries/deliveries/issues.js.map +1 -1
  170. package/dist/queries/delivery-gate-state/delivery-gate-holds.d.ts +2 -0
  171. package/dist/queries/delivery-gate-state/delivery-gate-holds.d.ts.map +1 -1
  172. package/dist/queries/focuses/focus-discovery.d.ts.map +1 -1
  173. package/dist/queries/focuses/focus-discovery.js +2 -0
  174. package/dist/queries/focuses/focus-discovery.js.map +1 -1
  175. package/dist/queries/focuses/focuses.d.ts.map +1 -1
  176. package/dist/queries/focuses/focuses.js +2 -0
  177. package/dist/queries/focuses/focuses.js.map +1 -1
  178. package/dist/queries/sessions/daemon-connection.d.ts.map +1 -1
  179. package/dist/queries/sessions/daemon-connection.js +1 -0
  180. package/dist/queries/sessions/daemon-connection.js.map +1 -1
  181. package/dist/queries/workflow-transitions/workflows.d.ts.map +1 -1
  182. package/dist/queries/workflow-transitions/workflows.js +1 -0
  183. package/dist/queries/workflow-transitions/workflows.js.map +1 -1
  184. package/dist/shell/unified-shell-status.d.ts +11 -1
  185. package/dist/shell/unified-shell-status.d.ts.map +1 -1
  186. package/dist/shell/unified-shell-status.js +14 -0
  187. package/dist/shell/unified-shell-status.js.map +1 -1
  188. package/dist/shell/unified-shell.d.ts.map +1 -1
  189. package/dist/shell/unified-shell.js +23 -4
  190. package/dist/shell/unified-shell.js.map +1 -1
  191. package/dist/spawn/codex-auth.d.ts +32 -0
  192. package/dist/spawn/codex-auth.d.ts.map +1 -0
  193. package/dist/spawn/codex-auth.js +55 -0
  194. package/dist/spawn/codex-auth.js.map +1 -0
  195. package/dist/spawn/helpers.d.ts.map +1 -1
  196. package/dist/spawn/helpers.js +15 -3
  197. package/dist/spawn/helpers.js.map +1 -1
  198. package/dist/spawn/model-reached.d.ts +36 -0
  199. package/dist/spawn/model-reached.d.ts.map +1 -0
  200. package/dist/spawn/model-reached.js +43 -0
  201. package/dist/spawn/model-reached.js.map +1 -0
  202. package/dist/spawn/next-spawn-cooldown.d.ts +21 -2
  203. package/dist/spawn/next-spawn-cooldown.d.ts.map +1 -1
  204. package/dist/spawn/next-spawn-cooldown.js +65 -7
  205. package/dist/spawn/next-spawn-cooldown.js.map +1 -1
  206. package/dist/spawn/process-spawn.d.ts.map +1 -1
  207. package/dist/spawn/process-spawn.js +8 -5
  208. package/dist/spawn/process-spawn.js.map +1 -1
  209. package/dist/spawn/review-hold-park.d.ts +12 -1
  210. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  211. package/dist/spawn/review-hold-park.js +25 -9
  212. package/dist/spawn/review-hold-park.js.map +1 -1
  213. package/dist/spawn/worktree-session.d.ts +15 -0
  214. package/dist/spawn/worktree-session.d.ts.map +1 -1
  215. package/dist/spawn/worktree-session.js +25 -2
  216. package/dist/spawn/worktree-session.js.map +1 -1
  217. package/dist/supervision/spawn-cooldown-window.d.ts +15 -0
  218. package/dist/supervision/spawn-cooldown-window.d.ts.map +1 -0
  219. package/dist/supervision/spawn-cooldown-window.js +46 -0
  220. package/dist/supervision/spawn-cooldown-window.js.map +1 -0
  221. package/dist/supervision/spawn-cooldown.d.ts +3 -2
  222. package/dist/supervision/spawn-cooldown.d.ts.map +1 -1
  223. package/dist/supervision/spawn-cooldown.js +6 -1
  224. package/dist/supervision/spawn-cooldown.js.map +1 -1
  225. package/dist/supervision/stop-registry.d.ts +1 -0
  226. package/dist/supervision/stop-registry.d.ts.map +1 -1
  227. package/dist/supervision/stop-rows-spawn.d.ts +8 -0
  228. package/dist/supervision/stop-rows-spawn.d.ts.map +1 -1
  229. package/dist/supervision/stop-rows-spawn.js +28 -1
  230. package/dist/supervision/stop-rows-spawn.js.map +1 -1
  231. package/dist/testing/fixtures/approved-head-inert-deps.d.ts.map +1 -1
  232. package/dist/testing/fixtures/approved-head-inert-deps.js +4 -2
  233. package/dist/testing/fixtures/approved-head-inert-deps.js.map +1 -1
  234. package/dist/testing/fixtures/codex-stream-session.d.ts +4 -0
  235. package/dist/testing/fixtures/codex-stream-session.d.ts.map +1 -1
  236. package/dist/testing/fixtures/codex-stream-session.js +21 -5
  237. package/dist/testing/fixtures/codex-stream-session.js.map +1 -1
  238. package/dist/testing/fixtures/completion-event-deps.js +1 -1
  239. package/dist/testing/fixtures/index.js +1 -1
  240. package/dist/testing/fixtures/process-close-context.d.ts.map +1 -1
  241. package/dist/testing/fixtures/process-close-context.js +2 -0
  242. package/dist/testing/fixtures/process-close-context.js.map +1 -1
  243. package/dist/testing/fixtures/recording-api-client.js +1 -1
  244. package/dist/testing/fixtures/review-exit-deps.js +1 -1
  245. package/dist/testing/fixtures/session-wire.d.ts.map +1 -1
  246. package/dist/testing/fixtures/session-wire.js +2 -1
  247. package/dist/testing/fixtures/session-wire.js.map +1 -1
  248. package/dist/testing/fixtures/verification-deps.d.ts.map +1 -1
  249. package/dist/testing/fixtures/verification-deps.js +4 -0
  250. package/dist/testing/fixtures/verification-deps.js.map +1 -1
  251. package/dist/types/focus-team-state.d.ts +14 -2
  252. package/dist/types/focus-team-state.d.ts.map +1 -1
  253. package/dist/types/focus-team-state.js.map +1 -1
  254. package/dist/types/index.js +1 -1
  255. package/dist/verify/deterministic-gate/verification-checkout.d.ts +8 -4
  256. package/dist/verify/deterministic-gate/verification-checkout.d.ts.map +1 -1
  257. package/dist/verify/deterministic-gate/verification-checkout.js +50 -13
  258. package/dist/verify/deterministic-gate/verification-checkout.js.map +1 -1
  259. package/dist/verify/deterministic-gate/verification-deterministic.d.ts.map +1 -1
  260. package/dist/verify/deterministic-gate/verification-deterministic.js +3 -1
  261. package/dist/verify/deterministic-gate/verification-deterministic.js.map +1 -1
  262. package/dist/verify/engine/verification-deps.d.ts +7 -0
  263. package/dist/verify/engine/verification-deps.d.ts.map +1 -1
  264. package/dist/verify/engine/verification-deps.js +1 -1
  265. package/dist/verify/engine/verification-engine.d.ts.map +1 -1
  266. package/dist/verify/engine/verification-engine.js +107 -8
  267. package/dist/verify/engine/verification-engine.js.map +1 -1
  268. package/dist/verify/gate-config/verification-config.js +1 -1
  269. package/dist/verify/gate-verdicts/commit-verdict-record.js +1 -1
  270. package/dist/verify/gate-verdicts/gate-run-registry.d.ts +74 -3
  271. package/dist/verify/gate-verdicts/gate-run-registry.d.ts.map +1 -1
  272. package/dist/verify/gate-verdicts/gate-run-registry.js +41 -20
  273. package/dist/verify/gate-verdicts/gate-run-registry.js.map +1 -1
  274. package/dist/verify/run-selection/default-on-guards.d.ts.map +1 -1
  275. package/dist/verify/run-selection/default-on-guards.js +1 -19
  276. package/dist/verify/run-selection/default-on-guards.js.map +1 -1
  277. package/dist/worktree/verify-interlock.d.ts +23 -2
  278. package/dist/worktree/verify-interlock.d.ts.map +1 -1
  279. package/dist/worktree/verify-interlock.js +79 -2
  280. package/dist/worktree/verify-interlock.js.map +1 -1
  281. package/package.json +3 -3
@@ -0,0 +1,55 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/spawn/codex-auth.test.ts
3
+ // PINNED-BY-END
4
+ import { markEngineNotReady } from '../daemon-state/engine-readiness.js';
5
+ import { CODEX_PROVIDER } from '../daemon-state/provider-window.js';
6
+ import { markModelUnavailable } from './team-provider-limit.js';
7
+ import { createLogger } from '../log/daemon-log.js';
8
+ const log = createLogger({ module: 'codex-auth' });
9
+ /** The final 401 (or 403) Codex reports once its retries are spent; never a `Reconnecting...` retry. */
10
+ const AUTH_FAILURE_RE = /^unexpected status (401 Unauthorized|403 Forbidden)\b/i;
11
+ function isRecord(value) {
12
+ return typeof value === 'object' && value !== null;
13
+ }
14
+ /** The message of a Codex `error` or `turn.failed` line, or null for any other line. */
15
+ function codexFailureMessage(raw) {
16
+ if (!isRecord(raw))
17
+ return null;
18
+ if (raw['type'] === 'error')
19
+ return typeof raw['message'] === 'string' ? raw['message'] : null;
20
+ if (raw['type'] === 'turn.failed') {
21
+ const err = raw['error'];
22
+ return isRecord(err) && typeof err['message'] === 'string' ? err['message'] : null;
23
+ }
24
+ return null;
25
+ }
26
+ /** The Codex authentication-failure message a raw line carries, or null. Pure. */
27
+ export function parseCodexAuthFailure(raw) {
28
+ const message = codexFailureMessage(raw);
29
+ if (message === null)
30
+ return null;
31
+ return AUTH_FAILURE_RE.test(message.trim()) ? message.trim() : null;
32
+ }
33
+ /**
34
+ * Consume a raw line from a Codex team's stream. On an authentication failure:
35
+ * mark the Codex engine not ready on this host (missing login) and the team's
36
+ * model unavailable. The `error` and `turn.failed` lines repeat one message; the
37
+ * second changes nothing but the record's timestamp. Returns the message, or null.
38
+ */
39
+ export function noteCodexTeamAuthFailure(teamState, raw, focusName, nowMs = Date.now()) {
40
+ const message = parseCodexAuthFailure(raw);
41
+ if (message === null)
42
+ return null;
43
+ const holdUntilMs = markEngineNotReady('codex', {
44
+ missing: 'login',
45
+ detail: `Codex could not authenticate ("${message.slice(0, 160)}"). Run \`codex login\` or set CODEX_API_KEY on the daemon host.`,
46
+ source: 'auth_failure',
47
+ }, nowMs).nextProbeAtMs ?? nowMs;
48
+ if (!teamState.modelUnavailable) {
49
+ log.warn(` [focus-team] Codex authentication failed for "${focusName}" -- the codex engine is not ready on this host ` +
50
+ `(not logged in); no lead is spawned on it until it re-probes ready. Not a review or coding outcome.`);
51
+ }
52
+ markModelUnavailable(teamState, { kind: 'auth', provider: teamState.provider ?? CODEX_PROVIDER, holdUntilMs });
53
+ return message;
54
+ }
55
+ //# sourceMappingURL=codex-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-auth.js","sourceRoot":"","sources":["../../src/spawn/codex-auth.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0DAA0D;AAC1D,gBAAgB;AAyBhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAEnD,wGAAwG;AACxG,MAAM,eAAe,GAAG,wDAAwD,CAAC;AAEjF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,wFAAwF;AACxF,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO;QAAE,OAAO,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAyB,EACzB,GAAY,EACZ,SAAiB,EACjB,QAAgB,IAAI,CAAC,GAAG,EAAE;IAE1B,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE;QAC9C,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,kCAAkC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,kEAAkE;QACjI,MAAM,EAAE,cAAc;KACvB,EAAE,KAAK,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC;IACjC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CACN,mDAAmD,SAAS,kDAAkD;YAC9G,qGAAqG,CACtG,CAAC;IACJ,CAAC;IACD,oBAAoB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/G,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/completion/team-teardown/team-teardown-kills-process-group.test.ts,
3
3
  // packages/daemon/src/daemon-state/shutdown-attribution.test.ts,
4
- // packages/daemon/src/spawn/finished-lead-not-woken.test.ts,
4
+ // packages/daemon/src/focus/focus-activity-team-clock.test.ts,
5
+ // packages/daemon/src/integration/engine-readiness-runtime.test.ts,
6
+ // packages/daemon/src/spawn/codex-auth.test.ts, packages/daemon/src/spawn/finished-lead-not-woken.test.ts,
5
7
  // packages/daemon/src/spawn/helpers-activity-wiring.test.ts,
6
8
  // packages/daemon/src/spawn/progress-measure-wiring.test.ts,
7
9
  // packages/daemon/src/spawn/resume-failure-sigterm-exclusion.test.ts,
@@ -17,11 +19,13 @@ import { CompletionDetector } from '../completion/index.js';
17
19
  import { pendingStdinTurns, sentStdinCount, clearStdinTurnTracking } from '../daemon-state/stdin-turn-tracker.js';
18
20
  import { noteTeamAgentEvent, noteTeamRawEvent, resetTeamWorkers } from '../completion/team-progress/team-progress-measure.js';
19
21
  import { ActivityTracker } from '../session/activity-tracker.js';
20
- import { markTeamExecuting, recordTeamActivity, ownsOrVacantRegistration, deleteTeamRegistrationIfOwned, markTeamTerminated, countToolActivity, stampErrorResult, } from '../daemon-state/focus-team-state.js';
22
+ import { markTeamExecuting, recordTeamActivity, ownsOrVacantRegistration, deleteTeamRegistrationIfOwned, markTeamTerminated, countToolActivity, stampErrorResult, markModelReached, } from '../daemon-state/focus-team-state.js';
21
23
  import { isSigtermExit, classifyTeamExit } from '../completion/team-exit/exit-classification.js';
22
24
  import { formatTeamExitLine } from '../daemon-state/shutdown-attribution.js';
23
25
  import { parseRateLimitInfo } from '../backends/claude/rate-limit.js';
24
26
  import { noteCodexTeamLimit } from './codex-limit.js';
27
+ import { noteCodexTeamAuthFailure } from './codex-auth.js';
28
+ import { agentEventReachesModel, rawLineReachesModel } from './model-reached.js';
25
29
  import { codexToolActivityEvent, noteCodexDelegation } from '../completion/team-progress/codex-activity.js';
26
30
  import { reengageOnIdleResult } from './lead-continuation.js';
27
31
  import { recordRespawnCooldown } from '../supervision/spawn-cooldown.js';
@@ -80,6 +84,9 @@ function handleTeamAgentEvent(event, ctx) {
80
84
  recordTeamActivity(focusId);
81
85
  // The progress measure's agent-activity axis (completion/team-progress/team-progress-measure.ts).
82
86
  noteTeamAgentEvent(teamState, focusId, event);
87
+ // Whether the exit reached its model (spawn/model-reached.ts): a lead that dies before it is no review.
88
+ if (agentEventReachesModel(event))
89
+ markModelReached(teamState, Date.now());
83
90
  switch (event.kind) {
84
91
  case 'session_started':
85
92
  log.info(` [focus-team] Session initialized (model: ${event.model ?? 'unknown'})`);
@@ -140,13 +147,15 @@ function handleTeamAgentEvent(event, ctx) {
140
147
  }
141
148
  /**
142
149
  * Read one raw line of a Codex team's stream for what the daemon-core parser
143
- * does not surface: a usage or rate limit (spawn/codex-limit.ts), a silent
150
+ * does not surface: a usage or rate limit (spawn/codex-limit.ts), an
151
+ * authentication failure (spawn/codex-auth.ts), a silent
144
152
  * delegation opening or closing, and a completed shell / file-change / search
145
153
  * item, which is handled as the tool_activity event a Claude tool call is
146
154
  * (completion/team-progress/codex-activity.ts).
147
155
  */
148
156
  function handleCodexRawLine(raw, ctx) {
149
157
  noteCodexTeamLimit(ctx.teamState, raw, ctx.focusName);
158
+ noteCodexTeamAuthFailure(ctx.teamState, raw, ctx.focusName);
150
159
  noteCodexDelegation(ctx.focusId, raw);
151
160
  const toolEvent = codexToolActivityEvent(raw);
152
161
  if (toolEvent)
@@ -194,6 +203,9 @@ export function attachStreamHandlers(params) {
194
203
  // work, silent delegations). Claude's typed rate-limit event is read below.
195
204
  if (backend.id === 'codex')
196
205
  handleCodexRawLine(raw, { teamState, focusId, focusName, engineId: backend.id, continuation });
206
+ // A message the model wrote (not one the CLI wrote for it): the session reached its model (spawn/model-reached.ts).
207
+ if (rawLineReachesModel(backend.id, raw))
208
+ markModelReached(teamState, Date.now());
197
209
  const rl = parseRateLimitInfo(raw);
198
210
  if (rl && rl.status === 'rejected' && rl.resetsAtMs != null) {
199
211
  setRateLimitResetAt(teamState, rl.resetsAtMs);
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,qGAAqG;AACrG,mEAAmE;AACnE,iEAAiE;AACjE,sEAAsE;AACtE,6GAA6G;AAC7G,+DAA+D;AAC/D,+DAA+D;AAC/D,wEAAwE;AACxE,6DAA6D;AAC7D,oEAAoE;AACpE,0EAA0E;AAC1E,+DAA+D;AAC/D,gBAAgB;AAWhB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAC9H,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EACL,iBAAiB,EAAE,kBAAkB,EACrC,wBAAwB,EAAE,6BAA6B,EACvD,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,GAC1E,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAyB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,mCAAmC,EACnC,gCAAgC,GACjC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAmC,MAAM,2CAA2C,CAAC;AAC7H,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAoEvD;;;;;;GAMG;AACH,KAAK,UAAU,yBAAyB,CACtC,SAAyB,EACzB,WAAwC,EACxC,OAAe,EACf,UAAiG;IAEjG,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9B,6BAA6B,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,GAAG,CAAC,KAAK,CAAC,aAAa,SAAS,CAAC,SAAS,qBAAqB,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACnH,CAAC;AAED,2EAA2E;AAE3E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,UAAkB,EAAE,SAAiB;IACvF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,SAAS,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,aAAa,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,aAAa,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,eAAe,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,qFAAqF;IACrF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,gCAAgC,SAAS,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,gCAAgC,SAAS,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,IAAI,CAAC,+BAA+B,SAAS,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAC3F,CAAC;AAoBD,SAAS,oBAAoB,CAC3B,KAAiB,EACjB,GAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACxD,yEAAyE;IACzE,gEAAgE;IAChE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,kGAAkG;IAClG,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,wGAAwG;IACxG,IAAI,sBAAsB,CAAC,KAAK,CAAC;QAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3E,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,iBAAiB;YACpB,GAAG,CAAC,IAAI,CAAC,8CAA8C,KAAK,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;YACpF,oEAAoE;YACpE,0EAA0E;YAC1E,uEAAuE;YACvE,sDAAsD;YACtD,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,6BAA6B,CAAC,SAAS,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC;YACpF,qEAAqE;YACrE,sEAAsE;YACtE,mDAAmD;YACnD,mBAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAClG,MAAM;QACR,KAAK,eAAe;YAClB,wEAAwE;YACxE,uEAAuE;YACvE,uFAAuF;YACvF,6DAA6D;YAC7D,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,mBAAmB;YACtB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,GAAG,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,MAAM;QACR,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,QAAQ,YAAY,IAAI,EAAE,CAAC,CAAC;YAC7G,sEAAsE;YACtE,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,8EAA8E;YAC9E,4EAA4E;YAC5E,6EAA6E;YAC7E,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,2EAA2E;YAC3E,0EAA0E;YAC1E,2EAA2E;YAC3E,2EAA2E;YAC3E,wEAAwE;YACxE,4EAA4E;YAC5E,iBAAiB;YACjB,KAAK,oBAAoB,CAAC;gBACxB,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;aACxD,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACjC,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAG,GAAa,CAAC,OAAO,CAAC,CACpF,CAAC;YACF,MAAM;QACR,CAAC;QACD;YACE,MAAM;IACV,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,GAAY,EACZ,GAA0B;IAE1B,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5D,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,SAAS;QAAE,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAkC;IACrE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAE/F,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IACtC,2EAA2E;IAC3E,8EAA8E;IAC9E,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,oHAAoH;IACrJ,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,mEAAmE;IAC9F,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC;QAChD,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC;QACrE,4EAA4E;QAC5E,+EAA+E;QAC/E,qBAAqB,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC;QACpD,QAAQ,EAAE,SAAS;KACpB,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;IAC5B,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,sDAAsD;IACtD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/B,+EAA+E;IAC/E,0BAA0B;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACnD,sEAAsE;QACtE,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,uFAAuF;QACvF,kCAAkC;QAClC,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO;YAAE,kBAAkB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3H,oHAAoH;QACpH,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC;YAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,UAAU,IAAI,EAAE,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5D,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CACN,2CAA2C,SAAS,GAAG;gBACvD,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM;gBACzD,uBAAuB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wEAAwE;IACxE,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE,CAC7C,oBAAoB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CACnG,CAAC;IAEF,sBAAsB;IACtB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAErC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,mBAAmB,CAAC,IAK5B;IACC,MAAM,2BAA2B,GAAG,MAAM,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;WACxB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;WACtC,IAAI,CAAC,IAAI,KAAK,CAAC;WACf,IAAI,CAAC,IAAI,KAAK,IAAI;WAClB,SAAS,GAAG,2BAA2B,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAiC,EAAE,IAAgC;IAC9G,MAAM,EACJ,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EACrD,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,eAAe,EACtE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,GAC7D,GAAG,GAAG,CAAC;IACR,MAAM,EACJ,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EACtG,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,UAAU,GACvH,GAAG,IAAI,CAAC;IACT,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC;IACtD,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAE,OAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrG,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAEvC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAEtG,IAAI,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,gBAAgB,SAAS,8BAA8B,CAAC,CAAC;QAEjG,mDAAmD;QACnD,IAAI,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;YAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;QAC7G,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAEvB,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,SAAS,EAAE;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,uBAAuB,IAAI,4BAA4B;gBACpE,aAAa,EAAE,UAAU;gBACzB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACnC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAG,SAAmB,CAAC,OAAO,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAE9F,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,OAAO,CAAC,EAAE,GAAG,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,+EAA+E;IAC/E,sEAAsE;IACtE,IAAI,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;IAE7G,+DAA+D;IAC/D,2EAA2E;IAC3E,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3B,sCAAsC;IACtC,IAAI,CAAC;QAAC,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAEnI,mBAAmB;IACnB,kBAAkB,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IACvB,gBAAgB,EAAE,CAAC;IAEnB,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,mCAAmC,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAClF,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CACP,0CAA0C,SAAS,oCAAoC;gBACvF,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CACvF,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,SAAS,EAAE;oBAC/B,GAAG,gCAAgC,CAAC,OAAO,CAAC,OAAO,CAAC;oBACpD,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACnC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAG,SAAmB,CAAC,OAAO,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,+BAA+B,EAAE,YAAY,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,wEAAwE;IACxE,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,cAAc;KACnF,CAAC,CAAC;IACH,qBAAqB,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,eAAe;QACxD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;KACjD,CAAC,CAAC;IAEH,MAAM,sBAAsB,CAAC;QAC3B,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU;QACnC,uBAAuB,EAAE,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,uBAAuB;QAC7E,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY;QACvC,SAAS;QACT,SAAS;QACT,IAAI;QACJ,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Did a lead's session ever reach its model? The fact a lead's exit carries so a
3
+ * lead that died before its first model turn is read as what it is: nothing
4
+ * happened, and the work it was spawned for is still owed.
5
+ *
6
+ * A session reaches its model when the MODEL answers: it writes a message,
7
+ * invokes a tool, delegates to a worker, or finishes a turn that produced
8
+ * output. Neither engine's session start counts, and neither does text the CLI
9
+ * writes on the model's behalf:
10
+ *
11
+ * - Codex announces `thread.started` (the neutral `session_started`) before
12
+ * any model request; a Codex lead that cannot authenticate then emits only
13
+ * `error` / `turn.failed` lines and one `item.completed` whose item is an
14
+ * `error` (testing/fixtures/codex-streams/auth-401-unauthorized.jsonl).
15
+ * - Claude Code that cannot authenticate emits its `system` init, `api_retry`
16
+ * lines, then an `assistant` message whose model is `<synthetic>` carrying
17
+ * the error text -- surfaced as neutral `narration` -- and an `is_error`
18
+ * result with zero output tokens
19
+ * (testing/fixtures/claude-streams/auth-401-invalid-key.jsonl).
20
+ *
21
+ * So the neutral events that count are the ones only a model produces:
22
+ * `tool_activity`, `subagent_activity`, and a `result` with output tokens or no
23
+ * error. Narration is read per engine off the raw channel instead, where the
24
+ * synthetic message can be told apart: a Claude `assistant` message from a real
25
+ * model, or any Codex `item.*` line whose item is not an `error`.
26
+ */
27
+ import type { AgentEvent } from '@telora/daemon-core';
28
+ /** True when a neutral agent event is output only the model produces. Pure. */
29
+ export declare function agentEventReachesModel(event: AgentEvent): boolean;
30
+ /** True when a raw Codex `--json` line is an item the model produced. Pure. */
31
+ export declare function codexRawLineReachesModel(raw: unknown): boolean;
32
+ /** True when a raw Claude stream-json line is an assistant message a real model wrote. Pure. */
33
+ export declare function claudeRawLineReachesModel(raw: unknown): boolean;
34
+ /** The raw-channel reading for the engine the lead runs on. Pure. */
35
+ export declare function rawLineReachesModel(engineId: string, raw: unknown): boolean;
36
+ //# sourceMappingURL=model-reached.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-reached.d.ts","sourceRoot":"","sources":["../../src/spawn/model-reached.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAUjE;AAMD,+EAA+E;AAC/E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI9D;AAED,gGAAgG;AAChG,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI/D;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAI3E"}
@@ -0,0 +1,43 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/spawn/model-reached.test.ts
3
+ // PINNED-BY-END
4
+ /** The model name Claude Code stamps on a message it wrote itself (an API error), not the model. */
5
+ const CLAUDE_SYNTHETIC_MODEL = '<synthetic>';
6
+ /** True when a neutral agent event is output only the model produces. Pure. */
7
+ export function agentEventReachesModel(event) {
8
+ switch (event.kind) {
9
+ case 'tool_activity':
10
+ case 'subagent_activity':
11
+ return true;
12
+ case 'result':
13
+ return !event.isError || (event.outputTokens ?? 0) > 0;
14
+ default:
15
+ return false;
16
+ }
17
+ }
18
+ function isRecord(value) {
19
+ return typeof value === 'object' && value !== null;
20
+ }
21
+ /** True when a raw Codex `--json` line is an item the model produced. Pure. */
22
+ export function codexRawLineReachesModel(raw) {
23
+ if (!isRecord(raw) || typeof raw['type'] !== 'string' || !raw['type'].startsWith('item.'))
24
+ return false;
25
+ const item = raw['item'];
26
+ return isRecord(item) && typeof item['type'] === 'string' && item['type'] !== 'error';
27
+ }
28
+ /** True when a raw Claude stream-json line is an assistant message a real model wrote. Pure. */
29
+ export function claudeRawLineReachesModel(raw) {
30
+ if (!isRecord(raw) || raw['type'] !== 'assistant')
31
+ return false;
32
+ const message = raw['message'];
33
+ return isRecord(message) && typeof message['model'] === 'string' && message['model'] !== CLAUDE_SYNTHETIC_MODEL;
34
+ }
35
+ /** The raw-channel reading for the engine the lead runs on. Pure. */
36
+ export function rawLineReachesModel(engineId, raw) {
37
+ if (engineId === 'codex')
38
+ return codexRawLineReachesModel(raw);
39
+ if (engineId === 'claude')
40
+ return claudeRawLineReachesModel(raw);
41
+ return false;
42
+ }
43
+ //# sourceMappingURL=model-reached.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-reached.js","sourceRoot":"","sources":["../../src/spawn/model-reached.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,6DAA6D;AAC7D,gBAAgB;AA+BhB,oGAAoG;AACpG,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,eAAe,CAAC;QACrB,KAAK,mBAAmB;YACtB,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACxG,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC;AACxF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,sBAAsB,CAAC;AAClH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,GAAY;IAChE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -2,6 +2,7 @@ import type { getActiveFocuses } from '../queries/focuses/focus-discovery.js';
2
2
  import type { fetchFocusWorkflow, getFocusDeliveries } from '../queries/focuses/focuses.js';
3
3
  import type { DaemonConfig, PipelineConfig } from '../types/index.js';
4
4
  import type { ModelProvider } from '../types/model-provider.js';
5
+ import { type SpawnCooldownWindow } from '../supervision/spawn-cooldown-window.js';
5
6
  /** The route inputs of a focus's next spawn, as the ready and active focus rows both carry them. */
6
7
  export interface NextSpawnRoute {
7
8
  focus_id: string;
@@ -26,8 +27,20 @@ export interface NextSpawnRouteDeps {
26
27
  */
27
28
  export declare function resolveNextSpawnProvider(config: DaemonConfig, route: NextSpawnRoute, deps: NextSpawnRouteDeps): Promise<ModelProvider | null>;
28
29
  /**
29
- * True when the focus's next team spawn is held: by its teardown streak, or by
30
- * the rate-limit window of the provider it would run on now.
30
+ * The engine and provider the focus's next team spawn would run on, resolved
31
+ * from the route as it stands now; null when a read failed (the gate then holds
32
+ * on neither, and the spawn checks its own resolution).
33
+ */
34
+ export declare function resolveNextSpawnEngineRoute(config: DaemonConfig, route: NextSpawnRoute, deps: NextSpawnRouteDeps): Promise<{
35
+ engineId: string;
36
+ provider: ModelProvider;
37
+ } | null>;
38
+ /**
39
+ * True when the focus's next team spawn is held: by its teardown streak, by the
40
+ * rate-limit window of the provider it would run on now, or because the engine
41
+ * it would run on is not ready on this host (daemon-state/engine-readiness.ts).
42
+ * A not-ready engine whose wait has elapsed is re-probed first, so an engine that
43
+ * was installed or logged in since is used again with no restart.
31
44
  */
32
45
  export declare function isNextSpawnInCooldown(config: DaemonConfig, route: NextSpawnRoute, deps: NextSpawnRouteDeps): Promise<boolean>;
33
46
  /** True when the focus's teardown streak holds its next spawn, whatever it runs on (the pending-spawn guard's reading). */
@@ -38,6 +51,12 @@ export declare function isNextSpawnInTeardownCooldown(focusId: string): boolean;
38
51
  * against the windows as they stand. Display only; no spawn reads it.
39
52
  */
40
53
  export declare function wasNextSpawnHeldAtLastGate(focusId: string): boolean;
54
+ /**
55
+ * The window holding the focus's next spawn, read as wasNextSpawnHeldAtLastGate
56
+ * reads it (the provider the gate resolved last): when it began and when it
57
+ * ends. For the focus activity record's `cooldown` entry; display only.
58
+ */
59
+ export declare function nextSpawnCooldownWindow(focusId: string, nowMs?: number): SpawnCooldownWindow | null;
41
60
  /** Test-only: forget every gate reading. */
42
61
  export declare function __resetNextSpawnGateForTests(): void;
43
62
  //# sourceMappingURL=next-spawn-cooldown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-spawn-cooldown.d.ts","sourceRoot":"","sources":["../../src/spawn/next-spawn-cooldown.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAShE,oGAAoG;AACpG,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,qHAAqH;AACrH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AA+BD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAkB/B;AAKD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,2HAA2H;AAC3H,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,4CAA4C;AAC5C,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
1
+ {"version":3,"file":"next-spawn-cooldown.d.ts","sourceRoot":"","sources":["../../src/spawn/next-spawn-cooldown.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAE5F,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAQ5G,oGAAoG;AACpG,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACtD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3D,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,qHAAqH;AACrH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AA+BD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAE/B;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAAC,CAkB/D;AA2BD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,2HAA2H;AAC3H,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAInE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,mBAAmB,GAAG,IAAI,CAE/G;AAED,4CAA4C;AAC5C,wBAAgB,4BAA4B,IAAI,IAAI,CAInD"}
@@ -1,10 +1,14 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/daemon-state/provider-window.test.ts,
3
- // packages/daemon/src/spawn/empty-directive-route.test.ts
3
+ // packages/daemon/src/integration/engine-readiness-runtime.test.ts,
4
+ // packages/daemon/src/spawn/empty-directive-route.test.ts,
5
+ // packages/daemon/src/spawn/engine-not-ready-gate.test.ts
4
6
  // PINNED-BY-END
5
7
  /**
6
8
  * Is a focus's NEXT team spawn held? The spawn gates' reading of the spawn
7
- * cooldown (the ready-focus gate, the pending-spawn gate, the team-liveness-phase map).
9
+ * cooldown (the ready-focus gate, the pending-spawn gate, the team-liveness-phase map),
10
+ * and of the engine readiness hold (daemon-state/engine-readiness.ts): a lead is
11
+ * not spawned on an engine that is not ready on this host.
8
12
  *
9
13
  * A teardown streak holds a spawn whatever it runs on. A rate-limit window holds
10
14
  * it only when it would run on that window's provider (daemon-state/provider-window.ts):
@@ -35,8 +39,12 @@ import { getPendingSpawnDirective } from '../directive/directive-queue.js';
35
39
  import { resolveFocusStageName } from '../directive/phase-sync.js';
36
40
  import { configForProduct, findProduct } from '../config/config.js';
37
41
  import { anyProviderWindowOpen } from '../daemon-state/provider-window.js';
42
+ import { anyEngineSpawnHold, engineNotReadyUntilMs } from '../daemon-state/engine-readiness.js';
43
+ import { reprobeDueEngines } from '../backends/availability.js';
44
+ import { stopFires } from '../supervision/stop-registry.js';
38
45
  import { isInSpawnCooldown } from '../supervision/spawn-cooldown.js';
39
- import { selectProviderForPass } from './worktree-session.js';
46
+ import { readSpawnCooldownWindow } from '../supervision/spawn-cooldown-window.js';
47
+ import { selectRouteForPass } from './worktree-session.js';
40
48
  import { pendingDirectiveRoute, stageAtSpawn, stageDirectiveRoute } from './directive-route.js';
41
49
  import { createLogger } from '../log/daemon-log.js';
42
50
  const log = createLogger({ module: 'spawn-cooldown' });
@@ -71,11 +79,19 @@ async function nextSpawnDirectiveRoute(config, route, deps) {
71
79
  * window, and the spawn checks its own resolution).
72
80
  */
73
81
  export async function resolveNextSpawnProvider(config, route, deps) {
82
+ return (await resolveNextSpawnEngineRoute(config, route, deps))?.provider ?? null;
83
+ }
84
+ /**
85
+ * The engine and provider the focus's next team spawn would run on, resolved
86
+ * from the route as it stands now; null when a read failed (the gate then holds
87
+ * on neither, and the spawn checks its own resolution).
88
+ */
89
+ export async function resolveNextSpawnEngineRoute(config, route, deps) {
74
90
  try {
75
91
  const product = route.product_id ? findProduct(config, route.product_id) : undefined;
76
92
  const productConfig = product ? configForProduct(config, product) : config;
77
93
  const metadata = await nextSpawnDirectiveRoute(productConfig, route, deps);
78
- return selectProviderForPass({
94
+ return selectRouteForPass({
79
95
  engineOverride: route.engine_override,
80
96
  localModelOverride: route.local_model_override,
81
97
  config: productConfig,
@@ -92,13 +108,42 @@ export async function resolveNextSpawnProvider(config, route, deps) {
92
108
  }
93
109
  /** Each focus's provider at the gate's latest reading -- for the team-liveness-phase map only, which makes no spawn. */
94
110
  const latestGateProvider = new Map();
111
+ /** Each focus's engine at the gate's latest reading, when an engine hold made the gate resolve it. Display only. */
112
+ const latestGateEngine = new Map();
113
+ /** The engine hold each focus was last told about, so the hold is logged once per episode, not once per poll. */
114
+ const loggedEngineHold = new Map();
115
+ /** Is the engine this spawn would run on held as not ready on this host? Logs once per hold episode. */
116
+ function engineHoldsSpawn(focusId, engineId) {
117
+ const holdUntil = engineId ? engineNotReadyUntilMs(engineId) : null;
118
+ const held = stopFires('engine_not_ready', { spawnEngineId: engineId, engineHoldUntilMs: holdUntil });
119
+ if (!held || holdUntil === null) {
120
+ loggedEngineHold.delete(focusId);
121
+ return false;
122
+ }
123
+ if (loggedEngineHold.get(focusId) !== holdUntil) {
124
+ loggedEngineHold.set(focusId, holdUntil);
125
+ log.info(`[spawn-gate] focus ${focusId.slice(0, 8)}: its next lead runs on ${engineId}, which is not ready on this host; ` +
126
+ `held until it re-probes ready (no later than ${new Date(holdUntil).toISOString()}) -- see telora-daemon status`);
127
+ }
128
+ return true;
129
+ }
95
130
  /**
96
- * True when the focus's next team spawn is held: by its teardown streak, or by
97
- * the rate-limit window of the provider it would run on now.
131
+ * True when the focus's next team spawn is held: by its teardown streak, by the
132
+ * rate-limit window of the provider it would run on now, or because the engine
133
+ * it would run on is not ready on this host (daemon-state/engine-readiness.ts).
134
+ * A not-ready engine whose wait has elapsed is re-probed first, so an engine that
135
+ * was installed or logged in since is used again with no restart.
98
136
  */
99
137
  export async function isNextSpawnInCooldown(config, route, deps) {
100
- const provider = anyProviderWindowOpen() ? await resolveNextSpawnProvider(config, route, deps) : null;
138
+ await reprobeDueEngines(config);
139
+ const resolved = anyProviderWindowOpen() || anyEngineSpawnHold()
140
+ ? await resolveNextSpawnEngineRoute(config, route, deps)
141
+ : null;
142
+ const provider = resolved?.provider ?? null;
101
143
  latestGateProvider.set(route.focus_id, provider);
144
+ latestGateEngine.set(route.focus_id, resolved?.engineId ?? null);
145
+ if (engineHoldsSpawn(route.focus_id, resolved?.engineId ?? null))
146
+ return true;
102
147
  return isInSpawnCooldown(route.focus_id, provider);
103
148
  }
104
149
  /** True when the focus's teardown streak holds its next spawn, whatever it runs on (the pending-spawn guard's reading). */
@@ -111,10 +156,23 @@ export function isNextSpawnInTeardownCooldown(focusId) {
111
156
  * against the windows as they stand. Display only; no spawn reads it.
112
157
  */
113
158
  export function wasNextSpawnHeldAtLastGate(focusId) {
159
+ const engineId = latestGateEngine.get(focusId) ?? null;
160
+ if (engineId !== null && engineNotReadyUntilMs(engineId) !== null)
161
+ return true;
114
162
  return isInSpawnCooldown(focusId, latestGateProvider.get(focusId) ?? null);
115
163
  }
164
+ /**
165
+ * The window holding the focus's next spawn, read as wasNextSpawnHeldAtLastGate
166
+ * reads it (the provider the gate resolved last): when it began and when it
167
+ * ends. For the focus activity record's `cooldown` entry; display only.
168
+ */
169
+ export function nextSpawnCooldownWindow(focusId, nowMs = Date.now()) {
170
+ return readSpawnCooldownWindow(focusId, latestGateProvider.get(focusId) ?? null, nowMs);
171
+ }
116
172
  /** Test-only: forget every gate reading. */
117
173
  export function __resetNextSpawnGateForTests() {
118
174
  latestGateProvider.clear();
175
+ latestGateEngine.clear();
176
+ loggedEngineHold.clear();
119
177
  }
120
178
  //# sourceMappingURL=next-spawn-cooldown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-spawn-cooldown.js","sourceRoot":"","sources":["../../src/spawn/next-spawn-cooldown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next-spawn-cooldown.js","sourceRoot":"","sources":["../../src/spawn/next-spawn-cooldown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"process-spawn.d.ts","sourceRoot":"","sources":["../../src/spawn/process-spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-spawn.d.ts","sourceRoot":"","sources":["../../src/spawn/process-spawn.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE1G,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAoC,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAGtF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,EACL,mBAAmB,EAGnB,KAAK,0BAA0B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAK/E;;;;;;GAMG;AACH,wBAAgB,2BAA2B,IAAI,kBAAkB,CAMhE;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,GACd,kBAAkB,CAMpB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;IACnD,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;IAC1C,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC9D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,oBAAoB,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC;;;;OAIG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;OAGG;IACH,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,4GAA4G;IAC5G,YAAY,EAAE,gBAAgB,CAAC;IAC/B,yGAAyG;IACzG,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,iFAAiF;IACjF,eAAe,EAAE,eAAe,CAAC;IACjC,0EAA0E;IAC1E,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IACpD,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;IAChE,gFAAgF;IAChF,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;;;;OAOG;IACH,OAAO,EAAE,cAAc,CAAC;IACxB,yDAAyD;IACzD,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,oFAAoF;IACpF,WAAW,EAAE,gBAAgB,CAAC;IAC9B,gFAAgF;IAChF,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,4FAA4F;IAC5F,YAAY,EAAE,0BAA0B,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,OAAO,EACzB,IAAI,SAAa,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,YAAoC,GAC7C,kBAAkB,CAMpB;AAGD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAC/B,OAAO,EAAE,OAAO,KAAK,GACpB,8BAA8B,CAuBhC;AAED,2FAA2F;AAC3F,wBAAsB,+BAA+B,CACnD,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EAC1C,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;;;;;;;GAYG;AACH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAIrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE;IAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,EAChE,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,MAAM,GAAG,IAAI,CAIf;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE;QAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAC;IACjE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,oFAAoF;IACpF,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,GAAG,IAAI,CAkBP;AAyED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IACA,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,qBAAqB,GAAG,iBAAiB,GAAG,qBAAqB,GAAG,cAAc,CAAC;CAC5F,CAAC;AAEJ,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmRlG"}
@@ -1,7 +1,8 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/focus/focus-executor-characterization.test.ts,
3
3
  // packages/daemon/src/focus/spawn-crash-isolation.test.ts,
4
- // packages/daemon/src/spawn/spawn-and-acknowledge.test.ts,
4
+ // packages/daemon/src/integration/engine-readiness-runtime.test.ts,
5
+ // packages/daemon/src/spawn/codex-auth.test.ts, packages/daemon/src/spawn/spawn-and-acknowledge.test.ts,
5
6
  // packages/daemon/src/spawn/spawn-compact-turn.test.ts,
6
7
  // packages/daemon/src/spawn/spawn-team-process-ownership.test.ts
7
8
  // PINNED-BY-END
@@ -11,6 +12,7 @@ import { isExitCategory } from '../types/exit-category.js';
11
12
  import { buildLeveredSpawnEnvironment } from './spawn-environment.js';
12
13
  import { wrapSpawnCommand, SandboxUnavailableError } from './spawn-sandbox.js';
13
14
  import { detachLeadStdin, detachMcpProxy, ensureTeamProcessGroupGone } from '../daemon-state/lead-process-ownership.js';
15
+ import { markEngineNotReady } from '../daemon-state/engine-readiness.js';
14
16
  import { launchLeadProcess } from './lead-launch.js';
15
17
  import { acknowledgePendingSpawnDirective } from '../directive/directive-queue.js';
16
18
  import { TELORA_LOCAL_API_KEY_ENV } from '../backends/codex/codex-provision.js';
@@ -392,13 +394,14 @@ export async function spawnTeamProcess(spec) {
392
394
  processErrorHandled = true;
393
395
  log.error(`Team lead for "${focusName}" error:`, err.message);
394
396
  releaseFocusSlot(focusId, governor);
395
- const missingCliReason = err.code === 'ENOENT'
396
- ? `${backend.displayName} not found on ${hostname()} / not on PATH: ${err.message}`
397
- : `Process error: ${err.message}`;
397
+ const enoent = err.code === 'ENOENT';
398
+ const missingCliReason = enoent ? `${backend.displayName} not found on ${hostname()} / not on PATH: ${err.message}` : `Process error: ${err.message}`;
399
+ if (enoent)
400
+ markEngineNotReady(backend.id, { missing: 'binary', detail: missingCliReason, source: 'spawn_enoent' }); // host state (daemon-state/engine-readiness.ts)
398
401
  void persistSpawnFailureAfterRunning(runningTransition, () => withRetry(() => updateSession(session.id, {
399
402
  status: 'failed',
400
403
  exit_reason: missingCliReason,
401
- exit_category: err.code === 'ENOENT' ? 'backend_unavailable' : 'error',
404
+ exit_category: enoent ? 'backend_unavailable' : 'error',
402
405
  ended_at: new Date().toISOString(),
403
406
  }), { maxAttempts: 3, baseDelayMs: 1000, label: 'session-update-error' })).catch(updateErr => {
404
407
  log.warn(`Failed to update session after retries:`, updateErr.message);