poe-code 3.0.129 → 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,5 +1,5 @@
1
1
  import { type ExperimentFileSystem, type ExperimentRunOptions, type ExperimentRunResult, type JournalEntry } from "@poe-code/experiment-loop";
2
- export type { AgentRunInput, AgentRunResult, EvalResult, ExperimentFileSystem, ExperimentFrontmatter, ExperimentFrontmatterStatus, ExperimentRunOptions, ExperimentRunResult, ExperimentStopReason, JournalEntry, MetricDef, MetricDirection } from "@poe-code/experiment-loop";
2
+ export type { AgentRunInput, AgentRunResult, EvalResult, ExperimentFileSystem, ExperimentFrontmatter, ExperimentRunOptions, ExperimentRunResult, ExperimentStopReason, JournalEntry, MetricDef, MetricDirection } from "@poe-code/experiment-loop";
3
3
  export interface ExperimentJournalOptions {
4
4
  cwd: string;
5
5
  homeDir: string;
@@ -8,3 +8,7 @@ export interface ExperimentJournalOptions {
8
8
  }
9
9
  export declare function runExperiment(options: ExperimentRunOptions): Promise<ExperimentRunResult>;
10
10
  export declare function readExperimentJournal(options: ExperimentJournalOptions): Promise<JournalEntry[]>;
11
+ export interface AppendJournalEntryOptions extends ExperimentJournalOptions {
12
+ entry: JournalEntry;
13
+ }
14
+ export declare function appendExperimentJournalEntry(options: AppendJournalEntryOptions): Promise<void>;
@@ -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
  }
@@ -56,4 +69,11 @@ export async function readExperimentJournal(options) {
56
69
  const journal = new ExperimentJournal(resolveJournalPath(absoluteDocPath), fs);
57
70
  return await journal.readAll();
58
71
  }
72
+ export async function appendExperimentJournalEntry(options) {
73
+ const fs = options.fs ?? createDefaultFs();
74
+ const absoluteDocPath = resolveAbsoluteDocPath(options.docPath, options.cwd, options.homeDir);
75
+ const journal = new ExperimentJournal(resolveJournalPath(absoluteDocPath), fs);
76
+ await journal.init();
77
+ await journal.log(options.entry);
78
+ }
59
79
  //# sourceMappingURL=experiment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/sdk/experiment.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,0BAA0B,EAKhD,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwB/C,SAAS,eAAe;IACtB,OAAO;QACL,QAAQ,EAAE,UAAU,CAAC,QAA4C;QACjE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,IAAI,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YACjC,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YACtC,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe,EAAE,GAAW,EAAE,OAAe;IAC3E,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,gBAAgB,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,OAAO,0BAA0B,CAAC;QAChC,GAAG,OAAO;QACV,QAAQ,EAAE,KAAK,EAAE,KAAmE,EAAE,EAAE;YACtF,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,MAAM,CAAC;QACtB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAiC;IAEjC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,CAAC"}
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.129",
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",