@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.
- package/README.md +5 -17
- package/dist/Action.d.ts +0 -1
- package/dist/Action.js +1 -2
- package/dist/AgentChannel.d.ts +11 -3
- package/dist/AgentChannel.d.ts.map +1 -1
- package/dist/AgentChannel.js +31 -5
- package/dist/AgentChannel.js.map +1 -1
- package/dist/AgentChannelConformance.d.ts +0 -1
- package/dist/AgentChannelConformance.js +1 -2
- package/dist/AgentChannelRuntime.d.ts +0 -1
- package/dist/AgentChannelRuntime.d.ts.map +1 -1
- package/dist/AgentChannelRuntime.js +3 -4
- package/dist/AgentChannelRuntime.js.map +1 -1
- package/dist/AiProvider.d.ts +0 -1
- package/dist/AiProvider.js +1 -2
- package/dist/AuthMethod.d.ts +0 -1
- package/dist/AuthMethod.js +1 -2
- package/dist/AuthMethodBinding.d.ts +0 -1
- package/dist/AuthMethodBinding.js +1 -2
- package/dist/AuthMethodExecution.d.ts +0 -1
- package/dist/AuthMethodExecution.js +1 -2
- package/dist/ConnectionResolver.d.ts +0 -1
- package/dist/ConnectionResolver.js +1 -2
- package/dist/DefinitionError.d.ts +0 -1
- package/dist/DefinitionError.js +1 -2
- package/dist/DualRegistry.d.ts +0 -1
- package/dist/DualRegistry.js +1 -2
- package/dist/DualRuntime.d.ts +0 -1
- package/dist/DualRuntime.js +1 -2
- package/dist/Files.d.ts +0 -1
- package/dist/Files.js +1 -2
- package/dist/Group.d.ts +0 -1
- package/dist/Group.js +1 -2
- package/dist/Http.d.ts +0 -1
- package/dist/Http.d.ts.map +1 -1
- package/dist/Http.js +4 -5
- package/dist/Http.js.map +1 -1
- package/dist/Mcp.d.ts +0 -1
- package/dist/Mcp.js +1 -2
- package/dist/OAuth2TokenRefresher.d.ts +0 -1
- package/dist/OAuth2TokenRefresher.js +1 -2
- package/dist/OAuthFlow.d.ts +0 -1
- package/dist/OAuthFlow.js +1 -2
- package/dist/Plugin.d.ts +0 -1
- package/dist/Plugin.js +1 -2
- package/dist/PluginRuntime.d.ts +0 -1
- package/dist/PluginRuntime.js +1 -2
- package/dist/Runner.js +3 -4
- package/dist/Runner.js.map +1 -1
- package/dist/ToolFile.d.ts +0 -1
- package/dist/ToolFile.js +1 -2
- package/dist/Trigger.d.ts +0 -1
- package/dist/Trigger.js +1 -2
- package/dist/_virtual/_rolldown/runtime.js +1 -2
- package/dist/internal/auth-context.d.ts +0 -2
- package/dist/internal/auth-context.d.ts.map +1 -1
- package/dist/internal/auth-execution.d.ts +0 -2
- package/dist/internal/auth-execution.d.ts.map +1 -1
- package/dist/internal/auth-execution.js +1 -2
- package/dist/internal/auth-runtime.d.ts +0 -2
- package/dist/internal/auth-runtime.d.ts.map +1 -1
- package/dist/internal/auth-runtime.js +1 -2
- package/dist/internal/capabilities.d.ts +0 -2
- package/dist/internal/capabilities.d.ts.map +1 -1
- package/dist/internal/capabilities.js +1 -2
- package/dist/internal/children.d.ts +0 -2
- package/dist/internal/children.d.ts.map +1 -1
- package/dist/internal/children.js +1 -2
- package/dist/internal/collection-utils.d.ts +0 -2
- package/dist/internal/collection-utils.d.ts.map +1 -1
- package/dist/internal/collection-utils.js +1 -2
- package/dist/internal/dual/actions.d.ts +0 -2
- package/dist/internal/dual/actions.d.ts.map +1 -1
- package/dist/internal/dual/actions.js +1 -2
- package/dist/internal/dual/invoke.d.ts +0 -2
- package/dist/internal/dual/invoke.d.ts.map +1 -1
- package/dist/internal/dual/invoke.js +1 -2
- package/dist/internal/dual/registry.d.ts +0 -2
- package/dist/internal/dual/registry.d.ts.map +1 -1
- package/dist/internal/dual/registry.js +1 -2
- package/dist/internal/dual/triggers.d.ts +0 -2
- package/dist/internal/dual/triggers.d.ts.map +1 -1
- package/dist/internal/dual/triggers.js +1 -2
- package/dist/internal/handler-context.d.ts +0 -2
- package/dist/internal/handler-context.d.ts.map +1 -1
- package/dist/internal/handler-context.js +1 -2
- package/dist/internal/identifier.d.ts +0 -2
- package/dist/internal/identifier.d.ts.map +1 -1
- package/dist/internal/identifier.js +1 -2
- package/dist/internal/plugin-handlers.d.ts +0 -2
- package/dist/internal/plugin-handlers.d.ts.map +1 -1
- package/dist/internal/plugin-handlers.js +1 -2
- package/dist/internal/proto.d.ts +0 -2
- package/dist/internal/proto.d.ts.map +1 -1
- package/dist/internal/proto.js +1 -2
- package/dist/internal/schema-runtime.d.ts +0 -2
- package/dist/internal/schema-runtime.d.ts.map +1 -1
- package/dist/internal/schema-runtime.js +1 -2
- package/dist/internal/trigger-runtime-shared.d.ts +0 -2
- package/dist/internal/trigger-runtime-shared.d.ts.map +1 -1
- package/dist/internal/trigger-runtime-shared.js +1 -2
- package/dist/internal/trigger-runtime.d.ts +0 -2
- package/dist/internal/trigger-runtime.d.ts.map +1 -1
- package/dist/internal/trigger-runtime.js +1 -2
- package/dist/internal/types.d.ts +0 -2
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/remote-runtime.d.ts +0 -1
- package/dist/remote-runtime.js +1 -2
- package/package.json +6 -7
- package/src/AgentChannel.ts +30 -2
- package/src/AgentChannelRuntime.ts +2 -1
- package/src/Http.ts +21 -4
- 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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"}
|
package/dist/AiProvider.d.ts
CHANGED
|
@@ -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
|
package/dist/AiProvider.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/AuthMethod.d.ts
CHANGED
|
@@ -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
|
package/dist/AuthMethod.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/dist/DefinitionError.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { Schema } from "effect";
|
|
3
|
-
|
|
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
|
package/dist/DualRegistry.d.ts
CHANGED
|
@@ -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
|
package/dist/DualRegistry.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/DualRuntime.d.ts
CHANGED
|
@@ -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
|
package/dist/DualRuntime.js
CHANGED
|
@@ -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
|
-
|
|
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
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
|
-
|
|
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
|
-
|
|
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
|
package/dist/Http.d.ts.map
CHANGED
|
@@ -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":";;;;;;;;;;;;;;;
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|