@comput/pi-intercom 0.5.1 → 0.6.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.
Files changed (47) hide show
  1. package/README.md +51 -10
  2. package/dist/config.d.ts +13 -1
  3. package/dist/config.js +57 -5
  4. package/dist/config.js.map +1 -1
  5. package/dist/handoff.d.ts +87 -0
  6. package/dist/handoff.js +327 -0
  7. package/dist/handoff.js.map +1 -0
  8. package/dist/index.js +76 -15
  9. package/dist/index.js.map +1 -1
  10. package/dist/monitor-view.d.ts +1 -1
  11. package/dist/monitor-view.js +49 -3
  12. package/dist/monitor-view.js.map +1 -1
  13. package/dist/observability.d.ts +1 -1
  14. package/dist/observability.js +1 -1
  15. package/dist/observability.js.map +1 -1
  16. package/dist/pane-close.d.ts +22 -0
  17. package/dist/pane-close.js +166 -0
  18. package/dist/pane-close.js.map +1 -0
  19. package/dist/runtime.d.ts +9 -2
  20. package/dist/runtime.js +75 -6
  21. package/dist/runtime.js.map +1 -1
  22. package/dist/snapshot.d.ts +9 -0
  23. package/dist/snapshot.js +23 -1
  24. package/dist/snapshot.js.map +1 -1
  25. package/dist/transport.d.ts +2 -1
  26. package/dist/transport.js +4 -1
  27. package/dist/transport.js.map +1 -1
  28. package/dist/version.d.ts +1 -0
  29. package/dist/version.js +15 -0
  30. package/dist/version.js.map +1 -0
  31. package/dist/worker-status.d.ts +1 -1
  32. package/dist/worker-status.js +9 -1
  33. package/dist/worker-status.js.map +1 -1
  34. package/package.json +2 -2
  35. package/references/implementation-blocker.md +1 -1
  36. package/references/observability.md +13 -3
  37. package/src/config.ts +49 -4
  38. package/src/handoff.ts +280 -0
  39. package/src/index.ts +60 -13
  40. package/src/monitor-view.ts +48 -4
  41. package/src/observability.ts +1 -1
  42. package/src/pane-close.ts +138 -0
  43. package/src/runtime.ts +63 -7
  44. package/src/snapshot.ts +22 -1
  45. package/src/transport.ts +4 -2
  46. package/src/version.ts +13 -0
  47. package/src/worker-status.ts +9 -2
