@tangle-network/agent-runtime 0.116.0 → 0.117.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 (81) hide show
  1. package/README.md +7 -1
  2. package/dist/{activation-DuqQhee6.js → activation-BZ2FyX0O.js} +3 -3
  3. package/dist/{activation-DuqQhee6.js.map → activation-BZ2FyX0O.js.map} +1 -1
  4. package/dist/agent.d.ts +3 -64
  5. package/dist/agent.js +5 -207
  6. package/dist/agent.js.map +1 -1
  7. package/dist/{analyst-loop-BoNIG2hA.js → analyst-loop-DvSciOfB.js} +2 -2
  8. package/dist/{analyst-loop-BoNIG2hA.js.map → analyst-loop-DvSciOfB.js.map} +1 -1
  9. package/dist/analyst-loop.js +1 -1
  10. package/dist/candidate-execution/index.d.ts +3 -3
  11. package/dist/candidate-execution/index.js +5 -5
  12. package/dist/{candidate-execution-CfpJrd3o.js → candidate-execution-PX61zXd2.js} +4 -4
  13. package/dist/{candidate-execution-CfpJrd3o.js.map → candidate-execution-PX61zXd2.js.map} +1 -1
  14. package/dist/{environment-provider-CWsRh6Uz.d.ts → environment-provider-CTZjdIUg.d.ts} +298 -32
  15. package/dist/{environment-provider-CCaEhA-l.js → environment-provider-CzcEyRL7.js} +140 -31
  16. package/dist/environment-provider-CzcEyRL7.js.map +1 -0
  17. package/dist/environment-provider.d.ts +1 -1
  18. package/dist/environment-provider.js +1 -1
  19. package/dist/{improvement-cycle-C1cmjvPD.js → improvement-cycle-Bcqz8rZI.js} +160 -19
  20. package/dist/improvement-cycle-Bcqz8rZI.js.map +1 -0
  21. package/dist/{index-CYkDeM5L.d.ts → index-BHSYaWrC.d.ts} +3 -3
  22. package/dist/{index-DcLMNnG5.d.ts → index-BTUG4Xln.d.ts} +6 -6
  23. package/dist/{index-COumPQka.d.ts → index-DPWJxSRa.d.ts} +847 -275
  24. package/dist/{index-C-FYUuFG.d.ts → index-X2YwyWkc.d.ts} +2 -2
  25. package/dist/index.d.ts +8 -8
  26. package/dist/index.js +12 -12
  27. package/dist/intelligence.d.ts +8 -7
  28. package/dist/intelligence.js +15 -9
  29. package/dist/intelligence.js.map +1 -1
  30. package/dist/kernel.d.ts +3 -3
  31. package/dist/kernel.js +8 -8
  32. package/dist/{knowledge-DOzbywZT.js → knowledge-CDlrayRc.js} +7 -7
  33. package/dist/knowledge-CDlrayRc.js.map +1 -0
  34. package/dist/knowledge.d.ts +1 -1
  35. package/dist/knowledge.js +1 -1
  36. package/dist/{loop-runner-bin-BuQjc5DR.js → loop-runner-bin-BxhhDtmG.js} +4 -4
  37. package/dist/{loop-runner-bin-BuQjc5DR.js.map → loop-runner-bin-BxhhDtmG.js.map} +1 -1
  38. package/dist/{loop-runner-bin-BFrhPLKt.d.ts → loop-runner-bin-oyL7it5O.d.ts} +3 -3
  39. package/dist/loop-runner-bin.d.ts +1 -1
  40. package/dist/loop-runner-bin.js +1 -1
  41. package/dist/mcp/bin.js +43 -10
  42. package/dist/mcp/bin.js.map +1 -1
  43. package/dist/mcp/index.d.ts +3 -43
  44. package/dist/mcp/index.js +5 -204
  45. package/dist/mcp/index.js.map +1 -1
  46. package/dist/{openai-tools-_Wyp4udO.js → openai-tools-CO9X36zy.js} +2 -2
  47. package/dist/{openai-tools-_Wyp4udO.js.map → openai-tools-CO9X36zy.js.map} +1 -1
  48. package/dist/{prepare-BHQBb02e.js → prepare-BbI6qGOW.js} +5 -2
  49. package/dist/prepare-BbI6qGOW.js.map +1 -0
  50. package/dist/primeintellect/index.d.ts +1 -1
  51. package/dist/{protected-model-port-BP6Z4eau.d.ts → protected-model-port-B0yXMpLL.d.ts} +10 -2
  52. package/dist/{protected-model-port-DqAH1Z2M.js → protected-model-port-COnyZfML.js} +2 -2
  53. package/dist/{protected-model-port-DqAH1Z2M.js.map → protected-model-port-COnyZfML.js.map} +1 -1
  54. package/dist/{runtime-Ut1pkd2n.js → runtime-Ce39zfqn.js} +145 -53
  55. package/dist/runtime-Ce39zfqn.js.map +1 -0
  56. package/dist/{sandbox-events-DeI5xX8P.js → sandbox-events-Yhd1GYWl.js} +4 -2
  57. package/dist/sandbox-events-Yhd1GYWl.js.map +1 -0
  58. package/dist/spawn-journal-B_mu_oH2.js +857 -0
  59. package/dist/spawn-journal-B_mu_oH2.js.map +1 -0
  60. package/dist/{structural-rollout-CVY_0hJp.js → structural-rollout-DLwW69R4.js} +4 -4
  61. package/dist/structural-rollout-DLwW69R4.js.map +1 -0
  62. package/dist/{supervise-BUR9ByF7.js → supervise-U7_K5yuV.js} +2598 -821
  63. package/dist/supervise-U7_K5yuV.js.map +1 -0
  64. package/dist/{supervisor-BBbPBXpe.js → supervisor-CAXiCKnX.js} +2808 -973
  65. package/dist/supervisor-CAXiCKnX.js.map +1 -0
  66. package/dist/testing.js +98 -76
  67. package/dist/testing.js.map +1 -1
  68. package/dist/{workspace-archive-DXzJq7WP.js → workspace-archive-CqPIijFA.js} +2 -2
  69. package/dist/{workspace-archive-DXzJq7WP.js.map → workspace-archive-CqPIijFA.js.map} +1 -1
  70. package/package.json +1 -1
  71. package/dist/environment-provider-CCaEhA-l.js.map +0 -1
  72. package/dist/improvement-cycle-C1cmjvPD.js.map +0 -1
  73. package/dist/knowledge-DOzbywZT.js.map +0 -1
  74. package/dist/prepare-BHQBb02e.js.map +0 -1
  75. package/dist/runtime-Ut1pkd2n.js.map +0 -1
  76. package/dist/sandbox-events-DeI5xX8P.js.map +0 -1
  77. package/dist/spawn-journal-DCPbicXB.js +0 -457
  78. package/dist/spawn-journal-DCPbicXB.js.map +0 -1
  79. package/dist/structural-rollout-CVY_0hJp.js.map +0 -1
  80. package/dist/supervise-BUR9ByF7.js.map +0 -1
  81. package/dist/supervisor-BBbPBXpe.js.map +0 -1
