@telorun/kernel 0.57.0 → 0.58.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 (39) hide show
  1. package/dist/controllers/module/import-controller.d.ts.map +1 -1
  2. package/dist/controllers/module/import-controller.js +7 -3
  3. package/dist/controllers/module/import-controller.js.map +1 -1
  4. package/dist/controllers/resource-definition/resource-definition-controller.d.ts +1 -0
  5. package/dist/controllers/resource-definition/resource-definition-controller.d.ts.map +1 -1
  6. package/dist/controllers/resource-definition/resource-definition-controller.js +10 -1
  7. package/dist/controllers/resource-definition/resource-definition-controller.js.map +1 -1
  8. package/dist/evaluation-context.d.ts +57 -2
  9. package/dist/evaluation-context.d.ts.map +1 -1
  10. package/dist/evaluation-context.js +209 -8
  11. package/dist/evaluation-context.js.map +1 -1
  12. package/dist/kernel.d.ts.map +1 -1
  13. package/dist/kernel.js +6 -3
  14. package/dist/kernel.js.map +1 -1
  15. package/dist/manifest-schemas.d.ts +8 -0
  16. package/dist/manifest-schemas.d.ts.map +1 -1
  17. package/dist/manifest-schemas.js +6 -0
  18. package/dist/manifest-schemas.js.map +1 -1
  19. package/dist/module-context.d.ts +8 -0
  20. package/dist/module-context.d.ts.map +1 -1
  21. package/dist/module-context.js +20 -5
  22. package/dist/module-context.js.map +1 -1
  23. package/dist/observed-state.d.ts +94 -0
  24. package/dist/observed-state.d.ts.map +1 -0
  25. package/dist/observed-state.js +148 -0
  26. package/dist/observed-state.js.map +1 -0
  27. package/dist/resource-context.d.ts +50 -1
  28. package/dist/resource-context.d.ts.map +1 -1
  29. package/dist/resource-context.js +56 -12
  30. package/dist/resource-context.js.map +1 -1
  31. package/package.json +3 -3
  32. package/src/controllers/module/import-controller.ts +12 -3
  33. package/src/controllers/resource-definition/resource-definition-controller.ts +14 -0
  34. package/src/evaluation-context.ts +253 -8
  35. package/src/kernel.ts +5 -0
  36. package/src/manifest-schemas.ts +6 -0
  37. package/src/module-context.ts +19 -5
  38. package/src/observed-state.ts +210 -0
  39. package/src/resource-context.ts +55 -11
