@cluesmith/codev 3.3.1 → 3.3.3
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/dashboard-dist/assets/{index-D3XaKpZW.js → index-CUIjS_Vb.js} +41 -41
- package/dashboard-dist/assets/index-CUIjS_Vb.js.map +1 -0
- package/dashboard-dist/assets/index-DnYLy5C_.css +32 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +52 -1
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/inbox.d.ts.map +1 -1
- package/dist/agent-farm/commands/inbox.js +67 -10
- package/dist/agent-farm/commands/inbox.js.map +1 -1
- package/dist/agent-farm/commands/interrupt.d.ts +4 -1
- package/dist/agent-farm/commands/interrupt.d.ts.map +1 -1
- package/dist/agent-farm/commands/interrupt.js +6 -3
- package/dist/agent-farm/commands/interrupt.js.map +1 -1
- package/dist/agent-farm/commands/reset/constants.d.ts +118 -0
- package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/constants.js +118 -0
- package/dist/agent-farm/commands/reset/constants.js.map +1 -1
- package/dist/agent-farm/commands/reset/context.d.ts +18 -0
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/context.js +41 -0
- package/dist/agent-farm/commands/reset/context.js.map +1 -1
- package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/receipt.js +16 -5
- package/dist/agent-farm/commands/reset/receipt.js.map +1 -1
- package/dist/agent-farm/commands/reset/reorient.d.ts +1 -1
- package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/reorient.js +8 -1
- package/dist/agent-farm/commands/reset/reorient.js.map +1 -1
- package/dist/agent-farm/commands/reset/self.d.ts +335 -0
- package/dist/agent-farm/commands/reset/self.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/self.js +636 -0
- package/dist/agent-farm/commands/reset/self.js.map +1 -0
- package/dist/agent-farm/commands/reset.d.ts +4 -1
- package/dist/agent-farm/commands/reset.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset.js +29 -21
- package/dist/agent-farm/commands/reset.js.map +1 -1
- package/dist/agent-farm/commands/self-refresh.d.ts +60 -0
- package/dist/agent-farm/commands/self-refresh.d.ts.map +1 -0
- package/dist/agent-farm/commands/self-refresh.js +506 -0
- package/dist/agent-farm/commands/self-refresh.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts +28 -0
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +90 -7
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +7 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +13 -1
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts +3 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +8 -443
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/mailbox.d.ts +47 -7
- package/dist/agent-farm/db/mailbox.d.ts.map +1 -1
- package/dist/agent-farm/db/mailbox.js +56 -12
- package/dist/agent-farm/db/mailbox.js.map +1 -1
- package/dist/agent-farm/db/migrations.d.ts +57 -0
- package/dist/agent-farm/db/migrations.d.ts.map +1 -0
- package/dist/agent-farm/db/migrations.js +530 -0
- package/dist/agent-farm/db/migrations.js.map +1 -0
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +1 -0
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +22 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +12 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +12 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +43 -14
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/cron-delivery.d.ts +7 -1
- package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -1
- package/dist/agent-farm/servers/cron-delivery.js +2 -1
- package/dist/agent-farm/servers/cron-delivery.js.map +1 -1
- package/dist/agent-farm/servers/gate-profiles.d.ts +21 -0
- package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -1
- package/dist/agent-farm/servers/gate-profiles.js +36 -4
- package/dist/agent-farm/servers/gate-profiles.js.map +1 -1
- package/dist/agent-farm/servers/mailbox-delivery.d.ts +218 -15
- package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-delivery.js +259 -27
- package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.d.ts +66 -11
- package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -1
- package/dist/agent-farm/servers/mailbox-wiring.js +202 -48
- package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -1
- package/dist/agent-farm/servers/message-write.d.ts +58 -18
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
- package/dist/agent-farm/servers/message-write.js +73 -28
- package/dist/agent-farm/servers/message-write.js.map +1 -1
- package/dist/agent-farm/servers/render-gate.d.ts +37 -1
- package/dist/agent-farm/servers/render-gate.d.ts.map +1 -1
- package/dist/agent-farm/servers/render-gate.js +71 -12
- package/dist/agent-farm/servers/render-gate.js.map +1 -1
- package/dist/agent-farm/servers/session-submit.d.ts +220 -27
- package/dist/agent-farm/servers/session-submit.d.ts.map +1 -1
- package/dist/agent-farm/servers/session-submit.js +333 -42
- package/dist/agent-farm/servers/session-submit.js.map +1 -1
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +3 -2
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +11 -3
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts +32 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +245 -36
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +15 -2
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +21 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +53 -5
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +14 -0
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +35 -0
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +39 -0
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +8 -1
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/types.d.ts +36 -1
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.d.ts +136 -4
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.js +212 -22
- package/dist/agent-farm/utils/message-format.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +8 -2
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +19 -2
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/generate-image.d.ts +20 -1
- package/dist/commands/generate-image.d.ts.map +1 -1
- package/dist/commands/generate-image.js +188 -1
- package/dist/commands/generate-image.js.map +1 -1
- package/dist/commands/porch/context-refresh.d.ts +181 -0
- package/dist/commands/porch/context-refresh.d.ts.map +1 -0
- package/dist/commands/porch/context-refresh.js +270 -0
- package/dist/commands/porch/context-refresh.js.map +1 -0
- package/dist/commands/porch/index.d.ts +6 -0
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +46 -0
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +0 -9
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +133 -4
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +18 -2
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +102 -0
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/types.d.ts +61 -0
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/lib/forge-contracts.d.ts +66 -5
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge.d.ts +1 -1
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +33 -11
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/self-refresh-invocation.d.ts +60 -0
- package/dist/lib/self-refresh-invocation.d.ts.map +1 -0
- package/dist/lib/self-refresh-invocation.js +64 -0
- package/dist/lib/self-refresh-invocation.js.map +1 -0
- package/dist/lib/test-env.d.ts +50 -0
- package/dist/lib/test-env.d.ts.map +1 -1
- package/dist/lib/test-env.js +76 -0
- package/dist/lib/test-env.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts +10 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +38 -9
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +52 -4
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +157 -18
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +73 -0
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +151 -0
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +20 -3
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +2 -0
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +17 -1
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +28 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/package.json +4 -4
- package/scripts/forge/gitea/_lib.sh +214 -0
- package/scripts/forge/gitea/issue-comment.sh +8 -1
- package/scripts/forge/gitea/issue-view.sh +95 -4
- package/scripts/forge/gitea/pr-create.sh +155 -0
- package/scripts/forge/gitea/pr-exists.sh +32 -4
- package/scripts/forge/gitea/pr-list.sh +40 -31
- package/scripts/forge/gitea/pr-view.sh +65 -4
- package/scripts/forge/gitea/recently-merged.sh +91 -21
- package/scripts/forge/gitea/user-identity.sh +30 -1
- package/scripts/forge/github/issue-view.sh +5 -2
- package/scripts/forge/github/pr-create.sh +47 -0
- package/scripts/forge/github/pr-search.sh +3 -1
- package/scripts/forge/gitlab/issue-view.sh +24 -4
- package/scripts/forge/gitlab/pr-create.sh +53 -0
- package/scripts/forge/gitlab/pr-search.sh +3 -1
- package/scripts/forge/linear/issue-view.sh +13 -2
- package/skeleton/.claude/skills/arch-save/SKILL.md +8 -2
- package/skeleton/.claude/skills/builder-refresh/SKILL.md +138 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +22 -1
- package/skeleton/.codex/skills/arch-save/SKILL.md +8 -2
- package/skeleton/.codex/skills/builder-refresh/SKILL.md +138 -0
- package/skeleton/.codex/skills/generate-image/SKILL.md +22 -1
- package/skeleton/protocol-schema.json +17 -0
- package/skeleton/protocols/air/prompts/pr.md +6 -1
- package/skeleton/protocols/air/protocol.json +1 -1
- package/skeleton/protocols/aspir/prompts/review.md +6 -1
- package/skeleton/protocols/aspir/protocol.json +5 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +6 -1
- package/skeleton/protocols/bugfix/protocol.json +1 -1
- package/skeleton/protocols/bugfix/protocol.md +2 -1
- package/skeleton/protocols/experiment/protocol.json +1 -1
- package/skeleton/protocols/maintain/prompts/review.md +6 -1
- package/skeleton/protocols/maintain/protocol.json +1 -1
- package/skeleton/protocols/pir/prompts/review.md +10 -7
- package/skeleton/protocols/pir/protocol.json +1 -1
- package/skeleton/protocols/protocol-schema.json +17 -0
- package/skeleton/protocols/research/protocol.json +1 -1
- package/skeleton/protocols/spike/protocol.json +1 -1
- package/skeleton/protocols/spir/prompts/review.md +6 -1
- package/skeleton/protocols/spir/protocol.json +5 -1
- package/skeleton/resources/commands/agent-farm.md +1 -1
- package/templates/tower.html +16 -1
- package/dashboard-dist/assets/index-BZRTEMtH.css +0 -32
- package/dashboard-dist/assets/index-D3XaKpZW.js.map +0 -1
|
@@ -41,42 +41,235 @@
|
|
|
41
41
|
*
|
|
42
42
|
* ## Exactly what it covers — this is NOT blanket per-session atomicity
|
|
43
43
|
*
|
|
44
|
-
* A lock only serialises writers that take it.
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
44
|
+
* A lock only serialises writers that take it. As of Issue #1365 that is every writer
|
|
45
|
+
* that puts a *message* on a terminal:
|
|
46
|
+
*
|
|
47
|
+
* - `escape` and `interrupt` on `/api/send`, and the delayed `--interrupt` `^C`
|
|
48
|
+
* (`tower-routes.ts`) — the explicit human gate-bypasses.
|
|
49
|
+
* - The mailbox delivery path (`deliverAgentMailSerialized`, Spec 1313) — every normal
|
|
50
|
+
* `/api/send`, every cron notification, every backstop drain. It takes this lock as a
|
|
51
|
+
* LEAF inside its own per-agent serializer, via `submitMessagePaced`.
|
|
52
|
+
*
|
|
53
|
+
* These stay deliberately uncovered:
|
|
54
|
+
*
|
|
55
|
+
* - `POST /api/terminals/:id/write` — a raw passthrough with no Enter semantics of its own.
|
|
56
|
+
* - `tower-websocket.ts` keystrokes and the shellper frame relay — a human typing into
|
|
57
|
+
* their own terminal. Serialising that behind an agent's message would make the UI feel
|
|
58
|
+
* stuck, and the human is the composer's owner.
|
|
59
|
+
*
|
|
60
|
+
* ### Why the mailbox path was converged (Issue #1365)
|
|
61
|
+
*
|
|
62
|
+
* Until #1365 the delivery path held only its per-AGENT serializer — a disjoint lock — and
|
|
63
|
+
* the resulting cross-path race was accepted on the grounds that a gated delivery only ever
|
|
64
|
+
* writes onto a render-verified empty prompt and `interrupt` is an explicit human action.
|
|
65
|
+
* That reasoning covered one ordering (a delivery landing inside the interrupt's `^C`→settle
|
|
66
|
+
* →text window) and missed two:
|
|
67
|
+
*
|
|
68
|
+
* - a `^C` landing inside the DELIVERY's own text→Enter window (50–130 ms+) cleared the
|
|
69
|
+
* composer, so the delivery's Enter submitted nothing — yet every byte had reached the
|
|
70
|
+
* PTY, so the write reported success and the row was marked `delivered`. Silent loss with
|
|
71
|
+
* a false audit record, which is the one outcome Spec 1313 exists to exclude;
|
|
72
|
+
* - `--escape` (ESC, then Enter 50 ms later) produced the truncated variant, and is the
|
|
73
|
+
* MORE likely trigger for a multi-line body, because the delivery's exposed window is
|
|
74
|
+
* longest exactly when the body is long.
|
|
75
|
+
*
|
|
76
|
+
* The "a human is standing at this terminal" premise also does not hold for the DELAYED
|
|
77
|
+
* `^C`, which fires unattended on a timer.
|
|
78
|
+
*
|
|
79
|
+
* ### Lock order, and why there is no cycle
|
|
80
|
+
*
|
|
81
|
+
* Always per-agent → per-terminal. The delivery path takes this lock as a leaf inside
|
|
82
|
+
* `KeyedSerializer`; the operator paths take only this one and never enter the per-agent
|
|
83
|
+
* serializer. Re-entrancy is impossible in the other direction too: `PtySession.write()`
|
|
84
|
+
* emits no `'submit'` signal (only `handleUserInput` does, for human keystrokes), so no
|
|
85
|
+
* write from inside a lock can schedule a delivery synchronously.
|
|
86
|
+
*
|
|
87
|
+
* The lock is a leaf around the WRITE only, never the gate classify. `--interrupt` is the
|
|
88
|
+
* human's escape hatch for a wedged agent; making it queue behind a screen classification
|
|
89
|
+
* would be a real regression for the one action that must always get through.
|
|
90
|
+
*
|
|
91
|
+
* ### Asymmetric acquisition: deliveries decline, operators wait
|
|
92
|
+
*
|
|
93
|
+
* A delivery uses {@link trySubmitToSession} and abandons its turn on contention, because
|
|
94
|
+
* `MailboxDrainer.tick` walks agents SEQUENTIALLY — one delivery parked on a terminal lock
|
|
95
|
+
* would stall every other agent's mail, plus that tick's escalation and prune passes. It
|
|
96
|
+
* costs nothing: a contended terminal means the delivery's in-lock precheck would have
|
|
97
|
+
* aborted it anyway, and the row simply re-delivers on the next clean pass.
|
|
98
|
+
*
|
|
99
|
+
* Operators block — bounded by {@link OPERATOR_SUBMIT_WAIT_CEILING_MS}, because a paced
|
|
100
|
+
* write runs `(lines−1)×10+80` ms and a body is capped only by `parseJsonBody`'s 1 MiB.
|
|
101
|
+
*
|
|
102
|
+
* The ceiling may only ever bypass a DELIVERY write, never another operator (codex review of
|
|
103
|
+
* PR #1492). Operator-vs-operator was ALWAYS fully serialized before #1365 — `submitToSession`
|
|
104
|
+
* had no ceiling — so a ceiling that could skip a queued or in-flight operator would make that
|
|
105
|
+
* one pair strictly WORSE than the old behaviour, which is the opposite of the point. The
|
|
106
|
+
* {@link SubmissionKind} tag plus the pending-operator count is what keeps the guarantee true
|
|
107
|
+
* per pair:
|
|
108
|
+
*
|
|
109
|
+
* - operator vs operator — fully serialized, unbounded wait, exactly as before #1365;
|
|
110
|
+
* - operator vs delivery — serialized under the ceiling, and above it degraded to the
|
|
111
|
+
* pre-#1365 behaviour (two disjoint locks, i.e. no serialization at all), so never worse;
|
|
112
|
+
* - delivery vs delivery — the per-agent serializer, unchanged, plus a declined contention.
|
|
113
|
+
*
|
|
114
|
+
* ### What is guaranteed, and what is not
|
|
115
|
+
*
|
|
116
|
+
* **Serialization is the structural guarantee**: no lock-taking writer can put bytes on a
|
|
117
|
+
* terminal while another lock-taking writer's submission is in flight. That is a property of
|
|
118
|
+
* the lock, not of any check.
|
|
119
|
+
*
|
|
120
|
+
* The delivery path ALSO re-validates its preconditions inside the lock (`writable`, the
|
|
121
|
+
* gate's `ringToken`, and the row's own status). That re-check narrows a window; it does not
|
|
122
|
+
* close one, and it should not be described as if it did:
|
|
123
|
+
*
|
|
124
|
+
* - `ringToken` counts OUTPUT bytes, so input written by an uncovered path (the raw
|
|
125
|
+
* passthrough, or a human's keystrokes) can sit un-echoed on the line and read as
|
|
126
|
+
* unchanged. That echo-lag residual survives this change by design — it is #1473's
|
|
127
|
+
* territory.
|
|
128
|
+
* - Its real structural value is that it makes the ACQUISITION POLICY a free choice: were
|
|
129
|
+
* the delivery ever switched from declining to waiting (e.g. to order an interrupt ahead
|
|
130
|
+
* of its own body, per #1481), the precheck is what would keep that safe.
|
|
131
|
+
*
|
|
132
|
+
* The one hole this lock opens is its own degraded path: an operator whose ceiling expires
|
|
133
|
+
* writes unserialized. Rather than leave that as a second silent-loss route, degraded writes
|
|
134
|
+
* are COUNTED per session ({@link unserializedWriteCount}); `submitMessagePaced` holds a
|
|
135
|
+
* {@link watchBypasses} watch across its write and reports `preempted`, so the delivery holds
|
|
136
|
+
* its row for redelivery instead of reporting a delivery that may have been clobbered.
|
|
137
|
+
* Deliberately no screen re-classification — the question is only "did anyone bypass the lock
|
|
138
|
+
* while I held it?", and a counter answers exactly that. The count is BYTES, not intent: a
|
|
139
|
+
* degraded write whose callback declines to write anything (the delayed `^C` re-checks
|
|
140
|
+
* liveness inside the lock) bumps nothing, because there is nothing for a delivery to have
|
|
141
|
+
* been raced by.
|
|
69
142
|
*/
|
|
70
143
|
/**
|
|
71
144
|
* Tail of the in-flight submission chain per session.
|
|
72
145
|
*
|
|
73
146
|
* A session's entry is deleted once its chain drains, so this cannot grow
|
|
74
|
-
* without bound across a long-lived Tower.
|
|
147
|
+
* without bound across a long-lived Tower. Its presence is also the contention
|
|
148
|
+
* signal both {@link isSubmissionInFlight} and {@link trySubmitToSession} read.
|
|
75
149
|
*/
|
|
76
150
|
const chains = new Map();
|
|
77
151
|
const realClock = {
|
|
78
152
|
sleep: (ms) => new Promise(resolve => setTimeout(resolve, ms)),
|
|
79
153
|
};
|
|
154
|
+
/** Marker resolved by the ceiling timer so the race can tell who won. */
|
|
155
|
+
const CEILING_EXPIRED = Symbol('ceiling-expired');
|
|
156
|
+
/**
|
|
157
|
+
* How long an OPERATOR submission (`--interrupt`, `--escape`, the delayed `^C`) waits for an
|
|
158
|
+
* in-flight submission before proceeding unserialized (Issue #1365).
|
|
159
|
+
*
|
|
160
|
+
* Needed because a paced write's duration is `(lines−1)×10+80` ms and a request body is capped
|
|
161
|
+
* only by `parseJsonBody`'s 1 MiB, so a 48 KB `--file` of short lines is ~8 minutes on the wire.
|
|
162
|
+
* Blocking `--interrupt` — the human's escape hatch for a wedged agent — behind that would be a
|
|
163
|
+
* worse regression than the interleaving this lock closes. Two seconds comfortably covers every
|
|
164
|
+
* realistic message while keeping the escape hatch responsive.
|
|
165
|
+
*
|
|
166
|
+
* It applies ONLY against a delivery write; behind another operator the wait stays unbounded
|
|
167
|
+
* (see {@link SubmitOptions.waitCeilingMs}). And when it does expire, the caller must SAY so —
|
|
168
|
+
* `/api/send` reports `degraded: true` — because a degraded operator write may interleave with
|
|
169
|
+
* the write it skipped, and the interrupt path has already claimed its row `delivered`.
|
|
170
|
+
*/
|
|
171
|
+
export const OPERATOR_SUBMIT_WAIT_CEILING_MS = 2000;
|
|
172
|
+
/**
|
|
173
|
+
* Per-session count of submissions that gave up waiting and wrote UNSERIALIZED
|
|
174
|
+
* (Issue #1365 — the {@link OPERATOR_SUBMIT_WAIT_CEILING_MS} degraded path).
|
|
175
|
+
*
|
|
176
|
+
* A monotone counter, not a flag, so a concurrent writer can sample it before and after
|
|
177
|
+
* its own write and detect a race that started *and* finished in between. Entries are
|
|
178
|
+
* per session id and only ever created on the degraded path, which is rare by
|
|
179
|
+
* construction — it needs a write long enough to hold the line past the ceiling AND a
|
|
180
|
+
* concurrent operator action.
|
|
181
|
+
*
|
|
182
|
+
* Evicted by {@link evictBypassCountIfIdle} once the session has no submission in flight and
|
|
183
|
+
* no {@link watchBypasses} watch outstanding, so a long-lived Tower does not retain one entry
|
|
184
|
+
* per session that ever degraded (claude review of PR #1492 — the leak class #1472 fixed).
|
|
185
|
+
* Unlike {@link chains} it cannot simply self-delete on drain: it must outlive the submission
|
|
186
|
+
* whose watcher is about to compare against it.
|
|
187
|
+
*/
|
|
188
|
+
const unserializedWrites = new Map();
|
|
189
|
+
/**
|
|
190
|
+
* Open {@link watchBypasses} watches per session — the interlock that makes eviction safe.
|
|
191
|
+
*
|
|
192
|
+
* A watcher compares the counter before and after its own write. Resetting the counter to 0
|
|
193
|
+
* between those two reads would read as "nobody raced me", which is exactly the false
|
|
194
|
+
* `delivered` this whole issue exists to eliminate. So eviction is refused while a watch is
|
|
195
|
+
* open, and re-attempted when the last one closes.
|
|
196
|
+
*/
|
|
197
|
+
const bypassWatchers = new Map();
|
|
198
|
+
/**
|
|
199
|
+
* Watch a session for degraded (ceiling-bypassing) writes across your own write.
|
|
200
|
+
*
|
|
201
|
+
* Open before the first byte, {@link BypassWatch.raced} after the last, and
|
|
202
|
+
* {@link BypassWatch.release} in a `finally`. Holding the watch is what pins the underlying
|
|
203
|
+
* count in place: without it the entry may be evicted the moment the session goes idle, and
|
|
204
|
+
* a reset between the two reads would look like "no race".
|
|
205
|
+
*/
|
|
206
|
+
export function watchBypasses(sessionId) {
|
|
207
|
+
const before = unserializedWrites.get(sessionId) ?? 0;
|
|
208
|
+
bypassWatchers.set(sessionId, (bypassWatchers.get(sessionId) ?? 0) + 1);
|
|
209
|
+
let released = false;
|
|
210
|
+
return {
|
|
211
|
+
raced: () => (unserializedWrites.get(sessionId) ?? 0) !== before,
|
|
212
|
+
release: () => {
|
|
213
|
+
if (released)
|
|
214
|
+
return; // idempotent: a `finally` may run after an explicit release
|
|
215
|
+
released = true;
|
|
216
|
+
const remaining = (bypassWatchers.get(sessionId) ?? 1) - 1;
|
|
217
|
+
if (remaining > 0) {
|
|
218
|
+
bypassWatchers.set(sessionId, remaining);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
bypassWatchers.delete(sessionId);
|
|
222
|
+
evictBypassCountIfIdle(sessionId);
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Drop a session's degraded-write count once nothing can still be comparing against it.
|
|
229
|
+
*
|
|
230
|
+
* Called from BOTH ends of the interlock — the chain's drain cleanup and the last watch's
|
|
231
|
+
* release — so whichever happens second is the one that evicts, and neither ordering leaks.
|
|
232
|
+
* Requires no session-teardown hook: a session with no chain and no watcher is quiescent by
|
|
233
|
+
* definition, and the next degraded write simply re-creates the entry at 0.
|
|
234
|
+
*/
|
|
235
|
+
function evictBypassCountIfIdle(sessionId) {
|
|
236
|
+
if (bypassWatchers.has(sessionId))
|
|
237
|
+
return; // a comparison window is open — resetting would lie
|
|
238
|
+
if (chains.has(sessionId))
|
|
239
|
+
return; // a submission is live and could still degrade
|
|
240
|
+
unserializedWrites.delete(sessionId);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Per-session count of OPERATOR submissions queued or in flight (Issue #1365, codex review).
|
|
244
|
+
*
|
|
245
|
+
* The ceiling consults this before arming: while any operator is ahead of us — running OR
|
|
246
|
+
* merely queued — we wait as long as it takes, exactly as every submission did before the
|
|
247
|
+
* ceiling existed. A queued operator counts because bypassing one that has not started yet
|
|
248
|
+
* is the same violation as bypassing one mid-write.
|
|
249
|
+
*/
|
|
250
|
+
const pendingOperators = new Map();
|
|
251
|
+
/**
|
|
252
|
+
* How many unserialized (ceiling-expired) writes this session has seen.
|
|
253
|
+
*
|
|
254
|
+
* The point of comparison for a writer that wants to know whether its own submission was
|
|
255
|
+
* raced: sample before the first byte, compare after the last. Cheaper and far more
|
|
256
|
+
* direct than re-classifying the screen — it asks "did anyone bypass the lock while I
|
|
257
|
+
* held it?", which is exactly the question, and needs no terminal rendering at all.
|
|
258
|
+
*/
|
|
259
|
+
export function unserializedWriteCount(sessionId) {
|
|
260
|
+
return unserializedWrites.get(sessionId) ?? 0;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Whether a submission is queued or in flight for this session RIGHT NOW.
|
|
264
|
+
*
|
|
265
|
+
* Read by {@link trySubmitToSession} and exposed for telemetry. Safe to act on
|
|
266
|
+
* without a lock of its own: the runtime is single-threaded and every mutation of
|
|
267
|
+
* `chains` happens with no await in between, so a caller that observes `false`
|
|
268
|
+
* cannot be beaten to the install by another caller in the same tick.
|
|
269
|
+
*/
|
|
270
|
+
export function isSubmissionInFlight(sessionId) {
|
|
271
|
+
return chains.has(sessionId);
|
|
272
|
+
}
|
|
80
273
|
/**
|
|
81
274
|
* Run a write against a session so that it completes before any other
|
|
82
275
|
* submission to the same session begins.
|
|
@@ -86,42 +279,140 @@ const realClock = {
|
|
|
86
279
|
* keystroke (the Enter) has been written. This is exactly what
|
|
87
280
|
* `writeMessageToSession` / `writeEscapeToSession` already
|
|
88
281
|
* return, so callers pass them through unchanged.
|
|
282
|
+
* @param clock injectable sleeper; real timers by default
|
|
283
|
+
* @param options {@link SubmitOptions} — the operator paths pass a wait ceiling
|
|
89
284
|
* @returns resolves once the submission is complete
|
|
90
285
|
*/
|
|
91
|
-
export function submitToSession(sessionId, write, clock = realClock) {
|
|
286
|
+
export function submitToSession(sessionId, write, clock = realClock, options = {}) {
|
|
92
287
|
const previous = chains.get(sessionId) ?? Promise.resolve();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
288
|
+
// A failed predecessor must not poison the chain — the next submission is a
|
|
289
|
+
// separate message and is still entitled to run.
|
|
290
|
+
const previousSettled = previous.then(() => undefined, () => undefined);
|
|
291
|
+
// Only a CONTENDED submission can wait, so an uncontended one must not arm a
|
|
292
|
+
// ceiling timer it would then leave dangling for its whole duration.
|
|
293
|
+
const contended = chains.has(sessionId);
|
|
294
|
+
const ceilingMs = options.waitCeilingMs;
|
|
295
|
+
// An operator ahead of us — in flight or merely queued — makes this an operator-vs-operator
|
|
296
|
+
// wait, which was UNBOUNDED before #1365 and must stay unbounded (see waitCeilingMs).
|
|
297
|
+
const behindOperator = (pendingOperators.get(sessionId) ?? 0) > 0;
|
|
298
|
+
const bounded = contended && ceilingMs !== undefined && ceilingMs >= 0 && !behindOperator;
|
|
299
|
+
// Count ourselves only AFTER the check above, so we do not read our own presence as a
|
|
300
|
+
// reason to block, and BEFORE any await, so a later operator sees us while we are queued.
|
|
301
|
+
const kind = options.kind ?? 'operator';
|
|
302
|
+
if (kind === 'operator')
|
|
303
|
+
pendingOperators.set(sessionId, (pendingOperators.get(sessionId) ?? 0) + 1);
|
|
304
|
+
const current = (async () => {
|
|
305
|
+
let bypassed = false;
|
|
306
|
+
if (bounded) {
|
|
307
|
+
const winner = await Promise.race([
|
|
308
|
+
previousSettled,
|
|
309
|
+
clock.sleep(ceilingMs).then(() => CEILING_EXPIRED),
|
|
310
|
+
]);
|
|
311
|
+
// Ceiling expired → proceed WITHOUT serialization. This is a deliberate,
|
|
312
|
+
// announced degradation to exactly the pre-Issue-#1365 behaviour for the ONE pair it
|
|
313
|
+
// can affect: an operator write against a delivery, which held a disjoint lock and so
|
|
314
|
+
// was never serialized against an operator at all. (Operator-vs-operator never arms
|
|
315
|
+
// the ceiling — see `bounded` above — so that pair keeps its unbounded wait.) Taken
|
|
316
|
+
// only when the alternative is stalling `--interrupt`, the human's escape hatch,
|
|
317
|
+
// behind a write that may run for minutes. See the boundary comment above.
|
|
318
|
+
if (winner === CEILING_EXPIRED) {
|
|
319
|
+
bypassed = true;
|
|
320
|
+
options.onCeilingExpired?.(ceilingMs);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
await previousSettled;
|
|
325
|
+
}
|
|
98
326
|
const completesInMs = write();
|
|
327
|
+
// Count the bypass only once bytes actually went out: a degraded write that declined to
|
|
328
|
+
// write anything raced nobody. Placed straight after `write()` with NO await in between,
|
|
329
|
+
// so a delivery holding the line still cannot observe our bytes without also observing
|
|
330
|
+
// the bump when it re-samples after its own write.
|
|
331
|
+
if (bypassed && (options.wroteBytes?.() ?? true)) {
|
|
332
|
+
unserializedWrites.set(sessionId, unserializedWriteCount(sessionId) + 1);
|
|
333
|
+
}
|
|
99
334
|
// Wait out the scheduled Enter. Zero means the write was fully synchronous
|
|
100
335
|
// (`noEnter`), so there is nothing pending to wait for.
|
|
101
336
|
if (completesInMs > 0)
|
|
102
337
|
await clock.sleep(completesInMs);
|
|
103
|
-
});
|
|
104
|
-
|
|
338
|
+
})();
|
|
339
|
+
// The stored tail settles only once BOTH this submission and its predecessor are
|
|
340
|
+
// done. Identical to `current` on the normal path (current already awaited the
|
|
341
|
+
// predecessor); it matters on the degraded path, where the predecessor is still
|
|
342
|
+
// running — a third submission must not be released by our early finish.
|
|
343
|
+
const tail = bounded
|
|
344
|
+
? Promise.all([previousSettled, current.then(() => undefined, () => undefined)]).then(() => undefined)
|
|
345
|
+
: current.then(() => undefined, () => undefined);
|
|
346
|
+
chains.set(sessionId, tail);
|
|
347
|
+
// Release our operator claim as soon as OUR write is done — a later operator may then be
|
|
348
|
+
// bypass-eligible again if only deliveries remain ahead of it.
|
|
349
|
+
if (kind === 'operator') {
|
|
350
|
+
void current.then(() => undefined, () => undefined).then(() => {
|
|
351
|
+
const remaining = (pendingOperators.get(sessionId) ?? 1) - 1;
|
|
352
|
+
if (remaining > 0)
|
|
353
|
+
pendingOperators.set(sessionId, remaining);
|
|
354
|
+
else
|
|
355
|
+
pendingOperators.delete(sessionId);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
105
358
|
// Drop the entry once this is the last submission in flight, so the map does
|
|
106
359
|
// not accumulate one promise per session for the life of the process.
|
|
107
360
|
//
|
|
108
|
-
// The
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
void
|
|
112
|
-
.
|
|
113
|
-
.then(() => {
|
|
114
|
-
if (chains.get(sessionId) === current)
|
|
361
|
+
// The tail already swallows both outcomes, so this bookkeeping branch can never
|
|
362
|
+
// raise an unhandled rejection for a failed write — the rejection surfaces only
|
|
363
|
+
// through the returned `current`.
|
|
364
|
+
void tail.then(() => {
|
|
365
|
+
if (chains.get(sessionId) === tail)
|
|
115
366
|
chains.delete(sessionId);
|
|
367
|
+
// The session may now be quiescent — try to drop its degraded-write count too. Refused
|
|
368
|
+
// while a watch is open; that watch's release re-tries, so the second one wins.
|
|
369
|
+
evictBypassCountIfIdle(sessionId);
|
|
116
370
|
});
|
|
117
371
|
return current;
|
|
118
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* {@link submitToSession} for a writer that would rather skip its turn than wait
|
|
375
|
+
* for one — the gated mailbox delivery path (Issue #1365).
|
|
376
|
+
*
|
|
377
|
+
* Resolves `false` **without writing anything** when another submission already
|
|
378
|
+
* holds the session. That is the right trade for a gated delivery and the wrong one
|
|
379
|
+
* for an operator action, which is why the two differ:
|
|
380
|
+
*
|
|
381
|
+
* - A contended terminal means some other writer is mid-submission, so the
|
|
382
|
+
* delivery's in-lock precheck would have aborted it anyway (the screen has
|
|
383
|
+
* moved, or is about to). Nothing is lost by declining now: the row stays held
|
|
384
|
+
* and the backstop re-delivers within one tick.
|
|
385
|
+
* - Blocking instead would be a genuine liveness regression, because
|
|
386
|
+
* `MailboxDrainer.tick` walks agents SEQUENTIALLY — one agent parked on a
|
|
387
|
+
* terminal lock would stall every other agent's delivery, plus that tick's
|
|
388
|
+
* escalation, owner-notice and prune passes.
|
|
389
|
+
*
|
|
390
|
+
* @returns `true` when the write ran (and completed), `false` when the session was
|
|
391
|
+
* contended and nothing was written.
|
|
392
|
+
*/
|
|
393
|
+
export async function trySubmitToSession(sessionId, write, clock = realClock) {
|
|
394
|
+
if (isSubmissionInFlight(sessionId))
|
|
395
|
+
return false;
|
|
396
|
+
await submitToSession(sessionId, write, clock, { kind: 'delivery-write' });
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
119
399
|
/** Number of sessions with a submission in flight. Test/observability only. */
|
|
120
400
|
export function pendingSubmissionSessions() {
|
|
121
401
|
return chains.size;
|
|
122
402
|
}
|
|
123
|
-
/** Drop all chains. Test-only; a live Tower should let them drain. */
|
|
403
|
+
/** Drop all chains and degraded-write counters. Test-only; a live Tower should let them drain. */
|
|
124
404
|
export function resetSubmissionChains() {
|
|
125
405
|
chains.clear();
|
|
406
|
+
unserializedWrites.clear();
|
|
407
|
+
pendingOperators.clear();
|
|
408
|
+
bypassWatchers.clear();
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* How many sessions still carry a degraded-write count. Test/observability only — the
|
|
412
|
+
* assertion that {@link unserializedWrites} self-evicts rather than growing for the life of
|
|
413
|
+
* a Tower.
|
|
414
|
+
*/
|
|
415
|
+
export function bypassCountedSessions() {
|
|
416
|
+
return unserializedWrites.size;
|
|
126
417
|
}
|
|
127
418
|
//# sourceMappingURL=session-submit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/session-submit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/session-submit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tower-cron.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-cron.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tower-cron.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-cron.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ1E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,sBAAsB,EAAE,MAAM,MAAM,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC3E;AAeD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAejD;AAED,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED,wBAAgB,WAAW,IAAI,QAAQ,EAAE,CAOxC;AAMD,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,EAAE,CAwDpE;AAMD,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzE;AAMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B1C;AA0BD,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD7F;AAmCD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,OAAO,CAI1F"}
|
|
@@ -10,6 +10,7 @@ import { createHash } from 'node:crypto';
|
|
|
10
10
|
import * as yaml from 'js-yaml';
|
|
11
11
|
import { parseCronExpression, isDue } from './tower-cron-parser.js';
|
|
12
12
|
import { CRON_SENDER } from './cron-delivery.js';
|
|
13
|
+
import { formatVerdict } from '@cluesmith/codev-sdk/hold-verdict';
|
|
13
14
|
import { getGlobalDb } from '../db/index.js';
|
|
14
15
|
// ============================================================================
|
|
15
16
|
// Module state
|
|
@@ -271,10 +272,10 @@ async function deliverMessage(task, message) {
|
|
|
271
272
|
deps.log('INFO', `Cron message delivered: ${CRON_SENDER} → ${task.target} (task '${task.name}')`);
|
|
272
273
|
break;
|
|
273
274
|
case 'superseded':
|
|
274
|
-
deps.log('INFO', `Cron message held (${result.reason
|
|
275
|
+
deps.log('INFO', `Cron message held (${formatVerdict(result.reason, result.detail, 'busy')}), superseding the prior held run: ${CRON_SENDER} → ${task.target} (task '${task.name}')`);
|
|
275
276
|
break;
|
|
276
277
|
case 'held':
|
|
277
|
-
deps.log('INFO', `Cron message held (${result.reason
|
|
278
|
+
deps.log('INFO', `Cron message held (${formatVerdict(result.reason, result.detail, 'busy')}): ${CRON_SENDER} → ${task.target} (task '${task.name}')`);
|
|
278
279
|
break;
|
|
279
280
|
case 'unresolved':
|
|
280
281
|
// deliverCronMessage already logged a WARN naming the unresolved target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tower-cron.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-cron.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tower-cron.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tower-instances.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/tower-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import { loadConfig } from '../../lib/config.js';
|
|
|
16
16
|
const execAsync = promisify(exec);
|
|
17
17
|
import { getGlobalDb } from '../db/index.js';
|
|
18
18
|
import { defaultSessionOptions } from '../../terminal/index.js';
|
|
19
|
-
import { getWorkspaceName, isTempDirectory, resolveArchitectLaunch, siblingRegistrationIsLive, buildArchitectCrashLoopFallback, buildArchitectFreshLaunch, } from './tower-utils.js';
|
|
19
|
+
import { getWorkspaceName, isTempDirectory, resolveArchitectLaunch, siblingRegistrationIsLive, buildArchitectCrashLoopFallback, buildArchitectFreshLaunch, persistableCommand, logSessionIdentity, } from './tower-utils.js';
|
|
20
20
|
import { reconcileArchitectSessionHolder, findOwnArchitectShellpers, reapShellpers, } from './architect-session-holder.js';
|
|
21
21
|
import { autoNumberArchitectName, validateArchitectName, DEFAULT_ARCHITECT_NAME, } from '../utils/architect-name.js';
|
|
22
22
|
import { RetiredHarnessError } from '../utils/harness.js';
|
|
@@ -546,7 +546,12 @@ export async function launchInstance(workspacePath) {
|
|
|
546
546
|
}
|
|
547
547
|
// Spec 755: default architect is named 'main'; role_id stores the name.
|
|
548
548
|
entry.architects.set('main', session.id);
|
|
549
|
-
|
|
549
|
+
// PIR #1475: persist what the session reports. A fresh spawn is the
|
|
550
|
+
// no-op case — the shellper's WELCOME echoes the `cmd` we just gave
|
|
551
|
+
// it — but the accessor keeps one rule at every persist site: the row
|
|
552
|
+
// records what is RUNNING, not what was requested.
|
|
553
|
+
logSessionIdentity(_deps.log, 'architect-launch', session.id, ptySession, cmd);
|
|
554
|
+
_deps.saveTerminalSession(session.id, resolvedPath, 'architect', 'main', shellperInfo.pid, shellperInfo.socketPath, shellperInfo.pid, shellperInfo.startTime, null, workspacePath, persistableCommand(ptySession) ?? cmd);
|
|
550
555
|
// Spec 755: persist to local state.db (architect table) so afx
|
|
551
556
|
// status / stop see the architect via loadState's scalar shim.
|
|
552
557
|
// Bugfix #826: scoped by workspace_path.
|
|
@@ -1032,7 +1037,10 @@ export async function addArchitect(workspacePath, requestedName) {
|
|
|
1032
1037
|
ptySession.restartOnExit = true;
|
|
1033
1038
|
}
|
|
1034
1039
|
entry.architects.set(name, session.id);
|
|
1035
|
-
|
|
1040
|
+
// PIR #1475: hydrated identity wins; a fresh spawn echoes `cmd` (see the
|
|
1041
|
+
// main-architect launch above).
|
|
1042
|
+
logSessionIdentity(_deps.log, 'architect-launch-sibling', session.id, ptySession, cmd);
|
|
1043
|
+
_deps.saveTerminalSession(session.id, resolvedPath, 'architect', name, shellperInfo.pid, shellperInfo.socketPath, shellperInfo.pid, shellperInfo.startTime, null, workspacePath, persistableCommand(ptySession) ?? cmd);
|
|
1036
1044
|
// Spec 755: persist to local state.db so the architect appears in
|
|
1037
1045
|
// getArchitects() and is included in legacy stop.ts cleanup.
|
|
1038
1046
|
// Bugfix #826: scoped by workspace_path.
|