@telora/daemon 0.22.227 → 0.22.239
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +4 -3
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/codex-activity.d.ts +40 -0
- package/dist/completion/codex-activity.d.ts.map +1 -0
- package/dist/completion/codex-activity.js +69 -0
- package/dist/completion/codex-activity.js.map +1 -0
- package/dist/completion/completion-phase-registry.d.ts +2 -1
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +15 -3
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/detector.d.ts.map +1 -1
- package/dist/completion/detector.js +1 -0
- package/dist/completion/detector.js.map +1 -1
- package/dist/completion/event-entry-phases.d.ts.map +1 -1
- package/dist/completion/event-entry-phases.js +13 -11
- package/dist/completion/event-entry-phases.js.map +1 -1
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +16 -15
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +3 -1
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/review-exit-phase.js +1 -1
- package/dist/completion/status-advance-phase.d.ts +3 -0
- package/dist/completion/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/status-advance-phase.js +2 -1
- package/dist/completion/status-advance-phase.js.map +1 -1
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +3 -2
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/completion/team-progress-measure.d.ts +22 -1
- package/dist/completion/team-progress-measure.d.ts.map +1 -1
- package/dist/completion/team-progress-measure.js +54 -6
- package/dist/completion/team-progress-measure.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +17 -4
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +203 -173
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/directive/agentless-directive.d.ts +28 -0
- package/dist/directive/agentless-directive.d.ts.map +1 -0
- package/dist/directive/agentless-directive.js +12 -0
- package/dist/directive/agentless-directive.js.map +1 -0
- package/dist/directive/directive-dispatch.d.ts +1 -20
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +4 -22
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +1 -20
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/drift/artifact-ref-shape.d.ts +23 -0
- package/dist/drift/artifact-ref-shape.d.ts.map +1 -1
- package/dist/drift/artifact-ref-shape.js +49 -0
- package/dist/drift/artifact-ref-shape.js.map +1 -1
- package/dist/focus/advance-hold.d.ts +55 -0
- package/dist/focus/advance-hold.d.ts.map +1 -0
- package/dist/focus/advance-hold.js +155 -0
- package/dist/focus/advance-hold.js.map +1 -0
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +3 -2
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts +17 -6
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
- package/dist/focus/focus-spawn-decision.js +6 -6
- package/dist/focus/focus-spawn-decision.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/focus-worktree-state.d.ts.map +1 -1
- package/dist/focus/focus-worktree-state.js +1 -0
- package/dist/focus/focus-worktree-state.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts +14 -0
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +13 -10
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +23 -34
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +1 -0
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +10 -4
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.d.ts +3 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +1 -0
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/ready-focus-spawn-action.d.ts +29 -0
- package/dist/focus/ready-focus-spawn-action.d.ts.map +1 -0
- package/dist/focus/ready-focus-spawn-action.js +32 -0
- package/dist/focus/ready-focus-spawn-action.js.map +1 -0
- package/dist/focus/ready-focus-team-work.d.ts +18 -0
- package/dist/focus/ready-focus-team-work.d.ts.map +1 -0
- package/dist/focus/ready-focus-team-work.js +59 -0
- package/dist/focus/ready-focus-team-work.js.map +1 -0
- package/dist/focus/team-actionable-work.d.ts +56 -6
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +56 -9
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +1 -0
- package/dist/git/types.js.map +1 -1
- package/dist/nexus/return.d.ts +44 -1
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +42 -0
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt/focus-prompt-builder.d.ts +10 -8
- package/dist/prompt/focus-prompt-builder.d.ts.map +1 -1
- package/dist/prompt/focus-prompt-builder.js +19 -10
- package/dist/prompt/focus-prompt-builder.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +10 -0
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts +15 -0
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +32 -2
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/queries/deliveries.js +1 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-holds.d.ts +78 -0
- package/dist/queries/delivery-gate-holds.d.ts.map +1 -0
- package/dist/queries/delivery-gate-holds.js +5 -0
- package/dist/queries/delivery-gate-holds.js.map +1 -0
- package/dist/queries/delivery-gate-state.d.ts +13 -58
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/focus-discovery.js +1 -1
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +2 -0
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +1 -0
- package/dist/queries/issues.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/shortfall-rulings.d.ts +13 -0
- package/dist/queries/shortfall-rulings.d.ts.map +1 -1
- package/dist/queries/shortfall-rulings.js +14 -0
- package/dist/queries/shortfall-rulings.js.map +1 -1
- package/dist/queries/workflows.d.ts.map +1 -1
- package/dist/queries/workflows.js +1 -0
- package/dist/queries/workflows.js.map +1 -1
- package/dist/spawn/codex-limit.d.ts +42 -0
- package/dist/spawn/codex-limit.d.ts.map +1 -0
- package/dist/spawn/codex-limit.js +146 -0
- package/dist/spawn/codex-limit.js.map +1 -0
- package/dist/spawn/directive-route.d.ts +41 -0
- package/dist/spawn/directive-route.d.ts.map +1 -0
- package/dist/spawn/directive-route.js +54 -0
- package/dist/spawn/directive-route.js.map +1 -0
- package/dist/spawn/guards.d.ts.map +1 -1
- package/dist/spawn/guards.js +4 -2
- package/dist/spawn/guards.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +30 -1
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/idle-work-stamp.d.ts +13 -7
- package/dist/spawn/idle-work-stamp.d.ts.map +1 -1
- package/dist/spawn/idle-work-stamp.js +22 -11
- package/dist/spawn/idle-work-stamp.js.map +1 -1
- package/dist/spawn/index.d.ts +1 -0
- package/dist/spawn/index.d.ts.map +1 -1
- package/dist/spawn/index.js +1 -0
- package/dist/spawn/index.js.map +1 -1
- package/dist/spawn/lead-continuation.d.ts.map +1 -1
- package/dist/spawn/lead-continuation.js +13 -11
- package/dist/spawn/lead-continuation.js.map +1 -1
- package/dist/spawn/next-spawn-cooldown.d.ts +43 -0
- package/dist/spawn/next-spawn-cooldown.d.ts.map +1 -0
- package/dist/spawn/next-spawn-cooldown.js +123 -0
- package/dist/spawn/next-spawn-cooldown.js.map +1 -0
- package/dist/spawn/one-shot-model.d.ts +4 -3
- package/dist/spawn/one-shot-model.d.ts.map +1 -1
- package/dist/spawn/one-shot-model.js +8 -6
- package/dist/spawn/one-shot-model.js.map +1 -1
- package/dist/spawn/provider-window.d.ts +39 -0
- package/dist/spawn/provider-window.d.ts.map +1 -0
- package/dist/spawn/provider-window.js +99 -0
- package/dist/spawn/provider-window.js.map +1 -0
- package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
- package/dist/spawn/routing-decider-spawn.js +4 -3
- package/dist/spawn/routing-decider-spawn.js.map +1 -1
- package/dist/spawn/routing-decider.js +2 -2
- package/dist/spawn/routing-decider.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts +43 -12
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +51 -58
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts +11 -2
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +28 -60
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +16 -0
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +45 -12
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/codex-stream-session.d.ts +10 -0
- package/dist/testing/fixtures/codex-stream-session.d.ts.map +1 -0
- package/dist/testing/fixtures/codex-stream-session.js +47 -0
- package/dist/testing/fixtures/codex-stream-session.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/focus.d.ts +20 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/ai-inspection-runner.js +5 -5
- package/dist/verify/ai-inspection-runner.js.map +1 -1
- package/dist/verify/parked-shortfall-reuse.d.ts.map +1 -1
- package/dist/verify/parked-shortfall-reuse.js +3 -0
- package/dist/verify/parked-shortfall-reuse.js.map +1 -1
- package/dist/verify/ruling-evidence-resolution.d.ts +36 -0
- package/dist/verify/ruling-evidence-resolution.d.ts.map +1 -0
- package/dist/verify/ruling-evidence-resolution.js +133 -0
- package/dist/verify/ruling-evidence-resolution.js.map +1 -0
- package/dist/verify/shortfall-rulings.d.ts +30 -2
- package/dist/verify/shortfall-rulings.d.ts.map +1 -1
- package/dist/verify/shortfall-rulings.js +35 -3
- package/dist/verify/shortfall-rulings.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +3 -0
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +9 -0
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +4 -4
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +1 -19
- package/dist/verify/verify-restatement.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,146 @@
|
|
|
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-limit.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Codex usage-limit and rate-limit recognition at the daemon boundary.
|
|
6
|
+
*
|
|
7
|
+
* The Codex counterpart of spawn/rate-limit.ts. Claude hands the daemon a typed
|
|
8
|
+
* rate_limit_event carrying the reset instant; Codex does not. The shape below
|
|
9
|
+
* was CAPTURED, not assumed: the real `codex exec --json` binary (0.154.0) was
|
|
10
|
+
* driven into a usage limit and a rate limit against a stubbed endpoint, and its
|
|
11
|
+
* verbatim output is checked in under testing/fixtures/codex-streams/ (the
|
|
12
|
+
* README there says exactly how). What it showed:
|
|
13
|
+
*
|
|
14
|
+
* - The limit reaches the JSONL stream ONLY as prose, on an `error` line
|
|
15
|
+
* (`{"type":"error","message":...}`) followed by `turn.failed`
|
|
16
|
+
* (`{"type":"turn.failed","error":{"message":...}}`) with the same text. No
|
|
17
|
+
* typed field, no resets_at, no rate-limit snapshot event reaches `--json`.
|
|
18
|
+
* - A usage limit reads "You've hit your usage limit. ... try again at 6:35 PM."
|
|
19
|
+
* (a reset later today) or "... try again at Sep 27th, 2026 3:35 PM." (a
|
|
20
|
+
* later day), in the codex PROCESS's local time zone, at minute precision --
|
|
21
|
+
* or "You've hit your usage limit. Try again later." with no reset at all.
|
|
22
|
+
* - A rate limit whose retries ran out reads
|
|
23
|
+
* "exceeded retry limit, last status: 429 Too Many Requests" (no reset).
|
|
24
|
+
* - The exit code is 1 for every failure, limit or not.
|
|
25
|
+
*
|
|
26
|
+
* So the reader recognizes those sentences and reads the reset instant back out
|
|
27
|
+
* of the wall-clock text in the daemon's own time zone, which is the one the
|
|
28
|
+
* codex child inherits. The instant is rounded UP to the next minute (codex
|
|
29
|
+
* drops the seconds), so a spawn is never attempted before the real reset. When
|
|
30
|
+
* no reset is given the window opens for CODEX_LIMIT_FALLBACK_MS -- never
|
|
31
|
+
* indefinitely, never zero. Anything else is not a limit and returns null, so a
|
|
32
|
+
* non-limit Codex error is handled exactly as before.
|
|
33
|
+
*
|
|
34
|
+
* WHY THE RAW CHANNEL, NOT daemon-core. The Codex parser lives in daemon-core,
|
|
35
|
+
* which is registry-installed: a change there needs a daemon-core publish and a
|
|
36
|
+
* pin bump before the daemon can use it. The parser already forwards every
|
|
37
|
+
* parsed line verbatim on its `raw` channel, which is exactly how the Claude
|
|
38
|
+
* rate-limit reader (spawn/rate-limit.ts) and the background-worker reader
|
|
39
|
+
* (completion/team-progress-measure.ts noteTeamRawEvent) consume what the
|
|
40
|
+
* neutral stream does not carry. The Codex work-activity reader
|
|
41
|
+
* (completion/codex-activity.ts) makes the same choice, so both Codex readers
|
|
42
|
+
* live in the daemon beside their Claude counterparts. Recorded 2026-09-24.
|
|
43
|
+
*/
|
|
44
|
+
import { CODEX_PROVIDER, openProviderWindow } from './provider-window.js';
|
|
45
|
+
import { createLogger } from '../shell/log.js';
|
|
46
|
+
const log = createLogger({ module: 'codex-limit' });
|
|
47
|
+
/**
|
|
48
|
+
* How long the Codex window stays open when Codex names no reset instant ("Try
|
|
49
|
+
* again later." / a 429 whose retries ran out). Thirty minutes: long enough that
|
|
50
|
+
* a spawn is not re-thrown into the same limit every poll, short enough that a
|
|
51
|
+
* limit that cleared sooner costs at most one wasted half hour -- and the first
|
|
52
|
+
* spawn after it re-learns the limit from Codex if it still stands.
|
|
53
|
+
*/
|
|
54
|
+
export const CODEX_LIMIT_FALLBACK_MS = 30 * 60_000;
|
|
55
|
+
const USAGE_LIMIT_RE = /you've hit your usage limit/i;
|
|
56
|
+
const RATE_LIMIT_RE = /\blast status: 429\b|\b429 Too Many Requests\b/i;
|
|
57
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
58
|
+
const DATED_RESET_RE = /try again at ([A-Z][a-z]{2}) (\d{1,2})(?:st|nd|rd|th)?, (\d{4}) (\d{1,2}):(\d{2}) ?([AP]M)/i;
|
|
59
|
+
const TIME_RESET_RE = /try again at (\d{1,2}):(\d{2}) ?([AP]M)/i;
|
|
60
|
+
const MINUTE_MS = 60_000;
|
|
61
|
+
const DAY_MS = 24 * 3_600_000;
|
|
62
|
+
function isRecord(value) {
|
|
63
|
+
return typeof value === 'object' && value !== null;
|
|
64
|
+
}
|
|
65
|
+
/** The message of a Codex `error` or `turn.failed` line, or null for any other line. */
|
|
66
|
+
function codexFailureMessage(raw) {
|
|
67
|
+
if (!isRecord(raw))
|
|
68
|
+
return null;
|
|
69
|
+
if (raw['type'] === 'error')
|
|
70
|
+
return typeof raw['message'] === 'string' ? raw['message'] : null;
|
|
71
|
+
if (raw['type'] === 'turn.failed') {
|
|
72
|
+
const err = raw['error'];
|
|
73
|
+
return isRecord(err) && typeof err['message'] === 'string' ? err['message'] : null;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
function hour24(hour12, meridiem) {
|
|
78
|
+
const h = hour12 % 12;
|
|
79
|
+
return meridiem.toUpperCase() === 'PM' ? h + 12 : h;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Read the reset instant out of a Codex usage-limit message, in the local time
|
|
83
|
+
* zone, rounded up to the next minute. A bare time is today's; one already more
|
|
84
|
+
* than a minute past (the message crossed midnight) is tomorrow's. Pure given
|
|
85
|
+
* `nowMs`; null when the message names no instant.
|
|
86
|
+
*/
|
|
87
|
+
export function parseCodexResetAt(message, nowMs) {
|
|
88
|
+
const dated = DATED_RESET_RE.exec(message);
|
|
89
|
+
if (dated) {
|
|
90
|
+
const month = MONTHS.findIndex((m) => m.toLowerCase() === dated[1].toLowerCase());
|
|
91
|
+
if (month < 0)
|
|
92
|
+
return null;
|
|
93
|
+
const at = new Date(Number(dated[3]), month, Number(dated[2]), hour24(Number(dated[4]), dated[6]), Number(dated[5]));
|
|
94
|
+
return Number.isNaN(at.getTime()) ? null : at.getTime() + MINUTE_MS;
|
|
95
|
+
}
|
|
96
|
+
const timed = TIME_RESET_RE.exec(message);
|
|
97
|
+
if (!timed)
|
|
98
|
+
return null;
|
|
99
|
+
const now = new Date(nowMs);
|
|
100
|
+
const at = new Date(now.getFullYear(), now.getMonth(), now.getDate(), hour24(Number(timed[1]), timed[3]), Number(timed[2]));
|
|
101
|
+
let resetMs = at.getTime() + MINUTE_MS;
|
|
102
|
+
if (resetMs < nowMs)
|
|
103
|
+
resetMs += DAY_MS;
|
|
104
|
+
return resetMs;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parse a raw Codex JSONL line into a CodexLimit, or null when the line is not
|
|
108
|
+
* a usage or rate limit. Pure given `nowMs`.
|
|
109
|
+
*/
|
|
110
|
+
export function parseCodexLimit(raw, nowMs) {
|
|
111
|
+
const message = codexFailureMessage(raw);
|
|
112
|
+
if (message === null)
|
|
113
|
+
return null;
|
|
114
|
+
if (USAGE_LIMIT_RE.test(message)) {
|
|
115
|
+
const resetsAtMs = parseCodexResetAt(message, nowMs);
|
|
116
|
+
return { kind: 'usage_limit', resetsAtMs, holdUntilMs: resetsAtMs ?? nowMs + CODEX_LIMIT_FALLBACK_MS, message };
|
|
117
|
+
}
|
|
118
|
+
if (RATE_LIMIT_RE.test(message)) {
|
|
119
|
+
return { kind: 'rate_limit', resetsAtMs: null, holdUntilMs: nowMs + CODEX_LIMIT_FALLBACK_MS, message };
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Consume a raw line from a Codex team's stream. On a usage or rate limit: open
|
|
125
|
+
* the team's provider window until the reset (every Codex spawn is held until
|
|
126
|
+
* then, whichever focus it is for), carry the instant on the team for its
|
|
127
|
+
* close-path cooldown, and mark the team `modelUnavailable` so its exit is not
|
|
128
|
+
* read as a review or coding outcome. The `error` and `turn.failed` lines repeat
|
|
129
|
+
* one message; the second changes nothing. Returns the limit, or null.
|
|
130
|
+
*/
|
|
131
|
+
export function noteCodexTeamLimit(teamState, raw, focusName, nowMs = Date.now()) {
|
|
132
|
+
const limit = parseCodexLimit(raw, nowMs);
|
|
133
|
+
if (!limit)
|
|
134
|
+
return null;
|
|
135
|
+
const provider = teamState.provider ?? CODEX_PROVIDER;
|
|
136
|
+
openProviderWindow(provider, limit.holdUntilMs, nowMs);
|
|
137
|
+
teamState.rateLimitResetAtMs = limit.holdUntilMs;
|
|
138
|
+
if (!teamState.modelUnavailable) {
|
|
139
|
+
log.warn(` [focus-team] Codex ${limit.kind === 'usage_limit' ? 'usage limit' : 'rate limit'} for "${focusName}" -- ` +
|
|
140
|
+
`${limit.resetsAtMs !== null ? 'resets' : 'no reset stated; holding (fallback) until'} ` +
|
|
141
|
+
`${new Date(limit.holdUntilMs).toISOString()}: "${limit.message}"`);
|
|
142
|
+
}
|
|
143
|
+
teamState.modelUnavailable = { kind: limit.kind, provider, holdUntilMs: limit.holdUntilMs };
|
|
144
|
+
return limit;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=codex-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-limit.js","sourceRoot":"","sources":["../../src/spawn/codex-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ROUTE a spawn's directive declares: the directive metadata Phase B selects
|
|
3
|
+
* the spawn's engine, model and provider from (EngineSelectionMetadata).
|
|
4
|
+
*
|
|
5
|
+
* One definition, read by the two places that must agree on it: the spawn
|
|
6
|
+
* itself (spawn/spawn-decision.ts resolveDirectiveOrFallback) and the spawn
|
|
7
|
+
* gates, which resolve the provider of the spawn they are about to let through
|
|
8
|
+
* before any worktree exists (spawn/next-spawn-cooldown.ts). Each would
|
|
9
|
+
* otherwise derive the route its own way, and a route the two read differently
|
|
10
|
+
* is a spawn one provider's window holds while it runs on the other.
|
|
11
|
+
*
|
|
12
|
+
* The route is what the directive DECLARES, never what its body assembled to.
|
|
13
|
+
* A stage directive whose body assembles empty (the spawn then sends the legacy
|
|
14
|
+
* prompt) still declares its engine, model and local model, exactly as a
|
|
15
|
+
* resume-delta spawn that skips assembly does; the body decides what the team is
|
|
16
|
+
* TOLD, not where it runs. That is also what lets the gate, which cannot
|
|
17
|
+
* assemble, read the same route the spawn will run.
|
|
18
|
+
*
|
|
19
|
+
* Pure.
|
|
20
|
+
*/
|
|
21
|
+
import type { PendingSpawnDirective } from '../directive/directive-queue.js';
|
|
22
|
+
import type { WorkflowStageWithDirective, WorkflowWithDirectives } from '../queries/focuses.js';
|
|
23
|
+
import type { EngineSelectionMetadata } from './shared.js';
|
|
24
|
+
/** No directive: nothing pinned, the builtin floor for the model precedence. */
|
|
25
|
+
export declare const NO_DIRECTIVE_ROUTE: EngineSelectionMetadata;
|
|
26
|
+
/** The route a queued spawn directive declares (the respawn path: no workflow read, builtin floor). */
|
|
27
|
+
export declare function pendingDirectiveRoute(pending: PendingSpawnDirective): EngineSelectionMetadata;
|
|
28
|
+
/**
|
|
29
|
+
* The stage a spawn runs at: the one its synced stage id names, or the
|
|
30
|
+
* workflow's initial stage when there is no synced id. A synced id the workflow
|
|
31
|
+
* does not hold names no stage.
|
|
32
|
+
*/
|
|
33
|
+
export declare function stageAtSpawn(workflow: WorkflowWithDirectives, syncedStageId: string | null): WorkflowStageWithDirective | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* The route a workflow stage declares. No stage: nothing pinned (the workflow's
|
|
36
|
+
* builtin-ness still ranks the model precedence). A stage with no directive, or
|
|
37
|
+
* an explicit agentless hold: only its name. Otherwise its declared lineage,
|
|
38
|
+
* engine, model and local model -- whatever its body assembles to.
|
|
39
|
+
*/
|
|
40
|
+
export declare function stageDirectiveRoute(workflow: WorkflowWithDirectives, stage: WorkflowStageWithDirective | undefined): EngineSelectionMetadata;
|
|
41
|
+
//# sourceMappingURL=directive-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-route.d.ts","sourceRoot":"","sources":["../../src/spawn/directive-route.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,uBAGhC,CAAC;AAEF,uGAAuG;AACvG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,uBAAuB,CAU7F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,sBAAsB,EAChC,aAAa,EAAE,MAAM,GAAG,IAAI,GAC3B,0BAA0B,GAAG,SAAS,CAIxC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,0BAA0B,GAAG,SAAS,GAC5C,uBAAuB,CAazB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: none -- no test imports this module directly (baselined; see lint:pinned-by)
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
import { isAgentlessDirective } from '../directive/agentless-directive.js';
|
|
5
|
+
/** No directive: nothing pinned, the builtin floor for the model precedence. */
|
|
6
|
+
export const NO_DIRECTIVE_ROUTE = {
|
|
7
|
+
spawnDirectiveDeclared: null, spawnStageName: null, directiveEngine: null, directiveModel: null,
|
|
8
|
+
directiveLocalModel: null, pendingFocusOverrideModel: null, workflowIsBuiltin: true,
|
|
9
|
+
};
|
|
10
|
+
/** The route a queued spawn directive declares (the respawn path: no workflow read, builtin floor). */
|
|
11
|
+
export function pendingDirectiveRoute(pending) {
|
|
12
|
+
return {
|
|
13
|
+
...NO_DIRECTIVE_ROUTE,
|
|
14
|
+
spawnDirectiveDeclared: { lineage: pending.lineage, continuity: pending.continuity },
|
|
15
|
+
spawnStageName: pending.sessionType === 'review' ? 'reviewing' : null,
|
|
16
|
+
directiveEngine: pending.engine ?? null,
|
|
17
|
+
directiveModel: pending.model,
|
|
18
|
+
directiveLocalModel: pending.localModel ?? null,
|
|
19
|
+
pendingFocusOverrideModel: pending.focusOverrideModel,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The stage a spawn runs at: the one its synced stage id names, or the
|
|
24
|
+
* workflow's initial stage when there is no synced id. A synced id the workflow
|
|
25
|
+
* does not hold names no stage.
|
|
26
|
+
*/
|
|
27
|
+
export function stageAtSpawn(workflow, syncedStageId) {
|
|
28
|
+
return syncedStageId
|
|
29
|
+
? workflow.stages.find((s) => s.id === syncedStageId)
|
|
30
|
+
: workflow.stages.find((s) => s.is_initial);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The route a workflow stage declares. No stage: nothing pinned (the workflow's
|
|
34
|
+
* builtin-ness still ranks the model precedence). A stage with no directive, or
|
|
35
|
+
* an explicit agentless hold: only its name. Otherwise its declared lineage,
|
|
36
|
+
* engine, model and local model -- whatever its body assembles to.
|
|
37
|
+
*/
|
|
38
|
+
export function stageDirectiveRoute(workflow, stage) {
|
|
39
|
+
const base = { ...NO_DIRECTIVE_ROUTE, workflowIsBuiltin: workflow.isBuiltin };
|
|
40
|
+
if (!stage)
|
|
41
|
+
return base;
|
|
42
|
+
const directive = stage.agentDirective;
|
|
43
|
+
if (!directive || isAgentlessDirective(directive))
|
|
44
|
+
return { ...base, spawnStageName: stage.name ?? null };
|
|
45
|
+
return {
|
|
46
|
+
...base,
|
|
47
|
+
spawnDirectiveDeclared: directive,
|
|
48
|
+
spawnStageName: stage.name ?? null,
|
|
49
|
+
directiveEngine: directive.engine ?? null,
|
|
50
|
+
directiveModel: directive.model,
|
|
51
|
+
directiveLocalModel: directive.localModel ?? null,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=directive-route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive-route.js","sourceRoot":"","sources":["../../src/spawn/directive-route.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0FAA0F;AAC1F,gBAAgB;AAwBhB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAA4B;IACzD,sBAAsB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;IAC/F,mBAAmB,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI;CACpF,CAAC;AAEF,uGAAuG;AACvG,MAAM,UAAU,qBAAqB,CAAC,OAA8B;IAClE,OAAO;QACL,GAAG,kBAAkB;QACrB,sBAAsB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;QACpF,cAAc,EAAE,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;QACrE,eAAe,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QACvC,cAAc,EAAE,OAAO,CAAC,KAAK;QAC7B,mBAAmB,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QAC/C,yBAAyB,EAAE,OAAO,CAAC,kBAAkB;KACtD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgC,EAChC,aAA4B;IAE5B,OAAO,aAAa;QAClB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC;QACrD,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgC,EAChC,KAA6C;IAE7C,MAAM,IAAI,GAAG,EAAE,GAAG,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,oBAAoB,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAC1G,OAAO;QACL,GAAG,IAAI;QACP,sBAAsB,EAAE,SAAS;QACjC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QAClC,eAAe,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;QACzC,cAAc,EAAE,SAAS,CAAC,KAAK;QAC/B,mBAAmB,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/spawn/guards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/spawn/guards.ts"],"names":[],"mappings":"AAkCA,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAQD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,qBAAmC,GACxC,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,qBAAmC,GACxC,IAAI,CAEN"}
|
package/dist/spawn/guards.js
CHANGED
|
@@ -27,9 +27,11 @@
|
|
|
27
27
|
* resolve cleanly under tsx --experimental-test-module-mocks (same reasoning
|
|
28
28
|
* as focus-respawn-guard.ts).
|
|
29
29
|
*/
|
|
30
|
-
import {
|
|
30
|
+
import { recordFocusTeardown } from './spawn-cooldown.js';
|
|
31
|
+
import { isNextSpawnInTeardownCooldown } from './next-spawn-cooldown.js';
|
|
31
32
|
const defaultDeps = {
|
|
32
|
-
|
|
33
|
+
// The teardown streak, whatever the spawn runs on (the listener reads the provider window with it).
|
|
34
|
+
isInSpawnCooldown: isNextSpawnInTeardownCooldown,
|
|
33
35
|
recordFocusTeardown,
|
|
34
36
|
};
|
|
35
37
|
/**
|
package/dist/spawn/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/spawn/guards.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/spawn/guards.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAQzE,MAAM,WAAW,GAA0B;IACzC,oGAAoG;IACpG,iBAAiB,EAAE,6BAA6B;IAChD,mBAAmB;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAA8B,WAAW;IAEzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,OAA8B,WAAW;IAEzC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/spawn/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/spawn/helpers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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/shutdown-attribution.test.ts,
|
|
3
3
|
// packages/daemon/src/completion/team-teardown-kills-process-group.test.ts,
|
|
4
|
+
// packages/daemon/src/spawn/finished-lead-not-woken.test.ts,
|
|
4
5
|
// packages/daemon/src/spawn/helpers-activity-wiring.test.ts,
|
|
5
6
|
// packages/daemon/src/spawn/progress-measure-wiring.test.ts,
|
|
6
7
|
// packages/daemon/src/spawn/resume-failure-sigterm-exclusion.test.ts,
|
|
@@ -22,8 +23,11 @@ import { handleTeamCompletion } from '../completion/index.js';
|
|
|
22
23
|
import { isSigtermExit, classifyTeamExit } from '../completion/exit-classification.js';
|
|
23
24
|
import { formatTeamExitLine } from '../completion/shutdown-attribution.js';
|
|
24
25
|
import { parseRateLimitInfo } from './rate-limit.js';
|
|
26
|
+
import { noteCodexTeamLimit } from './codex-limit.js';
|
|
27
|
+
import { codexToolActivityEvent, noteCodexDelegation } from '../completion/codex-activity.js';
|
|
25
28
|
import { reengageOnIdleResult } from './lead-continuation.js';
|
|
26
29
|
import { recordRespawnCooldown } from './spawn-cooldown.js';
|
|
30
|
+
import { CLAUDE_PROVIDER } from './provider-window.js';
|
|
27
31
|
import { stampSessionStarted } from '../session/session-stamp.js';
|
|
28
32
|
import { acknowledgePendingSpawnDirective } from '../directive/directive-queue.js';
|
|
29
33
|
import { shouldFailClosedForUndeliveredTools, mcpToolsUndeliveredSessionUpdate, } from '../backends/codex/codex-mcp-proxy.js';
|
|
@@ -127,6 +131,13 @@ function handleTeamAgentEvent(event, ctx) {
|
|
|
127
131
|
// segment so pass grouping is exact (INJ-A/INJ-B).
|
|
128
132
|
stampSessionStarted({ teamState, focusId, focusName, engineId, eventSessionId: event.sessionId });
|
|
129
133
|
break;
|
|
134
|
+
case 'tool_activity':
|
|
135
|
+
// Inspection evidence for the review-exit gate (reviewInspected): every
|
|
136
|
+
// tool the pass invokes -- a Claude tool call, a Codex MCP call, shell
|
|
137
|
+
// command, file change or search (completion/codex-activity.ts). An idle
|
|
138
|
+
// resume that only emits prose leaves it at 0: a blind gate.
|
|
139
|
+
teamState.toolActivityCount = (teamState.toolActivityCount ?? 0) + 1;
|
|
140
|
+
break;
|
|
130
141
|
case 'subagent_activity':
|
|
131
142
|
if (event.phase === 'spawned') {
|
|
132
143
|
log.info(` [focus-team] Worker spawned: ${event.agentName}`);
|
|
@@ -164,6 +175,20 @@ function handleTeamAgentEvent(event, ctx) {
|
|
|
164
175
|
break;
|
|
165
176
|
}
|
|
166
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Read one raw line of a Codex team's stream for what the daemon-core parser
|
|
180
|
+
* does not surface: a usage or rate limit (spawn/codex-limit.ts), a silent
|
|
181
|
+
* delegation opening or closing, and a completed shell / file-change / search
|
|
182
|
+
* item, which is handled as the tool_activity event a Claude tool call is
|
|
183
|
+
* (completion/codex-activity.ts).
|
|
184
|
+
*/
|
|
185
|
+
function handleCodexRawLine(raw, ctx) {
|
|
186
|
+
noteCodexTeamLimit(ctx.teamState, raw, ctx.focusName);
|
|
187
|
+
noteCodexDelegation(ctx.focusId, raw);
|
|
188
|
+
const toolEvent = codexToolActivityEvent(raw);
|
|
189
|
+
if (toolEvent)
|
|
190
|
+
handleTeamAgentEvent(toolEvent, ctx);
|
|
191
|
+
}
|
|
167
192
|
/**
|
|
168
193
|
* Attach stream parser, completion detector, activity tracker, and event
|
|
169
194
|
* handlers to the spawned team lead process.
|
|
@@ -203,6 +228,10 @@ export function attachStreamHandlers(params) {
|
|
|
203
228
|
// Capture it on the team so the spawn cooldown can schedule a reset-aware
|
|
204
229
|
// resume at teardown/close instead of a blind cooldown (spawn/rate-limit.ts,
|
|
205
230
|
// spawn/spawn-cooldown.ts).
|
|
231
|
+
// Codex facts the neutral stream does not carry (limits, shell/file/search
|
|
232
|
+
// work, silent delegations). Claude's typed rate-limit event is read below.
|
|
233
|
+
if (backend.id === 'codex')
|
|
234
|
+
handleCodexRawLine(raw, { teamState, focusId, focusName, engineId: backend.id });
|
|
206
235
|
const rl = parseRateLimitInfo(raw);
|
|
207
236
|
if (rl && rl.status === 'rejected' && rl.resetsAtMs != null) {
|
|
208
237
|
teamState.rateLimitResetAtMs = rl.resetsAtMs;
|
|
@@ -354,7 +383,7 @@ export async function handleTeamProcessClose(ctx, deps = {}) {
|
|
|
354
383
|
code, signal, teamPhase: teamState.phase, shutdownReason: teamState.shutdownReason,
|
|
355
384
|
});
|
|
356
385
|
recordRespawnCooldown({
|
|
357
|
-
focusId,
|
|
386
|
+
focusId, provider: teamState.provider ?? CLAUDE_PROVIDER,
|
|
358
387
|
disposition: exitClass.disposition,
|
|
359
388
|
rateLimitResetAtMs: teamState.rateLimitResetAtMs,
|
|
360
389
|
});
|
|
@@ -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":"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"}
|
|
@@ -17,16 +17,18 @@
|
|
|
17
17
|
*
|
|
18
18
|
* @module spawn/idle-work-stamp
|
|
19
19
|
*/
|
|
20
|
-
import type { FocusTeamState, FocusDeliveryInfo } from '../types/index.js';
|
|
20
|
+
import type { FocusTeamState, FocusDeliveryInfo, FocusIssueInfo } from '../types/index.js';
|
|
21
21
|
/**
|
|
22
22
|
* Dependencies for the stamp, injectable for tests. Defaults read the focus's
|
|
23
|
-
* deliveries from the API and use the real clock.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
23
|
+
* deliveries + issues from the API and use the real clock. The work fact itself
|
|
24
|
+
* is deliveriesWithTeamWork (focus/team-actionable-work.ts) -- the SAME
|
|
25
|
+
* predicate the team exit and the spawn gate read -- imported directly (pure)
|
|
26
|
+
* rather than injected, so a test drives it through real delivery + issue
|
|
27
|
+
* fixtures.
|
|
27
28
|
*/
|
|
28
29
|
export interface IdleWorkStampDeps {
|
|
29
30
|
getFocusDeliveries: (focusId: string) => Promise<FocusDeliveryInfo[]>;
|
|
31
|
+
getFocusIssues: (focusId: string) => Promise<FocusIssueInfo[]>;
|
|
30
32
|
now: () => number;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
@@ -38,8 +40,12 @@ export interface IdleWorkStampDeps {
|
|
|
38
40
|
* Gating (all three must hold to stamp):
|
|
39
41
|
* - the result is NOT an error (an error is owned by errorResultAt in
|
|
40
42
|
* spawn/helpers.ts; the two are distinct signals and an error never stamps here), AND
|
|
41
|
-
* - the focus has
|
|
42
|
-
*
|
|
43
|
+
* - the focus has team work: a delivery holding an open work issue, or a
|
|
44
|
+
* planning delivery to scope (deliveriesWithTeamWork). A delivery's STATUS
|
|
45
|
+
* is not work: a coding delivery whose every issue is Done waits on the
|
|
46
|
+
* daemon's advance, and waking its lead named nothing it could do (Tinker
|
|
47
|
+
* Tailor, 2026-09-25 -- the lead escalated to a human for a status the
|
|
48
|
+
* daemon owns). Stamping a team with no work would mislabel it as parked.
|
|
43
49
|
*
|
|
44
50
|
* Returns the outstanding delivery ids it stamped (empty array when nothing was
|
|
45
51
|
* stamped). Safe to call unconditionally from the result handler.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle-work-stamp.d.ts","sourceRoot":"","sources":["../../src/spawn/idle-work-stamp.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"idle-work-stamp.d.ts","sourceRoot":"","sources":["../../src/spawn/idle-work-stamp.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAW3F;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EACzF,IAAI,GAAE,iBAA+B,GACpC,OAAO,CAAC,MAAM,EAAE,CAAC,CA4BnB"}
|
|
@@ -1,12 +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/spawn/idle-work-stamp.test.ts
|
|
3
3
|
// PINNED-BY-END
|
|
4
|
-
import { getFocusDeliveries as defaultGetFocusDeliveries } from '../queries/focuses.js';
|
|
5
|
-
import {
|
|
4
|
+
import { getFocusDeliveries as defaultGetFocusDeliveries, getFocusIssues as defaultGetFocusIssues, } from '../queries/focuses.js';
|
|
5
|
+
import { deliveriesWithTeamWork } from '../focus/team-actionable-work.js';
|
|
6
|
+
import { armFactsFromTeamState } from '../focus/recorded-new-intent.js';
|
|
6
7
|
import { createLogger } from '../shell/log.js';
|
|
7
8
|
const log = createLogger({ module: 'focus-executor' });
|
|
8
9
|
const defaultDeps = {
|
|
9
10
|
getFocusDeliveries: defaultGetFocusDeliveries,
|
|
11
|
+
getFocusIssues: defaultGetFocusIssues,
|
|
10
12
|
now: () => Date.now(),
|
|
11
13
|
};
|
|
12
14
|
/**
|
|
@@ -18,8 +20,12 @@ const defaultDeps = {
|
|
|
18
20
|
* Gating (all three must hold to stamp):
|
|
19
21
|
* - the result is NOT an error (an error is owned by errorResultAt in
|
|
20
22
|
* spawn/helpers.ts; the two are distinct signals and an error never stamps here), AND
|
|
21
|
-
* - the focus has
|
|
22
|
-
*
|
|
23
|
+
* - the focus has team work: a delivery holding an open work issue, or a
|
|
24
|
+
* planning delivery to scope (deliveriesWithTeamWork). A delivery's STATUS
|
|
25
|
+
* is not work: a coding delivery whose every issue is Done waits on the
|
|
26
|
+
* daemon's advance, and waking its lead named nothing it could do (Tinker
|
|
27
|
+
* Tailor, 2026-09-25 -- the lead escalated to a human for a status the
|
|
28
|
+
* daemon owns). Stamping a team with no work would mislabel it as parked.
|
|
23
29
|
*
|
|
24
30
|
* Returns the outstanding delivery ids it stamped (empty array when nothing was
|
|
25
31
|
* stamped). Safe to call unconditionally from the result handler.
|
|
@@ -29,18 +35,23 @@ export async function stampIdleWithWorkRemaining(args, deps = defaultDeps) {
|
|
|
29
35
|
// An error result is the errorResultAt path's business, never this stamp's.
|
|
30
36
|
if (isError)
|
|
31
37
|
return [];
|
|
32
|
-
const deliveries = await
|
|
33
|
-
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
+
const [deliveries, issues] = await Promise.all([
|
|
39
|
+
deps.getFocusDeliveries(focusId),
|
|
40
|
+
deps.getFocusIssues(focusId),
|
|
41
|
+
]);
|
|
42
|
+
// A read-only focus is an audit whose planning awaits ratification, not the team.
|
|
43
|
+
const outstanding = deliveriesWithTeamWork(deliveries, issues, {
|
|
44
|
+
armFacts: armFactsFromTeamState(teamState),
|
|
45
|
+
planningIsWork: !teamState.readOnly,
|
|
46
|
+
}).map((d) => d.id);
|
|
47
|
+
// No team work -> the lead legitimately has nothing to do; do NOT stamp (a
|
|
48
|
+
// stamp would mislabel a genuinely-idle team as parked-with-work).
|
|
38
49
|
if (outstanding.length === 0)
|
|
39
50
|
return [];
|
|
40
51
|
teamState.idleWithWorkRemainingAt = deps.now();
|
|
41
52
|
teamState.idleOutstandingDeliveryIds = outstanding;
|
|
42
53
|
log.warn(`[focus-executor] Lead for "${focusName}" returned a SUCCESS result while ` +
|
|
43
|
-
`${outstanding.length} delivery(ies)
|
|
54
|
+
`${outstanding.length} delivery(ies) hold open work -- stamping ` +
|
|
44
55
|
`idle-with-work-remaining (the lead parked with work left, it is not done).`);
|
|
45
56
|
return outstanding;
|
|
46
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idle-work-stamp.js","sourceRoot":"","sources":["../../src/spawn/idle-work-stamp.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,gBAAgB;AAuBhB,OAAO,
|
|
1
|
+
{"version":3,"file":"idle-work-stamp.js","sourceRoot":"","sources":["../../src/spawn/idle-work-stamp.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,gBAAgB;AAuBhB,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAC/C,cAAc,IAAI,qBAAqB,GACxC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAgBvD,MAAM,WAAW,GAAsB;IACrC,kBAAkB,EAAE,yBAAyB;IAC7C,cAAc,EAAE,qBAAqB;IACrC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAyF,EACzF,OAA0B,WAAW;IAErC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAExD,4EAA4E;IAC5E,IAAI,OAAO;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;KAC7B,CAAC,CAAC;IACH,kFAAkF;IAClF,MAAM,WAAW,GAAG,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE;QAC7D,QAAQ,EAAE,qBAAqB,CAAC,SAAS,CAAC;QAC1C,cAAc,EAAE,CAAC,SAAS,CAAC,QAAQ;KACpC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpB,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/C,SAAS,CAAC,0BAA0B,GAAG,WAAW,CAAC;IACnD,GAAG,CAAC,IAAI,CACN,8BAA8B,SAAS,oCAAoC;QACzE,GAAG,WAAW,CAAC,MAAM,4CAA4C;QACjE,4EAA4E,CAC/E,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/spawn/index.d.ts
CHANGED
|
@@ -26,4 +26,5 @@ export { setupTeamLogStreams, attachStreamHandlers, handleTeamProcessClose, } fr
|
|
|
26
26
|
export type { TeamLogStreams, AttachStreamHandlersParams, AttachStreamHandlersResult, HandleTeamProcessCloseParams, } from './helpers.js';
|
|
27
27
|
export { shouldSkipPendingSpawn, recordPendingSpawnAttempt, } from './guards.js';
|
|
28
28
|
export type { PendingSpawnGuardDeps } from './guards.js';
|
|
29
|
+
export { isNextSpawnInCooldown, type NextSpawnRoute } from './next-spawn-cooldown.js';
|
|
29
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spawn/index.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spawn/index.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/spawn/index.js
CHANGED
|
@@ -38,4 +38,5 @@ export { getGovernor, generateFocusBranchName, buildAgentArgs, spawnFocusTeam, }
|
|
|
38
38
|
export { setupTeamLogStreams, attachStreamHandlers, handleTeamProcessClose, } from './helpers.js';
|
|
39
39
|
// ── Pending-spawn guard (legacy ./pending-spawn-guard.js surface) ────────────
|
|
40
40
|
export { shouldSkipPendingSpawn, recordPendingSpawnAttempt, } from './guards.js';
|
|
41
|
+
export { isNextSpawnInCooldown } from './next-spawn-cooldown.js';
|
|
41
42
|
//# sourceMappingURL=index.js.map
|
package/dist/spawn/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spawn/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,yDAAyD;AACzD,gBAAgB;AAEhB;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,yCAAyC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOjD,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,iCAAiC;AACjC,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AAIpC,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAQtB,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spawn/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,yDAAyD;AACzD,gBAAgB;AAEhB;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,yCAAyC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOjD,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,iCAAiC;AACjC,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,cAAc,GACf,MAAM,4BAA4B,CAAC;AAIpC,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAQtB,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,qBAAqB,EAAuB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lead-continuation.d.ts","sourceRoot":"","sources":["../../src/spawn/lead-continuation.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"lead-continuation.d.ts","sourceRoot":"","sources":["../../src/spawn/lead-continuation.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAmB7G;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,oFAAoF;IACpF,qBAAqB,EAAE,MAAM,MAAM,CAAC;IACpC;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,gBAAgB,CAAC;IAC/G,wGAAwG;IACxG,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAeD;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,UAAU,GACV,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,MAAM,CAAC;AAsCX;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EACzF,IAAI,GAAE,gBAA8B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA0F9B"}
|