@telorun/kernel 0.82.1 → 0.83.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.
- package/dist/controllers/module/import-controller.d.ts.map +1 -1
- package/dist/controllers/module/import-controller.js +237 -12
- package/dist/controllers/module/import-controller.js.map +1 -1
- package/dist/controllers/module/shared-libraries.d.ts +83 -0
- package/dist/controllers/module/shared-libraries.d.ts.map +1 -0
- package/dist/controllers/module/shared-libraries.js +110 -0
- package/dist/controllers/module/shared-libraries.js.map +1 -0
- package/dist/controllers/resource-definition/resource-template-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.js +104 -30
- package/dist/controllers/resource-definition/resource-template-controller.js.map +1 -1
- package/dist/evaluation-context.d.ts +60 -0
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +125 -2
- package/dist/evaluation-context.js.map +1 -1
- package/dist/module-context.d.ts +5 -0
- package/dist/module-context.d.ts.map +1 -1
- package/dist/module-context.js +5 -0
- package/dist/module-context.js.map +1 -1
- package/package.json +4 -4
- package/src/controllers/module/import-controller.ts +324 -13
- package/src/controllers/module/shared-libraries.ts +180 -0
- package/src/controllers/resource-definition/resource-template-controller.ts +129 -29
- package/src/evaluation-context.ts +136 -2
- package/src/module-context.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"import-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,cAAc,CAAC;AAGvE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAY1E,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,GAAG,EACb,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CA8e3B"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { AnalysisRegistry, DiagnosticSeverity, authoredModuleMetadata, foldIntegrity, parseExportEntry, StaticAnalyzer } from "@telorun/analyzer";
|
|
2
|
-
import { RuntimeError } from "@telorun/sdk";
|
|
1
|
+
import { AnalysisRegistry, DiagnosticSeverity, authoredModuleMetadata, foldIntegrity, isInjectedDeclaration, parseExportEntry, readLibraryLifecycle, readResourceInputs, readSuppliedResources, StaticAnalyzer, } from "@telorun/analyzer";
|
|
2
|
+
import { RuntimeError, TEARDOWN_LAST } from "@telorun/sdk";
|
|
3
3
|
import { publishedPropsOf } from "../../evaluation-context.js";
|
|
4
4
|
import { buildScopeConfig } from "../../logging/kernel-logging.js";
|
|
5
5
|
import { ModuleContext } from "../../module-context.js";
|
|
6
6
|
import { isDefaultPolicy, normalizeRuntime } from "../../runtime-registry.js";
|
|
7
|
+
import { assertNoSharedOverride, assertSharedInputsAgree, rootContextOf, sharedLibraries, } from "./shared-libraries.js";
|
|
7
8
|
export async function create(resource, ctx) {
|
|
8
9
|
const alias = resource.metadata.name;
|
|
10
|
+
// Resolve the instances this import hands DOWN to the target library's
|
|
11
|
+
// declared `resources:` inputs BEFORE any loading happens. A borrowed
|
|
12
|
+
// instance that is registered but not yet initialized is a DEFERRAL, not a
|
|
13
|
+
// failure — raised as `ERR_LOCAL_REF_PENDING` so the multi-pass loop retries
|
|
14
|
+
// and the init-failure classifier reads it as derived rather than as a root
|
|
15
|
+
// cause. Resolving first is what keeps a deferral cheap: a fetch, a parse and
|
|
16
|
+
// a full analysis pass would otherwise be redone on every pass.
|
|
17
|
+
const borrowed = resolveBorrowedResources(resource, ctx);
|
|
9
18
|
const rawSource = resource.module ?? resource.source;
|
|
10
19
|
// A directly-authored Telo.Import may carry integrity as a sibling field;
|
|
11
20
|
// fold it into the ref as a `#sha256-...` fragment (the desugared inline
|
|
@@ -29,6 +38,15 @@ export async function create(resource, ctx) {
|
|
|
29
38
|
// loader keyed its caches under — without which fast paths like
|
|
30
39
|
// `isImportValidatedAtLoad` silently miss.
|
|
31
40
|
const resolvedUrl = ctx.resolveImportUrl(base, moduleSource);
|
|
41
|
+
// A `lifecycle: shared` library is instantiated ONCE per application. Only a
|
|
42
|
+
// shared library is ever registered, so the registry HIT is itself the answer
|
|
43
|
+
// to "is this one shared" — which is what makes a second import of it cost no
|
|
44
|
+
// fetch, no parse and no analysis pass at all.
|
|
45
|
+
const registry = sharedLibraries(ctx.moduleContext);
|
|
46
|
+
const alreadyShared = registry.get(resolvedUrl);
|
|
47
|
+
if (alreadyShared) {
|
|
48
|
+
return borrowSharedLibrary(alreadyShared, alias, resource, borrowed, ctx);
|
|
49
|
+
}
|
|
32
50
|
// The analysis-flattened graph (follows Telo.Import chains, includes forwarded
|
|
33
51
|
// sub-import exports) serves two purposes here: validating the imported subtree,
|
|
34
52
|
// and populating a CHILD-SCOPED analysis registry whose top-level alias scope is
|
|
@@ -90,6 +108,8 @@ export async function create(resource, ctx) {
|
|
|
90
108
|
// Validate required inputs before injecting.
|
|
91
109
|
validateRequiredInputs(moduleManifest.variables ?? {}, resource.variables ?? {}, "variables");
|
|
92
110
|
validateRequiredInputs(moduleManifest.secrets ?? {}, resource.secrets ?? {}, "secrets");
|
|
111
|
+
const declaredInputs = readResourceInputs(moduleManifest);
|
|
112
|
+
validateResourceInputs(declaredInputs, borrowed, targetModule);
|
|
93
113
|
// Evaluate the import's variables/secrets ONCE against the IMPORTER's config
|
|
94
114
|
// scope, instead of baking the raw compiled-value objects verbatim. Resolution
|
|
95
115
|
// is eager and per-hop: each importer resolves its child's inputs from its own
|
|
@@ -132,7 +152,19 @@ export async function create(resource, ctx) {
|
|
|
132
152
|
// version is its own — carrying the importer's would make a library reporting
|
|
133
153
|
// `module.version` report whatever happened to import it.
|
|
134
154
|
childCtx.setModuleMetadata(authoredModuleMetadata(moduleManifest.metadata));
|
|
135
|
-
|
|
155
|
+
// A singleton is spawned under the ROOT, never under whichever import reached
|
|
156
|
+
// it first: otherwise tearing that importer down would close a library two
|
|
157
|
+
// others still hold, and which importer that is depends on init order. It is
|
|
158
|
+
// pinned last in the root's cascade so a borrower's own inverses still find it
|
|
159
|
+
// alive — the context-level form of `TEARDOWN_LAST`.
|
|
160
|
+
const isShared = readLibraryLifecycle(moduleManifest) === "shared";
|
|
161
|
+
if (isShared) {
|
|
162
|
+
assertNoSharedOverride(resource, alias, targetModule);
|
|
163
|
+
childCtx.teardownPriority = TEARDOWN_LAST;
|
|
164
|
+
}
|
|
165
|
+
const child = isShared
|
|
166
|
+
? rootContextOf(ctx.moduleContext).spawnChild(childCtx)
|
|
167
|
+
: ctx.moduleContext.spawnChild(childCtx);
|
|
136
168
|
// A library references its own kinds via `Self.<Kind>` (e.g. when it declares an
|
|
137
169
|
// instance to export). Register `Self` → the library's own module in the child context
|
|
138
170
|
// so those resolve at runtime — ungated, since this is internal use, not an importer.
|
|
@@ -164,7 +196,14 @@ export async function create(resource, ctx) {
|
|
|
164
196
|
// scoping and the FFI threshold cache are one mechanism. See §9 and §12.2.
|
|
165
197
|
const parentScope = ctx.moduleContext.getLoggingConfig?.() ??
|
|
166
198
|
ctx.kernelLoggingRootScope();
|
|
167
|
-
|
|
199
|
+
// A singleton's scope is the LIBRARY's own name: it sits under the root rather
|
|
200
|
+
// than under an importer, and naming it after whichever import was created
|
|
201
|
+
// first would make a log line's scope depend on init order.
|
|
202
|
+
const scopePath = isShared
|
|
203
|
+
? targetModule
|
|
204
|
+
: parentScope.scope
|
|
205
|
+
? `${parentScope.scope}.${alias}`
|
|
206
|
+
: alias;
|
|
168
207
|
const importLogging = resource.logging
|
|
169
208
|
? ctx.expandValue(resource.logging, {})
|
|
170
209
|
: undefined;
|
|
@@ -174,7 +213,37 @@ export async function create(resource, ctx) {
|
|
|
174
213
|
module: targetModule,
|
|
175
214
|
secretValues: child.secretValues,
|
|
176
215
|
});
|
|
216
|
+
// A borrowed instance is bound under the library's own name for it BEFORE its
|
|
217
|
+
// resources are registered, so `!ref connection` and `resources.connection`
|
|
218
|
+
// resolve exactly as a locally declared resource does — and so a library
|
|
219
|
+
// declaring a resource that collides with an input name fails as the
|
|
220
|
+
// duplicate it is.
|
|
221
|
+
//
|
|
222
|
+
// An EFFECT on the create frame, not bare statements: binding a borrowed
|
|
223
|
+
// instance registers a publication mirror on the OWNER, and an import whose
|
|
224
|
+
// `init()` fails is discarded and re-created on the next pass. Left
|
|
225
|
+
// unregistered, each pass would append another mirror for the same pair and
|
|
226
|
+
// keep the abandoned child context reachable from the live owner.
|
|
227
|
+
if (borrowed.size > 0) {
|
|
228
|
+
await ctx
|
|
229
|
+
.effect(`borrowed resources ${alias}`, async () => {
|
|
230
|
+
const inverses = [...borrowed].map(([name, entry]) => childCtx.adoptBorrowedResource(name, entry.manifest, entry.instance, ctx.moduleContext));
|
|
231
|
+
return {
|
|
232
|
+
result: undefined,
|
|
233
|
+
inverse: () => {
|
|
234
|
+
for (const undo of inverses)
|
|
235
|
+
undo?.();
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
})
|
|
239
|
+
.perform();
|
|
240
|
+
}
|
|
177
241
|
for (const manifest of manifests) {
|
|
242
|
+
// The kind-only stand-ins the loader synthesizes behind a `resources:` entry
|
|
243
|
+
// are a DECLARATION for the analyzer, never an instantiation: the instance
|
|
244
|
+
// is the importer's, already bound above.
|
|
245
|
+
if (isInjectedDeclaration(manifest))
|
|
246
|
+
continue;
|
|
178
247
|
child.registerManifest(manifest);
|
|
179
248
|
}
|
|
180
249
|
// Initialize the child's resources in dependency order, mirroring the root
|
|
@@ -238,6 +307,48 @@ export async function create(resource, ctx) {
|
|
|
238
307
|
throw new RuntimeError("ERR_INVALID_EXPORT", `Library exports.resources may not include the reserved name '${name}' — it would overwrite the import's '${name}' value-flow surface under resources.${alias}.`);
|
|
239
308
|
}
|
|
240
309
|
}
|
|
310
|
+
/** Build this library's resources and its export tables — the work an
|
|
311
|
+
* `init()` performs, hoisted so a SINGLETON can carry it on its registry
|
|
312
|
+
* entry rather than in one import's closure. Whichever import's `init()`
|
|
313
|
+
* runs first calls it; every other awaits the same promise. */
|
|
314
|
+
const buildLibrary = async () => {
|
|
315
|
+
// Publish each borrowed reading into the child's `resources` scope before
|
|
316
|
+
// anything reads it: a library resource's compile-eval fields are expanded
|
|
317
|
+
// at CREATE time, inside `initializeResources` below.
|
|
318
|
+
for (const name of borrowed.keys())
|
|
319
|
+
await childCtx.publishSnapshot(name);
|
|
320
|
+
await child.initializeResources();
|
|
321
|
+
// Build this import's flattened export tables now that its own imports are
|
|
322
|
+
// registered (leaves-first), so a re-export (`!ref Alias.name` /
|
|
323
|
+
// `Alias.Kind`) copies the source import's terminal getter / canonical kind
|
|
324
|
+
// by reference — O(1) resolution at any depth.
|
|
325
|
+
childCtx.buildExportTable(exportEntries, kindEntries, targetModule);
|
|
326
|
+
};
|
|
327
|
+
// The singleton, registered before any alias so a second import created in
|
|
328
|
+
// the same pass finds it. `initialized` is filled by whichever import's
|
|
329
|
+
// `init()` runs first — which is NOT necessarily the one that registered it,
|
|
330
|
+
// so the builder travels with the entry.
|
|
331
|
+
const entry = isShared
|
|
332
|
+
? {
|
|
333
|
+
build: buildLibrary,
|
|
334
|
+
url: resolvedUrl,
|
|
335
|
+
module: targetModule,
|
|
336
|
+
owner: alias,
|
|
337
|
+
context: childCtx,
|
|
338
|
+
child,
|
|
339
|
+
variables: importVariables,
|
|
340
|
+
secrets: importSecrets,
|
|
341
|
+
resources: new Map([...borrowed].map(([name, b]) => [name, b.instance])),
|
|
342
|
+
declaredVariables: (moduleManifest.variables ?? {}),
|
|
343
|
+
declaredSecrets: (moduleManifest.secrets ?? {}),
|
|
344
|
+
exportEntries,
|
|
345
|
+
kindEntries,
|
|
346
|
+
exportedResourceNames,
|
|
347
|
+
exportedKindSuffixes,
|
|
348
|
+
}
|
|
349
|
+
: undefined;
|
|
350
|
+
if (entry)
|
|
351
|
+
registry.set(resolvedUrl, entry);
|
|
241
352
|
// The alias registrations are an EFFECT on the create frame, not bare calls:
|
|
242
353
|
// an import whose `init()` fails is discarded and re-created on the next pass,
|
|
243
354
|
// so an alias left registered would be re-registered against a module context
|
|
@@ -262,8 +373,11 @@ export async function create(resource, ctx) {
|
|
|
262
373
|
inverse: () => {
|
|
263
374
|
ctx.moduleContext.unregisterImport(alias);
|
|
264
375
|
// The child context goes with the alias: it was spawned for this
|
|
265
|
-
// import and nothing else can reach it once the alias is gone.
|
|
266
|
-
|
|
376
|
+
// import and nothing else can reach it once the alias is gone. A
|
|
377
|
+
// SINGLETON is the exception — the root owns it and other imports may
|
|
378
|
+
// still hold it, so only the alias is given up.
|
|
379
|
+
if (!isShared)
|
|
380
|
+
ctx.moduleContext.detachChild(child);
|
|
267
381
|
},
|
|
268
382
|
};
|
|
269
383
|
})
|
|
@@ -294,16 +408,72 @@ export async function create(resource, ctx) {
|
|
|
294
408
|
// child context down is what undoes it — so the two are one effect rather
|
|
295
409
|
// than an init/teardown pair the kernel had to trust were inverses.
|
|
296
410
|
init: (importCtx) => importCtx.effect("library resources", async () => {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
411
|
+
if (entry) {
|
|
412
|
+
// Memoized on the ENTRY, so whichever import's `init()` runs first
|
|
413
|
+
// does the work and every other awaits the same promise. It is not
|
|
414
|
+
// necessarily the import that registered it: a root import registers
|
|
415
|
+
// the singleton during the create sub-phase, while a nested import
|
|
416
|
+
// inside another library borrows it during that library's init — and
|
|
417
|
+
// the nested one's `init()` can then run first.
|
|
418
|
+
await (entry.initialized ??= entry.build());
|
|
419
|
+
// No inverse: the ROOT owns a singleton, and an import that gave it up
|
|
420
|
+
// would close a library its siblings still hold.
|
|
421
|
+
return { result: undefined };
|
|
422
|
+
}
|
|
423
|
+
await buildLibrary();
|
|
303
424
|
return { result: undefined, inverse: () => child.teardownResources() };
|
|
304
425
|
}),
|
|
305
426
|
};
|
|
306
427
|
}
|
|
428
|
+
/**
|
|
429
|
+
* A second (or third) import of a library already instantiated as a singleton.
|
|
430
|
+
*
|
|
431
|
+
* Nothing is fetched, parsed or analyzed: the registry hit means the library is
|
|
432
|
+
* built and shared, so this import only has to agree with it and register its
|
|
433
|
+
* own alias. What it must NOT do is re-register the manifests, re-initialize the
|
|
434
|
+
* resources, or claim any part of the teardown.
|
|
435
|
+
*/
|
|
436
|
+
function borrowSharedLibrary(entry, alias, resource, borrowed, ctx) {
|
|
437
|
+
assertNoSharedOverride(resource, alias, entry.module);
|
|
438
|
+
const importVariables = applyDefaults(ctx.expandValue(resource.variables, {}) ?? {}, entry.declaredVariables);
|
|
439
|
+
const importSecrets = applyDefaults(ctx.expandValue(resource.secrets, {}) ?? {}, entry.declaredSecrets);
|
|
440
|
+
validateRequiredInputs(entry.declaredVariables, importVariables, "variables");
|
|
441
|
+
validateRequiredInputs(entry.declaredSecrets, importSecrets, "secrets");
|
|
442
|
+
assertSharedInputsAgree(entry, alias, importVariables, importSecrets, borrowed);
|
|
443
|
+
const childCtx = entry.context;
|
|
444
|
+
const exportedResourceNames = [...entry.exportedResourceNames];
|
|
445
|
+
return {
|
|
446
|
+
snapshot: async () => {
|
|
447
|
+
const exported = {};
|
|
448
|
+
for (const name of exportedResourceNames) {
|
|
449
|
+
const target = childCtx.getExported(name);
|
|
450
|
+
if (target?.instance) {
|
|
451
|
+
exported[name] = await publishedPropsOf(target.kind, name, target.instance, childCtx.getDefinition);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return { variables: importVariables, secrets: importSecrets, ...exported };
|
|
455
|
+
},
|
|
456
|
+
init: (importCtx) => importCtx
|
|
457
|
+
.effect(`import alias ${alias}`, async () => {
|
|
458
|
+
ctx.registerModuleImport(alias, entry.module, entry.exportedKindSuffixes ? [...entry.exportedKindSuffixes] : undefined);
|
|
459
|
+
ctx.moduleContext.registerImportedScope(alias, exportedResourceNames, (name) => childCtx.getTerminalExport(name));
|
|
460
|
+
ctx.moduleContext.registerImportedKindScope(alias, (suffix) => childCtx.getExportedKind(suffix));
|
|
461
|
+
return {
|
|
462
|
+
result: undefined,
|
|
463
|
+
// Only the alias: the root owns the library and the imports that
|
|
464
|
+
// instantiated it are still holding it.
|
|
465
|
+
inverse: () => ctx.moduleContext.unregisterImport(alias),
|
|
466
|
+
};
|
|
467
|
+
})
|
|
468
|
+
// The singleton may not be built yet — this import's `init()` can run
|
|
469
|
+
// before the one that registered it. Start it if nobody has; otherwise
|
|
470
|
+
// await the one promise everybody shares.
|
|
471
|
+
.effect("shared library", async () => {
|
|
472
|
+
await (entry.initialized ??= entry.build());
|
|
473
|
+
return { result: undefined };
|
|
474
|
+
}),
|
|
475
|
+
};
|
|
476
|
+
}
|
|
307
477
|
/**
|
|
308
478
|
* Fill in library-declared `default:` values for any input the importer left
|
|
309
479
|
* unset. Mirrors the root Application's env defaulting: a provided value (incl.
|
|
@@ -329,4 +499,59 @@ function validateRequiredInputs(schemaDefs, provided, kind) {
|
|
|
329
499
|
}
|
|
330
500
|
}
|
|
331
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Resolve every `resources:` entry this import supplies to a live instance, in
|
|
504
|
+
* the IMPORTER's scope.
|
|
505
|
+
*
|
|
506
|
+
* A name that is registered here but not yet initialized defers
|
|
507
|
+
* (`ERR_LOCAL_REF_PENDING`); one that names nothing at all is a hard
|
|
508
|
+
* `ERR_REF_UNRESOLVED`, since no later pass will produce it. The two are kept
|
|
509
|
+
* apart because the init-failure classifier reads the first as derived — the
|
|
510
|
+
* import never ran — and the second as the root cause it is.
|
|
511
|
+
*/
|
|
512
|
+
function resolveBorrowedResources(resource, ctx) {
|
|
513
|
+
const out = new Map();
|
|
514
|
+
const alias = resource.metadata.name;
|
|
515
|
+
for (const [name, value] of Object.entries(readSuppliedResources(resource))) {
|
|
516
|
+
const ref = value;
|
|
517
|
+
const targetName = typeof ref?.name === "string" ? ref.name : undefined;
|
|
518
|
+
if (!targetName) {
|
|
519
|
+
throw new RuntimeError("ERR_REF_UNRESOLVED", `Import '${alias}': resource input '${name}' must be a '!ref' to a resource this module declares.`);
|
|
520
|
+
}
|
|
521
|
+
const targetAlias = typeof ref?.alias === "string" ? ref.alias : undefined;
|
|
522
|
+
const instance = targetAlias && targetAlias !== "Self"
|
|
523
|
+
? ctx.moduleContext.resolveImportedInstance(targetAlias, targetName)
|
|
524
|
+
: ctx.moduleContext.getInstance?.(targetName);
|
|
525
|
+
if (!instance) {
|
|
526
|
+
const label = targetAlias ? `${targetAlias}.${targetName}` : targetName;
|
|
527
|
+
throw new RuntimeError(targetAlias && targetAlias !== "Self"
|
|
528
|
+
? "ERR_CROSS_MODULE_REF_PENDING"
|
|
529
|
+
: "ERR_LOCAL_REF_PENDING", `Import '${alias}': resource input '${name}' → '${label}' is not available yet ` +
|
|
530
|
+
`(deferring to a later init pass).`);
|
|
531
|
+
}
|
|
532
|
+
const manifest = ctx.moduleContext.resolveDeclaredManifest?.(targetName, targetAlias) ??
|
|
533
|
+
{ kind: ref.kind ?? "", metadata: { name: targetName } };
|
|
534
|
+
out.set(name, { manifest, instance });
|
|
535
|
+
}
|
|
536
|
+
return out;
|
|
537
|
+
}
|
|
538
|
+
/** The runtime half of `validate-resource-inputs`: a library reached through a
|
|
539
|
+
* programmatic load never passed `telo check`, so the boundary is enforced
|
|
540
|
+
* here too. Kind acceptance is deliberately NOT re-tested — that is a static
|
|
541
|
+
* question about declarations, and the kernel holds instances. */
|
|
542
|
+
function validateResourceInputs(declared, supplied, targetModule) {
|
|
543
|
+
for (const entry of declared) {
|
|
544
|
+
if (supplied.has(entry.name))
|
|
545
|
+
continue;
|
|
546
|
+
throw new RuntimeError("ERR_MANIFEST_VALIDATION_FAILED", `Required resource input "${entry.name}" (kind '${entry.kind}') not provided for import of ` +
|
|
547
|
+
`module '${targetModule}'.`);
|
|
548
|
+
}
|
|
549
|
+
const names = new Set(declared.map((d) => d.name));
|
|
550
|
+
for (const name of supplied.keys()) {
|
|
551
|
+
if (names.has(name))
|
|
552
|
+
continue;
|
|
553
|
+
throw new RuntimeError("ERR_MANIFEST_VALIDATION_FAILED", `Resource input "${name}" is not declared by module '${targetModule}'. Declared inputs: ` +
|
|
554
|
+
`${declared.map((d) => d.name).join(", ") || "(none)"}.`);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
332
557
|
//# sourceMappingURL=import-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"import-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/import-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { EvaluationContext as IEvaluationContext, ResourceInstance } from "@telorun/sdk";
|
|
2
|
+
import type { ModuleContext } from "../../module-context.js";
|
|
3
|
+
import type { ParsedExportEntry } from "@telorun/analyzer";
|
|
4
|
+
/**
|
|
5
|
+
* LIBRARY SINGLETONS — one instantiation of a `lifecycle: shared` library per
|
|
6
|
+
* application, borrowed by every import that names it.
|
|
7
|
+
*
|
|
8
|
+
* An import declaration otherwise builds its own child scope with its own
|
|
9
|
+
* instances, so two libraries importing a third get two of everything in it.
|
|
10
|
+
* That is right for a library whose instances are the importer's — a client
|
|
11
|
+
* configured per consumer — and wrong for one that owns a resource the
|
|
12
|
+
* application has exactly one of. `lifecycle: shared` names the second case, and
|
|
13
|
+
* it is what lets a set of libraries share a dependency without linearizing them
|
|
14
|
+
* into a chain that re-exports the union of everything beneath it.
|
|
15
|
+
*
|
|
16
|
+
* **The root owns it; every import borrows it** — the same rule an injected
|
|
17
|
+
* resource follows. The child context is spawned under the ROOT rather than
|
|
18
|
+
* under whichever import happened to reach it first, because otherwise tearing
|
|
19
|
+
* that importer down would close a library two others still hold, and which
|
|
20
|
+
* importer that is depends on init order. It is torn down after every other root
|
|
21
|
+
* child (`TEARDOWN_LAST` on the context), so a borrower's own inverses still
|
|
22
|
+
* find it alive.
|
|
23
|
+
*
|
|
24
|
+
* **Registered only when shared**, which is what makes a registry HIT the answer
|
|
25
|
+
* to "is this library shared" — a second import of one costs no fetch, no parse
|
|
26
|
+
* and no analysis pass at all.
|
|
27
|
+
*/
|
|
28
|
+
export interface SharedLibrary {
|
|
29
|
+
/** The resolved module URL — the identity two imports must agree on. Carries
|
|
30
|
+
* any `#sha256-` pin, so two imports of the same source at different
|
|
31
|
+
* integrity are different libraries, which is the truth. */
|
|
32
|
+
readonly url: string;
|
|
33
|
+
readonly module: string;
|
|
34
|
+
/** The alias of the import that instantiated it, named in a conflict. */
|
|
35
|
+
readonly owner: string;
|
|
36
|
+
readonly context: ModuleContext;
|
|
37
|
+
readonly child: IEvaluationContext;
|
|
38
|
+
readonly variables: Record<string, unknown>;
|
|
39
|
+
readonly secrets: Record<string, unknown>;
|
|
40
|
+
/** The instances supplied for the library's declared `resources:` inputs,
|
|
41
|
+
* compared by IDENTITY: two imports handing down different instances of the
|
|
42
|
+
* same kind is exactly the split a singleton exists to prevent. */
|
|
43
|
+
readonly resources: ReadonlyMap<string, ResourceInstance>;
|
|
44
|
+
readonly declaredVariables: Record<string, any>;
|
|
45
|
+
readonly declaredSecrets: Record<string, any>;
|
|
46
|
+
readonly exportEntries: readonly ParsedExportEntry[];
|
|
47
|
+
readonly kindEntries: readonly ParsedExportEntry[];
|
|
48
|
+
readonly exportedResourceNames: readonly string[];
|
|
49
|
+
readonly exportedKindSuffixes: readonly string[] | undefined;
|
|
50
|
+
/** Build the library's resources and export tables. Carried on the ENTRY
|
|
51
|
+
* rather than in one import's closure because the import that REGISTERS a
|
|
52
|
+
* singleton is not necessarily the one whose `init()` runs first. */
|
|
53
|
+
readonly build: () => Promise<void>;
|
|
54
|
+
/** Memoized initialization. Whichever import's `init()` runs first starts it
|
|
55
|
+
* and every other awaits the same promise, so a borrower can never proceed
|
|
56
|
+
* against a library whose resources have not been built — an ordering the
|
|
57
|
+
* multi-pass loop does not otherwise guarantee. */
|
|
58
|
+
initialized?: Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/** The root of a context's lifecycle tree — the kernel's own root context. */
|
|
61
|
+
export declare function rootContextOf(ctx: IEvaluationContext): IEvaluationContext;
|
|
62
|
+
/** The shared-library registry for the kernel `ctx` belongs to. */
|
|
63
|
+
export declare function sharedLibraries(ctx: IEvaluationContext): Map<string, SharedLibrary>;
|
|
64
|
+
/**
|
|
65
|
+
* Refuse a second import that would instantiate the library differently.
|
|
66
|
+
*
|
|
67
|
+
* A singleton has one configuration, so the only sound reading of two imports
|
|
68
|
+
* supplying different values is that one of them is wrong — and which one cannot
|
|
69
|
+
* be decided here. Resolved by init order it would be whichever import was
|
|
70
|
+
* created first, silently, which is the failure mode `lifecycle: shared` is
|
|
71
|
+
* supposed to remove rather than relocate.
|
|
72
|
+
*
|
|
73
|
+
* A secret's VALUE is never printed: the key is what the author has to look at.
|
|
74
|
+
*/
|
|
75
|
+
export declare function assertSharedInputsAgree(entry: SharedLibrary, alias: string, variables: Record<string, unknown>, secrets: Record<string, unknown>, resources: ReadonlyMap<string, {
|
|
76
|
+
instance: ResourceInstance;
|
|
77
|
+
}>): void;
|
|
78
|
+
/** Reject a per-import override a singleton has no room for. The analyzer
|
|
79
|
+
* reports the same thing as `SHARED_LIBRARY_OVERRIDE`; this is the runtime
|
|
80
|
+
* half, for a library reached through a programmatic load that never passed
|
|
81
|
+
* `telo check`. */
|
|
82
|
+
export declare function assertNoSharedOverride(resource: any, alias: string, module: string): void;
|
|
83
|
+
//# sourceMappingURL=shared-libraries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-libraries.d.ts","sourceRoot":"","sources":["../../../src/controllers/module/shared-libraries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,aAAa;IAC5B;;iEAE6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C;;wEAEoE;IACpE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7D;;0EAEsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;wDAGoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAMD,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,CAIzE;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAKnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC7D,IAAI,CA0BN;AAED;;;oBAGoB;AACpB,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUzF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { RuntimeError } from "@telorun/sdk";
|
|
2
|
+
/** Per-kernel, hung off the ROOT context rather than held in module scope, so
|
|
3
|
+
* two in-process kernels never share a library instance. */
|
|
4
|
+
const registries = new WeakMap();
|
|
5
|
+
/** The root of a context's lifecycle tree — the kernel's own root context. */
|
|
6
|
+
export function rootContextOf(ctx) {
|
|
7
|
+
let node = ctx;
|
|
8
|
+
while (node.parent)
|
|
9
|
+
node = node.parent;
|
|
10
|
+
return node;
|
|
11
|
+
}
|
|
12
|
+
/** The shared-library registry for the kernel `ctx` belongs to. */
|
|
13
|
+
export function sharedLibraries(ctx) {
|
|
14
|
+
const root = rootContextOf(ctx);
|
|
15
|
+
let registry = registries.get(root);
|
|
16
|
+
if (!registry)
|
|
17
|
+
registries.set(root, (registry = new Map()));
|
|
18
|
+
return registry;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Refuse a second import that would instantiate the library differently.
|
|
22
|
+
*
|
|
23
|
+
* A singleton has one configuration, so the only sound reading of two imports
|
|
24
|
+
* supplying different values is that one of them is wrong — and which one cannot
|
|
25
|
+
* be decided here. Resolved by init order it would be whichever import was
|
|
26
|
+
* created first, silently, which is the failure mode `lifecycle: shared` is
|
|
27
|
+
* supposed to remove rather than relocate.
|
|
28
|
+
*
|
|
29
|
+
* A secret's VALUE is never printed: the key is what the author has to look at.
|
|
30
|
+
*/
|
|
31
|
+
export function assertSharedInputsAgree(entry, alias, variables, secrets, resources) {
|
|
32
|
+
const conflict = (block, key, detail) => {
|
|
33
|
+
throw new RuntimeError("ERR_SHARED_LIBRARY_CONFLICT", `Import '${alias}' and import '${entry.owner}' both reach module '${entry.module}', which ` +
|
|
34
|
+
`declares 'lifecycle: shared' — one instantiation for the whole application — but they ` +
|
|
35
|
+
`supply different values for ${block}.${key}${detail ? ` (${detail})` : ""}. Make the two ` +
|
|
36
|
+
`imports agree, or make the library 'lifecycle: isolated'.`);
|
|
37
|
+
};
|
|
38
|
+
for (const key of union(Object.keys(entry.variables), Object.keys(variables))) {
|
|
39
|
+
if (!sameValue(entry.variables[key], variables[key])) {
|
|
40
|
+
conflict("variables", key, `'${render(entry.variables[key])}' vs '${render(variables[key])}'`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Values withheld deliberately — a diagnostic must not become a way to read a
|
|
44
|
+
// secret out of a running process.
|
|
45
|
+
for (const key of union(Object.keys(entry.secrets), Object.keys(secrets))) {
|
|
46
|
+
if (!sameValue(entry.secrets[key], secrets[key]))
|
|
47
|
+
conflict("secrets", key);
|
|
48
|
+
}
|
|
49
|
+
for (const key of union([...entry.resources.keys()], [...resources.keys()])) {
|
|
50
|
+
if (entry.resources.get(key) !== resources.get(key)?.instance) {
|
|
51
|
+
conflict("resources", key, "different instances");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Reject a per-import override a singleton has no room for. The analyzer
|
|
56
|
+
* reports the same thing as `SHARED_LIBRARY_OVERRIDE`; this is the runtime
|
|
57
|
+
* half, for a library reached through a programmatic load that never passed
|
|
58
|
+
* `telo check`. */
|
|
59
|
+
export function assertNoSharedOverride(resource, alias, module) {
|
|
60
|
+
for (const field of ["logging", "runtime"]) {
|
|
61
|
+
if (resource[field] === undefined)
|
|
62
|
+
continue;
|
|
63
|
+
throw new RuntimeError("ERR_SHARED_LIBRARY_OVERRIDE", `Import '${alias}' declares '${field}:', but module '${module}' is 'lifecycle: shared' — ` +
|
|
64
|
+
`one instantiation for the whole application, so a per-import override cannot apply to ` +
|
|
65
|
+
`it. Remove it, or make the library 'lifecycle: isolated'.`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function union(a, b) {
|
|
69
|
+
return [...new Set([...a, ...b])];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Structural equality over the JSON-shaped values a config input carries.
|
|
73
|
+
* `undefined` and an absent key are the same absence.
|
|
74
|
+
*
|
|
75
|
+
* Key ORDER is not part of a value: two imports writing the same object variable
|
|
76
|
+
* with its keys in a different YAML order are supplying the same thing, and a
|
|
77
|
+
* conflict here is a hard boot failure telling the author the two imports
|
|
78
|
+
* disagree — a false positive is both expensive and unexplainable.
|
|
79
|
+
*/
|
|
80
|
+
function sameValue(a, b) {
|
|
81
|
+
if (a === b)
|
|
82
|
+
return true;
|
|
83
|
+
if (a === undefined || b === undefined)
|
|
84
|
+
return false;
|
|
85
|
+
if (a === null || b === null)
|
|
86
|
+
return false;
|
|
87
|
+
if (Array.isArray(a) || Array.isArray(b)) {
|
|
88
|
+
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
|
|
89
|
+
return false;
|
|
90
|
+
return a.every((item, i) => sameValue(item, b[i]));
|
|
91
|
+
}
|
|
92
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
93
|
+
const left = a;
|
|
94
|
+
const right = b;
|
|
95
|
+
const keys = union(Object.keys(left), Object.keys(right));
|
|
96
|
+
return keys.every((key) => sameValue(left[key], right[key]));
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
function render(value) {
|
|
101
|
+
if (typeof value === "string")
|
|
102
|
+
return value;
|
|
103
|
+
try {
|
|
104
|
+
return JSON.stringify(value) ?? String(value);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return String(value);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=shared-libraries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-libraries.js","sourceRoot":"","sources":["../../../src/controllers/module/shared-libraries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-template-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-template-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAoFtB,wBAAgB,wBAAwB,CAAC,UAAU,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,EAAE,eAAe,EAAE,iBAAiB,GAAG,kBAAkB,CAuRzD"}
|