@dual-os/sdk 0.8.0-next.0 → 0.8.0-next.1

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 (113) hide show
  1. package/README.md +5 -17
  2. package/dist/Action.d.ts +0 -1
  3. package/dist/Action.js +1 -2
  4. package/dist/AgentChannel.d.ts +11 -3
  5. package/dist/AgentChannel.d.ts.map +1 -1
  6. package/dist/AgentChannel.js +31 -5
  7. package/dist/AgentChannel.js.map +1 -1
  8. package/dist/AgentChannelConformance.d.ts +0 -1
  9. package/dist/AgentChannelConformance.js +1 -2
  10. package/dist/AgentChannelRuntime.d.ts +0 -1
  11. package/dist/AgentChannelRuntime.d.ts.map +1 -1
  12. package/dist/AgentChannelRuntime.js +3 -4
  13. package/dist/AgentChannelRuntime.js.map +1 -1
  14. package/dist/AiProvider.d.ts +0 -1
  15. package/dist/AiProvider.js +1 -2
  16. package/dist/AuthMethod.d.ts +0 -1
  17. package/dist/AuthMethod.js +1 -2
  18. package/dist/AuthMethodBinding.d.ts +0 -1
  19. package/dist/AuthMethodBinding.js +1 -2
  20. package/dist/AuthMethodExecution.d.ts +0 -1
  21. package/dist/AuthMethodExecution.js +1 -2
  22. package/dist/ConnectionResolver.d.ts +0 -1
  23. package/dist/ConnectionResolver.js +1 -2
  24. package/dist/DefinitionError.d.ts +0 -1
  25. package/dist/DefinitionError.js +1 -2
  26. package/dist/DualRegistry.d.ts +0 -1
  27. package/dist/DualRegistry.js +1 -2
  28. package/dist/DualRuntime.d.ts +0 -1
  29. package/dist/DualRuntime.js +1 -2
  30. package/dist/Files.d.ts +0 -1
  31. package/dist/Files.js +1 -2
  32. package/dist/Group.d.ts +0 -1
  33. package/dist/Group.js +1 -2
  34. package/dist/Http.d.ts +0 -1
  35. package/dist/Http.d.ts.map +1 -1
  36. package/dist/Http.js +4 -5
  37. package/dist/Http.js.map +1 -1
  38. package/dist/Mcp.d.ts +0 -1
  39. package/dist/Mcp.js +1 -2
  40. package/dist/OAuth2TokenRefresher.d.ts +0 -1
  41. package/dist/OAuth2TokenRefresher.js +1 -2
  42. package/dist/OAuthFlow.d.ts +0 -1
  43. package/dist/OAuthFlow.js +1 -2
  44. package/dist/Plugin.d.ts +0 -1
  45. package/dist/Plugin.js +1 -2
  46. package/dist/PluginRuntime.d.ts +0 -1
  47. package/dist/PluginRuntime.js +1 -2
  48. package/dist/Runner.js +3 -4
  49. package/dist/Runner.js.map +1 -1
  50. package/dist/ToolFile.d.ts +0 -1
  51. package/dist/ToolFile.js +1 -2
  52. package/dist/Trigger.d.ts +0 -1
  53. package/dist/Trigger.js +1 -2
  54. package/dist/_virtual/_rolldown/runtime.js +1 -2
  55. package/dist/internal/auth-context.d.ts +0 -2
  56. package/dist/internal/auth-context.d.ts.map +1 -1
  57. package/dist/internal/auth-execution.d.ts +0 -2
  58. package/dist/internal/auth-execution.d.ts.map +1 -1
  59. package/dist/internal/auth-execution.js +1 -2
  60. package/dist/internal/auth-runtime.d.ts +0 -2
  61. package/dist/internal/auth-runtime.d.ts.map +1 -1
  62. package/dist/internal/auth-runtime.js +1 -2
  63. package/dist/internal/capabilities.d.ts +0 -2
  64. package/dist/internal/capabilities.d.ts.map +1 -1
  65. package/dist/internal/capabilities.js +1 -2
  66. package/dist/internal/children.d.ts +0 -2
  67. package/dist/internal/children.d.ts.map +1 -1
  68. package/dist/internal/children.js +1 -2
  69. package/dist/internal/collection-utils.d.ts +0 -2
  70. package/dist/internal/collection-utils.d.ts.map +1 -1
  71. package/dist/internal/collection-utils.js +1 -2
  72. package/dist/internal/dual/actions.d.ts +0 -2
  73. package/dist/internal/dual/actions.d.ts.map +1 -1
  74. package/dist/internal/dual/actions.js +1 -2
  75. package/dist/internal/dual/invoke.d.ts +0 -2
  76. package/dist/internal/dual/invoke.d.ts.map +1 -1
  77. package/dist/internal/dual/invoke.js +1 -2
  78. package/dist/internal/dual/registry.d.ts +0 -2
  79. package/dist/internal/dual/registry.d.ts.map +1 -1
  80. package/dist/internal/dual/registry.js +1 -2
  81. package/dist/internal/dual/triggers.d.ts +0 -2
  82. package/dist/internal/dual/triggers.d.ts.map +1 -1
  83. package/dist/internal/dual/triggers.js +1 -2
  84. package/dist/internal/handler-context.d.ts +0 -2
  85. package/dist/internal/handler-context.d.ts.map +1 -1
  86. package/dist/internal/handler-context.js +1 -2
  87. package/dist/internal/identifier.d.ts +0 -2
  88. package/dist/internal/identifier.d.ts.map +1 -1
  89. package/dist/internal/identifier.js +1 -2
  90. package/dist/internal/plugin-handlers.d.ts +0 -2
  91. package/dist/internal/plugin-handlers.d.ts.map +1 -1
  92. package/dist/internal/plugin-handlers.js +1 -2
  93. package/dist/internal/proto.d.ts +0 -2
  94. package/dist/internal/proto.d.ts.map +1 -1
  95. package/dist/internal/proto.js +1 -2
  96. package/dist/internal/schema-runtime.d.ts +0 -2
  97. package/dist/internal/schema-runtime.d.ts.map +1 -1
  98. package/dist/internal/schema-runtime.js +1 -2
  99. package/dist/internal/trigger-runtime-shared.d.ts +0 -2
  100. package/dist/internal/trigger-runtime-shared.d.ts.map +1 -1
  101. package/dist/internal/trigger-runtime-shared.js +1 -2
  102. package/dist/internal/trigger-runtime.d.ts +0 -2
  103. package/dist/internal/trigger-runtime.d.ts.map +1 -1
  104. package/dist/internal/trigger-runtime.js +1 -2
  105. package/dist/internal/types.d.ts +0 -2
  106. package/dist/internal/types.d.ts.map +1 -1
  107. package/dist/remote-runtime.d.ts +0 -1
  108. package/dist/remote-runtime.js +1 -2
  109. package/package.json +6 -7
  110. package/src/AgentChannel.ts +30 -2
  111. package/src/AgentChannelRuntime.ts +2 -1
  112. package/src/Http.ts +21 -4
  113. package/src/Runner.ts +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"AgentChannelRuntime.js","names":["AgentChannel.Key","AgentChannel.VerifiedIdentity","AgentChannel.ChannelError","AgentChannel.FailureCode","ConnectionResolver.Service","AgentChannel.handlerKey","AgentChannel.AccessOutcome","AgentChannel.schemasFor","AgentChannel.Verification","AgentChannel.CheckedResult"],"sources":["../src/AgentChannelRuntime.ts"],"sourcesContent":["/** Checked execution of pinned Agent Channel capabilities. No product lifecycle or persistence. */\nimport { Cause, Context, Effect, Layer, Option, Predicate, Schema } from \"effect\";\n\nimport * as AgentChannel from \"./AgentChannel.ts\";\nimport { ConnectionResolver } from \"./ConnectionResolver.ts\";\nimport type { AuthResolutionRequirements } from \"./internal/auth-execution.ts\";\nimport { findHandler } from \"./internal/handler-context.ts\";\nimport type * as Plugin from \"./Plugin.ts\";\n\n/** Host-only connection authority context. It is never included in handler inputs. */\nexport const ConnectionContext = Schema.Struct({\n actor: Schema.optionalKey(\n Schema.Union([\n Schema.Struct({ kind: Schema.Literal(\"user\"), userId: AgentChannel.Key }),\n Schema.Struct({\n kind: Schema.Literal(\"system\"),\n reason: Schema.optionalKey(AgentChannel.Key),\n }),\n ]),\n ),\n source: Schema.optionalKey(\n Schema.Struct({ kind: AgentChannel.Key, subjectId: Schema.optionalKey(AgentChannel.Key) }),\n ),\n tenant: Schema.optionalKey(\n Schema.Struct({ organizationId: AgentChannel.Key, teamId: AgentChannel.Key }),\n ),\n});\nconst Pin = Schema.Struct({ channelId: AgentChannel.Key });\nconst Input = Schema.Struct({\n ...Pin.fields,\n command: Schema.Unknown,\n connectionId: Schema.optionalKey(AgentChannel.Key),\n context: Schema.optionalKey(ConnectionContext),\n definitionSettings: Schema.Unknown,\n deploymentSettings: Schema.Unknown,\n});\nconst AccessInput = Schema.Struct({\n ...Pin.fields,\n connectionId: Schema.optionalKey(AgentChannel.Key),\n context: Schema.optionalKey(ConnectionContext),\n definitionSettings: Schema.Unknown,\n deploymentSettings: Schema.Unknown,\n identity: AgentChannel.VerifiedIdentity,\n});\nexport type Pin = typeof Pin.Type;\nexport type Input = typeof Input.Type;\nexport interface Interface {\n /** Reauthorize an already verified identity; does not verify a transport or execute provider operations. */\n readonly checkAccess: (\n input: unknown,\n ) => Effect.Effect<AgentChannel.AccessOutcome, AgentChannel.ChannelError>;\n readonly get: (pin: unknown) => Effect.Effect<AgentChannel.Definition, AgentChannel.ChannelError>;\n readonly decodeDefinitionSettings: (\n input: unknown,\n ) => Effect.Effect<Schema.Json, AgentChannel.ChannelError>;\n readonly decodeDeploymentSettings: (\n input: unknown,\n ) => Effect.Effect<Schema.Json, AgentChannel.ChannelError>;\n readonly execute: (\n input: unknown,\n ) => Effect.Effect<AgentChannel.CheckedResult, AgentChannel.ChannelError>;\n}\nexport class Service extends Context.Service<Service, Interface>()(\n \"@dual-os/sdk/AgentChannelRuntime\",\n) {}\n\ntype Definitions<P extends Plugin.Any> = P[\"agentChannels\"][number][\"definition\"];\ntype ChannelHandlers<P extends Plugin.Any, C> = C extends AgentChannel.Any\n ? AgentChannel.Handler<`${P[\"identifier\"]}/${C[\"identifier\"]}`>\n : never;\ntype PluginHandlers<P> = P extends Plugin.Any\n ? ChannelHandlers<P, P[\"agentChannels\"][number]>\n : never;\ntype ExtensionRequirements<D> = D extends {\n readonly extensions: infer Extensions extends Readonly<Record<string, Schema.Top>>;\n}\n ?\n | Extensions[keyof Extensions][\"DecodingServices\"]\n | Extensions[keyof Extensions][\"EncodingServices\"]\n : never;\nexport type Requirements<P extends Plugin.Any> =\n | PluginHandlers<P>\n | ExtensionRequirements<Definitions<P>>\n | Definitions<P>[\"definitionSettings\"][\"DecodingServices\"]\n | Definitions<P>[\"deploymentSettings\"][\"DecodingServices\"]\n | Definitions<P>[\"state\"][\"DecodingServices\"]\n | Definitions<P>[\"state\"][\"EncodingServices\"]\n | AuthResolutionRequirements<Definitions<P>[\"authMethods\"]>\n | (Definitions<P>[\"authMethods\"][number] extends never ? never : ConnectionResolver.Service);\n\nconst fail = (code: typeof AgentChannel.ErrorCode.Type) => new AgentChannel.ChannelError({ code });\nconst safe = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n code: typeof AgentChannel.ErrorCode.Type,\n): Effect.Effect<A, AgentChannel.ChannelError, R> =>\n effect.pipe(\n Effect.catchCause(cause =>\n Cause.hasInterrupts(cause) ? Effect.interrupt : Effect.fail(fail(code)),\n ),\n );\nconst AssetResultJson = Schema.Json.check(\n Schema.makeFilter(\n value => new TextEncoder().encode(JSON.stringify(value)).byteLength <= 14_680_064,\n ),\n);\nconst Json = Schema.Json.check(\n Schema.makeFilter(\n value => new TextEncoder().encode(JSON.stringify(value)).byteLength <= 2_097_152,\n ),\n);\nconst strict = { onExcessProperty: \"error\" } as const;\nconst decode = <S extends Schema.Top>(\n schema: S,\n input: unknown,\n code: typeof AgentChannel.ErrorCode.Type,\n) =>\n safe(\n Effect.suspend(() => Schema.decodeUnknownEffect(schema)(input, strict)),\n code,\n );\nconst json = (value: unknown, code: typeof AgentChannel.ErrorCode.Type) =>\n decode(Json, value, code);\nconst decodeData = Effect.fn(\"AgentChannelRuntime.decodeData\")(function* <S extends Schema.Top>(\n schema: S,\n input: unknown,\n code: typeof AgentChannel.ErrorCode.Type,\n largeAssetResult = false,\n) {\n const boundary = largeAssetResult ? AssetResultJson : Json;\n yield* decode(boundary, input, code);\n const value = yield* decode(schema, input, code);\n yield* decode(boundary, value, code);\n return value;\n});\n\nconst invokeHandler = (\n handler: AgentChannel.Handler,\n effect: Effect.Effect<unknown, unknown, unknown>,\n) =>\n effect.pipe(\n Effect.provideContext(handler.context),\n Effect.catch(error =>\n decode(\n Schema.TaggedStruct(\"AgentChannelHandlerError\", { code: AgentChannel.FailureCode }),\n Predicate.isObject(error) ? { ...error } : error,\n \"provider_failure\",\n ).pipe(\n Effect.flatMap(checked =>\n Effect.fail(\n new AgentChannel.ChannelError({ code: \"provider_failure\", providerCode: checked.code }),\n ),\n ),\n ),\n ),\n Effect.catchCause(cause => {\n if (Cause.hasInterrupts(cause)) return Effect.interrupt;\n const error = Cause.findErrorOption(cause);\n return Option.isSome(error) && error.value instanceof AgentChannel.ChannelError\n ? Effect.fail(error.value)\n : Effect.fail(fail(\"provider_failure\"));\n }),\n );\n\nconst checkExtensions = Effect.fn(\"AgentChannelRuntime.checkExtensions\")(function* (\n definition: AgentChannel.Definition,\n extensions: Readonly<Record<string, Schema.Json>> | undefined,\n code: typeof AgentChannel.ErrorCode.Type,\n) {\n for (const [key, value] of Object.entries(extensions ?? {})) {\n const schema = definition.extensions?.[key];\n if (schema === undefined) return yield* fail(code);\n // Extensions are checked values, not a provider payload escape hatch. No normalization.\n yield* decodeData(Schema.toType(schema), value, code);\n }\n});\nconst checkMessage = (\n features: AgentChannel.Features,\n destination: AgentChannel.Destination,\n content: AgentChannel.Content,\n): boolean =>\n (destination.kind === \"direct\" || features.groups) &&\n (destination.threadKey === undefined || features.threads) &&\n (content.mentions === undefined || features.mentions) &&\n (content.assets === undefined || features.assets) &&\n (content.replyToMessageKey === undefined || features.replies);\n\nconst checkDelivery = (\n features: AgentChannel.Features,\n command: Extract<AgentChannel.Command | AgentChannel.CommandV2, { kind: \"deliver\" }>,\n): boolean =>\n \"content\" in command\n ? checkMessage(features, command.destination, command.content)\n : checkMessage(features, command.destination, { text: \"\" }) &&\n (features.operations ?? []).includes(command.operation.kind);\n\nconst Material = Schema.Struct({\n connectionId: AgentChannel.Key,\n // The plugin worker's resolver marks its JSON-carried material.\n encoding: Schema.optionalKey(Schema.Literal(\"json\")),\n material: Schema.Unknown,\n methodId: AgentChannel.Key,\n providerId: AgentChannel.Key,\n setup: Schema.Unknown,\n});\nconst ResolveHook = Schema.declare(\n (value): value is (material: unknown, context: { readonly setup: unknown }) => unknown =>\n Predicate.isFunction(value),\n);\nconst resolveAuth = Effect.fn(\"AgentChannelRuntime.resolveAuth\")(function* (\n providerId: string,\n channelId: string,\n definition: AgentChannel.Definition,\n connectionId: string | undefined,\n phase: string,\n context: typeof ConnectionContext.Type | undefined,\n) {\n if (definition.authMethods.length === 0) {\n if (connectionId !== undefined) return yield* fail(\"invalid_auth\");\n return undefined;\n }\n // The host alone selects/authorizes the pinned connection. Its records never reach the plugin.\n if (connectionId === undefined) return yield* fail(\"invalid_auth\");\n const resolver = yield* Effect.serviceOption(ConnectionResolver.Service);\n if (Option.isNone(resolver)) return yield* fail(\"invalid_auth\");\n const raw = yield* safe(\n Effect.suspend(() =>\n resolver.value.resolve({\n connectionId,\n target: { phase, providerId, targetId: channelId, targetKind: \"agent-channel\" },\n ...(context === undefined ? {} : { context }),\n }),\n ),\n \"invalid_auth\",\n );\n const resolved = yield* decode(Material, raw, \"invalid_auth\");\n if (resolved.providerId !== providerId || resolved.connectionId !== connectionId) {\n return yield* fail(\"invalid_auth\");\n }\n const method = definition.authMethods.find(\n method =>\n resolved.methodId === method.identifier ||\n resolved.methodId === `${providerId}/${method.identifier}`,\n );\n if (method === undefined) return yield* fail(\"invalid_auth\");\n // Material the worker received as JSON decodes through each schema's JSON codec.\n const decodeAuth = <S extends Schema.Top>(schema: S, value: unknown) =>\n decode(\n resolved.encoding === \"json\" ? Schema.toCodecJson(schema) : schema,\n value,\n \"invalid_auth\",\n );\n const setup =\n method.setup === undefined\n ? yield* decode(Schema.Undefined, resolved.setup, \"invalid_auth\")\n : yield* decodeAuth(method.setup, resolved.setup);\n const material = yield* decodeAuth(method.material, resolved.material);\n let value: unknown;\n if (method.resolve === undefined) {\n value =\n method.material === method.value\n ? material\n : yield* decode(method.value, material, \"invalid_auth\");\n } else {\n const hook = yield* decode(ResolveHook, method.resolve, \"invalid_auth\");\n const output = yield* safe(\n Effect.suspend(() => {\n const result = hook(material, { setup });\n return Effect.isEffect(result) ? result : Effect.succeed(result);\n }),\n \"invalid_auth\",\n );\n value = yield* decode(method.value, output, \"invalid_auth\");\n }\n // Schemas may use Redacted for auth. Only this checked value, never material/setup/binding,\n // is exposed to the command handler.\n return { methodId: method.identifier, value };\n});\n\nconst find = (plugins: readonly Plugin.Any[], pin: Pin) => {\n for (const provider of plugins) {\n const channel = provider.agentChannels.find(\n channel => `${provider.identifier}/${channel.identifier}` === pin.channelId,\n );\n if (channel !== undefined) return { definition: channel.definition, provider };\n }\n return undefined;\n};\n\n/** Build from the installed plugins. */\nexport const layer = <P extends Plugin.Any>(\n plugins: readonly P[],\n): Layer.Layer<Service, never, Requirements<P>> =>\n Layer.effect(\n Service,\n Effect.gen(function* () {\n const context = yield* Effect.context<Requirements<P>>();\n const get = Effect.fn(\"AgentChannelRuntime.get\")(function* (input: unknown) {\n const pin = yield* decode(Pin, input, \"invalid_input\");\n const found = find(plugins, pin);\n if (found === undefined) return yield* fail(\"not_found\");\n yield* safe(\n Effect.sync(() => {\n AgentChannel.validateDefinition(\n found.definition,\n found.provider.identifier,\n found.provider.authMethods,\n );\n }),\n \"invalid_definition\",\n );\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(pin.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (\n Option.isNone(handler) ||\n !Predicate.isObject(handler.value.runtime) ||\n !Predicate.isFunction(handler.value.runtime.execute) ||\n !Predicate.isFunction(handler.value.runtime.verify) ||\n !Predicate.isFunction(handler.value.runtime.checkAccess)\n ) {\n return yield* fail(\"handler_unavailable\");\n }\n return found.definition;\n });\n const checkAccess = Effect.fn(\"AgentChannelRuntime.checkAccess\")(function* (input: unknown) {\n yield* json(input, \"invalid_input\");\n const request = yield* decode(AccessInput, input, \"invalid_input\");\n const definition = yield* get({ channelId: request.channelId });\n const found = find(plugins, request);\n if (found === undefined) return yield* fail(\"not_found\");\n const definitionSettings = yield* decodeData(\n definition.definitionSettings,\n request.definitionSettings,\n \"invalid_input\",\n );\n const deploymentSettings = yield* decodeData(\n definition.deploymentSettings,\n request.deploymentSettings,\n \"invalid_input\",\n );\n if (!checkMessage(definition.features, request.identity.conversation, { text: \"\" })) {\n return yield* fail(\"unsupported_feature\");\n }\n const auth = yield* resolveAuth(\n found.provider.identifier,\n request.channelId,\n definition,\n request.connectionId,\n \"check_access\",\n request.context,\n );\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(request.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (Option.isNone(handler)) return yield* fail(\"handler_unavailable\");\n const output = yield* invokeHandler(\n handler.value,\n Effect.suspend(() =>\n handler.value.runtime.checkAccess(request.identity, {\n definitionSettings,\n deploymentSettings,\n ...(auth === undefined ? {} : { auth }),\n }),\n ),\n );\n return yield* decodeData(AgentChannel.AccessOutcome, output, \"invalid_result\");\n });\n const execute = Effect.fn(\"AgentChannelRuntime.execute\")(function* (input: unknown) {\n yield* json(input, \"invalid_input\");\n const request = yield* decode(Input, input, \"invalid_input\");\n const definition = yield* get({ channelId: request.channelId });\n const found = find(plugins, request);\n if (found === undefined) return yield* fail(\"not_found\");\n const definitionSettings = yield* decodeData(\n definition.definitionSettings,\n request.definitionSettings,\n \"invalid_input\",\n );\n const deploymentSettings = yield* decodeData(\n definition.deploymentSettings,\n request.deploymentSettings,\n \"invalid_input\",\n );\n const schemas = AgentChannel.schemasFor(definition);\n const command: AgentChannel.Command | AgentChannel.CommandV2 = yield* decodeData(\n schemas.command,\n request.command,\n \"invalid_input\",\n );\n yield* checkExtensions(definition, command.extensions, \"invalid_input\");\n if (command.kind === \"deliver\" && command.operationKey !== command.deliveryKey) {\n return yield* fail(\"invalid_input\");\n }\n if (command.kind === \"deliver\" && !checkDelivery(definition.features, command)) {\n return yield* fail(\"unsupported_feature\");\n }\n if (\n command.kind === \"deliver\" &&\n \"operation\" in command &&\n command.operation.kind === \"set_reaction\" &&\n command.operation.target.kind === \"activation\" &&\n command.activationMessageKey === undefined\n ) {\n return yield* fail(\"invalid_input\");\n }\n if (\n command.kind === \"read_context\" &&\n (definition.features.readContext !== true ||\n !checkMessage(definition.features, command.destination, { text: \"\" }))\n ) {\n return yield* fail(\"unsupported_feature\");\n }\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(request.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (Option.isNone(handler)) return yield* fail(\"handler_unavailable\");\n const auth = yield* resolveAuth(\n found.provider.identifier,\n request.channelId,\n definition,\n request.connectionId,\n command.kind,\n request.context,\n );\n // Keep correlation facts independent of any mutation by provider code.\n const operationKey = command.operationKey;\n const kind = command.kind;\n const deliveryKey = command.kind === \"deliver\" ? command.deliveryKey : undefined;\n const assetKey = command.kind === \"read_asset\" ? command.asset.assetKey : undefined;\n const adapterContext = {\n definitionSettings,\n deploymentSettings,\n ...(auth === undefined ? {} : { auth }),\n };\n if (\n !Predicate.isFunction(handler.value.runtime.execute) ||\n !Predicate.isFunction(handler.value.runtime.verify) ||\n !Predicate.isFunction(handler.value.runtime.checkAccess)\n ) {\n return yield* fail(\"handler_unavailable\");\n }\n if (command.kind === \"receive\") {\n yield* decodeData(\n AgentChannel.Verification,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.verify(command.request, adapterContext)),\n ),\n \"invalid_result\",\n );\n }\n if (command.kind === \"read_asset\") {\n if (!definition.features.assets) return yield* fail(\"unsupported_feature\");\n const decision = yield* decodeData(\n AgentChannel.AccessOutcome,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() =>\n handler.value.runtime.checkAccess(command.identity, adapterContext),\n ),\n ),\n \"invalid_result\",\n );\n if (decision.decision !== \"allow\") {\n return yield* new AgentChannel.ChannelError({\n code: \"provider_failure\",\n providerCode: \"unauthorized\",\n });\n }\n }\n const output = yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.execute(command, adapterContext)),\n );\n const result: AgentChannel.Result | AgentChannel.ResultV2 = yield* decodeData(\n schemas.typeResult,\n output,\n \"invalid_result\",\n kind === \"read_asset\",\n );\n if (\n result.kind !== kind ||\n result.operationKey !== operationKey ||\n (result.kind === \"deliver\" && result.deliveryKey !== deliveryKey) ||\n (result.kind === \"read_asset\" && result.assetKey !== assetKey)\n ) {\n return yield* fail(\"invalid_result\");\n }\n yield* checkExtensions(definition, result.extensions, \"invalid_result\");\n if (\n result.kind === \"deliver\" &&\n result.status === \"pending\" &&\n !definition.features.deliveryState\n ) {\n return yield* fail(\"invalid_result\");\n }\n const allowedEvents: AgentChannel.EventV2[] = [];\n const deniedEventKeys: string[] = [];\n if (result.kind === \"receive\") {\n if (result.deniedEventKeys !== undefined) return yield* fail(\"invalid_result\");\n if (\n result.activationProof === \"verified\" &&\n (result.response === undefined || result.events.length !== 0)\n ) {\n return yield* fail(\"invalid_result\");\n }\n const eventKeys = new Set<string>();\n for (const event of result.events) {\n if (eventKeys.has(event.eventKey)) return yield* fail(\"invalid_result\");\n eventKeys.add(event.eventKey);\n if (\n event.kind === \"message\" &&\n !checkMessage(definition.features, event.conversation, event.content)\n ) {\n return yield* fail(\"invalid_result\");\n }\n if (\n (event.kind === \"echo\" || event.kind === \"stop\") &&\n !checkMessage(definition.features, event.conversation, { text: \"\" })\n ) {\n return yield* fail(\"invalid_result\");\n }\n if (event.kind === \"delivery_update\" && !definition.features.deliveryState) {\n return yield* fail(\"invalid_result\");\n }\n yield* checkExtensions(definition, event.extensions, \"invalid_result\");\n let denied = false;\n if (event.kind === \"message\" || event.kind === \"echo\" || event.kind === \"stop\") {\n const identity = yield* decodeData(\n AgentChannel.VerifiedIdentity,\n { conversation: event.conversation, senderKey: event.senderKey },\n \"invalid_result\",\n );\n const decision = yield* decodeData(\n AgentChannel.AccessOutcome,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.checkAccess(identity, adapterContext)),\n ),\n \"invalid_result\",\n );\n denied = decision.decision === \"deny\";\n }\n if (denied) {\n deniedEventKeys.push(event.eventKey);\n continue;\n }\n allowedEvents.push(event);\n }\n }\n // Store the encoded state so subsequent pinned commands can decode it exactly once.\n const encoded = yield* safe(\n Schema.encodeUnknownEffect(schemas.result)(\n result.kind === \"receive\"\n ? {\n ...result,\n events: allowedEvents,\n ...(deniedEventKeys.length === 0 ? {} : { deniedEventKeys }),\n }\n : result,\n strict,\n ),\n \"invalid_result\",\n );\n return yield* decodeData(\n AgentChannel.CheckedResult,\n encoded,\n \"invalid_result\",\n kind === \"read_asset\",\n );\n });\n // SAFETY: Requirements above account for each schema, auth method and Channel handler. The\n // dynamic lookup erases their union; the captured application context discharges it here.\n const run = <A>(\n effect: Effect.Effect<A, AgentChannel.ChannelError, unknown>,\n ): Effect.Effect<A, AgentChannel.ChannelError> =>\n // @effect-diagnostics-next-line unsafeEffectTypeAssertion:off -- Channel handlers are checked and their captured context satisfies the declared Requirements (SAFETY above).\n effect.pipe(Effect.provideContext(context)) as Effect.Effect<A, AgentChannel.ChannelError>;\n const decodeSettings = (field: \"definitionSettings\" | \"deploymentSettings\") =>\n Effect.fn(\"AgentChannelRuntime.decodeSettings\")(function* (input: unknown) {\n const request = yield* decode(\n Schema.Struct({ ...Pin.fields, value: Schema.Json }),\n input,\n \"invalid_input\",\n );\n const definition = yield* get({ channelId: request.channelId });\n const schema = definition[field];\n const value = yield* decodeData(schema, request.value, \"invalid_input\");\n return yield* json(\n yield* safe(Schema.encodeUnknownEffect(schema)(value, strict), \"invalid_input\"),\n \"invalid_input\",\n );\n });\n return Service.of({\n checkAccess: input => run(checkAccess(input)),\n decodeDefinitionSettings: input => run(decodeSettings(\"definitionSettings\")(input)),\n decodeDeploymentSettings: input => run(decodeSettings(\"deploymentSettings\")(input)),\n execute: input => run(execute(input)),\n get: input => run(get(input)),\n });\n }),\n );\n\nexport * as AgentChannelRuntime from \"./AgentChannelRuntime.ts\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"AgentChannelRuntime.js","names":["AgentChannel.Key","AgentChannel.VerifiedIdentity","AgentChannel.ChannelError","AgentChannel.resultByteLimit","AgentChannel.FailureCode","ConnectionResolver.Service","AgentChannel.handlerKey","AgentChannel.AccessOutcome","AgentChannel.schemasFor","AgentChannel.Verification","AgentChannel.CheckedResult"],"sources":["../src/AgentChannelRuntime.ts"],"sourcesContent":["/** Checked execution of pinned Agent Channel capabilities. No product lifecycle or persistence. */\nimport { Cause, Context, Effect, Layer, Option, Predicate, Schema } from \"effect\";\n\nimport * as AgentChannel from \"./AgentChannel.ts\";\nimport { ConnectionResolver } from \"./ConnectionResolver.ts\";\nimport type { AuthResolutionRequirements } from \"./internal/auth-execution.ts\";\nimport { findHandler } from \"./internal/handler-context.ts\";\nimport type * as Plugin from \"./Plugin.ts\";\n\n/** Host-only connection authority context. It is never included in handler inputs. */\nexport const ConnectionContext = Schema.Struct({\n actor: Schema.optionalKey(\n Schema.Union([\n Schema.Struct({ kind: Schema.Literal(\"user\"), userId: AgentChannel.Key }),\n Schema.Struct({\n kind: Schema.Literal(\"system\"),\n reason: Schema.optionalKey(AgentChannel.Key),\n }),\n ]),\n ),\n source: Schema.optionalKey(\n Schema.Struct({ kind: AgentChannel.Key, subjectId: Schema.optionalKey(AgentChannel.Key) }),\n ),\n tenant: Schema.optionalKey(\n Schema.Struct({ organizationId: AgentChannel.Key, teamId: AgentChannel.Key }),\n ),\n});\nconst Pin = Schema.Struct({ channelId: AgentChannel.Key });\nconst Input = Schema.Struct({\n ...Pin.fields,\n command: Schema.Unknown,\n connectionId: Schema.optionalKey(AgentChannel.Key),\n context: Schema.optionalKey(ConnectionContext),\n definitionSettings: Schema.Unknown,\n deploymentSettings: Schema.Unknown,\n});\nconst AccessInput = Schema.Struct({\n ...Pin.fields,\n connectionId: Schema.optionalKey(AgentChannel.Key),\n context: Schema.optionalKey(ConnectionContext),\n definitionSettings: Schema.Unknown,\n deploymentSettings: Schema.Unknown,\n identity: AgentChannel.VerifiedIdentity,\n});\nexport type Pin = typeof Pin.Type;\nexport type Input = typeof Input.Type;\nexport interface Interface {\n /** Reauthorize an already verified identity; does not verify a transport or execute provider operations. */\n readonly checkAccess: (\n input: unknown,\n ) => Effect.Effect<AgentChannel.AccessOutcome, AgentChannel.ChannelError>;\n readonly get: (pin: unknown) => Effect.Effect<AgentChannel.Definition, AgentChannel.ChannelError>;\n readonly decodeDefinitionSettings: (\n input: unknown,\n ) => Effect.Effect<Schema.Json, AgentChannel.ChannelError>;\n readonly decodeDeploymentSettings: (\n input: unknown,\n ) => Effect.Effect<Schema.Json, AgentChannel.ChannelError>;\n readonly execute: (\n input: unknown,\n ) => Effect.Effect<AgentChannel.CheckedResult, AgentChannel.ChannelError>;\n}\nexport class Service extends Context.Service<Service, Interface>()(\n \"@dual-os/sdk/AgentChannelRuntime\",\n) {}\n\ntype Definitions<P extends Plugin.Any> = P[\"agentChannels\"][number][\"definition\"];\ntype ChannelHandlers<P extends Plugin.Any, C> = C extends AgentChannel.Any\n ? AgentChannel.Handler<`${P[\"identifier\"]}/${C[\"identifier\"]}`>\n : never;\ntype PluginHandlers<P> = P extends Plugin.Any\n ? ChannelHandlers<P, P[\"agentChannels\"][number]>\n : never;\ntype ExtensionRequirements<D> = D extends {\n readonly extensions: infer Extensions extends Readonly<Record<string, Schema.Top>>;\n}\n ?\n | Extensions[keyof Extensions][\"DecodingServices\"]\n | Extensions[keyof Extensions][\"EncodingServices\"]\n : never;\nexport type Requirements<P extends Plugin.Any> =\n | PluginHandlers<P>\n | ExtensionRequirements<Definitions<P>>\n | Definitions<P>[\"definitionSettings\"][\"DecodingServices\"]\n | Definitions<P>[\"deploymentSettings\"][\"DecodingServices\"]\n | Definitions<P>[\"state\"][\"DecodingServices\"]\n | Definitions<P>[\"state\"][\"EncodingServices\"]\n | AuthResolutionRequirements<Definitions<P>[\"authMethods\"]>\n | (Definitions<P>[\"authMethods\"][number] extends never ? never : ConnectionResolver.Service);\n\nconst fail = (code: typeof AgentChannel.ErrorCode.Type) => new AgentChannel.ChannelError({ code });\nconst safe = <A, E, R>(\n effect: Effect.Effect<A, E, R>,\n code: typeof AgentChannel.ErrorCode.Type,\n): Effect.Effect<A, AgentChannel.ChannelError, R> =>\n effect.pipe(\n Effect.catchCause(cause =>\n Cause.hasInterrupts(cause) ? Effect.interrupt : Effect.fail(fail(code)),\n ),\n );\nconst AssetResultJson = Schema.Json.check(\n Schema.makeFilter(\n value => new TextEncoder().encode(JSON.stringify(value)).byteLength <= 14_680_064,\n ),\n);\nconst Json = Schema.Json.check(\n Schema.makeFilter(\n value =>\n new TextEncoder().encode(JSON.stringify(value)).byteLength <= AgentChannel.resultByteLimit,\n ),\n);\nconst strict = { onExcessProperty: \"error\" } as const;\nconst decode = <S extends Schema.Top>(\n schema: S,\n input: unknown,\n code: typeof AgentChannel.ErrorCode.Type,\n) =>\n safe(\n Effect.suspend(() => Schema.decodeUnknownEffect(schema)(input, strict)),\n code,\n );\nconst json = (value: unknown, code: typeof AgentChannel.ErrorCode.Type) =>\n decode(Json, value, code);\nconst decodeData = Effect.fn(\"AgentChannelRuntime.decodeData\")(function* <S extends Schema.Top>(\n schema: S,\n input: unknown,\n code: typeof AgentChannel.ErrorCode.Type,\n largeAssetResult = false,\n) {\n const boundary = largeAssetResult ? AssetResultJson : Json;\n yield* decode(boundary, input, code);\n const value = yield* decode(schema, input, code);\n yield* decode(boundary, value, code);\n return value;\n});\n\nconst invokeHandler = (\n handler: AgentChannel.Handler,\n effect: Effect.Effect<unknown, unknown, unknown>,\n) =>\n effect.pipe(\n Effect.provideContext(handler.context),\n Effect.catch(error =>\n decode(\n Schema.TaggedStruct(\"AgentChannelHandlerError\", { code: AgentChannel.FailureCode }),\n Predicate.isObject(error) ? { ...error } : error,\n \"provider_failure\",\n ).pipe(\n Effect.flatMap(checked =>\n Effect.fail(\n new AgentChannel.ChannelError({ code: \"provider_failure\", providerCode: checked.code }),\n ),\n ),\n ),\n ),\n Effect.catchCause(cause => {\n if (Cause.hasInterrupts(cause)) return Effect.interrupt;\n const error = Cause.findErrorOption(cause);\n return Option.isSome(error) && error.value instanceof AgentChannel.ChannelError\n ? Effect.fail(error.value)\n : Effect.fail(fail(\"provider_failure\"));\n }),\n );\n\nconst checkExtensions = Effect.fn(\"AgentChannelRuntime.checkExtensions\")(function* (\n definition: AgentChannel.Definition,\n extensions: Readonly<Record<string, Schema.Json>> | undefined,\n code: typeof AgentChannel.ErrorCode.Type,\n) {\n for (const [key, value] of Object.entries(extensions ?? {})) {\n const schema = definition.extensions?.[key];\n if (schema === undefined) return yield* fail(code);\n // Extensions are checked values, not a provider payload escape hatch. No normalization.\n yield* decodeData(Schema.toType(schema), value, code);\n }\n});\nconst checkMessage = (\n features: AgentChannel.Features,\n destination: AgentChannel.Destination,\n content: AgentChannel.Content,\n): boolean =>\n (destination.kind === \"direct\" || features.groups) &&\n (destination.threadKey === undefined || features.threads) &&\n (content.mentions === undefined || features.mentions) &&\n (content.assets === undefined || features.assets) &&\n (content.replyToMessageKey === undefined || features.replies);\n\nconst checkDelivery = (\n features: AgentChannel.Features,\n command: Extract<AgentChannel.Command | AgentChannel.CommandV2, { kind: \"deliver\" }>,\n): boolean =>\n \"content\" in command\n ? checkMessage(features, command.destination, command.content)\n : checkMessage(features, command.destination, { text: \"\" }) &&\n (features.operations ?? []).includes(command.operation.kind);\n\nconst Material = Schema.Struct({\n connectionId: AgentChannel.Key,\n // The plugin worker's resolver marks its JSON-carried material.\n encoding: Schema.optionalKey(Schema.Literal(\"json\")),\n material: Schema.Unknown,\n methodId: AgentChannel.Key,\n providerId: AgentChannel.Key,\n setup: Schema.Unknown,\n});\nconst ResolveHook = Schema.declare(\n (value): value is (material: unknown, context: { readonly setup: unknown }) => unknown =>\n Predicate.isFunction(value),\n);\nconst resolveAuth = Effect.fn(\"AgentChannelRuntime.resolveAuth\")(function* (\n providerId: string,\n channelId: string,\n definition: AgentChannel.Definition,\n connectionId: string | undefined,\n phase: string,\n context: typeof ConnectionContext.Type | undefined,\n) {\n if (definition.authMethods.length === 0) {\n if (connectionId !== undefined) return yield* fail(\"invalid_auth\");\n return undefined;\n }\n // The host alone selects/authorizes the pinned connection. Its records never reach the plugin.\n if (connectionId === undefined) return yield* fail(\"invalid_auth\");\n const resolver = yield* Effect.serviceOption(ConnectionResolver.Service);\n if (Option.isNone(resolver)) return yield* fail(\"invalid_auth\");\n const raw = yield* safe(\n Effect.suspend(() =>\n resolver.value.resolve({\n connectionId,\n target: { phase, providerId, targetId: channelId, targetKind: \"agent-channel\" },\n ...(context === undefined ? {} : { context }),\n }),\n ),\n \"invalid_auth\",\n );\n const resolved = yield* decode(Material, raw, \"invalid_auth\");\n if (resolved.providerId !== providerId || resolved.connectionId !== connectionId) {\n return yield* fail(\"invalid_auth\");\n }\n const method = definition.authMethods.find(\n method =>\n resolved.methodId === method.identifier ||\n resolved.methodId === `${providerId}/${method.identifier}`,\n );\n if (method === undefined) return yield* fail(\"invalid_auth\");\n // Material the worker received as JSON decodes through each schema's JSON codec.\n const decodeAuth = <S extends Schema.Top>(schema: S, value: unknown) =>\n decode(\n resolved.encoding === \"json\" ? Schema.toCodecJson(schema) : schema,\n value,\n \"invalid_auth\",\n );\n const setup =\n method.setup === undefined\n ? yield* decode(Schema.Undefined, resolved.setup, \"invalid_auth\")\n : yield* decodeAuth(method.setup, resolved.setup);\n const material = yield* decodeAuth(method.material, resolved.material);\n let value: unknown;\n if (method.resolve === undefined) {\n value =\n method.material === method.value\n ? material\n : yield* decode(method.value, material, \"invalid_auth\");\n } else {\n const hook = yield* decode(ResolveHook, method.resolve, \"invalid_auth\");\n const output = yield* safe(\n Effect.suspend(() => {\n const result = hook(material, { setup });\n return Effect.isEffect(result) ? result : Effect.succeed(result);\n }),\n \"invalid_auth\",\n );\n value = yield* decode(method.value, output, \"invalid_auth\");\n }\n // Schemas may use Redacted for auth. Only this checked value, never material/setup/binding,\n // is exposed to the command handler.\n return { methodId: method.identifier, value };\n});\n\nconst find = (plugins: readonly Plugin.Any[], pin: Pin) => {\n for (const provider of plugins) {\n const channel = provider.agentChannels.find(\n channel => `${provider.identifier}/${channel.identifier}` === pin.channelId,\n );\n if (channel !== undefined) return { definition: channel.definition, provider };\n }\n return undefined;\n};\n\n/** Build from the installed plugins. */\nexport const layer = <P extends Plugin.Any>(\n plugins: readonly P[],\n): Layer.Layer<Service, never, Requirements<P>> =>\n Layer.effect(\n Service,\n Effect.gen(function* () {\n const context = yield* Effect.context<Requirements<P>>();\n const get = Effect.fn(\"AgentChannelRuntime.get\")(function* (input: unknown) {\n const pin = yield* decode(Pin, input, \"invalid_input\");\n const found = find(plugins, pin);\n if (found === undefined) return yield* fail(\"not_found\");\n yield* safe(\n Effect.sync(() => {\n AgentChannel.validateDefinition(\n found.definition,\n found.provider.identifier,\n found.provider.authMethods,\n );\n }),\n \"invalid_definition\",\n );\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(pin.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (\n Option.isNone(handler) ||\n !Predicate.isObject(handler.value.runtime) ||\n !Predicate.isFunction(handler.value.runtime.execute) ||\n !Predicate.isFunction(handler.value.runtime.verify) ||\n !Predicate.isFunction(handler.value.runtime.checkAccess)\n ) {\n return yield* fail(\"handler_unavailable\");\n }\n return found.definition;\n });\n const checkAccess = Effect.fn(\"AgentChannelRuntime.checkAccess\")(function* (input: unknown) {\n yield* json(input, \"invalid_input\");\n const request = yield* decode(AccessInput, input, \"invalid_input\");\n const definition = yield* get({ channelId: request.channelId });\n const found = find(plugins, request);\n if (found === undefined) return yield* fail(\"not_found\");\n const definitionSettings = yield* decodeData(\n definition.definitionSettings,\n request.definitionSettings,\n \"invalid_input\",\n );\n const deploymentSettings = yield* decodeData(\n definition.deploymentSettings,\n request.deploymentSettings,\n \"invalid_input\",\n );\n if (!checkMessage(definition.features, request.identity.conversation, { text: \"\" })) {\n return yield* fail(\"unsupported_feature\");\n }\n const auth = yield* resolveAuth(\n found.provider.identifier,\n request.channelId,\n definition,\n request.connectionId,\n \"check_access\",\n request.context,\n );\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(request.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (Option.isNone(handler)) return yield* fail(\"handler_unavailable\");\n const output = yield* invokeHandler(\n handler.value,\n Effect.suspend(() =>\n handler.value.runtime.checkAccess(request.identity, {\n definitionSettings,\n deploymentSettings,\n ...(auth === undefined ? {} : { auth }),\n }),\n ),\n );\n return yield* decodeData(AgentChannel.AccessOutcome, output, \"invalid_result\");\n });\n const execute = Effect.fn(\"AgentChannelRuntime.execute\")(function* (input: unknown) {\n yield* json(input, \"invalid_input\");\n const request = yield* decode(Input, input, \"invalid_input\");\n const definition = yield* get({ channelId: request.channelId });\n const found = find(plugins, request);\n if (found === undefined) return yield* fail(\"not_found\");\n const definitionSettings = yield* decodeData(\n definition.definitionSettings,\n request.definitionSettings,\n \"invalid_input\",\n );\n const deploymentSettings = yield* decodeData(\n definition.deploymentSettings,\n request.deploymentSettings,\n \"invalid_input\",\n );\n const schemas = AgentChannel.schemasFor(definition);\n const command: AgentChannel.Command | AgentChannel.CommandV2 = yield* decodeData(\n schemas.command,\n request.command,\n \"invalid_input\",\n );\n yield* checkExtensions(definition, command.extensions, \"invalid_input\");\n if (command.kind === \"deliver\" && command.operationKey !== command.deliveryKey) {\n return yield* fail(\"invalid_input\");\n }\n if (command.kind === \"deliver\" && !checkDelivery(definition.features, command)) {\n return yield* fail(\"unsupported_feature\");\n }\n if (\n command.kind === \"deliver\" &&\n \"operation\" in command &&\n command.operation.kind === \"set_reaction\" &&\n command.operation.target.kind === \"activation\" &&\n command.activationMessageKey === undefined\n ) {\n return yield* fail(\"invalid_input\");\n }\n if (\n command.kind === \"read_context\" &&\n (definition.features.readContext !== true ||\n !checkMessage(definition.features, command.destination, { text: \"\" }))\n ) {\n return yield* fail(\"unsupported_feature\");\n }\n const handler = Option.fromNullishOr(\n findHandler(\n context,\n found.provider.identifier,\n AgentChannel.handlerKey(request.channelId),\n ) as AgentChannel.Handler | undefined,\n );\n if (Option.isNone(handler)) return yield* fail(\"handler_unavailable\");\n const auth = yield* resolveAuth(\n found.provider.identifier,\n request.channelId,\n definition,\n request.connectionId,\n command.kind,\n request.context,\n );\n // Keep correlation facts independent of any mutation by provider code.\n const operationKey = command.operationKey;\n const kind = command.kind;\n const deliveryKey = command.kind === \"deliver\" ? command.deliveryKey : undefined;\n const assetKey = command.kind === \"read_asset\" ? command.asset.assetKey : undefined;\n const adapterContext = {\n definitionSettings,\n deploymentSettings,\n ...(auth === undefined ? {} : { auth }),\n };\n if (\n !Predicate.isFunction(handler.value.runtime.execute) ||\n !Predicate.isFunction(handler.value.runtime.verify) ||\n !Predicate.isFunction(handler.value.runtime.checkAccess)\n ) {\n return yield* fail(\"handler_unavailable\");\n }\n if (command.kind === \"receive\") {\n yield* decodeData(\n AgentChannel.Verification,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.verify(command.request, adapterContext)),\n ),\n \"invalid_result\",\n );\n }\n if (command.kind === \"read_asset\") {\n if (!definition.features.assets) return yield* fail(\"unsupported_feature\");\n const decision = yield* decodeData(\n AgentChannel.AccessOutcome,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() =>\n handler.value.runtime.checkAccess(command.identity, adapterContext),\n ),\n ),\n \"invalid_result\",\n );\n if (decision.decision !== \"allow\") {\n return yield* new AgentChannel.ChannelError({\n code: \"provider_failure\",\n providerCode: \"unauthorized\",\n });\n }\n }\n const output = yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.execute(command, adapterContext)),\n );\n const result: AgentChannel.Result | AgentChannel.ResultV2 = yield* decodeData(\n schemas.typeResult,\n output,\n \"invalid_result\",\n kind === \"read_asset\",\n );\n if (\n result.kind !== kind ||\n result.operationKey !== operationKey ||\n (result.kind === \"deliver\" && result.deliveryKey !== deliveryKey) ||\n (result.kind === \"read_asset\" && result.assetKey !== assetKey)\n ) {\n return yield* fail(\"invalid_result\");\n }\n yield* checkExtensions(definition, result.extensions, \"invalid_result\");\n if (\n result.kind === \"deliver\" &&\n result.status === \"pending\" &&\n !definition.features.deliveryState\n ) {\n return yield* fail(\"invalid_result\");\n }\n const allowedEvents: AgentChannel.EventV2[] = [];\n const deniedEventKeys: string[] = [];\n if (result.kind === \"receive\") {\n if (result.deniedEventKeys !== undefined) return yield* fail(\"invalid_result\");\n if (\n result.activationProof === \"verified\" &&\n (result.response === undefined || result.events.length !== 0)\n ) {\n return yield* fail(\"invalid_result\");\n }\n const eventKeys = new Set<string>();\n for (const event of result.events) {\n if (eventKeys.has(event.eventKey)) return yield* fail(\"invalid_result\");\n eventKeys.add(event.eventKey);\n if (\n event.kind === \"message\" &&\n !checkMessage(definition.features, event.conversation, event.content)\n ) {\n return yield* fail(\"invalid_result\");\n }\n if (\n (event.kind === \"echo\" || event.kind === \"stop\") &&\n !checkMessage(definition.features, event.conversation, { text: \"\" })\n ) {\n return yield* fail(\"invalid_result\");\n }\n if (event.kind === \"delivery_update\" && !definition.features.deliveryState) {\n return yield* fail(\"invalid_result\");\n }\n yield* checkExtensions(definition, event.extensions, \"invalid_result\");\n let denied = false;\n if (event.kind === \"message\" || event.kind === \"echo\" || event.kind === \"stop\") {\n const identity = yield* decodeData(\n AgentChannel.VerifiedIdentity,\n { conversation: event.conversation, senderKey: event.senderKey },\n \"invalid_result\",\n );\n const decision = yield* decodeData(\n AgentChannel.AccessOutcome,\n yield* invokeHandler(\n handler.value,\n Effect.suspend(() => handler.value.runtime.checkAccess(identity, adapterContext)),\n ),\n \"invalid_result\",\n );\n denied = decision.decision === \"deny\";\n }\n if (denied) {\n deniedEventKeys.push(event.eventKey);\n continue;\n }\n allowedEvents.push(event);\n }\n }\n // Store the encoded state so subsequent pinned commands can decode it exactly once.\n const encoded = yield* safe(\n Schema.encodeUnknownEffect(schemas.result)(\n result.kind === \"receive\"\n ? {\n ...result,\n events: allowedEvents,\n ...(deniedEventKeys.length === 0 ? {} : { deniedEventKeys }),\n }\n : result,\n strict,\n ),\n \"invalid_result\",\n );\n return yield* decodeData(\n AgentChannel.CheckedResult,\n encoded,\n \"invalid_result\",\n kind === \"read_asset\",\n );\n });\n // SAFETY: Requirements above account for each schema, auth method and Channel handler. The\n // dynamic lookup erases their union; the captured application context discharges it here.\n const run = <A>(\n effect: Effect.Effect<A, AgentChannel.ChannelError, unknown>,\n ): Effect.Effect<A, AgentChannel.ChannelError> =>\n // @effect-diagnostics-next-line unsafeEffectTypeAssertion:off -- Channel handlers are checked and their captured context satisfies the declared Requirements (SAFETY above).\n effect.pipe(Effect.provideContext(context)) as Effect.Effect<A, AgentChannel.ChannelError>;\n const decodeSettings = (field: \"definitionSettings\" | \"deploymentSettings\") =>\n Effect.fn(\"AgentChannelRuntime.decodeSettings\")(function* (input: unknown) {\n const request = yield* decode(\n Schema.Struct({ ...Pin.fields, value: Schema.Json }),\n input,\n \"invalid_input\",\n );\n const definition = yield* get({ channelId: request.channelId });\n const schema = definition[field];\n const value = yield* decodeData(schema, request.value, \"invalid_input\");\n return yield* json(\n yield* safe(Schema.encodeUnknownEffect(schema)(value, strict), \"invalid_input\"),\n \"invalid_input\",\n );\n });\n return Service.of({\n checkAccess: input => run(checkAccess(input)),\n decodeDefinitionSettings: input => run(decodeSettings(\"definitionSettings\")(input)),\n decodeDeploymentSettings: input => run(decodeSettings(\"deploymentSettings\")(input)),\n execute: input => run(execute(input)),\n get: input => run(get(input)),\n });\n }),\n );\n\nexport * as AgentChannelRuntime from \"./AgentChannelRuntime.ts\";\n"],"mappings":"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"}
