poe-code 3.0.130 → 3.0.132

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 (49) hide show
  1. package/README.md +15 -1
  2. package/dist/cli/commands/spawn.js +175 -130
  3. package/dist/cli/commands/spawn.js.map +1 -1
  4. package/dist/cli/poe-agent-main.js +10 -9
  5. package/dist/cli/poe-agent-main.js.map +1 -1
  6. package/dist/cli/program.js +0 -2
  7. package/dist/cli/program.js.map +1 -1
  8. package/dist/codegen/agent-spawn-py-types.d.ts +19 -0
  9. package/dist/codegen/agent-spawn-py-types.js +330 -0
  10. package/dist/codegen/agent-spawn-py-types.js.map +1 -0
  11. package/dist/index.js +10217 -9564
  12. package/dist/index.js.map +4 -4
  13. package/dist/providers/claude-code.js +67 -33
  14. package/dist/providers/claude-code.js.map +4 -4
  15. package/dist/providers/codex.js +67 -33
  16. package/dist/providers/codex.js.map +4 -4
  17. package/dist/providers/create-provider.js +3 -3
  18. package/dist/providers/create-provider.js.map +1 -1
  19. package/dist/providers/kimi.js +76 -33
  20. package/dist/providers/kimi.js.map +4 -4
  21. package/dist/providers/opencode.js +67 -33
  22. package/dist/providers/opencode.js.map +4 -4
  23. package/dist/providers/poe-agent.js +13 -10
  24. package/dist/providers/poe-agent.js.map +3 -3
  25. package/dist/providers/spawn-options.d.ts +2 -0
  26. package/dist/sdk/experiment.js +23 -10
  27. package/dist/sdk/experiment.js.map +1 -1
  28. package/dist/sdk/launch.js +17 -1
  29. package/dist/sdk/launch.js.map +1 -1
  30. package/dist/sdk/pipeline.js +25 -11
  31. package/dist/sdk/pipeline.js.map +1 -1
  32. package/dist/sdk/ralph.js +23 -10
  33. package/dist/sdk/ralph.js.map +1 -1
  34. package/dist/sdk/spawn-core.d.ts +1 -1
  35. package/dist/sdk/spawn-core.js +54 -57
  36. package/dist/sdk/spawn-core.js.map +1 -1
  37. package/dist/sdk/spawn.js +95 -12
  38. package/dist/sdk/spawn.js.map +1 -1
  39. package/dist/sdk/types.d.ts +9 -1
  40. package/dist/workspace/resolve-spawn-workspace.d.ts +15 -0
  41. package/dist/workspace/resolve-spawn-workspace.js +28 -0
  42. package/dist/workspace/resolve-spawn-workspace.js.map +1 -0
  43. package/package.json +21 -3
  44. package/dist/cli/commands/research.d.ts +0 -13
  45. package/dist/cli/commands/research.js +0 -158
  46. package/dist/cli/commands/research.js.map +0 -1
  47. package/dist/sdk/research.d.ts +0 -62
  48. package/dist/sdk/research.js +0 -343
  49. package/dist/sdk/research.js.map +0 -1
