@specverse/engines 6.33.0 → 6.34.0

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 (57) hide show
  1. package/dist/libs/instance-factories/communication/rabbitmq-events.yaml +11 -0
  2. package/dist/libs/instance-factories/controllers/fastify.yaml +11 -0
  3. package/dist/libs/instance-factories/managed/stripe-rest-sdk.yaml +78 -0
  4. package/dist/libs/instance-factories/managed/templates/stripe/stripe-client-generator.js +8 -0
  5. package/dist/libs/instance-factories/orms/prisma.yaml +11 -0
  6. package/dist/realize/index.d.ts.map +1 -1
  7. package/dist/realize/index.js +261 -4
  8. package/dist/realize/index.js.map +1 -1
  9. package/dist/realize/library/loader.d.ts.map +1 -1
  10. package/dist/realize/library/loader.js +81 -1
  11. package/dist/realize/library/loader.js.map +1 -1
  12. package/dist/realize/per-action-emitter.d.ts +9 -0
  13. package/dist/realize/per-action-emitter.d.ts.map +1 -1
  14. package/dist/realize/per-action-emitter.js.map +1 -1
  15. package/dist/realize/per-action-llm-emit.d.ts.map +1 -1
  16. package/dist/realize/per-action-llm-emit.js +5 -1
  17. package/dist/realize/per-action-llm-emit.js.map +1 -1
  18. package/dist/realize/per-action-runner.d.ts +45 -0
  19. package/dist/realize/per-action-runner.d.ts.map +1 -1
  20. package/dist/realize/per-action-runner.js +132 -0
  21. package/dist/realize/per-action-runner.js.map +1 -1
  22. package/dist/realize/resolver/index.d.ts +157 -0
  23. package/dist/realize/resolver/index.d.ts.map +1 -0
  24. package/dist/realize/resolver/index.js +307 -0
  25. package/dist/realize/resolver/index.js.map +1 -0
  26. package/dist/realize/runtime-emitters/dispatcher.d.ts +176 -0
  27. package/dist/realize/runtime-emitters/dispatcher.d.ts.map +1 -0
  28. package/dist/realize/runtime-emitters/dispatcher.js +76 -0
  29. package/dist/realize/runtime-emitters/dispatcher.js.map +1 -0
  30. package/dist/realize/runtime-emitters/executable.d.ts +57 -0
  31. package/dist/realize/runtime-emitters/executable.d.ts.map +1 -0
  32. package/dist/realize/runtime-emitters/executable.js +316 -0
  33. package/dist/realize/runtime-emitters/executable.js.map +1 -0
  34. package/dist/realize/runtime-emitters/library.d.ts +52 -0
  35. package/dist/realize/runtime-emitters/library.d.ts.map +1 -0
  36. package/dist/realize/runtime-emitters/library.js +349 -0
  37. package/dist/realize/runtime-emitters/library.js.map +1 -0
  38. package/dist/realize/runtime-emitters/managed.d.ts +44 -0
  39. package/dist/realize/runtime-emitters/managed.d.ts.map +1 -0
  40. package/dist/realize/runtime-emitters/managed.js +283 -0
  41. package/dist/realize/runtime-emitters/managed.js.map +1 -0
  42. package/dist/realize/runtime-emitters/messaging.d.ts +77 -0
  43. package/dist/realize/runtime-emitters/messaging.d.ts.map +1 -0
  44. package/dist/realize/runtime-emitters/messaging.js +423 -0
  45. package/dist/realize/runtime-emitters/messaging.js.map +1 -0
  46. package/dist/realize/runtime-emitters/service.d.ts +42 -0
  47. package/dist/realize/runtime-emitters/service.d.ts.map +1 -0
  48. package/dist/realize/runtime-emitters/service.js +355 -0
  49. package/dist/realize/runtime-emitters/service.js.map +1 -0
  50. package/dist/realize/types/instance-factory.d.ts +1 -1
  51. package/dist/realize/types/instance-factory.d.ts.map +1 -1
  52. package/libs/instance-factories/communication/rabbitmq-events.yaml +11 -0
  53. package/libs/instance-factories/controllers/fastify.yaml +11 -0
  54. package/libs/instance-factories/managed/stripe-rest-sdk.yaml +78 -0
  55. package/libs/instance-factories/managed/templates/stripe/stripe-client-generator.ts +26 -0
  56. package/libs/instance-factories/orms/prisma.yaml +11 -0
  57. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/executable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Library-runtime emitter — V2 Phase 3, Round 1.