@@ -127,6 +127,5 @@ export declare const withRuntimeConfig: {
127
127
  <Self extends Any>(resolve: RuntimeConfigResolver<Self["authMethods"]>): (provider: Self) => Self;
128
128
  <Self extends Any>(provider: Self, resolve: RuntimeConfigResolver<Self["authMethods"]>): Self;
129
129
  };
130
- //#endregion
131
130
  export { AiProvider_d_exports };
132
131
  //# sourceMappingURL=AiProvider.d.ts.map
@@ -4,7 +4,7 @@ import { PipeableProto } from "./internal/proto.js";
4
4
  import { assertNoDuplicateAuthMethodIdentifiers } from "./internal/auth-runtime.js";
5
5
  import { appendElements } from "./internal/collection-utils.js";
6
6
  import { Function, Predicate, Schema } from "effect";
7
- //#region src/AiProvider.ts
7
+ // src/AiProvider.ts
8
8
  var AiProvider_exports = /* @__PURE__ */ __exportAll({
9
9
  RuntimeConfig: () => RuntimeConfig,
10
10
  TypeId: () => TypeId,
@@ -94,7 +94,6 @@ const withAuthMethods = Function.dual(2, (provider, methods) => {
94
94
  const withAuthMethod = Function.dual(2, (provider, method) => withAuthMethods(provider, [method]));
95
95
  /** @since 0.0.0 @category combinators */
96
96
  const withRuntimeConfig = Function.dual(2, (provider, resolve) => makeProvider(optionsFromProvider(provider), provider.authMethods, resolve));
97
- //#endregion
98
97
  export { AiProvider_exports, RuntimeConfig, TypeId, isAiProvider, make, registryId, withAuthMethod, withAuthMethods, withCategories, withDescription, withDocsUrl, withHomepageUrl, withIconUrl, withIconUrlDark, withName, withRuntimeConfig };
99
98
 
100
99
  //# sourceMappingURL=AiProvider.js.map
@@ -376,6 +376,5 @@ export type MaterialSchema<Method extends Any> = Method["material"];
376
376
  * @category type-level
377
377
  */
378
378
  export type Requirements<Method extends Any> = Types.Covariant.Type<Method[TypeId]["_Requirements"]>;
379
- //#endregion
380
379
  export { AuthMethod_d_exports, type Binding, type BindingFor, type BindingForMethod, type Context, type MatchCases, OAuth2TokenRefresher_d_exports as OAuth2TokenRefresher, Service, decodeInput, decodeMaterial, decodeSetup, decodeValue, display, isBindingForMethod, makeBinding, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test };
381
380
  //# sourceMappingURL=AuthMethod.d.ts.map
@@ -5,7 +5,7 @@ import { isBindingForMethod, makeBinding } from "./AuthMethodBinding.js";
5
5
  import { OAuth2TokenRefresher_exports, Service } from "./OAuth2TokenRefresher.js";
6
6
  import { decodeInput, decodeMaterial, decodeSetup, decodeValue, display, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test } from "./AuthMethodExecution.js";
7
7
  import { Function, Predicate, Schema } from "effect";
8
- //#region src/AuthMethod.ts
8
+ // src/AuthMethod.ts
9
9
  /**
10
10
  * Canonical auth-method definition builders and types for the Dual SDK.
11
11
  *
@@ -219,7 +219,6 @@ const oauth2 = (identifier, options) => {
219
219
  * @category guards
220
220
  */
221
221
  const isAuthMethod = (u) => Predicate.hasProperty(u, TypeId);
222
- //#endregion
223
222
  export { AuthMethodHookError, AuthMethodHookOperation, AuthMethod_exports, ExpectedOAuth2MethodError, OAuth2ProviderTokenResponse, OAuth2RefreshTokenUnavailableError, OAuth2TokenMaterial, OAuth2TokenRefresher_exports as OAuth2TokenRefresher, OAuth2TokenResponse, Service, TypeId, auth, decodeInput, decodeMaterial, decodeSetup, decodeValue, display, form, isAuthMethod, isBindingForMethod, make, makeBinding, oauth2, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test };
224
223
 
225
224
  //# sourceMappingURL=AuthMethod.js.map
@@ -72,6 +72,5 @@ export interface Context<Methods extends readonly Any[]> {
72
72
  * @category guards
73
73
  */
74
74
  export declare const isBindingForMethod: <Methods extends readonly Any[], Method extends Methods[number]>(binding: BindingFor<Methods>, method: Method) => binding is BindingForMethod<Methods, Method>;
75
- //#endregion
76
75
  export { AuthMethodBinding_d_exports as AuthMethodBinding, AuthMethodBinding_d_exports };
77
76
  //# sourceMappingURL=AuthMethodBinding.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- //#region src/AuthMethodBinding.ts
2
+ // src/AuthMethodBinding.ts
3
3
  var AuthMethodBinding_exports = /* @__PURE__ */ __exportAll({
4
4
  AuthMethodBinding: () => AuthMethodBinding_exports,
5
5
  isBindingForMethod: () => isBindingForMethod,
@@ -25,7 +25,6 @@ const makeBinding = (options) => ({
25
25
  * @category guards
26
26
  */
27
27
  const isBindingForMethod = (binding, method) => binding.method === method;
28
- //#endregion
29
28
  export { AuthMethodBinding_exports as AuthMethodBinding, AuthMethodBinding_exports, isBindingForMethod, makeBinding };
30
29
 
31
30
  //# sourceMappingURL=AuthMethodBinding.js.map
@@ -218,6 +218,5 @@ export declare const executeJson: (method: Any, request: {
218
218
  export declare const display: <Method extends Any>(method: Method, material: Material<Method>, context?: HookContext<Setup<Method>>) => Effect.Effect<Display | undefined, Schema.SchemaError | AuthMethodHookError, MaterialRequirements<Method> | Requirements<Method>>;
219
219
  /** @since 0.0.0 @category constructors */
220
220
  export declare const test: <Method extends Any>(method: Method, material: Material<Method>, context?: HookContext<Setup<Method>>) => Effect.Effect<TestResult, Schema.SchemaError | AuthMethodHookError, MaterialRequirements<Method> | Requirements<Method>>;
221
- //#endregion
222
221
  export { AuthMethodExecution_d_exports as AuthMethodExecution, AuthMethodExecution_d_exports };
223
222
  //# sourceMappingURL=AuthMethodExecution.d.ts.map
@@ -3,7 +3,7 @@ import { Service } from "./OAuth2TokenRefresher.js";
3
3
  import "./AuthMethodExecution.js";
4
4
  import { AuthMethodHookError, ExpectedOAuth2MethodError, OAuth2RefreshTokenUnavailableError } from "./AuthMethod.js";
5
5
  import { Effect, Schema } from "effect";
6
- //#region src/AuthMethodExecution.ts
6
+ // src/AuthMethodExecution.ts
7
7
  /**
8
8
  * Credential decoding, hook execution, material refresh, and value resolution.
9
9
  *
@@ -271,7 +271,6 @@ const test = (method, material, context) => {
271
271
  const testHook = impl.test;
272
272
  return decodeMaterial(method, material).pipe(Effect.flatMap((decodedMaterial) => testHook === void 0 ? Effect.succeed({ ok: true }) : runHook(impl.identifier, "test", () => testHook(decodedMaterial, hookContext(context)))));
273
273
  };
274
- //#endregion
275
274
  export { AuthMethodExecution_exports as AuthMethodExecution, AuthMethodExecution_exports, JsonRequest, decodeInput, decodeMaterial, decodeSetup, decodeValue, display, executeJson, prepare, prepareDecoded, prepareOAuth2Tokens, prepareUnknown, refreshDecoded, refreshUnknown, resolve, resolveDecoded, resolveUnknown, test };
276
275
 
277
276
  //# sourceMappingURL=AuthMethodExecution.js.map
@@ -214,6 +214,5 @@ declare const Service_base: Context.ServiceClass<Service, "@dual-os/sdk/Connecti
214
214
  * @category services
215
215
  */
216
216
  export declare class Service extends Service_base {}
217
- //#endregion
218
217
  export { ConnectionResolver_d_exports as ConnectionResolver, ConnectionResolver_d_exports };
219
218
  //# sourceMappingURL=ConnectionResolver.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import "./ConnectionResolver.js";
3
3
  import { Context, Schema } from "effect";
4
- //#region src/ConnectionResolver.ts
4
+ // src/ConnectionResolver.ts
5
5
  var ConnectionResolver_exports = /* @__PURE__ */ __exportAll({
6
6
  ConnectionIdNotAllowedError: () => ConnectionIdNotAllowedError,
7
7
  ConnectionReauthorizationRequiredError: () => ConnectionReauthorizationRequiredError,
@@ -147,7 +147,6 @@ var ConnectionResolverStoreError = class extends Schema.TaggedError()("Connectio
147
147
  * @category services
148
148
  */
149
149
  var Service = class extends Context.Service()("@dual-os/sdk/ConnectionResolver") {};
150
- //#endregion
151
150
  export { ConnectionIdNotAllowedError, ConnectionReauthorizationRequiredError, ConnectionRequiredError, ConnectionResolver_exports as ConnectionResolver, ConnectionResolverStoreError, ConnectionResolver_exports, ConnectionSelectionRequiredError, InvalidConnectionIdError, InvalidResolvedConnectionError, Service };
152
151
 
153
152
  //# sourceMappingURL=ConnectionResolver.js.map
@@ -62,6 +62,5 @@ declare const DuplicateAuthMethodIdentifierError_base: Schema.Class<DuplicateAut
62
62
  * @category errors
63
63
  */
64
64
  export declare class DuplicateAuthMethodIdentifierError extends DuplicateAuthMethodIdentifierError_base {}
65
- //#endregion
66
65
  export { DefinitionError_d_exports };
67
66
  //# sourceMappingURL=DefinitionError.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { Schema } from "effect";
3
- //#region src/DefinitionError.ts
3
+ // src/DefinitionError.ts
4
4
  /**
5
5
  * Public SDK definition errors.
6
6
  *
@@ -76,7 +76,6 @@ var DuplicateAuthMethodIdentifierError = class extends Schema.TaggedError()("Dup
76
76
  identifier: Schema.String,
77
77
  providerIdentifier: Schema.String
78
78
  }) {};
79
- //#endregion
80
79
  export { BuilderCollisionError, DefinitionError_exports, DuplicateAuthMethodIdentifierError, InvalidIdentifierError };
81
80
 
82
81
  //# sourceMappingURL=DefinitionError.js.map
@@ -66,6 +66,5 @@ export declare const materializePlugins: (app: AnyApp, options?: MaterializedReg
66
66
  providers: readonly MaterializedRegistry["providers"][number][];
67
67
  ordinal: number;
68
68
  }[];
69
- //#endregion
70
69
  export { DualRegistry_d_exports as DualRegistry, DualRegistry_d_exports, type MaterializedActionCapabilityVersion, type MaterializedAuthMethod, type MaterializedCapabilityVersion, type MaterializedChannelCapabilityVersion, type MaterializedProvider, type MaterializedRegistry, type MaterializedRegistryOptions, type MaterializedTriggerCapabilityVersion };
71
70
  //# sourceMappingURL=DualRegistry.d.ts.map
@@ -4,7 +4,7 @@ import { collectTriggerEntries, resolveRuntimeTrigger } from "./internal/dual/tr
4
4
  import { materializeResolvedRegistry } from "./internal/dual/registry.js";
5
5
  import "./DualRegistry.js";
6
6
  import { Schema } from "effect";
7
- //#region src/DualRegistry.ts
7
+ // src/DualRegistry.ts
8
8
  /**
9
9
  * Dual registry resolution and materialization.
10
10
  *
@@ -90,7 +90,6 @@ const materializePlugins = (app, options = {}) => {
90
90
  ordinal: 0
91
91
  }));
92
92
  };
93
- //#endregion
94
93
  export { DualRegistry_exports as DualRegistry, DualRegistry_exports, TriggerNotFoundError, actionIds, materializePlugin, materializePlugins, materializeRegistry, resolveTrigger, triggerIds };
95
94
 
96
95
  //# sourceMappingURL=DualRegistry.js.map
@@ -274,6 +274,5 @@ export type ToLayerError<A extends AnyApp> = A extends App<any, any, infer Layer
274
274
  * @category layers
275
275
  */
276
276
  export declare const toLayer: <const P extends Any$1, LayerOutput, LayerError, LayerRequirements, const AiProviders extends readonly Any$2[]>(app: App<P, LayerOutput, LayerError, LayerRequirements, AiProviders>) => Layer.Layer<Service, LayerError, LayerRequirements | Exclude<RuntimeRequirementsFor<P>, LayerOutput> | Exclude<AuthMethodExecutionRequirementsFor<P | AiProviders[number]>, LayerOutput>>;
277
- //#endregion
278
277
  export { ActionHandlerError, type ActionHandlerFailure, ActionHandlerNotFoundError, ActionNotFoundError, ConnectionIdNotAllowedError, ConnectionReauthorizationRequiredError, ConnectionRequiredError, ConnectionResolverStoreError, ConnectionSelectionRequiredError, DualRuntime_d_exports as DualRuntime, DualRuntime_d_exports, FieldIssue, InvalidActionInputError, InvalidActionOutputError, InvalidConnectionIdError, InvalidResolvedConnectionError, type InvokeError, type InvokeMeta, type InvokeRequest, type InvokeRequirementsFor, type InvokeSuccess, RetryableActionHandlerError };
279
278
  //# sourceMappingURL=DualRuntime.d.ts.map
@@ -16,7 +16,7 @@ import { activate, deactivate, parse, poll, verify } from "./Trigger.js";
16
16
  import "./DualRuntime.js";
17
17
  import { Array, Context, Effect, Function, Layer, Predicate, Result, Schema, pipe } from "effect";
18
18
  import { Url } from "effect/http";
19
- //#region src/DualRuntime.ts
19
+ // src/DualRuntime.ts
20
20
  /**
21
21
  * Dual action invocation, trigger lifecycle, and auth runtime.
22
22
  *
@@ -305,7 +305,6 @@ const toLayer = (app) => {
305
305
  });
306
306
  })).pipe(Layer.provide(layer(app.plugins.map((installation) => installation.plugin))), Layer.provide(app.layer));
307
307
  };
308
- //#endregion
309
308
  export { ActionHandlerError, ActionHandlerNotFoundError, ActionNotFoundError, AiProviderRuntimeNotConfiguredError, AuthMethodNotFoundError, ConnectionIdNotAllowedError, ConnectionReauthorizationRequiredError, ConnectionRequiredError, ConnectionResolverStoreError, ConnectionSelectionRequiredError, DualRuntime_exports as DualRuntime, DualRuntime_exports, FieldIssue, InvalidActionInputError, InvalidActionOutputError, InvalidConnectionIdError, InvalidResolvedConnectionError, RetryableActionHandlerError, SandboxAccessNotDeclaredError, SandboxRequestNotAllowedError, Service, fromPlugin, install, invoke, make, toLayer, withPlugin, withPlugins };
310
309
 
311
310
  //# sourceMappingURL=DualRuntime.js.map
package/dist/Files.d.ts CHANGED
@@ -75,6 +75,5 @@ export declare const write: (file: {
75
75
  readonly name: string;
76
76
  readonly sizeBytes: number;
77
77
  }, FileError, never>;
78
- //#endregion
79
78
  export { Files_d_exports as Files, Files_d_exports };
80
79
  //# sourceMappingURL=Files.d.ts.map
package/dist/Files.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import "./Files.js";
3
3
  import { Context, Effect, Schema, pipe } from "effect";
4
- //#region src/Files.ts
4
+ // src/Files.ts
5
5
  /**
6
6
  * Files that actions take and return: a small reference in action data, with the bytes kept by the
7
7
  * host and read or written through the host's file service.
@@ -60,7 +60,6 @@ const read = Effect.fnUntraced(function* (file) {
60
60
  const write = Effect.fnUntraced(function* (file) {
61
61
  return yield* (yield* service).write(file);
62
62
  });
63
- //#endregion
64
63
  export { File, FileError, Files_exports as Files, Files_exports, Service, read, write };
65
64
 
66
65
  //# sourceMappingURL=Files.js.map
package/dist/Group.d.ts CHANGED
@@ -101,6 +101,5 @@ export declare const add: {
101
101
  <const Children extends readonly StructuralChild[]>(...children: Children): <Self extends Any>(group: Self) => AddChildren<Self, GroupsFromChildren<Children>, ActionsFromChildren<Children>, TriggersFromChildren<Children>>;
102
102
  <Self extends Any, const Children extends readonly StructuralChild[]>(group: Self, ...children: Children): AddChildren<Self, GroupsFromChildren<Children>, ActionsFromChildren<Children>, TriggersFromChildren<Children>>;
103
103
  };
104
- //#endregion
105
104
  export { Group_d_exports };
106
105
  //# sourceMappingURL=Group.d.ts.map
package/dist/Group.js CHANGED
@@ -4,7 +4,7 @@ import { PipeableProto } from "./internal/proto.js";
4
4
  import { appendElements } from "./internal/collection-utils.js";
5
5
  import { assertUniqueMixedChildIdentifiers, assertUniqueStructuralChildIdentifiers, partitionChildren } from "./internal/children.js";
6
6
  import { Function, Predicate } from "effect";
7
- //#region src/Group.ts
7
+ // src/Group.ts
8
8
  var Group_exports = /* @__PURE__ */ __exportAll({
9
9
  TypeId: () => TypeId,
10
10
  add: () => add,
@@ -80,7 +80,6 @@ const withTrigger = Function.dual(2, (value, trigger) => appendChildren(value, [
80
80
  * @category combinators
81
81
  */
82
82
  const add = Function.dual((args) => isGroup(args[0]), (group, ...children) => appendChildren(group, children));
83
- //#endregion
84
83
  export { Group_exports, TypeId, add, isGroup, make, withAction, withActions, withDescription, withGroup, withGroups, withName, withTrigger, withTriggers };
85
84
 
86
85
  //# sourceMappingURL=Group.js.map
package/dist/Http.d.ts CHANGED
@@ -337,6 +337,5 @@ export declare function make<const Methods extends readonly Any[], Context exten
337
337
  mcp: <Output extends Schema.Top>(context: Context, output: Output, server: string, tool: string, args: unknown, structured: boolean) => Effect.Effect<Output["Type"], ActionHandlerError | RetryableActionHandlerError, HttpClient.HttpClient | Exclude<Output["DecodingServices"], import("effect/Scope").Scope>>;
338
338
  variants: <Output extends Schema.Top>(context: Context | undefined, output: Output, request: Request, declared: readonly Variant[], media?: boolean | undefined) => Effect.Effect<Output["Type"], ActionHandlerError | RetryableActionHandlerError, HttpClient.HttpClient | Output["DecodingServices"]>;
339
339
  };
340
- //#endregion
341
340
  export { Http_d_exports as Http, Http_d_exports };
342
341
  //# sourceMappingURL=Http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Http.d.ts","names":["AuthMethod.Any","Action.HandlerContext","Action.ActionHandlerFailure","Action.ActionHandlerError","Files.File","Action.RetryableActionHandlerError"],"sources":["../src/Http.ts"],"mappings":"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"}
1
+ {"version":3,"file":"Http.d.ts","names":["AuthMethod.Any","Action.HandlerContext","Action.ActionHandlerFailure","Action.ActionHandlerError","Files.File","Action.RetryableActionHandlerError"],"sources":["../src/Http.ts"],"mappings":"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"}
package/dist/Http.js CHANGED
@@ -5,9 +5,9 @@ import { File as File$1, read as read$1, write } from "./Files.js";
5
5
  import { CallToolResult, McpError, connect } from "./Mcp.js";
6
6
  import "./Http.js";
7
7
  import { Array, Boolean, DateTime, Effect, Equal, Option, Order, Predicate, Random, Record, Result, Schema, SchemaGetter, SchemaIssue, String, flow, pipe } from "effect";
8
- import { FetchHttpClient, HttpBody, HttpClient, HttpClientError, HttpClientRequest } from "effect/http";
8
+ import { FetchHttpClient, Headers, HttpBody, HttpClient, HttpClientError, HttpClientRequest, UrlParams } from "effect/http";
9
9
  import { Base64, Base64Url } from "effect/encoding";
10
- //#region src/Http.ts
10
+ // src/Http.ts
11
11
  /**
12
12
  * The HTTP runtime of generated API plugins: each operation's contract and call, request encoding,
13
13
  * response decoding, continuation links, redirects and uploads.
@@ -421,7 +421,7 @@ function continuation(request, nextLink) {
421
421
  const declared = new URL(request.url);
422
422
  const next = URL.canParse(nextLink) ? new URL(nextLink) : void 0;
423
423
  if (next === void 0 || !isSafeUrl(nextLink) || next.pathname !== declared.pathname) return refused("A continuation URL must be an HTTPS link to the same operation path");
424
- return Effect.succeed(HttpClientRequest.make(request.method)(`${declared.origin}${next.pathname}${next.search}`, { headers: request.headers }));
424
+ return Effect.succeed(HttpClientRequest.makeWith(request.method, `${declared.origin}${next.pathname}${next.search}`, UrlParams.empty, Option.none(), request.headers, HttpBody.empty));
425
425
  }
426
426
  /**
427
427
  * A request to a preauthenticated upload URL, which is sent without the connection's credentials.
@@ -442,7 +442,7 @@ function redirect(response) {
442
442
  const sent = response.request;
443
443
  const url = new URL(location, sent.url);
444
444
  const request = response.status === 303 && sent.method !== "GET" && sent.method !== "HEAD" || (response.status === 301 || response.status === 302) && sent.method === "POST" ? HttpClientRequest.setBody(HttpClientRequest.setMethod(sent, "GET"), HttpBody.empty) : sent;
445
- return url.origin === new URL(sent.url).origin ? HttpClientRequest.setUrl(request, url) : HttpClientRequest.make(request.method)(url, { body: request.body });
445
+ return url.origin === new URL(sent.url).origin ? HttpClientRequest.setUrl(request, url) : HttpClientRequest.setUrl(HttpClientRequest.makeWith(request.method, "", UrlParams.empty, Option.none(), Headers.empty, request.body), url);
446
446
  }
447
447
  function follow(client, response, redirects) {
448
448
  const next = redirect(response);
@@ -671,7 +671,6 @@ function make(auth) {
671
671
  variants
672
672
  };
673
673
  }
674
- //#endregion
675
674
  export { Base64FromFile, Base64UrlFromFile, DataUriFromFile, DateTimeFromRfc2822, DateTimeFromUnixSeconds, File, FileFromBase64, FileFromBase64Url, FileFromDataUri, Http_exports as Http, Http_exports, Rfc2822FromDateTime, UnixSecondsFromDateTime, continuation, decoded, form, literal, make, params, path, preauthenticated, segments, withFile, withForm };
676
675
 
677
676
  //# sourceMappingURL=Http.js.map