@@ -1,343 +0,0 @@
1
- import path from "node:path";
2
- import { spawn as spawnSdk } from "./spawn.js";
3
- const RESEARCH_SYSTEM_PROMPT = [
4
- "You are a codebase research assistant.",
5
- "Read files and answer the user's question about the codebase.",
6
- "Do not modify files or suggest edits.",
7
- "Respond in Markdown."
8
- ].join("\n");
9
- export async function research(container, options) {
10
- const logger = options.logger;
11
- const source = await resolveSource({
12
- container,
13
- options,
14
- logger
15
- });
16
- const researchPrompt = buildResearchPrompt(options.prompt);
17
- const mode = options.mode ?? "read";
18
- const { events, result } = spawnSdk(options.agent, {
19
- prompt: researchPrompt,
20
- args: options.args ?? [],
21
- model: options.model,
22
- mode,
23
- cwd: source.cwd
24
- });
25
- const { teed, getOutput, done } = teeAcpStream(events);
26
- const resultPromise = (async () => {
27
- let outputPath;
28
- let markdownOutput = "";
29
- try {
30
- const final = await result;
31
- await done;
32
- markdownOutput = getOutput();
33
- const resumeCommand = final.threadId && options.resolveResumeCommand
34
- ? options.resolveResumeCommand(final.threadId, source.cwd)
35
- : undefined;
36
- const document = buildResearchDocument({
37
- prompt: options.prompt,
38
- agent: options.agent,
39
- path: source.cwd,
40
- github: source.github,
41
- resumeCommand,
42
- markdown: markdownOutput
43
- });
44
- outputPath = buildOutputPath(container.env.homeDir, options.prompt);
45
- await ensureDirectory(container.fs, path.dirname(outputPath));
46
- await container.fs.writeFile(outputPath, document, {
47
- encoding: "utf8"
48
- });
49
- if (final.exitCode !== 0) {
50
- const detail = final.stderr.trim() || final.stdout.trim();
51
- const suffix = detail ? `: ${detail}` : "";
52
- const label = options.agentLabel ?? options.agent;
53
- throw new Error(`${label} research failed with exit code ${final.exitCode}${suffix}`);
54
- }
55
- if (outputPath) {
56
- logger?.info?.(`Saved research to ${outputPath}`);
57
- }
58
- return {
59
- ...final,
60
- markdownOutput,
61
- outputPath,
62
- cwd: source.cwd,
63
- github: source.github
64
- };
65
- }
66
- finally {
67
- if (source.shouldCleanup && source.clonePath) {
68
- await removePath(container.fs, source.clonePath);
69
- }
70
- }
71
- })();
72
- return { events: teed, result: resultPromise };
73
- }
74
- export function buildSlug(value) {
75
- const trimmed = value.trim().toLowerCase();
76
- const maxLength = 48;
77
- let output = "";
78
- let pendingSeparator = false;
79
- for (let index = 0; index < trimmed.length; index += 1) {
80
- const char = trimmed[index] ?? "";
81
- const code = char.charCodeAt(0);
82
- if (isSlugChar(code)) {
83
- if (pendingSeparator && output.length > 0) {
84
- output += "-";
85
- }
86
- pendingSeparator = false;
87
- output += char;
88
- }
89
- else {
90
- pendingSeparator = true;
91
- }
92
- if (output.length >= maxLength) {
93
- break;
94
- }
95
- }
96
- output = trimTrailingDashes(output.slice(0, maxLength));
97
- return output.length > 0 ? output : "research";
98
- }
99
- export function buildResearchPrompt(prompt) {
100
- return `${RESEARCH_SYSTEM_PROMPT}\n\n${prompt}`;
101
- }
102
- export function buildResearchDocument(input) {
103
- const lines = ["---"];
104
- lines.push(`research_prompt: ${formatYamlString(input.prompt)}`);
105
- lines.push(`agent: ${formatYamlString(input.agent)}`);
106
- lines.push(`path: ${formatYamlString(input.path)}`);
107
- if (input.github) {
108
- lines.push(`github: ${formatYamlString(input.github)}`);
109
- }
110
- if (input.resumeCommand) {
111
- lines.push(`resume_session_cmd: ${formatYamlString(input.resumeCommand)}`);
112
- }
113
- lines.push("---", "", input.markdown);
114
- return lines.join("\n");
115
- }
116
- export function buildClonePath(homeDir, github) {
117
- const slug = extractRepoSlug(github);
118
- return path.join(homeDir, ".poe-code", "repos", slug);
119
- }
120
- export function extractRepoSlug(value) {
121
- const trimmed = value.trim();
122
- if (trimmed.length === 0) {
123
- return "repo";
124
- }
125
- let pathPart = trimmed;
126
- const schemeIndex = trimmed.indexOf("://");
127
- if (schemeIndex !== -1) {
128
- try {
129
- const url = new URL(trimmed);
130
- pathPart = url.pathname;
131
- }
132
- catch {
133
- pathPart = trimmed.slice(schemeIndex + 3);
134
- }
135
- }
136
- else if (trimmed.startsWith("git@")) {
137
- const colonIndex = trimmed.indexOf(":");
138
- if (colonIndex !== -1) {
139
- pathPart = trimmed.slice(colonIndex + 1);
140
- }
141
- }
142
- if (pathPart.startsWith("/")) {
143
- pathPart = pathPart.slice(1);
144
- }
145
- if (pathPart.endsWith(".git")) {
146
- pathPart = pathPart.slice(0, -4);
147
- }
148
- const parts = pathPart.split("/");
149
- const owner = parts[0] ?? "";
150
- const repo = parts[1] ?? "";
151
- const combined = repo.length > 0 ? `${owner}-${repo}` : owner;
152
- const slug = buildSlug(combined);
153
- return slug.length > 0 ? slug : buildSlug(trimmed);
154
- }
155
- export function buildOutputPath(homeDir, prompt, now = new Date()) {
156
- const timestamp = formatTimestamp(now);
157
- const slug = buildSlug(prompt);
158
- return path.join(homeDir, ".poe-code", "research", `${timestamp}-${slug}.md`);
159
- }
160
- export function resolveGithubCloneUrl(value) {
161
- const trimmed = value.trim();
162
- if (trimmed.startsWith("git@") || trimmed.includes("://")) {
163
- return trimmed;
164
- }
165
- const suffix = trimmed.endsWith(".git") ? trimmed : `${trimmed}.git`;
166
- return `https://github.com/${suffix}`;
167
- }
168
- export async function resolveSource(input) {
169
- const { container, options } = input;
170
- const logger = input.logger;
171
- if (options.github) {
172
- const cloneUrl = resolveGithubCloneUrl(options.github);
173
- const clonePath = buildClonePath(container.env.homeDir, options.github);
174
- await ensureDirectory(container.fs, path.dirname(clonePath));
175
- const exists = await pathExists(container.fs, clonePath);
176
- if (!exists) {
177
- const cloneResult = await container.commandRunner("git", ["clone", "--depth", "1", cloneUrl, clonePath]);
178
- if (cloneResult.exitCode !== 0) {
179
- throw new Error(`git clone failed with exit code ${cloneResult.exitCode}: ${cloneResult.stderr.trim()}`);
180
- }
181
- return {
182
- cwd: clonePath,
183
- github: options.github,
184
- clonePath,
185
- shouldCleanup: !options.keep
186
- };
187
- }
188
- const statusResult = await container.commandRunner("git", ["status", "--porcelain"], { cwd: clonePath });
189
- if (statusResult.exitCode !== 0) {
190
- logger?.warn?.("Unable to check git status; using existing clone.");
191
- }
192
- else if (statusResult.stdout.trim().length > 0) {
193
- logger?.warn?.("Repo has uncommitted changes; skipping update.");
194
- }
195
- else {
196
- const pullResult = await container.commandRunner("git", ["pull", "--ff-only"], { cwd: clonePath });
197
- if (pullResult.exitCode !== 0) {
198
- logger?.warn?.("Git pull failed; using existing clone.");
199
- }
200
- }
201
- return {
202
- cwd: clonePath,
203
- github: options.github,
204
- clonePath,
205
- shouldCleanup: false
206
- };
207
- }
208
- if (options.path) {
209
- return {
210
- cwd: resolvePath(container.env.cwd, options.path),
211
- shouldCleanup: false
212
- };
213
- }
214
- if (options.cwd) {
215
- return {
216
- cwd: resolvePath(container.env.cwd, options.cwd),
217
- shouldCleanup: false
218
- };
219
- }
220
- return {
221
- cwd: container.env.cwd,
222
- shouldCleanup: false
223
- };
224
- }
225
- function isSlugChar(code) {
226
- if (code >= 48 && code <= 57) {
227
- return true;
228
- }
229
- if (code >= 97 && code <= 122) {
230
- return true;
231
- }
232
- return false;
233
- }
234
- function trimTrailingDashes(value) {
235
- let output = value;
236
- while (output.endsWith("-")) {
237
- output = output.slice(0, -1);
238
- }
239
- return output;
240
- }
241
- function formatTimestamp(now) {
242
- const year = now.getUTCFullYear();
243
- const month = padNumber(now.getUTCMonth() + 1, 2);
244
- const day = padNumber(now.getUTCDate(), 2);
245
- const hours = padNumber(now.getUTCHours(), 2);
246
- const minutes = padNumber(now.getUTCMinutes(), 2);
247
- const seconds = padNumber(now.getUTCSeconds(), 2);
248
- return `${year}${month}${day}-${hours}${minutes}${seconds}`;
249
- }
250
- function padNumber(value, length) {
251
- let output = String(value);
252
- while (output.length < length) {
253
- output = `0${output}`;
254
- }
255
- return output;
256
- }
257
- function formatYamlString(value) {
258
- return JSON.stringify(value);
259
- }
260
- function resolvePath(baseDir, candidate) {
261
- if (path.isAbsolute(candidate)) {
262
- return candidate;
263
- }
264
- return path.resolve(baseDir, candidate);
265
- }
266
- function teeAcpStream(events) {
267
- const chunks = [];
268
- let resolveDone;
269
- const done = new Promise((resolve) => {
270
- resolveDone = resolve;
271
- });
272
- const teed = (async function* () {
273
- try {
274
- for await (const event of events) {
275
- if (event.event === "agent_message") {
276
- chunks.push(event.text);
277
- }
278
- yield event;
279
- }
280
- }
281
- finally {
282
- resolveDone?.();
283
- }
284
- })();
285
- return {
286
- teed,
287
- getOutput: () => chunks.join(""),
288
- done
289
- };
290
- }
291
- async function ensureDirectory(fs, target) {
292
- await fs.mkdir(target, { recursive: true });
293
- }
294
- async function pathExists(fs, target) {
295
- try {
296
- await fs.stat(target);
297
- return true;
298
- }
299
- catch (error) {
300
- if (error &&
301
- typeof error === "object" &&
302
- "code" in error &&
303
- error.code === "ENOENT") {
304
- return false;
305
- }
306
- throw error;
307
- }
308
- }
309
- async function removePath(fs, target) {
310
- if (typeof fs.rm === "function") {
311
- await fs.rm(target, { recursive: true, force: true });
312
- return;
313
- }
314
- await removePathFallback(fs, target);
315
- }
316
- async function removePathFallback(fs, target) {
317
- let stats;
318
- try {
319
- stats = await fs.stat(target);
320
- }
321
- catch (error) {
322
- if (error &&
323
- typeof error === "object" &&
324
- "code" in error &&
325
- error.code === "ENOENT") {
326
- return;
327
- }
328
- throw error;
329
- }
330
- if (stats && typeof stats.isDirectory === "function" && stats.isDirectory()) {
331
- const entries = await fs.readdir(target);
332
- for (const entry of entries) {
333
- await removePathFallback(fs, path.join(target, entry));
334
- }
335
- }
336
- try {
337
- await fs.unlink(target);
338
- }
339
- catch {
340
- // Ignore errors if unlink fails on directories in fallback.
341
- }
342
- }
343
- //# sourceMappingURL=research.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/sdk/research.ts"],"names":[],"mappings":"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"}