effect-agent 0.1.0-beta.107 → 0.1.0-beta.109

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 (85) hide show
  1. package/dist/{Agent-Bk-mLtov.d.mts → Agent-B3bxhC9q.d.mts} +23 -6
  2. package/dist/{Agent-CG_VMrtA.mjs → Agent-Iy5_eY3g.mjs} +6 -3
  3. package/dist/Agent-Iy5_eY3g.mjs.map +1 -0
  4. package/dist/{AgentRuntime-BEXToYl1.d.mts → AgentRuntime-BxSd0sPL.d.mts} +5 -5
  5. package/dist/{AgentRuntime-e2M5UoXn.mjs → AgentRuntime-C291vZTk.mjs} +37 -4
  6. package/dist/AgentRuntime-C291vZTk.mjs.map +1 -0
  7. package/dist/{DurableAgentRuntime-wd1x0TcB.mjs → DurableAgentRuntime-B4Fqz6RP.mjs} +2 -2
  8. package/dist/{DurableAgentRuntime-wd1x0TcB.mjs.map → DurableAgentRuntime-B4Fqz6RP.mjs.map} +1 -1
  9. package/dist/{EventSource-pH-v0k42.d.mts → EventSource-DwEeyqDo.d.mts} +3 -3
  10. package/dist/{Messaging-Bl4SBKpR.d.mts → Messaging-Dvpu7UPE.d.mts} +3 -3
  11. package/dist/{MessagingHost-nwBMdRoh.d.mts → MessagingHost-DCRod9xD.d.mts} +2 -2
  12. package/dist/{Output-B6RQ5jRU.d.mts → Output-t-WIROyE.d.mts} +2 -2
  13. package/dist/{PreparedInputAdmission-D3-BgmA9.d.mts → PreparedInputAdmission-BIZ3FiBW.d.mts} +4 -4
  14. package/dist/{Records-B4S02MX1.d.mts → Records-AEBCso3_.d.mts} +7 -7
  15. package/dist/{RunOptions-qOcPv08p.d.mts → RunOptions-B8oLx8BF.d.mts} +2 -2
  16. package/dist/{Schedule-D2TVEu3W.d.mts → Schedule-CBUgfM3g.d.mts} +2 -2
  17. package/dist/{Subagent-BxuDuCHt.d.mts → Subagent-BoQnDgzw.d.mts} +20 -9
  18. package/dist/{Subagent-uXWHXiKb.mjs → Subagent-DKF_66Tv.mjs} +6 -30
  19. package/dist/Subagent-DKF_66Tv.mjs.map +1 -0
  20. package/dist/{SubagentHost-DEPw4YME.d.mts → SubagentHost-BqFxCSNC.d.mts} +2 -2
  21. package/dist/{Subscription-nX0rz4GQ.d.mts → Subscription-CcNCWV5l.d.mts} +3 -3
  22. package/dist/{SubscriptionInput-CAG3_pyJ.d.mts → SubscriptionInput-Dlkw6re3.d.mts} +3 -3
  23. package/dist/capabilities/Commands.d.mts +1 -1
  24. package/dist/capabilities/Messaging.d.mts +2 -2
  25. package/dist/capabilities/RunHooks.d.mts +1 -1
  26. package/dist/capabilities/Subagent.d.mts +1 -1
  27. package/dist/capabilities/Subagent.mjs +1 -1
  28. package/dist/core/Agent.d.mts +2 -2
  29. package/dist/core/Agent.mjs +2 -2
  30. package/dist/durable/ActivityStore.d.mts +1 -1
  31. package/dist/durable/Admin.d.mts +1 -1
  32. package/dist/durable/AgentRegistration.d.mts +1 -1
  33. package/dist/durable/Certification.d.mts +1 -1
  34. package/dist/durable/CommittedActivity.d.mts +1 -1
  35. package/dist/durable/Digest.d.mts +1 -1
  36. package/dist/durable/DurableAgentRuntime.d.mts +1 -1
  37. package/dist/durable/DurableAgentRuntime.mjs +1 -1
  38. package/dist/durable/EventSource.d.mts +1 -1
  39. package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
  40. package/dist/durable/MessageDelivery.d.mts +41 -41
  41. package/dist/durable/MessageDeliveryStoreConformance.d.mts +39 -39
  42. package/dist/durable/PersistentHistory.d.mts +1 -1
  43. package/dist/durable/PreparedInputAdmission.d.mts +1 -1
  44. package/dist/durable/Records.d.mts +1 -1
  45. package/dist/durable/Recovery.d.mts +1 -1
  46. package/dist/durable/RunJournal.d.mts +1 -1
  47. package/dist/durable/Schedule.d.mts +1 -1
  48. package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
  49. package/dist/durable/ScheduleTransition.d.mts +1 -1
  50. package/dist/durable/Scheduling.d.mts +2 -2
  51. package/dist/durable/SqlStorageV2Upgrade.d.mts +2 -2
  52. package/dist/durable/SqlSubscriptionStore.d.mts +2 -2
  53. package/dist/durable/SqlThreadNativeReads.d.mts +1 -1
  54. package/dist/durable/SubmissionLedger.d.mts +1 -1
  55. package/dist/durable/SubmissionLedgerConformance.d.mts +1 -1
  56. package/dist/durable/SubmissionStatus.d.mts +1 -1
  57. package/dist/durable/Subscription.d.mts +1 -1
  58. package/dist/durable/SubscriptionInput.d.mts +1 -1
  59. package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
  60. package/dist/durable/SubscriptionTools.d.mts +3 -3
  61. package/dist/durable/SubscriptionTransition.d.mts +1 -1
  62. package/dist/durable/Subscriptions.d.mts +5 -5
  63. package/dist/durable/ThreadContextHistory.d.mts +1 -1
  64. package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
  65. package/dist/durable/ThreadInvariants.d.mts +1 -1
  66. package/dist/durable/ThreadProjection.d.mts +1 -1
  67. package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
  68. package/dist/durable/ThreadStore.d.mts +1 -1
  69. package/dist/durable/ThreadStoreConformance.d.mts +1 -1
  70. package/dist/durable/WorkerHost.d.mts +2 -2
  71. package/dist/engine/AgentRuntime.d.mts +1 -1
  72. package/dist/engine/AgentRuntime.mjs +1 -1
  73. package/dist/engine/MessagingHost.d.mts +1 -1
  74. package/dist/engine/Output.d.mts +1 -1
  75. package/dist/engine/RunOptions.d.mts +1 -1
  76. package/dist/engine/SubagentHost.d.mts +1 -1
  77. package/dist/index.d.mts +14 -14
  78. package/dist/index.mjs +4 -4
  79. package/package.json +1 -1
  80. package/src/capabilities/Subagent.ts +225 -14
  81. package/src/core/Agent.ts +23 -3
  82. package/src/engine/internal/agent-runtime.ts +58 -3
  83. package/dist/Agent-CG_VMrtA.mjs.map +0 -1
  84. package/dist/AgentRuntime-e2M5UoXn.mjs.map +0 -1
  85. package/dist/Subagent-uXWHXiKb.mjs.map +0 -1
@@ -19,7 +19,7 @@ type UpdateToolkit<T extends Toolkit.Any, S extends Schema.Top | undefined> = S
19
19
  readonly emit_update: ReturnType<typeof updateTool<S>>;
20
20
  }> : T;
