@telorun/sdk 0.2.8 → 0.3.2

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/README.md CHANGED
@@ -16,6 +16,60 @@ Early prototype. APIs and contracts are still evolving. The API surface - includ
16
16
 
17
17
  Use the SDK when building or extending Telo modules. It is not the kernel itself; it is the contract layer that keeps module behavior consistent and predictable.
18
18
 
19
+ ## Errors
20
+
21
+ Telo distinguishes two kinds of failure from an `Invocable` / `Runnable`:
22
+
23
+ - **Operational failures** — plain `Error` or `RuntimeError` throws. Propagate to the kernel's infrastructure layer (HTTP → Fastify 5xx, sequence → bubbles up). These represent bugs or environment failure.
24
+ - **Domain failures** — `InvokeError` throws. Part of the invocable's public contract. Route handlers match on `error.code` via `catches:` entries; sequences handle them in `try`/`catch`.
25
+
26
+ ```ts
27
+ import { InvokeError, isInvokeError } from "@telorun/sdk";
28
+
29
+ // In a controller:
30
+ throw new InvokeError("UNAUTHORIZED", "Token missing or invalid", {
31
+ reason: "expired",
32
+ });
33
+
34
+ // Anywhere a thrown value crosses a boundary:
35
+ if (isInvokeError(err)) {
36
+ // err.code, err.message, err.data
37
+ }
38
+ ```
39
+
40
+ Use `isInvokeError(err)` for recognition — it's dual-realm-safe (survives pnpm hoist splits, registry-loaded modules with their own SDK copy, and future sandbox isolation). `instanceof InvokeError` is not reliable across package boundaries.
41
+
42
+ Controllers that throw `InvokeError` **must** declare their codes in their `Telo.Definition`:
43
+
44
+ ```yaml
45
+ kind: Telo.Definition
46
+ metadata: { name: VerifyToken }
47
+ capability: Telo.Invocable
48
+ throws:
49
+ codes:
50
+ UNAUTHORIZED: { description: Missing or invalid token. }
51
+ EXPIRED:
52
+ description: Token is past its expires_at.
53
+ data:
54
+ type: object
55
+ properties:
56
+ expiredAt: { type: string, format: date-time }
57
+ required: [expiredAt]
58
+ ```
59
+
60
+ Undeclared codes emit an `${kind}.${name}.InvokeRejected.Undeclared` observability event — the analyzer catches these statically.
61
+
62
+ Composers that propagate rather than originate codes can declare:
63
+
64
+ ```yaml
65
+ throws:
66
+ inherit: true # union of everything I call (requires x-telo-step-context)
67
+ # or
68
+ passthrough: true # union is whatever my inputs.code resolves to (Run.Throw-style)
69
+ ```
70
+
71
+ `inherit` is driven by the analyzer's dataflow pass over `x-telo-step-context` arrays; future composers opt in by declaring both the annotation and `inherit: true`. See [modules/run/docs/structured-errors.md](../../modules/run/docs/structured-errors.md) for the end-to-end flow.
72
+
19
73
  ## Related Docs
20
74
 
21
75
  - Kernel overview: [kernel/README.md](../../kernel/README.md)
@@ -3,6 +3,8 @@
3
3
  * The SDK has no knowledge of CEL — it only calls .call(). */
4
4
  export interface CompiledValue {
5
5
  readonly __compiled: true;
6
+ /** Original expression source text (e.g. "env.PORT"), if available. */
7
+ readonly source?: string;
6
8
  call(ctx: Record<string, unknown>): unknown;
7
9
  }
8
10
  export declare function isCompiledValue(v: unknown): v is CompiledValue;
