@telorun/kernel 0.2.4
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/LICENSE +17 -0
- package/dist/boot-context-registry.d.ts +47 -0
- package/dist/boot-context-registry.d.ts.map +1 -0
- package/dist/boot-context-registry.js +131 -0
- package/dist/boot-context-registry.js.map +1 -0
- package/dist/capabilities/capabilities/component.yaml +3 -0
- package/dist/capabilities/capabilities/executable.yaml +7 -0
- package/dist/capabilities/capabilities/handler.yaml +3 -0
- package/dist/capabilities/capabilities/listener.yaml +3 -0
- package/dist/capabilities/capabilities/provider.yaml +3 -0
- package/dist/capabilities/capabilities/template.yaml +3 -0
- package/dist/capabilities/capabilities/type.yaml +3 -0
- package/dist/capabilities/component.yaml +3 -0
- package/dist/capabilities/executable.yaml +7 -0
- package/dist/capabilities/handler.yaml +3 -0
- package/dist/capabilities/listener.yaml +3 -0
- package/dist/capabilities/provider.yaml +3 -0
- package/dist/capabilities/template.yaml +3 -0
- package/dist/capabilities/type.yaml +3 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +109 -0
- package/dist/cli.js.map +1 -0
- package/dist/controller-loader.d.ts +24 -0
- package/dist/controller-loader.d.ts.map +1 -0
- package/dist/controller-loader.js +265 -0
- package/dist/controller-loader.js.map +1 -0
- package/dist/controller-registry.d.ts +56 -0
- package/dist/controller-registry.d.ts.map +1 -0
- package/dist/controller-registry.js +169 -0
- package/dist/controller-registry.js.map +1 -0
- package/dist/controllers/capability/capability-controller.d.ts +37 -0
- package/dist/controllers/capability/capability-controller.d.ts.map +1 -0
- package/dist/controllers/capability/capability-controller.js +30 -0
- package/dist/controllers/capability/capability-controller.js.map +1 -0
- package/dist/controllers/module/module-controller.d.ts +16 -0
- package/dist/controllers/module/module-controller.d.ts.map +1 -0
- package/dist/controllers/module/module-controller.js +95 -0
- package/dist/controllers/module/module-controller.js.map +1 -0
- package/dist/controllers/module/module.json +48 -0
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts +33 -0
- package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -0
- package/dist/controllers/resource-definition/resource-definition-controller.js +44 -0
- package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -0
- package/dist/event-stream.d.ts +45 -0
- package/dist/event-stream.d.ts.map +1 -0
- package/dist/event-stream.js +98 -0
- package/dist/event-stream.js.map +1 -0
- package/dist/events.d.ts +13 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +89 -0
- package/dist/events.js.map +1 -0
- package/dist/expressions.d.ts +20 -0
- package/dist/expressions.d.ts.map +1 -0
- package/dist/expressions.js +253 -0
- package/dist/expressions.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +113 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +558 -0
- package/dist/kernel.js.map +1 -0
- package/dist/loader.d.ts +17 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +189 -0
- package/dist/loader.js.map +1 -0
- package/dist/manifest-adapters/http-adapter.d.ts +8 -0
- package/dist/manifest-adapters/http-adapter.d.ts.map +1 -0
- package/dist/manifest-adapters/http-adapter.js +29 -0
- package/dist/manifest-adapters/http-adapter.js.map +1 -0
- package/dist/manifest-adapters/local-file-adapter.d.ts +11 -0
- package/dist/manifest-adapters/local-file-adapter.d.ts.map +1 -0
- package/dist/manifest-adapters/local-file-adapter.js +51 -0
- package/dist/manifest-adapters/local-file-adapter.js.map +1 -0
- package/dist/manifest-adapters/manifest-adapter.d.ts +33 -0
- package/dist/manifest-adapters/manifest-adapter.d.ts.map +1 -0
- package/dist/manifest-adapters/manifest-adapter.js +2 -0
- package/dist/manifest-adapters/manifest-adapter.js.map +1 -0
- package/dist/manifest-adapters/registry-adapter.d.ts +9 -0
- package/dist/manifest-adapters/registry-adapter.d.ts.map +1 -0
- package/dist/manifest-adapters/registry-adapter.js +46 -0
- package/dist/manifest-adapters/registry-adapter.js.map +1 -0
- package/dist/manifest-schemas.d.ts +66 -0
- package/dist/manifest-schemas.d.ts.map +1 -0
- package/dist/manifest-schemas.js +55 -0
- package/dist/manifest-schemas.js.map +1 -0
- package/dist/registry.d.ts +41 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +122 -0
- package/dist/registry.js.map +1 -0
- package/dist/resource-context.d.ts +48 -0
- package/dist/resource-context.d.ts.map +1 -0
- package/dist/resource-context.js +146 -0
- package/dist/resource-context.js.map +1 -0
- package/dist/resource-uri.d.ts +80 -0
- package/dist/resource-uri.d.ts.map +1 -0
- package/dist/resource-uri.js +160 -0
- package/dist/resource-uri.js.map +1 -0
- package/dist/schema-valiator.d.ts +9 -0
- package/dist/schema-valiator.d.ts.map +1 -0
- package/dist/schema-valiator.js +43 -0
- package/dist/schema-valiator.js.map +1 -0
- package/dist/snapshot-serializer.d.ts +63 -0
- package/dist/snapshot-serializer.d.ts.map +1 -0
- package/dist/snapshot-serializer.js +164 -0
- package/dist/snapshot-serializer.js.map +1 -0
- package/dist/src/controllers/module/module.yaml +32 -0
- package/dist/template-definition.d.ts +38 -0
- package/dist/template-definition.d.ts.map +1 -0
- package/dist/template-definition.js +26 -0
- package/dist/template-definition.js.map +1 -0
- package/dist/template-expander.d.ts +19 -0
- package/dist/template-expander.d.ts.map +1 -0
- package/dist/template-expander.js +425 -0
- package/dist/template-expander.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { evaluate } from "cel-js";
|
|
2
|
+
const TEMPLATE_REGEX = /\$\{\{\s*([^}]+?)\s*\}\}/g;
|
|
3
|
+
const EXACT_TEMPLATE_REGEX = /^\s*\$\{\{\s*([^}]+?)\s*\}\}\s*$/;
|
|
4
|
+
export function evaluateCel(expression, context) {
|
|
5
|
+
return evaluate(expression, context);
|
|
6
|
+
}
|
|
7
|
+
export function expandValue(value, context) {
|
|
8
|
+
if (typeof value === "string") {
|
|
9
|
+
return expandString(value, context);
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
return value.map((entry) => expandValue(entry, context));
|
|
13
|
+
}
|
|
14
|
+
if (!value || typeof value !== "object") {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
const resolved = {};
|
|
18
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
19
|
+
resolved[key] = expandValue(entry, context);
|
|
20
|
+
}
|
|
21
|
+
return resolved;
|
|
22
|
+
}
|
|
23
|
+
export function resolveExpressionsInRegistry(registry, runtimeConfig) {
|
|
24
|
+
const maxPasses = 5;
|
|
25
|
+
for (let pass = 0; pass < maxPasses; pass += 1) {
|
|
26
|
+
const context = buildEvaluationContext(registry, runtimeConfig);
|
|
27
|
+
let changed = false;
|
|
28
|
+
for (const [kind, resourcesByName] of registry.entries()) {
|
|
29
|
+
for (const [name, resource] of resourcesByName.entries()) {
|
|
30
|
+
const { value, updated } = resolveResource(resource, context, {
|
|
31
|
+
kind,
|
|
32
|
+
name,
|
|
33
|
+
});
|
|
34
|
+
if (updated) {
|
|
35
|
+
resourcesByName.set(name, value);
|
|
36
|
+
changed = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!changed) {
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function buildEvaluationContext(registry, runtimeConfig) {
|
|
46
|
+
// Whitelist environment variables
|
|
47
|
+
const allowedEnvVars = ["NODE_ENV", "PORT", "HOST", "PATH", "HOME", "USER", "LANG"];
|
|
48
|
+
const env = {};
|
|
49
|
+
for (const key of allowedEnvVars) {
|
|
50
|
+
if (process.env[key] !== undefined) {
|
|
51
|
+
env[key] = process.env[key];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const context = { env };
|
|
55
|
+
const modules = {};
|
|
56
|
+
if (runtimeConfig?.name) {
|
|
57
|
+
const moduleEntry = {
|
|
58
|
+
name: runtimeConfig.name,
|
|
59
|
+
version: runtimeConfig.version,
|
|
60
|
+
};
|
|
61
|
+
modules[runtimeConfig.name] = moduleEntry;
|
|
62
|
+
const alias = capitalize(runtimeConfig.name);
|
|
63
|
+
if (alias && alias !== runtimeConfig.name) {
|
|
64
|
+
modules[alias] = moduleEntry;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
context.Namespace = modules;
|
|
68
|
+
for (const [kind, resourcesByName] of registry.entries()) {
|
|
69
|
+
const kindBucket = {};
|
|
70
|
+
for (const [name, resource] of resourcesByName.entries()) {
|
|
71
|
+
kindBucket[name] = resource;
|
|
72
|
+
}
|
|
73
|
+
const parts = kind.split(".").filter(Boolean);
|
|
74
|
+
if (parts.length <= 1) {
|
|
75
|
+
context[kind] = kindBucket;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
let cursor = context;
|
|
79
|
+
for (let i = 0; i < parts.length - 1; i += 1) {
|
|
80
|
+
const part = parts[i];
|
|
81
|
+
if (!cursor[part] || typeof cursor[part] !== "object") {
|
|
82
|
+
cursor[part] = {};
|
|
83
|
+
}
|
|
84
|
+
cursor = cursor[part];
|
|
85
|
+
}
|
|
86
|
+
cursor[parts[parts.length - 1]] = kindBucket;
|
|
87
|
+
}
|
|
88
|
+
return context;
|
|
89
|
+
}
|
|
90
|
+
function resolveResource(resource, context, id) {
|
|
91
|
+
const { value, updated } = resolveValue(resource, context, id, {
|
|
92
|
+
isRoot: true,
|
|
93
|
+
});
|
|
94
|
+
return { value: value, updated };
|
|
95
|
+
}
|
|
96
|
+
function resolveValue(value, context, id, options) {
|
|
97
|
+
if (typeof value === "string") {
|
|
98
|
+
return resolveString(value, context, id);
|
|
99
|
+
}
|
|
100
|
+
if (Array.isArray(value)) {
|
|
101
|
+
let changed = false;
|
|
102
|
+
const resolved = value.map((entry) => {
|
|
103
|
+
const result = resolveValue(entry, context, id);
|
|
104
|
+
if (result.updated) {
|
|
105
|
+
changed = true;
|
|
106
|
+
}
|
|
107
|
+
return result.value;
|
|
108
|
+
});
|
|
109
|
+
return { value: changed ? resolved : value, updated: changed };
|
|
110
|
+
}
|
|
111
|
+
if (!value || typeof value !== "object") {
|
|
112
|
+
return { value, updated: false };
|
|
113
|
+
}
|
|
114
|
+
let changed = false;
|
|
115
|
+
const resolved = {};
|
|
116
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
117
|
+
if (options?.isRoot && key === "kind") {
|
|
118
|
+
resolved[key] = entry;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (options?.isMetadata && key === "name") {
|
|
122
|
+
resolved[key] = entry;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (options?.isRoot && key === "metadata" && entry && typeof entry === "object") {
|
|
126
|
+
const result = resolveValue(entry, context, id, { isMetadata: true });
|
|
127
|
+
resolved[key] = result.value;
|
|
128
|
+
if (result.updated) {
|
|
129
|
+
changed = true;
|
|
130
|
+
}
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const result = resolveValue(entry, context, id);
|
|
134
|
+
resolved[key] = result.value;
|
|
135
|
+
if (result.updated) {
|
|
136
|
+
changed = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return { value: changed ? resolved : value, updated: changed };
|
|
140
|
+
}
|
|
141
|
+
function resolveString(value, context, id) {
|
|
142
|
+
if (!value.includes("${{")) {
|
|
143
|
+
return { value, updated: false };
|
|
144
|
+
}
|
|
145
|
+
const exact = value.match(EXACT_TEMPLATE_REGEX);
|
|
146
|
+
if (exact) {
|
|
147
|
+
const expr = exact[1];
|
|
148
|
+
const evaluated = evaluateExpression(expr, context, id);
|
|
149
|
+
if (evaluated.deferred) {
|
|
150
|
+
return { value, updated: false };
|
|
151
|
+
}
|
|
152
|
+
return { value: evaluated.value, updated: true };
|
|
153
|
+
}
|
|
154
|
+
let replaced = value;
|
|
155
|
+
replaced = replaced.replace(TEMPLATE_REGEX, (_match, expr) => {
|
|
156
|
+
const evaluated = evaluateExpression(expr, context, id);
|
|
157
|
+
if (evaluated.deferred) {
|
|
158
|
+
return _match;
|
|
159
|
+
}
|
|
160
|
+
if (evaluated.value === null || evaluated.value === undefined) {
|
|
161
|
+
return "";
|
|
162
|
+
}
|
|
163
|
+
return String(evaluated.value);
|
|
164
|
+
});
|
|
165
|
+
return { value: replaced, updated: replaced !== value };
|
|
166
|
+
}
|
|
167
|
+
function expandString(value, context) {
|
|
168
|
+
if (!value.includes("${{")) {
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
171
|
+
const exact = value.match(EXACT_TEMPLATE_REGEX);
|
|
172
|
+
if (exact) {
|
|
173
|
+
return evaluateCelWithError(exact[1], context, {
|
|
174
|
+
kind: "Value",
|
|
175
|
+
name: "expand",
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return value.replace(TEMPLATE_REGEX, (_match, expr) => {
|
|
179
|
+
const evaluated = evaluateCelWithError(expr, context, {
|
|
180
|
+
kind: "Value",
|
|
181
|
+
name: "expand",
|
|
182
|
+
});
|
|
183
|
+
if (evaluated === null || evaluated === undefined) {
|
|
184
|
+
return "";
|
|
185
|
+
}
|
|
186
|
+
return String(evaluated);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
function evaluateExpression(expr, context, id) {
|
|
190
|
+
try {
|
|
191
|
+
return { value: evaluateCelWithError(expr, context, id), deferred: false };
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
195
|
+
if (isDeferredExpressionError(message, expr)) {
|
|
196
|
+
return { deferred: true };
|
|
197
|
+
}
|
|
198
|
+
throw new Error(`CEL evaluation failed for ${id.kind}.${id.name}: "${expr}": ${message}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function capitalize(value) {
|
|
202
|
+
if (!value) {
|
|
203
|
+
return value;
|
|
204
|
+
}
|
|
205
|
+
return value[0].toUpperCase() + value.slice(1);
|
|
206
|
+
}
|
|
207
|
+
function isDeferredExpressionError(message, expr) {
|
|
208
|
+
const trimmed = expr.trim();
|
|
209
|
+
const deferredRoots = ["request.", "result."];
|
|
210
|
+
if (!deferredRoots.some((root) => trimmed.startsWith(root))) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
return message.includes('Identifier "') && message.includes("not found");
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Resolve all non-deferred CEL expressions in a resource manifest using the
|
|
217
|
+
* provided boot context. Expressions referencing `request.*` or `result.*` are
|
|
218
|
+
* left untouched — they will be resolved at request time by the runtime.
|
|
219
|
+
*
|
|
220
|
+
* Missing identifiers that are not deferred prefixes will throw, which is
|
|
221
|
+
* intentional: if a consumer's manifest references a boot-context identifier
|
|
222
|
+
* that is absent from the context, it is a configuration error.
|
|
223
|
+
*
|
|
224
|
+
* @param manifest - The raw (pre-creation) ResourceManifest
|
|
225
|
+
* @param context - CEL evaluation context built by BootContextRegistry.buildContext()
|
|
226
|
+
* @returns A new manifest object with all resolvable `${{ }}` templates replaced
|
|
227
|
+
*/
|
|
228
|
+
export function resolveManifestWithContext(manifest, context) {
|
|
229
|
+
const id = {
|
|
230
|
+
kind: manifest.kind,
|
|
231
|
+
name: manifest.metadata?.name ?? '(unknown)',
|
|
232
|
+
};
|
|
233
|
+
const { value } = resolveValue(manifest, context, id, { isRoot: true });
|
|
234
|
+
return value;
|
|
235
|
+
}
|
|
236
|
+
function evaluateCelWithError(expr, context, id) {
|
|
237
|
+
try {
|
|
238
|
+
return evaluateCel(expr, context);
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
242
|
+
// Build helpful context information
|
|
243
|
+
const availableVars = Object.keys(context)
|
|
244
|
+
.filter((k) => k !== "env")
|
|
245
|
+
.concat(context.env ? Object.keys(context.env).map((k) => `env.${k}`) : [])
|
|
246
|
+
.sort();
|
|
247
|
+
throw new Error(`CEL evaluation failed for resource ${id.kind}.${id.name}\n` +
|
|
248
|
+
`Expression: "${expr}"\n` +
|
|
249
|
+
`Error: ${message}\n` +
|
|
250
|
+
`Available variables: ${availableVars.slice(0, 20).join(", ")}${availableVars.length > 20 ? "..." : ""}`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../src/expressions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ControllerRegistry } from "./controller-registry.js";
|
|
2
|
+
export { EventStream } from "./event-stream.js";
|
|
3
|
+
export { Kernel } from "./kernel.js";
|
|
4
|
+
export { Loader } from "./loader.js";
|
|
5
|
+
export { ManifestRegistry as Registry } from "./registry.js";
|
|
6
|
+
export { ResourceURI } from "./resource-uri.js";
|
|
7
|
+
export { SnapshotSerializer } from "./snapshot-serializer.js";
|
|
8
|
+
export { RuntimeError } from "./types.js";
|
|
9
|
+
export type { ControllerDefinition, ControllerInstance, ExecContext, Kernel as IKernel, KernelContext, ResourceDefinition } from "./types.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EACR,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,MAAM,IAAI,OAAO,EACjB,aAAa,EACb,kBAAkB,EACrB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ControllerRegistry } from "./controller-registry.js";
|
|
2
|
+
export { EventStream } from "./event-stream.js";
|
|
3
|
+
export { Kernel } from "./kernel.js";
|
|
4
|
+
export { Loader } from "./loader.js";
|
|
5
|
+
export { ManifestRegistry as Registry } from "./registry.js";
|
|
6
|
+
export { ResourceURI } from "./resource-uri.js";
|
|
7
|
+
export { SnapshotSerializer } from "./snapshot-serializer.js";
|
|
8
|
+
export { RuntimeError } from "./types.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/kernel.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { RuntimeEvent, RuntimeResource } from "@telorun/sdk";
|
|
2
|
+
import { EventStream } from "./event-stream.js";
|
|
3
|
+
import { Kernel as IKernel, ResourceDefinition, ResourceManifest } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Kernel: Central orchestrator managing lifecycle and message bus
|
|
6
|
+
* Handles resource loading, initialization, and execution through controllers
|
|
7
|
+
*/
|
|
8
|
+
export declare class Kernel implements IKernel {
|
|
9
|
+
private loader;
|
|
10
|
+
private initializationQueue;
|
|
11
|
+
private controllers;
|
|
12
|
+
private eventBus;
|
|
13
|
+
private eventStream;
|
|
14
|
+
private resourceInstances;
|
|
15
|
+
private resourceEventBuses;
|
|
16
|
+
private resourceChildren;
|
|
17
|
+
private holdCount;
|
|
18
|
+
private idleResolvers;
|
|
19
|
+
private _exitCode;
|
|
20
|
+
private bootContextRegistry;
|
|
21
|
+
private readonly sharedSchemaValidator;
|
|
22
|
+
constructor();
|
|
23
|
+
/**
|
|
24
|
+
* Register a resource dynamically during initialization
|
|
25
|
+
*/
|
|
26
|
+
registerManifest(resource: ResourceManifest): void;
|
|
27
|
+
/**
|
|
28
|
+
* Register a child resource and track the parent-child relationship for cascade teardown
|
|
29
|
+
*/
|
|
30
|
+
registerChildManifest(parentKey: string, resource: ResourceManifest): void;
|
|
31
|
+
/**
|
|
32
|
+
* Tear down a single resource and cascade to its children first
|
|
33
|
+
*/
|
|
34
|
+
teardownResource(module: string, kind: string, name: string): Promise<void>;
|
|
35
|
+
registerController(moduleName: string, kindName: string, controllerInstance: any): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Register a resource definition with the controller registry
|
|
38
|
+
*/
|
|
39
|
+
registerResourceDefinition(definition: ResourceDefinition): void;
|
|
40
|
+
registerCapability(name: string, schema?: Record<string, any>): void;
|
|
41
|
+
isCapabilityRegistered(name: string): boolean;
|
|
42
|
+
getCapabilitySchema(name: string): Record<string, any> | null | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Load built-in Runtime definitions (e.g., Runtime.Module)
|
|
45
|
+
*/
|
|
46
|
+
private loadBuiltinDefinitions;
|
|
47
|
+
/**
|
|
48
|
+
* Load from runtime configuration file
|
|
49
|
+
*/
|
|
50
|
+
loadFromConfig(runtimeYamlPath: string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Phase 1: Load - Ingest files from directory and load runtime config
|
|
53
|
+
* @deprecated Use loadFromConfig instead
|
|
54
|
+
*/
|
|
55
|
+
loadDirectory(dirPath: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Phase 2: Start - Initialize resources
|
|
58
|
+
*/
|
|
59
|
+
start(): Promise<void>;
|
|
60
|
+
runInstances(): Promise<void>;
|
|
61
|
+
emitRuntimeEvent(event: string, payload?: any): Promise<void>;
|
|
62
|
+
get exitCode(): number;
|
|
63
|
+
requestExit(code: number): void;
|
|
64
|
+
acquireHold(reason?: string): () => void;
|
|
65
|
+
waitForIdle(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Force-resolve waitForIdle() regardless of active holds.
|
|
68
|
+
* Used for graceful shutdown when external signals (e.g. SIGINT) should
|
|
69
|
+
* bypass resource holds and proceed directly to teardown.
|
|
70
|
+
*/
|
|
71
|
+
shutdown(): void;
|
|
72
|
+
hasEventHandlers(event: string): boolean;
|
|
73
|
+
hasResourceInstances(): boolean;
|
|
74
|
+
teardownResources(): Promise<void>;
|
|
75
|
+
on(event: string, handler: (event: RuntimeEvent) => void | Promise<void>): void;
|
|
76
|
+
private createControllerContext;
|
|
77
|
+
private createResourceContext;
|
|
78
|
+
getResourcesByKind(kind: string): RuntimeResource[];
|
|
79
|
+
getResourceByName(module: string, kind: string, name: string): RuntimeResource | null;
|
|
80
|
+
/**
|
|
81
|
+
* Returns the unique set of local file paths from which resources were loaded.
|
|
82
|
+
* HTTP/HTTPS sources are excluded — they cannot be watched on disk.
|
|
83
|
+
*/
|
|
84
|
+
getSourceFiles(): string[];
|
|
85
|
+
/**
|
|
86
|
+
* Reload all resources that were loaded from the given source file.
|
|
87
|
+
* Safe order: parse first → if parse succeeds, tear down old → init new → run new only.
|
|
88
|
+
*/
|
|
89
|
+
reloadSource(sourcePath: string): Promise<void>;
|
|
90
|
+
private initializeResources;
|
|
91
|
+
invoke(module: string, kind: string, name: string, ...args: any[]): Promise<any>;
|
|
92
|
+
private getResourceKey;
|
|
93
|
+
/**
|
|
94
|
+
* Enable event streaming to a file (JSONL format)
|
|
95
|
+
*/
|
|
96
|
+
enableEventStream(filePath: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Disable event streaming
|
|
99
|
+
*/
|
|
100
|
+
disableEventStream(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Get the event stream for testing and inspection
|
|
103
|
+
*/
|
|
104
|
+
getEventStream(): EventStream;
|
|
105
|
+
/**
|
|
106
|
+
* Take a snapshot of current runtime state
|
|
107
|
+
*/
|
|
108
|
+
/**
|
|
109
|
+
* Setup event streaming hook to capture all events
|
|
110
|
+
*/
|
|
111
|
+
private setupEventStreaming;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|