@telorun/kernel 0.14.0 → 0.15.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 (113) hide show
  1. package/dist/base-definition.d.ts +14 -0
  2. package/dist/base-definition.d.ts.map +1 -0
  3. package/dist/base-definition.js +17 -0
  4. package/dist/base-definition.js.map +1 -0
  5. package/dist/capabilities/capabilities/component.yaml +4 -0
  6. package/dist/capabilities/capabilities/executable.yaml +8 -0
  7. package/dist/capabilities/capabilities/handler.yaml +4 -0
  8. package/dist/capabilities/capabilities/listener.yaml +4 -0
  9. package/dist/capabilities/capabilities/provider.yaml +4 -0
  10. package/dist/capabilities/capabilities/template.yaml +4 -0
  11. package/dist/capabilities/capabilities/type.yaml +4 -0
  12. package/dist/capabilities/component.d.ts +3 -0
  13. package/dist/capabilities/component.d.ts.map +1 -0
  14. package/dist/capabilities/component.js +4 -0
  15. package/dist/capabilities/component.js.map +1 -0
  16. package/dist/capabilities/component.yaml +3 -0
  17. package/dist/capabilities/executable.d.ts +3 -0
  18. package/dist/capabilities/executable.d.ts.map +1 -0
  19. package/dist/capabilities/executable.js +5 -0
  20. package/dist/capabilities/executable.js.map +1 -0
  21. package/dist/capabilities/executable.yaml +7 -0
  22. package/dist/capabilities/handler.d.ts +3 -0
  23. package/dist/capabilities/handler.d.ts.map +1 -0
  24. package/dist/capabilities/handler.js +4 -0
  25. package/dist/capabilities/handler.js.map +1 -0
  26. package/dist/capabilities/handler.yaml +3 -0
  27. package/dist/capabilities/invokable.d.ts +3 -0
  28. package/dist/capabilities/invokable.d.ts.map +1 -0
  29. package/dist/capabilities/invokable.js +5 -0
  30. package/dist/capabilities/invokable.js.map +1 -0
  31. package/dist/capabilities/listener.d.ts +3 -0
  32. package/dist/capabilities/listener.d.ts.map +1 -0
  33. package/dist/capabilities/listener.js +5 -0
  34. package/dist/capabilities/listener.js.map +1 -0
  35. package/dist/capabilities/listener.yaml +3 -0
  36. package/dist/capabilities/mount.d.ts +3 -0
  37. package/dist/capabilities/mount.d.ts.map +1 -0
  38. package/dist/capabilities/mount.js +5 -0
  39. package/dist/capabilities/mount.js.map +1 -0
  40. package/dist/capabilities/provider.d.ts +3 -0
  41. package/dist/capabilities/provider.d.ts.map +1 -0
  42. package/dist/capabilities/provider.js +8 -0
  43. package/dist/capabilities/provider.js.map +1 -0
  44. package/dist/capabilities/provider.yaml +3 -0
  45. package/dist/capabilities/runnable.d.ts +3 -0
  46. package/dist/capabilities/runnable.d.ts.map +1 -0
  47. package/dist/capabilities/runnable.js +5 -0
  48. package/dist/capabilities/runnable.js.map +1 -0
  49. package/dist/capabilities/service.d.ts +3 -0
  50. package/dist/capabilities/service.d.ts.map +1 -0
  51. package/dist/capabilities/service.js +5 -0
  52. package/dist/capabilities/service.js.map +1 -0
  53. package/dist/capabilities/template.d.ts +3 -0
  54. package/dist/capabilities/template.d.ts.map +1 -0
  55. package/dist/capabilities/template.js +5 -0
  56. package/dist/capabilities/template.js.map +1 -0
  57. package/dist/capabilities/template.yaml +3 -0
  58. package/dist/capabilities/type.d.ts +3 -0
  59. package/dist/capabilities/type.d.ts.map +1 -0
  60. package/dist/capabilities/type.js +5 -0
  61. package/dist/capabilities/type.js.map +1 -0
  62. package/dist/capabilities/type.yaml +3 -0
  63. package/dist/controllers/capability/capability-controller.d.ts +32 -0
  64. package/dist/controllers/capability/capability-controller.d.ts.map +1 -0
  65. package/dist/controllers/capability/capability-controller.js +26 -0
  66. package/dist/controllers/capability/capability-controller.js.map +1 -0
  67. package/dist/controllers/module/module.json +48 -0
  68. package/dist/kernel.d.ts.map +1 -1
  69. package/dist/kernel.js +19 -14
  70. package/dist/kernel.js.map +1 -1
  71. package/dist/loader.d.ts +18 -0
  72. package/dist/loader.d.ts.map +1 -0
  73. package/dist/loader.js +127 -0
  74. package/dist/loader.js.map +1 -0
  75. package/dist/manifest-adapters/http-adapter.d.ts +8 -0
  76. package/dist/manifest-adapters/http-adapter.d.ts.map +1 -0
  77. package/dist/manifest-adapters/http-adapter.js +31 -0
  78. package/dist/manifest-adapters/http-adapter.js.map +1 -0
  79. package/dist/manifest-adapters/local-file-adapter.d.ts +15 -0
  80. package/dist/manifest-adapters/local-file-adapter.d.ts.map +1 -0
  81. package/dist/manifest-adapters/local-file-adapter.js +95 -0
  82. package/dist/manifest-adapters/local-file-adapter.js.map +1 -0
  83. package/dist/manifest-adapters/manifest-adapter.d.ts +35 -0
  84. package/dist/manifest-adapters/manifest-adapter.d.ts.map +1 -0
  85. package/dist/manifest-adapters/manifest-adapter.js +2 -0
  86. package/dist/manifest-adapters/manifest-adapter.js.map +1 -0
  87. package/dist/manifest-adapters/registry-adapter.d.ts +9 -0
  88. package/dist/manifest-adapters/registry-adapter.d.ts.map +1 -0
  89. package/dist/manifest-adapters/registry-adapter.js +48 -0
  90. package/dist/manifest-adapters/registry-adapter.js.map +1 -0
  91. package/dist/module-context-registry.d.ts +48 -0
  92. package/dist/module-context-registry.d.ts.map +1 -0
  93. package/dist/module-context-registry.js +91 -0
  94. package/dist/module-context-registry.js.map +1 -0
  95. package/dist/module-context.d.ts +3 -3
  96. package/dist/module-context.d.ts.map +1 -1
  97. package/dist/module-context.js +35 -2
  98. package/dist/module-context.js.map +1 -1
  99. package/dist/schema-valiator.d.ts +15 -0
  100. package/dist/schema-valiator.d.ts.map +1 -0
  101. package/dist/schema-valiator.js +127 -0
  102. package/dist/schema-valiator.js.map +1 -0
  103. package/dist/snapshot-serializer.d.ts +62 -0
  104. package/dist/snapshot-serializer.d.ts.map +1 -0
  105. package/dist/snapshot-serializer.js +164 -0
  106. package/dist/snapshot-serializer.js.map +1 -0
  107. package/dist/types.d.ts +65 -0
  108. package/dist/types.d.ts.map +1 -0
  109. package/dist/types.js +8 -0
  110. package/dist/types.js.map +1 -0
  111. package/package.json +4 -4
  112. package/src/kernel.ts +24 -16
  113. package/src/module-context.ts +41 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-serializer.js","sourceRoot":"","sources":["../src/snapshot-serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type { ControllerContext, ResourceContext, ResourceInstance, ResourceManifest, RuntimeErrorCode, RuntimeResource } from "@telorun/sdk";
