primitive-admin 1.1.0-alpha.85 → 1.1.0-alpha.87

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 (98) hide show
  1. package/README.md +34 -0
  2. package/assets/skill/skills/primitive-platform/SKILL.md +37 -1
  3. package/dist/src/commands/analytics.js +17 -5
  4. package/dist/src/commands/analytics.js.map +1 -1
  5. package/dist/src/commands/auth-sessions.d.ts +7 -0
  6. package/dist/src/commands/auth-sessions.js +144 -0
  7. package/dist/src/commands/auth-sessions.js.map +1 -0
  8. package/dist/src/commands/auth.js +47 -8
  9. package/dist/src/commands/auth.js.map +1 -1
  10. package/dist/src/commands/collections.js +648 -1
  11. package/dist/src/commands/collections.js.map +1 -1
  12. package/dist/src/commands/database-type-configs.js +1 -1
  13. package/dist/src/commands/database-type-configs.js.map +1 -1
  14. package/dist/src/commands/databases.js +11 -2
  15. package/dist/src/commands/databases.js.map +1 -1
  16. package/dist/src/commands/documents.d.ts +20 -0
  17. package/dist/src/commands/documents.js +213 -17
  18. package/dist/src/commands/documents.js.map +1 -1
  19. package/dist/src/commands/functions.js +56 -5
  20. package/dist/src/commands/functions.js.map +1 -1
  21. package/dist/src/commands/integrations.js +4 -0
  22. package/dist/src/commands/integrations.js.map +1 -1
  23. package/dist/src/commands/sync.d.ts +83 -41
  24. package/dist/src/commands/sync.js +553 -81
  25. package/dist/src/commands/sync.js.map +1 -1
  26. package/dist/src/commands/users.js +3 -1
  27. package/dist/src/commands/users.js.map +1 -1
  28. package/dist/src/lib/api-client.d.ts +111 -7
  29. package/dist/src/lib/api-client.js +92 -20
  30. package/dist/src/lib/api-client.js.map +1 -1
  31. package/dist/src/lib/app-settings-descriptor.d.ts +1 -1
  32. package/dist/src/lib/app-settings-descriptor.js +0 -1
  33. package/dist/src/lib/app-settings-descriptor.js.map +1 -1
  34. package/dist/src/lib/collection-export.d.ts +184 -0
  35. package/dist/src/lib/collection-export.js +252 -0
  36. package/dist/src/lib/collection-export.js.map +1 -0
  37. package/dist/src/lib/config-object-descriptor.js +17 -3
  38. package/dist/src/lib/config-object-descriptor.js.map +1 -1
  39. package/dist/src/lib/config-payload.d.ts +8 -1
  40. package/dist/src/lib/config-payload.js +29 -9
  41. package/dist/src/lib/config-payload.js.map +1 -1
  42. package/dist/src/lib/config-surface.js +11 -7
  43. package/dist/src/lib/config-surface.js.map +1 -1
  44. package/dist/src/lib/deprecation.d.ts +22 -0
  45. package/dist/src/lib/deprecation.js +43 -0
  46. package/dist/src/lib/deprecation.js.map +1 -0
  47. package/dist/src/lib/env-resolver-core.js +10 -3
  48. package/dist/src/lib/env-resolver-core.js.map +1 -1
  49. package/dist/src/lib/function-db-types.d.ts +14 -3
  50. package/dist/src/lib/function-db-types.js +55 -11
  51. package/dist/src/lib/function-db-types.js.map +1 -1
  52. package/dist/src/lib/function-document-types.d.ts +13 -2
  53. package/dist/src/lib/function-document-types.js +79 -30
  54. package/dist/src/lib/function-document-types.js.map +1 -1
  55. package/dist/src/lib/function-trigger-listing.d.ts +27 -0
  56. package/dist/src/lib/function-trigger-listing.js +70 -0
  57. package/dist/src/lib/function-trigger-listing.js.map +1 -0
  58. package/dist/src/lib/generated-config-surfaces.d.ts +540 -10
  59. package/dist/src/lib/generated-config-surfaces.js +1915 -173
  60. package/dist/src/lib/generated-config-surfaces.js.map +1 -1
  61. package/dist/src/lib/generated-sdk-types.d.ts +1 -1
  62. package/dist/src/lib/generated-sdk-types.js +1 -1
  63. package/dist/src/lib/generated-sdk-types.js.map +1 -1
  64. package/dist/src/lib/log-inspection.d.ts +18 -1
  65. package/dist/src/lib/log-inspection.js +5 -0
  66. package/dist/src/lib/log-inspection.js.map +1 -1
  67. package/dist/src/lib/logout-admin-session.d.ts +33 -0
  68. package/dist/src/lib/logout-admin-session.js +70 -0
  69. package/dist/src/lib/logout-admin-session.js.map +1 -0
  70. package/dist/src/lib/prompt-cost-format.d.ts +11 -0
  71. package/dist/src/lib/prompt-cost-format.js +41 -0
  72. package/dist/src/lib/prompt-cost-format.js.map +1 -0
  73. package/dist/src/lib/prompt-schema-codegen.d.ts +53 -0
  74. package/dist/src/lib/prompt-schema-codegen.js +253 -3
  75. package/dist/src/lib/prompt-schema-codegen.js.map +1 -1
  76. package/dist/src/lib/refresh-admin-credentials.d.ts +9 -1
  77. package/dist/src/lib/refresh-admin-credentials.js +22 -2
  78. package/dist/src/lib/refresh-admin-credentials.js.map +1 -1
  79. package/dist/src/lib/storage-pending-retry.d.ts +26 -0
  80. package/dist/src/lib/storage-pending-retry.js +42 -0
  81. package/dist/src/lib/storage-pending-retry.js.map +1 -0
  82. package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
  83. package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
  84. package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
  85. package/dist/src/lib/swift-codegen/banners.d.ts +6 -0
  86. package/dist/src/lib/swift-codegen/banners.js +6 -0
  87. package/dist/src/lib/swift-codegen/banners.js.map +1 -1
  88. package/dist/src/lib/swift-codegen/dbGenerator.js +11 -3
  89. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
  90. package/dist/src/lib/swift-codegen/functionGenerator.d.ts +7 -0
  91. package/dist/src/lib/swift-codegen/functionGenerator.js +41 -3
  92. package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -1
  93. package/dist/src/lib/swift-codegen/generator.js +8 -2
  94. package/dist/src/lib/swift-codegen/generator.js.map +1 -1
  95. package/dist/src/lib/workflow-usage.d.ts +11 -13
  96. package/dist/src/lib/workflow-usage.js +12 -14
  97. package/dist/src/lib/workflow-usage.js.map +1 -1
  98. 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.outputSchema === undefined
