@bf-meishijian/aip 0.0.5 → 0.0.6

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 (53) hide show
  1. package/README.md +2 -2
  2. package/dist/coding-run-manager.d.ts +8 -2
  3. package/dist/coding-run-manager.d.ts.map +1 -1
  4. package/dist/coding-run-manager.js +406 -300
  5. package/dist/coding-run-manager.js.map +1 -1
  6. package/dist/coding-subagent-child.d.ts +22 -0
  7. package/dist/coding-subagent-child.d.ts.map +1 -0
  8. package/dist/coding-subagent-child.js +90 -0
  9. package/dist/coding-subagent-child.js.map +1 -0
  10. package/dist/coding-subagents.d.ts +63 -0
  11. package/dist/coding-subagents.d.ts.map +1 -0
  12. package/dist/coding-subagents.js +537 -0
  13. package/dist/coding-subagents.js.map +1 -0
  14. package/dist/command-wakeup.d.ts +19 -0
  15. package/dist/command-wakeup.d.ts.map +1 -0
  16. package/dist/command-wakeup.js +109 -0
  17. package/dist/command-wakeup.js.map +1 -0
  18. package/dist/daemon.d.ts.map +1 -1
  19. package/dist/daemon.js +68 -43
  20. package/dist/daemon.js.map +1 -1
  21. package/dist/delivery-files.d.ts +12 -0
  22. package/dist/delivery-files.d.ts.map +1 -1
  23. package/dist/delivery-files.js +80 -0
  24. package/dist/delivery-files.js.map +1 -1
  25. package/dist/live-employee.d.ts +4 -2
  26. package/dist/live-employee.d.ts.map +1 -1
  27. package/dist/live-employee.js +47 -13
  28. package/dist/live-employee.js.map +1 -1
  29. package/dist/pi-message-queue.d.ts +15 -0
  30. package/dist/pi-message-queue.d.ts.map +1 -0
  31. package/dist/pi-message-queue.js +57 -0
  32. package/dist/pi-message-queue.js.map +1 -0
  33. package/dist/pi-model-service.d.ts.map +1 -1
  34. package/dist/platform-client.d.ts +16 -0
  35. package/dist/platform-client.d.ts.map +1 -1
  36. package/dist/platform-client.js +21 -0
  37. package/dist/platform-client.js.map +1 -1
  38. package/dist/review-report.d.ts +10 -0
  39. package/dist/review-report.d.ts.map +1 -0
  40. package/dist/review-report.js +59 -0
  41. package/dist/review-report.js.map +1 -0
  42. package/dist/stage-delivery.js +3 -2
  43. package/dist/state.d.ts +2 -2
  44. package/dist/state.js +2 -2
  45. package/package.json +11 -7
  46. package/dist/agent-harness/index.d.ts +0 -4
  47. package/dist/agent-harness/index.d.ts.map +0 -1
  48. package/dist/agent-harness/index.js +0 -4
  49. package/dist/agent-harness/index.js.map +0 -1
  50. package/dist/agent-harness/pi-chat-model.d.ts +0 -35
  51. package/dist/agent-harness/pi-chat-model.d.ts.map +0 -1
  52. package/dist/agent-harness/pi-chat-model.js +0 -285
  53. package/dist/agent-harness/pi-chat-model.js.map +0 -1