2
+ import type { ModuleContext } from "./module-context.js";
3
+ export type { ControllerContext, ResourceContext, ResourceInstance, ResourceManifest } from "@telorun/sdk";
4
+ export interface KernelContext {
5
+ kernel: Kernel;
6
+ }
7
+ export interface ExecContext {
8
+ execute(urn: string, input: any): Promise<any>;
9
+ [key: string]: any;
10
+ }
11
+ export type ResourceCapability = string;
12
+ export interface ResourceDefinition {
13
+ kind: string;
14
+ metadata: {
15
+ name: string;
16
+ module: string;
17
+ };
18
+ schema: Record<string, any>;
19
+ capabilities: ResourceCapability[];
20
+ events?: string[];
21
+ controllers?: Array<{
22
+ runtime: string;
23
+ entry: string;
24
+ }>;
25
+ }
26
+ /**
27
+ * Controller definition for a resource kind.
28
+ * Maps a fully-qualified resource kind to its controller implementation for a specific runtime.
29
+ */
30
+ export interface ControllerDefinition {
31
+ kind: string;
32
+ runtime: string;
33
+ entry: string;
34
+ controller?: any;
35
+ }
36
+ /**
37
+ * Controller instance - runtime representation of a controller that handles resource instances.
38
+ */
39
+ export interface ControllerInstance {
40
+ execute?(name: string, inputs: any, ctx: ExecContext): Promise<any>;
41
+ compile?(resource: ResourceManifest, ctx: ResourceContext): RuntimeResource | Promise<RuntimeResource>;
42
+ register?(ctx: ControllerContext): void | Promise<void>;
43
+ create?(resource: ResourceManifest, ctx: ResourceContext): ResourceInstance | null | Promise<ResourceInstance | null>;
44
+ schema: any;
45
+ }
46
+ export interface Kernel {
47
+ loadFromConfig(runtimeYamlPath: string): Promise<void>;
48
+ start(): Promise<void>;
49
+ acquireHold(reason?: string): () => void;
50
+ waitForIdle(): Promise<void>;
51
+ requestExit(code: number): void;
52
+ readonly exitCode: number;
53
+ teardownResource(module: string, kind: string, name: string): Promise<void>;
54
+ registerChildManifest(parentKey: string, resource: ResourceManifest): void;
55
+ getSourceFiles(): string[];
56
+ reloadSource(sourcePath: string): Promise<void>;
57
+ shutdown(): void;
58
+ registerModuleContext(moduleName: string, variables: Record<string, unknown>, secrets: Record<string, unknown>): void;
59
+ getModuleContext(moduleName: string): ModuleContext;
60
+ }
61
+ export declare class RuntimeError extends Error {
62
+ code: RuntimeErrorCode;
63
+ constructor(code: RuntimeErrorCode, message: string);
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ export class RuntimeError extends Error {
2
+ constructor(code, message) {
3
+ super(message);
4
+ this.code = code;
5
+ this.name = "RuntimeError";
6
+ }
7
+ }
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0FA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YACS,IAAsB,EAC7B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAkB;QAI7B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telorun/kernel",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "Telo Runtime - A lightweight, polyglot execution host.",
5
5
  "keywords": [
6
6
  "telo",
@@ -47,8 +47,8 @@
47
47
  "dependencies": {
48
48
  "@marcbachmann/cel-js": "^7.5.3",
49
49
  "@sinclair/typebox": "^0.34.48",
50
- "@telorun/analyzer": "0.13.0",
51
- "@telorun/templating": "0.3.1",
50
+ "@telorun/analyzer": "0.14.0",
51
+ "@telorun/templating": "0.4.0",
52
52
  "ajv": "^8.17.1",
53
53
  "ajv-formats": "^3.0.1",
54
54
  "minimatch": "^10.2.5",
@@ -61,7 +61,7 @@
61
61
  "vitest": "^2.1.8"
62
62
  },
63
63
  "peerDependencies": {
64
- "@telorun/sdk": "0.12.0"
64
+ "@telorun/sdk": "0.13.0"
65
65
  },
66
66
  "overrides": {
67
67
  "@marcbachmann/cel-js": "$@marcbachmann/cel-js",
package/src/kernel.ts CHANGED
@@ -19,6 +19,7 @@ import {
19
19
  ResourceManifest,
20
20
  RuntimeError,
21
21
  RuntimeEvent,
22
+ type BootTarget,
22
23
  type EvaluationContext as IEvaluationContext,
23
24
  type ModuleContext as IModuleContext,
24
25
  type LoadOptions,
@@ -392,25 +393,32 @@ export class Kernel implements IKernel {
392
393
  // `process.env` after the manifest loop so imports can read
393
394
  // `${{ variables.X }}` during their own init.
394
395
  //
395
- // Targets normalize down to bare names regardless of source surface.
396
- // The analyzer's `resolveRefSentinels` pass already substituted any
397
- // `!ref <name>` to `{kind, name}`; bare-string forms pass through.
398
- // Anything else (e.g. an unresolved sentinel because the analyzer
399
- // couldn't see it, or a malformed manifest) is a hard error —
400
- // silently dropping the entry would leave the user staring at a
401
- // "no targets ran" outcome with no signal where it went wrong.
396
+ // Targets are preserved as their full shape so the boot runner can
397
+ // evaluate `when` guards and inline invoke steps. The analyzer's
398
+ // `resolveRefSentinels` pass already substituted any `!ref <name>` to
399
+ // `{kind, name}` (including inside an inline target's `invoke`).
400
+ // Recognized shapes: bare string ref, resolved `{kind, name}`, gated
401
+ // `{ ref, when? }`, and inline `{ name?, invoke, inputs?, when?, retry? }`.
402
+ // Anything else (e.g. an unresolved sentinel, or a malformed manifest)
403
+ // is a hard error — silently dropping the entry would leave the user
404
+ // staring at a "no targets ran" outcome with no signal.
402
405
  const rawTargets = (manifest.targets ?? []) as unknown[];
403
- const targetNames = rawTargets.map((t, index) => {
404
- if (typeof t === "string") return t;
405
- if (t && typeof t === "object" && typeof (t as { name?: unknown }).name === "string") {
406
- return (t as { name: string }).name;
406
+ rawTargets.forEach((t, index) => {
407
+ const ok =
408
+ typeof t === "string" ||
409
+ (!!t &&
410
+ typeof t === "object" &&
411
+ (typeof (t as { name?: unknown }).name === "string" ||
412
+ (t as { ref?: unknown }).ref != null ||
413
+ (t as { invoke?: unknown }).invoke !== undefined));
414
+ if (!ok) {
415
+ throw new RuntimeError(
416
+ "ERR_INVALID_VALUE",
417
+ `Telo.Application '${(manifest.metadata as { name?: string } | undefined)?.name ?? "(unnamed)"}' targets[${index}] is not a recognized target shape. Got: ${JSON.stringify(t)}`,
418
+ );
407
419
  }
408
- throw new RuntimeError(
409
- "ERR_INVALID_VALUE",
410
- `Telo.Application '${(manifest.metadata as { name?: string } | undefined)?.name ?? "(unnamed)"}' targets[${index}] could not be normalized to a resource name. Got: ${JSON.stringify(t)}`,
411
- );
412
420
  });
413
- this.rootContext.setTargets(targetNames);
421
+ this.rootContext.setTargets(rawTargets as BootTarget[]);
414
422
  if (manifest.kind === "Telo.Application") {
415
423
  rootApplicationManifest = manifest;
416
424
  }
@@ -1,6 +1,10 @@
1
+ import { executeInvokeStep } from "@telorun/sdk";
1
2
  import type {
3
+ BootTarget,
2
4
  ControllerPolicy,
3
5
  Invocable,
6
+ InvokeStep,
7
+ InvokeStepContext,
4
8
  ModuleContext as IModuleContext,
5
9
  } from "@telorun/sdk";
6
10
  import type { EmitEvent, InstanceFactory } from "@telorun/sdk";
@@ -82,7 +86,7 @@ export class ModuleContext extends EvaluationContext implements IModuleContext {
82
86
  variables: Record<string, unknown> = {},
83
87
  secrets: Record<string, unknown> = {},
84
88
  resources: Record<string, unknown> = {},
85
- private targets: string[] = [],
89
+ private targets: BootTarget[] = [],
86
90
  createInstance: InstanceFactory = async () => null,
87
91
  emit: EmitEvent,
88
92
  private readonly _hostEnv?: Record<string, string | undefined>,
@@ -120,7 +124,7 @@ export class ModuleContext extends EvaluationContext implements IModuleContext {
120
124
  this._rebuildContext();
121
125
  }
122
126
 
123
- setTargets(vars: string[]): void {
127
+ setTargets(vars: BootTarget[]): void {
124
128
  this.targets = vars;
125
129
  }
126
130
 
@@ -256,8 +260,41 @@ export class ModuleContext extends EvaluationContext implements IModuleContext {
256
260
  }
257
261
 
258
262
  async runTargets() {
259
- for (const target of this.targets) {
260
- await this.run(target);
263
+ const steps: Record<string, unknown> = {};
264
+ const stepCtx: InvokeStepContext = {
265
+ expandValue: (value, context) => this.expandWith(value, context),
266
+ invoke: (kind, name, inputs) => this.invoke(kind, name, inputs),
267
+ invokeResolved: (kind, name, instance, inputs) =>
268
+ this.invokeResolved(kind, name, instance, inputs),
269
+ };
270
+ for (let i = 0; i < this.targets.length; i++) {
271
+ const target = this.targets[i]!;
272
+ if (typeof target === "string") {
273
+ await this.run(target);
274
+ continue;
275
+ }
276
+ if ("invoke" in target && target.invoke !== undefined) {
277
+ const step: InvokeStep = {
278
+ name: target.name ?? `Target${i}`,
279
+ when: target.when,
280
+ invoke: target.invoke,
281
+ inputs: target.inputs,
282
+ };
283
+ await executeInvokeStep(step, stepCtx, { steps });
284
+ continue;
285
+ }
286
+ if ("ref" in target && target.ref != null) {
287
+ const refName = typeof target.ref === "string" ? target.ref : target.ref.name;
288
+ if (target.when === undefined || this.expandWith(target.when, { steps })) {
289
+ await this.run(refName);
290
+ }
291
+ continue;
292
+ }
293
+ if ("name" in target && typeof target.name === "string") {
294
+ await this.run(target.name);
295
+ continue;
296
+ }
297
+ throw new Error(`Unrecognized target shape at index ${i}: ${JSON.stringify(target)}`);
261
298
  }
262
299
  }
263
300
  }