@@ -1 +1 @@
1
- {"version":3,"file":"resource-context.js","sourceRoot":"","sources":["../src/resource-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-context.js","sourceRoot":"","sources":["../src/resource-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telorun/kernel",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "description": "Telo Runtime - A lightweight, polyglot execution host.",
5
5
  "keywords": [
6
6
  "telo",
@@ -61,7 +61,7 @@
61
61
  "dependencies": {
62
62
  "@marcbachmann/cel-js": "^7.6.1",
63
63
  "@sinclair/typebox": "^0.34.48",
64
- "@telorun/analyzer": "0.45.0",
64
+ "@telorun/analyzer": "0.46.0",
65
65
  "@telorun/glob": "0.2.0",
66
66
  "@telorun/templating": "0.11.0",
67
67
  "ajv": "^8.17.1",
@@ -75,7 +75,7 @@
75
75
  "@types/tar-stream": "^3.1.3",
76
76
  "typescript": "^5.0.0",
77
77
  "vitest": "^2.1.8",
78
- "@telorun/sdk": "0.56.0"
78
+ "@telorun/sdk": "0.58.0"
79
79
  },
80
80
  "optionalDependencies": {
81
81
  "esbuild": "^0.28.1"
@@ -1,6 +1,7 @@
1
1
  import { AnalysisRegistry, DiagnosticSeverity, foldIntegrity, parseExportEntry, StaticAnalyzer } from "@telorun/analyzer";
2
2
  import type { ResourceInstance } from "@telorun/sdk";
3
3
  import { RuntimeError } from "@telorun/sdk";
4
+ import { publishedPropsOf } from "../../evaluation-context.js";
4
5
  import type { BuiltinControllerContext } from "../../internal-context.js";
5
6
  import { buildScopeConfig, type LoggingManifestBlock } from "../../logging/kernel-logging.js";
6
7
  import { ModuleContext } from "../../module-context.js";
@@ -301,9 +302,17 @@ export async function create(
301
302
  snapshot: async () => {
302
303
  const exported: Record<string, unknown> = {};
303
304
  for (const name of exportedResourceNames) {
304
- const inst = childCtx.getExported(name)?.instance;
305
- if (inst && typeof inst.snapshot === "function") {
306
- exported[name] = await Promise.resolve(inst.snapshot());
305
+ // Through the shared publication policy, not the raw snapshot: an
306
+ // exported instance's observed state stays withheld until it starts and
307
+ // is validated against its `status:` on this side of the boundary too.
308
+ const target = childCtx.getExported(name);
309
+ if (target?.instance) {
310
+ exported[name] = await publishedPropsOf(
311
+ target.kind,
312
+ name,
313
+ target.instance,
314
+ childCtx.getDefinition,
315
+ );
307
316
  }
308
317
  }
309
318
  return {
@@ -9,6 +9,7 @@ import { RuntimeError } from "@telorun/sdk";
9
9
  import {
10
10
  controllerBearingAncestor,
11
11
  effectiveAuthorSchema,
12
+ effectiveStatusSchema,
12
13
  hasOwnControllerOrTemplate,
13
14
  inheritedCapability,
14
15
  type DefResolver,
@@ -26,6 +27,7 @@ type ResourceDefinitionResource = RuntimeResource & {
26
27
  module?: string;
27
28
  };
28
29
  schema: Record<string, any>;
30
+ status?: Record<string, any>;
29
31
  capability?: string;
30
32
  extends?: string;
31
33
  base?: Record<string, any>;
@@ -77,6 +79,18 @@ class ResourceDefinition implements ResourceInstance {
77
79
  this.resource as ResourceDefinitionManifest,
78
80
  resolveDef,
79
81
  );
82
+ // Same for the observed-state contract: a child without `base:` merges its
83
+ // parent's `status:`, one with `base:` publishes the parent's unchanged.
84
+ // Stamped here, in the DEFINING library's scope, because an `extends` alias
85
+ // belongs to the file that declared it — a consumer that imports only the
86
+ // backend (the sanctioned "one import instead of two") has no alias for the
87
+ // abstract's library and would resolve the parent to nothing. Stamping also
88
+ // makes the folded schema a stable object, so the publication path's AJV
89
+ // validator cache hits instead of recompiling on every snapshot.
90
+ this.resource.status = effectiveStatusSchema(
91
+ this.resource as ResourceDefinitionManifest,
92
+ resolveDef,
93
+ );
80
94
  }
81
95
 
82
96
  // Inherited-controller delegation: a definition that `extends` a concrete
@@ -26,6 +26,11 @@ import {
26
26
  } from "@telorun/sdk";
27
27
  import { RuntimeError } from "@telorun/sdk";
28
28
  import { evalPathCovers } from "@telorun/analyzer";
29
+ import {
30
+ acceptReportedStatus,
31
+ buildPublishedProps,
32
+ diagnoseObservedStateAccess,
33
+ } from "./observed-state.js";
29
34
 
30
35
  export { resourceKey };
31
36
 
@@ -165,6 +170,70 @@ export function buildResolvedProperties(
165
170
  */
166
171
  const cancellationStore = new AsyncLocalStorage<InvokeContext>();
167
172
 
173
+ /**
174
+ * Instances whose `run()` has been dispatched. Reporting observed state before
175
+ * this is an error (see observed-state.ts).
176
+ *
177
+ * Keyed on the instance rather than on `(context, name)` because the context
178
+ * that STARTS a resource is not always the one that OWNS it: an importer's
179
+ * `targets:` can name a library's exported instance, and the library's own
180
+ * `ctx.setStatus()` — publishing into the context where its name lives — has to
181
+ * see that it started.
182
+ */
183
+ const startedInstances = new WeakSet<object>();
184
+
185
+ /**
186
+ * The last observed state each instance reported. Sticky: it stays until the
187
+ * resource is torn down, so a dispatch that reports nothing leaves the previous
188
+ * reading in place — a listener's bound address does not stop being true between
189
+ * calls. Keyed by instance for the same reason as `startedInstances`, and
190
+ * because a scope's per-run instances are distinct by construction, which is
191
+ * what keeps two concurrent runs from observing each other's readings.
192
+ */
193
+ const reportedStatus = new WeakMap<object, Record<string, unknown>>();
194
+
195
+ /**
196
+ * Instances whose `run()` has RETURNED. A long-lived Service never appears here
197
+ * — its `run()` stays pending for the process lifetime — which is exactly the
198
+ * distinction the reader needs: a Runnable that finished and reported nothing
199
+ * for a field it declares is a producer defect, while a Service that is still
200
+ * coming up is ordering, and telling those apart is not something the reader
201
+ * can do from the manifest.
202
+ */
203
+ const completedInstances = new WeakSet<object>();
204
+
205
+ /**
206
+ * The published value for an instance the caller resolved itself, rather than
207
+ * one reached by name through a context's own `resourceInstances`. The
208
+ * cross-module export path uses it: an importer surfaces a library's exported
209
+ * instances under `resources.<Alias>.<name>`, which crosses the boundary
210
+ * without passing through the owner's `resources` map — and must still carry the
211
+ * reading the instance reported, under the same rules.
212
+ *
213
+ * `kind` is already canonical (`<module>.<Kind>`) on that path, so the resolver
214
+ * needs no alias table.
215
+ */
216
+ export async function publishedPropsOf(
217
+ kind: string,
218
+ name: string,
219
+ instance: ResourceInstance,
220
+ getDefinition: ((kind: string) => ResourceDefinition | undefined) | undefined,
221
+ ): Promise<Record<string, unknown>> {
222
+ const snap =
223
+ typeof instance.snapshot === "function"
224
+ ? ((await Promise.resolve(instance.snapshot())) as Record<string, unknown> | undefined)
225
+ : undefined;
226
+ return buildPublishedProps(snap, {
227
+ kind,
228
+ name,
229
+ module: kind.split(".")[0],
230
+ statusSchema: getDefinition?.(kind)?.status,
231
+ status: reportedStatus.get(instance),
232
+ started: startedInstances.has(instance),
233
+ completed: completedInstances.has(instance),
234
+ });
235
+ }
236
+
168
237
  /**
169
238
  * The ambient dispatch context, for §7.2's automatic trace correlation: a record
170
239
  * emitted inside an active span carries that span's ids without the controller
@@ -194,6 +263,14 @@ function compileWalker(value: unknown): Walker {
194
263
  } catch (error) {
195
264
  const expr = compiled.source ? `\${{ ${compiled.source} }}` : "unknown expression";
196
265
  const msg = error instanceof Error ? error.message : String(error);
266
+ // Reading observed state that was never reported is its own failure with
267
+ // its own remedy, so it does not degrade into a bare "No such key".
268
+ const observed = compiled.source
269
+ ? describeObservedStateFailure(compiled.source, ctx, msg)
270
+ : null;
271
+ if (observed) {
272
+ throw new RuntimeError("ERR_OBSERVED_STATE_UNAVAILABLE", `${expr}: ${observed}`);
273
+ }
197
274
  const hint = compiled.source ? describeFailedAccess(compiled.source, ctx, msg) : null;
198
275
  const suffix = hint ? `\n ${hint}` : "";
199
276
  throw new Error(`Expression ${expr} failed: ${msg}${suffix}`);
@@ -334,8 +411,87 @@ export class EvaluationContext implements IEvaluationContext {
334
411
  return this._createInstance;
335
412
  }
336
413
 
337
- /** Called after init() when a resource snapshot is available. Overridden by ModuleContext. */
338
- protected onResourceSnapshotted(_name: string, _snap: Record<string, unknown>): void {}
414
+ /** Called after init() when a resource snapshot is available. Overridden by
415
+ * ModuleContext, and by a scope child (which keeps its own per-run map). */
416
+ protected onResourceSnapshotted(name: string, snap: Record<string, unknown>): void {
417
+ this.snapshotSink?.(name, snap);
418
+ }
419
+
420
+ /** Where published snapshots go for a context that has no `resources` map of
421
+ * its own — set by `createScopeHandle` on the per-run child so scope-local
422
+ * resources publish like any other. */
423
+ protected snapshotSink: ((name: string, snap: Record<string, unknown>) => void) | undefined;
424
+
425
+ /** Record that an instance has started. Republished so a read that arrives
426
+ * before the resource reports gets the "still running" message rather than
427
+ * the "never started" one. */
428
+ private async markStarted(name: string, instance: ResourceInstance): Promise<void> {
429
+ if (startedInstances.has(instance)) return;
430
+ startedInstances.add(instance);
431
+ await this.publishSnapshot(name);
432
+ }
433
+
434
+ /**
435
+ * Record what a resource observed and republish. Validated against the kind's
436
+ * `status:` here, at the point the claim is made, so an invalid report names
437
+ * the call that made it rather than surfacing at some later publication.
438
+ *
439
+ * Replaces rather than merges: this is the resource's observed state now. A
440
+ * declared field this call omits reads as missing, which is the truth — a
441
+ * sometimes-absent field is declared nullable and reported as `null`.
442
+ */
443
+ async setResourceStatus(name: string, status: Record<string, unknown>): Promise<void> {
444
+ const entry = this.resourceInstances.get(name) ?? this.createdInstances.get(name);
445
+ if (!entry) return;
446
+ const kind = entry.resource.kind as string;
447
+ if (!startedInstances.has(entry.instance)) {
448
+ throw new RuntimeError(
449
+ "ERR_OBSERVED_STATE_BEFORE_START",
450
+ `${kind} '${name}' reported observed state before it started. init() performs no I/O, so there is nothing observed to report there — call setStatus() from run(), or from a handler it reaches.`,
451
+ );
452
+ }
453
+ reportedStatus.set(
454
+ entry.instance,
455
+ acceptReportedStatus(status, { kind, name, statusSchema: this.statusSchemaOf(kind) }),
456
+ );
457
+ await this.publishSnapshot(name);
458
+ }
459
+
460
+ /** The kind's effective `status:` — already folded through `extends` and
461
+ * stamped onto the definition at registration, in the scope that DECLARED it
462
+ * (`resource-definition-controller`). Only the kind's own alias is resolved
463
+ * here, in the reading module's scope, which is where it was written. */
464
+ private statusSchemaOf(kind: string): Record<string, any> | undefined {
465
+ const def = this.getDefinition?.(this.resolveKindSafe(kind)) ?? this.getDefinition?.(kind);
466
+ return def?.status;
467
+ }
468
+
469
+ /**
470
+ * Re-read a resource's `snapshot()` and republish it, joined with whatever
471
+ * observed state the resource has reported. The single publication path — the
472
+ * post-init capture, the post-run publication, the post-invoke refresh and
473
+ * every `setStatus()` all land here.
474
+ */
475
+ async publishSnapshot(name: string): Promise<void> {
476
+ const entry = this.resourceInstances.get(name) ?? this.createdInstances.get(name);
477
+ if (!entry?.instance.snapshot) return;
478
+ const snap = (await Promise.resolve(entry.instance.snapshot())) as
479
+ | Record<string, unknown>
480
+ | undefined;
481
+ const kind = entry.resource.kind as string;
482
+ this.onResourceSnapshotted(
483
+ name,
484
+ buildPublishedProps(snap, {
485
+ kind,
486
+ name,
487
+ module: entry.resource.metadata?.module as string | undefined,
488
+ statusSchema: this.statusSchemaOf(kind),
489
+ status: reportedStatus.get(entry.instance),
490
+ started: startedInstances.has(entry.instance),
491
+ completed: completedInstances.has(entry.instance),
492
+ }),
493
+ );
494
+ }
339
495
 
340
496
  get context(): Record<string, unknown> {
341
497
  return this._context;
@@ -425,6 +581,7 @@ export class EvaluationContext implements IEvaluationContext {
425
581
  this.emit,
426
582
  );
427
583
  child.resolveImportedInstance = (alias, name) => this.resolveImportedInstance(alias, name);
584
+ child.kindResolver = (kind) => this.resolveKindSafe(kind);
428
585
  return this.spawnChild(child);
429
586
  }
430
587
 
@@ -528,10 +685,13 @@ export class EvaluationContext implements IEvaluationContext {
528
685
  );
529
686
  }
530
687
  if (instance.init) await instance.init(ctx);
531
- if (instance.snapshot) {
532
- const snap = await Promise.resolve(instance.snapshot());
533
- this.onResourceSnapshotted(name, (snap as Record<string, unknown>) ?? {});
534
- }
688
+ // Publish BEFORE registering: publication can fail (a kind returning
689
+ // the reserved `status` key without declaring it, a report that does
690
+ // not match `status:`), and a resource that failed must not be left
691
+ // reachable through `getInstance` / Phase 5 injection / teardown.
692
+ // `publishSnapshot` looks the instance up in `createdInstances` too,
693
+ // so it resolves fine from here.
694
+ await this.publishSnapshot(name);
535
695
  this.resourceInstances.set(name, { resource, instance });
536
696
  this.createdInstances.delete(name);
537
697
  errors.delete(name);
@@ -639,6 +799,18 @@ export class EvaluationContext implements IEvaluationContext {
639
799
  parent.emit,
640
800
  ),
641
801
  );
802
+ child.kindResolver = (kind) => parent.resolveKindSafe(kind);
803
+
804
+ // Per-run map of the scope's OWN resources. Fresh per run, so two
805
+ // concurrent runs of the same sequence never observe each other's.
806
+ // The enclosing module's map is layered in at read time, not copied
807
+ // here: `setResource` replaces `_resources` wholesale on every publish,
808
+ // so a snapshot taken at scope entry would go stale the moment an outer
809
+ // resource republished (a post-invoke refresh, a later boot target).
810
+ const scopeLocal = new Map<string, Record<string, unknown>>();
811
+ child.snapshotSink = (name, snap) => {
812
+ scopeLocal.set(name, snap);
813
+ };
642
814
 
643
815
  // Propagate injection hook: extend getInstance to also resolve parent singleton instances.
644
816
  if (parent.preInitHook) {
@@ -684,6 +856,22 @@ export class EvaluationContext implements IEvaluationContext {
684
856
  `Resource '${name}' not found in scope or outer context. Available scoped: ${[...child.resourceInstances.keys()].join(", ")}`,
685
857
  );
686
858
  },
859
+ async run(name: string): Promise<void> {
860
+ // Through the child context's chokepoint, so a scope target is
861
+ // traced, records that it started, and publishes its snapshot —
862
+ // exactly like a boot target. A scope target is always a
863
+ // with-resource, so it lives in the child.
864
+ await child.run(name);
865
+ },
866
+ get resources(): Record<string, unknown> {
867
+ // Merged on read so the outer half stays live; scope-local names
868
+ // win, matching `getInstance`'s order so CEL and `!ref` agree.
869
+ const merged: Record<string, unknown> = {
870
+ ...((parent._context.resources as Record<string, unknown> | undefined) ?? {}),
871
+ };
872
+ for (const [name, snap] of scopeLocal) merged[name] = snap;
873
+ return merged;
874
+ },
687
875
  };
688
876
  return await fn(scope);
689
877
  } finally {
@@ -716,6 +904,13 @@ export class EvaluationContext implements IEvaluationContext {
716
904
 
717
905
  for (const [key, { resource, instance }] of this.teardownOrder()) {
718
906
  const label = `${resource.kind}.${resource.metadata.name}`;
907
+ // A reading belongs to the run that produced it. The WeakMap would drop it
908
+ // with the instance anyway; clearing here also covers an instance something
909
+ // else still holds, so a torn-down resource can never keep publishing what
910
+ // it observed in a previous life.
911
+ reportedStatus.delete(instance);
912
+ startedInstances.delete(instance);
913
+ completedInstances.delete(instance);
719
914
  try {
720
915
  if (instance.teardown) await instance.teardown();
721
916
  } catch (err) {
@@ -979,6 +1174,10 @@ export class EvaluationContext implements IEvaluationContext {
979
1174
  // `run()` — side effects only, no outputs. Prefer `invoke()` when both
980
1175
  // exist so a dual-capability instance (e.g. Run.Sequence) keeps invoke
981
1176
  // semantics and returns its `steps`/`outputs`.
1177
+ // A pure Runnable reached through an `invoke:` slot runs exactly as it
1178
+ // would from a `targets:` list, so it starts here too — its observed state
1179
+ // must not stay withheld just because the dispatch slot was a different one.
1180
+ if (typeof instance.invoke !== "function") await this.markStarted(name, instance);
982
1181
  const call = () =>
983
1182
  typeof instance.invoke === "function"
984
1183
  ? (instance.invoke as (i: any, c?: InvokeContext) => any)(inputs as any, invokeCtx)
@@ -986,6 +1185,7 @@ export class EvaluationContext implements IEvaluationContext {
986
1185
  const outputs = await (invokeCtx === ambient
987
1186
  ? call()
988
1187
  : cancellationStore.run(invokeCtx, call));
1188
+ if (typeof instance.invoke !== "function") completedInstances.add(instance);
989
1189
  await this.emit(`${name}.Invoked`, span("end", "ok", { inputs, outputs }));
990
1190
  return outputs;
991
1191
  } catch (err) {
@@ -1047,9 +1247,15 @@ export class EvaluationContext implements IEvaluationContext {
1047
1247
  * kind unchanged. A typed seam (overridden in `ModuleContext`), matching the
1048
1248
  * `traceRootScope()` pattern, rather than reaching across the boundary. */
1049
1249
  protected resolveKindSafe(kind: string): string {
1050
- return kind;
1250
+ return this.kindResolver?.(kind) ?? kind;
1051
1251
  }
1052
1252
 
1253
+ /** Alias-kind resolver inherited from the context that spawned this one. A
1254
+ * scope / template child holds no import table of its own, but its resources
1255
+ * are written with the declaring module's aliases (`Observed.Listener`), so
1256
+ * definition lookups there have to go through the parent's table. */
1257
+ kindResolver: ((kind: string) => string) | undefined;
1258
+
1053
1259
  private capabilityOf(kind: string): string | undefined {
1054
1260
  const resolved = this.resolveKindSafe(kind);
1055
1261
  return this.getDefinition?.(resolved)?.capability ?? this.getDefinition?.(kind)?.capability;
@@ -1224,6 +1430,12 @@ export class EvaluationContext implements IEvaluationContext {
1224
1430
 
1225
1431
  if (tracing) await this.emit(`${name}.Running`, span("start", undefined, {}));
1226
1432
 
1433
+ // Marked before the call, not after: a Service's `run()` stays pending for
1434
+ // the process lifetime, and reporting what it discovered while listening is
1435
+ // the whole point — `ctx.setStatus()` is an error until the resource counts
1436
+ // as started, so this has to happen first.
1437
+ await this.markStarted(name, instance);
1438
+
1227
1439
  try {
1228
1440
  // Runnable: run inside the ALS scope so nested invokes inherit the token and
1229
1441
  // trace id (skip the redundant `run` when the token is already ambient).
@@ -1231,6 +1443,10 @@ export class EvaluationContext implements IEvaluationContext {
1231
1443
  // its long-lived async work does not capture this scope.
1232
1444
  const call = () => (instance.run as (c?: InvokeContext) => Promise<void>)(invokeCtx);
1233
1445
  await (isService || invokeCtx === ambient ? call() : cancellationStore.run(invokeCtx, call));
1446
+ // A one-shot Runnable that discovered something during run() publishes it
1447
+ // without an explicit call; a Service never reaches this until teardown.
1448
+ completedInstances.add(instance);
1449
+ await this.publishSnapshot(name);
1234
1450
  await this.emit(`${name}.Run`, span("end", "ok", {}));
1235
1451
  } catch (err) {
1236
1452
  if (isCancellationError(err)) {
@@ -1438,6 +1654,35 @@ export function describeFailedAccess(
1438
1654
  ctx: unknown,
1439
1655
  msg: string,
1440
1656
  ): string | null {
1657
+ const failure = locateFailedAccess(source, ctx, msg);
1658
+ if (!failure) return null;
1659
+ return `at ${failure.walked}: ${describeMissingAccess(failure.container, failure.missingKey)}`;
1660
+ }
1661
+
1662
+ /**
1663
+ * The observed-state message for a failed access, or null when the failure has
1664
+ * nothing to do with observed state (the caller then falls back to the generic
1665
+ * enrichment above). See `observed-state.ts` for why "has not started" and
1666
+ * "started but reported nothing" are two different messages.
1667
+ */
1668
+ export function describeObservedStateFailure(
1669
+ source: string,
1670
+ ctx: unknown,
1671
+ msg: string,
1672
+ ): string | null {
1673
+ const failure = locateFailedAccess(source, ctx, msg);
1674
+ if (!failure) return null;
1675
+ return diagnoseObservedStateAccess(failure.container, failure.missingKey);
1676
+ }
1677
+
1678
+ /** Walk a dotted CEL access path against the activation and stop at the node
1679
+ * whose key was missing. Null when the error isn't a key-access failure, the
1680
+ * source isn't a plain access path, or the path doesn't match the activation. */
1681
+ function locateFailedAccess(
1682
+ source: string,
1683
+ ctx: unknown,
1684
+ msg: string,
1685
+ ): { container: unknown; missingKey: string; walked: string } | null {
1441
1686
  const m = /^No such key:\s*(\S+)/.exec(msg);
1442
1687
  if (!m) return null;
1443
1688
  const missingKey = m[1];
@@ -1463,7 +1708,7 @@ export function describeFailedAccess(
1463
1708
  !(tok.name in (current as Record<string, unknown>))
1464
1709
  ) {
1465
1710
  if (tok.name !== missingKey) return null;
1466
- return `at ${walked.join("")}: ${describeMissingAccess(current, missingKey)}`;
1711
+ return { container: current, missingKey, walked: walked.join("") };
1467
1712
  }
1468
1713
  current = (current as Record<string, unknown>)[tok.name];
1469
1714
  walked.push("." + tok.name);
package/src/kernel.ts CHANGED
@@ -1030,6 +1030,7 @@ export class Kernel implements IKernel {
1030
1030
  resource: ResourceManifest,
1031
1031
  args?: ParsedArgs,
1032
1032
  ownerPrefix = "",
1033
+ owningContext?: IEvaluationContext,
1033
1034
  ): ResourceContext {
1034
1035
  return new ResourceContextImpl(
1035
1036
  this,
@@ -1042,6 +1043,7 @@ export class Kernel implements IKernel {
1042
1043
  this.stderr,
1043
1044
  args,
1044
1045
  ownerPrefix,
1046
+ owningContext ?? moduleContext,
1045
1047
  );
1046
1048
  }
1047
1049
 
@@ -1189,6 +1191,9 @@ export class Kernel implements IKernel {
1189
1191
  processedResource,
1190
1192
  parsedArgs,
1191
1193
  evalContext.ownerPrefix,
1194
+ // Snapshot publication targets the context that OWNS the instance — for a
1195
+ // `with:`-scoped resource that is the per-run scope child, not the module.
1196
+ evalContext,
1192
1197
  );
1193
1198
  const instance = await controller.create(processedResource, ctx);
1194
1199
  if (!instance) return null;
@@ -1,5 +1,8 @@
1
1
  import AjvModule from "ajv";
2
2
  import addFormats from "ajv-formats";
3
+ // One definition of the `status:` block's shape, shared with `telo check` — the
4
+ // `required:` restriction is reported by the analyzer, which can name the fix.
5
+ import { OBSERVED_STATE_SCHEMA } from "@telorun/analyzer";
3
6
  const Ajv = AjvModule.default ?? AjvModule;
4
7
 
5
8
  // Re-export the shared ResourceRef fragment from the templating package
@@ -74,6 +77,7 @@ const baseDefinition = {
74
77
  capability: { type: "string" },
75
78
  extends: { type: "string", pattern: EXTENDS_ALIAS_PATTERN },
76
79
  schema: { type: "object", additionalProperties: true },
80
+ status: OBSERVED_STATE_SCHEMA,
77
81
  controllers: { type: "array", items: { type: "string" } },
78
82
  throws: throwsSchema,
79
83
  },
@@ -157,6 +161,8 @@ export const ResourceAbstractSchema = {
157
161
  metadata: metadataSchema,
158
162
  capability: { type: "string" },
159
163
  schema: { type: "object", additionalProperties: true },
164
+ // A contract may mandate what its implementations report.
165
+ status: OBSERVED_STATE_SCHEMA,
160
166
  },
161
167
  not: {
162
168
  anyOf: [{ required: ["controllers"] }, { required: ["throws"] }],
@@ -219,6 +219,21 @@ export class ModuleContext extends EvaluationContext implements IModuleContext {
219
219
  this.setResource(name, snap);
220
220
  }
221
221
 
222
+ /**
223
+ * A cross-module exported instance has no entry of its own here — it surfaces
224
+ * under `resources.<alias>.<name>`, published by the `Telo.Import` that owns
225
+ * it. So republishing such a name means republishing that import, which is
226
+ * what makes an exported service's observed state readable once the IMPORTER's
227
+ * `targets:` starts it.
228
+ */
229
+ override async publishSnapshot(name: string): Promise<void> {
230
+ await super.publishSnapshot(name);
231
+ if (this.resourceInstances.has(name)) return;
232
+ for (const [alias, scope] of this.importedScopes) {
233
+ if (scope.names.has(name)) await super.publishSnapshot(alias);
234
+ }
235
+ }
236
+
222
237
  /**
223
238
  * Register an imported module under the given alias, gated to the kind names it
224
239
  * exports (its `exports.kinds`). Only listed kinds resolve; an empty list exports
@@ -493,11 +508,10 @@ export class ModuleContext extends EvaluationContext implements IModuleContext {
493
508
  ctx?: InvokeContext,
494
509
  ): Promise<any> {
495
510
  const result = await super.invoke(kind, name, inputs, ctx);
496
- const entry = this.resourceInstances.get(name);
497
- if (entry && typeof (entry.instance as any).snapshot === "function") {
498
- const snap = await Promise.resolve((entry.instance as any).snapshot());
499
- this.setResource(name, snap as Record<string, unknown>);
500
- }
511
+ // Same publication path as the post-init capture and `setStatus()`:
512
+ // one shape, one target, so a declared `status:` is a guarantee on every
513
+ // path rather than on some of them.
514
+ await this.publishSnapshot(name);
501
515
  return result;
502
516
  }
503
517