@@ -2,7 +2,7 @@ import { d as AgentTaskStatus, o as AgentRuntimeEvent, x as RuntimeStreamEvent }
2
2
  import { l as RuntimeHooks } from "./runtime-hooks-sbRpjStq.js";
3
3
  import { E as SandboxClient, v as LoopTokenUsage, y as LoopTraceEmitter } from "./types-DnNGJ5Gz.js";
4
4
  import { ControlEvalResult, DefaultVerdict, KnowledgeReadinessReport, KnowledgeRequirement, ToolSpan } from "@tangle-network/agent-eval";
5
- import { AgentProfile as AgentProfile$1, AgentProfileValidationResult } from "@tangle-network/agent-interface";
5
+ import { AgentProfile as AgentProfile$1, AgentProfileValidationResult, Sha256Digest } from "@tangle-network/agent-interface";
6
6
  import { BackendType, CreateSandboxOptions, Sandbox } from "@tangle-network/sandbox";
7
7
  import { AgentEnvironment, AgentEnvironmentCapabilities, AgentEnvironmentCapabilities as AgentEnvironmentCapabilities$1, AgentEnvironmentEvent, AgentEnvironmentProvider, AgentEnvironmentProvider as AgentEnvironmentProvider$1, AgentEnvironmentQuery, AgentEnvironmentStatus, AgentEnvironmentSummary, AgentProfileRef, AgentProfileRef as AgentProfileRef$1, AgentSession, AgentSessionRef, AgentSessionStatus, AgentTurnInput, AgentTurnInput as AgentTurnInput$1, AgentTurnResult, CheckpointRef, CheckpointRequest, CreateAgentEnvironmentInput, CreateAgentEnvironmentInput as CreateAgentEnvironmentInput$1, ExecRequest, ExecResult, ForkRequest, PlacementInfo, ResourceRequest, WorkspaceRequest } from "@tangle-network/agent-interface/environment-provider";
8
8
  //#region src/runtime/supervise/progress.d.ts
@@ -450,6 +450,26 @@ interface OtelAttribute {
450
450
  boolValue?: boolean;
451
451
  };
452
452
  }
453
+ /**
454
+ * Create an exporter that APPENDS spans to a local OpenInference-JSONL file, one complete span per
455
+ * line, instead of posting them to a collector.
456
+ *
457
+ * Why this exists beside {@link createOtelExporter}: that one needs an OTLP endpoint, so a run on a
458
+ * laptop, in CI, or inside a sandbox with no collector emits nothing and its per-turn shape is
459
+ * simply lost. The journal records the TREE (who spawned whom, what settled, what it spent); it
460
+ * does not record what happened inside a turn. A run whose tree is readable but whose turns are not
461
+ * is exactly the state that made an observability gap invisible until someone went looking.
462
+ *
463
+ * The line shape is the one `@tangle-network/traces` reads (`spans.otlp.jsonl`) and is a standard
464
+ * OpenInference representation, so the same file feeds any OpenInference tool with no conversion:
465
+ * snake_case identity fields, ISO-8601 times, `parent_span_id` empty at the root, and attributes as
466
+ * a plain object rather than OTLP's key/value array.
467
+ *
468
+ * Appends synchronously per span so a killed process keeps every span it had already finished —
469
+ * matching the spawn journal's durability posture, since a trace that only survives a clean exit is
470
+ * useless for the runs you most want to look at.
471
+ */
472
+ declare function createOpenInferenceFileExporter(filePath: string): OtelExporter;
453
473
  /**
454
474
  * Create an OTEL exporter. Returns undefined when no endpoint is configured.
455
475
  */