@@ -0,0 +1,537 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { unwatchFile, watchFile } from "node:fs";
3
+ import { open, readFile } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import subagents from "pi-subagents";
6
+ import { registerAgentViaEvents } from "pi-subagents/agents";
7
+ import { registerSubagentCapabilityCeiling } from "pi-subagents/capability-ceiling";
8
+ import { registerRequiredChildExtensions } from "pi-subagents/required-child-extensions";
9
+ import { Type } from "typebox";
10
+ import { prepareCodingSubagentChild, } from "./coding-subagent-child.js";
11
+ import { readJson } from "./secure-json.js";
12
+ const object = (value) => value && typeof value === "object" ? value : {};
13
+ const rows = (value) => (Array.isArray(value) ? value.map(object) : []);
14
+ const text = (value) => (typeof value === "string" ? value : "");
15
+ const resultText = (value) => rows(object(value).content)
16
+ .filter((row) => row.type === "text")
17
+ .map((row) => text(row.text))
18
+ .join("\n");
19
+ /** Pi owns process execution, routing, continuation and cancellation. This adapter projects its public artifacts. */
20
+ export async function createCodingSubagents(options) {
21
+ const agents = options.team
22
+ ? options.agents
23
+ : [
24
+ {
25
+ id: "general-purpose",
26
+ name: "通用子 Agent",
27
+ description: "继承主 Coding 的工具与 Skill,自主完成主会话分派的子任务。",
28
+ },
29
+ ];
30
+ const prepared = await Promise.all(agents.map(async (agent) => {
31
+ const member = options.team ? agent.id : "supervisor";
32
+ const child = await prepareCodingSubagentChild({ ...options.config, member }, join(options.directory, member));
33
+ const config = await options.client.employeeConfig(options.config.runId, {
34
+ hostId: options.config.hostId,
35
+ generation: options.config.generation,
36
+ turnId: options.config.turnId,
37
+ member,
38
+ purpose: "LOAD",
39
+ });
40
+ return { agent, child, config };
41
+ }));
42
+ // Pi resume preserves extension paths. Refresh prior launch bindings at stable paths
43
+ // so a new platform turn authorizes the old child without changing its saved model.
44
+ const previousModels = new Map();
45
+ for (const item of Object.values(options.records))
46
+ if (item.phase === options.config.phase && agents.some((agent) => agent.id === item.agentName))
47
+ previousModels.set(`${item.agentName}:${item.providerId}/${item.modelId}`, item);
48
+ for (const item of previousModels.values()) {
49
+ const member = options.team ? item.agentName : "supervisor";
50
+ await prepareCodingSubagentChild({ ...options.config, member, providerId: item.providerId, modelId: item.modelId }, join(options.directory, member));
51
+ }
52
+ let api;
53
+ const registrations = [];
54
+ const watchers = new Map();
55
+ const waiters = new Map();
56
+ let tail = Promise.resolve();
57
+ let failure;
58
+ let disposed = false;
59
+ const rpc = (method, params = {}) => new Promise((resolve, reject) => {
60
+ const requestId = randomUUID();
61
+ const off = api.events.on(`subagents:rpc:v1:reply:${requestId}`, (value) => {
62
+ clearTimeout(timer);
63
+ off();
64
+ const reply = object(value);
65
+ if (reply.success === true)
66
+ resolve(object(reply.data));
67
+ else
68
+ reject(new Error(text(object(reply.error).message) || "SUBAGENT_RPC_FAILED"));
69
+ });
70
+ const timer = setTimeout(() => {
71
+ off();
72
+ reject(new Error("SUBAGENT_RPC_TIMEOUT"));
73
+ }, 60_000);
74
+ api.events.emit("subagents:rpc:v1:request", { version: 1, requestId, method, params });
75
+ });
76
+ const payload = (item) => ({
77
+ phase: item.phase,
78
+ agentId: item.agentId,
79
+ activityKey: item.activityKey,
80
+ ...(item.sessionId
81
+ ? {
82
+ sessionId: item.sessionId,
83
+ sessionRef: item.sessionId,
84
+ delegation: {
85
+ sessionId: item.sessionId,
86
+ ordinal: item.ordinal,
87
+ taskTitle: item.taskTitle,
88
+ ...(item.continuationOf ? { continuationOf: item.continuationOf } : {}),
89
+ },
90
+ }
91
+ : {}),
92
+ });
93
+ const projectEvent = async (item, event) => {
94
+ const base = { ...payload(item), parentActivityKey: item.activityKey };
95
+ const message = object(event.message);
96
+ if (event.type === "message_start" && message.role === "assistant") {
97
+ item.messageId = randomUUID();
98
+ await options.emit("MESSAGE_STARTED", { ...base, messageId: item.messageId });
99
+ }
100
+ else if (event.type === "message_end" && message.role === "assistant") {
101
+ item.messageId ??= randomUUID();
102
+ item.finalText = rows(message.content)
103
+ .filter((row) => row.type === "text")
104
+ .map((row) => text(row.text))
105
+ .join("\n");
106
+ if (!item.finalText.trim())
107
+ return;
108
+ await options.emit("MESSAGE_COMPLETED", {
109
+ ...base,
110
+ messageId: item.messageId,
111
+ contentMarkdown: rows(message.content)
112
+ .filter((row) => row.type === "text")
113
+ .map((row) => text(row.text))
114
+ .join("\n"),
115
+ });
116
+ }
117
+ else if (event.type === "tool_execution_start") {
118
+ await options.emit("TOOL_STARTED", {
119
+ ...base,
120
+ activityKey: `${item.id}:${text(event.toolCallId)}`,
121
+ toolName: event.toolName,
122
+ summary: `执行 ${text(event.toolName)}`,
123
+ });
124
+ }
125
+ else if (event.type === "tool_execution_update") {
126
+ await options.emit("TOOL_UPDATED", {
127
+ ...base,
128
+ activityKey: `${item.id}:${text(event.toolCallId)}`,
129
+ toolName: event.toolName,
130
+ currentAction: resultText(event.partialResult),
131
+ });
132
+ }
133
+ else if (event.type === "tool_execution_end") {
134
+ if (event.toolName === "submit_member_result" && event.isError !== true) {
135
+ const result = object(object(object(event.result).details).memberResult);
136
+ if ((result.status === "PASS" || result.status === "FAIL") &&
137
+ typeof result.summary === "string")
138
+ item.result = { status: result.status, summary: result.summary };
139
+ }
140
+ await options.emit("TOOL_COMPLETED", {
141
+ ...base,
142
+ activityKey: `${item.id}:${text(event.toolCallId)}`,
143
+ toolName: event.toolName,
144
+ isError: event.isError === true,
145
+ summary: resultText(event.result),
146
+ });
147
+ }
148
+ };
149
+ const syncOne = async (item) => {
150
+ if (item.terminal)
151
+ return;
152
+ const status = await readJson(join(item.asyncDir, "status.json"));
153
+ if (!status)
154
+ return;
155
+ const step = rows(status.steps)[0] ?? {};
156
+ const sessionFile = text(step.sessionFile) || text(status.sessionFile);
157
+ if (!item.sessionId && sessionFile) {
158
+ watchArtifact(`${item.id}:identity`, `${sessionFile}.aip.json`);
159
+ const identity = await readJson(`${sessionFile}.aip.json`);
160
+ if (identity?.runId === options.config.runId)
161
+ item.sessionId = identity.sessionId;
162
+ const header = (await readFile(sessionFile, "utf8").catch((error) => {
163
+ if (error.code === "ENOENT")
164
+ return "";
165
+ throw error;
166
+ })).split("\n")[0];
167
+ if (header && text(object(JSON.parse(header)).id))
168
+ item.sessionId = text(object(JSON.parse(header)).id);
169
+ }
170
+ if (item.sessionId && !item.started) {
171
+ if (!options.team)
172
+ item.agentId = `child:${item.sessionId}`;
173
+ options.started(item.activityKey, item.agentId);
174
+ await options.emit("SUBAGENT_STARTED", {
175
+ ...payload(item),
176
+ task: item.task,
177
+ summary: item.taskTitle,
178
+ });
179
+ item.started = true;
180
+ }
181
+ const events = item.sessionId
182
+ ? await readSubagentEvents(join(item.asyncDir, "events.jsonl"), item.eventOffset)
183
+ : { records: [] };
184
+ for (const entry of events.records) {
185
+ item.eventOffset = entry.endOffset;
186
+ await projectEvent(item, entry.value);
187
+ }
188
+ if (["complete", "failed", "partial", "paused", "stopped", "rejected"].includes(text(status.state)) &&
189
+ (!item.stopRequested ||
190
+ status.state === "stopped" ||
191
+ status.state === "complete" ||
192
+ status.stopped === true)) {
193
+ const result = item.result;
194
+ const completed = status.state === "complete";
195
+ await options.completed(item.activityKey, item.agentId, result);
196
+ await options.emit(item.sessionId
197
+ ? status.state === "stopped" || status.stopped === true
198
+ ? "SUBAGENT_STOPPED"
199
+ : completed
200
+ ? "SUBAGENT_COMPLETED"
201
+ : "SUBAGENT_FAILED"
202
+ : "TOOL_COMPLETED", {
203
+ ...(!item.sessionId ? { toolName: "subagent", isError: true } : {}),
204
+ ...payload(item),
205
+ summary: result
206
+ ? `${result.status}:${result.summary}`
207
+ : item.finalText ||
208
+ text(status.error) ||
209
+ (completed ? "执行完成,未提交业务结论" : text(status.state)),
210
+ task: item.task,
211
+ });
212
+ item.terminal = true;
213
+ watchers.get(item.id)?.close();
214
+ watchers.delete(item.id);
215
+ watchers.get(`${item.id}:events`)?.close();
216
+ watchers.delete(`${item.id}:events`);
217
+ watchers.get(`${item.id}:identity`)?.close();
218
+ watchers.delete(`${item.id}:identity`);
219
+ for (const resolve of waiters.get(item.id) ?? [])
220
+ resolve();
221
+ waiters.delete(item.id);
222
+ }
223
+ await options.persist();
224
+ };
225
+ const sync = () => {
226
+ const pending = tail.then(async () => {
227
+ if (failure)
228
+ throw failure;
229
+ for (const item of Object.values(options.records))
230
+ if (item.phase === options.config.phase && !item.terminal)
231
+ await syncOne(item);
232
+ });
233
+ tail = pending.catch((error) => {
234
+ failure = error;
235
+ for (const values of waiters.values())
236
+ for (const finish of values)
237
+ finish(error);
238
+ waiters.clear();
239
+ });
240
+ return pending;
241
+ };
242
+ // Native status/events are the authority. Stat-based file observation also survives
243
+ // atomic replacement and macOS directory-watch coalescing before the first response.
244
+ const watchArtifact = (key, path) => {
245
+ if (watchers.has(key) || disposed)
246
+ return;
247
+ const changed = () => {
248
+ void sync().catch(() => { });
249
+ };
250
+ watchFile(path, { interval: 250, persistent: false }, changed);
251
+ watchers.set(key, { close: () => unwatchFile(path, changed) });
252
+ };
253
+ const observe = (item) => {
254
+ if (item.terminal || disposed)
255
+ return;
256
+ watchArtifact(item.id, join(item.asyncDir, "status.json"));
257
+ watchArtifact(`${item.id}:events`, join(item.asyncDir, "events.jsonl"));
258
+ };
259
+ const wait = async (item, signal) => {
260
+ if (item.terminal)
261
+ return;
262
+ if (failure)
263
+ throw failure;
264
+ await new Promise((resolve, reject) => {
265
+ const finish = (error) => {
266
+ signal?.removeEventListener("abort", abort);
267
+ if (error)
268
+ reject(error);
269
+ else
270
+ resolve();
271
+ };
272
+ const abort = () => {
273
+ waiters.get(item.id)?.delete(finish);
274
+ reject(new Error("SUBAGENT_STOPPED"));
275
+ };
276
+ if (signal?.aborted)
277
+ return abort();
278
+ const values = waiters.get(item.id) ?? new Set();
279
+ values.add(finish);
280
+ waiters.set(item.id, values);
281
+ signal?.addEventListener("abort", abort, { once: true });
282
+ });
283
+ };
284
+ const extension = async (actualApi) => {
285
+ api = actualApi;
286
+ await subagents({
287
+ ...api,
288
+ registerTool(definition) {
289
+ // The public RPC owns exactly the same executor; keep a small platform-facing contract.
290
+ if (definition.name !== "subagent")
291
+ api.registerTool(definition);
292
+ },
293
+ });
294
+ api.on("session_start", (_event, context) => {
295
+ for (const { agent, child, config } of prepared)
296
+ registrations.push(registerAgentViaEvents({
297
+ pi: api,
298
+ name: agent.id,
299
+ definition: {
300
+ description: `${agent.name}:${agent.description}`,
301
+ systemPrompt: "员工身份与 Skill 由平台动态提供。完成子任务后调用 submit_member_result。",
302
+ model: "inherit",
303
+ tools: [...config.agent.enabledTools, "submit_member_result"],
304
+ inheritSkills: false,
305
+ inheritProjectContext: false,
306
+ inheritGlobalContext: false,
307
+ defaultAsync: true,
308
+ defaultContext: "fresh",
309
+ extensions: [child.employeeExtensionPath],
310
+ defaultAcceptance: {
311
+ level: "none",
312
+ reason: "平台负责阶段交付门禁,子任务只汇报真实结果。",
313
+ },
314
+ },
315
+ }));
316
+ registrations.push(registerSubagentCapabilityCeiling({
317
+ sessionId: context.sessionManager.getSessionId(),
318
+ source: "aip",
319
+ ceiling: { allowedAgents: agents.map((agent) => agent.id) },
320
+ }));
321
+ const modelExtensionPath = prepared[0]?.child.modelExtensionPath;
322
+ if (modelExtensionPath)
323
+ registrations.push(registerRequiredChildExtensions({
324
+ sessionId: context.sessionManager.getSessionId(),
325
+ extensions: [{ id: "aip-model", path: modelExtensionPath }],
326
+ }));
327
+ for (const item of Object.values(options.records))
328
+ if (item.phase === options.config.phase && !item.terminal) {
329
+ options.started(item.activityKey, item.agentId);
330
+ observe(item);
331
+ }
332
+ });
333
+ api.on("context_with_system", async () => {
334
+ await sync();
335
+ });
336
+ api.on("tool_call", async () => {
337
+ await sync();
338
+ });
339
+ for (const event of [
340
+ "subagent:async-complete",
341
+ "subagent:child-status",
342
+ "subagent:process-terminal",
343
+ ]) {
344
+ registrations.push({
345
+ dispose: api.events.on(event, () => {
346
+ void sync().catch(() => { });
347
+ }),
348
+ });
349
+ }
350
+ api.registerTool({
351
+ name: "subagent",
352
+ label: "委派子任务",
353
+ description: `委派新子任务、查看状态、执行中引导、完成后继续派活。可用代理:${agents.map((agent) => `${agent.id}(${agent.name})`).join("、")}。spawn 默认后台执行;async=false 等待结果。steer 仅调整运行中的任务,resume 沿用已结束子会话。id 使用此前返回的 id。`,
354
+ parameters: Type.Object({
355
+ action: Type.Optional(Type.Union([
356
+ Type.Literal("spawn"),
357
+ Type.Literal("status"),
358
+ Type.Literal("steer"),
359
+ Type.Literal("resume"),
360
+ Type.Literal("stop"),
361
+ ])),
362
+ agent: Type.Optional(Type.String()),
363
+ task: Type.Optional(Type.String()),
364
+ id: Type.Optional(Type.String()),
365
+ message: Type.Optional(Type.String()),
366
+ async: Type.Optional(Type.Boolean()),
367
+ }),
368
+ async execute(callId, params, signal) {
369
+ await sync();
370
+ const action = params.action ?? "spawn";
371
+ const previous = params.id ? options.records[params.id] : undefined;
372
+ if (action !== "spawn" && !previous)
373
+ throw new Error("SUBAGENT_TARGET_NOT_FOUND");
374
+ if (action === "status" || action === "steer" || action === "stop") {
375
+ if (action === "stop" && previous && !previous.terminal)
376
+ previous.stopRequested = true;
377
+ const result = await rpc(action, {
378
+ id: params.id,
379
+ ...(params.message ? { message: params.message } : {}),
380
+ }).catch((error) => {
381
+ if (previous)
382
+ delete previous.stopRequested;
383
+ throw error;
384
+ });
385
+ await sync();
386
+ if (action === "steer" && previous?.sessionId)
387
+ await options.emit("SUBAGENT_UPDATED", {
388
+ ...payload(previous),
389
+ currentAction: params.message,
390
+ });
391
+ return {
392
+ content: [
393
+ {
394
+ type: "text",
395
+ text: `子任务 id=${previous.id}(status、steer、resume、stop 均使用此 id)。\n${text(result.text)}`,
396
+ },
397
+ ],
398
+ details: result.details,
399
+ };
400
+ }
401
+ const agentId = action === "resume" ? previous.agentName : params.agent;
402
+ if (!agents.some((agent) => agent.id === agentId))
403
+ throw new Error("DEVELOPMENT_TEAM_MEMBER_INVALID");
404
+ const task = action === "resume" ? params.message : params.task;
405
+ if (!task?.trim())
406
+ throw new Error("SUBAGENT_TASK_REQUIRED");
407
+ signal?.throwIfAborted();
408
+ options.started(callId, previous?.agentId ?? agentId);
409
+ const response = await rpc(action, action === "resume"
410
+ ? { id: params.id, message: task }
411
+ : {
412
+ agent: agentId,
413
+ task,
414
+ context: "fresh",
415
+ cwd: options.cwd,
416
+ async: true,
417
+ intercomBridge: { mode: "off" },
418
+ }).catch(async (error) => {
419
+ await options.completed(callId, previous?.agentId ?? agentId);
420
+ throw error;
421
+ });
422
+ const details = object(response.details);
423
+ const id = text(details.asyncId) || text(details.runId);
424
+ const asyncDir = text(details.asyncDir);
425
+ if (!id || !asyncDir)
426
+ throw new Error("SUBAGENT_LAUNCH_IDENTITY_MISSING");
427
+ const item = {
428
+ id,
429
+ asyncDir,
430
+ activityKey: callId,
431
+ agentId: previous?.agentId ?? agentId,
432
+ agentName: agentId,
433
+ phase: options.config.phase,
434
+ providerId: previous?.providerId ?? options.config.providerId,
435
+ modelId: previous?.modelId ?? options.config.modelId,
436
+ task,
437
+ taskTitle: task.split("\n")[0].slice(0, 160),
438
+ eventOffset: 0,
439
+ ordinal: previous?.ordinal ??
440
+ Math.max(0, ...Object.values(options.records).map((item) => item.ordinal)) + 1,
441
+ ...(previous
442
+ ? {
443
+ continuationOf: previous.activityKey,
444
+ ...(previous.sessionId ? { sessionId: previous.sessionId } : {}),
445
+ }
446
+ : {}),
447
+ };
448
+ options.records[id] = item;
449
+ options.started(callId, item.agentId);
450
+ await options.persist();
451
+ observe(item);
452
+ await sync();
453
+ if (params.async === false)
454
+ await wait(item, signal);
455
+ return {
456
+ content: [
457
+ {
458
+ type: "text",
459
+ text: `子任务 id=${id}(status、steer、resume、stop 均使用此 id)。\n${item.terminal
460
+ ? item.result
461
+ ? `${item.result.status}:${item.result.summary}`
462
+ : (item.finalText ?? "子任务执行已结束,请查看结果。")
463
+ : "子任务已启动。Pi 将在完成后通知主会话;无需轮询。"}`,
464
+ },
465
+ ],
466
+ details: {
467
+ id,
468
+ agent: item.agentId,
469
+ sessionId: item.sessionId,
470
+ ordinal: item.ordinal,
471
+ asyncDir,
472
+ },
473
+ };
474
+ },
475
+ });
476
+ };
477
+ return {
478
+ extension,
479
+ flush: sync,
480
+ async stop() {
481
+ for (const item of Object.values(options.records))
482
+ if (!item.terminal && item.phase === options.config.phase) {
483
+ item.stopRequested = true;
484
+ await rpc("stop", { id: item.id }).catch((error) => {
485
+ delete item.stopRequested;
486
+ throw error;
487
+ });
488
+ }
489
+ await sync();
490
+ for (const item of Object.values(options.records))
491
+ if (!item.terminal && item.phase === options.config.phase)
492
+ await wait(item);
493
+ },
494
+ async dispose() {
495
+ disposed = true;
496
+ for (const watcher of watchers.values())
497
+ watcher.close();
498
+ watchers.clear();
499
+ await tail;
500
+ for (const registration of registrations)
501
+ registration.dispose();
502
+ },
503
+ };
504
+ }
505
+ /** Read complete records only: native writer may still be appending its final line. */
506
+ export async function readSubagentEvents(path, offset) {
507
+ let handle;
508
+ try {
509
+ handle = await open(path, "r");
510
+ }
511
+ catch (error) {
512
+ if (error.code === "ENOENT")
513
+ return { records: [] };
514
+ throw error;
515
+ }
516
+ try {
517
+ const size = (await handle.stat()).size;
518
+ const buffer = Buffer.alloc(Math.max(0, size - offset));
519
+ await handle.read(buffer, 0, buffer.length, offset);
520
+ const content = buffer.toString("utf8");
521
+ const records = [];
522
+ let cursor = offset;
523
+ for (const line of content
524
+ .slice(0, content.lastIndexOf("\n") + 1)
525
+ .split("\n")
526
+ .slice(0, -1)) {
527
+ cursor += Buffer.byteLength(line) + 1;
528
+ if (line)
529
+ records.push({ value: object(JSON.parse(line)), endOffset: cursor });
530
+ }
531
+ return { records };
532
+ }
533
+ finally {
534
+ await handle.close();
535
+ }
536
+ }
537
+ //# sourceMappingURL=coding-subagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-subagents.js","sourceRoot":"","sources":["../src/coding-subagents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** A single sticky hint: arrivals during an HTTP claim must survive until the next wait. */
2
+ export declare class CommandWakeup {
3
+ private pending;
4
+ private waiting;
5
+ notify(): void;
6
+ wait(milliseconds: number, signal?: AbortSignal): Promise<void>;
7
+ }
8
+ export declare function commandPollMilliseconds(healthy: boolean, busy: boolean, nextSeconds: number): number;
9
+ export declare class HostCommandNotifications {
10
+ private readonly connect;
11
+ private readonly wakeup;
12
+ healthy: boolean;
13
+ private readonly controller;
14
+ private readonly finished;
15
+ constructor(connect: (signal: AbortSignal) => Promise<Response>, wakeup: CommandWakeup);
16
+ stop(): Promise<void>;
17
+ private run;
18
+ }
19
+ //# sourceMappingURL=command-wakeup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-wakeup.d.ts","sourceRoot":"","sources":["../src/command-wakeup.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA2B;IAE1C,MAAM;IAKA,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;CAkBtD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAE3F;AAED,qBAAa,wBAAwB;IAMjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,UAAS;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAGtB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,EACnD,MAAM,EAAE,aAAa;IAKlC,IAAI;YAKI,GAAG;CAuDlB"}