200
- ? ` ${JSON.stringify(prompt.key)}: {};`
201
- : ` ${JSON.stringify(prompt.key)}: { output: ${prompt.outputTypeName} };`);
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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"}
@@ -45,8 +45,16 @@ export declare class RefreshError extends Error {
45
45
  kind: RefreshFailureKind;
46
46
  statusCode?: number;
47
47
  cause?: unknown;
48
- constructor(message: string, kind: RefreshFailureKind, statusCode?: number, cause?: unknown);
48
+ /** The server's machine-readable `code`, when it sent one. */
49
+ code?: string;
50
+ constructor(message: string, kind: RefreshFailureKind, statusCode?: number, cause?: unknown,
51
+ /** The server's machine-readable `code`, when it sent one. */
52
+ code?: string);
49
53
  }
54
+ /** The refresh token's session was revoked (logout or `auth sessions revoke`). */
55
+ export declare const SESSION_REVOKED_MESSAGE = "This session was revoked. Run 'primitive login'.";
56
+ /** Any other refused refresh. */
57
+ export declare const REFRESH_EXPIRED_MESSAGE = "Refresh token expired. Run 'primitive login'.";
50
58
  /**
51
59
  * Exchange the stored refresh token for a fresh `accessToken`. Returns a new
52
60
  * `Credentials` object — the caller is responsible for persistence via
@@ -37,14 +37,22 @@ export class RefreshError extends Error {
37
37
  kind;
38
38
  statusCode;
39
39
  cause;
40
- constructor(message, kind, statusCode, cause) {
40
+ code;
41
+ constructor(message, kind, statusCode, cause,
42
+ /** The server's machine-readable `code`, when it sent one. */
43
+ code) {
41
44
  super(message);
42
45
  this.kind = kind;
43
46
  this.statusCode = statusCode;
44
47
  this.cause = cause;
48
+ this.code = code;
45
49
  this.name = "RefreshError";
46
50
  }