@@ -0,0 +1,327 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export const HANDOFF_KINDS = ['close_prepare', 'close_identity', 'close_request', 'handoff_report', 'close_ready', 'close_commit'];
3
+ const states = ['requested', 'awaiting_handoff', 'awaiting_settlement', 'ready', 'closing', 'closed', 'failed', 'timed_out', 'interrupted', 'uncertain'];
4
+ const reasons = ['timeout', 'interrupted', 'delivery_failed', 'identity_failed', 'save_failed', 'worker_changed', 'worker_busy', 'commit_rejected', 'close_unverified', 'close_failed'];
5
+ export const pendingClose = (job) => !!job && ['requested', 'awaiting_handoff', 'awaiting_settlement', 'ready', 'closing'].includes(job.state);
6
+ export const fencedClose = (job) => pendingClose(job) || job?.state === 'uncertain';
7
+ function requireValue(ok) { if (!ok)
8
+ throw new Error('PiIntercom: invalid handoff protocol/state'); }
9
+ const string = (value, max) => typeof value === 'string' && !!value.trim() && value.length <= max && !value.includes('\0');
10
+ const token = (value) => typeof value === 'string' && /^[a-zA-Z0-9-]{1,128}$/.test(value);
11
+ const timestamp = (value) => typeof value === 'string' && value.length <= 32 && Number.isFinite(Date.parse(value));
12
+ export function validateIdentity(value) {
13
+ const v = value;
14
+ requireValue(v && ['workspaceId', 'paneId', 'terminalId', 'sessionId', 'processStart'].every(k => string(v[k], 256)) && string(v.sessionFile, 4096) && Number.isSafeInteger(v.pid) && v.pid > 0);
15
+ }
16
+ export function validateHandoff(value) {
17
+ const v = value;
18
+ requireValue(v && v.version === 1 && token(v.jobId) && string(v.summary, 4000) && timestamp(v.updatedAt));
19
+ requireValue(Object.keys(v).every(k => ['version', 'jobId', 'summary', 'updatedAt'].includes(k)));
20
+ }
21
+ export function validateCloseJob(value) {
22
+ const v = value;
23
+ requireValue(v && token(v.jobId) && states.includes(v.state) && timestamp(v.createdAt) && timestamp(v.updatedAt) && timestamp(v.deadlineAt) && (v.reason === undefined || reasons.includes(v.reason)));
24
+ requireValue(Object.keys(v).every(k => ['jobId', 'state', 'createdAt', 'updatedAt', 'deadlineAt', 'reason'].includes(k)));
25
+ }
26
+ export function validateHandoffPayload(kind, p) {
27
+ requireValue(token(p.jobId));
28
+ const keys = {
29
+ close_prepare: ['jobId', 'deadlineAt'], close_identity: ['jobId', 'instanceId', 'identity'],
30
+ close_request: ['jobId', 'instanceId'], handoff_report: ['jobId', 'instanceId', 'summary'],
31
+ close_ready: ['jobId', 'instanceId', 'readyNonce'], close_commit: ['jobId', 'instanceId', 'readyNonce'],
32
+ };
33
+ requireValue(!!keys[kind] && Object.keys(p).every(k => keys[kind].includes(k)));
34
+ if (kind === 'close_prepare')
35
+ requireValue(timestamp(p.deadlineAt));
36
+ else
37
+ requireValue(token(p.instanceId));
38
+ if (kind === 'close_identity')
39
+ validateIdentity(p.identity);
40
+ if (kind === 'handoff_report')
41
+ requireValue(string(p.summary, 4000));
42
+ if (kind === 'close_ready' || kind === 'close_commit')
43
+ requireValue(token(p.readyNonce));
44
+ }
45
+ /** Extension-owned asynchronous protocol. No host abort, shutdown, automatic retries or guessed pane targets. */
46
+ export class HandoffWorkflow {
47
+ ctx;
48
+ instanceId = randomUUID();
49
+ jobs = new Map();
50
+ worker;
51
+ epoch = 0;
52
+ disposed = false;
53
+ timeout;
54
+ constructor(ctx) {
55
+ this.ctx = ctx;
56
+ this.timeout = Number.isFinite(ctx.timeoutMs) ? Math.max(1, Math.min(120000, ctx.timeoutMs)) : 120000;
57
+ }
58
+ valid() { requireValue(!this.disposed); this.ctx.assertCurrent(); }
59
+ background(work) { setImmediate(() => { if (!this.disposed)
60
+ void work().catch(() => { }); }); }
61
+ dispose() {
62
+ this.disposed = true;
63
+ for (const p of this.jobs.values()) {
64
+ p.ended = true;
65
+ clearTimeout(p.timer);
66
+ }
67
+ this.jobs.clear();
68
+ if (this.worker)
69
+ clearTimeout(this.worker.timer);
70
+ this.worker = undefined;
71
+ }
72
+ async recover() {
73
+ const { me, config } = await this.ctx.state();
74
+ if (!me?.coordinator || !config.agents.some(a => pendingClose(a.closeJob)))
75
+ return;
76
+ await this.ctx.update(c => {
77
+ for (const a of c.agents)
78
+ if (pendingClose(a.closeJob)) {
79
+ a.closeJob = { ...a.closeJob, state: a.closeJob.state === 'closing' ? 'uncertain' : 'interrupted', reason: 'interrupted', updatedAt: new Date().toISOString() };
80
+ }
81
+ });
82
+ }
83
+ assertJob(p) {
84
+ this.valid();
85
+ requireValue(!p.ended && this.jobs.get(p.target.sessionId) === p && Date.now() < Date.parse(p.job.deadlineAt));
86
+ }
87
+ target(c, p) {
88
+ this.assertJob(p);
89
+ const a = c.agents.find(a => a.sessionId === p.target.sessionId && !a.coordinator);
90
+ requireValue(a && a.closeJob?.jobId === p.job.jobId && pendingClose(a.closeJob) && a.port === p.target.port && a.projectDirectory === p.target.projectDirectory);
91
+ return a;
92
+ }
93
+ async transition(p, state, reason) {
94
+ await this.ctx.update(c => {
95
+ const a = this.target(c, p);
96
+ a.closeJob = { ...a.closeJob, state, updatedAt: new Date().toISOString(), ...(reason ? { reason } : {}) };
97
+ p.job = { ...a.closeJob };
98
+ }, () => this.assertJob(p));
99
+ }
100
+ async finish(p, state, reason) {
101
+ if (p.ended)
102
+ return;
103
+ p.ended = true;
104
+ clearTimeout(p.timer);
105
+ // Keep the in-memory fence if persistence fails. Reload recovers durable intent.
106
+ try {
107
+ this.valid();
108
+ await this.ctx.update(c => {
109
+ const a = c.agents.find(a => a.sessionId === p.target.sessionId && !a.coordinator);
110
+ requireValue(a?.closeJob?.jobId === p.job.jobId);
111
+ a.closeJob = { ...a.closeJob, state, updatedAt: new Date().toISOString(), ...(reason ? { reason } : {}) };
112
+ });
113
+ this.jobs.delete(p.target.sessionId);
114
+ }
115
+ catch { /* Failure never authorizes pane closure or replay. */ }
116
+ }
117
+ async request(target) {
118
+ this.valid();
119
+ requireValue(this.ctx.provider);
120
+ const existing = this.jobs.get(target.sessionId);
121
+ if (existing) {
122
+ await existing.initialized;
123
+ return { ...existing.job };
124
+ }
125
+ requireValue(!fencedClose(target.closeJob) && this.jobs.size < 16);
126
+ const now = Date.now();
127
+ const job = { jobId: randomUUID(), state: 'requested', createdAt: new Date(now).toISOString(), updatedAt: new Date(now).toISOString(), deadlineAt: new Date(now + this.timeout).toISOString() };
128
+ const p = { target: { ...target }, job, timer: undefined, processing: false, closing: false, ended: false };
129
+ // Install the fence synchronously, before the first asynchronous config write.
130
+ this.jobs.set(target.sessionId, p);
131
+ try {
132
+ p.initialized = this.ctx.update(c => {
133
+ const a = c.agents.find(a => a.sessionId === target.sessionId && !a.coordinator);
134
+ requireValue(a && !fencedClose(a.closeJob) && a.port === target.port && a.projectDirectory === target.projectDirectory && c.multiplexer === 'herdr');
135
+ a.closeJob = { ...job };
136
+ }, () => this.assertJob(p));
137
+ await p.initialized;
138
+ }
139
+ catch (error) {
140
+ this.jobs.delete(target.sessionId);
141
+ throw error;
142
+ }
143
+ p.timer = setTimeout(() => { void this.finish(p, p.closing ? 'uncertain' : 'timed_out', 'timeout'); }, Math.max(0, Date.parse(job.deadlineAt) - Date.now()));
144
+ this.background(async () => {
145
+ try {
146
+ this.assertJob(p);
147
+ await this.ctx.send(target.sessionId, 'close_prepare', { jobId: job.jobId, deadlineAt: job.deadlineAt });
148
+ }
149
+ catch {
150
+ await this.finish(p, 'failed', 'delivery_failed');
151
+ }
152
+ });
153
+ return { ...job };
154
+ }
155
+ workerStarted() {
156
+ this.epoch++;
157
+ const w = this.worker;
158
+ if (w && (w.saved || w.reporting)) {
159
+ w.invalidated = true;
160
+ w.readyNonce = undefined;
161
+ }
162
+ }
163
+ workerSettled(successfulToolCallIds) {
164
+ const w = this.worker;
165
+ if (!w || !w.saved || w.reporting || w.invalidated || w.readyNonce || w.committed || this.ctx.busy() || w.epoch !== this.epoch || !w.toolCallId || !successfulToolCallIds.has(w.toolCallId))
166
+ return;
167
+ w.readyNonce = randomUUID();
168
+ this.background(async () => {
169
+ this.assertWorker(w);
170
+ requireValue(!this.ctx.busy() && w.epoch === this.epoch && !w.invalidated);
171
+ await this.ctx.send(w.coordinatorId, 'close_ready', { jobId: w.jobId, instanceId: this.instanceId, readyNonce: w.readyNonce });
172
+ });
173
+ }
174
+ assertWorker(w) {
175
+ this.valid();
176
+ requireValue(this.worker === w && Date.now() < w.deadline);
177
+ }
178
+ get workerClosing() { return !!this.worker; }
179
+ isClosing(sessionId) { return this.jobs.has(sessionId); }
180
+ async report(jobId, summary, toolCallId) {
181
+ requireValue(string(summary, 4000) && string(toolCallId, 256));
182
+ const w = this.worker;
183
+ requireValue(w && w.jobId === jobId && w.requested && !w.reporting && !w.saved && !w.invalidated);
184
+ this.assertWorker(w);
185
+ w.reporting = true;
186
+ w.toolCallId = toolCallId;
187
+ const reportEpoch = this.epoch;
188
+ try {
189
+ await this.ctx.send(w.coordinatorId, 'handoff_report', { jobId: w.jobId, instanceId: this.instanceId, summary });
190
+ this.assertWorker(w);
191
+ requireValue(!w.invalidated && this.epoch === reportEpoch);
192
+ w.saved = true;
193
+ w.epoch = reportEpoch;
194
+ return { saved: true, closure: 'awaiting_turn_settlement' };
195
+ }
196
+ finally {
197
+ w.reporting = false;
198
+ }
199
+ }
200
+ async receive(kind, from, payload) {
201
+ validateHandoffPayload(kind, payload);
202
+ const { config, me } = await this.ctx.state();
203
+ this.valid();
204
+ const sender = config.agents.find(a => a.sessionId === from);
205
+ const coordinatorMessage = ['close_prepare', 'close_request', 'close_commit'].includes(kind);
206
+ requireValue(me && sender && (coordinatorMessage ? sender.coordinator && !me.coordinator : me.coordinator && !sender.coordinator));
207
+ if (coordinatorMessage) {
208
+ requireValue(this.ctx.provider && me.closeJob?.jobId === payload.jobId && pendingClose(me.closeJob));
209
+ if (kind === 'close_prepare') {
210
+ requireValue(!this.worker);
211
+ const deadline = Date.parse(payload.deadlineAt);
212
+ requireValue(deadline > Date.now() && deadline <= Date.now() + 120000);
213
+ const w = { jobId: payload.jobId, coordinatorId: from, deadline, requested: false, saved: false, reporting: false, invalidated: false, epoch: this.epoch, committed: false, timer: undefined };
214
+ this.worker = w;
215
+ w.timer = setTimeout(() => { if (this.worker === w)
216
+ this.worker = undefined; }, deadline - Date.now());
217
+ this.background(async () => {
218
+ try {
219
+ const identity = await this.ctx.provider.getIdentity();
220
+ validateIdentity(identity);
221
+ this.assertWorker(w);
222
+ requireValue(identity.sessionId === me.sessionId);
223
+ await this.ctx.send(from, 'close_identity', { jobId: w.jobId, instanceId: this.instanceId, identity });
224
+ }
225
+ catch {
226
+ if (this.worker === w) {
227
+ clearTimeout(w.timer);
228
+ this.worker = undefined;
229
+ }
230
+ }
231
+ });
232
+ return;
233
+ }
234
+ const w = this.worker;
235
+ requireValue(w && w.jobId === payload.jobId && payload.instanceId === this.instanceId && from === w.coordinatorId);
236
+ this.assertWorker(w);
237
+ if (kind === 'close_request') {
238
+ requireValue(!w.requested);
239
+ w.requested = true;
240
+ this.ctx.deliver(`Coordinator requests a handoff for owned-pane closure. Job ID: ${w.jobId}. Stop taking new assignments, summarize completed work, remaining work, validation and important files in intercom_report_handoff({jobId:"${w.jobId}",summary:...}) (public summary, max 4000 characters; no credentials or private reasoning), then finish this turn and wait. Do not exit, shut down, close a pane or start further work. Pane closure is asynchronous and is not proof all child processes terminated.`);
241
+ return;
242
+ }
243
+ requireValue(w.saved && !w.reporting && !w.invalidated && !w.committed && !this.ctx.busy() && w.epoch === this.epoch && w.readyNonce === payload.readyNonce);
244
+ w.committed = true;
245
+ return;
246
+ }
247
+ const p = this.jobs.get(from);
248
+ requireValue(p && p.job.jobId === payload.jobId);
249
+ this.assertJob(p);
250
+ if (kind === 'close_identity') {
251
+ requireValue(!p.identity && !p.processing && p.job.state === 'requested');
252
+ const identity = payload.identity;
253
+ requireValue(identity.sessionId === from);
254
+ p.identity = { ...identity };
255
+ p.instanceId = payload.instanceId;
256
+ p.processing = true;
257
+ this.background(async () => {
258
+ try {
259
+ await this.ctx.provider.inspect(p.identity, from, () => this.assertJob(p));
260
+ this.assertJob(p);
261
+ await this.transition(p, 'awaiting_handoff');
262
+ await this.ctx.send(from, 'close_request', { jobId: p.job.jobId, instanceId: p.instanceId });
263
+ }
264
+ catch {
265
+ await this.finish(p, 'failed', 'identity_failed');
266
+ }
267
+ finally {
268
+ p.processing = false;
269
+ }
270
+ });
271
+ return;
272
+ }
273
+ requireValue(payload.instanceId === p.instanceId);
274
+ if (kind === 'handoff_report') {
275
+ requireValue(p.job.state === 'awaiting_handoff' || p.job.state === 'awaiting_settlement');
276
+ try {
277
+ await this.ctx.update(c => {
278
+ const a = this.target(c, p);
279
+ if (a.handoff?.jobId === p.job.jobId)
280
+ requireValue(a.handoff.summary === payload.summary);
281
+ else
282
+ a.handoff = { version: 1, jobId: p.job.jobId, summary: payload.summary, updatedAt: new Date().toISOString() };
283
+ a.closeJob = { ...a.closeJob, state: 'awaiting_settlement', updatedAt: new Date().toISOString() };
284
+ }, () => this.assertJob(p));
285
+ this.assertJob(p);
286
+ p.job = { ...p.job, state: 'awaiting_settlement' };
287
+ }
288
+ catch (error) {
289
+ await this.finish(p, 'failed', 'save_failed');
290
+ throw error;
291
+ }
292
+ return;
293
+ }
294
+ requireValue(kind === 'close_ready' && p.job.state === 'awaiting_settlement' && !p.closing && !p.processing);
295
+ p.processing = true;
296
+ this.background(async () => {
297
+ let failure = 'identity_failed';
298
+ try {
299
+ await this.transition(p, 'ready');
300
+ await this.ctx.provider.inspect(p.identity, from, () => this.assertJob(p));
301
+ this.assertJob(p);
302
+ failure = 'save_failed';
303
+ await this.transition(p, 'closing');
304
+ this.assertJob(p);
305
+ failure = 'close_failed';
306
+ let commitAttempted = false;
307
+ const result = await this.ctx.provider.close(p.identity, from, () => this.assertJob(p), async () => {
308
+ this.assertJob(p);
309
+ requireValue(!commitAttempted);
310
+ commitAttempted = true;
311
+ failure = 'commit_rejected';
312
+ await this.ctx.send(from, 'close_commit', { jobId: p.job.jobId, instanceId: p.instanceId, readyNonce: payload.readyNonce });
313
+ this.assertJob(p);
314
+ p.closing = true;
315
+ failure = 'close_failed';
316
+ });
317
+ this.assertJob(p);
318
+ requireValue(p.closing);
319
+ await this.finish(p, result.paneClosed && result.workerExited ? 'closed' : 'uncertain', result.paneClosed && result.workerExited ? undefined : 'close_unverified');
320
+ }
321
+ catch {
322
+ await this.finish(p, p.closing ? 'uncertain' : 'failed', failure);
323
+ }
324
+ });
325
+ }
326
+ }
327
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../src/handoff.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ import { Intercom, UNSUPPORTED_CANCELLATION } from './runtime.js';
7
7
  import { launchers } from './launcher.js';
