@telorun/kernel 0.35.0 → 0.36.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/resource-definition/resource-definition-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-definition-controller.js +6 -1
- package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.d.ts +6 -2
- package/dist/controllers/resource-definition/resource-template-controller.d.ts.map +1 -1
- package/dist/controllers/resource-definition/resource-template-controller.js +170 -127
- package/dist/controllers/resource-definition/resource-template-controller.js.map +1 -1
- package/dist/evaluation-context.d.ts +8 -0
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +12 -0
- package/dist/evaluation-context.js.map +1 -1
- package/dist/resource-context.d.ts.map +1 -1
- package/dist/resource-context.js +5 -3
- package/dist/resource-context.js.map +1 -1
- package/package.json +3 -3
- package/src/controllers/resource-definition/resource-definition-controller.ts +6 -1
- package/src/controllers/resource-definition/resource-template-controller.ts +190 -162
- package/src/evaluation-context.ts +19 -0
- package/src/resource-context.ts +5 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-definition-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-definition-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AAKtB,KAAK,0BAA0B,GAAG,eAAe,GAAG;IAClD,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,cAAM,kBAAmB,YAAW,gBAAgB;IAGtC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B;IAFzD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAwB;gBAEtC,QAAQ,EAAE,0BAA0B;IAEnD,IAAI,CAAC,GAAG,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"resource-definition-controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-definition-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AAKtB,KAAK,0BAA0B,GAAG,eAAe,GAAG;IAClD,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,cAAM,kBAAmB,YAAW,gBAAgB;IAGtC,QAAQ,CAAC,QAAQ,EAAE,0BAA0B;IAFzD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAwB;gBAEtC,QAAQ,EAAE,0BAA0B;IAEnD,IAAI,CAAC,GAAG,EAAE,eAAe;CA+DhC;AAeD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAErD;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW7F;AAED,eAAO,MAAM,MAAM;;;CAGlB,CAAC"}
|
|
@@ -15,7 +15,12 @@ class ResourceDefinition {
|
|
|
15
15
|
if (this.resource.capability === "Telo.Provider" && this.resource.provide == null) {
|
|
16
16
|
throw new Error(`Telo.Definition '${this.resource.metadata.name}': 'capability: Telo.Provider' requires either 'controllers:' (TS-backed) or 'provide:' (template-backed).`);
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
// ctx.moduleContext here is the context that DEFINED this kind (the
|
|
19
|
+
// library the Telo.Definition lives in). The template controller spawns
|
|
20
|
+
// its child scope from this context so the template's internal kind
|
|
21
|
+
// aliases / `!ref`s resolve against the defining library's imports — not
|
|
22
|
+
// the consumer module that instantiates the kind.
|
|
23
|
+
const controllerInstance = createTemplateController(this.resource, ctx.moduleContext);
|
|
19
24
|
ctx.registerDefinition(this.resource);
|
|
20
25
|
await ctx.registerController(this.resource.metadata.module, this.resource.metadata.name, controllerInstance);
|
|
21
26
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-definition-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-definition-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAe7E;;;GAGG;AACH,MAAM,kBAAkB;IAGtB,YAAqB,QAAoC;QAApC,aAAQ,GAAR,QAAQ,CAA4B;QAFhD,SAAI,GAAyB,oBAAoB,CAAC;IAEC,CAAC;IAE7D,KAAK,CAAC,IAAI,CAAC,GAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,4GAA4G,CAC5J,CAAC;YACJ,CAAC;YACD,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-definition-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-definition-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ControllerInstance } from "@telorun/sdk";
|
|
1
|
+
import type { ControllerInstance, EvaluationContext } from "@telorun/sdk";
|
|
2
2
|
export declare function createTemplateController(definition: {
|
|
3
3
|
schema: Record<string, any>;
|
|
4
4
|
resources?: any[];
|
|
@@ -8,10 +8,14 @@ export declare function createTemplateController(definition: {
|
|
|
8
8
|
};
|
|
9
9
|
inputs?: Record<string, any>;
|
|
10
10
|
run?: string;
|
|
11
|
+
mount?: string | {
|
|
12
|
+
kind?: string;
|
|
13
|
+
name: string;
|
|
14
|
+
};
|
|
11
15
|
provide?: {
|
|
12
16
|
kind: string;
|
|
13
17
|
name: string;
|
|
14
18
|
};
|
|
15
19
|
result?: Record<string, any>;
|
|
16
|
-
}): ControllerInstance;
|
|
20
|
+
}, definingContext: EvaluationContext): ControllerInstance;
|
|
17
21
|
//# sourceMappingURL=resource-template-controller.d.ts.map
|
|
@@ -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,
|
|
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;AA8CtB,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,CAsMzD"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { isCompiledValue } from "@telorun/sdk";
|
|
2
|
+
import { isRefSentinel } from "@telorun/templating";
|
|
3
|
+
/** CEL variables that are only bound at call time (request handling, step
|
|
4
|
+
* chaining, error branches) — never at a template's init(). A persistent
|
|
5
|
+
* child's body is expanded against `self` only, so a `${{ }}` node referencing
|
|
6
|
+
* any of these must survive untouched for the consuming controller (e.g. an
|
|
7
|
+
* Http.Api evaluating route CEL per request) to evaluate later. A node mixing
|
|
8
|
+
* `self` with a deferred variable in one expression is unsupported by design —
|
|
9
|
+
* keep `self`-derived literals and request-derived values in separate fields
|
|
10
|
+
* (e.g. a `self`-built SQL string vs. request-built `bindings`). */
|
|
11
|
+
const DEFERRED_VARS = new Set(["request", "result", "steps", "error"]);
|
|
12
|
+
const DEFERRED_RE = new RegExp(`(?<![.\\w])(?:${[...DEFERRED_VARS].join("|")})(?![\\w])`);
|
|
13
|
+
/** True when an expression reads a call-time-only variable. Prefers the AST-
|
|
14
|
+
* derived root identifiers stamped on the CompiledValue at compile time (exact —
|
|
15
|
+
* ignores string literals and substrings); falls back to a source-text scan for
|
|
16
|
+
* values produced by engines that surface no AST. */
|
|
17
|
+
function referencesDeferred(value) {
|
|
18
|
+
if (value.refs)
|
|
19
|
+
return value.refs.some((r) => DEFERRED_VARS.has(r));
|
|
20
|
+
return typeof value.source === "string" && DEFERRED_RE.test(value.source);
|
|
21
|
+
}
|
|
22
|
+
/** Matches a CEL source that is exactly a `self.<path>` member access (capturing
|
|
23
|
+
* the `.<path>` tail) — the form resolved by direct navigation rather than CEL. */
|
|
24
|
+
const SELF_PATH = /^self((?:\.[A-Za-z_$][\w$]*)+)$/;
|
|
2
25
|
/** Reports the resources: entries available to dispatch against, by expanded
|
|
3
26
|
* name and kind. Used in error messages to guide the developer back to the
|
|
4
27
|
* template's `resources:` array when a dispatch target doesn't match. */
|
|
@@ -7,165 +30,185 @@ function describeAvailableTargets(ctx, resources, self) {
|
|
|
7
30
|
return "<none>";
|
|
8
31
|
return resources
|
|
9
32
|
.map((r) => {
|
|
10
|
-
const expanded = ctx.
|
|
33
|
+
const expanded = ctx.expandWith(r?.metadata?.name ?? "", { self });
|
|
11
34
|
const kind = typeof r?.kind === "string" ? r.kind : "<unknown-kind>";
|
|
12
35
|
return `'${expanded || "<unnamed>"}' (${kind})`;
|
|
13
36
|
})
|
|
14
37
|
.join(", ");
|
|
15
38
|
}
|
|
16
|
-
export function createTemplateController(definition) {
|
|
39
|
+
export function createTemplateController(definition, definingContext) {
|
|
17
40
|
return {
|
|
18
41
|
schema: definition.schema ?? { type: "object", additionalProperties: true },
|
|
19
42
|
create: async (resource, ctx) => {
|
|
20
|
-
|
|
21
|
-
// `
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
+
void ctx; // child scope is rooted on definingContext, not the instance's ctx
|
|
44
|
+
// `self` is read lazily: Phase 5 injection mutates `resource`'s ref slots
|
|
45
|
+
// (e.g. `connection: !ref Db` → the live instance) AFTER create() but before
|
|
46
|
+
// init(), so capturing self here would freeze the pre-injection refs. Every
|
|
47
|
+
// expansion reads the current resource state instead.
|
|
48
|
+
const getSelf = () => ({ ...resource, name: resource.metadata.name });
|
|
49
|
+
// A dispatch field names which `resources:` entry receives the call. It is
|
|
50
|
+
// a string name template (legacy shorthand) or an object `{ kind?, name }`
|
|
51
|
+
// for explicit kind-typed dispatch. Per-call data lives on the top-level
|
|
52
|
+
// `inputs:` sibling (same factoring as Run.Sequence steps), never in the
|
|
53
|
+
// target's resource body — the body is `self`-only so every child can be
|
|
54
|
+
// created once at init and reused across calls.
|
|
55
|
+
const targetName = (field) => {
|
|
56
|
+
if (field == null)
|
|
57
|
+
return null;
|
|
58
|
+
const nameTemplate = typeof field === "object" && !isCompiledValue(field) ? field.name : field;
|
|
59
|
+
return nameTemplate
|
|
60
|
+
? definingContext.expandWith(nameTemplate, { self: getSelf() })
|
|
61
|
+
: null;
|
|
62
|
+
};
|
|
63
|
+
const invokeTarget = targetName(definition.invoke);
|
|
64
|
+
const runTarget = targetName(definition.run);
|
|
65
|
+
const mountTarget = targetName(definition.mount);
|
|
66
|
+
const provideTarget = targetName(definition.provide);
|
|
67
|
+
const childContext = definingContext.spawnChildContext();
|
|
68
|
+
// Resolves the live instance of a dispatch target from the child context.
|
|
69
|
+
// Every `resources:` entry is a persistent child created once at init(),
|
|
70
|
+
// so the target is looked up — never re-created — per call.
|
|
71
|
+
const dispatchEntry = (target, role) => {
|
|
72
|
+
const entry = childContext.resourceInstances.get(target);
|
|
73
|
+
if (!entry) {
|
|
74
|
+
throw new Error(`Template '${resource.metadata.name}': '${role}:' targets '${target}' ` +
|
|
75
|
+
`but no entry in 'resources:' has that metadata.name. Available: ${describeAvailableTargets(definingContext, definition.resources, getSelf())}.`);
|
|
76
|
+
}
|
|
77
|
+
return entry;
|
|
78
|
+
};
|
|
79
|
+
const capabilityError = (entry, target, role, expected) => {
|
|
80
|
+
const targetKind = (entry?.resource?.kind ?? "<unknown-kind>");
|
|
81
|
+
const targetDef = definingContext.getDefinition?.(targetKind);
|
|
82
|
+
const actualCap = typeof targetDef?.capability === "string" ? targetDef.capability : "<unknown>";
|
|
83
|
+
return new Error(`Template '${resource.metadata.name}': '${role}:' target '${targetKind}/${target}' ` +
|
|
84
|
+
`has capability '${actualCap}', not ${expected}. Update '${role}:' to a ${expected} kind, ` +
|
|
85
|
+
`or change the target's kind in 'resources:'.`);
|
|
86
|
+
};
|
|
87
|
+
const expand = (value, extra) => definingContext.expandWith(definingContext.expandWith(value, extra), extra);
|
|
88
|
+
// A local `!ref` inside a template body names a sibling `resources:` entry.
|
|
89
|
+
// The entry carries the kind, so resolve each sibling's expanded name to its
|
|
90
|
+
// kind — used to stamp the ref's `{kind, name}` injection shape (an empty
|
|
91
|
+
// kind is rejected downstream as a malformed inline resource).
|
|
92
|
+
const siblingKinds = new Map();
|
|
43
93
|
for (const template of definition.resources ?? []) {
|
|
44
|
-
const expandedName =
|
|
45
|
-
self,
|
|
94
|
+
const expandedName = definingContext.expandWith(template?.metadata?.name ?? "", {
|
|
95
|
+
self: getSelf(),
|
|
46
96
|
});
|
|
47
|
-
|
|
48
|
-
expandedName
|
|
49
|
-
expandedName === provideTarget;
|
|
50
|
-
if (isTarget) {
|
|
51
|
-
ephemeralTemplate = template;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
persistentManifests.push(ctx.moduleContext.expandWith(template, { self }));
|
|
97
|
+
if (expandedName && typeof template?.kind === "string") {
|
|
98
|
+
siblingKinds.set(expandedName, template.kind);
|
|
55
99
|
}
|
|
56
100
|
}
|
|
57
|
-
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
101
|
+
// Expand a persistent child's body against `self`. Self-only CEL resolves
|
|
102
|
+
// to literals now; CEL bound only at call time (DEFERRED_VARS) passes
|
|
103
|
+
// through compiled for the child's own controller. `!ref` sentinels are
|
|
104
|
+
// rewritten to the `{kind, name, alias?}` injection shape here — Phase 2.5
|
|
105
|
+
// (`resolveRefSentinels`) does not descend into template bodies, so the
|
|
106
|
+
// child context's Phase 5 injection would otherwise see an unrecognized
|
|
107
|
+
// sentinel and leave the slot unresolved. Kind is left empty: injection
|
|
108
|
+
// dispatches by name and recovers the kind from the resolved instance.
|
|
109
|
+
const expandSelf = (value) => {
|
|
110
|
+
if (isCompiledValue(value)) {
|
|
111
|
+
if (referencesDeferred(value))
|
|
112
|
+
return value;
|
|
113
|
+
// A pure `self.<path>` access (e.g. a `connection: !ref` passed down) is
|
|
114
|
+
// resolved by navigating the resource directly. Going through CEL would
|
|
115
|
+
// re-emit the value through CEL's output type-checker, which rejects live
|
|
116
|
+
// resource instances (unrecognized class constructors) — so the connection
|
|
117
|
+
// a consumer wired in could never reach a child's slot. Complex self
|
|
118
|
+
// expressions (string building) still evaluate via CEL, where they yield
|
|
119
|
+
// CEL-safe scalars.
|
|
120
|
+
const path = typeof value.source === "string" ? value.source.trim().match(SELF_PATH) : null;
|
|
121
|
+
if (path) {
|
|
122
|
+
let cur = getSelf();
|
|
123
|
+
for (const key of path[1].split(".").slice(1))
|
|
124
|
+
cur = cur?.[key];
|
|
125
|
+
return cur;
|
|
126
|
+
}
|
|
127
|
+
return definingContext.expandWith(value, { self: getSelf() });
|
|
128
|
+
}
|
|
129
|
+
if (isRefSentinel(value)) {
|
|
130
|
+
const source = value.source;
|
|
131
|
+
const dot = source.indexOf(".");
|
|
132
|
+
const alias = dot > 0 ? source.slice(0, dot) : undefined;
|
|
133
|
+
if (alias && alias !== "Self") {
|
|
134
|
+
const name = source.slice(dot + 1);
|
|
135
|
+
return { kind: siblingKinds.get(name) ?? "", name, alias };
|
|
136
|
+
}
|
|
137
|
+
const name = alias === "Self" ? source.slice(dot + 1) : source;
|
|
138
|
+
return { kind: siblingKinds.get(name) ?? "", name };
|
|
76
139
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
140
|
+
if (Array.isArray(value))
|
|
141
|
+
return value.map(expandSelf);
|
|
142
|
+
if (value !== null && typeof value === "object") {
|
|
143
|
+
const out = {};
|
|
144
|
+
for (const [k, v] of Object.entries(value))
|
|
145
|
+
out[k] = expandSelf(v);
|
|
146
|
+
return out;
|
|
81
147
|
}
|
|
148
|
+
return value;
|
|
82
149
|
};
|
|
150
|
+
// init() may run more than once: when a child's local ref names a sibling
|
|
151
|
+
// not yet initialized, child init defers with ERR_LOCAL_REF_PENDING and the
|
|
152
|
+
// outer multi-pass loop retries this resource. Registration must happen
|
|
153
|
+
// once; each retry only resumes the child init loop (already-initialized
|
|
154
|
+
// children are skipped, still-pending ones advance).
|
|
155
|
+
let registered = false;
|
|
83
156
|
return {
|
|
84
157
|
init: async () => {
|
|
85
|
-
|
|
86
|
-
|
|
158
|
+
if (!registered) {
|
|
159
|
+
for (const template of definition.resources ?? []) {
|
|
160
|
+
childContext.registerManifest(expandSelf(template));
|
|
161
|
+
}
|
|
162
|
+
registered = true;
|
|
163
|
+
}
|
|
87
164
|
await childContext.initializeResources();
|
|
88
165
|
},
|
|
89
166
|
...(invokeTarget && {
|
|
90
167
|
invoke: async (inputs) => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
168
|
+
const entry = dispatchEntry(invokeTarget, "invoke");
|
|
169
|
+
if (!entry.instance?.invoke) {
|
|
170
|
+
throw capabilityError(entry, invokeTarget, "invoke", "Telo.Invocable");
|
|
94
171
|
}
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const targetKind = (entry?.resource?.kind ?? expanded?.kind ?? "<unknown-kind>");
|
|
101
|
-
const targetDef = ctx.moduleContext.getDefinition?.(targetKind);
|
|
102
|
-
const actualCap = typeof targetDef?.capability === "string" ? targetDef.capability : "<unknown>";
|
|
103
|
-
throw new Error(`Template '${resource.metadata.name}': 'invoke:' target '${targetKind}/${invokeTarget}' ` +
|
|
104
|
-
`has capability '${actualCap}', not Telo.Invocable. Update 'invoke:' to a Telo.Invocable kind, or change the target's kind in 'resources:'.`);
|
|
105
|
-
}
|
|
106
|
-
// Top-level `inputs:` (sibling of `invoke:`) carries the values passed
|
|
107
|
-
// to the dispatch target's invoke(). When absent, fall back to the
|
|
108
|
-
// expanded resource entry's own `inputs` field (legacy string-form
|
|
109
|
-
// shape where the inputs live on the resource declaration), then
|
|
110
|
-
// finally to the caller's `inputs` arg.
|
|
111
|
-
const invokeInputs = definition.inputs != null
|
|
112
|
-
? ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(definition.inputs, extraContext), extraContext)
|
|
113
|
-
: expanded.inputs ?? inputs;
|
|
114
|
-
const raw = await entry.instance.invoke(invokeInputs);
|
|
115
|
-
if (definition.result == null)
|
|
116
|
-
return raw;
|
|
117
|
-
const resultContext = { self, result: raw };
|
|
118
|
-
return ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(definition.result, resultContext), resultContext);
|
|
119
|
-
});
|
|
172
|
+
const invokeInputs = definition.inputs != null ? expand(definition.inputs, { self: getSelf(), inputs }) : inputs;
|
|
173
|
+
const raw = await entry.instance.invoke(invokeInputs);
|
|
174
|
+
if (definition.result == null)
|
|
175
|
+
return raw;
|
|
176
|
+
return expand(definition.result, { self: getSelf(), result: raw });
|
|
120
177
|
},
|
|
121
178
|
}),
|
|
122
179
|
...(runTarget && {
|
|
123
180
|
run: async () => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
181
|
+
const entry = dispatchEntry(runTarget, "run");
|
|
182
|
+
if (!entry.instance?.run) {
|
|
183
|
+
throw capabilityError(entry, runTarget, "run", "Telo.Runnable");
|
|
127
184
|
}
|
|
128
|
-
|
|
129
|
-
const expanded = ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(ephemeralTemplate, extraContext), extraContext);
|
|
130
|
-
return withEphemeral(expanded, async (name) => {
|
|
131
|
-
const entry = ctx.moduleContext.resourceInstances.get(name);
|
|
132
|
-
if (!entry?.instance?.run) {
|
|
133
|
-
const targetKind = (entry?.resource?.kind ?? expanded?.kind ?? "<unknown-kind>");
|
|
134
|
-
const targetDef = ctx.moduleContext.getDefinition?.(targetKind);
|
|
135
|
-
const actualCap = typeof targetDef?.capability === "string" ? targetDef.capability : "<unknown>";
|
|
136
|
-
throw new Error(`Template '${resource.metadata.name}': 'run:' target '${targetKind}/${runTarget}' ` +
|
|
137
|
-
`has capability '${actualCap}', not Telo.Runnable. Update 'run:' to a Telo.Runnable kind, or change the target's kind in 'resources:'.`);
|
|
138
|
-
}
|
|
139
|
-
return entry.instance.run();
|
|
140
|
-
});
|
|
185
|
+
return entry.instance.run();
|
|
141
186
|
},
|
|
142
187
|
}),
|
|
143
188
|
...(provideTarget && {
|
|
144
189
|
provide: async () => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
190
|
+
const entry = dispatchEntry(provideTarget, "provide");
|
|
191
|
+
if (!entry.instance?.invoke) {
|
|
192
|
+
throw capabilityError(entry, provideTarget, "provide", "Telo.Invocable");
|
|
193
|
+
}
|
|
194
|
+
const provideInputs = definition.inputs != null ? expand(definition.inputs, { self: getSelf() }) : {};
|
|
195
|
+
const raw = await entry.instance.invoke(provideInputs);
|
|
196
|
+
if (definition.result == null)
|
|
197
|
+
return raw;
|
|
198
|
+
return expand(definition.result, { self: getSelf(), result: raw });
|
|
199
|
+
},
|
|
200
|
+
}),
|
|
201
|
+
...(mountTarget && {
|
|
202
|
+
// `register(app, prefix)` is the Telo.Mount contract a consuming
|
|
203
|
+
// Http.Server calls. It is not on the base ResourceInstance type, so
|
|
204
|
+
// the persistent mount child is accessed structurally.
|
|
205
|
+
register: (app, prefix) => {
|
|
206
|
+
const entry = dispatchEntry(mountTarget, "mount");
|
|
207
|
+
const mountable = entry.instance;
|
|
208
|
+
if (typeof mountable.register !== "function") {
|
|
209
|
+
throw capabilityError(entry, mountTarget, "mount", "Telo.Mount");
|
|
148
210
|
}
|
|
149
|
-
|
|
150
|
-
const expanded = ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(ephemeralTemplate, extraContext), extraContext);
|
|
151
|
-
return withEphemeral(expanded, async (name) => {
|
|
152
|
-
const entry = ctx.moduleContext.resourceInstances.get(name);
|
|
153
|
-
if (!entry?.instance?.invoke) {
|
|
154
|
-
const targetKind = (entry?.resource?.kind ?? expanded?.kind ?? "<unknown-kind>");
|
|
155
|
-
const targetDef = ctx.moduleContext.getDefinition?.(targetKind);
|
|
156
|
-
const actualCap = typeof targetDef?.capability === "string" ? targetDef.capability : "<unknown>";
|
|
157
|
-
throw new Error(`Template '${resource.metadata.name}': 'provide:' target '${targetKind}/${provideTarget}' ` +
|
|
158
|
-
`has capability '${actualCap}', not Telo.Invocable. Update 'provide:' to a Telo.Invocable kind, or change the target's kind in 'resources:'.`);
|
|
159
|
-
}
|
|
160
|
-
const provideInputs = definition.inputs != null
|
|
161
|
-
? ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(definition.inputs, extraContext), extraContext)
|
|
162
|
-
: {};
|
|
163
|
-
const raw = await entry.instance.invoke(provideInputs);
|
|
164
|
-
if (definition.result == null)
|
|
165
|
-
return raw;
|
|
166
|
-
const resultContext = { self, result: raw };
|
|
167
|
-
return ctx.moduleContext.expandWith(ctx.moduleContext.expandWith(definition.result, resultContext), resultContext);
|
|
168
|
-
});
|
|
211
|
+
return mountable.register(app, prefix);
|
|
169
212
|
},
|
|
170
213
|
}),
|
|
171
214
|
teardown: async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-template-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resource-template-controller.js","sourceRoot":"","sources":["../../../src/controllers/resource-definition/resource-template-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,14 @@ export declare class EvaluationContext implements IEvaluationContext {
|
|
|
75
75
|
* context and the child is registered under the given name.
|
|
76
76
|
*/
|
|
77
77
|
spawnChild<T extends IEvaluationContext>(child: T): T;
|
|
78
|
+
/** Spawn a fresh child context attached to this node — the isolated scope a
|
|
79
|
+
* templated definition registers its `resources:` into. Rooting it on the
|
|
80
|
+
* context that DEFINED the template (not the consumer that instantiated the
|
|
81
|
+
* kind) is what makes the template's internal kind aliases and `!ref`s
|
|
82
|
+
* resolve against the defining library's imports. Local sibling refs resolve
|
|
83
|
+
* in the child; a cross-module `!ref Alias.name` delegates to this context's
|
|
84
|
+
* imports (a plain child resolves none of its own). */
|
|
85
|
+
spawnChildContext(): EvaluationContext;
|
|
78
86
|
/**
|
|
79
87
|
* Resolve a cross-module exported instance (`!ref Alias.name`) to its live instance.
|
|
80
88
|
* Overridable hook: the base context has no imports, so it returns undefined; ModuleContext
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,18 @@ export class EvaluationContext {
|
|
|
201
201
|
}
|
|
202
202
|
return child;
|
|
203
203
|
}
|
|
204
|
+
/** Spawn a fresh child context attached to this node — the isolated scope a
|
|
205
|
+
* templated definition registers its `resources:` into. Rooting it on the
|
|
206
|
+
* context that DEFINED the template (not the consumer that instantiated the
|
|
207
|
+
* kind) is what makes the template's internal kind aliases and `!ref`s
|
|
208
|
+
* resolve against the defining library's imports. Local sibling refs resolve
|
|
209
|
+
* in the child; a cross-module `!ref Alias.name` delegates to this context's
|
|
210
|
+
* imports (a plain child resolves none of its own). */
|
|
211
|
+
spawnChildContext() {
|
|
212
|
+
const child = new EvaluationContext(this.source, this.context, this._createInstance, this._secretValues, this.emit);
|
|
213
|
+
child.resolveImportedInstance = (alias, name) => this.resolveImportedInstance(alias, name);
|
|
214
|
+
return this.spawnChild(child);
|
|
215
|
+
}
|
|
204
216
|
/**
|
|
205
217
|
* Resolve a cross-module exported instance (`!ref Alias.name`) to its live instance.
|
|
206
218
|
* Overridable hook: the base context has no imports, so it returns undefined; ModuleContext
|