primitive-admin 1.1.0-alpha.84 → 1.1.0-alpha.86
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/README.md +77 -1
- package/assets/skill/skills/primitive-platform/SKILL.md +8 -0
- package/dist/src/commands/admins.js +29 -32
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.js +15 -2
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.js +12 -5
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +2 -1
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/catalog.js +26 -10
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collection-type-configs.js +2 -1
- package/dist/src/commands/collection-type-configs.js.map +1 -1
- package/dist/src/commands/collections.js +675 -19
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/connections.js +8 -9
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/cron-triggers.js +2 -1
- package/dist/src/commands/cron-triggers.js.map +1 -1
- package/dist/src/commands/database-type-configs.js +4 -3
- package/dist/src/commands/database-type-configs.js.map +1 -1
- package/dist/src/commands/databases.js +27 -10
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +20 -0
- package/dist/src/commands/documents.js +236 -28
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.js +2 -1
- package/dist/src/commands/email-templates.js.map +1 -1
- package/dist/src/commands/env.js +11 -1
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/feature-flags.js +2 -1
- package/dist/src/commands/feature-flags.js.map +1 -1
- package/dist/src/commands/functions.js +58 -6
- package/dist/src/commands/functions.js.map +1 -1
- package/dist/src/commands/group-type-configs.js +2 -1
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/groups.js +29 -8
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.js +17 -11
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/integrations.js +30 -9
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/locks.js +2 -1
- package/dist/src/commands/locks.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.js +2 -1
- package/dist/src/commands/metadata-category-configs.js.map +1 -1
- package/dist/src/commands/metadata.js +8 -1
- package/dist/src/commands/metadata.js.map +1 -1
- package/dist/src/commands/prompts.js +28 -11
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.js +2 -1
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.js +15 -6
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/secrets.js +2 -1
- package/dist/src/commands/secrets.js.map +1 -1
- package/dist/src/commands/sessions.js +10 -9
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync.d.ts +125 -29
- package/dist/src/commands/sync.js +865 -88
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +2 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +19 -10
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.js +2 -1
- package/dist/src/commands/vars.js.map +1 -1
- package/dist/src/commands/waitlist.js +2 -1
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.js +17 -10
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.js +36 -18
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +176 -8
- package/dist/src/lib/api-client.js +205 -68
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/collection-export.d.ts +184 -0
- package/dist/src/lib/collection-export.js +252 -0
- package/dist/src/lib/collection-export.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.js +44 -8
- package/dist/src/lib/config-object-descriptor.js.map +1 -1
- package/dist/src/lib/config-payload.d.ts +8 -1
- package/dist/src/lib/config-payload.js +49 -4
- package/dist/src/lib/config-payload.js.map +1 -1
- package/dist/src/lib/config-surface.d.ts +2 -1
- package/dist/src/lib/config-surface.js +54 -3
- package/dist/src/lib/config-surface.js.map +1 -1
- package/dist/src/lib/deprecation.d.ts +22 -0
- package/dist/src/lib/deprecation.js +43 -0
- package/dist/src/lib/deprecation.js.map +1 -0
- package/dist/src/lib/function-db-types.d.ts +14 -3
- package/dist/src/lib/function-db-types.js +55 -11
- package/dist/src/lib/function-db-types.js.map +1 -1
- package/dist/src/lib/function-trigger-listing.d.ts +27 -0
- package/dist/src/lib/function-trigger-listing.js +70 -0
- package/dist/src/lib/function-trigger-listing.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +715 -4
- package/dist/src/lib/generated-config-surfaces.js +2424 -226
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/list-options.d.ts +68 -0
- package/dist/src/lib/list-options.js +89 -0
- package/dist/src/lib/list-options.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +34 -1
- package/dist/src/lib/log-inspection.js +28 -0
- package/dist/src/lib/log-inspection.js.map +1 -1
- package/dist/src/lib/paginate.d.ts +15 -0
- package/dist/src/lib/paginate.js +17 -0
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/prompt-cost-format.d.ts +11 -0
- package/dist/src/lib/prompt-cost-format.js +41 -0
- package/dist/src/lib/prompt-cost-format.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +53 -0
- package/dist/src/lib/prompt-schema-codegen.js +253 -3
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -1
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/banners.d.ts +6 -0
- package/dist/src/lib/swift-codegen/banners.js +6 -0
- package/dist/src/lib/swift-codegen/banners.js.map +1 -1
- package/dist/src/lib/swift-codegen/dbGenerator.js +11 -3
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +7 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js +41 -3
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/generator.js +8 -2
- package/dist/src/lib/swift-codegen/generator.js.map +1 -1
- package/package.json +2 -2
|
@@ -43,6 +43,20 @@
|
|
|
43
43
|
* rule and same reason as `resolveFunctionKey` (CR3281-001) and
|
|
44
44
|
* `databaseTypeSources` (SO3182-003): the generator reads the key the platform
|
|
45
45
|
* will hear about, never the file name alone.
|
|
46
|
+
*
|
|
47
|
+
* ── Agents (#3798) ───────────────────────────────────────────────────────
|
|
48
|
+
*
|
|
49
|
+
* A `kind = "agent"` prompt is never run single-shot, so it has no `output`.
|
|
50
|
+
* Its entry is `{ agent: { variables; clientTools; events } }` instead —
|
|
51
|
+
* `<Key>AgentVariables` from `inputSchema` (the session's variables),
|
|
52
|
+
* `<Key>Tool<Name>Input`/`Output` for each CLIENT tool (a server tool's
|
|
53
|
+
* schemas are its function's, typed in the functions declaration) and
|
|
54
|
+
* `<Key>Event<Name>` for each event kind — and the SDK's `PromptKeys` excludes
|
|
55
|
+
* it, so `ctx.prompts.run("<agent>")` is a compile error. The same types go to
|
|
56
|
+
* the client side as `functions/generated/<key>.agent.generated.ts`
|
|
57
|
+
* (`renderAgentClientFiles`), which an app's web code imports. The
|
|
58
|
+
* declaration is read through `normalizeAgentDeclaration`, the one reader
|
|
59
|
+
* that applies an agent's defaults.
|
|
46
60
|
*/
|
|
47
61
|
import { existsSync, readdirSync, readFileSync } from "fs";
|
|
48
62
|
import { basename, join } from "path";
|
|
@@ -50,6 +64,11 @@ import { parseConfigToml } from "./config-toml.js";
|
|
|
50
64
|
import { safeJsonParse } from "./workflow-payload.js";
|
|
51
65
|
import { FunctionSchemaCodegenError, renderTypeDecl, } from "./function-schema-codegen.js";
|
|
52
66
|
import { workflowTypeBaseName } from "./workflow-codegen/naming.js";
|
|
67
|
+
import { tsStringLiteral } from "./codegen-shared/prettierStable.js";
|
|
68
|
+
import { fingerprintToml } from "./db-codegen/dbFingerprint.js";
|
|
69
|
+
import { normalizeAgentDeclaration, promptKindOf, resolveAgentDeclaration, } from "./generated-config-surfaces.js";
|
|
70
|
+
/** The client-side artifact an agent prompt gets, beside the invokers (#3798). */
|
|
71
|
+
export const AGENT_CLIENT_FILE_SUFFIX = ".agent.generated.ts";
|
|
53
72
|
/** The regenerated declaration beside `primitive-function-types.d.ts`. */
|
|
54
73
|
export const PROMPT_TYPES_DECLARATION_FILE = "primitive-prompt-types.d.ts";
|
|
55
74
|
/** The key push will identify this file by. */
|
|
@@ -122,8 +141,121 @@ export function describePromptSchema(source) {
|
|
|
122
141
|
outputSchema,
|
|
123
142
|
typeBaseName,
|
|
124
143
|
outputTypeName: `${typeBaseName}PromptOutput`,
|
|
144
|
+
agent: promptKindOf(table) === "agent"
|
|
145
|
+
? describeAgentTypes(fileLabel(source), typeBaseName, table)
|
|
146
|
+
: null,
|
|
125
147
|
};
|
|
126
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* A declared name as a property key: bare when it is an identifier, quoted
|
|
151
|
+
* (the way Prettier quotes a string) when it carries a `-`.
|
|
152
|
+
*/
|
|
153
|
+
function propertyKey(name) {
|
|
154
|
+
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : tsStringLiteral(name);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* An agent prompt's contract, typed (#3798). The declaration is checked by the
|
|
158
|
+
* same rule push runs (its file-decidable half), so a malformed one fails here
|
|
159
|
+
* naming the file rather than typing something the platform refuses; two
|
|
160
|
+
* client tools (or two events) whose names sanitize to one identifier are
|
|
161
|
+
* refused naming both.
|
|
162
|
+
*/
|
|
163
|
+
function describeAgentTypes(label, typeBaseName, table) {
|
|
164
|
+
const resolution = resolveAgentDeclaration({ kind: "agent", agent: table.agent });
|
|
165
|
+
if (resolution.ok === false) {
|
|
166
|
+
throw new FunctionSchemaCodegenError(`${label}: ${resolution.refusals.map((r) => r.message).join("; ")}`);
|
|
167
|
+
}
|
|
168
|
+
let inputSchema;
|
|
169
|
+
try {
|
|
170
|
+
inputSchema = safeJsonParse(table.inputSchema);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw new FunctionSchemaCodegenError(`${label}: \`inputSchema\` is not valid JSON (${error?.message ?? error})`);
|
|
174
|
+
}
|
|
175
|
+
const declaration = normalizeAgentDeclaration(resolution.declaration);
|
|
176
|
+
const claimed = (what) => {
|
|
177
|
+
const byBase = new Map();
|
|
178
|
+
return (name) => {
|
|
179
|
+
const base = workflowTypeBaseName(name);
|
|
180
|
+
const other = byBase.get(base);
|
|
181
|
+
if (other !== undefined && other !== name) {
|
|
182
|
+
throw new FunctionSchemaCodegenError(`${label}: ${what} names '${other}' and '${name}' both name the ` +
|
|
183
|
+
`generated type \`${typeBaseName}${what === "tool" ? "Tool" : "Event"}${base}\` — ` +
|
|
184
|
+
"rename one so the two do not collide after sanitizing");
|
|
185
|
+
}
|
|
186
|
+
byBase.set(base, name);
|
|
187
|
+
return base;
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
const toolBase = claimed("tool");
|
|
191
|
+
const eventBase = claimed("event");
|
|
192
|
+
const clientTools = declaration.tools
|
|
193
|
+
.filter((tool) => tool.runs === "client")
|
|
194
|
+
.map((tool) => {
|
|
195
|
+
const base = `${typeBaseName}Tool${toolBase(tool.name)}`;
|
|
196
|
+
return {
|
|
197
|
+
name: tool.name,
|
|
198
|
+
input: {
|
|
199
|
+
name: tool.name,
|
|
200
|
+
typeName: `${base}Input`,
|
|
201
|
+
schema: tool.inputSchema,
|
|
202
|
+
},
|
|
203
|
+
output: {
|
|
204
|
+
name: tool.name,
|
|
205
|
+
typeName: `${base}Output`,
|
|
206
|
+
schema: tool.outputSchema,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
const events = declaration.events.map((event) => ({
|
|
211
|
+
name: event.name,
|
|
212
|
+
typeName: `${typeBaseName}Event${eventBase(event.name)}`,
|
|
213
|
+
schema: event.schema,
|
|
214
|
+
}));
|
|
215
|
+
return {
|
|
216
|
+
variablesTypeName: `${typeBaseName}AgentVariables`,
|
|
217
|
+
inputSchema,
|
|
218
|
+
clientTools,
|
|
219
|
+
events,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/** Render one agent type, naming the file and the path when it cannot be. */
|
|
223
|
+
function renderAgentType(prompt, typeName, schema, path) {
|
|
224
|
+
try {
|
|
225
|
+
return renderTypeDecl(typeName, schema);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
if (error instanceof FunctionSchemaCodegenError)
|
|
229
|
+
throw error;
|
|
230
|
+
throw new FunctionSchemaCodegenError(`${prompt.fileLabel}: \`${path}\` cannot be rendered as a TypeScript ` +
|
|
231
|
+
`type (${error?.message ?? error})`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/** Every type declaration an agent contributes, in a fixed order. */
|
|
235
|
+
function renderAgentTypeDecls(prompt) {
|
|
236
|
+
const agent = prompt.agent;
|
|
237
|
+
return [
|
|
238
|
+
renderAgentType(prompt, agent.variablesTypeName, agent.inputSchema, "inputSchema"),
|
|
239
|
+
...agent.clientTools.flatMap((tool) => [
|
|
240
|
+
renderAgentType(prompt, tool.input.typeName, tool.input.schema, `tools.${tool.name}.inputSchema`),
|
|
241
|
+
renderAgentType(prompt, tool.output.typeName, tool.output.schema, `tools.${tool.name}.outputSchema`),
|
|
242
|
+
]),
|
|
243
|
+
...agent.events.map((event) => renderAgentType(prompt, event.typeName, event.schema, `events.${event.name}.schema`)),
|
|
244
|
+
];
|
|
245
|
+
}
|
|
246
|
+
/** The one-line `{ agent: … }` entry of `PrimitivePromptSchemas`. */
|
|
247
|
+
function agentSchemaEntry(prompt) {
|
|
248
|
+
const agent = prompt.agent;
|
|
249
|
+
const tools = agent.clientTools
|
|
250
|
+
.map((tool) => `${propertyKey(tool.name)}: { input: ${tool.input.typeName}; output: ${tool.output.typeName} }`)
|
|
251
|
+
.join("; ");
|
|
252
|
+
const events = agent.events
|
|
253
|
+
.map((event) => `${propertyKey(event.name)}: ${event.typeName}`)
|
|
254
|
+
.join("; ");
|
|
255
|
+
return (`{ agent: { variables: ${agent.variablesTypeName}; ` +
|
|
256
|
+
`clientTools: {${tools ? ` ${tools} ` : ""}}; ` +
|
|
257
|
+
`events: {${events ? ` ${events} ` : ""}} } }`);
|
|
258
|
+
}
|
|
127
259
|
/**
|
|
128
260
|
* Describe every source, sorted by key, refusing the two collisions that
|
|
129
261
|
* would silently render one prompt over another: two files resolving to one
|
|
@@ -156,8 +288,45 @@ function describeAll(sources) {
|
|
|
156
288
|
}
|
|
157
289
|
byBaseName.set(prompt.typeBaseName, prompt.key);
|
|
158
290
|
}
|
|
291
|
+
// #3798 (CSO-3798-001) — an agent's types are named `<Key>Tool…`/`<Key>Event…`,
|
|
292
|
+
// so they can land on another prompt's name even when the two bases differ
|
|
293
|
+
// (event `prompt-output` of `advisor` and the output of `advisor-event`).
|
|
294
|
+
// Every declared name is registered, and a second claim is refused naming
|
|
295
|
+
// both sources rather than one silently redeclaring the other.
|
|
296
|
+
const byTypeName = new Map();
|
|
297
|
+
for (const { prompt } of described) {
|
|
298
|
+
for (const { typeName, path } of declaredTypeNames(prompt)) {
|
|
299
|
+
const where = `${prompt.fileLabel} (\`${path}\`)`;
|
|
300
|
+
const other = byTypeName.get(typeName);
|
|
301
|
+
if (other !== undefined) {
|
|
302
|
+
throw new FunctionSchemaCodegenError(`${other} and ${where} both declare the generated type ` +
|
|
303
|
+
`\`${typeName}\` — rename one so the two do not collide after sanitizing`);
|
|
304
|
+
}
|
|
305
|
+
byTypeName.set(typeName, where);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
159
308
|
return described;
|
|
160
309
|
}
|
|
310
|
+
/** Every type name a prompt's declarations emit, with the schema it comes from. */
|
|
311
|
+
function declaredTypeNames(prompt) {
|
|
312
|
+
const agent = prompt.agent;
|
|
313
|
+
if (!agent) {
|
|
314
|
+
return prompt.outputSchema === undefined
|
|
315
|
+
? []
|
|
316
|
+
: [{ typeName: prompt.outputTypeName, path: "outputSchema" }];
|
|
317
|
+
}
|
|
318
|
+
return [
|
|
319
|
+
{ typeName: agent.variablesTypeName, path: "inputSchema" },
|
|
320
|
+
...agent.clientTools.flatMap((tool) => [
|
|
321
|
+
{ typeName: tool.input.typeName, path: `tools.${tool.name}.inputSchema` },
|
|
322
|
+
{ typeName: tool.output.typeName, path: `tools.${tool.name}.outputSchema` },
|
|
323
|
+
]),
|
|
324
|
+
...agent.events.map((event) => ({
|
|
325
|
+
typeName: event.typeName,
|
|
326
|
+
path: `events.${event.name}.schema`,
|
|
327
|
+
})),
|
|
328
|
+
];
|
|
329
|
+
}
|
|
161
330
|
const DECLARATION_HEADER = `// GENERATED by \`primitive config push\` from prompts/*.toml.
|
|
162
331
|
// DO NOT EDIT — your changes are overwritten on the next push.
|
|
163
332
|
//
|
|
@@ -177,6 +346,13 @@ export function renderPromptSchemasDeclaration(sources) {
|
|
|
177
346
|
const prompts = describeAll(sources).map((entry) => entry.prompt);
|
|
178
347
|
const lines = [DECLARATION_HEADER];
|
|
179
348
|
for (const prompt of prompts) {
|
|
349
|
+
if (prompt.agent) {
|
|
350
|
+
for (const decl of renderAgentTypeDecls(prompt)) {
|
|
351
|
+
lines.push(decl);
|
|
352
|
+
lines.push("");
|
|
353
|
+
}
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
180
356
|
if (prompt.outputSchema === undefined)
|
|
181
357
|
continue;
|
|
182
358
|
try {
|
|
@@ -196,9 +372,11 @@ export function renderPromptSchemasDeclaration(sources) {
|
|
|
196
372
|
else {
|
|
197
373
|
lines.push("export interface PrimitivePromptSchemas {");
|
|
198
374
|
for (const prompt of prompts) {
|
|
199
|
-
lines.push(prompt.
|
|
200
|
-
? ` ${JSON.stringify(prompt.key)}: {};`
|
|
201
|
-
:
|
|
375
|
+
lines.push(prompt.agent
|
|
376
|
+
? ` ${JSON.stringify(prompt.key)}: ${agentSchemaEntry(prompt)};`
|
|
377
|
+
: prompt.outputSchema === undefined
|
|
378
|
+
? ` ${JSON.stringify(prompt.key)}: {};`
|
|
379
|
+
: ` ${JSON.stringify(prompt.key)}: { output: ${prompt.outputTypeName} };`);
|
|
202
380
|
}
|
|
203
381
|
lines.push("}");
|
|
204
382
|
}
|
|
@@ -209,4 +387,76 @@ export function renderPromptSchemasDeclaration(sources) {
|
|
|
209
387
|
lines.push("");
|
|
210
388
|
return lines.join("\n");
|
|
211
389
|
}
|
|
390
|
+
/**
|
|
391
|
+
* Whether a source is an agent prompt, read leniently: a file that does not
|
|
392
|
+
* parse is not one here (the declaration renderer names the parse failure
|
|
393
|
+
* where it has always named it).
|
|
394
|
+
*/
|
|
395
|
+
function isAgentSource(source) {
|
|
396
|
+
try {
|
|
397
|
+
return promptKindOf(parseConfigToml(source.tomlContent)?.prompt) === "agent";
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
/** Whether a tree declares any agent prompt — the codegen gate (DSO-3798-005). */
|
|
404
|
+
export function treeDeclaresAgentPrompt(configDir) {
|
|
405
|
+
return promptSchemaSources(configDir).some(isAgentSource);
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* The client-side artifact of each agent prompt — #3798:
|
|
409
|
+
* `<key>.agent.generated.ts`, carrying the agent's variables, client-tool and
|
|
410
|
+
* event types, the `<Key>AgentClientTools` / `<Key>AgentEvents` maps an app's
|
|
411
|
+
* session view is typed by, and `<Key>Agent.key`. Written beside the function
|
|
412
|
+
* invokers and owned by the same plan, so the invoker sweep keeps it; a
|
|
413
|
+
* Prettier fixed point, like them (#1565).
|
|
414
|
+
*/
|
|
415
|
+
export function renderAgentClientFiles(sources) {
|
|
416
|
+
const agents = describeAll(sources.filter(isAgentSource));
|
|
417
|
+
return agents.map(({ prompt, source }) => {
|
|
418
|
+
const agent = prompt.agent;
|
|
419
|
+
const base = prompt.typeBaseName;
|
|
420
|
+
const toolsMap = agent.clientTools.length === 0
|
|
421
|
+
? `export interface ${base}AgentClientTools {}`
|
|
422
|
+
: [
|
|
423
|
+
`export interface ${base}AgentClientTools {`,
|
|
424
|
+
...agent.clientTools.flatMap((tool) => [
|
|
425
|
+
` ${propertyKey(tool.name)}: {`,
|
|
426
|
+
` input: ${tool.input.typeName};`,
|
|
427
|
+
` output: ${tool.output.typeName};`,
|
|
428
|
+
` };`,
|
|
429
|
+
]),
|
|
430
|
+
`}`,
|
|
431
|
+
].join("\n");
|
|
432
|
+
const eventsMap = agent.events.length === 0
|
|
433
|
+
? `export interface ${base}AgentEvents {}`
|
|
434
|
+
: [
|
|
435
|
+
`export interface ${base}AgentEvents {`,
|
|
436
|
+
...agent.events.map((event) => ` ${propertyKey(event.name)}: ${event.typeName};`),
|
|
437
|
+
`}`,
|
|
438
|
+
].join("\n");
|
|
439
|
+
const blocks = [
|
|
440
|
+
[
|
|
441
|
+
`// AUTO-GENERATED FROM ${prompt.fileLabel} — DO NOT EDIT.`,
|
|
442
|
+
"// Run `primitive functions codegen` to regenerate.",
|
|
443
|
+
`// fingerprint: ${fingerprintToml(source.tomlContent)}`,
|
|
444
|
+
].join("\n"),
|
|
445
|
+
...renderAgentTypeDecls(prompt),
|
|
446
|
+
`/** The client tools a member of the \`${prompt.key}\` agent answers, by name. */\n${toolsMap}`,
|
|
447
|
+
`/** The event kinds the \`${prompt.key}\` agent records, by name. */\n${eventsMap}`,
|
|
448
|
+
[
|
|
449
|
+
`/** The \`${prompt.key}\` agent: the key a session is created with. */`,
|
|
450
|
+
`export const ${base}Agent = {`,
|
|
451
|
+
` key: ${tsStringLiteral(prompt.key)},`,
|
|
452
|
+
`} as const;`,
|
|
453
|
+
].join("\n"),
|
|
454
|
+
];
|
|
455
|
+
return {
|
|
456
|
+
key: prompt.key,
|
|
457
|
+
fileName: `${prompt.key}${AGENT_CLIENT_FILE_SUFFIX}`,
|
|
458
|
+
content: blocks.join("\n\n") + "\n",
|
|
459
|
+
};
|
|
460
|
+
});
|
|
461
|
+
}
|
|
212
462
|
//# sourceMappingURL=prompt-schema-codegen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-schema-codegen.js","sourceRoot":"","sources":["../../../src/lib/prompt-schema-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,6BAA6B,CAAC;AAyB3E,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,MAA0B,EAAE,KAAU;IAC9D,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,SAAS,SAAS,CAAC,MAA0B;IAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACpD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B;IAC7D,IAAI,KAAU,CAAC;IACf,IAAI,CAAC;QACH,KAAK,GAAI,eAAe,CAAC,MAAM,CAAC,WAAW,CAAS,EAAE,MAAM,IAAI,EAAE,CAAC;IACrE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,0BAA0B,CAClC,GAAG,SAAS,CAAC,MAAM,CAAC,sCAAsC,KAAK,EAAE,OAAO,IAAI,KAAK,GAAG,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE5C,IAAI,YAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,wEAAwE;QACxE,kEAAkE;QAClE,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,0BAA0B,CAClC,GAAG,SAAS,CAAC,MAAM,CAAC,yCAAyC,KAAK,EAAE,OAAO,IAAI,KAAK,GAAG,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO;QACL,GAAG;QACH,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,YAAY;QACZ,YAAY;QACZ,cAAc,EAAE,GAAG,YAAY,cAAc;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,OAAsC;IAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC;QACpC,MAAM;KACP,CAAC,CAAC,CAAC;IACJ,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtB,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvE,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpD,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,0BAA0B,CAClC,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,SAAS,CAAC,MAAM,CAAC,2BAA2B;gBACrE,QAAQ,MAAM,CAAC,GAAG,kDAAkD;gBACpE,sBAAsB,CACzB,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,0BAA0B,CAClC,gBAAgB,KAAK,UAAU,MAAM,CAAC,GAAG,4BAA4B;gBACnE,UAAU,MAAM,CAAC,cAAc,oCAAoC;gBACnE,0BAA0B,CAC7B,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,kBAAkB,GAAG;;;;;;;;CAQ1B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAsC;IAEtC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,KAAK,GAAa,CAAC,kBAAkB,CAAC,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;YAAE,SAAS;QAChD,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,YAAY,0BAA0B;gBAAE,MAAM,KAAK,CAAC;YAC7D,MAAM,IAAI,0BAA0B,CAClC,GAAG,MAAM,CAAC,SAAS,6CAA6C;gBAC9D,oBAAoB,KAAK,EAAE,OAAO,IAAI,KAAK,GAAG,CACjD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACxD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,YAAY,KAAK,SAAS;gBAC/B,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;gBACxC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,cAAc,KAAK,CAC7E,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompt-schema-codegen.js","sourceRoot":"","sources":["../../../src/lib/prompt-schema-codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Swift half of an agent prompt's client-side types — #3798.
|
|
3
|
+
*
|
|
4
|
+
* `functions codegen --lang swift` writes one `<key>.agent.generated.swift`
|
|
5
|
+
* per `kind = "agent"` prompt, beside the function invokers, carrying:
|
|
6
|
+
*
|
|
7
|
+
* - `<Key>AgentVariables` — the session's variables, from `[prompt].inputSchema`;
|
|
8
|
+
* - `<Key>Tool<Name>Input` / `<Key>Tool<Name>Output` for every CLIENT tool
|
|
9
|
+
* (a server tool's schemas are its function's, typed in that function's
|
|
10
|
+
* own file);
|
|
11
|
+
* - `<Key>Event<Name>` for every event kind; and
|
|
12
|
+
* - `<Key>Agent`, a namespace enum with the key a session is created with
|
|
13
|
+
* and the declared client-tool and event names.
|
|
14
|
+
*
|
|
15
|
+
* ── Nothing about the agent is re-derived here ───────────────────────────
|
|
16
|
+
*
|
|
17
|
+
* Names, schemas and the declaration's defaults all come from
|
|
18
|
+
* `describePromptSchema` — the IR the TypeScript artifact reads, itself read
|
|
19
|
+
* through `normalizeAgentDeclaration` — so the two clients can never disagree
|
|
20
|
+
* about what an agent's contract is. Only Swift rendering, through the shared
|
|
21
|
+
* `renderSwiftRootType`, happens in this file.
|
|
22
|
+
*
|
|
23
|
+
* Written in the functions run's own `writeOrCheckGeneratedFiles` call
|
|
24
|
+
* (`generateFunctionSwiftTypes`), which owns both banners: a removed agent's
|
|
25
|
+
* file is swept, `--check` reports a stale one, and a file another generator
|
|
26
|
+
* stamped is never overwritten.
|
|
27
|
+
*/
|
|
28
|
+
import { type PromptSchemaSource } from "../prompt-schema-codegen.js";
|
|
29
|
+
import { AGENT_SWIFT_BANNER_PREFIX } from "./banners.js";
|
|
30
|
+
export { AGENT_SWIFT_BANNER_PREFIX };
|
|
31
|
+
/** The file an agent prompt's Swift types are written to: `<key>.agent.generated.swift`. */
|
|
32
|
+
export declare const AGENT_SWIFT_FILE_SUFFIX = ".agent.generated.swift";
|
|
33
|
+
/**
|
|
34
|
+
* Render the full `<key>.agent.generated.swift` content for one agent prompt.
|
|
35
|
+
* Pure — exported so tests can assert on the string directly. Throws a
|
|
36
|
+
* `SwiftCodegenError` naming the file for a prompt that is not an agent.
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderAgentSwiftFile(source: PromptSchemaSource): {
|
|
39
|
+
key: string;
|
|
40
|
+
content: string;
|
|
41
|
+
symbols: string[];
|
|
42
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Swift half of an agent prompt's client-side types — #3798.
|
|
3
|
+
*
|
|
4
|
+
* `functions codegen --lang swift` writes one `<key>.agent.generated.swift`
|
|
5
|
+
* per `kind = "agent"` prompt, beside the function invokers, carrying:
|
|
6
|
+
*
|
|
7
|
+
* - `<Key>AgentVariables` — the session's variables, from `[prompt].inputSchema`;
|
|
8
|
+
* - `<Key>Tool<Name>Input` / `<Key>Tool<Name>Output` for every CLIENT tool
|
|
9
|
+
* (a server tool's schemas are its function's, typed in that function's
|
|
10
|
+
* own file);
|
|
11
|
+
* - `<Key>Event<Name>` for every event kind; and
|
|
12
|
+
* - `<Key>Agent`, a namespace enum with the key a session is created with
|
|
13
|
+
* and the declared client-tool and event names.
|
|
14
|
+
*
|
|
15
|
+
* ── Nothing about the agent is re-derived here ───────────────────────────
|
|
16
|
+
*
|
|
17
|
+
* Names, schemas and the declaration's defaults all come from
|
|
18
|
+
* `describePromptSchema` — the IR the TypeScript artifact reads, itself read
|
|
19
|
+
* through `normalizeAgentDeclaration` — so the two clients can never disagree
|
|
20
|
+
* about what an agent's contract is. Only Swift rendering, through the shared
|
|
21
|
+
* `renderSwiftRootType`, happens in this file.
|
|
22
|
+
*
|
|
23
|
+
* Written in the functions run's own `writeOrCheckGeneratedFiles` call
|
|
24
|
+
* (`generateFunctionSwiftTypes`), which owns both banners: a removed agent's
|
|
25
|
+
* file is swept, `--check` reports a stale one, and a file another generator
|
|
26
|
+
* stamped is never overwritten.
|
|
27
|
+
*/
|
|
28
|
+
import { fingerprintToml } from "../db-codegen/dbFingerprint.js";
|
|
29
|
+
import { describePromptSchema, } from "../prompt-schema-codegen.js";
|
|
30
|
+
import { renderSwiftRootType, SwiftCodegenError } from "./schemaToSwift.js";
|
|
31
|
+
import { swiftKeyLiteral } from "./generator.js";
|
|
32
|
+
import { AGENT_SWIFT_BANNER_PREFIX } from "./banners.js";
|
|
33
|
+
import { parseTopLevelSwiftSymbols } from "./siblingSymbols.js";
|
|
34
|
+
export { AGENT_SWIFT_BANNER_PREFIX };
|
|
35
|
+
/** The file an agent prompt's Swift types are written to: `<key>.agent.generated.swift`. */
|
|
36
|
+
export const AGENT_SWIFT_FILE_SUFFIX = ".agent.generated.swift";
|
|
37
|
+
const INDENT = " ";
|
|
38
|
+
/** A Swift array literal of the declared names, in declaration order. */
|
|
39
|
+
function nameList(names) {
|
|
40
|
+
return `[${names.map(swiftKeyLiteral).join(", ")}]`;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Render the full `<key>.agent.generated.swift` content for one agent prompt.
|
|
44
|
+
* Pure — exported so tests can assert on the string directly. Throws a
|
|
45
|
+
* `SwiftCodegenError` naming the file for a prompt that is not an agent.
|
|
46
|
+
*/
|
|
47
|
+
export function renderAgentSwiftFile(source) {
|
|
48
|
+
const prompt = describePromptSchema(source);
|
|
49
|
+
const agent = prompt.agent;
|
|
50
|
+
if (!agent) {
|
|
51
|
+
throw new SwiftCodegenError(`swift agent codegen: ${prompt.fileLabel} is not a kind = "agent" prompt`, { sourceFile: prompt.fileLabel });
|
|
52
|
+
}
|
|
53
|
+
const sourceFile = prompt.fileLabel;
|
|
54
|
+
const rendered = [
|
|
55
|
+
{
|
|
56
|
+
path: "inputSchema",
|
|
57
|
+
decl: renderSwiftRootType(agent.variablesTypeName, agent.inputSchema, { sourceFile }),
|
|
58
|
+
},
|
|
59
|
+
...agent.clientTools.flatMap((tool) => [
|
|
60
|
+
{
|
|
61
|
+
path: `tools.${tool.name}.inputSchema`,
|
|
62
|
+
decl: renderSwiftRootType(tool.input.typeName, tool.input.schema, { sourceFile }),
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
path: `tools.${tool.name}.outputSchema`,
|
|
66
|
+
decl: renderSwiftRootType(tool.output.typeName, tool.output.schema, { sourceFile }),
|
|
67
|
+
},
|
|
68
|
+
]),
|
|
69
|
+
...agent.events.map((event) => ({
|
|
70
|
+
path: `events.${event.name}.schema`,
|
|
71
|
+
decl: renderSwiftRootType(event.typeName, event.schema, { sourceFile }),
|
|
72
|
+
})),
|
|
73
|
+
];
|
|
74
|
+
// CSO-3798-002 — a schema's helper types are top-level too (an array of
|
|
75
|
+
// objects under `data` declares `<Key>EventDataItem`), so two of one agent's
|
|
76
|
+
// schemas can declare the same symbol. The run-scoped registry only compares
|
|
77
|
+
// owners, so the file is checked against itself here, naming both paths.
|
|
78
|
+
const symbolPath = new Map();
|
|
79
|
+
for (const { path, decl } of rendered) {
|
|
80
|
+
for (const symbol of new Set(parseTopLevelSwiftSymbols(decl))) {
|
|
81
|
+
const other = symbolPath.get(symbol);
|
|
82
|
+
if (other !== undefined) {
|
|
83
|
+
throw new SwiftCodegenError(`swift agent codegen: ${sourceFile}: \`${other}\` and \`${path}\` both ` +
|
|
84
|
+
`produce Swift symbol "${symbol}", which would be declared twice in ` +
|
|
85
|
+
`one file — rename one so the two differ after Swift normalization`, { sourceFile });
|
|
86
|
+
}
|
|
87
|
+
symbolPath.set(symbol, path);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const decls = rendered.map((entry) => entry.decl);
|
|
91
|
+
const namespace = [
|
|
92
|
+
`/// The \`${prompt.key}\` agent: the key a session is created with, and the`,
|
|
93
|
+
`/// client tools and event kinds it declares.`,
|
|
94
|
+
`public enum ${prompt.typeBaseName}Agent {`,
|
|
95
|
+
`${INDENT}public static let key = ${swiftKeyLiteral(prompt.key)}`,
|
|
96
|
+
`${INDENT}public static let clientToolNames: [String] = ${nameList(agent.clientTools.map((tool) => tool.name))}`,
|
|
97
|
+
`${INDENT}public static let eventNames: [String] = ${nameList(agent.events.map((event) => event.name))}`,
|
|
98
|
+
`}`,
|
|
99
|
+
].join("\n");
|
|
100
|
+
const banner = [
|
|
101
|
+
`${AGENT_SWIFT_BANNER_PREFIX}${sourceFile.replace(/^prompts\//, "")} — DO NOT EDIT.`,
|
|
102
|
+
"// Run `primitive functions codegen --lang swift` to regenerate.",
|
|
103
|
+
`// fingerprint: ${fingerprintToml(source.tomlContent)}`,
|
|
104
|
+
].join("\n");
|
|
105
|
+
// `JsBaoClient` for `JSONValue`, which an open schema renders to — the
|
|
106
|
+
// import the function invokers carry too.
|
|
107
|
+
const imports = ["import Foundation", "import JsBaoClient"].join("\n");
|
|
108
|
+
const content = [banner, imports, ...decls, namespace].join("\n\n") + "\n";
|
|
109
|
+
return {
|
|
110
|
+
key: prompt.key,
|
|
111
|
+
content,
|
|
112
|
+
// Read back off the rendered source, as the function emitter does
|
|
113
|
+
// (CR3344-001), so a nested helper type a schema declares is in the
|
|
114
|
+
// run-scoped registry too.
|
|
115
|
+
symbols: parseTopLevelSwiftSymbols(content),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=agentGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentGenerator.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/agentGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,3 +16,9 @@
|
|
|
16
16
|
* output directory stays safe in every direction.
|
|
17
17
|
*/
|
|
18
18
|
export declare const FUNCTION_SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM functions/";
|
|
19
|
+
/**
|
|
20
|
+
* Banner prefix of an agent prompt's `<key>.agent.generated.swift` (#3798),
|
|
21
|
+
* written by the same `functions codegen --lang swift` run as the function
|
|
22
|
+
* invokers but from `prompts/`, so the two are told apart by content too.
|
|
23
|
+
*/
|
|
24
|
+
export declare const AGENT_SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM prompts/";
|
|
@@ -16,4 +16,10 @@
|
|
|
16
16
|
* output directory stays safe in every direction.
|
|
17
17
|
*/
|
|
18
18
|
export const FUNCTION_SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM functions/";
|
|
19
|
+
/**
|
|
20
|
+
* Banner prefix of an agent prompt's `<key>.agent.generated.swift` (#3798),
|
|
21
|
+
* written by the same `functions codegen --lang swift` run as the function
|
|
22
|
+
* invokers but from `prompts/`, so the two are told apart by content too.
|
|
23
|
+
*/
|
|
24
|
+
export const AGENT_SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM prompts/";
|
|
19
25
|
//# sourceMappingURL=banners.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banners.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/banners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"banners.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/banners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iCAAiC,CAAC"}
|
|
@@ -36,7 +36,7 @@ import { resolveRecordInterfaceName, opParamsInterfaceName, opResultAliasName, }
|
|
|
36
36
|
import { GENERATED_SWIFT_FILE_SUFFIX, SWIFT_BANNER_PREFIX } from "./generator.js";
|
|
37
37
|
// The third Swift generator's banner (#3344), from a leaf module so this adds
|
|
38
38
|
// no import cycle.
|
|
39
|
-
import { FUNCTION_SWIFT_BANNER_PREFIX } from "./banners.js";
|
|
39
|
+
import { AGENT_SWIFT_BANNER_PREFIX, FUNCTION_SWIFT_BANNER_PREFIX, } from "./banners.js";
|
|
40
40
|
import { assertNoRetainedSiblingCollision, assertNoForeignGeneratorSymbolCollision, } from "./siblingSymbols.js";
|
|
41
41
|
import { SwiftCodegenError } from "./schemaToSwift.js";
|
|
42
42
|
import { structTypeName, enumTypeName, enumCaseNames, swiftPropertyName, unescapeIdentifier, } from "./swiftNaming.js";
|
|
@@ -883,7 +883,11 @@ export async function generateDbSwiftTypes(options) {
|
|
|
883
883
|
// regenerate workflow files — they coexist regardless of ordering.
|
|
884
884
|
await assertNoForeignGeneratorSymbolCollision({
|
|
885
885
|
outputDir: outAbs,
|
|
886
|
-
foreignBanner: [
|
|
886
|
+
foreignBanner: [
|
|
887
|
+
SWIFT_BANNER_PREFIX,
|
|
888
|
+
FUNCTION_SWIFT_BANNER_PREFIX,
|
|
889
|
+
AGENT_SWIFT_BANNER_PREFIX,
|
|
890
|
+
],
|
|
887
891
|
suffix: GENERATED_SWIFT_FILE_SUFFIX,
|
|
888
892
|
emitted: namespaceOwner,
|
|
889
893
|
makeError: ({ symbol, owner, siblingStem }) => new SwiftCodegenError(`swift db codegen: namespace collision with another generator's file — ` +
|
|
@@ -906,7 +910,11 @@ export async function generateDbSwiftTypes(options) {
|
|
|
906
910
|
ownershipBanner: DB_SWIFT_BANNER_PREFIXES,
|
|
907
911
|
// Class 3b: never clobber a file owned by the workflow or functions Swift
|
|
908
912
|
// generator.
|
|
909
|
-
foreignOwnershipBanners: [
|
|
913
|
+
foreignOwnershipBanners: [
|
|
914
|
+
SWIFT_BANNER_PREFIX,
|
|
915
|
+
FUNCTION_SWIFT_BANNER_PREFIX,
|
|
916
|
+
AGENT_SWIFT_BANNER_PREFIX,
|
|
917
|
+
],
|
|
910
918
|
onForeignBannerCollision: ({ filePath, foreignBanner }) => new SwiftCodegenError(`swift codegen: output collision — this run would overwrite ` +
|
|
911
919
|
`"${path.basename(filePath)}" in the shared output directory, which ` +
|
|
912
920
|
`is already owned by a different generator (banner ` +
|