21
21
  declare namespace Agent_d_exports {
22
- export { Any, AnyDefinition, Binding, CompletionFromToolDeclaration, CompletionProjectionInput, CompletionToolDeclaration, Definition, DefinitionOptions, DefinitionRequirements, EncodedInput, Failure, Input, InputPromptSource, InputSchema, InstructionResult, InstructionSource, ModelServices, Name, NativeModel, Output, OutputSchema, Requirements, RunDisposition, RunDispositionDeclaration, RunDispositionFailure, RunDispositionSchema, ToolInspection, ToolUnion, Tools, Update, UpdatesSchema, inspectTools, make, withModel };
22
+ export { Any, AnyDefinition, Binding, CompletionFromToolDeclaration, CompletionProjectionInput, CompletionToolDeclaration, Definition, DefinitionOptions, DefinitionRequirements, EncodedInput, Failure, Input, InputPromptSource, InputSchema, InstructionResult, InstructionSource, ModelResolver, ModelServices, Name, NativeModel, Output, OutputSchema, Requirements, RunDisposition, RunDispositionDeclaration, RunDispositionFailure, RunDispositionSchema, ToolInspection, ToolUnion, Tools, Update, UpdatesSchema, inspectTools, isModelResolver, make, withModel };
23
23
  }
24
24
  /** Prompt input produced directly or by an Effect that preserves its failure and requirements. */
25
25
  type InstructionResult<E = never, R = never> = Prompt.RawInput | Effect.Effect<Prompt.RawInput, E, R>;
