@telorun/kernel 0.2.4 → 0.2.5

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 (135) hide show
  1. package/dist/boot-context-registry.d.ts.map +1 -1
  2. package/dist/boot-context-registry.js +6 -6
  3. package/dist/boot-context-registry.js.map +1 -1
  4. package/dist/capabilities/capabilities/component.yaml +2 -1
  5. package/dist/capabilities/capabilities/executable.yaml +2 -1
  6. package/dist/capabilities/capabilities/handler.yaml +2 -1
  7. package/dist/capabilities/capabilities/listener.yaml +2 -1
  8. package/dist/capabilities/capabilities/provider.yaml +2 -1
  9. package/dist/capabilities/capabilities/template.yaml +2 -1
  10. package/dist/capabilities/capabilities/type.yaml +2 -1
  11. package/dist/capabilities/component.yaml +1 -1
  12. package/dist/capabilities/executable.yaml +1 -1
  13. package/dist/capabilities/handler.yaml +1 -1
  14. package/dist/capabilities/listener.yaml +1 -1
  15. package/dist/capabilities/provider.yaml +1 -1
  16. package/dist/capabilities/template.yaml +1 -1
  17. package/dist/capabilities/type.yaml +1 -1
  18. package/dist/controller-loader.d.ts +1 -1
  19. package/dist/controller-loader.d.ts.map +1 -1
  20. package/dist/controller-loader.js +4 -2
  21. package/dist/controller-loader.js.map +1 -1
  22. package/dist/controller-registry.d.ts +1 -2
  23. package/dist/controller-registry.d.ts.map +1 -1
  24. package/dist/controller-registry.js.map +1 -1
  25. package/dist/controllers/module/import-controller.d.ts +38 -0
  26. package/dist/controllers/module/import-controller.d.ts.map +1 -0
  27. package/dist/controllers/module/import-controller.js +119 -0
  28. package/dist/controllers/module/import-controller.js.map +1 -0
  29. package/dist/controllers/module/module-controller.d.ts +57 -11
  30. package/dist/controllers/module/module-controller.d.ts.map +1 -1
  31. package/dist/controllers/module/module-controller.js +46 -82
  32. package/dist/controllers/module/module-controller.js.map +1 -1
  33. package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
  34. package/dist/controllers/resource-definition/resource-definition-controller.js +12 -4
  35. package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
  36. package/dist/evaluation-context.d.ts +91 -0
  37. package/dist/evaluation-context.d.ts.map +1 -0
  38. package/dist/evaluation-context.js +220 -0
  39. package/dist/evaluation-context.js.map +1 -0
  40. package/dist/execution-context.d.ts +13 -0
  41. package/dist/execution-context.d.ts.map +1 -0
  42. package/dist/execution-context.js +14 -0
  43. package/dist/execution-context.js.map +1 -0
  44. package/dist/index.d.ts +0 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +0 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/kernel.d.ts +23 -31
  49. package/dist/kernel.d.ts.map +1 -1
  50. package/dist/kernel.js +212 -333
  51. package/dist/kernel.js.map +1 -1
  52. package/dist/loader.d.ts +2 -2
  53. package/dist/loader.d.ts.map +1 -1
  54. package/dist/loader.js +29 -9
  55. package/dist/loader.js.map +1 -1
  56. package/dist/manifest-adapters/local-file-adapter.d.ts.map +1 -1
  57. package/dist/manifest-adapters/local-file-adapter.js +21 -12
  58. package/dist/manifest-adapters/local-file-adapter.js.map +1 -1
  59. package/dist/manifest-schemas.d.ts +1 -25
  60. package/dist/manifest-schemas.d.ts.map +1 -1
  61. package/dist/manifest-schemas.js +3 -22
  62. package/dist/manifest-schemas.js.map +1 -1
  63. package/dist/module-context-registry.d.ts +48 -0
  64. package/dist/module-context-registry.d.ts.map +1 -0
  65. package/dist/module-context-registry.js +91 -0
  66. package/dist/module-context-registry.js.map +1 -0
  67. package/dist/module-context.d.ts +31 -0
  68. package/dist/module-context.d.ts.map +1 -0
  69. package/dist/module-context.js +67 -0
  70. package/dist/module-context.js.map +1 -0
  71. package/dist/registry.d.ts +1 -2
  72. package/dist/registry.d.ts.map +1 -1
  73. package/dist/registry.js +3 -3
  74. package/dist/registry.js.map +1 -1
  75. package/dist/resource-context.d.ts +25 -5
  76. package/dist/resource-context.d.ts.map +1 -1
  77. package/dist/resource-context.js +74 -28
  78. package/dist/resource-context.js.map +1 -1
  79. package/dist/schema-valiator.d.ts.map +1 -1
  80. package/dist/schema-valiator.js +3 -1
  81. package/dist/schema-valiator.js.map +1 -1
  82. package/dist/snapshot-serializer.d.ts +1 -2
  83. package/dist/snapshot-serializer.d.ts.map +1 -1
  84. package/dist/snapshot-serializer.js.map +1 -1
  85. package/dist/types.d.ts +3 -0
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js.map +1 -1
  88. package/package.json +9 -6
  89. package/src/boot-context-registry.ts +169 -0
  90. package/src/capabilities/component.yaml +4 -0
  91. package/src/capabilities/executable.yaml +8 -0
  92. package/src/capabilities/handler.yaml +4 -0
  93. package/src/capabilities/listener.yaml +4 -0
  94. package/src/capabilities/provider.yaml +4 -0
  95. package/src/capabilities/template.yaml +4 -0
  96. package/src/capabilities/type.yaml +4 -0
  97. package/src/controller-loader.ts +298 -0
  98. package/src/controller-registry.ts +206 -0
  99. package/src/controllers/capability/capability-controller.ts +41 -0
  100. package/src/controllers/module/import-controller.ts +143 -0
  101. package/src/controllers/module/module-controller.ts +67 -0
  102. package/src/controllers/module/module.json +48 -0
  103. package/src/controllers/resource-definition/resource-definition-controller.ts +87 -0
  104. package/src/controllers/resource-definition/resource-definition.json +18 -0
  105. package/src/event-stream.ts +121 -0
  106. package/src/events.ts +99 -0
  107. package/src/index.ts +7 -0
  108. package/src/kernel.ts +558 -0
  109. package/src/loader.ts +245 -0
  110. package/src/manifest-adapters/http-adapter.ts +35 -0
  111. package/src/manifest-adapters/local-file-adapter.ts +69 -0
  112. package/src/manifest-adapters/manifest-adapter.ts +33 -0
  113. package/src/manifest-adapters/registry-adapter.ts +56 -0
  114. package/src/manifest-schemas.ts +49 -0
  115. package/src/registry.ts +137 -0
  116. package/src/resource-context.ts +266 -0
  117. package/src/resource-uri.ts +200 -0
  118. package/src/schema-valiator.ts +57 -0
  119. package/dist/cli.d.ts +0 -3
  120. package/dist/cli.d.ts.map +0 -1
  121. package/dist/cli.js +0 -109
  122. package/dist/cli.js.map +0 -1
  123. package/dist/expressions.d.ts +0 -20
  124. package/dist/expressions.d.ts.map +0 -1
  125. package/dist/expressions.js +0 -253
  126. package/dist/expressions.js.map +0 -1
  127. package/dist/template-definition.d.ts +0 -38
  128. package/dist/template-definition.d.ts.map +0 -1
  129. package/dist/template-definition.js +0 -26
  130. package/dist/template-definition.js.map +0 -1
  131. package/dist/template-expander.d.ts +0 -19
  132. package/dist/template-expander.d.ts.map +0 -1
  133. package/dist/template-expander.js +0 -425
  134. package/dist/template-expander.js.map +0 -1
  135. /package/{dist/src → src}/controllers/module/module.yaml +0 -0