@@ -675,6 +695,12 @@ interface WaitOpts {
675
695
  interface Agent<Task, Out> {
676
696
  readonly name: string;
677
697
  act(task: Task, scope: Scope<Out>): Promise<Out>;
698
+ /**
699
+ * Optional manager inbox. A parent or attached `RootHandle` uses this to deliver the same raw
700
+ * down-message accepted by executor inboxes. Return `false` when the manager has no live receive
701
+ * path; returning `true` means the message was accepted for the current manager session.
702
+ */
703
+ deliver?(msg: unknown): void | boolean;
678
704
  }
679
705
  /**
680
706
  * The leaf runtime — ONE open interface, not a closed union. `execute` returns a
@@ -687,16 +713,17 @@ interface Agent<Task, Out> {
687
713
  * Built-in implementations (in `runtime.ts`, NOT variants here): router/inline (a direct
688
714
  * Router/HTTP inference call, no box), sandbox (COMPOSES `runAgentRounds` as a leaf, forwarding
689
715
  * PR #150's optional `lineage` passthrough — does NOT reinvent checkpoint/fork), cli
690
- * (Halo/RLM subprocess; `budgetExempt`, excluded from equal-k by construction). A user's
716
+ * (Halo/RLM subprocess; `budgetExempt`, refused by budgeted supervision). A user's
691
717
  * own agent (mastra/agno/raw HTTP/anything) is first-class by implementing this interface.
692
718
  */
693
719
  interface Executor<Out> {
694
720
  /** Stable runtime tag for traces + the equal-k exemption check. */
695
721
  readonly runtime: Runtime;
696
722
  /**
697
- * When true, this executor's spend is NOT metered against the conserved pool and its
698
- * iterations are excluded from the equal-k assertion (a `cli` subprocess without
699
- * token accounting). Fail-loud everywhere else: a metered executor MUST report usage.
723
+ * When true, this executor cannot report the usage a conserved pool would need (for example, a
724
+ * subscription CLI with no token receipt). `Executor` can still be used directly, but `Scope`
725
+ * refuses it before `execute` so unknown compute can never appear as measured zero in a
726
+ * supervised or equal-resource run. A metered executor MUST report usage.
700
727
  */
701
728
  readonly budgetExempt?: boolean;
702
729
  /**
@@ -709,10 +736,10 @@ interface Executor<Out> {
709
736
  * Optional inbox: receive an out-of-band message from the driver mid-run (the `send`/`steer_agent`
710
737
  * verb). A streaming executor drains pending messages between turns and folds them into the next
711
738
  * step (a steer / interrupt / resume). A one-shot executor that can't be steered mid-flight omits
712
- * this; `Scope.send` then returns `false` for it. Never throws — a malformed message is the
713
- * executor's to ignore.
739
+ * this; `Scope.send` then returns `false` for it. Never throws — an inbox that rejects a malformed
740
+ * message returns `false`, and that refusal propagates to the caller.
714
741
  */
715
- deliver?(msg: unknown): void;
742
+ deliver?(msg: unknown): void | boolean;
716
743
  /**
717
744
  * Optional LIVE progress: what this worker is doing RIGHT NOW, read synchronously and
718
745
  * cheaply while `execute` is still streaming. The scope already derives activity timing,
@@ -751,6 +778,15 @@ interface Executor<Out> {
751
778
  verdict?: DefaultVerdict;
752
779
  spent: Spend;
753
780
  };
781
+ /**
782
+ * Optional accounting split for recursive executors.
783
+ * `reported` is the child-work spend written on this node's settlement; `reservation` is the
784
+ * whole amount reconciled against this node's parent reservation.
785
+ * They differ when a driver owns a nested allocation: its child work and own inference consume
786
+ * that allocation together, while the journal keeps those two categories separate.
787
+ * Valid after `execute` resolves or throws; ordinary leaf executors omit it.
788
+ */
789
+ accounting?(): ExecutorAccounting | undefined;
754
790
  /**
755
791
  * A driver-executor's OWN-inference subtree total (rolled up from its nested tree's `metered`
756
792
  * events) — the parent scope journals it as a `metered` event for this node on settle, on BOTH
@@ -761,6 +797,24 @@ interface Executor<Out> {
761
797
  */
762
798
  metered?(): Spend | undefined;
763
799
  }
800
+ /** Why Runtime cannot provide structured tool-call evidence for one settled execution. */
801
+ type WorkerTraceUnavailableReason = 'execution-did-not-start' | 'executor-did-not-expose-trace-source' | 'trace-source-unavailable' | 'no-tool-spans-captured' | 'invalid-tool-spans' | 'trace-collection-failed' | 'trace-persistence-failed' | 'legacy-settlement-without-trace-evidence' | 'not-an-executor';
802
+ /** Durable proof of a worker's structured tool trace, or the exact reason it is unavailable. */
803
+ type WorkerTraceEvidence = {
804
+ readonly status: 'available';
805
+ /** Content-addressed pointer to a persisted `WorkerToolTraceArtifact`. */
806
+ readonly traceRef: string;
807
+ readonly spanCount: number;
808
+ } | {
809
+ readonly status: 'unavailable';
810
+ readonly reason: WorkerTraceUnavailableReason;
811
+ };
812
+ /** Split used by a recursive executor when journaled child work differs from the full amount
813
+ * reconciled against its parent reservation. */
814
+ interface ExecutorAccounting {
815
+ readonly reported: Spend;
816
+ readonly reservation: Spend;
817
+ }
764
818
  /** Terminal artifact of a one-shot `Executor.execute`. */
765
819
  interface ExecutorResult<Out> {
766
820
  outRef: string;
@@ -799,11 +853,12 @@ type UsageEvent = {
799
853
  * External executors can register additional runtime strings without widening this type. */
800
854
  type Runtime = 'router' | 'inline' | 'sandbox' | 'cli' | (string & {});
801
855
  /**
802
- * `AgentProfile` does NOT carry a `harness`/backend field `harness` lives on the
803
- * sandbox SDK's `BackendConfig`, not the portable profile. So an agent is mapped to its
804
- * executor through this MINIMAL wrapper, never by fabricating a field onto `AgentProfile`.
856
+ * `AgentProfile.harness` is a portable preference; this wrapper records the executor decision for
857
+ * one concrete run. A caller may honor the preference, override it for a comparison cell, or supply
858
+ * an executor directly, without changing the profile's behavioral identity.
805
859
  *
806
860
  * Resolution (in `runtime.ts`):
861
+ * - `executorFactory` present → BYO: build it after admission with the live context.
807
862
  * - `executor` present → BYO: use it verbatim (a user's own `Executor`).
808
863
  * - `harness === null` → router/inline: a direct Router call, no box.
809
864
  * - `harness` is a `BackendType` → sandbox: compose `runAgentRounds` against `profile` on that backend.
@@ -813,9 +868,121 @@ interface AgentSpec {
813
868
  readonly profile: AgentProfile$1;
814
869
  /** `null` selects router/inline; a `BackendType` selects the sandboxed harness. */
815
870
  readonly harness: BackendType | null;
871
+ /** Trusted candidate/campaign attribution supplied by the caller. Profile/task digests are
872
+ * computed by Scope from the exact values it executes and cannot be supplied here. */
873
+ readonly execution?: AgentExecutionRef;
874
+ /** Per-spawn factory carrying caller configuration. Constructed only after admission, with the
875
+ * real child signal and nested-scope context. */
876
+ readonly executorFactory?: ExecutorFactory<unknown>;
816
877
  /** Bring-your-own executor: when set, overrides harness-based resolution entirely. */
817
878
  readonly executor?: Executor<unknown>;
818
879
  }
880
+ /** Caller-owned identity beyond the exact profile/task bytes Scope can compute itself. */
881
+ interface AgentExecutionRef {
882
+ readonly candidateDigest?: Sha256Digest;
883
+ readonly correlation?: Readonly<Record<string, string>>;
884
+ }
885
+ /** Durable identity of one realized node. Missing digests mean the input was not canonical JSON. */
886
+ interface NodeExecutionIdentity extends AgentExecutionRef {
887
+ readonly profileDigest?: Sha256Digest;
888
+ readonly taskDigest?: Sha256Digest;
889
+ }
890
+ /** A named model carried into an execution, or an explicit reason the exact model is unknowable. */
891
+ type MaterializedModelIdentity = {
892
+ readonly status: 'known';
893
+ readonly id: string;
894
+ } | {
895
+ readonly status: 'unknown';
896
+ readonly reason: string;
897
+ };
898
+ /** External execution identity that operators can use to join this node to its backend. */
899
+ interface MaterializedExecutionIdentity {
900
+ /** Backend-native identity kind, for example `request`, `session`, `run`, `process`, or `tree`. */
901
+ readonly kind: string;
902
+ readonly id: string;
903
+ }
904
+ /**
905
+ * Data-only declaration from trusted executor code about the exact sealed plan `execute` uses.
906
+ * Scope snapshots this value and computes the durable receipt; callers never provide digests.
907
+ */
908
+ interface ExecutorMaterialization {
909
+ /** Complete profile after trusted runtime-owned attachments or backend overlays were applied. */
910
+ readonly effectiveProfile: AgentProfile$1;
911
+ /** Concrete backend or harness selected for this run. */
912
+ readonly backend: string;
913
+ /** Exact selected model, or an explicit unknown reason. */
914
+ readonly model: MaterializedModelIdentity;
915
+ /** Backend-native session/run/request/process identity. */
916
+ readonly execution: MaterializedExecutionIdentity;
917
+ /** Named implementation that turns the effective profile into executable backend inputs. */
918
+ readonly materializer: string;
919
+ /** Finite JSON describing the exact materialization plan. Persisted by digest only. */
920
+ readonly plan: unknown;
921
+ /** Trusted runtime-only attachments, such as the coordination MCP. Persisted by digest only. */
922
+ readonly platformAttachments?: unknown;
923
+ }
924
+ /** Volatile execution routing that is true for one attempt but is not profile identity. The full
925
+ * binding is hashed and discarded; only the safe structural descriptor is journaled. */
926
+ interface ExecutorExecutionBinding {
927
+ readonly attemptId: string;
928
+ readonly binding: unknown;
929
+ readonly descriptor: Readonly<Record<string, string | number | boolean | null>>;
930
+ }
931
+ /** Why exact materialization evidence is unavailable for a node. */
932
+ type UnknownMaterializationReason = 'executor-did-not-report' | 'invalid-executor-report' | 'root-agent-did-not-report';
933
+ /** What the kernel can prove about one node's actual execution plan. */
934
+ type ProfileMaterializationReceipt = {
935
+ readonly status: 'known';
936
+ readonly authoredProfileDigest: Sha256Digest;
937
+ readonly effectiveProfileDigest: Sha256Digest;
938
+ readonly materializationPlanDigest: Sha256Digest;
939
+ readonly platformAttachmentsDigest?: Sha256Digest;
940
+ readonly runtime: Runtime;
941
+ readonly backend: string;
942
+ readonly model: MaterializedModelIdentity;
943
+ readonly execution: MaterializedExecutionIdentity;
944
+ readonly materializer: string;
945
+ } | {
946
+ readonly status: 'unknown';
947
+ readonly authoredProfileDigest?: Sha256Digest;
948
+ readonly runtime: Runtime;
949
+ readonly reason: UnknownMaterializationReason;
950
+ };
951
+ /** One attempt's immutable link from a stable materialization plan to its actual transport. */
952
+ type ExecutionBindingReceipt = {
953
+ readonly status: 'known';
954
+ readonly attemptId: string;
955
+ readonly materializationReceiptDigest: Sha256Digest;
956
+ readonly bindingDigest: Sha256Digest;
957
+ readonly descriptor: Readonly<Record<string, string | number | boolean | null>>;
958
+ } | {
959
+ readonly status: 'unknown';
960
+ readonly attemptId: string;
961
+ readonly materializationReceiptDigest: Sha256Digest;
962
+ readonly reason: UnknownMaterializationReason;
963
+ };
964
+ /** Trusted root composition evidence. Generic `Agent.act` roots omit this and remain unknown. */
965
+ type RootMaterialization = {
966
+ readonly runtime: Runtime;
967
+ readonly declaration: ExecutorMaterialization;
968
+ readonly binding: Omit<ExecutorExecutionBinding, 'attemptId'>;
969
+ } | {
970
+ /** The runtime-owned external adapter will publish the exact declaration after its dynamic
971
+ * platform attachment (for example a coordination URL) exists and before paid work starts. */
972
+ readonly runtime: Runtime;
973
+ readonly declaration: 'deferred';
974
+ /** Exact admitted profile used to validate the stable effective identity at publication. */
975
+ readonly authoredProfile: AgentProfile$1;
976
+ };
977
+ /** Kernel-owned context for the concrete supervised node a factory is constructing. */
978
+ interface ExecutorNodeContext {
979
+ readonly rootId: NodeId;
980
+ readonly parentId: NodeId;
981
+ readonly nodeId: NodeId;
982
+ /** Kernel-minted identity for this concrete execution attempt. */
983
+ readonly attemptId: string;
984
+ readonly identity?: NodeExecutionIdentity;
985
+ }
819
986
  /**
820
987
  * Builds a fresh `Executor` for one spawn from the resolved spec. Per-spawn (not
821
988
  * shared) so each child owns its own box/abort/teardown lifecycle. A BYO factory lets a
@@ -827,6 +994,8 @@ type ExecutorFactory<Out> = (spec: AgentSpec, ctx: ExecutorContext) => Executor<
827
994
  * the factory reaching into module globals. */
828
995
  interface ExecutorContext {
829
996
  readonly signal: AbortSignal;
997
+ /** Present when Scope constructs the executor for a supervised node. */
998
+ readonly node?: ExecutorNodeContext;
830
999
  /** Opaque seams the registry threads through; a built-in narrows what it needs. */
831
1000
  readonly seams: Readonly<Record<string, unknown>>;
832
1001
  }
@@ -840,8 +1009,8 @@ interface ExecutorRegistry {
840
1009
  /** Register a factory for a named runtime. Throws on a duplicate name (fail loud). */
841
1010
  register<Out>(runtime: Runtime, factory: ExecutorFactory<Out>): void;
842
1011
  /**
843
- * Resolve a spec to a factory. Precedence: a BYO `spec.executor` → a trivial factory
844
- * returning it; else `harness === null` → the `'router'` factory; else a registered
1012
+ * Resolve a spec to a factory. Precedence: a BYO `spec.executorFactory` → `spec.executor`
1013
+ * `harness === null` → the `'router'` factory; else a registered
845
1014
  * factory for the harness-derived runtime. Returns a typed outcome — the caller
846
1015
  * inspects `succeeded` before `value` (no silent fallback).
847
1016
  */
@@ -890,6 +1059,9 @@ type NodeId = string;
890
1059
  interface SpawnOpts {
891
1060
  readonly budget: Budget;
892
1061
  readonly label: string;
1062
+ /** Manager-scoped semantic assignment identity. Unlike `key`, this names every spawn, including
1063
+ * unkeyed siblings, so product traces can join authorization, node, and backend execution. */
1064
+ readonly assignmentId?: string;
893
1065
  readonly restart?: Restart;
894
1066
  /** Teardown grace handed to the executor when this node is reaped. */
895
1067
  readonly shutdown?: number | 'brutalKill' | 'infinity';
@@ -906,13 +1078,17 @@ interface SpawnOpts {
906
1078
  readonly key?: string;
907
1079
  }
908
1080
  /** Fail-closed spawn rejections: an exhausted pool, a dollar request against a root that budgets
909
- * no dollars, an exceeded recursion ceiling, or a `key` that is still LIVE in this scope (the
910
- * same assignment may not run twice concurrently).
1081
+ * no dollars, an exceeded recursion ceiling, a full tree-wide worker allocation, or a `key` that
1082
+ * is still LIVE in this scope (the same assignment may not run twice concurrently).
911
1083
  *
912
1084
  * `usd-unbudgeted` is separate from `budget-exhausted` because the two call for opposite
913
1085
  * responses: an exhausted pool may admit a smaller request, while an unbudgeted dollar channel
914
- * refuses every amount until the ROOT budget names a `maxUsd`. */
915
- type SpawnRejection = 'budget-exhausted' | 'usd-unbudgeted' | 'depth-exceeded' | 'duplicate-key';
1086
+ * refuses every amount until the ROOT budget names a `maxUsd`.
1087
+ *
1088
+ * `below-runtime-floor` is separate for the same reason and points the opposite way from
1089
+ * `budget-exhausted`: the request is under what that harness spends before it reads its task, so
1090
+ * it is unsatisfiable at that SIZE and the fix is to RAISE it, never to retry smaller. */
1091
+ type SpawnRejection = 'budget-exhausted' | 'usd-unbudgeted' | 'below-runtime-floor' | 'depth-exceeded' | 'duplicate-key' | 'invalid-identity' | 'key-conflict' | 'max-live-workers' | 'scope-aborted';
916
1092
  /**
917
1093
  * What a KEYED spawn resolved to when the key had a prior attempt. Absent on a fresh key (and on
918
1094
  * every unkeyed spawn). `'completed'` is the exactly-once path: NOTHING was spawned — the handle
@@ -920,8 +1096,10 @@ type SpawnRejection = 'budget-exhausted' | 'usd-unbudgeted' | 'depth-exceeded' |
920
1096
  * `'lost'` DID spawn fresh: the prior attempt settled `down` (retried) or was journaled as
921
1097
  * started but never settled — the process died with it in flight and the built-in executors
922
1098
  * cannot re-attach to a dead process's work, so the result is explicitly in doubt (lost), never
923
- * silently duplicated. An executor that CAN re-attach to a still-running external execution (a
924
- * live sandbox box) extends this union with an adoption state; none of the built-ins can today.
1099
+ * silently duplicated. On restart, an in-doubt attempt's full declared reservation is charged and
1100
+ * its telemetry remains unknown; a fresh retry is admitted only from safely remaining capacity.
1101
+ * An executor that CAN re-attach to a still-running external execution extends this union with an
1102
+ * adoption state; none of the built-ins can today.
925
1103
  */
926
1104
  type SpawnPrior<Out = unknown> = {
927
1105
  readonly state: 'completed';
@@ -945,6 +1123,14 @@ interface Handle<Out> {
945
1123
  readonly id: NodeId;
946
1124
  readonly label: string;
947
1125
  readonly status: NodeStatus;
1126
+ /** Manager-scoped assignment identity supplied at admission. */
1127
+ readonly assignmentId?: string;
1128
+ /** Durable identity of the authorized profile/task/candidate represented by this handle. */
1129
+ readonly identity?: NodeExecutionIdentity;
1130
+ /** Stable execution plan once Runtime has committed it. */
1131
+ readonly materialization?: ProfileMaterializationReceipt;
1132
+ /** Immutable per-attempt backend bindings committed so far, oldest first. */
1133
+ readonly executionBindings?: ReadonlyArray<ExecutionBindingReceipt>;
948
1134
  abort(reason?: string): void;
949
1135
  /** Phantom: binds the handle to the child's output type so `spawn<C>` returns a
950
1136
  * `Handle<C>` distinct from a `Handle<other>`. Type-only — never present at runtime. */
@@ -962,6 +1148,10 @@ type Settled<Out> = {
962
1148
  outRef: string;
963
1149
  verdict?: DefaultVerdict;
964
1150
  spent: Spend;
1151
+ /** Structured tool evidence captured before this settlement was journaled. */
1152
+ trace: WorkerTraceEvidence;
1153
+ /** Epoch ms parsed from the durable settlement record when available. */
1154
+ settledAt?: number;
965
1155
  seq: number;
966
1156
  } | {
967
1157
  kind: 'down';
@@ -970,6 +1160,10 @@ type Settled<Out> = {
970
1160
  /** True = infrastructure failure (excluded from merge `n` / equal-k), not a bad result. */
971
1161
  infra: boolean;
972
1162
  restartCount: number;
1163
+ /** Partial structured tool evidence captured before this failure was journaled. */
1164
+ trace: WorkerTraceEvidence;
1165
+ /** Epoch ms parsed from the durable settlement/cancellation record when available. */
1166
+ settledAt?: number;
973
1167
  seq: number;
974
1168
  };
975
1169
  /**
@@ -980,13 +1174,17 @@ type Settled<Out> = {
980
1174
  */
981
1175
  interface Scope<Out> {
982
1176
  /**
983
- * Spawn a child. Reserves `opts.budget` from the conserved pool atomically; refunds the
984
- * unspent remainder on settle. Returns a typed outcome fail-closed on an exhausted
985
- * pool, an exceeded depth ceiling, or a still-live duplicate `key` (the caller inspects
986
- * `ok` before `handle`). A KEYED spawn whose key already settled `done` spends nothing:
987
- * it returns the committed result on `prior` instead of re-running (see `SpawnOpts.key`).
1177
+ * Spawn a child. For a fresh key or an unkeyed spawn, tree-wide worker admission happens before a
1178
+ * lazy factory is called, so a full worker allocation creates no worker, executor, or reservation.
1179
+ * Reserves `opts.budget` from the conserved pool atomically; refunds the unspent remainder on
1180
+ * settle. Returns a typed outcome fail-closed on an exhausted pool, an exceeded depth ceiling, a
1181
+ * full worker allocation, or a still-live duplicate `key` (the caller inspects `ok` before
1182
+ * `handle`). A KEYED spawn whose key already settled `done` invokes the factory only far enough to
1183
+ * prepare and authorize the exact profile/task identity, then compares that identity with the
1184
+ * journal. On a match it spends nothing, constructs no executor, reserves no budget, and runs no
1185
+ * work: it returns the committed result on `prior` (see `SpawnOpts.key`).
988
1186
  */
989
- spawn<C extends Out>(agent: Agent<unknown, C>, task: unknown, opts: SpawnOpts): {
1187
+ spawn<C extends Out>(agent: Agent<unknown, C> | (() => Agent<unknown, C>), task: unknown, opts: SpawnOpts): {
990
1188
  ok: true;
991
1189
  handle: Handle<C>;
992
1190
  prior?: SpawnPrior<C>;
@@ -1088,13 +1286,21 @@ interface Scope<Out> {
1088
1286
  /** Conserved-pool readouts (post-reservation). */
1089
1287
  readonly budget: Readonly<{
1090
1288
  tokensLeft: number;
1289
+ /** `false` once a turn settled without reporting its tokens: `tokensLeft` is then a ceiling,
1290
+ * not a measurement. */
1291
+ tokensKnown: boolean;
1091
1292
  usdLeft: number;
1092
1293
  usdCapped: boolean;
1294
+ usdKnown: boolean;
1295
+ iterationsLeft: number;
1093
1296
  deadlineMs: number;
1094
1297
  reservedTokens: number;
1095
- /** Present and `false` once a turn settled without reporting its tokens: `tokensLeft` is then
1096
- * a ceiling, not a measurement. Absent means every settled turn reported. */
1097
- tokensKnown?: boolean;
1298
+ }>;
1299
+ /** One tree-wide view of simultaneous spawned work. Every nested scope reads the same counter;
1300
+ * the root agent itself is not a spawned worker. `freeSlots` is `null` when no limit is set. */
1301
+ readonly workerCapacity: Readonly<{
1302
+ live: number;
1303
+ freeSlots: number | null;
1098
1304
  }>;
1099
1305
  }
1100
1306
  /**
@@ -1136,6 +1342,8 @@ interface ResumedWork<Out> {
1136
1342
  interface ResumedKeyState<Out = unknown> {
1137
1343
  readonly id: NodeId;
1138
1344
  readonly label: string;
1345
+ /** Identity recorded when this key was first admitted. Every reuse must match it exactly. */
1346
+ readonly identity?: NodeExecutionIdentity;
1139
1347
  readonly state: 'completed' | 'down' | 'in-doubt';
1140
1348
  /** The rehydrated settlement; absent exactly when `state` is `'in-doubt'`. */
1141
1349
  readonly settled?: Settled<Out>;
@@ -1147,10 +1355,23 @@ interface NodeSnapshot {
1147
1355
  readonly status: NodeStatus;
1148
1356
  readonly runtime: Runtime;
1149
1357
  readonly budget: Budget;
1358
+ /** Exact nested journal tree owned by this node, when Runtime attested recursive ownership. */
1359
+ readonly ownedTreeRoot?: NodeId;
1360
+ /** Manager-scoped assignment identity, including deterministic ids for unkeyed siblings. */
1361
+ readonly assignmentId?: string;
1362
+ readonly identity?: NodeExecutionIdentity;
1363
+ /** Kernel-owned execution evidence. `unknown` is distinct from a known zero/empty plan. */
1364
+ readonly materialization?: ProfileMaterializationReceipt;
1365
+ /** Immutable attempt bindings, oldest first. A retried/resumed node may have more than one. */
1366
+ readonly executionBindings?: ReadonlyArray<ExecutionBindingReceipt>;
1367
+ /** Epoch ms of the terminal journal record; absent while live or when legacy evidence lacks it. */
1368
+ readonly settledAt?: number;
1150
1369
  /** Conserved spend so far for this node. */
1151
1370
  readonly spent: Spend;
1152
1371
  /** `outRef` once the node is `done` (the replay/result pointer). */
1153
1372
  readonly outRef?: string;
1373
+ /** Present on terminal executor nodes; legacy records carry an explicit unavailable reason. */
1374
+ readonly trace?: WorkerTraceEvidence;
1154
1375
  }
1155
1376
  /** The live tree — what `scope.view` / `RootHandle.view()` materialize for a viewer. */
1156
1377
  interface TreeView {
@@ -1173,8 +1394,31 @@ type SpawnEvent = {
1173
1394
  /** The semantic spawn key (`SpawnOpts.key`), when the spawn carried one — what a resumed
1174
1395
  * run matches to resolve the same assignment to its committed result. */
1175
1396
  key?: string;
1397
+ /** Manager-scoped assignment identity used to join unkeyed and keyed work alike. */
1398
+ assignmentId?: string;
1176
1399
  budget: Budget;
1177
1400
  runtime: Runtime;
1401
+ /** Exact nested journal tree this node owns. Runtime writes this only after privately
1402
+ * attesting the executor as a recursive scope owner. Its absence means no tree is followed,
1403
+ * including records written before this field existed and caller leaves named `driver`. */
1404
+ ownedTreeRoot?: NodeId;
1405
+ /** Exact profile/task digests plus trusted candidate/campaign attribution when available. */
1406
+ identity?: NodeExecutionIdentity;
1407
+ seq: number;
1408
+ at: string;
1409
+ } | {
1410
+ /** Volatile transport/session binding for exactly one attempt. The full binding is retained
1411
+ * only by digest; descriptor fields are safe structural labels, never credential-bearing URLs. */
1412
+ kind: 'execution-bound';
1413
+ id: NodeId;
1414
+ binding: ExecutionBindingReceipt;
1415
+ seq: number;
1416
+ at: string;
1417
+ } | {
1418
+ /** Trusted runtime transformation from the authorized profile to actual wire bytes. */
1419
+ kind: 'materialized';
1420
+ id: NodeId;
1421
+ receipt: ProfileMaterializationReceipt;
1178
1422
  seq: number;
1179
1423
  at: string;
1180
1424
  } | {
@@ -1186,6 +1430,11 @@ type SpawnEvent = {
1186
1430
  verdict?: DefaultVerdict;
1187
1431
  spent: Spend;
1188
1432
  infra?: boolean;
1433
+ /** Exact child failure. Present on every new `status: 'down'` record; optional only so
1434
+ * journals written before this field existed remain replayable. */
1435
+ reason?: string;
1436
+ /** Structured tool evidence. Optional only for journals written before trace capture. */
1437
+ trace?: WorkerTraceEvidence;
1189
1438
  seq: number;
1190
1439
  at: string;
1191
1440
  } | {
@@ -1261,6 +1510,11 @@ interface Supervisor<Task, Out> {
1261
1510
  interface SupervisorOpts {
1262
1511
  /** The root conserved-pool ceiling (tokens + usd + iterations + deadline). */
1263
1512
  readonly budget: Budget;
1513
+ /** Exact root profile/task identity supplied by the one-call composition surface. */
1514
+ readonly rootIdentity?: NodeExecutionIdentity;
1515
+ /** Trusted composition evidence for a root whose `act` drives an external backend. A generic
1516
+ * root omits it and is durably marked unknown; model-facing Scope never receives this writer. */
1517
+ readonly rootMaterialization?: RootMaterialization;
1264
1518
  /** Trace-correlation root + the journal/blob root key. */
1265
1519
  readonly runId: NodeId;
1266
1520
  /** Event source — defaults to the in-memory journal in the impl; pass JSONL/FS for durability. */
@@ -1275,6 +1529,9 @@ interface SupervisorOpts {
1275
1529
  readonly probes?: WaitProbeRegistry;
1276
1530
  /** Runtime recursion-depth ceiling (paired with the conserved pool per R3). */
1277
1531
  readonly maxDepth?: number;
1532
+ /** Hard tree-wide cap on simultaneously executing spawned workers. The root is excluded; every
1533
+ * nested driver and leaf shares this one allocation. Omit/`<= 0` leaves worker count uncapped. */
1534
+ readonly maxLiveWorkers?: number;
1278
1535
  /**
1279
1536
  * OTP intensity breaker: more than `maxRestarts` child restarts within `withinMs`
1280
1537
  * trips the supervisor to `no-winner` rather than restarting forever.
@@ -1373,16 +1630,23 @@ type SupervisedResult<Out> = {
1373
1630
  * recoverable by the caller. A non-`Error` rejection is normalized, never dropped. */
1374
1631
  error: NoWinnerError;
1375
1632
  };
1376
- /** Live root handle — the substrate a chat/pi-viz client attaches to (Q2). `signal`
1377
- * delivers an out-of-band message to the running root; `view()` materializes the tree. */
1633
+ /** Live root handle — a chat/pi-viz client uses it to inspect and control one root run. */
1378
1634
  interface RootHandle<Out> {
1379
1635
  view(): TreeView;
1636
+ /** Optional for structural compatibility with existing view/signal/abort wrappers. Handles
1637
+ * minted by `createRootHandle` implement the required form in `SteerableRootHandle`. */
1638
+ deliver?(msg: unknown): boolean;
1380
1639
  signal(msg: RootSignal): void;
1381
1640
  abort(reason?: string): void;
1382
1641
  /** Phantom: binds the handle to the supervised run's output type. Type-only — never
1383
1642
  * present at runtime; lets `attach(h: RootHandle<Out>)` stay output-typed. */
1384
1643
  readonly __out?: Out;
1385
1644
  }
1645
+ /** A Runtime-minted root handle that can deliver raw steering or answers to a live manager inbox.
1646
+ * Delivery returns `false` when the manager has no receive path; detached calls fail loud. */
1647
+ interface SteerableRootHandle<Out> extends RootHandle<Out> {
1648
+ deliver(msg: unknown): boolean;
1649
+ }
1386
1650
  /** Out-of-band message to a running root. Open by intent — a client extends it. */
1387
1651
  type RootSignal = {
1388
1652
  kind: 'pause';
@@ -1452,6 +1716,8 @@ declare function resolveAgentEnvironmentProvider(provider: AgentEnvironmentProvi
1452
1716
  interface ProviderAsSandboxClientOptions {
1453
1717
  defaults?: Partial<CreateAgentEnvironmentInput>;
1454
1718
  requireTerminalEvent?: boolean;
1719
+ /** Require declared live continuation plus concrete session controls. */
1720
+ requireSession?: boolean;
1455
1721
  mapCreateOptions?: (options: CreateSandboxOptions | undefined) => Partial<CreateAgentEnvironmentInput>;
1456
1722
  }
1457
1723
  /** Adapt a neutral environment provider to the `SandboxClient` interface used by existing loop paths.
@@ -1484,5 +1750,5 @@ interface ProviderExecutorOptions {
1484
1750
  * @experimental */
1485
1751
  declare function providerAsExecutor(provider: AgentEnvironmentProvider, options?: ProviderExecutorOptions): ExecutorFactory<unknown>;
1486
1752
  //#endregion
1487
- export { ResumedWork as $, createRuntimeEventCollector as $t, providerAsSandboxClient as A, readWorkerProgress as An, EvalRunsExportResult as At, Executor as B, buildRuntimeEventOtelSpans as Bt, ProviderAsSandboxClientOptions as C, ActivityLog as Cn, TraceContext as Ct, WorkspaceRequest as D, ScopeProgressInput as Dn, EvalRunEvent as Dt, SandboxClientProviderOptions as E, ExecutorProgress as En, traceContextToEnv as Et, createTangleSandboxExactProcessProvider as F, OtelExporter as Ft, Handle as G, toOtelAttributes as Gt, ExecutorFactory as H, exportEvalRuns as Ht, Agent as I, OtelSpan as It, NodeSnapshot as J, RuntimeStreamEventSink as Jt, NoWinnerError as K, RuntimeEventCollector as Kt, AgentSpec as L, RuntimeEventOtelOptions as Lt, sandboxClientAsProvider as M, LoopSpanNode as Mt, CreateTangleSandboxExactProcessProviderOptions as N, OtelAttribute as Nt, createAgentEnvironmentProviderRegistry as O, WorkerProgress as On, EvalRunGeneration as Ot, SandboxControlClient as P, OtelExportConfig as Pt, ResumedKeyState as Q, SanitizedKnowledgeRequirement as Qt, Budget as R, buildLoopOtelSpans as Rt, PlacementInfo as S, sandboxSessionTraceSource as Sn, workerTraceSeamKey as St, ResourceRequest as T, DEFAULT_STALL_AFTER_MS as Tn, readTraceContextFromEnv as Tt, ExecutorRegistry as U, generateSpanId as Ut, ExecutorContext as V, createOtelExporter as Vt, ExecutorResult as W, loopEventToOtelSpan as Wt, Restart as X, RuntimeTelemetryOptions as Xt, NodeStatus as Y, RuntimeStreamEventSummary as Yt, ResultBlobStore as Z, SanitizedKnowledgeReadinessReport as Zt, CheckpointRequest as _, SessionTraceBox as _n, WidenGate as _t, AgentEnvironmentProviderRef as a, WaitOutcome as an, SpawnEvent as at, ExecResult as b, createPushTraceSource as bn, readWorkerTraceContext as bt, AgentEnvironmentStatus as c, WaitRejection as cn, SpawnPrior as ct, AgentSession as d, isWaitOutcome as dn, SupervisedResult as dt, createRuntimeStreamEventCollector as en, RootHandle as et, AgentSessionRef as f, pollFor as fn, Supervisor as ft, CheckpointRef as g, SessionMessageLike as gn, WaitOpts as gt, AgentTurnResult as h, waitUntil as hn, UsageEvent as ht, AgentEnvironmentProvider$1 as i, PendingWait as in, Settled as it, resolveAgentEnvironmentProvider as j, INTELLIGENCE_WIRE_VERSION as jt, providerAsExecutor as k, createActivityLog as kn, EvalRunsExportConfig as kt, AgentEnvironmentSummary as l, WaitSpec as ln, SpawnRejection as lt, AgentTurnInput$1 as m, validateWaitSpec as mn, TreeView as mt, AgentEnvironmentCapabilities$1 as n, sanitizeKnowledgeReadinessReport as nn, Runtime as nt, AgentEnvironmentProviderRegistry as o, WaitProbe as on, SpawnJournal as ot, AgentSessionStatus as p, timerAt as pn, SupervisorOpts as pt, NodeId as q, RuntimeStreamEventCollector as qt, AgentEnvironmentEvent as r, sanitizeRuntimeStreamEvent as rn, Scope as rt, AgentEnvironmentQuery as s, WaitProbeRegistry as sn, SpawnOpts as st, AgentEnvironment as t, sanitizeAgentRuntimeEvent as tn, RootSignal as tt, AgentProfileRef$1 as u, createWaitProbes as un, Spend as ut, CreateAgentEnvironmentInput$1 as v, ToolStepInput as vn, WorkerTraceResolver as vt, ProviderExecutorOptions as w, ActivityNote as wn, createPropagatingTraceEmitter as wt, ForkRequest as x, decodeToolPart as xn, workerTraceEnv as xt, ExecRequest as y, TraceSource as yn, WorkerTraceSeamCarrier as yt, DefaultVerdict as z, buildLoopSpanNodes as zt };
1488
- //# sourceMappingURL=environment-provider-CWsRh6Uz.d.ts.map
1753
+ export { MaterializedModelIdentity as $, buildLoopOtelSpans as $t, providerAsSandboxClient as A, validateWaitSpec as An, WidenGate as At, DefaultVerdict as B, ActivityNote as Bn, readTraceContextFromEnv as Bt, ProviderAsSandboxClientOptions as C, WaitProbeRegistry as Cn, SupervisedResult as Ct, WorkspaceRequest as D, isWaitOutcome as Dn, UnknownMaterializationReason as Dt, SandboxClientProviderOptions as E, createWaitProbes as En, TreeView as Et, createTangleSandboxExactProcessProvider as F, TraceSource as Fn, readWorkerTraceContext as Ft, ExecutorExecutionBinding as G, createActivityLog as Gn, EvalRunsExportResult as Gt, Executor as H, ExecutorProgress as Hn, EvalRunEvent as Ht, Agent as I, createPushTraceSource as In, workerTraceEnv as It, ExecutorNodeContext as J, OtelAttribute as Jt, ExecutorFactory as K, readWorkerProgress as Kn, INTELLIGENCE_WIRE_VERSION as Kt, AgentExecutionRef as L, decodeToolPart as Ln, workerTraceSeamKey as Lt, sandboxClientAsProvider as M, SessionMessageLike as Mn, WorkerTraceUnavailableReason as Mt, CreateTangleSandboxExactProcessProviderOptions as N, SessionTraceBox as Nn, WorkerTraceResolver as Nt, createAgentEnvironmentProviderRegistry as O, pollFor as On, UsageEvent as Ot, SandboxControlClient as P, ToolStepInput as Pn, WorkerTraceSeamCarrier as Pt, MaterializedExecutionIdentity as Q, RuntimeEventOtelOptions as Qt, AgentSpec as R, sandboxSessionTraceSource as Rn, TraceContext as Rt, PlacementInfo as S, WaitProbe as Sn, SteerableRootHandle as St, ResourceRequest as T, WaitSpec as Tn, SupervisorOpts as Tt, ExecutorAccounting as U, ScopeProgressInput as Un, EvalRunGeneration as Ut, ExecutionBindingReceipt as V, DEFAULT_STALL_AFTER_MS as Vn, traceContextToEnv as Vt, ExecutorContext as W, WorkerProgress as Wn, EvalRunsExportConfig as Wt, ExecutorResult as X, OtelExporter as Xt, ExecutorRegistry as Y, OtelExportConfig as Yt, Handle as Z, OtelSpan as Zt, CheckpointRequest as _, sanitizeAgentRuntimeEvent as _n, SpawnJournal as _t, AgentEnvironmentProviderRef as a, generateSpanId as an, ProfileMaterializationReceipt as at, ExecResult as b, PendingWait as bn, SpawnRejection as bt, AgentEnvironmentStatus as c, RuntimeEventCollector as cn, ResumedKeyState as ct, AgentSession as d, RuntimeStreamEventSummary as dn, RootMaterialization as dt, buildLoopSpanNodes as en, NoWinnerError as et, AgentSessionRef as f, RuntimeTelemetryOptions as fn, RootSignal as ft, CheckpointRef as g, createRuntimeStreamEventCollector as gn, SpawnEvent as gt, AgentTurnResult as h, createRuntimeEventCollector as hn, Settled as ht, AgentEnvironmentProvider$1 as i, exportEvalRuns as in, NodeStatus as it, resolveAgentEnvironmentProvider as j, waitUntil as jn, WorkerTraceEvidence as jt, providerAsExecutor as k, timerAt as kn, WaitOpts as kt, AgentEnvironmentSummary as l, RuntimeStreamEventCollector as ln, ResumedWork as lt, AgentTurnInput$1 as m, SanitizedKnowledgeRequirement as mn, Scope as mt, AgentEnvironmentCapabilities$1 as n, createOpenInferenceFileExporter as nn, NodeId as nt, AgentEnvironmentProviderRegistry as o, loopEventToOtelSpan as on, Restart as ot, AgentSessionStatus as p, SanitizedKnowledgeReadinessReport as pn, Runtime as pt, ExecutorMaterialization as q, LoopSpanNode as qt, AgentEnvironmentEvent as r, createOtelExporter as rn, NodeSnapshot as rt, AgentEnvironmentQuery as s, toOtelAttributes as sn, ResultBlobStore as st, AgentEnvironment as t, buildRuntimeEventOtelSpans as tn, NodeExecutionIdentity as tt, AgentProfileRef$1 as u, RuntimeStreamEventSink as un, RootHandle as ut, CreateAgentEnvironmentInput$1 as v, sanitizeKnowledgeReadinessReport as vn, SpawnOpts as vt, ProviderExecutorOptions as w, WaitRejection as wn, Supervisor as wt, ForkRequest as x, WaitOutcome as xn, Spend as xt, ExecRequest as y, sanitizeRuntimeStreamEvent as yn, SpawnPrior as yt, Budget as z, ActivityLog as zn, createPropagatingTraceEmitter as zt };
1754
+ //# sourceMappingURL=environment-provider-CTZjdIUg.d.ts.map