@@ -1 +1 @@
1
- {"version":3,"file":"compiled-value.d.ts","sourceRoot":"","sources":["../src/compiled-value.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D"}
1
+ {"version":3,"file":"compiled-value.d.ts","sourceRoot":"","sources":["../src/compiled-value.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC7C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D"}
@@ -1,6 +1,7 @@
1
1
  import type { ScopeHandle } from "./ref.js";
2
2
  import type { ResourceInstance } from "./resource-instance.js";
3
3
  import type { ResourceManifest } from "./resource-manifest.js";
4
+ import type { ResourceDefinition } from "./types.js";
4
5
  export type EmitEvent = (event: string, payload?: any) => void | Promise<void>;
5
6
  /** Four-stage resource lifecycle defined in resource-lifecycle.md */
6
7
  export type LifecycleState = "Pending" | "Validated" | "Initialized" | "Draining" | "Teardown";
@@ -50,6 +51,9 @@ export interface EvaluationContext {
50
51
  instance: ResourceInstance;
51
52
  }>;
52
53
  preInitHook?: PreInitHook;
54
+ /** Looks up a registered resource definition by fully-qualified kind.
55
+ * Set by the kernel; used for declared-throw-union checks. */
56
+ getDefinition?: (kind: string) => ResourceDefinition | undefined;
53
57
  readonly createInstance: InstanceFactory;
54
58
  readonly context: Record<string, unknown>;
55
59
  readonly secretValues: Set<string>;
@@ -63,6 +67,7 @@ export interface EvaluationContext {
63
67
  teardownResources(): Promise<void>;
64
68
  transientChild(context: Record<string, any>): EvaluationContext;
65
69
  invoke<TInputs>(kind: string, name: string, inputs: TInputs): Promise<any>;
70
+ invokeResolved<TInputs>(kind: string, name: string, instance: ResourceInstance, inputs: TInputs): Promise<any>;
66
71
  run(name: string): Promise<void>;
67
72
  expand(value: unknown): unknown;
68
73
  expandWith(value: unknown, extraContext: Record<string, unknown>): unknown;
@@ -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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"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from "./module-context.js";
10
10
  export * from "./resource-context.js";
11
11
  export * from "./resource-instance.js";
12
12
  export * from "./resource-manifest.js";
13
+ export * from "./invoke-error.js";
13
14
  export * from "./runtime-error.js";
14
15
  export * from "./runtime-event.js";
15
16
  export * from "./runtime-resource.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export * from "./module-context.js";
10
10
  export * from "./resource-context.js";
11
11
  export * from "./resource-instance.js";
12
12
  export * from "./resource-manifest.js";
13
+ export * from "./invoke-error.js";
13
14
  export * from "./runtime-error.js";
14
15
  export * from "./runtime-event.js";
15
16
  export * from "./runtime-resource.js";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Structured, catchable error for invocables and runnables. Route handlers and
3
+ * Run.Sequence try/catch match on `code`; downstream renderers consume `data`.
4
+ *
5
+ * Use `isInvokeError` for recognition, not `instanceof` — dual-realm safe
6
+ * across pnpm hoist splits, registry modules, and future sandbox isolation.
7
+ */
8
+ export declare class InvokeError extends Error {
9
+ readonly code: string;
10
+ readonly data?: unknown;
11
+ constructor(code: string, message: string, data?: unknown);
12
+ }
13
+ export declare function isInvokeError(err: unknown): err is InvokeError;
14
+ //# sourceMappingURL=invoke-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke-error.d.ts","sourceRoot":"","sources":["../src/invoke-error.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAiB1D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAM9D"}
@@ -0,0 +1,34 @@
1
+ const INVOKE_ERROR = Symbol.for("telo.InvokeError");
2
+ /**
3
+ * Structured, catchable error for invocables and runnables. Route handlers and
4
+ * Run.Sequence try/catch match on `code`; downstream renderers consume `data`.
5
+ *
6
+ * Use `isInvokeError` for recognition, not `instanceof` — dual-realm safe
7
+ * across pnpm hoist splits, registry modules, and future sandbox isolation.
8
+ */
9
+ export class InvokeError extends Error {
10
+ code;
11
+ data;
12
+ constructor(code, message, data) {
13
+ super(message);
14
+ this.name = "InvokeError";
15
+ this.code = code;
16
+ this.data = data;
17
+ // Set via defineProperty (not a class field initializer) so the marker is
18
+ // always present regardless of TS/runtime class-field semantics
19
+ // (useDefineForClassFields, Error-subclass quirks, etc.) and stays
20
+ // non-enumerable so JSON serialisation / CEL property access don't trip
21
+ // over it.
22
+ Object.defineProperty(this, INVOKE_ERROR, {
23
+ value: true,
24
+ enumerable: false,
25
+ writable: false,
26
+ configurable: false,
27
+ });
28
+ }
29
+ }
30
+ export function isInvokeError(err) {
31
+ return (typeof err === "object" &&
32
+ err !== null &&
33
+ err[INVOKE_ERROR] === true);
34
+ }
package/dist/ref.d.ts CHANGED
@@ -36,7 +36,7 @@ export type Injected<T> = {
36
36
  /** Returns a schema node that emits `x-telo-ref` for buildReferenceFieldMap and carries
37
37
  * KindRef<T> as its TypeScript type. For TypeBox schemas use Type.Unsafe<KindRef<T>>(Ref(...)).
38
38
  *
39
- * @param ref Canonical ref string: "namespace/module-name#TypeName" or "kernel#TypeName" */
39
+ * @param ref Canonical ref string: "namespace/module-name#TypeName" or "telo#TypeName" */
40
40
  export declare const Ref: <T = ResourceInstance>(ref: string) => KindRef<T>;
41
41
  /** Returns a schema node that emits `x-telo-scope` for buildReferenceFieldMap and carries
42
42
  * ScopeRef as its TypeScript type. For TypeBox schemas use Type.Unsafe<ScopeRef>(Scope(...)).
package/dist/ref.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;mGAEmG;AACnG,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,gBAAgB;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACrB;AAED;6DAC6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B;;;uEAGmE;IACnE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC7C;AAED;oFACoF;AACpF,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;AAED;;;;qCAIqC;AACrC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAC7B,CAAC,EAAE,GACH,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAChC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GACrC,CAAC,CAAC,CAAC,CAAC;CACb,CAAC;AAEF;;;6FAG6F;AAC7F,eAAO,MAAM,GAAG,GAAI,CAAC,GAAG,gBAAgB,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,CAAC,CACf,CAAC;AAEnD;;;;wEAIwE;AACxE,eAAO,MAAM,KAAK,GAAI,gBAAgB,MAAM,GAAG,MAAM,EAAE,KAAG,QACG,CAAC"}
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;mGAEmG;AACnG,MAAM,WAAW,OAAO,CAAC,CAAC,GAAG,gBAAgB;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACrB;AAED;6DAC6D;AAC7D,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B;;;uEAGmE;IACnE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC7C;AAED;oFACoF;AACpF,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7D;AAED;;;;qCAIqC;AACrC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,GAC7B,CAAC,EAAE,GACH,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAChC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GACrC,CAAC,CAAC,CAAC,CAAC;CACb,CAAC;AAEF;;;2FAG2F;AAC3F,eAAO,MAAM,GAAG,GAAI,CAAC,GAAG,gBAAgB,EAAE,KAAK,MAAM,KAAG,OAAO,CAAC,CAAC,CACf,CAAC;AAEnD;;;;wEAIwE;AACxE,eAAO,MAAM,KAAK,GAAI,gBAAgB,MAAM,GAAG,MAAM,EAAE,KAAG,QACG,CAAC"}
package/dist/ref.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /** Returns a schema node that emits `x-telo-ref` for buildReferenceFieldMap and carries
2
2
  * KindRef<T> as its TypeScript type. For TypeBox schemas use Type.Unsafe<KindRef<T>>(Ref(...)).
3
3
  *
4
- * @param ref Canonical ref string: "namespace/module-name#TypeName" or "kernel#TypeName" */
4
+ * @param ref Canonical ref string: "namespace/module-name#TypeName" or "telo#TypeName" */
5
5
  export const Ref = (ref) => ({ "x-telo-ref": ref });
6
6
  /** Returns a schema node that emits `x-telo-scope` for buildReferenceFieldMap and carries
7
7
  * ScopeRef as its TypeScript type. For TypeBox schemas use Type.Unsafe<ScopeRef>(Scope(...)).
@@ -1,7 +1,14 @@
1
1
  import { ControllerContext } from "./controller-context.js";
2
2
  import { EvaluationContext } from "./evaluation-context.js";
3
3
  import { ModuleContext } from "./module-context.js";
4
+ import { ResourceInstance } from "./resource-instance.js";
5
+ import { ResourceManifest } from "./resource-manifest.js";
4
6
  import { RuntimeResource } from "./runtime-resource.js";
7
+ export interface LoadOptions {
8
+ /** When true, `${{ }}` templates are replaced with CompiledValue wrappers
9
+ * so they can be evaluated at runtime. Leave unset for static analysis. */
10
+ compile?: boolean;
11
+ }
5
12
  export interface DataValidator {
6
13
  validate(data: any): void;
7
14
  isValid(data: any): boolean;
@@ -23,6 +30,7 @@ export interface ResourceContext extends ControllerContext {
23
30
  acquireHold(reason?: string): () => void;
24
31
  emitEvent(event: string, payload?: any): Promise<void>;
25
32
  invoke<TInputs>(kind: string, name: string, inputs: TInputs, options?: any): Promise<any>;
33
+ invokeResolved<TInputs>(kind: string, name: string, instance: ResourceInstance, inputs: TInputs): Promise<any>;
26
34
  run(kind: string, name: string): Promise<void>;
27
35
  getResources(kind: string): RuntimeResource[];
28
36
  getResourcesByName(kind: string, name: string): RuntimeResource | null;
@@ -46,7 +54,16 @@ export interface ResourceContext extends ControllerContext {
46
54
  registerDefinition(definition: any): void;
47
55
  registerModuleImport(alias: string, targetModule: string, kinds: string[]): void;
48
56
  teardownResource(kind: string, name: string): Promise<void>;
57
+ /** Load a single module (its own file + `include`d partials). Use this when
58
+ * you need just the declaring file's manifests. */
59
+ loadModule(url: string, options?: LoadOptions): Promise<ResourceManifest[]>;
60
+ /** Load a module and follow its Telo.Import chain, returning the union of
61
+ * the module's manifests plus all transitively-imported Telo.Definition
62
+ * manifests. Use this when you need the full kind surface area visible from
63
+ * the module. */
64
+ loadManifests(url: string): Promise<ResourceManifest[]>;
49
65
  readonly moduleContext: ModuleContext;
66
+ readonly env: Record<string, string | undefined>;
50
67
  readonly stdin: NodeJS.ReadableStream;
51
68
  readonly stdout: NodeJS.WritableStream;
52
69
  readonly stderr: NodeJS.WritableStream;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-context.d.ts","sourceRoot":"","sources":["../src/resource-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-context.d.ts","sourceRoot":"","sources":["../src/resource-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B;gFAC4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO;IAIP,QAAQ;CAGT;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEhG,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IACzC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1F,cAAc,CAAC,OAAO,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAC9C,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;IACvE,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAC;IACtC,iBAAiB,IAAI,iBAAiB,CAAC;IACvC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAChE,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAC9C,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAAC;IAClD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC;IACtD,kFAAkF;IAClF,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC;IACtF,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1C,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D;wDACoD;IACpD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E;;;sBAGkB;IAClB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CACxC"}
@@ -2,6 +2,8 @@ export interface RuntimeDiagnostic {
2
2
  severity?: "error" | "warning";
3
3
  message: string;
4
4
  resource?: string;
5
+ kind?: string;
6
+ details?: string;
5
7
  code?: string;
6
8
  }
7
9
  /** Well-known kernel error codes. User-defined codes (e.g. from Type.JsonSchema rules) are also valid. */
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-error.d.ts","sourceRoot":"","sources":["../src/runtime-error.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,0GAA0G;AAC1G,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,2BAA2B,GAC3B,0BAA0B,GAC1B,wBAAwB,GACxB,oCAAoC,GACpC,4BAA4B,GAC5B,uCAAuC,GACvC,wBAAwB,GACxB,sBAAsB,GACtB,mBAAmB,GACnB,uBAAuB,GACvB,gCAAgC,GAChC,yBAAyB,GACzB,8BAA8B,GAC9B,oBAAoB,GACpB,4BAA4B,GAC5B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime-error.d.ts","sourceRoot":"","sources":["../src/runtime-error.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,0GAA0G;AAC1G,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,2BAA2B,GAC3B,0BAA0B,GAC1B,wBAAwB,GACxB,oCAAoC,GACpC,4BAA4B,GAC5B,uCAAuC,GACvC,wBAAwB,GACxB,sBAAsB,GACtB,mBAAmB,GACnB,uBAAuB,GACvB,gCAAgC,GAChC,yBAAyB,GACzB,8BAA8B,GAC9B,oBAAoB,GACpB,4BAA4B,GAC5B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -11,6 +11,20 @@ export interface ExecContext {
11
11
  execute(urn: string, input: any): Promise<any>;
12
12
  [key: string]: any;
13
13
  }
14
+ export interface ThrowCodeSpec {
15
+ description: string;
16
+ data?: Record<string, any>;
17
+ }
18
+ /**
19
+ * Declared throw contract for a Telo.Invocable or Telo.Runnable definition.
20
+ * Codes-only (explicit contract) in Phase 1; `inherit` and `passthrough` land
21
+ * in Phase 2 together with the analyzer dataflow pass.
22
+ */
23
+ export interface ThrowsSpec {
24
+ codes?: Record<string, ThrowCodeSpec>;
25
+ inherit?: boolean;
26
+ passthrough?: boolean;
27
+ }
14
28
  export interface ResourceDefinition {
15
29
  kind: string;
16
30
  metadata: {
@@ -24,6 +38,8 @@ export interface ResourceDefinition {
24
38
  runtime: string;
25
39
  entry: string;
26
40
  }>;
41
+ /** Declared throw contract — only valid on Telo.Invocable / Telo.Runnable. */
42
+ throws?: ThrowsSpec;
27
43
  }
28
44
  /**
29
45
  * Controller definition for a resource kind.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telorun/sdk",
3
- "version": "0.2.8",
3
+ "version": "0.3.2",
4
4
  "description": "Telo SDK - Public API for Telo module authors.",
5
5
  "keywords": [
6
6
  "telo",
@@ -3,6 +3,8 @@
3
3
  * The SDK has no knowledge of CEL — it only calls .call(). */
4
4
  export interface CompiledValue {
5
5
  readonly __compiled: true;
6
+ /** Original expression source text (e.g. "env.PORT"), if available. */
7
+ readonly source?: string;
6
8
  call(ctx: Record<string, unknown>): unknown;
7
9
  }
8
10
 
@@ -1,6 +1,7 @@
1
1
  import type { ScopeHandle } from "./ref.js";
2
2
  import type { ResourceInstance } from "./resource-instance.js";
3
3
  import type { ResourceManifest } from "./resource-manifest.js";
4
+ import type { ResourceDefinition } from "./types.js";
4
5
 
5
6
  export type EmitEvent = (event: string, payload?: any) => void | Promise<void>;
6
7
 
@@ -67,6 +68,10 @@ export interface EvaluationContext {
67
68
 
68
69
  preInitHook?: PreInitHook;
69
70
 
71
+ /** Looks up a registered resource definition by fully-qualified kind.
72
+ * Set by the kernel; used for declared-throw-union checks. */
73
+ getDefinition?: (kind: string) => ResourceDefinition | undefined;
74
+
70
75
  readonly createInstance: InstanceFactory;
71
76
  readonly context: Record<string, unknown>;
72
77
  readonly secretValues: Set<string>;
@@ -81,6 +86,12 @@ export interface EvaluationContext {
81
86
  teardownResources(): Promise<void>;
82
87
  transientChild(context: Record<string, any>): EvaluationContext;
83
88
  invoke<TInputs>(kind: string, name: string, inputs: TInputs): Promise<any>;
89
+ invokeResolved<TInputs>(
90
+ kind: string,
91
+ name: string,
92
+ instance: ResourceInstance,
93
+ inputs: TInputs,
94
+ ): Promise<any>;
84
95
  run(name: string): Promise<void>;
85
96
  expand(value: unknown): unknown;
86
97
  expandWith(value: unknown, extraContext: Record<string, unknown>): unknown;
package/src/index.ts CHANGED
@@ -10,6 +10,7 @@ export * from "./module-context.js";
10
10
  export * from "./resource-context.js";
11
11
  export * from "./resource-instance.js";
12
12
  export * from "./resource-manifest.js";
13
+ export * from "./invoke-error.js";
13
14
  export * from "./runtime-error.js";
14
15
  export * from "./runtime-event.js";
15
16
  export * from "./runtime-resource.js";
@@ -0,0 +1,39 @@
1
+ const INVOKE_ERROR = Symbol.for("telo.InvokeError");
2
+
3
+ /**
4
+ * Structured, catchable error for invocables and runnables. Route handlers and
5
+ * Run.Sequence try/catch match on `code`; downstream renderers consume `data`.
6
+ *
7
+ * Use `isInvokeError` for recognition, not `instanceof` — dual-realm safe
8
+ * across pnpm hoist splits, registry modules, and future sandbox isolation.
9
+ */
10
+ export class InvokeError extends Error {
11
+ readonly code: string;
12
+ readonly data?: unknown;
13
+
14
+ constructor(code: string, message: string, data?: unknown) {
15
+ super(message);
16
+ this.name = "InvokeError";
17
+ this.code = code;
18
+ this.data = data;
19
+ // Set via defineProperty (not a class field initializer) so the marker is
20
+ // always present regardless of TS/runtime class-field semantics
21
+ // (useDefineForClassFields, Error-subclass quirks, etc.) and stays
22
+ // non-enumerable so JSON serialisation / CEL property access don't trip
23
+ // over it.
24
+ Object.defineProperty(this, INVOKE_ERROR, {
25
+ value: true,
26
+ enumerable: false,
27
+ writable: false,
28
+ configurable: false,
29
+ });
30
+ }
31
+ }
32
+
33
+ export function isInvokeError(err: unknown): err is InvokeError {
34
+ return (
35
+ typeof err === "object" &&
36
+ err !== null &&
37
+ (err as Record<PropertyKey, unknown>)[INVOKE_ERROR] === true
38
+ );
39
+ }
package/src/ref.ts CHANGED
@@ -48,7 +48,7 @@ export type Injected<T> = {
48
48
  /** Returns a schema node that emits `x-telo-ref` for buildReferenceFieldMap and carries
49
49
  * KindRef<T> as its TypeScript type. For TypeBox schemas use Type.Unsafe<KindRef<T>>(Ref(...)).
50
50
  *
51
- * @param ref Canonical ref string: "namespace/module-name#TypeName" or "kernel#TypeName" */
51
+ * @param ref Canonical ref string: "namespace/module-name#TypeName" or "telo#TypeName" */
52
52
  export const Ref = <T = ResourceInstance>(ref: string): KindRef<T> =>
53
53
  ({ "x-telo-ref": ref } as unknown as KindRef<T>);
54
54
 
@@ -1,8 +1,16 @@
1
1
  import { ControllerContext } from "./controller-context.js";
2
2
  import { EvaluationContext } from "./evaluation-context.js";
3
3
  import { ModuleContext } from "./module-context.js";
4
+ import { ResourceInstance } from "./resource-instance.js";
5
+ import { ResourceManifest } from "./resource-manifest.js";
4
6
  import { RuntimeResource } from "./runtime-resource.js";
5
7
 
8
+ export interface LoadOptions {
9
+ /** When true, `${{ }}` templates are replaced with CompiledValue wrappers
10
+ * so they can be evaluated at runtime. Leave unset for static analysis. */
11
+ compile?: boolean;
12
+ }
13
+
6
14
  export interface DataValidator {
7
15
  validate(data: any): void;
8
16
  isValid(data: any): boolean;
@@ -31,6 +39,12 @@ export interface ResourceContext extends ControllerContext {
31
39
  acquireHold(reason?: string): () => void;
32
40
  emitEvent(event: string, payload?: any): Promise<void>;
33
41
  invoke<TInputs>(kind: string, name: string, inputs: TInputs, options?: any): Promise<any>;
42
+ invokeResolved<TInputs>(
43
+ kind: string,
44
+ name: string,
45
+ instance: ResourceInstance,
46
+ inputs: TInputs,
47
+ ): Promise<any>;
34
48
  run(kind: string, name: string): Promise<void>;
35
49
  getResources(kind: string): RuntimeResource[];
36
50
  getResourcesByName(kind: string, name: string): RuntimeResource | null;
@@ -51,7 +65,16 @@ export interface ResourceContext extends ControllerContext {
51
65
  registerDefinition(definition: any): void;
52
66
  registerModuleImport(alias: string, targetModule: string, kinds: string[]): void;
53
67
  teardownResource(kind: string, name: string): Promise<void>;
68
+ /** Load a single module (its own file + `include`d partials). Use this when
69
+ * you need just the declaring file's manifests. */
70
+ loadModule(url: string, options?: LoadOptions): Promise<ResourceManifest[]>;
71
+ /** Load a module and follow its Telo.Import chain, returning the union of
72
+ * the module's manifests plus all transitively-imported Telo.Definition
73
+ * manifests. Use this when you need the full kind surface area visible from
74
+ * the module. */
75
+ loadManifests(url: string): Promise<ResourceManifest[]>;
54
76
  readonly moduleContext: ModuleContext;
77
+ readonly env: Record<string, string | undefined>;
55
78
  readonly stdin: NodeJS.ReadableStream;
56
79
  readonly stdout: NodeJS.WritableStream;
57
80
  readonly stderr: NodeJS.WritableStream;
@@ -2,6 +2,8 @@ export interface RuntimeDiagnostic {
2
2
  severity?: "error" | "warning";
3
3
  message: string;
4
4
  resource?: string;
5
+ kind?: string;
6
+ details?: string;
5
7
  code?: string;
6
8
  }
7
9
 
package/src/types.ts CHANGED
@@ -14,6 +14,22 @@ export interface ExecContext {
14
14
  [key: string]: any;
15
15
  }
16
16
 
17
+ export interface ThrowCodeSpec {
18
+ description: string;
19
+ data?: Record<string, any>;
20
+ }
21
+
22
+ /**
23
+ * Declared throw contract for a Telo.Invocable or Telo.Runnable definition.
24
+ * Codes-only (explicit contract) in Phase 1; `inherit` and `passthrough` land
25
+ * in Phase 2 together with the analyzer dataflow pass.
26
+ */
27
+ export interface ThrowsSpec {
28
+ codes?: Record<string, ThrowCodeSpec>;
29
+ inherit?: boolean;
30
+ passthrough?: boolean;
31
+ }
32
+
17
33
  export interface ResourceDefinition {
18
34
  kind: string;
19
35
  metadata: {
@@ -27,6 +43,8 @@ export interface ResourceDefinition {
27
43
  runtime: string;
28
44
  entry: string;
29
45
  }>;
46
+ /** Declared throw contract — only valid on Telo.Invocable / Telo.Runnable. */
47
+ throws?: ThrowsSpec;
30
48
  }
31
49
 
32
50
  /**
@@ -1,8 +0,0 @@
1
- import type { CapabilityDefinition } from "./types.js";
2
- /**
3
- * Factory that wires the declarative `expand` config on a CapabilityDefinition
4
- * into the `onManifest` and `onInvoke` lifecycle hooks. The kernel only ever
5
- * calls these hooks — it has no knowledge of the `expand` config.
6
- */
7
- export declare function createCapability(def: CapabilityDefinition): CapabilityDefinition;
8
- //# sourceMappingURL=capability-definition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capability-definition.d.ts","sourceRoot":"","sources":["../src/capability-definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,oBAAoB,CAwBhF"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Factory that wires the declarative `expand` config on a CapabilityDefinition
3
- * into the `onManifest` and `onInvoke` lifecycle hooks. The kernel only ever
4
- * calls these hooks — it has no knowledge of the `expand` config.
5
- */
6
- export function createCapability(def) {
7
- const compile = def.expand?.compile ?? [];
8
- const runtime = def.expand?.runtime ?? [];
9
- return {
10
- ...def,
11
- onManifest: compile.length
12
- ? (manifest, ctx) => ctx.expandPaths(manifest, compile, runtime)
13
- : def.onManifest,
14
- onInvoke: runtime.length
15
- ? async (instance, inputs, ctx) => {
16
- const expanded = ctx.moduleContext.expandPaths(inputs, runtime);
17
- return instance.invoke(expanded);
18
- }
19
- : def.onInvoke,
20
- };
21
- }
@@ -1,3 +0,0 @@
1
- import { Environment } from "@marcbachmann/cel-js";
2
- export declare const celEnvironment: Environment;
3
- //# sourceMappingURL=cel-environment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cel-environment.d.ts","sourceRoot":"","sources":["../src/cel-environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,cAAc,aAWvB,CAAC"}
@@ -1,13 +0,0 @@
1
- import { Environment } from "@marcbachmann/cel-js";
2
- export const celEnvironment = new Environment({ unlistedVariablesAreDyn: true })
3
- .registerFunction("join(list, string): string", (list, sep) => list.map(String).join(sep))
4
- .registerFunction("keys(map): list", (map) => {
5
- if (map instanceof Map)
6
- return [...map.keys()];
7
- return Object.keys(map);
8
- })
9
- .registerFunction("values(map): list", (map) => {
10
- if (map instanceof Map)
11
- return [...map.values()];
12
- return Object.values(map);
13
- });
@@ -1,13 +0,0 @@
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
@@ -1 +0,0 @@
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;CASzE"}
@@ -1,13 +0,0 @@
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(moduleCtx.source, Object.assign(Object.create(null), moduleCtx.context, execProps), moduleCtx.createInstance, moduleCtx.secretValues, moduleCtx.emit);
12
- }
13
- }