poe-code 3.0.130 → 3.0.131

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.
@@ -5,6 +5,8 @@ export interface SpawnCommandOptions {
5
5
  model?: string;
6
6
  mode?: SpawnMode;
7
7
  mcpServers?: McpSpawnConfig;
8
+ logDir?: string;
9
+ activityTimeoutMs?: number;
8
10
  cwd?: string;
9
11
  useStdin?: boolean;
10
12
  interactive?: boolean;
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import * as fsPromises from "node:fs/promises";
3
3
  import { ExperimentJournal, runExperimentLoop as runWorkspaceExperimentLoop } from "@poe-code/experiment-loop";
4
- import { renderAcpStream } from "@poe-code/agent-spawn";
4
+ import { renderAcpStream, isActivityTimeoutError } from "@poe-code/agent-spawn";
5
5
  import { spawn as sdkSpawn } from "./spawn.js";
6
6
  function createDefaultFs() {
7
7
  return {
@@ -34,19 +34,32 @@ function resolveAbsoluteDocPath(docPath, cwd, homeDir) {
34
34
  function resolveJournalPath(docPath) {
35
35
  return path.join(path.dirname(docPath), `${path.basename(docPath, path.extname(docPath))}.journal.jsonl`);
36
36
  }
37
+ const AUTONOMOUS_ACTIVITY_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
38
+ const MAX_TIMEOUT_RETRIES = 3;
37
39
  export async function runExperiment(options) {
38
40
  return runWorkspaceExperimentLoop({
39
41
  ...options,
40
42
  runAgent: async (input) => {
41
- const { events, result } = sdkSpawn(input.agent, {
42
- prompt: input.prompt,
43
- cwd: input.cwd,
44
- model: input.model,
45
- mode: "yolo",
46
- ...(input.signal ? { signal: input.signal } : {})
47
- });
48
- await renderAcpStream(events);
49
- return await result;
43
+ for (let attempt = 1; attempt <= MAX_TIMEOUT_RETRIES; attempt++) {
44
+ try {
45
+ const { events, result } = sdkSpawn(input.agent, {
46
+ prompt: input.prompt,
47
+ cwd: input.cwd,
48
+ model: input.model,
49
+ mode: "yolo",
50
+ activityTimeoutMs: AUTONOMOUS_ACTIVITY_TIMEOUT_MS,
51
+ ...(input.signal ? { signal: input.signal } : {})
52
+ });
53
+ await renderAcpStream(events);
54
+ return await result;
55
+ }
56
+ catch (error) {
57
+ if (!isActivityTimeoutError(error) || attempt === MAX_TIMEOUT_RETRIES) {
58
+ throw error;
59
+ }
60
+ }
61
+ }
62
+ throw new Error("Unreachable");
50
63
  }
51
64
  });
52
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/sdk/experiment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/sdk/experiment.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,35 @@
1
1
  import { runPipeline as runWorkspacePipeline } from "@poe-code/pipeline";
2
- import { renderAcpStream } from "@poe-code/agent-spawn";
2
+ import { renderAcpStream, isActivityTimeoutError } from "@poe-code/agent-spawn";
3
3
  import { spawn as sdkSpawn } from "./spawn.js";
4
4
  export { resolvePlanDirectory } from "@poe-code/pipeline";
5
+ const AUTONOMOUS_ACTIVITY_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
6
+ const MAX_TIMEOUT_RETRIES = 3;
5
7
  export async function runPipeline(options) {
6
8
  return runWorkspacePipeline({
7
9
  ...options,
8
10
  runAgent: async (input) => {
9
- const { events, result } = sdkSpawn(input.agent, {
10
- prompt: input.prompt,
11
- cwd: input.cwd,
12
- logDir: input.logDir,
13
- model: input.model,
14
- mode: input.mode,
15
- ...(input.mcpServers ? { mcpServers: input.mcpServers } : {})
16
- });
17
- await renderAcpStream(events);
18
- return await result;
11
+ for (let attempt = 1; attempt <= MAX_TIMEOUT_RETRIES; attempt++) {
12
+ try {
13
+ const { events, result } = sdkSpawn(input.agent, {
14
+ prompt: input.prompt,
15
+ cwd: input.cwd,
16
+ logDir: input.logDir,
17
+ model: input.model,
18
+ mode: input.mode,
19
+ activityTimeoutMs: AUTONOMOUS_ACTIVITY_TIMEOUT_MS,
20
+ ...(input.mcpServers ? { mcpServers: input.mcpServers } : {}),
21
+ ...(input.signal ? { signal: input.signal } : {})
22
+ });
23
+ await renderAcpStream(events);
24
+ return await result;
25
+ }
26
+ catch (error) {
27
+ if (!isActivityTimeoutError(error) || attempt === MAX_TIMEOUT_RETRIES) {
28
+ throw error;
29
+ }
30
+ }
31
+ }
32
+ throw new Error("Unreachable");
19
33
  }
20
34
  });
21
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/sdk/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,oBAAoB,EAGpC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B;IAE3B,OAAO,oBAAoB,CAAC;QAC1B,GAAG,OAAO;QACV,QAAQ,EAAE,KAAK,EAAE,KAAiE,EAAE,EAAE;YACpF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9D,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,MAAM,CAAC;QACtB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/sdk/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,oBAAoB,EAGpC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,8BAA8B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AACpE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B;IAE3B,OAAO,oBAAoB,CAAC;QAC1B,GAAG,OAAO;QACV,QAAQ,EAAE,KAAK,EAAE,KAAiE,EAAE,EAAE;YACpF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC;gBAChE,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;wBAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,iBAAiB,EAAE,8BAA8B;wBACjD,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClD,CAAC,CAAC;oBACH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,MAAM,MAAM,CAAC;gBACtB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;wBACtE,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/dist/sdk/ralph.js CHANGED
@@ -1,19 +1,32 @@
1
1
  import { runRalph as runWorkspaceRalph } from "@poe-code/ralph";
2
- import { renderAcpStream } from "@poe-code/agent-spawn";
2
+ import { renderAcpStream, isActivityTimeoutError } from "@poe-code/agent-spawn";
3
3
  import { spawn as sdkSpawn } from "./spawn.js";
4
+ const AUTONOMOUS_ACTIVITY_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
5
+ const MAX_TIMEOUT_RETRIES = 3;
4
6
  export async function runRalph(options) {
5
7
  return runWorkspaceRalph({
6
8
  ...options,
7
9
  runAgent: async (input) => {
8
- const { events, result } = sdkSpawn(input.agent, {
9
- prompt: input.prompt,
10
- cwd: input.cwd,
11
- model: input.model,
12
- mode: "yolo",
13
- ...(input.signal ? { signal: input.signal } : {})
14
- });
15
- await renderAcpStream(events);
16
- return result;
10
+ for (let attempt = 1; attempt <= MAX_TIMEOUT_RETRIES; attempt++) {
11
+ try {
12
+ const { events, result } = sdkSpawn(input.agent, {
13
+ prompt: input.prompt,
14
+ cwd: input.cwd,
15
+ model: input.model,
16
+ mode: "yolo",
17
+ activityTimeoutMs: AUTONOMOUS_ACTIVITY_TIMEOUT_MS,
18
+ ...(input.signal ? { signal: input.signal } : {})
19
+ });
20
+ await renderAcpStream(events);
21
+ return result;
22
+ }
23
+ catch (error) {
24
+ if (!isActivityTimeoutError(error) || attempt === MAX_TIMEOUT_RETRIES) {
25
+ throw error;
26
+ }
27
+ }
28
+ }
29
+ throw new Error("Unreachable");
17
30
  }
18
31
  });
19
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/sdk/ralph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAG9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAU/C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAwB;IAExB,OAAO,iBAAiB,CAAC;QACvB,GAAG,OAAO;QACV,QAAQ,EAAE,KAAK,EACb,KAA8D,EAC9D,EAAE;YACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,MAAM;gBACZ,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/sdk/ralph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,IAAI,iBAAiB,EAG9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAU/C,MAAM,8BAA8B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AACpE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAwB;IAExB,OAAO,iBAAiB,CAAC;QACvB,GAAG,OAAO;QACV,QAAQ,EAAE,KAAK,EACb,KAA8D,EAC9D,EAAE;YACF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,mBAAmB,EAAE,OAAO,EAAE,EAAE,CAAC;gBAChE,IAAI,CAAC;oBACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE;wBAC/C,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,IAAI,EAAE,MAAM;wBACZ,iBAAiB,EAAE,8BAA8B;wBACjD,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAClD,CAAC,CAAC;oBACH,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9B,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;wBACtE,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
package/dist/sdk/spawn.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { getPoeApiKey } from "./credentials.js";
2
2
  import { resolveConfiguredModel, spawnCore } from "./spawn-core.js";
3
3
  import { createSdkContainer } from "./container.js";
4
- import { getSpawnConfig, spawn as spawnNonStreaming, spawnInteractive, spawnStreaming, renderAcpStream, applyMiddlewares, sessionCapture, usageCapture, spawnLog } from "@poe-code/agent-spawn";
4
+ import { getAcpSpawnConfig, getSpawnConfig, spawn as spawnNonStreaming, spawnAcp, spawnInteractive, spawnStreaming, renderAcpStream, applyMiddlewares, sessionCapture, usageCapture, spawnLog } from "@poe-code/agent-spawn";
5
5
  export function spawn(service, promptOrOptions, maybeOptions) {
6
6
  const options = typeof promptOrOptions === "string"
7
7
  ? { ...maybeOptions, prompt: promptOrOptions }
8
8
  : promptOrOptions;
9
+ const mcpConfig = options.mcpConfig ?? options.mcpServers;
9
10
  const emptyEvents = (async function* () { })();
10
11
  /**
11
12
  * Deferred event stream resolution.
@@ -58,7 +59,7 @@ export function spawn(service, promptOrOptions, maybeOptions) {
58
59
  mode: options.mode,
59
60
  signal: options.signal,
60
61
  args: options.args,
61
- ...(options.mcpServers ? { mcpServers: options.mcpServers } : {})
62
+ ...(mcpConfig ? { mcpServers: mcpConfig } : {})
62
63
  });
63
64
  return {
64
65
  stdout: interactiveResult.stdout,
@@ -67,6 +68,50 @@ export function spawn(service, promptOrOptions, maybeOptions) {
67
68
  ...(interactiveResult.usage ? { usage: interactiveResult.usage } : {})
68
69
  };
69
70
  }
71
+ const acpSpawnConfig = getAcpSpawnConfig(service);
72
+ if (acpSpawnConfig) {
73
+ const model = await resolveModel();
74
+ const { events: rawEvents, done } = spawnAcp({
75
+ agentId: service,
76
+ prompt: options.prompt,
77
+ cwd: options.cwd,
78
+ model,
79
+ mode: options.mode,
80
+ mcpServers: options.mcpServers,
81
+ signal: options.signal,
82
+ });
83
+ const middlewareContext = {
84
+ sessionId: "unknown",
85
+ agent: service,
86
+ logDir: options.logDir,
87
+ events: [],
88
+ usage: {
89
+ inputTokens: 0,
90
+ outputTokens: 0
91
+ },
92
+ eventStream: rawEvents,
93
+ prompt: options.prompt,
94
+ model,
95
+ mode: options.mode,
96
+ cwd: options.cwd,
97
+ startedAt: new Date()
98
+ };
99
+ await applyMiddlewares([sessionCapture, usageCapture, spawnLog], middlewareContext);
100
+ resolveEventsOnce(middlewareContext.eventStream ?? emptyEvents);
101
+ const final = await done;
102
+ const threadId = middlewareContext.threadId ?? final.threadId;
103
+ const sessionId = (middlewareContext.sessionId !== "unknown" ? middlewareContext.sessionId : undefined) ??
104
+ final.sessionId ??
105
+ threadId;
106
+ return {
107
+ stdout: final.stdout,
108
+ stderr: final.stderr,
109
+ exitCode: final.exitCode,
110
+ ...(threadId ? { threadId } : {}),
111
+ ...(sessionId ? { sessionId } : {}),
112
+ ...(final.usage ? { usage: final.usage } : {})
113
+ };
114
+ }
70
115
  const spawnConfig = getSpawnConfig(service);
71
116
  const supportsStreaming = !!spawnConfig &&
72
117
  spawnConfig.kind === "cli" &&
@@ -81,7 +126,10 @@ export function spawn(service, promptOrOptions, maybeOptions) {
81
126
  mode: options.mode,
82
127
  args: options.args,
83
128
  signal: options.signal,
84
- ...(options.mcpServers ? { mcpServers: options.mcpServers } : {}),
129
+ ...(mcpConfig ? { mcpServers: mcpConfig } : {}),
130
+ ...(options.activityTimeoutMs !== undefined
131
+ ? { activityTimeoutMs: options.activityTimeoutMs }
132
+ : {}),
85
133
  useStdin: false
86
134
  });
87
135
  const middlewareContext = {
@@ -107,13 +155,14 @@ export function spawn(service, promptOrOptions, maybeOptions) {
107
155
  const sessionId = (middlewareContext.sessionId !== "unknown" ? middlewareContext.sessionId : undefined) ??
108
156
  final.sessionId ??
109
157
  threadId;
158
+ const usage = final.usage ?? getCapturedUsage(middlewareContext.usage);
110
159
  return {
111
160
  stdout: final.stdout,
112
161
  stderr: final.stderr,
113
162
  exitCode: final.exitCode,
114
163
  ...(threadId ? { threadId } : {}),
115
164
  ...(sessionId ? { sessionId } : {}),
116
- ...(final.usage ? { usage: final.usage } : {})
165
+ ...(usage ? { usage } : {})
117
166
  };
118
167
  }
119
168
  if (spawnConfig && spawnConfig.kind === "cli") {
@@ -126,7 +175,10 @@ export function spawn(service, promptOrOptions, maybeOptions) {
126
175
  mode: options.mode,
127
176
  args: options.args,
128
177
  signal: options.signal,
129
- ...(options.mcpServers ? { mcpServers: options.mcpServers } : {}),
178
+ ...(mcpConfig ? { mcpServers: mcpConfig } : {}),
179
+ ...(options.activityTimeoutMs !== undefined
180
+ ? { activityTimeoutMs: options.activityTimeoutMs }
181
+ : {}),
130
182
  useStdin: false
131
183
  });
132
184
  }
@@ -138,7 +190,7 @@ export function spawn(service, promptOrOptions, maybeOptions) {
138
190
  model,
139
191
  mode: options.mode,
140
192
  args: options.args,
141
- ...(options.mcpServers ? { mcpServers: options.mcpServers } : {}),
193
+ ...(mcpConfig ? { mcpServers: mcpConfig } : {}),
142
194
  useStdin: false
143
195
  });
144
196
  }
@@ -149,6 +201,18 @@ export function spawn(service, promptOrOptions, maybeOptions) {
149
201
  })();
150
202
  return { events, result };
151
203
  }
204
+ function getCapturedUsage(usage) {
205
+ if (!usage) {
206
+ return undefined;
207
+ }
208
+ if (usage.inputTokens > 0 || usage.outputTokens > 0) {
209
+ return usage;
210
+ }
211
+ if (usage.cachedTokens !== undefined || usage.costUsd !== undefined) {
212
+ return usage;
213
+ }
214
+ return undefined;
215
+ }
152
216
  /**
153
217
  * Spawns an agent and renders ACP events to stdout with pretty formatting.
154
218
  *
@@ -1 +1 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/sdk/spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/sdk/spawn.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export interface SpawnOptions {
14
14
  /** Additional arguments forwarded to the CLI */
15
15
  args?: string[];
16
16
  /** MCP servers passed at spawn time */
17
+ mcpConfig?: McpSpawnConfig;
18
+ /** @deprecated Use mcpConfig instead. */
17
19
  mcpServers?: McpSpawnConfig;
18
20
  /** Directory override for ACP JSONL spawn logs */
19
21
  logDir?: string;
@@ -21,6 +23,11 @@ export interface SpawnOptions {
21
23
  interactive?: boolean;
22
24
  /** Abort signal used to terminate the spawned agent */
23
25
  signal?: AbortSignal;
26
+ /**
27
+ * Kill the spawned process after this many milliseconds of inactivity (no stdout data).
28
+ * Disabled when undefined.
29
+ */
30
+ activityTimeoutMs?: number;
24
31
  }
25
32
  /**
26
33
  * Token usage reported by a provider CLI spawn.
@@ -29,6 +36,7 @@ export interface SpawnUsage {
29
36
  inputTokens: number;
30
37
  outputTokens: number;
31
38
  cachedTokens?: number;
39
+ costUsd?: number;
32
40
  }
33
41
  /**
34
42
  * Result from spawning a provider CLI.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-code",
3
- "version": "3.0.130",
3
+ "version": "3.0.131",
4
4
  "description": "CLI tool to configure Poe API for developer workflows.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,8 +9,11 @@
9
9
  "packages/*"
10
10
  ],
11
11
  "scripts": {
12
- "build": "turbo run build && tsc -p tsconfig.build.json && node scripts/generate-bin-wrappers.mjs && node scripts/bundle.mjs",
12
+ "build": "turbo run build && npm run codegen:python-types && tsc -p tsconfig.build.json && node scripts/generate-bin-wrappers.mjs && node scripts/bundle.mjs",
13
13
  "build:deps": "node scripts/list-workspace-deps.mjs",
14
+ "codegen:python-types": "tsx scripts/generate-agent-spawn-py-types.ts",
15
+ "codegen:check:python-types": "tsx scripts/generate-agent-spawn-py-types.ts --check",
16
+ "install:py-poe-spawn": "pip install -e packages/py-poe-spawn",
14
17
  "predev": "turbo run build --output-logs=none --log-prefix=none --verbosity=0 > /dev/null 2>&1",
15
18
  "dev": "tsx src/index.ts",
16
19
  "start": "node dist/bin.cjs",
@@ -93,19 +96,26 @@
93
96
  "devDependencies": {
94
97
  "@eslint/js": "^9.0.0",
95
98
  "@modelcontextprotocol/sdk": "^1.26.0",
99
+ "@poe-code/agent-defs": "*",
100
+ "@poe-code/agent-mcp-config": "*",
101
+ "@poe-code/agent-skill-config": "*",
96
102
  "@poe-code/agent-spawn": "*",
103
+ "@poe-code/cached-resource": "*",
97
104
  "@poe-code/cmdkit": "*",
98
- "@poe-code/github-workflows": "*",
105
+ "@poe-code/cmdkit-schema": "*",
99
106
  "@poe-code/config-mutations": "*",
100
107
  "@poe-code/design-system": "*",
101
108
  "@poe-code/e2e-docker-test-runner": "*",
102
109
  "@poe-code/experiment-loop": "*",
110
+ "@poe-code/github-workflows": "*",
103
111
  "@poe-code/pipeline": "*",
104
112
  "@poe-code/poe-acp-client": "*",
113
+ "@poe-code/poe-agent": "*",
105
114
  "@poe-code/poe-code-config": "*",
106
115
  "@poe-code/process-launcher": "*",
107
116
  "@poe-code/process-runner": "*",
108
117
  "@poe-code/ralph": "*",
118
+ "@poe-code/worktree": "*",
109
119
  "@types/mustache": "^4.2.6",
110
120
  "@types/node": "^25.2.2",
111
121
  "@types/semver": "^7.7.1",
@@ -116,11 +126,18 @@
116
126
  "globals": "^17.3.0",
117
127
  "husky": "^9.1.7",
118
128
  "memfs": "^4.56.10",
129
+ "opencode-poe-auth": "*",
119
130
  "poe-oauth": "*",
120
131
  "prettier": "^3.8.1",
132
+ "terminal-pilot": "*",
133
+ "terminal-pilot-mcp": "*",
121
134
  "terminal-png": "*",
135
+ "tiny-http-mcp-server": "*",
136
+ "tiny-mcp-client": "*",
122
137
  "tiny-stdio-mcp-server": "*",
123
138
  "tiny-stdio-mcp-test-server": "*",
139
+ "tokenfill": "*",
140
+ "ts-morph": "^27.0.2",
124
141
  "tsx": ">=4.21.0",
125
142
  "turbo": "^2.8.3",
126
143
  "typescript": "^5.9.3",