@agentdeck/bridge 1.2.0 → 1.2.1
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/dist/apme/classifier.d.ts.map +1 -1
- package/dist/apme/classifier.js +18 -10
- package/dist/apme/classifier.js.map +1 -1
- package/dist/apme/claude-transcript-reader.d.ts +36 -0
- package/dist/apme/claude-transcript-reader.d.ts.map +1 -1
- package/dist/apme/claude-transcript-reader.js +78 -2
- package/dist/apme/claude-transcript-reader.js.map +1 -1
- package/dist/apme/collector.d.ts +109 -3
- package/dist/apme/collector.d.ts.map +1 -1
- package/dist/apme/collector.js +408 -44
- package/dist/apme/collector.js.map +1 -1
- package/dist/apme/dashboard-html.d.ts.map +1 -1
- package/dist/apme/dashboard-html.js +4 -2
- package/dist/apme/dashboard-html.js.map +1 -1
- package/dist/apme/graph.d.ts +1 -1
- package/dist/apme/graph.d.ts.map +1 -1
- package/dist/apme/graph.js +51 -1
- package/dist/apme/graph.js.map +1 -1
- package/dist/apme/http.d.ts.map +1 -1
- package/dist/apme/http.js +4 -0
- package/dist/apme/http.js.map +1 -1
- package/dist/apme/index.d.ts +4 -0
- package/dist/apme/index.d.ts.map +1 -1
- package/dist/apme/index.js +13 -1
- package/dist/apme/index.js.map +1 -1
- package/dist/apme/runner.d.ts +90 -0
- package/dist/apme/runner.d.ts.map +1 -1
- package/dist/apme/runner.js +524 -48
- package/dist/apme/runner.js.map +1 -1
- package/dist/apme/sample-to-timeline.d.ts.map +1 -1
- package/dist/apme/sample-to-timeline.js +5 -0
- package/dist/apme/sample-to-timeline.js.map +1 -1
- package/dist/apme/settings.d.ts +8 -0
- package/dist/apme/settings.d.ts.map +1 -1
- package/dist/apme/settings.js +4 -0
- package/dist/apme/settings.js.map +1 -1
- package/dist/apme/store.d.ts +77 -8
- package/dist/apme/store.d.ts.map +1 -1
- package/dist/apme/store.js +189 -17
- package/dist/apme/store.js.map +1 -1
- package/dist/apme/task-gradeability.d.ts +82 -0
- package/dist/apme/task-gradeability.d.ts.map +1 -0
- package/dist/apme/task-gradeability.js +126 -0
- package/dist/apme/task-gradeability.js.map +1 -0
- package/dist/awaiting-overlay.d.ts +13 -26
- package/dist/awaiting-overlay.d.ts.map +1 -1
- package/dist/awaiting-overlay.js +7 -40
- package/dist/awaiting-overlay.js.map +1 -1
- package/dist/claude-permission-rules.d.ts +20 -32
- package/dist/claude-permission-rules.d.ts.map +1 -1
- package/dist/claude-permission-rules.js +19 -102
- package/dist/claude-permission-rules.js.map +1 -1
- package/dist/claude-usage-recovery.d.ts +54 -0
- package/dist/claude-usage-recovery.d.ts.map +1 -0
- package/dist/claude-usage-recovery.js +200 -0
- package/dist/claude-usage-recovery.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +28 -8
- package/dist/cli.js.map +1 -1
- package/dist/codex-rollout-response.d.ts +43 -0
- package/dist/codex-rollout-response.d.ts.map +1 -1
- package/dist/codex-rollout-response.js +67 -0
- package/dist/codex-rollout-response.js.map +1 -1
- package/dist/coordination-evidence.d.ts +150 -0
- package/dist/coordination-evidence.d.ts.map +1 -0
- package/dist/coordination-evidence.js +455 -0
- package/dist/coordination-evidence.js.map +1 -0
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +329 -34
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/deferred-reply-read.d.ts +24 -0
- package/dist/deferred-reply-read.d.ts.map +1 -0
- package/dist/deferred-reply-read.js +42 -0
- package/dist/deferred-reply-read.js.map +1 -0
- package/dist/esp32-serial.d.ts +11 -0
- package/dist/esp32-serial.d.ts.map +1 -1
- package/dist/esp32-serial.js +57 -2
- package/dist/esp32-serial.js.map +1 -1
- package/dist/hook-codex-sessions.d.ts +9 -0
- package/dist/hook-codex-sessions.d.ts.map +1 -1
- package/dist/hook-codex-sessions.js +35 -2
- package/dist/hook-codex-sessions.js.map +1 -1
- package/dist/hook-opencode-sessions.d.ts +62 -0
- package/dist/hook-opencode-sessions.d.ts.map +1 -0
- package/dist/hook-opencode-sessions.js +180 -0
- package/dist/hook-opencode-sessions.js.map +1 -0
- package/dist/hook-response-source.d.ts +40 -0
- package/dist/hook-response-source.d.ts.map +1 -0
- package/dist/hook-response-source.js +31 -0
- package/dist/hook-response-source.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/native-dependency-diagnostics.d.ts +29 -0
- package/dist/native-dependency-diagnostics.d.ts.map +1 -0
- package/dist/native-dependency-diagnostics.js +95 -0
- package/dist/native-dependency-diagnostics.js.map +1 -0
- package/dist/observed-steering.d.ts +4 -4
- package/dist/observed-steering.d.ts.map +1 -1
- package/dist/observed-steering.js +28 -32
- package/dist/observed-steering.js.map +1 -1
- package/dist/openclaw-gateway-stability.d.ts +94 -0
- package/dist/openclaw-gateway-stability.d.ts.map +1 -0
- package/dist/openclaw-gateway-stability.js +176 -0
- package/dist/openclaw-gateway-stability.js.map +1 -0
- package/dist/passive-observer.d.ts +5 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +6 -0
- package/dist/passive-observer.js.map +1 -1
- package/dist/review-runner.js +1 -1
- package/dist/subagent-timeline.d.ts +27 -0
- package/dist/subagent-timeline.d.ts.map +1 -1
- package/dist/subagent-timeline.js +52 -5
- package/dist/subagent-timeline.js.map +1 -1
- package/dist/usage-api.d.ts +3 -0
- package/dist/usage-api.d.ts.map +1 -1
- package/dist/usage-api.js +101 -36
- package/dist/usage-api.js.map +1 -1
- package/dist/usage-event.d.ts.map +1 -1
- package/dist/usage-event.js +2 -1
- package/dist/usage-event.js.map +1 -1
- package/package.json +5 -5
|
@@ -50,6 +50,49 @@ export interface CodexTurnOutcome {
|
|
|
50
50
|
* that never produced any.
|
|
51
51
|
*/
|
|
52
52
|
export declare function codexTurnOutcomeFromRollout(sessionId: string, sessionsRoot?: string): CodexTurnOutcome;
|
|
53
|
+
/**
|
|
54
|
+
* Same read, from a path the caller already holds. Codex's own hooks carry
|
|
55
|
+
* `transcript_path`, and for Codex that path IS the rollout — so the daemon
|
|
56
|
+
* need not locate it by id. (It used to hand that path to the CLAUDE
|
|
57
|
+
* transcript reader instead, which returned '' for every Codex turn: 3 of
|
|
58
|
+
* 128 codex stop-turns in a week held a response, measured 2026-09-03.)
|
|
59
|
+
*/
|
|
60
|
+
export declare function codexTurnOutcomeFromRolloutPath(path: string): CodexTurnOutcome;
|
|
61
|
+
/** What the rollout proves about a turn that opened at or after `sinceMs`. */
|
|
62
|
+
export interface CodexTurnCompletion {
|
|
63
|
+
/** Rollout record timestamp of the `task_complete`, epoch ms. */
|
|
64
|
+
completedAt: number;
|
|
65
|
+
/** `last_agent_message` of that record, empty when Codex wrote none. */
|
|
66
|
+
text: string;
|
|
67
|
+
/** The failure Codex wrote on that record, when the turn ended in one
|
|
68
|
+
* (an API 404, a usage limit). Such a turn fires no Stop hook at all —
|
|
69
|
+
* measured 2026-09-03, six consecutive turns against a dead endpoint all
|
|
70
|
+
* reached the next prompt open and read as dropped hooks. */
|
|
71
|
+
error?: string;
|
|
72
|
+
/** Codex's own classification of that failure, e.g. `usage_limit_exceeded`. */
|
|
73
|
+
errorKind?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Did the turn that started at or after `sinceMs` COMPLETE, per the rollout?
|
|
77
|
+
*
|
|
78
|
+
* The rollout is Codex's own record of the turn, written by the process that
|
|
79
|
+
* ran it, so it can answer a question no hook can: whether a turn whose Stop
|
|
80
|
+
* never reached this daemon nevertheless finished. The daemon needs that
|
|
81
|
+
* answer exactly once — at startup, for a turn it finds still open in the
|
|
82
|
+
* store. Measured 2026-09-03: of 52 turns the reaper had closed under an open
|
|
83
|
+
* state, 45 straddled a daemon restart, and the rollouts behind them held a
|
|
84
|
+
* `task_complete` for every one; the Stop had been posted to a port nobody
|
|
85
|
+
* was listening on.
|
|
86
|
+
*
|
|
87
|
+
* Reads the tail newest-first and stops at the first record older than
|
|
88
|
+
* `sinceMs` (records carry their own ISO `timestamp`), so a completion
|
|
89
|
+
* belonging to an EARLIER turn can never be returned for this one — the same
|
|
90
|
+
* discipline as the Claude transcript probe. A `task_started` newer than the
|
|
91
|
+
* completion means a further turn opened after it; the completion still
|
|
92
|
+
* stands for the turn asked about. Never throws; null means "no evidence",
|
|
93
|
+
* which callers must not resolve as a verdict.
|
|
94
|
+
*/
|
|
95
|
+
export declare function codexTurnCompletionSince(sessionId: string, sinceMs: number, sessionsRoot?: string): CodexTurnCompletion | null;
|
|
53
96
|
/**
|
|
54
97
|
* Back-compat shim: the turn's reply text only.
|
|
55
98
|
* Prefer `codexTurnOutcomeFromRollout`, which also reports failures.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-rollout-response.d.ts","sourceRoot":"","sources":["../src/codex-rollout-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0BH,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB1F;AAuBD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"codex-rollout-response.d.ts","sourceRoot":"","sources":["../src/codex-rollout-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0BH,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB1F;AAuBD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAItG;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAmD9E;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;;;kEAG8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA6B9H;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjG"}
|
|
@@ -120,6 +120,16 @@ export function codexTurnOutcomeFromRollout(sessionId, sessionsRoot) {
|
|
|
120
120
|
const path = locateCodexRollout(sessionId, sessionsRoot);
|
|
121
121
|
if (!path)
|
|
122
122
|
return { text: '' };
|
|
123
|
+
return codexTurnOutcomeFromRolloutPath(path);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Same read, from a path the caller already holds. Codex's own hooks carry
|
|
127
|
+
* `transcript_path`, and for Codex that path IS the rollout — so the daemon
|
|
128
|
+
* need not locate it by id. (It used to hand that path to the CLAUDE
|
|
129
|
+
* transcript reader instead, which returned '' for every Codex turn: 3 of
|
|
130
|
+
* 128 codex stop-turns in a week held a response, measured 2026-09-03.)
|
|
131
|
+
*/
|
|
132
|
+
export function codexTurnOutcomeFromRolloutPath(path) {
|
|
123
133
|
const lines = readTail(path, TAIL_BYTES).split('\n');
|
|
124
134
|
let text = '';
|
|
125
135
|
let error;
|
|
@@ -173,6 +183,63 @@ export function codexTurnOutcomeFromRollout(sessionId, sessionsRoot) {
|
|
|
173
183
|
debug('codex-rollout', `no agent_message or error in tail of ${path}`);
|
|
174
184
|
return { text, error, errorKind };
|
|
175
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Did the turn that started at or after `sinceMs` COMPLETE, per the rollout?
|
|
188
|
+
*
|
|
189
|
+
* The rollout is Codex's own record of the turn, written by the process that
|
|
190
|
+
* ran it, so it can answer a question no hook can: whether a turn whose Stop
|
|
191
|
+
* never reached this daemon nevertheless finished. The daemon needs that
|
|
192
|
+
* answer exactly once — at startup, for a turn it finds still open in the
|
|
193
|
+
* store. Measured 2026-09-03: of 52 turns the reaper had closed under an open
|
|
194
|
+
* state, 45 straddled a daemon restart, and the rollouts behind them held a
|
|
195
|
+
* `task_complete` for every one; the Stop had been posted to a port nobody
|
|
196
|
+
* was listening on.
|
|
197
|
+
*
|
|
198
|
+
* Reads the tail newest-first and stops at the first record older than
|
|
199
|
+
* `sinceMs` (records carry their own ISO `timestamp`), so a completion
|
|
200
|
+
* belonging to an EARLIER turn can never be returned for this one — the same
|
|
201
|
+
* discipline as the Claude transcript probe. A `task_started` newer than the
|
|
202
|
+
* completion means a further turn opened after it; the completion still
|
|
203
|
+
* stands for the turn asked about. Never throws; null means "no evidence",
|
|
204
|
+
* which callers must not resolve as a verdict.
|
|
205
|
+
*/
|
|
206
|
+
export function codexTurnCompletionSince(sessionId, sinceMs, sessionsRoot) {
|
|
207
|
+
const path = locateCodexRollout(sessionId, sessionsRoot);
|
|
208
|
+
if (!path)
|
|
209
|
+
return null;
|
|
210
|
+
const lines = readTail(path, TAIL_BYTES).split('\n');
|
|
211
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
212
|
+
const line = lines[i].trim();
|
|
213
|
+
if (!line)
|
|
214
|
+
continue;
|
|
215
|
+
let record;
|
|
216
|
+
try {
|
|
217
|
+
record = JSON.parse(line);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
continue; // torn first line of the tail window
|
|
221
|
+
}
|
|
222
|
+
const ts = typeof record.timestamp === 'string' ? Date.parse(record.timestamp) : NaN;
|
|
223
|
+
// A record older than the turn: everything above it is older still.
|
|
224
|
+
if (Number.isFinite(ts) && ts < sinceMs)
|
|
225
|
+
return null;
|
|
226
|
+
if (record.type !== 'event_msg')
|
|
227
|
+
continue;
|
|
228
|
+
const payload = record.payload;
|
|
229
|
+
if (!payload || typeof payload !== 'object' || payload.type !== 'task_complete')
|
|
230
|
+
continue;
|
|
231
|
+
if (!Number.isFinite(ts))
|
|
232
|
+
continue; // a completion with no time cannot be placed
|
|
233
|
+
const text = typeof payload.last_agent_message === 'string' ? payload.last_agent_message.trim() : '';
|
|
234
|
+
const failure = payload.error;
|
|
235
|
+
const error = failure && typeof failure === 'object' ? cleanErrorText(failure.message) : undefined;
|
|
236
|
+
const errorKind = failure && typeof failure === 'object' && typeof failure.codex_error_info === 'string'
|
|
237
|
+
? failure.codex_error_info
|
|
238
|
+
: undefined;
|
|
239
|
+
return { completedAt: ts, text, ...(error ? { error } : {}), ...(errorKind ? { errorKind } : {}) };
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
176
243
|
/**
|
|
177
244
|
* Back-compat shim: the turn's reply text only.
|
|
178
245
|
* Prefer `codexTurnOutcomeFromRollout`, which also reports failures.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-rollout-response.js","sourceRoot":"","sources":["../src/codex-rollout-response.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-rollout-response.js","sourceRoot":"","sources":["../src/codex-rollout-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-session coordination evidence.
|
|
3
|
+
*
|
|
4
|
+
* A harness divides work in more ways than `SubagentStart`. Measured on
|
|
5
|
+
* 2026-09-06 while a user asked why their epoch-of-tech creatures "looked
|
|
6
|
+
* idle": the parent had closed its turn ("waiting for the matrix"), six
|
|
7
|
+
* `claude -p --model glm-5.3` workers it launched from a background Bash had
|
|
8
|
+
* each become a separate observed session with no link back, twelve
|
|
9
|
+
* `SendMessage` calls had crossed between it and a sibling, and a 22-minute
|
|
10
|
+
* `run_bot_matrix.sh` it would be re-invoked by was still running under
|
|
11
|
+
* launchd with the parent's scratchpad path in its argv. Every surface showed
|
|
12
|
+
* `idle`, and the collaboration lens drew one Explore branch.
|
|
13
|
+
*
|
|
14
|
+
* Each of those facts is OBSERVABLE without guessing, and this module turns
|
|
15
|
+
* them into `RelationEvent`s plus a per-session `CoordinationSummary`:
|
|
16
|
+
*
|
|
17
|
+
* - `spawned` — a peer session whose process is a descendant of this
|
|
18
|
+
* session's process (`process_ancestry`), or the intent to spawn one
|
|
19
|
+
* seen on a Bash tool call (`bash_claude_p`) before the child exists.
|
|
20
|
+
* - `messaged` — the sender's `SendMessage` tool input (`send_message_tool`)
|
|
21
|
+
* and the receiver's `<cross-session-message from="uds:…/<pid>.sock"
|
|
22
|
+
* from-name="…">` envelope (`cross_session_message`). The sender pid in
|
|
23
|
+
* the envelope resolves to a session through the process table.
|
|
24
|
+
* - `waiting_on` — a process (not itself an agent session) whose argv names
|
|
25
|
+
* this session's scratchpad directory (`background_process`), i.e. a
|
|
26
|
+
* `run_in_background` job the harness will re-invoke the session for.
|
|
27
|
+
*
|
|
28
|
+
* What it deliberately does not do: link two sessions because they share a
|
|
29
|
+
* project, or read a "worker" out of prose. A relation whose peer cannot be
|
|
30
|
+
* resolved carries only the name/pid the evidence itself had.
|
|
31
|
+
*/
|
|
32
|
+
export interface RelationObservation {
|
|
33
|
+
sessionId: string;
|
|
34
|
+
relation: 'spawned' | 'messaged' | 'waiting_on';
|
|
35
|
+
direction: 'in' | 'out';
|
|
36
|
+
phase: 'open' | 'closed';
|
|
37
|
+
peerSessionId?: string | null;
|
|
38
|
+
peerName?: string | null;
|
|
39
|
+
evidence: string;
|
|
40
|
+
detail?: string | null;
|
|
41
|
+
ts: number;
|
|
42
|
+
key: string;
|
|
43
|
+
}
|
|
44
|
+
export interface CoordinationSummaryLike {
|
|
45
|
+
backgroundJobs: number;
|
|
46
|
+
spawnedActive: number;
|
|
47
|
+
spawnedCompleted: number;
|
|
48
|
+
messagesIn: number;
|
|
49
|
+
messagesOut: number;
|
|
50
|
+
lastPeerName?: string;
|
|
51
|
+
lastRelationAt?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface ProcessRow {
|
|
54
|
+
pid: number;
|
|
55
|
+
ppid: number;
|
|
56
|
+
command: string;
|
|
57
|
+
}
|
|
58
|
+
export interface ObservedPeer {
|
|
59
|
+
/** Bare session id (uuid), never the `observed:<agent>:` form. */
|
|
60
|
+
sessionId: string;
|
|
61
|
+
pid: number;
|
|
62
|
+
}
|
|
63
|
+
/** What a receiver sees at the top of a cross-session prompt. Captured live
|
|
64
|
+
* from Claude Code 2.1.261 — the attribute order and the `uds:` socket path
|
|
65
|
+
* (whose basename is the SENDER's pid) are the real shape. */
|
|
66
|
+
export interface CrossSessionEnvelope {
|
|
67
|
+
fromPid: number | null;
|
|
68
|
+
fromName: string | null;
|
|
69
|
+
fromMode: string | null;
|
|
70
|
+
/** The message body after the harness preamble, capped. */
|
|
71
|
+
body: string;
|
|
72
|
+
}
|
|
73
|
+
/** Parse a received prompt for the cross-session envelope; null when the
|
|
74
|
+
* prompt is an ordinary user turn. */
|
|
75
|
+
export declare function parseCrossSessionEnvelope(prompt: string): CrossSessionEnvelope | null;
|
|
76
|
+
export interface SendMessageTarget {
|
|
77
|
+
peerName: string | null;
|
|
78
|
+
peerPid: number | null;
|
|
79
|
+
summary: string | null;
|
|
80
|
+
}
|
|
81
|
+
/** The `to` of a Claude Code `SendMessage` tool call: either a session name
|
|
82
|
+
* or a `uds:/…/<pid>.sock` address. */
|
|
83
|
+
export declare function parseSendMessageInput(input: unknown): SendMessageTarget | null;
|
|
84
|
+
/** A Bash command that launches a headless agent worker. Only the spellings
|
|
85
|
+
* we have measured: `claude -p` / `claude --print`. */
|
|
86
|
+
export declare function isAgentSpawnCommand(command: unknown): boolean;
|
|
87
|
+
/** The interactive/headless agent binaries a session runs as. Used to stop
|
|
88
|
+
* the hook-pid walk and to keep an agent's own descendants out of the
|
|
89
|
+
* background-job set. */
|
|
90
|
+
export declare function isAgentProcessCommand(command: string): boolean;
|
|
91
|
+
/** Scratchpad directory Claude Code hands a session (the `SP=` every
|
|
92
|
+
* background job in the measured transcript inherited). The session id is
|
|
93
|
+
* the last path segment before `/scratchpad`. */
|
|
94
|
+
export declare function commandNamesSession(command: string, sessionId: string): boolean;
|
|
95
|
+
export declare function commandLabel(command: string): string;
|
|
96
|
+
/** Walk the parent chain from `pid` (exclusive) up to `maxDepth` levels and
|
|
97
|
+
* return the first ancestor that is an observed peer session. */
|
|
98
|
+
export declare function findAncestorSession(processes: ProcessRow[], pid: number, peers: ObservedPeer[], maxDepth?: number): ObservedPeer | null;
|
|
99
|
+
/**
|
|
100
|
+
* Per-session reducer. Two inputs — hook facts (`noteMessageOut`,
|
|
101
|
+
* `noteMessageIn`, `noteToolCall`) and the periodic process table
|
|
102
|
+
* (`observe`) — and two outputs: `RelationObservation`s to persist on the
|
|
103
|
+
* session's APME task, and `summary()` for the `sessions_list` wire. The
|
|
104
|
+
* summary is kept here rather than derived from the rows it emits, for the
|
|
105
|
+
* same reason the subagent census is (the rows are lossy on purpose).
|
|
106
|
+
*/
|
|
107
|
+
export declare class CoordinationTracker {
|
|
108
|
+
private readonly now;
|
|
109
|
+
private readonly sessions;
|
|
110
|
+
/** Session names learned from envelopes: name → sender session id. */
|
|
111
|
+
private readonly nameToSession;
|
|
112
|
+
private readonly sessionToName;
|
|
113
|
+
/** Latest pid → session map from the observer, for uds resolution. */
|
|
114
|
+
private pidToSession;
|
|
115
|
+
/** Session → agent pid learned from the hook header (`X-AgentDeck-Pid`),
|
|
116
|
+
* the path a sandboxed daemon has no file-based alternative to. */
|
|
117
|
+
private readonly hookPids;
|
|
118
|
+
constructor(now?: () => number);
|
|
119
|
+
private entry;
|
|
120
|
+
private touch;
|
|
121
|
+
/** A hook arrived with the posting shell's parent pid. The shell's parent
|
|
122
|
+
* is normally the agent process itself; if a wrapper sits in between, walk
|
|
123
|
+
* up to the nearest agent process so the registered pid is the one whose
|
|
124
|
+
* children are the session's workers. */
|
|
125
|
+
registerPid(sessionId: string, pid: number, processes?: ProcessRow[]): void;
|
|
126
|
+
/** Observer peers plus hook-registered pids for sessions the observer did
|
|
127
|
+
* not resolve (a session whose `sessions/<pid>.json` is unreadable, or the
|
|
128
|
+
* whole roster on a daemon with no file access). The observer's pid wins
|
|
129
|
+
* when both exist. */
|
|
130
|
+
mergePeers(observed: ObservedPeer[]): ObservedPeer[];
|
|
131
|
+
/** The receiver's side of a message: the prompt carried the envelope. */
|
|
132
|
+
noteMessageIn(sessionId: string, prompt: string): RelationObservation | null;
|
|
133
|
+
/** A tool call the session made: SendMessage → `messaged` out; a Bash that
|
|
134
|
+
* launches `claude -p` → a `spawned` intent (open, peer unknown yet). */
|
|
135
|
+
noteToolCall(sessionId: string, toolName: unknown, toolInput: unknown): RelationObservation | null;
|
|
136
|
+
/**
|
|
137
|
+
* Reconcile against the process table. `peers` are the observed agent
|
|
138
|
+
* sessions with their pids (bare ids). Emits: `spawned` open on the parent
|
|
139
|
+
* when a peer's ancestry reaches another peer, `spawned` closed when such a
|
|
140
|
+
* child's process is gone, `waiting_on` open/closed for background jobs.
|
|
141
|
+
*/
|
|
142
|
+
observe(processes: ProcessRow[], peers: ObservedPeer[]): RelationObservation[];
|
|
143
|
+
/** The session ended: its jobs and children are no longer its concern. */
|
|
144
|
+
forget(sessionId: string): void;
|
|
145
|
+
/** `null` when the session has never had a relation — the caller omits the
|
|
146
|
+
* wire field; once it has, zeros are emitted explicitly. */
|
|
147
|
+
summary(sessionId: string): CoordinationSummaryLike | null;
|
|
148
|
+
summaries(): Map<string, CoordinationSummaryLike>;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=coordination-evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordination-evidence.d.ts","sourceRoot":"","sources":["../src/coordination-evidence.ts"],"names":[],"mappings":"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"}
|