8
8
  import { ensureMonitorPane } from './monitor-launcher.js';
9
9
  import { createActivityTracker } from './activity.js';
10
+ import { createCloseProvider } from './pane-close.js';
10
11
  const to = Type.Object({ to: Type.String({ minLength: 1, maxLength: 128 }) });
11
12
  const tools = [
12
13
  ['create_worker', 'Coordinator only. Launch one anonymous worker in projectDirectory (default root). No assignment, configuration, or registration wait.', Type.Object({ projectDirectory: Type.Optional(Type.String()) })],
@@ -19,9 +20,10 @@ const tools = [
19
20
  ['report_work', 'Configured, responsibility-loaded workers only. Store one public report (blocked, needs_decision, ready_for_review) and notify the coordinator; clear retires it. Summary required except clear (omit or empty). Never include private reasoning, credentials, raw tool payloads, or secrets. Receipt is not approval, verified completion, or permission for follow-up work.', Type.Object({ status: Type.String({ enum: ['blocked', 'needs_decision', 'ready_for_review', 'clear'] }), summary: Type.Optional(Type.String({ maxLength: 2000 })) })],
20
21
  ['report_status', 'Worker only (including anonymous). Send runtime sessionId/port/busy report to coordinator. This is NOT registration and creates no config entry.', Type.Object({})],
21
22
  ['stop_worker', UNSUPPORTED_CANCELLATION, to],
22
- ['close_worker', UNSUPPORTED_CANCELLATION, to],
23
+ ['close_worker', 'Coordinator only. Begin a background save-handoff-and-close job for a configured worker in Linux Herdr. Requests a public summary, saves it in config, waits for successful tool persistence and final turn settlement, then attempts one verified pane close. Returns job acceptance, not completion. Registration/session history are retained. Check worker_status/list for closeJob; failure/timeout/uncertainty never authorizes retry. Not graceful abort or an all-descendants termination guarantee; Windows/non-Herdr unsupported.', to],
24
+ ['report_handoff', 'Configured worker only, in response to its pending close request. Submit the matching jobId and concise public resume handoff (current work, completed work, unfinished items, blockers, next step). Never include secrets, private reasoning or raw tool payloads. Saved receipt is not closure: finish the response and wait; the extension requires final turn settlement before pane closure.', Type.Object({ jobId: Type.String({ minLength: 1, maxLength: 128 }), summary: Type.String({ minLength: 1, maxLength: 4000 }) })],
23
25
  ['resume_worker', 'Coordinator only. Resume saved session/name/responsibility after the user explicitly confirms the old session was closed: set confirmClosed:true only for that confirmation, never infer it from disconnected status. A matching live health endpoint blocks launch. In-flight/uncertain attempts are fenced until worker status arrives; otherwise inspect process and reload coordinator before considering retry. No cross-process uniqueness guarantee, automatic assignment, replacement or removal.', Type.Object({ to: Type.String({ minLength: 1, maxLength: 128 }), confirmClosed: Type.Boolean() })],
24
- ['remove_worker', 'Coordinator only. Remove config entry only; never stop process or delete session files. A running worker must be explicitly closed before removal. Stop/close are disabled on current host: arrange explicit user closure first.', to],
26
+ ['remove_worker', 'Coordinator only. Remove config entry only; never stop process or delete session files. A running worker must be explicitly closed before removal. Retain registration to resume it later; remove only to forget it. Pending or uncertain close jobs block removal.', to],
25
27
  ['set_multiplexer', 'Coordinator only. Set herdr (default, Windows/Linux) or none (separate visible Windows terminals; unsupported on Linux) for future launches. Never move/restart existing workers or fall back.', Type.Object({ multiplexer: Type.String({ enum: ['herdr', 'none'] }) })],
26
28
  ];
27
29
  // Launchers pass no --session-dir. Match child Pi's env > per-cwd settings >
@@ -52,6 +54,50 @@ export default function intercomExtension(pi) {
52
54
  extension: fileURLToPath(import.meta.url),
53
55
  sessionExists: async (cwd, id) => (await SessionManager.list(cwd, resumeSessionDirectory(cwd))).some(s => s.id === id),
54
56
  });