3
+ *
4
+ * Handles `topology: 'library'` factories: providers that are consumed
5
+ * as in-process imports, with no deployment instance entry.
6
+ *
7
+ * For each `import:` entry the consumer declares, this emitter produces:
8
+ * clients/<provider-name>.ts — typed client module
9
+ *
10
+ * The typed client module:
11
+ * - Exports a `<ProviderName>Client` TypeScript interface matching
12
+ * the selected operations from `import.select`.
13
+ * - Exports a `<providerName>Client` constant that implements the
14
+ * interface by delegating to the resolved provider:
15
+ * * source = 'local' → relative import to the provider's module.
16
+ * * source = 'npm' → `import { X } from '<package-specifier>'`.
17
+ * * source = 'registry-*' → TODO comment + runtime throw (Round 1).
18
+ *
19
+ * The consuming controller (SalesReportController.ts, emitted by the
20
+ * per-action-emitter's mechanical scaffold) imports this client module
21
+ * and receives the client via constructor injection.
22
+ *
23
+ * --- Select grammar ---
24
+ *
25
+ * `import.select` entries follow two forms (V2 D2 resolution):
26
+ * - Dotted: `Charge.create` → typed function for the specific operation.
27
+ * - Bare: `AuthService` → re-export of the entity's interface.
28
+ *
29
+ * Both forms share the same file; the emitter deduplicates by head entity.
30
+ *
31
+ * --- Round 1 limitations ---
32
+ *
33
+ * - No actual operation signature lookup (operations are typed as
34
+ * `(...args: unknown[]) => Promise<unknown>` unless the spec is provided
35
+ * and the target operation can be located). Exact signatures land in
36
+ * Round 2 when the resolver wires in full cross-spec type lookup.
37
+ * - Registry sources (`registry-component`, `registry-factory`) emit a
38
+ * TODO comment and a `throw` for the client constant; they compile but
39
+ * blow up at runtime until Round 2 fills in the registry resolver.
40
+ */
41
+ import type { RuntimeEmitter, RuntimeEmitterContext, RuntimeEmitterResult } from './dispatcher.js';
42
+ /**
43
+ * Library-runtime emitter implementation.
44
+ *
45
+ * One call to `emit()` processes a single `import:` entry and produces
46
+ * one client file under `clients/<provider-filename>.ts`.
47
+ */
48
+ export declare class LibraryRuntimeEmitter implements RuntimeEmitter {
49
+ readonly topology: "library";
50
+ emit(ctx: RuntimeEmitterContext): Promise<RuntimeEmitterResult>;
51
+ }
52
+ //# sourceMappingURL=library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAyQzB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAEjC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+EtE"}
@@ -0,0 +1,349 @@
1
+ /**
2
+ * Library-runtime emitter — V2 Phase 3, Round 1.
3
+ *
4
+ * Handles `topology: 'library'` factories: providers that are consumed
5
+ * as in-process imports, with no deployment instance entry.
6
+ *
7
+ * For each `import:` entry the consumer declares, this emitter produces:
8
+ * clients/<provider-name>.ts — typed client module
9
+ *
10
+ * The typed client module:
11
+ * - Exports a `<ProviderName>Client` TypeScript interface matching
12
+ * the selected operations from `import.select`.
13
+ * - Exports a `<providerName>Client` constant that implements the
14
+ * interface by delegating to the resolved provider:
15
+ * * source = 'local' → relative import to the provider's module.
16
+ * * source = 'npm' → `import { X } from '<package-specifier>'`.
17
+ * * source = 'registry-*' → TODO comment + runtime throw (Round 1).
18
+ *
19
+ * The consuming controller (SalesReportController.ts, emitted by the
20
+ * per-action-emitter's mechanical scaffold) imports this client module
21
+ * and receives the client via constructor injection.
22
+ *
23
+ * --- Select grammar ---
24
+ *
25
+ * `import.select` entries follow two forms (V2 D2 resolution):
26
+ * - Dotted: `Charge.create` → typed function for the specific operation.
27
+ * - Bare: `AuthService` → re-export of the entity's interface.
28
+ *
29
+ * Both forms share the same file; the emitter deduplicates by head entity.
30
+ *
31
+ * --- Round 1 limitations ---
32
+ *
33
+ * - No actual operation signature lookup (operations are typed as
34
+ * `(...args: unknown[]) => Promise<unknown>` unless the spec is provided
35
+ * and the target operation can be located). Exact signatures land in
36
+ * Round 2 when the resolver wires in full cross-spec type lookup.
37
+ * - Registry sources (`registry-component`, `registry-factory`) emit a
38
+ * TODO comment and a `throw` for the client constant; they compile but
39
+ * blow up at runtime until Round 2 fills in the registry resolver.
40
+ */
41
+ /**
42
+ * Parse a select entry into head + optional tail.
43
+ *
44
+ * Dotted: `Charge.create` → { head: 'Charge', tail: 'create' }
45
+ * Bare: `AuthService` → { head: 'AuthService', tail: undefined }
46
+ *
47
+ * The head is the entity/service name; the tail is the operation name.
48
+ * Dotted entries can have multiple tail segments (`A.B.C` → head A, tail 'B.C')
49
+ * but in practice V2 only uses one level (entity.operation).
50
+ */
51
+ function parseSelectEntry(entry) {
52
+ const dotIndex = entry.indexOf('.');
53
+ if (dotIndex === -1) {
54
+ return { head: entry, tail: undefined };
55
+ }
56
+ return {
57
+ head: entry.slice(0, dotIndex),
58
+ tail: entry.slice(dotIndex + 1),
59
+ };
60
+ }
61
+ /**
62
+ * Normalise a `from:` name into an array of words for identifier generation.
63
+ *
64
+ * Handles:
65
+ * 'ProfitCalculator' → ['profit', 'calculator']
66
+ * '@stripe/api' → ['stripe', 'api'] (scope + package combined)
67
+ * '@specverse/gitnexus-adapter' → ['specverse', 'gitnexus', 'adapter']
68
+ * 'gitnexus' → ['gitnexus']
69
+ */
70
+ function toWords(fromName) {
71
+ // For scoped packages (@scope/pkg), replace the / with a space and strip @.
72
+ const normalised = fromName.replace(/^@/, '').replace(/\//g, '-');
73
+ // Split on camelCase boundaries and non-alphanumeric runs.
74
+ return normalised
75
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
76
+ .replace(/[^a-zA-Z0-9]+/g, ' ')
77
+ .trim()
78
+ .split(' ')
79
+ .filter(Boolean)
80
+ .map((w) => w.toLowerCase());
81
+ }
82
+ /**
83
+ * Convert a from-name to a safe identifier prefix (lower-camelCase, no
84
+ * special characters). Used for the client constant name.
85
+ *
86
+ * Examples:
87
+ * 'ProfitCalculator' → 'profitCalculator'
88
+ * '@stripe/api' → 'stripeApi'
89
+ * 'gitnexus' → 'gitnexus'
90
+ */
91
+ function toClientName(fromName) {
92
+ const words = toWords(fromName);
93
+ if (words.length === 0)
94
+ return 'unknownClient';
95
+ return (words[0] +
96
+ words
97
+ .slice(1)
98
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
99
+ .join(''));
100
+ }
101
+ /**
102
+ * Convert a from-name to a PascalCase interface name suffix.
103
+ *
104
+ * Examples:
105
+ * 'ProfitCalculator' → 'ProfitCalculator'
106
+ * '@stripe/api' → 'StripeApi'
107
+ * 'gitnexus' → 'Gitnexus'
108
+ */
109
+ function toInterfaceName(fromName) {
110
+ const words = toWords(fromName);
111
+ return words.map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join('');
112
+ }
113
+ /**
114
+ * Convert a from-name to a filesystem-safe filename (kebab-case).
115
+ *
116
+ * Examples:
117
+ * 'ProfitCalculator' → 'profit-calculator'
118
+ * '@stripe/api' → 'stripe-api'
119
+ * '@specverse/gitnexus-adapter'→ 'specverse-gitnexus-adapter'
120
+ * 'gitnexus' → 'gitnexus'
121
+ */
122
+ function toFileName(fromName) {
123
+ return toWords(fromName).join('-');
124
+ }
125
+ /**
126
+ * Generate the TypeScript interface for the client type.
127
+ * Uses a placeholder signature `(...args: unknown[]) => Promise<unknown>`
128
+ * in Round 1; Round 2 will wire in real operation signatures.
129
+ */
130
+ function generateInterface(interfaceName, selectEntries) {
131
+ const lines = [];
132
+ lines.push(`export type ${interfaceName}Client = {`);
133
+ // Collect unique operations grouped by head entity for clarity.
134
+ // Bare entries produce a `<entity>: unknown` member (shape TBD by Round 2).
135
+ // Dotted entries produce a typed function.
136
+ const seen = new Set();
137
+ for (const entry of selectEntries) {
138
+ if (seen.has(entry))
139
+ continue;
140
+ seen.add(entry);
141
+ const { head, tail } = parseSelectEntry(entry);
142
+ if (tail === undefined) {
143
+ // Bare entity import — expose as an opaque type in Round 1.
144
+ // Round 2 will look up the entity interface and substitute the real type.
145
+ lines.push(` /** Re-export of ${head} entity interface. Round 2: substitute real type. */`);
146
+ lines.push(` ${head}: unknown;`);
147
+ }
148
+ else {
149
+ // Dotted operation import — typed function.
150
+ // Round 2 will substitute real input/output types from the spec.
151
+ lines.push(` /** ${head}.${tail} — Round 2: substitute real input/output types. */`);
152
+ lines.push(` ${tail}(...args: unknown[]): Promise<unknown>;`);
153
+ }
154
+ }
155
+ lines.push('};');
156
+ return lines.join('\n');
157
+ }
158
+ /**
159
+ * Generate the import statement block for the client implementation.
160
+ * Returns the import lines and the identifiers made available.
161
+ */
162
+ function generateImportBlock(ctx, selectEntries) {
163
+ const { resolved } = ctx;
164
+ const importLines = [];
165
+ // Maps select entry → the identifier available in the module scope.
166
+ const availableIds = new Map();
167
+ if (resolved.source === 'local') {
168
+ // Relative import to the provider's module in the same spec's output tree.
169
+ const relativePath = resolved.localRelativePath ?? `../${toFileName(resolved.resolvedName)}`;
170
+ // Group dotted entries by head (entity) — one import per head.
171
+ const heads = new Set();
172
+ const bareEntries = [];
173
+ for (const entry of selectEntries) {
174
+ const { head, tail } = parseSelectEntry(entry);
175
+ if (tail !== undefined) {
176
+ heads.add(head);
177
+ }
178
+ else {
179
+ bareEntries.push(head);
180
+ }
181
+ }
182
+ const allImports = [...Array.from(heads), ...bareEntries];
183
+ if (allImports.length > 0) {
184
+ importLines.push(`import { ${allImports.join(', ')} } from '${relativePath}';`);
185
+ for (const id of allImports) {
186
+ availableIds.set(id, id);
187
+ }
188
+ }
189
+ // Map dotted entries: Charge.create → availableIds.get('Charge.create') = 'Charge'
190
+ for (const entry of selectEntries) {
191
+ const { head, tail } = parseSelectEntry(entry);
192
+ if (tail !== undefined) {
193
+ availableIds.set(entry, head);
194
+ }
195
+ }
196
+ }
197
+ else if (resolved.source === 'npm') {
198
+ // npm package import — use package specifier directly.
199
+ const pkg = resolved.packageSpecifier ?? resolved.resolvedName;
200
+ const heads = new Set();
201
+ const bareEntries = [];
202
+ for (const entry of selectEntries) {
203
+ const { head, tail } = parseSelectEntry(entry);
204
+ if (tail !== undefined) {
205
+ heads.add(head);
206
+ }
207
+ else {
208
+ bareEntries.push(head);
209
+ }
210
+ }
211
+ const allImports = [...Array.from(heads), ...bareEntries];
212
+ if (allImports.length > 0) {
213
+ importLines.push(`import { ${allImports.join(', ')} } from '${pkg}';`);
214
+ for (const id of allImports) {
215
+ availableIds.set(id, id);
216
+ }
217
+ }
218
+ for (const entry of selectEntries) {
219
+ const { head, tail } = parseSelectEntry(entry);
220
+ if (tail !== undefined) {
221
+ availableIds.set(entry, head);
222
+ }
223
+ }
224
+ }
225
+ else {
226
+ // registry-component or registry-factory — Round 1 TODO.
227
+ // No real import; the constant body will throw.
228
+ }
229
+ return { importLines, availableIds };
230
+ }
231
+ /**
232
+ * Generate the client constant — the exported object that implements the
233
+ * typed interface by delegating to the resolved provider.
234
+ */
235
+ function generateClientConstant(clientName, interfaceName, selectEntries, resolved, availableIds) {
236
+ const lines = [];
237
+ lines.push(`export const ${clientName}Client: ${interfaceName}Client = {`);
238
+ if (resolved.source === 'registry-component' || resolved.source === 'registry-factory') {
239
+ // Round 1 placeholder — registry resolution not yet implemented.
240
+ lines.push(' // TODO (Round 2): wire in registry resolver for this provider.');
241
+ lines.push(` // provider: '${resolved.resolvedName}' (source: ${resolved.source})`);
242
+ // Emit a throw for each member so the type is satisfied but blows up
243
+ // clearly at runtime rather than silently returning undefined.
244
+ const seen = new Set();
245
+ for (const entry of selectEntries) {
246
+ if (seen.has(entry))
247
+ continue;
248
+ seen.add(entry);
249
+ const { tail } = parseSelectEntry(entry);
250
+ if (tail === undefined) {
251
+ lines.push(` get ${entry}(): never { throw new Error('${entry} (${resolved.resolvedName}): registry provider not yet wired — Round 2 TODO'); },`);
252
+ }
253
+ else {
254
+ lines.push(` ${tail}(..._args: unknown[]): never { throw new Error('${tail} (${resolved.resolvedName}): registry provider not yet wired — Round 2 TODO'); },`);
255
+ }
256
+ }
257
+ }
258
+ else {
259
+ // local or npm — delegate to the imported identifiers.
260
+ const seen = new Set();
261
+ for (const entry of selectEntries) {
262
+ if (seen.has(entry))
263
+ continue;
264
+ seen.add(entry);
265
+ const { head, tail } = parseSelectEntry(entry);
266
+ const srcId = availableIds.get(entry) ?? availableIds.get(head) ?? head;
267
+ if (tail === undefined) {
268
+ // Bare entity — expose directly.
269
+ lines.push(` ${head}: ${srcId},`);
270
+ }
271
+ else {
272
+ // Dotted operation — delegate as method.
273
+ lines.push(` ${tail}: ${srcId}.${tail},`);
274
+ }
275
+ }
276
+ }
277
+ lines.push('};');
278
+ return lines.join('\n');
279
+ }
280
+ // ─── Library emitter ─────────────────────────────────────────────────────────
281
+ /**
282
+ * Library-runtime emitter implementation.
283
+ *
284
+ * One call to `emit()` processes a single `import:` entry and produces
285
+ * one client file under `clients/<provider-filename>.ts`.
286
+ */
287
+ export class LibraryRuntimeEmitter {
288
+ topology = 'library';
289
+ async emit(ctx) {
290
+ const { importEntry, resolved, factory, outputDir } = ctx;
291
+ const selectEntries = importEntry.select ?? [];
292
+ // Derive naming from the import's `from:` field, not the factory name.
293
+ const fileName = toFileName(importEntry.from);
294
+ const clientName = toClientName(importEntry.from);
295
+ const interfaceName = toInterfaceName(importEntry.from);
296
+ // File path relative to outputDir.
297
+ const relFilePath = `clients/${fileName}.ts`;
298
+ const absoluteFilePath = `${outputDir}/${relFilePath}`;
299
+ // Build file header.
300
+ const headerLines = [
301
+ '// FACTORY-EMITTED — DO NOT EDIT (R8)',
302
+ `// Generated by library-runtime emitter — V2 Phase 3`,
303
+ `// Provider: ${importEntry.from} (${resolved.source}) via factory: ${factory.name}`,
304
+ ];
305
+ if (resolved.source === 'local') {
306
+ headerLines.push(`// Local component: ${resolved.resolvedName}`);
307
+ }
308
+ else if (resolved.source === 'npm') {
309
+ const pkg = resolved.packageSpecifier ?? resolved.resolvedName;
310
+ headerLines.push(`// npm package: ${pkg}`);
311
+ }
312
+ else {
313
+ headerLines.push(`// Registry source: ${resolved.resolvedName} (Round 2 TODO)`);
314
+ }
315
+ headerLines.push('');
316
+ // Build import block.
317
+ const { importLines, availableIds } = generateImportBlock(ctx, selectEntries);
318
+ // Build interface + constant.
319
+ const interfaceBlock = generateInterface(interfaceName, selectEntries);
320
+ const constantBlock = generateClientConstant(clientName, interfaceName, selectEntries, resolved, availableIds);
321
+ // Assemble file.
322
+ const parts = [...headerLines];
323
+ if (importLines.length > 0) {
324
+ parts.push(...importLines, '');
325
+ }
326
+ parts.push(interfaceBlock, '', constantBlock, '');
327
+ const content = parts.join('\n');
328
+ // Build the import entry for the consumer's controller file.
329
+ const consumerImport = {
330
+ from: `./clients/${fileName}`,
331
+ specifier: `${clientName}Client`,
332
+ };
333
+ // Warnings for Round 1 limitations.
334
+ const notes = [];
335
+ if (selectEntries.length === 0) {
336
+ notes.push(`Warning: import entry from '${importEntry.from}' has empty select: — no client members emitted.`);
337
+ }
338
+ if (resolved.source === 'registry-component' ||
339
+ resolved.source === 'registry-factory') {
340
+ notes.push(`TODO (Round 2): registry provider '${resolved.resolvedName}' — client constant emits runtime throws until registry resolver is wired.`);
341
+ }
342
+ return {
343
+ files: [{ path: relFilePath, content }],
344
+ imports: [consumerImport],
345
+ notes: notes.length > 0 ? notes : undefined,
346
+ };
347
+ }
348
+ }
349
+ //# sourceMappingURL=library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Managed-runtime emitter — V2 Phase 3, Round 2.
3
+ *
4
+ * Handles `topology: 'managed'` factories: external SaaS providers reached
5
+ * via vendor-specific SDKs (Stripe, OpenAI, Anthropic, Twilio, AWS, etc.).
6
+ *
7
+ * For each `import:` entry the consumer declares, this emitter produces:
8
+ * clients/<provider-name>.ts — SDK init + typed client
9
+ *
10
+ * No server-bind file — managed providers ship their own server.
11
+ *
12
+ * Auth dispatch (factory.v2metadata?.authentication?.kind):
13
+ * 'api-key' → `new SDK(process.env.<ENV>!)` constructor pattern (Stripe-shape)
14
+ * 'bearer' → header-based init reading token from env
15
+ * 'oauth2' → TODO scaffolding; init throws at call-time (Round 3)
16
+ * 'mtls' → env-driven cert paths
17
+ * 'none' → bare SDK init, no auth wiring
18
+ *
19
+ * Env var name: factory.v2metadata?.authentication?.env if present, else
20
+ * derived from provider (STRIPE_API_KEY, OPENAI_API_KEY, etc.). Suffix
21
+ * varies by auth.kind (_API_KEY / _TOKEN / _BEARER / _CERT).
22
+ *
23
+ * Operation routing: dotted ops like `Charge.create` route to
24
+ * `sdk.charges.create(...)` — entity head is lowercased + naively
25
+ * pluralised; tail becomes the SDK method. Exact mapping varies per
26
+ * SDK; Round 3 enhancement allows spec authors to override.
27
+ *
28
+ * Deployment hint: realize emits a `deployments.<env>.instances.infrastructure.<provider>`
29
+ * entry with `config: { provider: <hostname>, authEnv: <ENV_NAME> }` —
30
+ * mentioned in result.notes.
31
+ */
32
+ import type { RuntimeEmitter, RuntimeEmitterContext, RuntimeEmitterResult } from './dispatcher.js';
33
+ /**
34
+ * Managed-runtime emitter implementation.
35
+ *
36
+ * One call to `emit()` processes a single `import:` entry. Produces:
37
+ * - 1 client file under `clients/<provider-filename>.ts`
38
+ * - NO server-bind file (managed providers ship their own server).
39
+ */
40
+ export declare class ManagedRuntimeEmitter implements RuntimeEmitter {
41
+ readonly topology: "managed";
42
+ emit(ctx: RuntimeEmitterContext): Promise<RuntimeEmitterResult>;
43
+ }
44
+ //# sourceMappingURL=managed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed.d.ts","sourceRoot":"","sources":["../../../src/realize/runtime-emitters/managed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAgNzB;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IAEjC,IAAI,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA+EtE"}