47
51
  }
52
+ /** The refresh token's session was revoked (logout or `auth sessions revoke`). */
53
+ export const SESSION_REVOKED_MESSAGE = "This session was revoked. Run 'primitive login'.";
54
+ /** Any other refused refresh. */
55
+ export const REFRESH_EXPIRED_MESSAGE = "Refresh token expired. Run 'primitive login'.";
48
56
  /**
49
57
  * Exchange the stored refresh token for a fresh `accessToken`. Returns a new
50
58
  * `Credentials` object — the caller is responsible for persistence via
@@ -86,7 +94,19 @@ export async function refreshAdminCredentials(credentials) {
86
94
  throw new RefreshError(`Network error refreshing token: ${reason}.`, "network", undefined, cause);
87
95
  }
88
96
  if (!response.ok) {
89
- throw new RefreshError("Refresh token expired. Run 'primitive login'.", "unauthorized", response.status);
97
+ // #3885: a refresh of a revoked session answers 401 with code
98
+ // SESSION_REVOKED; say so, rather than calling the token expired.
99
+ let code;
100
+ try {
101
+ const body = (await response.json());
102
+ code = typeof body?.code === "string" ? body.code : undefined;
103
+ }
104
+ catch {
105
+ // Not JSON: no code to report.
106
+ }
107
+ throw new RefreshError(code === "SESSION_REVOKED"
108
+ ? SESSION_REVOKED_MESSAGE
109
+ : REFRESH_EXPIRED_MESSAGE, "unauthorized", response.status, undefined, code);
90
110
  }
91
111
  const data = (await response.json());
92
112
  const accessToken = data?.accessToken || data?.jwt;
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-admin-credentials.js","sourceRoot":"","sources":["../../../src/lib/refresh-admin-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe1C,MAAM,OAAO,YAAa,SAAQ,KAAK;IAG5B;IACA;IACA;IAJT,YACE,OAAe,EACR,IAAwB,EACxB,UAAmB,EACnB,KAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAoB;QACxB,eAAU,GAAV,UAAU,CAAS;QACnB,UAAK,GAAL,KAAK,CAAU;QAGtB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAwB;IAExB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,YAAY,CACpB,iDAAiD,EACjD,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,SAAS,yBAAyB,CAAC;IAC9D,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAClE,CAAC;IAED,IAAI,QAAkD,CAAC;IACvD,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GACV,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO;YACrC,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,IAAI,YAAY,CACpB,mCAAmC,MAAM,GAAG,EAC5C,SAAS,EACT,SAAS,EACT,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CACpB,+CAA+C,EAC/C,cAAc,EACd,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;IAC5C,MAAM,WAAW,GAAuB,IAAI,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,CAAC;IACvE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CACpB,0EAA0E,EAC1E,cAAc,EACd,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,WAAW;QACd,WAAW;QACX,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY;QAC3D,SAAS,EACP,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"refresh-admin-credentials.js","sourceRoot":"","sources":["../../../src/lib/refresh-admin-credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * #3835 — ask again when the server could not confirm its OWN write.
3
+ *
4
+ * A create whose row dynamo-bao wrote but could not read back, and whose
5
+ * consistent confirm read could not vouch for it either, is answered
6
+ * `503 STORAGE_CONSISTENCY_PENDING` (`src/services/readback-confirm.ts`): the
7
+ * write may well have landed, and nothing about the request was wrong. A push
8
+ * that records that as "could not be applied" exits 1 over a change that is
9
+ * very likely on the server already.
10
+ *
11
+ * Only that typed code is retried — a client that retries on it must not also
12
+ * retry on everything else a 503 covers — and only a bounded number of times,
13
+ * after which the transient itself is what the caller reports.
14
+ */
15
+ /** The code the server's read-back transient carries. */
16
+ export declare const STORAGE_CONSISTENCY_PENDING = "STORAGE_CONSISTENCY_PENDING";
17
+ export declare function isStorageConsistencyPending(err: unknown): boolean;
18
+ /**
19
+ * Run `fn`, and run it again while it fails with the storage-consistency
20
+ * transient. Any other failure — including the 409 a retried create meets when
21
+ * its first attempt's row holds the key — is thrown to the caller unchanged.
22
+ */
23
+ export declare function retryOnStoragePending<T>(fn: () => Promise<T>, opts?: {
24
+ attempts?: number;
25
+ sleep?: (ms: number) => Promise<void>;
26
+ }): Promise<T>;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * #3835 — ask again when the server could not confirm its OWN write.
3
+ *
4
+ * A create whose row dynamo-bao wrote but could not read back, and whose
5
+ * consistent confirm read could not vouch for it either, is answered
6
+ * `503 STORAGE_CONSISTENCY_PENDING` (`src/services/readback-confirm.ts`): the
7
+ * write may well have landed, and nothing about the request was wrong. A push
8
+ * that records that as "could not be applied" exits 1 over a change that is
9
+ * very likely on the server already.
10
+ *
11
+ * Only that typed code is retried — a client that retries on it must not also
12
+ * retry on everything else a 503 covers — and only a bounded number of times,
13
+ * after which the transient itself is what the caller reports.
14
+ */
15
+ import { ApiError } from "./api-client.js";
16
+ /** The code the server's read-back transient carries. */
17
+ export const STORAGE_CONSISTENCY_PENDING = "STORAGE_CONSISTENCY_PENDING";
18
+ const DEFAULT_ATTEMPTS = 3;
19
+ const BASE_DELAY_MS = 250;
20
+ export function isStorageConsistencyPending(err) {
21
+ return err instanceof ApiError && err.code === STORAGE_CONSISTENCY_PENDING;
22
+ }
23
+ /**
24
+ * Run `fn`, and run it again while it fails with the storage-consistency
25
+ * transient. Any other failure — including the 409 a retried create meets when
26
+ * its first attempt's row holds the key — is thrown to the caller unchanged.
27
+ */
28
+ export async function retryOnStoragePending(fn, opts = {}) {
29
+ const attempts = Math.max(1, opts.attempts ?? DEFAULT_ATTEMPTS);
30
+ const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
31
+ for (let attempt = 1;; attempt++) {
32
+ try {
33
+ return await fn();
34
+ }
35
+ catch (err) {
36
+ if (attempt >= attempts || !isStorageConsistencyPending(err))
37
+ throw err;
38
+ await sleep(BASE_DELAY_MS * 2 ** (attempt - 1));
39
+ }
40
+ }
41
+ }
42
+ //# sourceMappingURL=storage-pending-retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-pending-retry.js","sourceRoot":"","sources":["../../../src/lib/storage-pending-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,yDAAyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,OAAO,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,2BAA2B,CAAC;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAoB,EACpB,OAAqE,EAAE;IAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC;IAChE,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,IAAI,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACxE,MAAM,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -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
+ };