57
+ let monitorTask;
58
+ async function ensureCoordinatorMonitor(current, ctx, started) {
59
+ const isCurrent = () => started === generation && runtime === current;
60
+ if (!isCurrent())
61
+ return;
62
+ if (monitorTask?.runtime === current && monitorTask.generation === started) {
63
+ monitorTask.dirty = true;
64
+ return monitorTask.promise;
65
+ }
66
+ const check = async () => {
67
+ try {
68
+ const { config, me, id } = await current.state();
69
+ if (!isCurrent() || !me?.coordinator || !config.agents.some(agent => !agent.coordinator))
70
+ return;
71
+ const monitor = await ensureMonitorPane({
72
+ root: current.store.root, sessionId: id,
73
+ script: fileURLToPath(new URL('../dist/monitor.js', import.meta.url)),
74
+ assertCurrent: () => { if (!isCurrent())
75
+ throw new Error('Coordinator session changed'); },
76
+ });
77
+ if (isCurrent())
78
+ ctx.ui.notify(`Intercom status monitor: ${monitor.outcome}${monitor.pane ? ` (${monitor.pane})` : ''}`, 'info');
79
+ }
80
+ catch (error) {
81
+ if (isCurrent())
82
+ ctx.ui.notify(String(error), 'warning');
83
+ }
84
+ };
85
+ const task = { runtime: current, generation: started, dirty: false, promise: Promise.resolve() };
86
+ monitorTask = task;
87
+ task.promise = (async () => {
88
+ do {
89
+ task.dirty = false;
90
+ await check();
91
+ } while (task.dirty && isCurrent());
92
+ })();
93
+ try {
94
+ await task.promise;
95
+ }
96
+ finally {
97
+ if (monitorTask === task)
98
+ monitorTask = undefined;
99
+ }
100
+ }
55
101
  pi.on('session_start', async (_event, ctx) => {
56
102
  const started = ++generation;
57
103
  activity.reset();
@@ -75,7 +121,13 @@ export default function intercomExtension(pi) {
75
121
  setName: async (name) => { if (pi.getSessionName() !== name)
76
122
  pi.setSessionName(name); await launcher.syncName(name); },
77
123
  notify: text => ctx.ui.notify(text, 'info'),
78
- }, { launch: launcher.launch, store: root => new PiConfigStore(root) });
124
+ }, {
125
+ launch: launcher.launch, store: root => new PiConfigStore(root),
126
+ closeProvider: createCloseProvider({
127
+ sessionId: () => context.sessionManager.getSessionId(),
128
+ sessionFile: () => context.sessionManager.getSessionFile(),
129
+ }),
130
+ });
79
131
  const current = runtime;