@@ -1,95 +1,59 @@
1
- import * as path from "path";
2
1
  import { Loader } from "../../loader.js";
3
- /**
4
- * Check if a path is a URL (http:// or https://)
5
- */
6
- function isUrl(pathOrUrl) {
7
- return pathOrUrl.startsWith("http://") || pathOrUrl.startsWith("https://");
8
- }
9
- /**
10
- * Resolve a path relative to a base, handling both local paths and URLs
11
- */
12
- function resolvePath(loader, base, relative) {
13
- // If the relative path is actually a URL, return it as-is
14
- if (isUrl(relative)) {
15
- return relative;
16
- }
17
- // Otherwise, resolve it relative to the base
18
- return loader.resolvePath(base, relative);
19
- }
20
2
  export async function create(resource, ctx) {
21
- // Get the module base path from the resource's URI or source
22
- const moduleBasePath = resource.metadata.source
23
- ? path.dirname(resource.metadata.source)
24
- : getModuleBasePath(resource.metadata.uri);
3
+ const moduleName = resource.metadata.name;
25
4
  const loader = new Loader();
26
- try {
27
- // Load and register resource definitions from imports
28
- if (resource.imports && Array.isArray(resource.imports)) {
29
- for (const importPath of resource.imports) {
30
- const resolvedPath = resolvePath(loader, moduleBasePath, importPath);
31
- const defResources = await loader.loadDirectory(resolvedPath);
32
- for (const defResource of defResources) {
33
- ctx.registerManifest(defResource);
34
- }
5
+ for (const includePath of resource.include ?? []) {
6
+ const manifests = await loader.loadManifest(includePath, resource.metadata.source, {});
7
+ for (const manifest of manifests) {
8
+ if (manifest.kind === "Kernel.Module") {
9
+ throw new Error(`Included file "${includePath}" must not declare kind: Module`);
35
10
  }
36
- }
37
- // Load and register resources from definitions and resources paths
38
- if (resource.definitions && Array.isArray(resource.definitions)) {
39
- for (const defPath of resource.definitions) {
40
- const resolvedPath = resolvePath(loader, moduleBasePath, defPath);
41
- const defResources = await loader.loadManifest(resolvedPath);
42
- for (const defResource of defResources) {
43
- ctx.registerManifest(defResource);
44
- }
45
- }
46
- }
47
- if (resource.resources && Array.isArray(resource.resources)) {
48
- for (const defPath of resource.resources) {
49
- const rawPath = typeof defPath === "string" ? defPath : defPath.path;
50
- const resolvedPath = resolvePath(loader, moduleBasePath, rawPath);
51
- const defResources = await loader.loadManifest(resolvedPath);
52
- for (const defResource of defResources) {
53
- ctx.registerManifest(defResource);
54
- }
11
+ if (!manifest.metadata.module) {
12
+ manifest.metadata.module = moduleName;
55
13
  }
14
+ ctx.registerManifest(manifest);
56
15
  }
57
- return {};
58
16
  }
59
- catch (error) {
60
- throw new Error(`Failed to process Module "${resource.metadata.name}": ${error instanceof Error ? error.message : String(error)}`);
61
- }
62
- }
63
- function getModuleBasePath(uri) {
64
- if (!uri) {
65
- return process.cwd();
66
- }
67
- try {
68
- // URI format: file://localhost/path/to/file.yaml#kind.name
69
- // Extract the file path part (before the #)
70
- const hashIndex = uri.indexOf("#");
71
- const filePath = hashIndex > 0 ? uri.substring(0, hashIndex) : uri;
72
- // Parse as URL to handle file:// scheme
73
- if (filePath.startsWith("file://")) {
74
- // Remove 'file://localhost' and get the path
75
- let pathPart = filePath.substring("file://".length);
76
- if (pathPart.startsWith("localhost/")) {
77
- pathPart = pathPart.substring("localhost".length);
78
- }
79
- else if (pathPart.startsWith("localhost\\")) {
80
- pathPart = pathPart.substring("localhost".length);
17
+ return {
18
+ run: async () => {
19
+ for (const target of resource.targets ?? []) {
20
+ const [kind, name] = target.split(".");
21
+ if (!kind || !name) {
22
+ throw new Error(`Invalid target format: "${target}". Expected "Kind.Name"`);
23
+ }
24
+ await ctx.invoke(kind, name, {});
81
25
  }
82
- return path.dirname(pathPart);
83
- }
84
- // Fallback: treat as regular path
85
- return path.dirname(filePath);
86
- }
87
- catch {
88
- return process.cwd();
89
- }
26
+ },
27
+ };
90
28
  }
91
29
  export const schema = {
92
30
  type: "object",
93
- additionalProperties: true,
31
+ properties: {
32
+ kind: { type: "string" },
33
+ metadata: {
34
+ type: "object",
35
+ properties: {
36
+ name: { type: "string" },
37
+ version: { type: "string" },
38
+ source: { type: "string" },
39
+ module: { type: "string" },
40
+ },
41
+ required: ["name"],
42
+ additionalProperties: true,
43
+ },
44
+ include: { type: "array", items: { type: "string" } },
45
+ variables: { type: "object" },
46
+ secrets: { type: "object" },
47
+ targets: { type: "array", items: { type: "string" } },
48
+ exports: {
49
+ type: "object",
50
+ properties: {
51
+ kinds: { type: "array", items: { type: "string" } },
52
+ },
53
+ additionalProperties: true,
54
+ },
55
+ },
56
+ required: ["metadata"],
57
+ additionalProperties: false,
94
58
  };
95
59
  //# sourceMappingURL=module-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/module-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-controller.js","sourceRoot":"","sources":["../../../src/controllers/module/module-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAa,EAAE,GAAoB;IAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,KAAK,MAAM,WAAW,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CACzC,WAAW,EACX,QAAQ,CAAC,QAAQ,CAAC,MAAgB,EAClC,EAAE,CACH,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,kBAAkB,WAAW,iCAAiC,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;YACxC,CAAC;YACD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,KAAK,MAAM,MAAM,IAAK,QAAQ,CAAC,OAAoB,IAAI,EAAE,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,yBAAyB,CAAC,CAAC;gBAC9E,CAAC;gBACD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,oBAAoB,EAAE,IAAI;SAC3B;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACrD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACrD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;aACpD;YACD,oBAAoB,EAAE,IAAI;SAC3B;KACF;IACD,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
@@ -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;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,KAAK,0BAA0B,GAAG,eAAe,GAAG;IAClD,IAAI,EAAE,YAAY,CAAC;IACnB,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,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,cAAM,kBAAmB,YAAW,gBAAgB;IAIhD,QAAQ,CAAC,QAAQ,EAAE,0BAA0B;IAC7C,OAAO,CAAC,gBAAgB;IAJ1B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAwB;gBAGhD,QAAQ,EAAE,0BAA0B,EACrC,gBAAgB,EAAE,gBAAgB;IAGtC,IAAI,CAAC,GAAG,EAAE,eAAe;CAwBhC;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"}
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;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,KAAK,0BAA0B,GAAG,eAAe,GAAG;IAClD,IAAI,EAAE,YAAY,CAAC;IACnB,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,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,cAAM,kBAAmB,YAAW,gBAAgB;IAIhD,QAAQ,CAAC,QAAQ,EAAE,0BAA0B;IAC7C,OAAO,CAAC,gBAAgB;IAJ1B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAwB;gBAGhD,QAAQ,EAAE,0BAA0B,EACrC,gBAAgB,EAAE,gBAAgB;IAGtC,IAAI,CAAC,GAAG,EAAE,eAAe;CA8BhC;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"}
@@ -13,16 +13,24 @@ class ResourceDefinition {
13
13
  async init(ctx) {
14
14
  for (const cap of this.resource.capabilities) {
15
15
  if (!ctx.isCapabilityRegistered(cap)) {
16
- throw new Error(`Capability "${cap}" is not registered. Declare it as a Runtime.Capability resource.`);
16
+ throw new Error(`Capability "${cap}" is not registered. Declare it as a Kernel.Capability resource.`);
17
17
  }
18
18
  const capSchema = ctx.getCapabilitySchema(cap);
19
19
  if (capSchema) {
20
20
  ctx.validateSchema(this.resource, capSchema);
21
21
  }
22
22
  }
23
- const controllerInstance = await this.controllerLoader.load(this.resource.controllers, this.resource.metadata.source);
24
- ctx.registerDefinition(this.resource);
25
- await ctx.registerController(this.resource.metadata.module, this.resource.metadata.name, controllerInstance);
23
+ ctx.emit("ControllerLoading", { controllers: this.resource.controllers });
24
+ try {
25
+ const controllerInstance = await this.controllerLoader.load(this.resource.controllers, this.resource.metadata.source);
26
+ ctx.emit("ControllerLoaded", { schema: controllerInstance.schema });
27
+ ctx.registerDefinition(this.resource);
28
+ await ctx.registerController(this.resource.metadata.module, this.resource.metadata.name, controllerInstance);
29
+ }
30
+ catch (err) {
31
+ ctx.emit("ControllerLoadFailed", { error: err.message });
32
+ throw err;
33
+ }
26
34
  }
27
35
  }
28
36
  export function register(ctx) {
@@ -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;AAexF;;;GAGG;AACH,MAAM,kBAAkB;IAGtB,YACW,QAAoC,EACrC,gBAAkC;QADjC,aAAQ,GAAR,QAAQ,CAA4B;QACrC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAJnC,SAAI,GAAyB,oBAAoB,CAAC;IAKxD,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,GAAoB;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,mEAAmE,CACtF,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAC9B,CAAC;QACF,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC,kBAAkB,CAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAC3B,kBAAkB,CACnB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,GAAsB;IAC7C,oEAAoE;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAa,EAAE,GAAoB;IAC9D,uDAAuD;IACvD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,eAAe,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,MAAM,UAAU,GAAG,QAAsC,CAAC;IAC1D,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
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;AAexF;;;GAGG;AACH,MAAM,kBAAkB;IAGtB,YACW,QAAoC,EACrC,gBAAkC;QADjC,aAAQ,GAAR,QAAQ,CAA4B;QACrC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAJnC,SAAI,GAAyB,oBAAoB,CAAC;IAKxD,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,GAAoB;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,kEAAkE,CACrF,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAC9B,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,GAAG,CAAC,kBAAkB,CAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAC3B,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,GAAsB;IAC7C,oEAAoE;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAa,EAAE,GAAoB;IAC9D,uDAAuD;IACvD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,eAAe,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAChH,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,MAAM,UAAU,GAAG,QAAsC,CAAC;IAC1D,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
@@ -0,0 +1,91 @@
1
+ import type { ResourceInstance, ResourceManifest } from "@telorun/sdk";
2
+ /** Four-stage resource lifecycle defined in resource-lifecycle.md */
3
+ export type LifecycleState = "Pending" | "Validated" | "Initialized" | "Draining" | "Teardown";
4
+ /**
5
+ * Creates a ResourceInstance for the given manifest, or returns null if not yet
6
+ * ready (e.g. a dependency is still initializing). Injected at construction so
7
+ * every EvaluationContext node owns its full resource lifecycle.
8
+ */
9
+ export type InstanceFactory = (resource: ResourceManifest) => Promise<ResourceInstance | null>;
10
+ /** Canonical key for a resource instance: "<module>.<kind>.<name>" */
11
+ export declare function resourceKey(r: ResourceManifest): string;
12
+ /**
13
+ * Base class for all evaluation contexts. Owns CEL evaluation, template
14
+ * expansion, secrets redaction, and the generic resource lifecycle tree.
15
+ *
16
+ * Every EvaluationContext node can:
17
+ * - Hold its own resource instances (resourceInstances)
18
+ * - Queue resources for initialization (pendingResources)
19
+ * - Spawn child contexts (spawnChild) forming a lifecycle tree
20
+ * - Run a multi-pass initialization loop (initializeResources)
21
+ * - Cascade teardown depth-first through the tree (teardownResources)
22
+ */
23
+ export declare class EvaluationContext {
24
+ protected _context: Record<string, unknown>;
25
+ protected _secretValues: Set<string>;
26
+ protected _createInstance: InstanceFactory;
27
+ /** Position in the lifecycle tree. */
28
+ parent: EvaluationContext | undefined;
29
+ readonly children: EvaluationContext[];
30
+ /** Current lifecycle state of this context node. */
31
+ state: LifecycleState;
32
+ /** Resource instances owned by this context node, keyed by resourceKey(). */
33
+ readonly resourceInstances: Map<string, {
34
+ resource: ResourceManifest;
35
+ instance: ResourceInstance;
36
+ }>;
37
+ /** Resources queued for initialization on this context node. */
38
+ readonly pendingResources: ResourceManifest[];
39
+ constructor(context: Record<string, unknown>, createInstance?: InstanceFactory, secretValues?: Set<string>);
40
+ get createInstance(): InstanceFactory;
41
+ get context(): Record<string, unknown>;
42
+ get secretValues(): Set<string>;
43
+ /**
44
+ * Queue a resource manifest for initialization on this context.
45
+ */
46
+ registerManifest(resource: ResourceManifest): void;
47
+ /**
48
+ * Attach a child context to this node. The child's parent is set to this
49
+ * context and the child is registered under the given name.
50
+ */
51
+ spawnChild<T extends EvaluationContext>(child: T): T;
52
+ /**
53
+ * Multi-pass initialization loop. Processes pendingResources by calling the
54
+ * supplied instantiator for each resource, retrying failures across up to 10
55
+ * passes (handles dependency ordering without explicit topological sort).
56
+ *
57
+ * ERR_VISIBILITY_DENIED errors are fatal and re-thrown immediately.
58
+ * All other errors are tracked and retried until no progress is made.
59
+ */
60
+ initializeResources(): Promise<void>;
61
+ withManifests<T>(manifests: any[], fn: () => T): T;
62
+ /**
63
+ * Cascade teardown depth-first through the tree:
64
+ * 1. Tear down child contexts in reverse registration order.
65
+ * 2. Tear down own resource instances in reverse registration order.
66
+ *
67
+ * Note: Kernel-level events (e.g. Teardown events) are NOT emitted here —
68
+ * they remain the Kernel's responsibility.
69
+ */
70
+ teardownResources(): Promise<void>;
71
+ /**
72
+ * Evaluate a single CEL expression string against the context.
73
+ * Secret values are redacted from any thrown error message.
74
+ */
75
+ evaluate(expression: string): unknown;
76
+ /**
77
+ * Expand a value that may contain ${{ }} templates.
78
+ * Works recursively over strings, arrays, and objects.
79
+ * Templates whose identifiers are not present in the context are left
80
+ * unchanged (deferred) — they will be resolved at execution time when a
81
+ * richer ExecutionContext is available. All other CEL errors are propagated.
82
+ */
83
+ expand(value: unknown): unknown;
84
+ /**
85
+ * Merge another context on top of this one.
86
+ * Returns a new base EvaluationContext — 'other' wins on key conflict.
87
+ */
88
+ merge(other: EvaluationContext | Record<string, unknown>): EvaluationContext;
89
+ private expandString;
90
+ }
91
+ //# sourceMappingURL=evaluation-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-context.d.ts","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOvE,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/F;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAE/F,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAEvD;AAYD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAE3C,sCAAsC;IACtC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAa;IAClD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAM;IAE5C,oDAAoD;IACpD,KAAK,EAAE,cAAc,CAAa;IAElC,6EAA6E;IAC7E,QAAQ,CAAC,iBAAiB;kBAEZ,gBAAgB;kBAAY,gBAAgB;OACtD;IAEJ,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAM;gBAGjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,cAAc,GAAE,eAAkC,EAClD,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAO5B,IAAI,cAAc,IAAI,eAAe,CAEpC;IAED,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErC;IAED,IAAI,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE9B;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIlD;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,iBAAiB,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAMpD;;;;;;;OAOG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkD1C,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAiBlD;;;;;;;OAOG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAUrC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAiB/B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB;IAY5E,OAAO,CAAC,YAAY;CAkBrB"}
@@ -0,0 +1,220 @@
1
+ import { evaluate } from "cel-js";
2
+ import { RuntimeError } from "./types.js";
3
+ const TEMPLATE_REGEX = /\$\{\{\s*([^}]+?)\s*\}\}/g;
4
+ const EXACT_TEMPLATE_REGEX = /^\s*\$\{\{\s*([^}]+?)\s*\}\}\s*$/;
5
+ /** Canonical key for a resource instance: "<module>.<kind>.<name>" */
6
+ export function resourceKey(r) {
7
+ return `${r.metadata.module ?? "default"}.${r.kind}.${r.metadata.name}`;
8
+ }
9
+ function redactSecrets(message, secretValues) {
10
+ if (secretValues.size === 0)
11
+ return message;
12
+ const sorted = Array.from(secretValues).sort((a, b) => b.length - a.length);
13
+ let result = message;
14
+ for (const secret of sorted) {
15
+ result = result.split(secret).join("[REDACTED]");
16
+ }
17
+ return result;
18
+ }
19
+ /**
20
+ * Base class for all evaluation contexts. Owns CEL evaluation, template
21
+ * expansion, secrets redaction, and the generic resource lifecycle tree.
22
+ *
23
+ * Every EvaluationContext node can:
24
+ * - Hold its own resource instances (resourceInstances)
25
+ * - Queue resources for initialization (pendingResources)
26
+ * - Spawn child contexts (spawnChild) forming a lifecycle tree
27
+ * - Run a multi-pass initialization loop (initializeResources)
28
+ * - Cascade teardown depth-first through the tree (teardownResources)
29
+ */
30
+ export class EvaluationContext {
31
+ constructor(context, createInstance = async () => null, secretValues) {
32
+ /** Position in the lifecycle tree. */
33
+ this.parent = undefined;
34
+ this.children = [];
35
+ /** Current lifecycle state of this context node. */
36
+ this.state = "Pending";
37
+ /** Resource instances owned by this context node, keyed by resourceKey(). */
38
+ this.resourceInstances = new Map();
39
+ /** Resources queued for initialization on this context node. */
40
+ this.pendingResources = [];
41
+ this._context = context;
42
+ this._createInstance = createInstance;
43
+ this._secretValues = secretValues ?? new Set();
44
+ }
45
+ get createInstance() {
46
+ return this._createInstance;
47
+ }
48
+ get context() {
49
+ return this._context;
50
+ }
51
+ get secretValues() {
52
+ return this._secretValues;
53
+ }
54
+ /**
55
+ * Queue a resource manifest for initialization on this context.
56
+ */
57
+ registerManifest(resource) {
58
+ this.pendingResources.push(resource);
59
+ }
60
+ /**
61
+ * Attach a child context to this node. The child's parent is set to this
62
+ * context and the child is registered under the given name.
63
+ */
64
+ spawnChild(child) {
65
+ child.parent = this;
66
+ this.children.push(child);
67
+ return child;
68
+ }
69
+ /**
70
+ * Multi-pass initialization loop. Processes pendingResources by calling the
71
+ * supplied instantiator for each resource, retrying failures across up to 10
72
+ * passes (handles dependency ordering without explicit topological sort).
73
+ *
74
+ * ERR_VISIBILITY_DENIED errors are fatal and re-thrown immediately.
75
+ * All other errors are tracked and retried until no progress is made.
76
+ */
77
+ async initializeResources() {
78
+ const MAX_PASSES = 10;
79
+ let pass = 1;
80
+ const errors = new Map();
81
+ do {
82
+ const handled = [];
83
+ for (const resource of [...this.pendingResources]) {
84
+ const key = resourceKey(resource);
85
+ if (this.resourceInstances.has(key))
86
+ continue;
87
+ try {
88
+ const instance = await this._createInstance(resource);
89
+ if (instance) {
90
+ this.resourceInstances.set(key, { resource, instance });
91
+ handled.push(resource);
92
+ errors.delete(key);
93
+ }
94
+ }
95
+ catch (error) {
96
+ if (error instanceof RuntimeError && error.code === "ERR_VISIBILITY_DENIED")
97
+ throw error;
98
+ errors.set(key, error instanceof Error ? (error.stack ?? error.message) : String(error));
99
+ }
100
+ }
101
+ for (const r of handled) {
102
+ const idx = this.pendingResources.indexOf(r);
103
+ if (idx >= 0)
104
+ this.pendingResources.splice(idx, 1);
105
+ }
106
+ pass++;
107
+ if (handled.length === 0)
108
+ break;
109
+ } while (pass <= MAX_PASSES);
110
+ if (this.pendingResources.length > 0) {
111
+ const unhandledList = this.pendingResources
112
+ .reverse()
113
+ .map((r) => `- ${r.kind}:${r.metadata.name}: ${errors.get(resourceKey(r)) ?? "Unknown error"}`)
114
+ .join("\n");
115
+ throw new RuntimeError("ERR_RESOURCE_INITIALIZATION_FAILED", `Unable to process resources:\n\n${unhandledList}`);
116
+ }
117
+ this.state = "Initialized";
118
+ }
119
+ withManifests(manifests, fn) {
120
+ const child = this.spawnChild(new EvaluationContext(this._context, this._createInstance, this._secretValues));
121
+ try {
122
+ for (const manifest of manifests) {
123
+ child.registerManifest(manifest);
124
+ }
125
+ return fn();
126
+ }
127
+ finally {
128
+ // Tear down child context and its resources immediately after fn() completes.
129
+ // Note that this does NOT emit Kernel-level events (e.g. Teardown events) —
130
+ // they remain the Kernel's responsibility.
131
+ child.teardownResources();
132
+ }
133
+ }
134
+ /**
135
+ * Cascade teardown depth-first through the tree:
136
+ * 1. Tear down child contexts in reverse registration order.
137
+ * 2. Tear down own resource instances in reverse registration order.
138
+ *
139
+ * Note: Kernel-level events (e.g. Teardown events) are NOT emitted here —
140
+ * they remain the Kernel's responsibility.
141
+ */
142
+ async teardownResources() {
143
+ this.state = "Draining";
144
+ for (const child of [...this.children].reverse()) {
145
+ await child.teardownResources();
146
+ }
147
+ const entries = [...this.resourceInstances.entries()].reverse();
148
+ for (const [key, { instance }] of entries) {
149
+ if (instance.teardown)
150
+ await instance.teardown();
151
+ this.resourceInstances.delete(key);
152
+ }
153
+ this.state = "Teardown";
154
+ }
155
+ /**
156
+ * Evaluate a single CEL expression string against the context.
157
+ * Secret values are redacted from any thrown error message.
158
+ */
159
+ evaluate(expression) {
160
+ try {
161
+ return evaluate(expression, this._context);
162
+ }
163
+ catch (error) {
164
+ const raw = error instanceof Error ? error.message : String(error);
165
+ const safe = redactSecrets(raw, this._secretValues);
166
+ throw new Error(`CEL evaluation failed: "${expression}": ${safe}`);
167
+ }
168
+ }
169
+ /**
170
+ * Expand a value that may contain ${{ }} templates.
171
+ * Works recursively over strings, arrays, and objects.
172
+ * Templates whose identifiers are not present in the context are left
173
+ * unchanged (deferred) — they will be resolved at execution time when a
174
+ * richer ExecutionContext is available. All other CEL errors are propagated.
175
+ */
176
+ expand(value) {
177
+ if (typeof value === "string") {
178
+ return this.expandString(value);
179
+ }
180
+ if (Array.isArray(value)) {
181
+ return value.map((entry) => this.expand(entry));
182
+ }
183
+ if (value !== null && typeof value === "object") {
184
+ const resolved = {};
185
+ for (const [key, entry] of Object.entries(value)) {
186
+ resolved[key] = this.expand(entry);
187
+ }
188
+ return resolved;
189
+ }
190
+ return value;
191
+ }
192
+ /**
193
+ * Merge another context on top of this one.
194
+ * Returns a new base EvaluationContext — 'other' wins on key conflict.
195
+ */
196
+ merge(other) {
197
+ const otherCtx = other instanceof EvaluationContext ? other.context : other;
198
+ const otherSecrets = other instanceof EvaluationContext ? other.secretValues : new Set();
199
+ const merged = Object.assign(Object.create(null), this._context, otherCtx);
200
+ const mergedSecrets = new Set([...this._secretValues, ...otherSecrets]);
201
+ return new EvaluationContext(merged, this._createInstance, mergedSecrets);
202
+ }
203
+ expandString(value) {
204
+ if (!value.includes("${{")) {
205
+ return value;
206
+ }
207
+ const exact = value.match(EXACT_TEMPLATE_REGEX);
208
+ if (exact) {
209
+ return this.evaluate(exact[1]);
210
+ }
211
+ return value.replace(TEMPLATE_REGEX, (_match, expr) => {
212
+ const resolved = this.evaluate(expr);
213
+ if (resolved === null || resolved === undefined) {
214
+ return "";
215
+ }
216
+ return String(resolved);
217
+ });
218
+ }
219
+ }
220
+ //# sourceMappingURL=evaluation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-context.js","sourceRoot":"","sources":["../src/evaluation-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { EvaluationContext } from "./evaluation-context.js";
2
+ import { ModuleContext } from "./module-context.js";
3
+ /**
4
+ * The ephemeral, per-trigger context layer. Merges a ModuleContext with
5
+ * arbitrary execution-time properties (e.g. { request, inputs } for HTTP;
6
+ * any shape is valid — determined by the trigger type).
7
+ *
8
+ * Execution props overlay the module namespaces on key conflict.
9
+ */
10
+ export declare class ExecutionContext extends EvaluationContext {
11
+ constructor(moduleCtx: ModuleContext, execProps: Record<string, unknown>);
12
+ }
13
+ //# sourceMappingURL=execution-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../src/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;gBACzC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOzE"}
@@ -0,0 +1,14 @@
1
+ import { EvaluationContext } from "./evaluation-context.js";
2
+ /**
3
+ * The ephemeral, per-trigger context layer. Merges a ModuleContext with
4
+ * arbitrary execution-time properties (e.g. { request, inputs } for HTTP;
5
+ * any shape is valid — determined by the trigger type).
6
+ *
7
+ * Execution props overlay the module namespaces on key conflict.
8
+ */
9
+ export class ExecutionContext extends EvaluationContext {
10
+ constructor(moduleCtx, execProps) {
11
+ super(Object.assign(Object.create(null), moduleCtx.context, execProps), moduleCtx.createInstance, moduleCtx.secretValues);
12
+ }
13
+ }
14
+ //# sourceMappingURL=execution-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../src/execution-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,iBAAiB;IACrD,YAAY,SAAwB,EAAE,SAAkC;QACtE,KAAK,CACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAA4B,EAC3F,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,YAAY,CACvB,CAAC;IACJ,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,4 @@ export { Kernel } from "./kernel.js";
4
4
  export { Loader } from "./loader.js";
5
5
  export { ManifestRegistry as Registry } from "./registry.js";
6
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
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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"}
package/dist/index.js CHANGED
@@ -4,6 +4,4 @@ export { Kernel } from "./kernel.js";
4
4
  export { Loader } from "./loader.js";
5
5
  export { ManifestRegistry as Registry } from "./registry.js";
6
6
  export { ResourceURI } from "./resource-uri.js";
7
- export { SnapshotSerializer } from "./snapshot-serializer.js";
8
- export { RuntimeError } from "./types.js";
9
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +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"}
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"}