@@ -29,7 +29,24 @@ type InstructionSource<Input, E = never, R = never> = Prompt.RawInput | ((input:
29
29
  type InputPromptSource<Input, E = never, R = never> = (input: Input) => InstructionResult<E, R>;
30
30
  /** Native services needed to execute and identify model calls. */
31
31
  type ModelServices = LanguageModel.LanguageModel | Model.ProviderName | Model.ModelName;
32
- /** Accepts Layers providing the native model and both identity services. */
32
+ /**
33
+ * An optional capability on a provided LanguageModel service. The runtime supplies
34
+ * only model-visible task context and eligible Tool descriptions after validating input.
35
+ * The resolver owns retaining one choice per Thread, including across Runs and
36
+ * recovery; it captures client requirements and returns a closed native Layer
37
+ * that the interpreter acquires for the Run. Context hooks may prepare prompts
38
+ * but cannot replace this model through a per-Turn modelCall.
39
+ * Selection failures remain AiError values and all selector/client services stay in R.
40
+ */
41
+ interface ModelResolver extends LanguageModel.LanguageModel {
42
+ readonly resolve: (request: {
43
+ readonly threadId: string;
44
+ readonly state: Schema.JsonObject;
45
+ }) => Effect.Effect<Layer.Layer<ModelServices>, AiError.AiError>;
46
+ }
47
+ /** Detect the deferred resolver capability on a trusted, host-provided model service. */
48
+ declare const isModelResolver: (model: LanguageModel.LanguageModel) => model is ModelResolver;
49
+ /** Accepts native model Layers that provide generation and model identity. */
33
50
  type NativeModel<ModelValue> = ModelValue extends Layer.Layer<infer Provides, never, infer _Requires> ? ModelServices extends Provides ? ModelValue : never : never;
34
51
  /** Definition-owned boundary for selecting and validating an application run disposition. */
35
52
  interface RunDispositionDeclaration<Output, DispositionSchema extends Schema.Top> {
@@ -119,7 +136,7 @@ interface DefinitionOptions<InputSchema extends Schema.Top, OutputSchema extends
119
136
  readonly metadata?: Readonly<Record<string, string>> | undefined;
120
137
  }
121
138
  type AnyDefinitionShape = Definition<Schema.Top, Schema.Top, unknown, Toolkit.Any, RunDispositionDeclaration<never, Schema.Top> | undefined, unknown, Schema.Top | undefined>;
122
- /** Immutable pairing of an agent definition with its native model Layer. */
139
+ /** Immutable pairing of an agent definition with a native model Layer or thread resolver. */
123
140
  interface Binding<DefinitionValue extends AnyDefinitionShape, ModelValue> {
124
141
  readonly definition: DefinitionValue;
125
142
  readonly model: NativeModel<ModelValue>;
@@ -219,8 +236,8 @@ declare function make<const Name extends string, InputSchema extends Schema.Top,
219
236
  }): Definition<InputSchema, OutputSchema, Instructions, UpdateToolkit<ToolkitValue, NoInfer<UpdatesSchema>>, undefined, undefined, NoInfer<UpdatesSchema>> & {
220
237
  readonly id: AgentId & Name;
221
238
  };
222
- /** Fix a model Layer for registration or delegation without acquiring or hiding its requirements. */
239
+ /** Bind a native model or thread resolver without acquiring or hiding its requirements. */
223
240
  declare const withModel: <DefinitionValue extends AnyDefinition, ModelValue>(definition: DefinitionValue, model: NativeModel<ModelValue>) => Binding<DefinitionValue, ModelValue>;
224
241
  //#endregion
225
- export { Tools as A, Requirements as C, RunDispositionSchema as D, RunDispositionFailure as E, withModel as F, UpdatesSchema as M, inspectTools as N, ToolInspection as O, make as P, OutputSchema as S, RunDispositionDeclaration as T, InstructionSource as _, CompletionFromToolDeclaration as a, NativeModel as b, Definition as c, EncodedInput as d, Failure as f, InstructionResult as g, InputSchema as h, Binding as i, Update as j, ToolUnion as k, DefinitionOptions as l, InputPromptSource as m, Any as n, CompletionProjectionInput as o, Input as p, AnyDefinition as r, CompletionToolDeclaration as s, Agent_d_exports as t, DefinitionRequirements as u, ModelServices as v, RunDisposition as w, Output as x, Name as y };
226
- //# sourceMappingURL=Agent-Bk-mLtov.d.mts.map
242
+ export { ToolUnion as A, OutputSchema as C, RunDispositionFailure as D, RunDispositionDeclaration as E, isModelResolver as F, make as I, withModel as L, Update as M, UpdatesSchema as N, RunDispositionSchema as O, inspectTools as P, Output as S, RunDisposition as T, InstructionSource as _, CompletionFromToolDeclaration as a, Name as b, Definition as c, EncodedInput as d, Failure as f, InstructionResult as g, InputSchema as h, Binding as i, Tools as j, ToolInspection as k, DefinitionOptions as l, InputPromptSource as m, Any as n, CompletionProjectionInput as o, Input as p, AnyDefinition as r, CompletionToolDeclaration as s, Agent_d_exports as t, DefinitionRequirements as u, ModelResolver as v, Requirements as w, NativeModel as x, ModelServices as y };
243
+ //# sourceMappingURL=Agent-B3bxhC9q.d.mts.map
@@ -24,9 +24,12 @@ const withUpdateTool = (toolkit, schema) => {
24
24
  var Agent_exports = /* @__PURE__ */ __exportAll({
25
25
  ToolInspection: () => ToolInspection,
26
26
  inspectTools: () => inspectTools,
27
+ isModelResolver: () => isModelResolver,
27
28
  make: () => make,
28
29
  withModel: () => withModel
29
30
  });
31
+ /** Detect the deferred resolver capability on a trusted, host-provided model service. */
32
+ const isModelResolver = (model) => "resolve" in model && typeof model.resolve === "function";
30
33
  /** Native Tool configuration for inspection; it does not predict an invocation's outcome. */
31
34
  const ToolInspection = S.Struct({
32
35
  name: S.String,
@@ -72,12 +75,12 @@ function make(id, options) {
72
75
  runDisposition: options.runDisposition === void 0 ? void 0 : Object.freeze({ ...options.runDisposition })
73
76
  });
74
77
  }
75
- /** Fix a model Layer for registration or delegation without acquiring or hiding its requirements. */
78
+ /** Bind a native model or thread resolver without acquiring or hiding its requirements. */
76
79
  const withModel = (definition, model) => Object.freeze({
77
80
  definition,
78
81
  model
79
82
  });
80
83
  //#endregion
81
- export { withModel as a, make as i, ToolInspection as n, inspectTools as r, Agent_exports as t };
84
+ export { make as a, isModelResolver as i, ToolInspection as n, withModel as o, inspectTools as r, Agent_exports as t };
82
85
 
83
- //# sourceMappingURL=Agent-CG_VMrtA.mjs.map
86
+ //# sourceMappingURL=Agent-Iy5_eY3g.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Agent-Iy5_eY3g.mjs","names":[],"sources":["../src/core/internal/agent-updates.ts","../src/core/Agent.ts"],"sourcesContent":["import { Schema } from \"effect\";\nimport { Tool, Toolkit } from \"effect/unstable/ai\";\n\nimport { Emitter, UpdateError } from \"../AgentUpdates.ts\";\n\n/** Definition-owned native Tool. Runtime supplies its handler under the same identity. */\nexport const updateTool = <S extends Schema.Top>(schema: S) =>\n Tool.make(\"emit_update\", {\n description: \"Emit a structured intermediate update. This does not complete the task.\",\n parameters: Schema.Struct({ value: schema }),\n success: Schema.Void,\n failure: UpdateError,\n failureMode: \"return\",\n }).addDependency(Emitter);\n\nexport type UpdateToolkit<\n T extends Toolkit.Any,\n S extends Schema.Top | undefined,\n> = S extends Schema.Top\n ? Toolkit.Toolkit<T[\"tools\"] & { readonly emit_update: ReturnType<typeof updateTool<S>> }>\n : T;\n\nexport const withUpdateTool = (\n toolkit: Toolkit.Any,\n schema: Schema.Top | undefined,\n): Toolkit.Any => {\n if (schema === undefined) return toolkit;\n if (Object.hasOwn(toolkit.tools, \"emit_update\"))\n throw new TypeError(\"emit_update is reserved for Agent updates\");\n\n return Toolkit.make(...Object.values(toolkit.tools), updateTool(schema));\n};\n","import type { Effect, Layer, Option, Schema } from \"effect\";\nimport * as S from \"effect/Schema\";\nimport {\n type AiError,\n type LanguageModel,\n type Model,\n type Prompt,\n Tool,\n type Toolkit,\n} from \"effect/unstable/ai\";\n\nimport type { AgentInputError, AgentOutputError, AgentRunDispositionError } from \"./AgentError.ts\";\nimport { AgentPolicy, type AgentPolicyInput } from \"./AgentPolicy.ts\";\nimport { AgentId } from \"./Identifiers.ts\";\nimport { type UpdateToolkit, withUpdateTool } from \"./internal/agent-updates.ts\";\nimport type { Configuration } from \"./ToolExposure.ts\";\n\n/** Prompt input produced directly or by an Effect that preserves its failure and requirements. */\nexport type InstructionResult<E = never, R = never> =\n | Prompt.RawInput\n | Effect.Effect<Prompt.RawInput, E, R>;\n\n/** Static prompt input or an input-dependent source evaluated once while preparing a run. */\nexport type InstructionSource<Input, E = never, R = never> =\n | Prompt.RawInput\n | ((input: Input) => InstructionResult<E, R>);\n\n/** Definition-owned projection from decoded Agent input to model-visible prompt content. */\nexport type InputPromptSource<Input, E = never, R = never> = (\n input: Input,\n) => InstructionResult<E, R>;\n\n/** Native services needed to execute and identify model calls. */\nexport type ModelServices = LanguageModel.LanguageModel | Model.ProviderName | Model.ModelName;\n\n/**\n * An optional capability on a provided LanguageModel service. The runtime supplies\n * only model-visible task context and eligible Tool descriptions after validating input.\n * The resolver owns retaining one choice per Thread, including across Runs and\n * recovery; it captures client requirements and returns a closed native Layer\n * that the interpreter acquires for the Run. Context hooks may prepare prompts\n * but cannot replace this model through a per-Turn modelCall.\n * Selection failures remain AiError values and all selector/client services stay in R.\n */\nexport interface ModelResolver extends LanguageModel.LanguageModel {\n readonly resolve: (request: {\n readonly threadId: string;\n readonly state: Schema.JsonObject;\n }) => Effect.Effect<Layer.Layer<ModelServices>, AiError.AiError>;\n}\n\n/** Detect the deferred resolver capability on a trusted, host-provided model service. */\nexport const isModelResolver = (model: LanguageModel.LanguageModel): model is ModelResolver =>\n \"resolve\" in model && typeof model.resolve === \"function\";\n\n/** Accepts native model Layers that provide generation and model identity. */\nexport type NativeModel<ModelValue> =\n ModelValue extends Layer.Layer<infer Provides, never, infer _Requires>\n ? ModelServices extends Provides\n ? ModelValue\n : never\n : never;\n\n/** Definition-owned boundary for selecting and validating an application run disposition. */\nexport interface RunDispositionDeclaration<Output, DispositionSchema extends Schema.Top> {\n /** Canonical Schema used to validate and encode the selected disposition. */\n readonly schema: DispositionSchema;\n /** Pure selection from decoded output; `undefined` means this ordinary Run declares none. */\n readonly fromOutput: (output: Output) => unknown;\n}\n\n/** Values available to a Definition-owned completion Tool projector after canonical decoding. */\nexport interface CompletionProjectionInput<Parameters = unknown, Result = unknown> {\n readonly parameters: Parameters;\n readonly result: Result;\n}\n\n/**\n * One application Tool whose successful result can complete its owning Agent when it is the\n * only application call. Provider-executed calls may accompany it only with terminal results.\n * Mixed, wholly unexecuted application batches are rejected with failed Tool results so the\n * model can correct them within ordinary Run budgets; completed provider results are retained.\n * Missing provider results and invalid pending resumed batches fail closed. The completion\n * designation never permits side-effect replay.\n */\nexport interface CompletionToolDeclaration<\n Parameters = unknown,\n Result = unknown,\n Output = unknown,\n> {\n readonly tool: string;\n /** Require native Tool use on every model Turn and this Tool for final completion. */\n readonly required?: boolean | undefined;\n readonly project: (input: CompletionProjectionInput<Parameters, Result>) => Output;\n}\n\ntype CompletionToolFor<ToolkitValue extends Toolkit.Any, Output> = {\n readonly [Name in keyof ToolkitValue[\"tools\"] & string]: CompletionToolDeclaration<\n Tool.Parameters<ToolkitValue[\"tools\"][Name]>,\n Tool.Success<ToolkitValue[\"tools\"][Name]>,\n Output\n > & { readonly tool: Name };\n}[keyof ToolkitValue[\"tools\"] & string];\n\n/**\n * An ordinary action Tool whose canonical success may satisfy the whole request.\n * Projectors must be pure and deterministic: recovery re-evaluates them. None preserves\n * ordinary continuation; Some is validated as the Agent output. These Tools must be the sole\n * application call; terminal provider results may accompany them. They never receive the\n * required completion Tool's exhaustion allowance.\n */\nexport interface CompletionFromToolDeclaration<\n Parameters = unknown,\n Result = unknown,\n Output = unknown,\n> {\n readonly tool: string;\n readonly project: (input: CompletionProjectionInput<Parameters, Result>) => Option.Option<Output>;\n}\n\ntype CompletionFromToolFor<ToolkitValue extends Toolkit.Any, Output> = {\n readonly [Name in keyof ToolkitValue[\"tools\"] & string]: CompletionFromToolDeclaration<\n Tool.Parameters<ToolkitValue[\"tools\"][Name]>,\n Tool.Success<ToolkitValue[\"tools\"][Name]>,\n Output\n > & { readonly tool: Name };\n}[keyof ToolkitValue[\"tools\"] & string];\n\n/** Immutable, model-agnostic schemas, behavior, tools, and bounds for an agent. */\nexport interface Definition<\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions,\n ToolkitValue extends Toolkit.Any,\n RunDispositionValue = undefined,\n InputPromptValue = undefined,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n> {\n /** Stable agent identity; changing it creates a distinct definition identity. */\n readonly id: AgentId;\n /** Canonical Schema for intermediate updates emitted by this Agent. */\n readonly updates?: UpdatesSchema;\n /** Canonical schema used to decode and encode run input. */\n readonly input: InputSchema;\n /** Canonical schema used to decode the final model output. */\n readonly output: OutputSchema;\n /** Instructions evaluated once while preparing each run. */\n readonly instructions: Instructions;\n /** Optional projection from decoded input to model-visible native Effect AI prompt content. */\n readonly inputPrompt?: InputPromptValue | undefined;\n /** Native Effect AI toolkit whose failures and requirements remain visible. */\n readonly toolkit: ToolkitValue;\n readonly toolExposure?: Configuration | undefined;\n /** Finite execution bounds enforced by the runtime. */\n readonly policy: AgentPolicy;\n /** Explicit policy fields, retained so delegated runs can inherit omitted fields. */\n readonly policyOverrides?: Partial<AgentPolicyInput> | undefined;\n /** Optional successful Tool result that projects directly to the Agent output and settles. */\n readonly completion?: CompletionToolDeclaration | undefined;\n readonly completionFromTools?: ReadonlyArray<CompletionFromToolDeclaration> | undefined;\n readonly runDisposition?: RunDispositionValue | undefined;\n readonly description?: string | undefined;\n readonly metadata?: Readonly<Record<string, string>> | undefined;\n}\n\n/** Options for a model-agnostic agent definition. */\nexport interface DefinitionOptions<\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions extends InstructionSource<InputSchema[\"Type\"], unknown, unknown>,\n ToolkitValue extends Toolkit.Any,\n RunDispositionValue extends\n | RunDispositionDeclaration<OutputSchema[\"Type\"], Schema.Top>\n | undefined = undefined,\n InputPromptValue extends InputPromptSource<InputSchema[\"Type\"], unknown, unknown> | undefined =\n undefined,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n> {\n readonly updates?: UpdatesSchema;\n readonly input: InputSchema;\n readonly output: OutputSchema;\n readonly instructions: Instructions;\n readonly inputPrompt?: InputPromptValue | undefined;\n readonly toolkit: ToolkitValue;\n readonly toolExposure?: Configuration | undefined;\n readonly policy?: Partial<AgentPolicyInput> | undefined;\n readonly completion?: CompletionToolFor<ToolkitValue, OutputSchema[\"Type\"]> | undefined;\n readonly completionFromTools?:\n | ReadonlyArray<CompletionFromToolFor<ToolkitValue, OutputSchema[\"Type\"]>>\n | undefined;\n readonly runDisposition?: RunDispositionValue | undefined;\n readonly description?: string | undefined;\n readonly metadata?: Readonly<Record<string, string>> | undefined;\n}\n\ntype AnyDefinitionShape = Definition<\n Schema.Top,\n Schema.Top,\n unknown,\n Toolkit.Any,\n RunDispositionDeclaration<never, Schema.Top> | undefined,\n unknown,\n Schema.Top | undefined\n>;\n\n/** Immutable pairing of an agent definition with a native model Layer or thread resolver. */\nexport interface Binding<DefinitionValue extends AnyDefinitionShape, ModelValue> {\n readonly definition: DefinitionValue;\n readonly model: NativeModel<ModelValue>;\n}\n\ntype InstructionEffect<Instructions, Input> = Instructions extends (input: Input) => infer Result\n ? Result\n : Instructions;\n\ntype InputPromptEffect<InputPrompt, Input> = InputPrompt extends (input: Input) => infer Result\n ? Result\n : never;\n\ntype EffectError<Value> =\n Value extends Effect.Effect<infer _Success, infer Error, infer _Services> ? Error : never;\n\ntype EffectServices<Value> =\n Value extends Effect.Effect<infer _Success, infer _Error, infer Services> ? Services : never;\n\ntype ModelRequirements<Value> =\n Value extends Layer.Layer<infer _Provides, infer _Error, infer Services> ? Services : never;\n\n/** Constructors and type projections for definitions and runnable model bindings. */\n\n/** Type-erased definition used at generic framework boundaries. */\nexport type AnyDefinition = AnyDefinitionShape;\n\n/** Read-only interpreter program or binding used at inspection and projection boundaries. */\nexport interface Any {\n readonly definition: AnyDefinition;\n readonly model?: unknown;\n}\n\n/** Native Tool configuration for inspection; it does not predict an invocation's outcome. */\nexport const ToolInspection = S.Struct({\n name: S.String,\n failureMode: S.Literals([\"error\", \"return\"]),\n /** False for provider-executed Tools, whose results do not pass through local handlers. */\n requiresHandler: S.Boolean,\n});\n\nexport type ToolInspection = typeof ToolInspection.Type;\n\n/**\n * Inspect registered native Tools in declaration order without acquiring handlers or a Model.\n * This is the full Definition toolkit, before run-specific visibility or exposure filtering.\n * `failureMode` is Effect AI's configured mode, including its `\"error\"` default. Handler-level\n * recovery, programmatic invocation and Subagent containment can change where failures go;\n * consult execution diagnostics for the actual route. No arguments, results or services are read.\n */\nexport const inspectTools = (agent: AnyDefinition | Any): ReadonlyArray<ToolInspection> => {\n const definition = \"definition\" in agent ? agent.definition : agent;\n\n return Object.values(definition.toolkit.tools).map((tool) =>\n ToolInspection.make({\n name: tool.name,\n failureMode: tool.failureMode,\n requiresHandler: !Tool.isProviderDefined(tool) || tool.requiresHandler,\n }),\n );\n};\n\ntype DefinitionOf<AgentValue extends AnyDefinition | Any> = AgentValue extends {\n readonly definition: infer DefinitionValue extends AnyDefinition;\n}\n ? DefinitionValue\n : AgentValue;\n\ntype RunDispositionSchemaOf<DefinitionValue extends AnyDefinition> = [\n Exclude<DefinitionValue[\"runDisposition\"], undefined>,\n] extends [never]\n ? never\n : Exclude<DefinitionValue[\"runDisposition\"], undefined> extends RunDispositionDeclaration<\n never,\n infer DispositionSchema\n >\n ? DispositionSchema\n : never;\n\n/** Literal Agent ID, retained by Agent.make. */\nexport type Name<A extends AnyDefinition | Any> = DefinitionOf<A>[\"id\"] extends AgentId &\n (infer N extends string)\n ? N\n : string;\n\n/** Declared update Schema, or never for Agents without updates. */\nexport type UpdatesSchema<A extends AnyDefinition | Any> = Exclude<\n DefinitionOf<A>[\"updates\"],\n undefined\n>;\n\n/** Decoded intermediate update value. */\nexport type Update<A extends AnyDefinition | Any> = UpdatesSchema<A>[\"Type\"];\n\n/** Decoded input type of a definition or binding. */\nexport type Input<AgentValue extends AnyDefinition | Any> =\n DefinitionOf<AgentValue>[\"input\"][\"Type\"];\n\n/** Encoded input accepted by the primary execution operations. */\nexport type EncodedInput<AgentValue extends AnyDefinition | Any> =\n DefinitionOf<AgentValue>[\"input\"][\"Encoded\"];\n\n/** Decoded output type of a definition or binding. */\nexport type Output<AgentValue extends AnyDefinition | Any> =\n DefinitionOf<AgentValue>[\"output\"][\"Type\"];\n\n/** Input Schema carried by a definition or binding. */\nexport type InputSchema<AgentValue extends AnyDefinition | Any> = DefinitionOf<AgentValue>[\"input\"];\n\n/** Output Schema carried by a definition or binding. */\nexport type OutputSchema<AgentValue extends AnyDefinition | Any> =\n DefinitionOf<AgentValue>[\"output\"];\n\n/** Application run-disposition Schema carried by a definition or binding, or `never`. */\nexport type RunDispositionSchema<AgentValue extends AnyDefinition | Any> = RunDispositionSchemaOf<\n DefinitionOf<AgentValue>\n>;\n\n/** Decoded application run disposition declared by a definition or binding. */\nexport type RunDisposition<AgentValue extends AnyDefinition | Any> = [\n RunDispositionSchema<AgentValue>,\n] extends [never]\n ? never\n : RunDispositionSchema<AgentValue>[\"Type\"];\n\n/** Validation failure admitted only by definitions that declare a run disposition. */\nexport type RunDispositionFailure<AgentValue extends AnyDefinition | Any> = [\n RunDispositionSchemaOf<DefinitionOf<AgentValue>>,\n] extends [never]\n ? never\n : AgentRunDispositionError;\n\n/** Effect AI tool map carried by a definition or binding. */\nexport type Tools<AgentValue extends AnyDefinition | Any> = Toolkit.Tools<\n DefinitionOf<AgentValue>[\"toolkit\"]\n>;\n\ntype ApplicationTools<A extends AnyDefinition> = [UpdatesSchema<A>] extends [never]\n ? Tools<A>\n : Omit<Tools<A>, \"emit_update\">;\n\ntype ToolMapValues<ToolMap extends Record<string, Tool.Any>> = ToolMap extends unknown\n ? ToolMap[keyof ToolMap]\n : never;\n\n/** All possible tools, including keys present in only one definition or binding branch. */\nexport type ToolUnion<AgentValue extends AnyDefinition | Any> = ToolMapValues<Tools<AgentValue>>;\n\n/** Instruction, tool-handler, and Schema services required before a Model is bound. */\nexport type DefinitionRequirements<DefinitionValue extends AnyDefinition> =\n DefinitionValue extends unknown\n ?\n | EffectServices<InstructionEffect<DefinitionValue[\"instructions\"], Input<DefinitionValue>>>\n | EffectServices<InputPromptEffect<DefinitionValue[\"inputPrompt\"], Input<DefinitionValue>>>\n | Tool.HandlersFor<ApplicationTools<DefinitionValue>>\n | Tool.HandlerServices<ToolMapValues<ApplicationTools<DefinitionValue>>>\n // The interpreter canonically re-encodes decoded Tool parameters before recording them.\n | Tool.ParametersSchema<ToolUnion<DefinitionValue>>[\"EncodingServices\"]\n | Tool.SuccessSchema<ToolUnion<DefinitionValue>>[\"DecodingServices\"]\n | DefinitionValue[\"input\"][\"DecodingServices\"]\n | DefinitionValue[\"input\"][\"EncodingServices\"]\n | DefinitionValue[\"output\"][\"DecodingServices\"]\n | DefinitionValue[\"output\"][\"EncodingServices\"]\n | UpdatesSchema<DefinitionValue>[\"DecodingServices\"]\n | UpdatesSchema<DefinitionValue>[\"EncodingServices\"]\n | RunDispositionSchemaOf<DefinitionValue>[\"DecodingServices\"]\n | RunDispositionSchemaOf<DefinitionValue>[\"EncodingServices\"]\n : never;\n\n/** Definition services plus native model services, or a binding's model Layer requirements. */\nexport type Requirements<AgentValue extends AnyDefinition | Any> =\n | DefinitionRequirements<DefinitionOf<AgentValue>>\n | (AgentValue extends { readonly model: infer ModelValue }\n ? ModelRequirements<ModelValue>\n : ModelServices);\n\n// Distribute after unwrapping bindings too: withModel may itself contain a definition union.\ntype DefinitionFailure<DefinitionValue extends AnyDefinition> = DefinitionValue extends unknown\n ?\n | EffectError<InstructionEffect<DefinitionValue[\"instructions\"], Input<DefinitionValue>>>\n | EffectError<InputPromptEffect<DefinitionValue[\"inputPrompt\"], Input<DefinitionValue>>>\n | Tool.HandlerError<ToolUnion<DefinitionValue>>\n : never;\n\n/** Failures from every possible definition, preserving each branch's instruction input type. */\nexport type Failure<AgentValue extends AnyDefinition | Any> =\n | DefinitionFailure<DefinitionOf<AgentValue>>\n | AiError.AiError\n | AgentInputError\n | AgentOutputError\n | RunDispositionFailure<AgentValue>;\n\n/** Validate an agent ID and return a shallowly frozen, model-agnostic definition. */\nexport function make<\n const Name extends string,\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions extends InstructionSource<InputSchema[\"Type\"], unknown, unknown>,\n ToolkitValue extends Toolkit.Any,\n DispositionSchema extends Schema.Top,\n InputPromptValue extends InputPromptSource<InputSchema[\"Type\"], unknown, unknown> | undefined,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n>(\n id: Name,\n options: DefinitionOptions<\n InputSchema,\n OutputSchema,\n Instructions,\n ToolkitValue,\n RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>,\n InputPromptValue,\n UpdatesSchema\n > & {\n readonly runDisposition: RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>;\n readonly inputPrompt: InputPromptValue;\n },\n): Definition<\n InputSchema,\n OutputSchema,\n Instructions,\n UpdateToolkit<ToolkitValue, NoInfer<UpdatesSchema>>,\n RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>,\n InputPromptValue,\n NoInfer<UpdatesSchema>\n> & { readonly id: AgentId & Name };\n\nexport function make<\n const Name extends string,\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions extends InstructionSource<InputSchema[\"Type\"], unknown, unknown>,\n ToolkitValue extends Toolkit.Any,\n DispositionSchema extends Schema.Top,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n>(\n id: Name,\n options: DefinitionOptions<\n InputSchema,\n OutputSchema,\n Instructions,\n ToolkitValue,\n RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>,\n undefined,\n UpdatesSchema\n > & {\n readonly runDisposition: RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>;\n readonly inputPrompt?: undefined;\n },\n): Definition<\n InputSchema,\n OutputSchema,\n Instructions,\n UpdateToolkit<ToolkitValue, NoInfer<UpdatesSchema>>,\n RunDispositionDeclaration<OutputSchema[\"Type\"], DispositionSchema>,\n undefined,\n NoInfer<UpdatesSchema>\n> & { readonly id: AgentId & Name };\n\nexport function make<\n const Name extends string,\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions extends InstructionSource<InputSchema[\"Type\"], unknown, unknown>,\n ToolkitValue extends Toolkit.Any,\n InputPromptValue extends InputPromptSource<InputSchema[\"Type\"], unknown, unknown> | undefined,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n>(\n id: Name,\n options: DefinitionOptions<\n InputSchema,\n OutputSchema,\n Instructions,\n ToolkitValue,\n undefined,\n InputPromptValue,\n UpdatesSchema\n > & {\n readonly inputPrompt: InputPromptValue;\n readonly runDisposition?: undefined;\n },\n): Definition<\n InputSchema,\n OutputSchema,\n Instructions,\n UpdateToolkit<ToolkitValue, NoInfer<UpdatesSchema>>,\n undefined,\n InputPromptValue,\n NoInfer<UpdatesSchema>\n> & { readonly id: AgentId & Name };\n\nexport function make<\n const Name extends string,\n InputSchema extends Schema.Top,\n OutputSchema extends Schema.Top,\n Instructions extends InstructionSource<InputSchema[\"Type\"], unknown, unknown>,\n ToolkitValue extends Toolkit.Any,\n UpdatesSchema extends Schema.Top | undefined = undefined,\n>(\n id: Name,\n options: DefinitionOptions<\n InputSchema,\n OutputSchema,\n Instructions,\n ToolkitValue,\n undefined,\n undefined,\n UpdatesSchema\n > & {\n readonly inputPrompt?: undefined;\n readonly runDisposition?: undefined;\n },\n): Definition<\n InputSchema,\n OutputSchema,\n Instructions,\n UpdateToolkit<ToolkitValue, NoInfer<UpdatesSchema>>,\n undefined,\n undefined,\n NoInfer<UpdatesSchema>\n> & { readonly id: AgentId & Name };\n\nexport function make(\n id: string,\n options: {\n readonly updates?: Schema.Top | undefined;\n readonly input: Schema.Top;\n readonly output: Schema.Top;\n readonly instructions: unknown;\n readonly inputPrompt?: unknown;\n readonly toolkit: Toolkit.Any;\n readonly toolExposure?: Configuration | undefined;\n readonly policy?: Partial<AgentPolicyInput> | undefined;\n readonly completion?: CompletionToolDeclaration | undefined;\n readonly completionFromTools?: ReadonlyArray<CompletionFromToolDeclaration> | undefined;\n readonly runDisposition?: RunDispositionDeclaration<never, Schema.Top> | undefined;\n readonly description?: string | undefined;\n readonly metadata?: Readonly<Record<string, string>> | undefined;\n },\n): AnyDefinition {\n const completionNames = new Set<string>();\n\n for (const declaration of options.completionFromTools ?? []) {\n if (declaration.tool === options.completion?.tool || completionNames.has(declaration.tool)) {\n throw new Error(`Tool ${declaration.tool} has more than one completion declaration`);\n }\n if (!Object.hasOwn(options.toolkit.tools, declaration.tool)) {\n throw new Error(`Unknown completion Tool ${declaration.tool}`);\n }\n completionNames.add(declaration.tool);\n }\n\n return Object.freeze({\n ...options,\n toolkit: withUpdateTool(options.toolkit, options.updates),\n policy: AgentPolicy.resolve(options.policy),\n policyOverrides: Object.freeze({ ...options.policy }),\n toolExposure:\n options.toolExposure === undefined\n ? undefined\n : Object.freeze({\n ...options.toolExposure,\n initialToolNames: Object.freeze([...(options.toolExposure.initialToolNames ?? [])]),\n }),\n id: S.decodeSync(AgentId)(id),\n metadata: options.metadata === undefined ? undefined : Object.freeze({ ...options.metadata }),\n completion:\n options.completion === undefined ? undefined : Object.freeze({ ...options.completion }),\n completionFromTools:\n options.completionFromTools === undefined\n ? undefined\n : Object.freeze(\n options.completionFromTools.map((declaration) => Object.freeze({ ...declaration })),\n ),\n runDisposition:\n options.runDisposition === undefined\n ? undefined\n : Object.freeze({ ...options.runDisposition }),\n });\n}\n\n/** Bind a native model or thread resolver without acquiring or hiding its requirements. */\nexport const withModel = <DefinitionValue extends AnyDefinition, ModelValue>(\n definition: DefinitionValue,\n model: NativeModel<ModelValue>,\n): Binding<DefinitionValue, ModelValue> =>\n Object.freeze({\n definition,\n model,\n });\n"],"mappings":";;;;;;;;;AAMA,MAAa,cAAoC,WAC/C,KAAK,KAAK,eAAe;CACvB,aAAa;CACb,YAAY,OAAO,OAAO,EAAE,OAAO,OAAO,CAAC;CAC3C,SAAS,OAAO;CAChB,SAAS;CACT,aAAa;AACf,CAAC,CAAC,CAAC,cAAc,OAAO;AAS1B,MAAa,kBACX,SACA,WACgB;CAChB,IAAI,WAAW,KAAA,GAAW,OAAO;CACjC,IAAI,OAAO,OAAO,QAAQ,OAAO,aAAa,GAC5C,MAAM,IAAI,UAAU,2CAA2C;CAEjE,OAAO,QAAQ,KAAK,GAAG,OAAO,OAAO,QAAQ,KAAK,GAAG,WAAW,MAAM,CAAC;AACzE;;;;;;;;;;;ACqBA,MAAa,mBAAmB,UAC9B,aAAa,SAAS,OAAO,MAAM,YAAY;;AA2LjD,MAAa,iBAAiB,EAAE,OAAO;CACrC,MAAM,EAAE;CACR,aAAa,EAAE,SAAS,CAAC,SAAS,QAAQ,CAAC;;CAE3C,iBAAiB,EAAE;AACrB,CAAC;;;;;;;;AAWD,MAAa,gBAAgB,UAA8D;CACzF,MAAM,aAAa,gBAAgB,QAAQ,MAAM,aAAa;CAE9D,OAAO,OAAO,OAAO,WAAW,QAAQ,KAAK,CAAC,CAAC,KAAK,SAClD,eAAe,KAAK;EAClB,MAAM,KAAK;EACX,aAAa,KAAK;EAClB,iBAAiB,CAAC,KAAK,kBAAkB,IAAI,KAAK,KAAK;CACzD,CAAC,CACH;AACF;AAqQA,SAAgB,KACd,IACA,SAee;CACf,MAAM,kCAAkB,IAAI,IAAY;CAExC,KAAK,MAAM,eAAe,QAAQ,uBAAuB,CAAC,GAAG;EAC3D,IAAI,YAAY,SAAS,QAAQ,YAAY,QAAQ,gBAAgB,IAAI,YAAY,IAAI,GACvF,MAAM,IAAI,MAAM,QAAQ,YAAY,KAAK,0CAA0C;EAErF,IAAI,CAAC,OAAO,OAAO,QAAQ,QAAQ,OAAO,YAAY,IAAI,GACxD,MAAM,IAAI,MAAM,2BAA2B,YAAY,MAAM;EAE/D,gBAAgB,IAAI,YAAY,IAAI;CACtC;CAEA,OAAO,OAAO,OAAO;EACnB,GAAG;EACH,SAAS,eAAe,QAAQ,SAAS,QAAQ,OAAO;EACxD,QAAQ,YAAY,QAAQ,QAAQ,MAAM;EAC1C,iBAAiB,OAAO,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC;EACpD,cACE,QAAQ,iBAAiB,KAAA,IACrB,KAAA,IACA,OAAO,OAAO;GACZ,GAAG,QAAQ;GACX,kBAAkB,OAAO,OAAO,CAAC,GAAI,QAAQ,aAAa,oBAAoB,CAAC,CAAE,CAAC;EACpF,CAAC;EACP,IAAI,EAAE,WAAW,OAAO,CAAC,CAAC,EAAE;EAC5B,UAAU,QAAQ,aAAa,KAAA,IAAY,KAAA,IAAY,OAAO,OAAO,EAAE,GAAG,QAAQ,SAAS,CAAC;EAC5F,YACE,QAAQ,eAAe,KAAA,IAAY,KAAA,IAAY,OAAO,OAAO,EAAE,GAAG,QAAQ,WAAW,CAAC;EACxF,qBACE,QAAQ,wBAAwB,KAAA,IAC5B,KAAA,IACA,OAAO,OACL,QAAQ,oBAAoB,KAAK,gBAAgB,OAAO,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CACpF;EACN,gBACE,QAAQ,mBAAmB,KAAA,IACvB,KAAA,IACA,OAAO,OAAO,EAAE,GAAG,QAAQ,eAAe,CAAC;CACnD,CAAC;AACH;;AAGA,MAAa,aACX,YACA,UAEA,OAAO,OAAO;CACZ;CACA;AACF,CAAC"}
@@ -8,14 +8,14 @@ import { n as CurrentToolCatalog } from "./ToolExposure-UCN12eCd.mjs";
8
8
  import { s as ToolBroker } from "./ToolBroker-DWs4tZra.mjs";
9
9
  import { a as AgentInputError, c as AgentPolicyError, d as AgentToolAuthorizationDenied, f as ContextBudgetError, m as ModelProtocolError, n as AgentApprovalPending, p as ContextOverflowError, s as AgentOutputError, t as AgentApprovalDenied, u as AgentToolAuthorizationCheckError } from "./AgentError-Bn1ytXRD.mjs";
10
10
  import { t as AgentPolicy } from "./AgentPolicy-BqDoSXO6.mjs";
11
- import { C as Requirements, D as RunDispositionSchema, E as RunDispositionFailure, M as UpdatesSchema, S as OutputSchema, T as RunDispositionDeclaration, _ as InstructionSource, a as CompletionFromToolDeclaration, c as Definition, d as EncodedInput, f as Failure, k as ToolUnion, m as InputPromptSource, n as Any, r as AnyDefinition, s as CompletionToolDeclaration, t as Agent_d_exports, x as Output } from "./Agent-Bk-mLtov.mjs";
11
+ import { A as ToolUnion, C as OutputSchema, D as RunDispositionFailure, E as RunDispositionDeclaration, N as UpdatesSchema, O as RunDispositionSchema, S as Output, _ as InstructionSource, a as CompletionFromToolDeclaration, c as Definition, d as EncodedInput, f as Failure, m as InputPromptSource, n as Any, r as AnyDefinition, s as CompletionToolDeclaration, t as Agent_d_exports, w as Requirements } from "./Agent-B3bxhC9q.mjs";
12
12
  import { n as WorkerBudgetScope } from "./Worker-Bbj9uq5H.mjs";
13
13
  import { a as ContextWindow } from "./ContextWindow-DRQ5Mbm2.mjs";
14
14
  import { n as CompactionError } from "./ContextCompactor-WwSIG_Z2.mjs";
15
15
  import { t as DurableStep } from "./DurableStep-Cry_iol4.mjs";
16
- import { B as RunSubagentChildIdentity, H as RunSubagentEstablishRequest, M as RunOptions, S as RunContextPreparationError, W as RunSubagentJoinRequest, i as ChildEstablishStatus, l as ModelUsageAccounting, t as AgentUpdateAcceptance, x as RunContextPreparation } from "./RunOptions-qOcPv08p.mjs";
17
- import { t as MessagingHost } from "./MessagingHost-nwBMdRoh.mjs";
18
- import { i as SubagentHost } from "./SubagentHost-DEPw4YME.mjs";
16
+ import { B as RunSubagentChildIdentity, H as RunSubagentEstablishRequest, M as RunOptions, S as RunContextPreparationError, W as RunSubagentJoinRequest, i as ChildEstablishStatus, l as ModelUsageAccounting, t as AgentUpdateAcceptance, x as RunContextPreparation } from "./RunOptions-B8oLx8BF.mjs";
17
+ import { t as MessagingHost } from "./MessagingHost-DCRod9xD.mjs";
18
+ import { i as SubagentHost } from "./SubagentHost-BqFxCSNC.mjs";
19
19
  import { t as RunEventSink } from "./RunEventSink-D5aVhISG.mjs";
20
20
  import { AiError, LanguageModel, Model, Prompt, Tool, Toolkit } from "effect/unstable/ai";
21
21
  import { Cause, Context, Effect, Layer, Option, Schema, Scope, Stream, Tracer } from "effect";
@@ -343,4 +343,4 @@ declare namespace AgentRuntime_d_exports {
343
343
  }
344
344
  //#endregion
345
345
  export { start as A, decodeFinalOutput as C, renderInputPrompt as D, projectCompletionOutput as E, withTerminalDefectEvent as F, stream as M, streamUnknown as N, run as O, streamWithUsageAccountingUnknown as P, ToolCallWaiting as S, projectCompletionFromToolOutput as T, SubagentDurability as _, AgentResultSchema as a, SubagentDurabilityError as b, AgentSpawner as c, DetachedRun as d, EngineProvidedToolServices as f, SpawnedChildRun as g, SpawnRunOptions as h, AgentResult as i, startUnknown as j, runUnknown as k, AgentSpawnerParent as l, SpawnDelegation as m, AgentChildPending as n, AgentRuntimeFailure as o, RuntimeBinding as p, AgentCompletionProjectionRequirements as r, AgentRuntimeRequirements as s, AgentRuntime_d_exports as t, AgentSpawnerService as u, SubagentDurabilityDurable as v, encodeRunDisposition as w, SubagentDurabilityService as x, SubagentDurabilityEphemeral as y };
346
- //# sourceMappingURL=AgentRuntime-BEXToYl1.d.mts.map
346
+ //# sourceMappingURL=AgentRuntime-BxSd0sPL.d.mts.map
@@ -4,6 +4,7 @@ import { n as utf8ByteLength } from "./utf8-DchGZRBd.mjs";
4
4
  import { ToolParameterRejection, TruncatedToolResult, applyToolResultBounds, unserializableToolResult } from "./core/ToolResult.mjs";
5
5
  import { IdempotencyKey } from "./core/Receipt.mjs";
6
6
  import { Emitter, Update, UpdateError } from "./core/AgentUpdates.mjs";
7
+ import { i as isModelResolver } from "./Agent-Iy5_eY3g.mjs";
7
8
  import { AgentApprovalDenied, AgentApprovalPending, AgentInputError, AgentOutputError, AgentPolicyError, AgentRunDispositionError, AgentToolAuthorizationDenied, ContextBudgetError, ContextOverflowError, ModelProtocolError } from "./core/AgentError.mjs";
8
9
  import { IdGenerator as IdGenerator$1 } from "./core/IdGenerator.mjs";
9
10
  import { DelegationDepth, SubagentParentLink, getToolExecutionKind, isSubagentToolAllowed } from "./core/SubagentContract.mjs";
@@ -1518,7 +1519,7 @@ const executePreparedToolCall = (context, turnId, toolkit, prepared, trace, resu
1518
1519
  isFailure: result.isFailure
1519
1520
  };
1520
1521
  terminalResultCommitted = true;
1521
- if (observer !== void 0 && event._tag === "ToolCallFailed") failureObservation = {
1522
+ if (observer !== void 0 && event._tag === "ToolCallFailed" && rejection === void 0) failureObservation = {
1522
1523
  _tag: "ModelToolFailure",
1523
1524
  kind: "declared-failure",
1524
1525
  agentId: context.agentId,
@@ -2794,6 +2795,11 @@ const makeTurn = (agent, context, prompt, turn, priorToolCalls, options) => Stre
2794
2795
  ...outputContractMessage === void 0 ? {} : { outputContract: outputContractMessage }
2795
2796
  };
2796
2797
  const modelContext = options.context === void 0 ? { prompt } : yield* options.context.prepare(contextRequest);
2798
+ if (context.resolvedModel && modelContext.modelCall !== void 0) return yield* new AiError.AiError({
2799
+ module: "AgentRuntime",
2800
+ method: "resolveModel",
2801
+ reason: new AiError.InvalidRequestError({ description: "Context preparation cannot replace a thread-resolved model" })
2802
+ });
2797
2803
  const callContext = modelContext.modelCall === void 0 ? void 0 : yield* Schema.decodeEffect(ModelCallContext)(modelContext.modelCall.context).pipe(Effect.mapError((cause) => CompactionError.make({
2798
2804
  message: "Invalid resolved model context bounds",
2799
2805
  cause
@@ -3643,8 +3649,12 @@ function streamWithCompletion(agentValue, input, runOptions = {}, onCompleted, o
3643
3649
  const initialToolSelection = options.toolSelection ?? (agent.definition.toolExposure === void 0 ? void 0 : { toolNames: agent.definition.toolExposure.initialToolNames ?? [] });
3644
3650
  const updateSchema = agent.definition.updates;
3645
3651
  const updateContext = yield* Effect.context();
3652
+ const validateUpdate = updateSchema === void 0 ? () => Effect.fail(new UpdateError({ reason: "unavailable" })) : (value) => Schema.decodeEffect(updateSchema)(value).pipe(Effect.provide(updateContext), Effect.asVoid, Effect.mapError(() => new UpdateError({ reason: "validation" })));
3653
+ const languageModel = yield* LanguageModel.LanguageModel;
3654
+ const resolver = isModelResolver(languageModel) ? languageModel : void 0;
3646
3655
  const context = {
3647
- validateUpdate: updateSchema === void 0 ? () => Effect.fail(new UpdateError({ reason: "unavailable" })) : (value) => Schema.decodeEffect(updateSchema)(value).pipe(Effect.provide(updateContext), Effect.asVoid, Effect.mapError(() => new UpdateError({ reason: "validation" }))),
3656
+ resolvedModel: resolver !== void 0,
3657
+ validateUpdate,
3648
3658
  updates: /* @__PURE__ */ new Map(),
3649
3659
  updateBytes: 0,
3650
3660
  updatePermits: yield* Semaphore.make(1),
@@ -3788,7 +3798,7 @@ function streamWithCompletion(agentValue, input, runOptions = {}, onCompleted, o
3788
3798
  toolCalls: resumeUsage?.toolCalls ?? 0
3789
3799
  };
3790
3800
  }
3791
- return Stream.fromEffectRepeat(Effect.suspend(() => {
3801
+ const turns = Stream.fromEffectRepeat(Effect.suspend(() => {
3792
3802
  const current = pending;
3793
3803
  pending = void 0;
3794
3804
  return current === void 0 ? Cause.done() : Effect.succeed(current);
@@ -3799,6 +3809,29 @@ function streamWithCompletion(agentValue, input, runOptions = {}, onCompleted, o
3799
3809
  }
3800
3810
  return Result.succeed(output);
3801
3811
  })));
3812
+ if (resolver === void 0) return turns;
3813
+ const catalog = yield* eligibleCatalog(agent.definition, {
3814
+ threadId,
3815
+ runId,
3816
+ turn: pending.turn,
3817
+ input: context.input
3818
+ }, options.subagentGrant, options.delegationDepth ?? options.parentLink?.depth ?? 0);
3819
+ const selectionPrompt = yield* Schema.encodeEffect(Schema.fromJsonString(Prompt.Prompt))(pending.prompt).pipe(Effect.mapError((cause) => new AiError.AiError({
3820
+ module: "AgentRuntime",
3821
+ method: "resolveModel",
3822
+ reason: new AiError.InvalidRequestError({ description: `Cannot encode model selection context: ${cause.message}` })
3823
+ })));
3824
+ const selected = yield* resolver.resolve({
3825
+ threadId,
3826
+ state: {
3827
+ prompt: selectionPrompt,
3828
+ tools: catalog.map(({ tool }) => ({
3829
+ name: tool.name,
3830
+ description: tool.description ?? ""
3831
+ }))
3832
+ }
3833
+ });
3834
+ return turns.pipe(Stream.provide(selected, { local: true }));
3802
3835
  }));
3803
3836
  const durationLimit = durationLimitError(agent.definition.policy);
3804
3837
  const deadline = enforceDurationDeadline(execution, durationDeadlineMillis, durationLimit);
@@ -4688,4 +4721,4 @@ var AgentRuntime_exports = /* @__PURE__ */ __exportAll({
4688
4721
  //#endregion
4689
4722
  export { stream as _, SubagentDurability as a, withTerminalDefectEvent as b, decodeFinalOutput as c, projectCompletionOutput as d, renderInputPrompt as f, startUnknown as g, start as h, AgentSpawner as i, encodeRunDisposition as l, runUnknown as m, AgentChildPending as n, SubagentDurabilityError as o, run as p, AgentResultSchema as r, ToolCallWaiting as s, AgentRuntime_exports as t, projectCompletionFromToolOutput as u, streamUnknown as v, streamWithUsageAccountingUnknown as y };
4690
4723
 
4691
- //# sourceMappingURL=AgentRuntime-e2M5UoXn.mjs.map
4724
+ //# sourceMappingURL=AgentRuntime-C291vZTk.mjs.map