80
132
  try {
81
133
  await current.start();
@@ -102,15 +154,7 @@ export default function intercomExtension(pi) {
102
154
  }
103
155
  if (started !== generation)
104
156
  return;
105
- const monitor = await ensureMonitorPane({
106
- root: current.store.root, sessionId: ctx.sessionManager.getSessionId(),
107
- script: fileURLToPath(new URL('../dist/monitor.js', import.meta.url)),
108
- assertCurrent: () => { if (started !== generation || runtime !== current)
109
- throw new Error('Coordinator session changed'); },
110
- });
111
- if (started !== generation)
112
- return;
113
- ctx.ui.notify(`Intercom status monitor: ${monitor.outcome}${monitor.pane ? ` (${monitor.pane})` : ''}`, 'info');
157
+ await ensureCoordinatorMonitor(current, ctx, started);
114
158
  }
115
159
  }
116
160
  catch (error) {
@@ -127,8 +171,13 @@ export default function intercomExtension(pi) {
127
171
  context = undefined;
128
172
  await oldRuntime?.close();
129
173
  });
174
+ pi.on('input', (_event, ctx) => {
175
+ context = ctx;
176
+ runtime?.workerStarted(); // New owner input invalidates a pending close-readiness epoch.
177
+ });
130
178
  pi.on('agent_start', async (_event, ctx) => {
131
179
  context = ctx;
180
+ runtime?.workerStarted();
132
181
  activityOutcome = 'started';
133
182
  try {
134
183
  activity.start();
@@ -146,6 +195,15 @@ export default function intercomExtension(pi) {
146
195
  finally {
147
196
  activityOutcome = 'snapshot';
148
197
  }
198
+ // Settlement is notification-only and follows tool-result persistence. Inspect
199
+ // only entry kinds and successful tool call IDs, never message/reasoning bodies.
200
+ const successful = new Set();
201
+ for (const entry of ctx.sessionManager.getBranch()) {
202
+ if (entry.type === 'message' && entry.message.role === 'toolResult' && !entry.message.isError) {
203
+ successful.add(entry.message.toolCallId);
204
+ }
205
+ }
206
+ runtime?.workerSettled(successful);
149
207
  });
150
208
  pi.on('message_update', (event, ctx) => {
151
209
  context = ctx;
@@ -166,7 +224,7 @@ export default function intercomExtension(pi) {
166
224
  return;
167
225
  const { me } = await runtime.state();
168
226
  const loaded = runtime.responsibility;
169
- return { systemPrompt: event.systemPrompt + '\n\nPiIntercom: communicates; Pi decides orchestration. Responsibility is not a work assignment. Do not implement unrelated work from findings. After assigned work, report as instructed and wait; do not autonomously exit. Progress questions require reporting and continuing unless explicitly redirected. stop_worker/close_worker are disabled due to host cancellation blocker.\n' + (me && loaded ? `Identity: ${loaded.name} (${me.sessionId}). Responsibility: ${loaded.description}.` : 'Anonymous/unloaded worker: wait for coordinator configuration and separate reload; do not treat registration as authorization to work.') };
227
+ return { systemPrompt: event.systemPrompt + '\n\nPiIntercom: communicates; Pi decides orchestration. Responsibility is not a work assignment. Do not implement unrelated work from findings. After assigned work, report as instructed and wait; do not autonomously exit. Progress questions require reporting and continuing unless explicitly redirected. stop_worker remains disabled due to the host cancellation blocker. close_worker is a separate Linux Herdr background handoff-and-pane-close workflow: do not self-exit, remove registration, force kill or infer completion from job acceptance.\n' + (me && loaded ? `Identity: ${loaded.name} (${me.sessionId}). Responsibility: ${loaded.description}.` : 'Anonymous/unloaded worker: wait for coordinator configuration and separate reload; do not treat registration as authorization to work.') };
170
228
  });
171
229
  for (const [operation, description, parameters] of tools) {
172
230
  pi.registerTool({
@@ -176,9 +234,12 @@ export default function intercomExtension(pi) {
176
234
  context = ctx;
177
235
  if (!runtime)
178
236
  throw new Error('PiIntercom not initialized; inspect startup error.');
179
- const result = await runtime.tool(operation, args);
237
+ const current = runtime, started = generation;
238
+ const result = await current.tool(operation, args, _id);
239
+ if (operation === 'configure_worker')
240
+ await ensureCoordinatorMonitor(current, ctx, started);
180
241
  const output = truncateHead(JSON.stringify(result, null, 2));
181
- return { content: [{ type: 'text', text: output.content + (output.truncated ? `\n[Truncated; full shared configuration: ${runtime.store.file}]` : '') }], details: {} };
242
+ return { content: [{ type: 'text', text: output.content + (output.truncated ? `\n[Truncated; full shared configuration: ${current.store.file}]` : '') }], details: {} };
182
243
  },
183
244
  });
184
245
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ObservationSnapshot } from './snapshot.js';
1
+ import { type ObservationSnapshot } from './snapshot.js';
2
2
  /** Presentation only. All user-controlled text is sanitized before trusted ANSI styling. */
3
3
  export declare function renderMonitor(snapshot: ObservationSnapshot | undefined, width: number, height: number, now?: number, color?: boolean, options?: {
4
4
  selectedIndex?: number;