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.
- package/dist/cli/commands/experiment.js +68 -5
- package/dist/cli/commands/experiment.js.map +1 -1
- package/dist/cli/commands/spawn.js +59 -18
- package/dist/cli/commands/spawn.js.map +1 -1
- package/dist/codegen/agent-spawn-py-types.d.ts +19 -0
- package/dist/codegen/agent-spawn-py-types.js +330 -0
- package/dist/codegen/agent-spawn-py-types.js.map +1 -0
- package/dist/index.js +9096 -8565
- package/dist/index.js.map +4 -4
- package/dist/providers/claude-code.js +38 -10
- package/dist/providers/claude-code.js.map +4 -4
- package/dist/providers/codex.js +38 -10
- package/dist/providers/codex.js.map +4 -4
- package/dist/providers/create-provider.js +3 -3
- package/dist/providers/create-provider.js.map +1 -1
- package/dist/providers/kimi.js +47 -10
- package/dist/providers/kimi.js.map +4 -4
- package/dist/providers/opencode.js +38 -10
- package/dist/providers/opencode.js.map +4 -4
- package/dist/providers/poe-agent.js +13 -10
- package/dist/providers/poe-agent.js.map +3 -3
- package/dist/providers/spawn-options.d.ts +2 -0
- package/dist/sdk/experiment.d.ts +5 -1
- package/dist/sdk/experiment.js +30 -10
- package/dist/sdk/experiment.js.map +1 -1
- package/dist/sdk/pipeline.js +25 -11
- package/dist/sdk/pipeline.js.map +1 -1
- package/dist/sdk/ralph.js +23 -10
- package/dist/sdk/ralph.js.map +1 -1
- package/dist/sdk/spawn.js +70 -6
- package/dist/sdk/spawn.js.map +1 -1
- package/dist/sdk/types.d.ts +8 -0
- package/package.json +20 -3
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
4
|
+
import { Node, Project, SyntaxKind } from "ts-morph";
|
|
5
|
+
const GENERATED_TYPES_OUTPUT_PATH = [
|
|
6
|
+
"packages",
|
|
7
|
+
"py-poe-spawn",
|
|
8
|
+
"src",
|
|
9
|
+
"poe_spawn",
|
|
10
|
+
"types.py"
|
|
11
|
+
];
|
|
12
|
+
export function generateAgentSpawnPythonTypes(options) {
|
|
13
|
+
const usageEventInterface = options.acpTypesSourceFile.getInterface("UsageEvent");
|
|
14
|
+
const usagePayloadSignature = usageEventInterface
|
|
15
|
+
? buildUsagePayloadSignature(usageEventInterface)
|
|
16
|
+
: undefined;
|
|
17
|
+
const events = resolveKnownEventNames(options.acpTypesSourceFile).map((name) => {
|
|
18
|
+
const declaration = options.acpTypesSourceFile.getInterfaceOrThrow(name);
|
|
19
|
+
return buildPythonClass(declaration, usagePayloadSignature);
|
|
20
|
+
});
|
|
21
|
+
const agentIds = resolveSpawnableAgentIds(options.spawnConfigs);
|
|
22
|
+
const spawnModes = resolveStringLiteralUnion(options.spawnTypesSourceFile, "SpawnMode");
|
|
23
|
+
const acpEventNames = events
|
|
24
|
+
.filter((event) => event.eventValue !== "spawn_result")
|
|
25
|
+
.map((event) => event.name);
|
|
26
|
+
return [
|
|
27
|
+
"from dataclasses import dataclass",
|
|
28
|
+
"from enum import Enum",
|
|
29
|
+
"from typing import Literal, Optional, Union",
|
|
30
|
+
"",
|
|
31
|
+
"",
|
|
32
|
+
renderEnum("Agent", agentIds),
|
|
33
|
+
"",
|
|
34
|
+
"",
|
|
35
|
+
renderEnum("SpawnMode", spawnModes),
|
|
36
|
+
"",
|
|
37
|
+
"",
|
|
38
|
+
events.map(renderDataclass).join("\n\n\n"),
|
|
39
|
+
"",
|
|
40
|
+
"",
|
|
41
|
+
renderAcpEventUnion(acpEventNames)
|
|
42
|
+
].join("\n");
|
|
43
|
+
}
|
|
44
|
+
export async function runAgentSpawnPythonTypeCodegen(options = {}) {
|
|
45
|
+
const repoRoot = options.repoRoot ?? resolveRepoRoot();
|
|
46
|
+
const project = options.project ??
|
|
47
|
+
new Project({
|
|
48
|
+
skipAddingFilesFromTsConfig: true
|
|
49
|
+
});
|
|
50
|
+
const acpTypesSourceFile = project.addSourceFileAtPath(path.join(repoRoot, "packages", "agent-spawn", "src", "acp", "types.ts"));
|
|
51
|
+
const spawnTypesSourceFile = project.addSourceFileAtPath(path.join(repoRoot, "packages", "agent-spawn", "src", "types.ts"));
|
|
52
|
+
const spawnConfigs = options.spawnConfigs ?? (await loadSpawnConfigs(repoRoot));
|
|
53
|
+
const generated = `${generateAgentSpawnPythonTypes({
|
|
54
|
+
acpTypesSourceFile,
|
|
55
|
+
spawnTypesSourceFile,
|
|
56
|
+
spawnConfigs
|
|
57
|
+
})}\n`;
|
|
58
|
+
const outputPath = path.join(repoRoot, ...GENERATED_TYPES_OUTPUT_PATH);
|
|
59
|
+
const existing = await readFileIfExists(outputPath);
|
|
60
|
+
if (options.check) {
|
|
61
|
+
if (existing !== generated) {
|
|
62
|
+
throw new Error(`Generated Python types are out of date. Run \`npm run codegen:python-types\`.`);
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
67
|
+
await fs.writeFile(outputPath, generated, "utf8");
|
|
68
|
+
}
|
|
69
|
+
function resolveRepoRoot() {
|
|
70
|
+
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
71
|
+
}
|
|
72
|
+
async function readFileIfExists(filePath) {
|
|
73
|
+
try {
|
|
74
|
+
return await fs.readFile(filePath, "utf8");
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.code === "ENOENT") {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function loadSpawnConfigs(repoRoot) {
|
|
84
|
+
const moduleUrl = pathToFileURL(path.join(repoRoot, "packages", "agent-spawn", "src", "configs", "index.ts")).href;
|
|
85
|
+
const module = (await import(moduleUrl));
|
|
86
|
+
return module.allSpawnConfigs;
|
|
87
|
+
}
|
|
88
|
+
function resolveKnownEventNames(sourceFile) {
|
|
89
|
+
const knownAcpEvent = sourceFile.getTypeAliasOrThrow("KnownAcpEvent");
|
|
90
|
+
const typeNode = knownAcpEvent.getTypeNodeOrThrow();
|
|
91
|
+
if (!Node.isUnionTypeNode(typeNode)) {
|
|
92
|
+
if (!Node.isTypeReference(typeNode)) {
|
|
93
|
+
throw new Error("KnownAcpEvent must reference one or more interfaces.");
|
|
94
|
+
}
|
|
95
|
+
return [typeNode.getTypeName().getText()];
|
|
96
|
+
}
|
|
97
|
+
return typeNode.getTypeNodes().map((node) => {
|
|
98
|
+
if (!Node.isTypeReference(node)) {
|
|
99
|
+
throw new Error(`KnownAcpEvent can only contain interface references. Received ${node.getText()}.`);
|
|
100
|
+
}
|
|
101
|
+
return node.getTypeName().getText();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function buildUsagePayloadSignature(usageEventInterface) {
|
|
105
|
+
return usageEventInterface
|
|
106
|
+
.getProperties()
|
|
107
|
+
.filter((property) => property.getName() !== "event" && !shouldSkipProperty(property.getName()))
|
|
108
|
+
.map((property) => {
|
|
109
|
+
const typeNode = property.getTypeNodeOrThrow();
|
|
110
|
+
const resolved = unwrapOptionalType(typeNode);
|
|
111
|
+
return `${property.getName()}:${resolved.typeNode.getText()}:${resolved.optional || property.hasQuestionToken()}`;
|
|
112
|
+
})
|
|
113
|
+
.join("|");
|
|
114
|
+
}
|
|
115
|
+
function buildPythonClass(declaration, usagePayloadSignature) {
|
|
116
|
+
const eventProperty = declaration.getPropertyOrThrow("event");
|
|
117
|
+
const eventValue = resolveStringLiteralType(eventProperty.getTypeNodeOrThrow());
|
|
118
|
+
const fields = declaration
|
|
119
|
+
.getProperties()
|
|
120
|
+
.filter((property) => !shouldSkipProperty(property.getName()))
|
|
121
|
+
.map((property) => buildPythonField(property, usagePayloadSignature))
|
|
122
|
+
.sort(comparePythonFields);
|
|
123
|
+
return {
|
|
124
|
+
name: declaration.getName(),
|
|
125
|
+
eventValue,
|
|
126
|
+
fields
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function buildPythonField(property, usagePayloadSignature) {
|
|
130
|
+
const typeNode = property.getTypeNodeOrThrow();
|
|
131
|
+
const resolved = unwrapOptionalType(typeNode);
|
|
132
|
+
const pythonName = toSnakeCase(property.getName());
|
|
133
|
+
const baseType = mapTypeNodeToPython(resolved.typeNode, property.getName(), usagePayloadSignature);
|
|
134
|
+
const optional = property.hasQuestionToken() || resolved.optional;
|
|
135
|
+
return {
|
|
136
|
+
name: pythonName,
|
|
137
|
+
type: optional ? wrapOptional(baseType) : baseType,
|
|
138
|
+
optional
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function comparePythonFields(left, right) {
|
|
142
|
+
if (left.name === "event") {
|
|
143
|
+
return -1;
|
|
144
|
+
}
|
|
145
|
+
if (right.name === "event") {
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
if (left.optional === right.optional) {
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
return left.optional ? 1 : -1;
|
|
152
|
+
}
|
|
153
|
+
function mapTypeNodeToPython(typeNode, propertyName, usagePayloadSignature) {
|
|
154
|
+
if (Node.isUnionTypeNode(typeNode)) {
|
|
155
|
+
const resolved = unwrapOptionalType(typeNode);
|
|
156
|
+
if (resolved.optional) {
|
|
157
|
+
return wrapOptional(mapTypeNodeToPython(resolved.typeNode, propertyName, usagePayloadSignature));
|
|
158
|
+
}
|
|
159
|
+
const literalUnion = renderLiteralUnion(typeNode.getTypeNodes());
|
|
160
|
+
if (literalUnion) {
|
|
161
|
+
return literalUnion;
|
|
162
|
+
}
|
|
163
|
+
const memberTypes = [
|
|
164
|
+
...new Set(typeNode
|
|
165
|
+
.getTypeNodes()
|
|
166
|
+
.map((node) => mapTypeNodeToPython(node, propertyName, usagePayloadSignature)))
|
|
167
|
+
];
|
|
168
|
+
return memberTypes.length === 1 ? memberTypes[0] : `Union[${memberTypes.join(", ")}]`;
|
|
169
|
+
}
|
|
170
|
+
if (Node.isParenthesizedTypeNode(typeNode)) {
|
|
171
|
+
return mapTypeNodeToPython(typeNode.getTypeNode(), propertyName, usagePayloadSignature);
|
|
172
|
+
}
|
|
173
|
+
if (Node.isTypeReference(typeNode)) {
|
|
174
|
+
const aliasDeclaration = resolveTypeAliasDeclaration(typeNode);
|
|
175
|
+
if (aliasDeclaration) {
|
|
176
|
+
return mapTypeNodeToPython(aliasDeclaration.getTypeNodeOrThrow(), propertyName, usagePayloadSignature);
|
|
177
|
+
}
|
|
178
|
+
if (typeNode.getTypeName().getText() === "Record") {
|
|
179
|
+
return "object";
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (Node.isLiteralTypeNode(typeNode)) {
|
|
183
|
+
const literal = typeNode.getLiteral();
|
|
184
|
+
if (Node.isStringLiteral(literal)) {
|
|
185
|
+
return `Literal["${literal.getLiteralValue()}"]`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (Node.isTypeLiteral(typeNode)) {
|
|
189
|
+
return isUsagePayloadType(typeNode, usagePayloadSignature) ? "UsageEvent" : "object";
|
|
190
|
+
}
|
|
191
|
+
if (typeNode.getKind() === SyntaxKind.StringKeyword) {
|
|
192
|
+
return "str";
|
|
193
|
+
}
|
|
194
|
+
if (typeNode.getKind() === SyntaxKind.NumberKeyword) {
|
|
195
|
+
return resolvePythonNumberType(propertyName);
|
|
196
|
+
}
|
|
197
|
+
if (typeNode.getKind() === SyntaxKind.BooleanKeyword) {
|
|
198
|
+
return "bool";
|
|
199
|
+
}
|
|
200
|
+
return "object";
|
|
201
|
+
}
|
|
202
|
+
function renderLiteralUnion(typeNodes) {
|
|
203
|
+
const literalNodes = typeNodes.filter((typeNode) => Node.isLiteralTypeNode(typeNode));
|
|
204
|
+
if (literalNodes.length !== typeNodes.length) {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
const literalValues = literalNodes
|
|
208
|
+
.map((typeNode) => typeNode.getLiteral())
|
|
209
|
+
.filter(Node.isStringLiteral)
|
|
210
|
+
.map((literal) => literal.getLiteralValue());
|
|
211
|
+
if (literalValues.length !== typeNodes.length) {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
return `Literal[${literalValues.map((value) => `"${value}"`).join(", ")}]`;
|
|
215
|
+
}
|
|
216
|
+
function resolveTypeAliasDeclaration(typeNode) {
|
|
217
|
+
if (!Node.isTypeReference(typeNode)) {
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
const type = typeNode.getType();
|
|
221
|
+
const aliasSymbol = type.getAliasSymbol();
|
|
222
|
+
const symbol = aliasSymbol ?? type.getSymbol();
|
|
223
|
+
return symbol?.getDeclarations().find(Node.isTypeAliasDeclaration);
|
|
224
|
+
}
|
|
225
|
+
function unwrapOptionalType(typeNode) {
|
|
226
|
+
if (!Node.isUnionTypeNode(typeNode)) {
|
|
227
|
+
return {
|
|
228
|
+
typeNode,
|
|
229
|
+
optional: false
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const nonNullableNodes = typeNode
|
|
233
|
+
.getTypeNodes()
|
|
234
|
+
.filter((node) => node.getKind() !== SyntaxKind.UndefinedKeyword)
|
|
235
|
+
.filter((node) => node.getKind() !== SyntaxKind.NullKeyword);
|
|
236
|
+
if (nonNullableNodes.length !== typeNode.getTypeNodes().length && nonNullableNodes.length === 1) {
|
|
237
|
+
return {
|
|
238
|
+
typeNode: nonNullableNodes[0],
|
|
239
|
+
optional: true
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
typeNode,
|
|
244
|
+
optional: false
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function resolveStringLiteralType(typeNode) {
|
|
248
|
+
if (!Node.isLiteralTypeNode(typeNode)) {
|
|
249
|
+
throw new Error(`Expected a string literal type, received ${typeNode.getText()}.`);
|
|
250
|
+
}
|
|
251
|
+
const literal = typeNode.getLiteral();
|
|
252
|
+
if (!Node.isStringLiteral(literal)) {
|
|
253
|
+
throw new Error(`Expected a string literal type, received ${typeNode.getText()}.`);
|
|
254
|
+
}
|
|
255
|
+
return literal.getLiteralValue();
|
|
256
|
+
}
|
|
257
|
+
function resolveStringLiteralUnion(sourceFile, aliasName) {
|
|
258
|
+
const alias = sourceFile.getTypeAliasOrThrow(aliasName);
|
|
259
|
+
const typeNode = alias.getTypeNodeOrThrow();
|
|
260
|
+
if (!Node.isUnionTypeNode(typeNode)) {
|
|
261
|
+
return [resolveStringLiteralType(typeNode)];
|
|
262
|
+
}
|
|
263
|
+
return typeNode.getTypeNodes().map(resolveStringLiteralType);
|
|
264
|
+
}
|
|
265
|
+
function resolveSpawnableAgentIds(spawnConfigs) {
|
|
266
|
+
return spawnConfigs.filter((config) => config.kind === "cli").map((config) => config.agentId);
|
|
267
|
+
}
|
|
268
|
+
function shouldSkipProperty(propertyName) {
|
|
269
|
+
return propertyName === "_meta";
|
|
270
|
+
}
|
|
271
|
+
function resolvePythonNumberType(propertyName) {
|
|
272
|
+
return propertyName.toLowerCase().includes("cost") ? "float" : "int";
|
|
273
|
+
}
|
|
274
|
+
function wrapOptional(typeName) {
|
|
275
|
+
return typeName.startsWith("Optional[") ? typeName : `Optional[${typeName}]`;
|
|
276
|
+
}
|
|
277
|
+
function isUsagePayloadType(typeNode, usagePayloadSignature) {
|
|
278
|
+
if (!usagePayloadSignature) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
const signature = typeNode
|
|
282
|
+
.getProperties()
|
|
283
|
+
.map((property) => {
|
|
284
|
+
const resolved = unwrapOptionalType(property.getTypeNodeOrThrow());
|
|
285
|
+
return `${property.getName()}:${resolved.typeNode.getText()}:${resolved.optional || property.hasQuestionToken()}`;
|
|
286
|
+
})
|
|
287
|
+
.join("|");
|
|
288
|
+
return signature === usagePayloadSignature;
|
|
289
|
+
}
|
|
290
|
+
function renderEnum(name, values) {
|
|
291
|
+
const lines = [`class ${name}(str, Enum):`];
|
|
292
|
+
if (values.length === 0) {
|
|
293
|
+
lines.push(" pass");
|
|
294
|
+
return lines.join("\n");
|
|
295
|
+
}
|
|
296
|
+
for (const value of values) {
|
|
297
|
+
lines.push(` ${toEnumMemberName(value)} = "${value}"`);
|
|
298
|
+
}
|
|
299
|
+
return lines.join("\n");
|
|
300
|
+
}
|
|
301
|
+
function renderDataclass(pythonClass) {
|
|
302
|
+
return [
|
|
303
|
+
"@dataclass",
|
|
304
|
+
`class ${pythonClass.name}:`,
|
|
305
|
+
...pythonClass.fields.map((field) => field.optional
|
|
306
|
+
? ` ${field.name}: ${field.type} = None`
|
|
307
|
+
: ` ${field.name}: ${field.type}`)
|
|
308
|
+
].join("\n");
|
|
309
|
+
}
|
|
310
|
+
function renderAcpEventUnion(eventNames) {
|
|
311
|
+
const lines = ["AcpEvent = Union["];
|
|
312
|
+
for (const eventName of eventNames) {
|
|
313
|
+
lines.push(` ${eventName},`);
|
|
314
|
+
}
|
|
315
|
+
lines.push("]");
|
|
316
|
+
return lines.join("\n");
|
|
317
|
+
}
|
|
318
|
+
function toEnumMemberName(value) {
|
|
319
|
+
return value
|
|
320
|
+
.replaceAll(/[^a-zA-Z0-9]+/g, "_")
|
|
321
|
+
.replaceAll(/^_+|_+$/g, "")
|
|
322
|
+
.toUpperCase();
|
|
323
|
+
}
|
|
324
|
+
function toSnakeCase(value) {
|
|
325
|
+
return value
|
|
326
|
+
.replaceAll(/([a-z0-9])([A-Z])/g, "$1_$2")
|
|
327
|
+
.replaceAll(/-/g, "_")
|
|
328
|
+
.toLowerCase();
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=agent-spawn-py-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-spawn-py-types.js","sourceRoot":"","sources":["../../src/codegen/agent-spawn-py-types.ts"],"names":[],"mappings":"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"}
|