managed-deepagents 0.10.0-dev.9 → 0.10.1-dev.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 +864 -143
- package/dist/browser.d.ts +37 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +31 -0
- package/dist/browser.js.map +1 -0
- package/dist/channels/actor.d.ts +57 -0
- package/dist/channels/actor.d.ts.map +1 -0
- package/dist/channels/actor.js +24 -0
- package/dist/channels/actor.js.map +1 -0
- package/dist/channels/assistant-text.d.ts +29 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +81 -4
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts +20 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +44 -11
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +51 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +424 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/app-setup.d.ts +32 -0
- package/dist/channels/github/app-setup.d.ts.map +1 -0
- package/dist/channels/github/app-setup.js +146 -0
- package/dist/channels/github/app-setup.js.map +1 -0
- package/dist/channels/github/index.d.ts +5 -1
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +38 -46
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/mentions.d.ts +12 -0
- package/dist/channels/github/mentions.d.ts.map +1 -0
- package/dist/channels/github/mentions.js +185 -0
- package/dist/channels/github/mentions.js.map +1 -0
- package/dist/channels/github/schema.d.ts +271 -0
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +33 -0
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/github/types.d.ts +50 -26
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/http/endpoint.d.ts +137 -0
- package/dist/channels/http/endpoint.d.ts.map +1 -0
- package/dist/channels/http/endpoint.js +286 -0
- package/dist/channels/http/endpoint.js.map +1 -0
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +209 -89
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +7 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +32 -23
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +30 -24
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +61 -57
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +38 -15
- package/dist/channels/http/provider.d.ts.map +1 -1
- package/dist/channels/http/provider.js +54 -24
- package/dist/channels/http/provider.js.map +1 -1
- package/dist/channels/http/studio.d.ts +8 -1
- package/dist/channels/http/studio.d.ts.map +1 -1
- package/dist/channels/http/studio.js +13 -0
- package/dist/channels/http/studio.js.map +1 -1
- package/dist/channels/http/types.d.ts +95 -69
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/app-setup.d.ts +29 -0
- package/dist/channels/linear/app-setup.d.ts.map +1 -0
- package/dist/channels/linear/app-setup.js +102 -0
- package/dist/channels/linear/app-setup.js.map +1 -0
- package/dist/channels/linear/index.d.ts +5 -1
- package/dist/channels/linear/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +65 -94
- package/dist/channels/linear/index.js.map +1 -1
- package/dist/channels/linear/schema.d.ts +11 -25
- package/dist/channels/linear/schema.d.ts.map +1 -1
- package/dist/channels/linear/schema.js +6 -0
- package/dist/channels/linear/schema.js.map +1 -1
- package/dist/channels/linear/types.d.ts +37 -31
- package/dist/channels/linear/types.d.ts.map +1 -1
- package/dist/channels/messaging-registry.d.ts +16 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -1
- package/dist/channels/messaging-registry.js +29 -0
- package/dist/channels/messaging-registry.js.map +1 -1
- package/dist/channels/reserved-connections.d.ts.map +1 -1
- package/dist/channels/reserved-connections.js +10 -0
- package/dist/channels/reserved-connections.js.map +1 -1
- package/dist/channels/resolve-user-endpoint.d.ts +34 -0
- package/dist/channels/resolve-user-endpoint.d.ts.map +1 -0
- package/dist/channels/resolve-user-endpoint.js +51 -0
- package/dist/channels/resolve-user-endpoint.js.map +1 -0
- package/dist/channels/resolve-user.d.ts +95 -0
- package/dist/channels/resolve-user.d.ts.map +1 -0
- package/dist/channels/resolve-user.js +143 -0
- package/dist/channels/resolve-user.js.map +1 -0
- package/dist/channels/run-input.d.ts +46 -4
- package/dist/channels/run-input.d.ts.map +1 -1
- package/dist/channels/run-input.js +94 -30
- package/dist/channels/run-input.js.map +1 -1
- package/dist/channels/runtime.d.ts +5 -2
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +19 -10
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +2 -13
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +9 -76
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/api.d.ts +2 -0
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +6 -0
- package/dist/channels/slack/api.js.map +1 -1
- package/dist/channels/slack/connections.d.ts +6 -0
- package/dist/channels/slack/connections.d.ts.map +1 -0
- package/dist/channels/slack/connections.js +6 -0
- package/dist/channels/slack/connections.js.map +1 -0
- package/dist/channels/slack/events.d.ts +278 -0
- package/dist/channels/slack/events.d.ts.map +1 -0
- package/dist/channels/slack/events.js +235 -0
- package/dist/channels/slack/events.js.map +1 -0
- package/dist/channels/slack/files.d.ts.map +1 -1
- package/dist/channels/slack/files.js +2 -3
- package/dist/channels/slack/files.js.map +1 -1
- package/dist/channels/slack/index.d.ts +90 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +188 -6
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/slack/message-content.d.ts.map +1 -1
- package/dist/channels/slack/message-content.js +23 -28
- package/dist/channels/slack/message-content.js.map +1 -1
- package/dist/channels/slack/status.d.ts +76 -0
- package/dist/channels/slack/status.d.ts.map +1 -0
- package/dist/channels/slack/status.js +427 -0
- package/dist/channels/slack/status.js.map +1 -0
- package/dist/channels/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +9 -11
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/conversation.d.ts +11 -0
- package/dist/channels/trigger/conversation.d.ts.map +1 -0
- package/dist/channels/trigger/conversation.js +72 -0
- package/dist/channels/trigger/conversation.js.map +1 -0
- package/dist/channels/trigger/http.d.ts +130 -4
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +419 -82
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/identity-context.d.ts +1 -1
- package/dist/channels/trigger/identity-context.d.ts.map +1 -1
- package/dist/channels/trigger/identity-context.js +3 -5
- package/dist/channels/trigger/identity-context.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +70 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +141 -9
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/transport.d.ts +10 -0
- package/dist/channels/trigger/transport.d.ts.map +1 -1
- package/dist/channels/trigger/transport.js +25 -9
- package/dist/channels/trigger/transport.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +92 -3
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +37 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +53 -4
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js +2 -0
- package/dist/channels/types.js.map +1 -1
- package/dist/concurrency/batch-processor.d.ts +51 -0
- package/dist/concurrency/batch-processor.d.ts.map +1 -0
- package/dist/concurrency/batch-processor.js +99 -0
- package/dist/concurrency/batch-processor.js.map +1 -0
- package/dist/connections.d.ts +5 -12
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +28 -30
- package/dist/connections.js.map +1 -1
- package/dist/connectors/mcp/langsmith-url.d.ts.map +1 -1
- package/dist/connectors/mcp/langsmith-url.js +0 -1
- package/dist/connectors/mcp/langsmith-url.js.map +1 -1
- package/dist/credential-gate.js +3 -3
- package/dist/credential-gate.js.map +1 -1
- package/dist/define-deep-agent.d.ts +2 -2
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +53 -2
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +3 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/loopback.d.ts +7 -2
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +15 -4
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/options.d.ts +9 -0
- package/dist/identity/options.d.ts.map +1 -1
- package/dist/identity/options.js +1 -1
- package/dist/identity/options.js.map +1 -1
- package/dist/identity/slack/links.js +3 -2
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/types.d.ts +3 -0
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts +8 -0
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +32 -2
- package/dist/ingress/index.js.map +1 -1
- package/dist/ingress/loopback.d.ts +1 -0
- package/dist/ingress/loopback.d.ts.map +1 -1
- package/dist/ingress/loopback.js +7 -3
- package/dist/ingress/loopback.js.map +1 -1
- package/dist/ingress/runs.d.ts +27 -1
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +69 -6
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts +3 -0
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +29 -13
- package/dist/managed-composition.js.map +1 -1
- package/dist/memory/instructions-middleware.d.ts.map +1 -1
- package/dist/memory/instructions-middleware.js +6 -5
- package/dist/memory/instructions-middleware.js.map +1 -1
- package/dist/namespaces.d.ts +4 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +0 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/resilience/retry.d.ts +21 -0
- package/dist/resilience/retry.d.ts.map +1 -0
- package/dist/resilience/retry.js +40 -0
- package/dist/resilience/retry.js.map +1 -0
- package/dist/runtime/async-subagents.d.ts +27 -0
- package/dist/runtime/async-subagents.d.ts.map +1 -0
- package/dist/runtime/async-subagents.js +139 -0
- package/dist/runtime/async-subagents.js.map +1 -0
- package/dist/runtime/auth.d.ts +1 -2
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +138 -72
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +9 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +36 -11
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/browser-facade.d.ts +10 -0
- package/dist/runtime/browser-facade.d.ts.map +1 -0
- package/dist/runtime/browser-facade.js +23 -0
- package/dist/runtime/browser-facade.js.map +1 -0
- package/dist/runtime/browser-langsmith.d.ts +143 -0
- package/dist/runtime/browser-langsmith.d.ts.map +1 -0
- package/dist/runtime/browser-langsmith.js +507 -0
- package/dist/runtime/browser-langsmith.js.map +1 -0
- package/dist/runtime/browser-recorder.py +831 -0
- package/dist/runtime/browser-selection.d.ts +10 -0
- package/dist/runtime/browser-selection.d.ts.map +1 -0
- package/dist/runtime/browser-selection.js +21 -0
- package/dist/runtime/browser-selection.js.map +1 -0
- package/dist/runtime/browser.d.ts +138 -0
- package/dist/runtime/browser.d.ts.map +1 -0
- package/dist/runtime/browser.js +802 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/channel-icon.d.ts.map +1 -1
- package/dist/runtime/channel-icon.js +18 -7
- package/dist/runtime/channel-icon.js.map +1 -1
- package/dist/runtime/channel.d.ts +5 -0
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/graph-build-timing.d.ts +30 -0
- package/dist/runtime/graph-build-timing.d.ts.map +1 -0
- package/dist/runtime/graph-build-timing.js +50 -0
- package/dist/runtime/graph-build-timing.js.map +1 -0
- package/dist/runtime/http.d.ts +15 -0
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +37 -0
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +19 -7
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +4 -9
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +12 -25
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +38 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +104 -52
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/langsmith-env.d.ts +19 -0
- package/dist/runtime/langsmith-env.d.ts.map +1 -0
- package/dist/runtime/langsmith-env.js +38 -0
- package/dist/runtime/langsmith-env.js.map +1 -0
- package/dist/runtime/log.d.ts +8 -14
- package/dist/runtime/log.d.ts.map +1 -1
- package/dist/runtime/log.js +16 -7
- package/dist/runtime/log.js.map +1 -1
- package/dist/runtime/managed-middleware.d.ts.map +1 -1
- package/dist/runtime/managed-middleware.js +1 -14
- package/dist/runtime/managed-middleware.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +61 -0
- package/dist/runtime/managed-thread.d.ts.map +1 -0
- package/dist/runtime/managed-thread.js +76 -0
- package/dist/runtime/managed-thread.js.map +1 -0
- package/dist/runtime/managed-tools.d.ts +18 -2
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +26 -22
- package/dist/runtime/managed-tools.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +82 -11
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +173 -34
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/policy.d.ts.map +1 -1
- package/dist/runtime/memory/policy.js +1 -3
- package/dist/runtime/memory/policy.js.map +1 -1
- package/dist/runtime/parent-run.d.ts +33 -0
- package/dist/runtime/parent-run.d.ts.map +1 -0
- package/dist/runtime/parent-run.js +114 -0
- package/dist/runtime/parent-run.js.map +1 -0
- package/dist/runtime/run-input.d.ts +14 -1
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +118 -7
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +31 -17
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +112 -70
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +79 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +165 -7
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime/selected-skills-backend.d.ts +3 -3
- package/dist/runtime/selected-skills-backend.d.ts.map +1 -1
- package/dist/runtime/selected-skills-backend.js +5 -5
- package/dist/runtime/selected-skills-backend.js.map +1 -1
- package/dist/runtime/static-entry.d.ts.map +1 -1
- package/dist/runtime/static-entry.js +1 -0
- package/dist/runtime/static-entry.js.map +1 -1
- package/dist/runtime/thread-record.d.ts +88 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +213 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +12 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +15 -0
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +85 -23
- package/dist/runtime-schedules.js.map +1 -1
- package/dist/sandbox.d.ts +0 -6
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +3 -7
- package/dist/sandbox.js.map +1 -1
- package/dist/schedule-channel.d.ts +5 -2
- package/dist/schedule-channel.d.ts.map +1 -1
- package/dist/schedule-channel.js +13 -12
- package/dist/schedule-channel.js.map +1 -1
- package/dist/telemetry/lifecycle.d.ts +26 -0
- package/dist/telemetry/lifecycle.d.ts.map +1 -0
- package/dist/telemetry/lifecycle.js +49 -0
- package/dist/telemetry/lifecycle.js.map +1 -0
- package/dist/telemetry/metadata.d.ts.map +1 -1
- package/dist/telemetry/metadata.js +4 -4
- package/dist/telemetry/metadata.js.map +1 -1
- package/dist/telemetry/otel/context.d.ts +57 -0
- package/dist/telemetry/otel/context.d.ts.map +1 -0
- package/dist/telemetry/otel/context.js +122 -0
- package/dist/telemetry/otel/context.js.map +1 -0
- package/dist/telemetry/otel/exporter.d.ts +53 -0
- package/dist/telemetry/otel/exporter.d.ts.map +1 -0
- package/dist/telemetry/otel/exporter.js +190 -0
- package/dist/telemetry/otel/exporter.js.map +1 -0
- package/dist/telemetry/otel/index.d.ts +6 -0
- package/dist/telemetry/otel/index.d.ts.map +1 -0
- package/dist/telemetry/otel/index.js +3 -0
- package/dist/telemetry/otel/index.js.map +1 -0
- package/dist/telemetry/otel/otlp.d.ts +44 -0
- package/dist/telemetry/otel/otlp.d.ts.map +1 -0
- package/dist/telemetry/otel/otlp.js +7 -0
- package/dist/telemetry/otel/otlp.js.map +1 -0
- package/dist/telemetry/otel/truncate.d.ts +10 -0
- package/dist/telemetry/otel/truncate.d.ts.map +1 -0
- package/dist/telemetry/otel/truncate.js +39 -0
- package/dist/telemetry/otel/truncate.js.map +1 -0
- package/dist/telemetry/run-listener.d.ts +1 -1
- package/dist/telemetry/run-listener.d.ts.map +1 -1
- package/dist/telemetry/run-listener.js +32 -2
- package/dist/telemetry/run-listener.js.map +1 -1
- package/dist/telemetry/transport/posthog.d.ts +13 -1
- package/dist/telemetry/transport/posthog.d.ts.map +1 -1
- package/dist/telemetry/transport/posthog.js +68 -30
- package/dist/telemetry/transport/posthog.js.map +1 -1
- package/dist/types.d.ts +19 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/values.d.ts +15 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +31 -0
- package/dist/values.js.map +1 -0
- package/package.json +26 -12
- package/dist/channels/http/forward.d.ts +0 -13
- package/dist/channels/http/forward.d.ts.map +0 -1
- package/dist/channels/http/forward.js +0 -128
- package/dist/channels/http/forward.js.map +0 -1
- package/dist/channels/http/reply.d.ts +0 -20
- package/dist/channels/http/reply.d.ts.map +0 -1
- package/dist/channels/http/reply.js +0 -116
- package/dist/channels/http/reply.js.map +0 -1
|
@@ -7,8 +7,22 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { JsonObject } from "./manifest.js";
|
|
9
9
|
import type { ChannelMessagingAdapter } from "./runtime.js";
|
|
10
|
+
import type { HttpDelivery } from "./http/types.js";
|
|
11
|
+
import type { JsonValue } from "./types.js";
|
|
10
12
|
import type { Channel } from "../runtime/channel.js";
|
|
11
13
|
import type { Connector } from "../runtime/connector.js";
|
|
14
|
+
/**
|
|
15
|
+
* Tells a conversation that its thread waits on a decision. Internal: the
|
|
16
|
+
* built-in GitHub and Linear channels set it; `channels.http()` has none.
|
|
17
|
+
*/
|
|
18
|
+
export type PausedNotice = (target: JsonValue, delivery: HttpDelivery, outcome: "interrupted" | "waiting") => Promise<void>;
|
|
19
|
+
/** Give a built-in channel its paused notice. */
|
|
20
|
+
export declare function withPausedNotice<T extends object>(channel: T, notice: PausedNotice): T;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the channel posts a run's final answer: `false` only for one
|
|
23
|
+
* declared with `reply: "none"`, which leaves replying to the agent.
|
|
24
|
+
*/
|
|
25
|
+
export declare function channelAutoRepliesForName(name: string): boolean;
|
|
12
26
|
export declare function channelProviderForName(name: string): string | undefined;
|
|
13
27
|
export declare function channelProviderConfigForName(name: string): JsonObject | undefined;
|
|
14
28
|
/** Register messaging factories from collected channels. */
|
|
@@ -17,4 +31,6 @@ export declare function registerChannelMessaging(channels: readonly Channel[]):
|
|
|
17
31
|
export declare function registerConnectorMessaging(connectors: readonly Connector[]): void;
|
|
18
32
|
/** Build a transport for a channel/connector file-stem name. */
|
|
19
33
|
export declare function messagingTransportForName(name: string, env?: NodeJS.ProcessEnv): ChannelMessagingAdapter | undefined;
|
|
34
|
+
/** The paused notice of a channel by file-stem name, if it has one. */
|
|
35
|
+
export declare function pausedNoticeForName(name: string): PausedNotice | undefined;
|
|
20
36
|
//# sourceMappingURL=messaging-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,aAAa,GAAG,SAAS,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;AAKnB,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,YAAY,GACnB,CAAC,CAGH;AAiBD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX,UAAU,GAAG,SAAS,CAExB;AAqCD,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAE3E;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,IAAI,CAEN;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,GAAG,SAAS,CAErC;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE1E"}
|
|
@@ -6,7 +6,22 @@
|
|
|
6
6
|
* delivery look up transports by file-stem name.
|
|
7
7
|
*/
|
|
8
8
|
import { registerDeclaredSourceProviders } from "./source-providers.js";
|
|
9
|
+
/** Where a channel keeps its paused notice, out of its public shape. */
|
|
10
|
+
const PAUSED_NOTICE = Symbol("mda.pausedNotice");
|
|
11
|
+
/** Give a built-in channel its paused notice. */
|
|
12
|
+
export function withPausedNotice(channel, notice) {
|
|
13
|
+
Object.defineProperty(channel, PAUSED_NOTICE, { value: notice });
|
|
14
|
+
return channel;
|
|
15
|
+
}
|
|
9
16
|
const providerByName = new Map();
|
|
17
|
+
const repliesNoneByName = new Set();
|
|
18
|
+
/**
|
|
19
|
+
* Whether the channel posts a run's final answer: `false` only for one
|
|
20
|
+
* declared with `reply: "none"`, which leaves replying to the agent.
|
|
21
|
+
*/
|
|
22
|
+
export function channelAutoRepliesForName(name) {
|
|
23
|
+
return !repliesNoneByName.has(name);
|
|
24
|
+
}
|
|
10
25
|
const providerConfigByName = new Map();
|
|
11
26
|
export function channelProviderForName(name) {
|
|
12
27
|
return providerByName.get(name);
|
|
@@ -15,6 +30,7 @@ export function channelProviderConfigForName(name) {
|
|
|
15
30
|
return providerConfigByName.get(name);
|
|
16
31
|
}
|
|
17
32
|
const byName = new Map();
|
|
33
|
+
const pausedNoticeByName = new Map();
|
|
18
34
|
function registerMessagingSources(sources) {
|
|
19
35
|
registerDeclaredSourceProviders(sources);
|
|
20
36
|
for (const source of sources) {
|
|
@@ -27,6 +43,11 @@ function registerMessagingSources(sources) {
|
|
|
27
43
|
else {
|
|
28
44
|
byName.delete(source.name);
|
|
29
45
|
}
|
|
46
|
+
const notice = source[PAUSED_NOTICE];
|
|
47
|
+
if (notice)
|
|
48
|
+
pausedNoticeByName.set(source.name, notice);
|
|
49
|
+
else
|
|
50
|
+
pausedNoticeByName.delete(source.name);
|
|
30
51
|
if (source.kind)
|
|
31
52
|
providerByName.set(source.name, source.kind);
|
|
32
53
|
const requirements = typeof source.requirements === "function"
|
|
@@ -35,6 +56,10 @@ function registerMessagingSources(sources) {
|
|
|
35
56
|
if (requirements?.provider) {
|
|
36
57
|
providerByName.set(source.name, requirements.provider);
|
|
37
58
|
}
|
|
59
|
+
if (source.reply === "none")
|
|
60
|
+
repliesNoneByName.add(source.name);
|
|
61
|
+
else
|
|
62
|
+
repliesNoneByName.delete(source.name);
|
|
38
63
|
if (requirements?.providerConfig) {
|
|
39
64
|
providerConfigByName.set(source.name, requirements.providerConfig);
|
|
40
65
|
}
|
|
@@ -55,4 +80,8 @@ export function registerConnectorMessaging(connectors) {
|
|
|
55
80
|
export function messagingTransportForName(name, env = process.env) {
|
|
56
81
|
return byName.get(name)?.(env);
|
|
57
82
|
}
|
|
83
|
+
/** The paused notice of a channel by file-stem name, if it has one. */
|
|
84
|
+
export function pausedNoticeForName(name) {
|
|
85
|
+
return pausedNoticeByName.get(name);
|
|
86
|
+
}
|
|
58
87
|
//# sourceMappingURL=messaging-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reserved-connections.d.ts","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reserved-connections.d.ts","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAiDA;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS5E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,CAGR"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { GITHUB_TOKEN_SLUG, githubAppConnectionSlug, } from "./github/connections.js";
|
|
2
2
|
import { LINEAR_TOKEN_SLUG, linearAppConnectionSlug, } from "./linear/connections.js";
|
|
3
|
+
import { SLACK_BOT_TOKEN_SLUG } from "./slack/connections.js";
|
|
3
4
|
// First-party channels' reserved agent connection names, listed here so
|
|
4
5
|
// resolution does not depend on adapter modules being loaded.
|
|
5
6
|
const builtinReservedConnections = new Map([
|
|
@@ -19,6 +20,15 @@ const builtinReservedConnections = new Map([
|
|
|
19
20
|
actsAs: "act in Linear as the app",
|
|
20
21
|
},
|
|
21
22
|
],
|
|
23
|
+
[
|
|
24
|
+
SLACK_BOT_TOKEN_SLUG,
|
|
25
|
+
{
|
|
26
|
+
// The Slack app's connection has the reserved name itself.
|
|
27
|
+
resolve: () => SLACK_BOT_TOKEN_SLUG,
|
|
28
|
+
token: "the Slack app's bot token",
|
|
29
|
+
actsAs: "act in Slack as the app",
|
|
30
|
+
},
|
|
31
|
+
],
|
|
22
32
|
]);
|
|
23
33
|
/**
|
|
24
34
|
* Why a channel's reserved agent connection cannot be read as a user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reserved-connections.js","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"reserved-connections.js","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wEAAwE;AACxE,8DAA8D;AAC9D,MAAM,0BAA0B,GAAG,IAAI,GAAG,CASxC;IACA;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,qCAAqC;YAC5C,MAAM,EAAE,0BAA0B;SACnC;KACF;IACD;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,0BAA0B;SACnC;KACF;IACD;QACE,oBAAoB;QACpB;YACE,2DAA2D;YAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB;YACnC,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,yBAAyB;SAClC;KACF;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CACL,GAAG,IAAI,qDAAqD,QAAQ,CAAC,KAAK,IAAI;QAC9E,4CAA4C,IAAI,0BAA0B;QAC1E,GAAG,QAAQ,CAAC,MAAM,GAAG,CACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,YAAgC;IAEhC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `resolveUser` that is an endpoint. Kept apart from `resolve-user.ts`, which
|
|
3
|
+
* reaches Agent Auth, so `defineIdentity` can check one with no runtime
|
|
4
|
+
* dependency.
|
|
5
|
+
*/
|
|
6
|
+
import { type EventEndpoint } from "./http/endpoint.js";
|
|
7
|
+
import type { ResolveUser, ResolveUserRequest } from "./resolve-user.js";
|
|
8
|
+
/**
|
|
9
|
+
* A `resolveUser` that is an endpoint: a URL, or a `Request` that also carries
|
|
10
|
+
* headers, such as a credential the service checks. Before a delivery starts a
|
|
11
|
+
* run, MDA POSTs the {@link ResolveUserRequest} as JSON to the URL, with the
|
|
12
|
+
* `Request`'s headers, signed when the deployment has `MDA_SERVICE_SECRET`,
|
|
13
|
+
* with the webhook ID `msg_<deliveryId>_resolve_user`. The service answers
|
|
14
|
+
* with a `ResolveUserResult`, checked as a function's; `null` or HTTP 204
|
|
15
|
+
* keeps the channel's own principal. A network error, HTTP 429 or a 5xx is
|
|
16
|
+
* tried again once. Any other answer, a redirect, or no answer within 5
|
|
17
|
+
* seconds fails the delivery, as a function that throws does. A retry and a
|
|
18
|
+
* redelivery keep the webhook ID, so the service answers each request and
|
|
19
|
+
* never dedupes on it.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ResolveUserEndpoint {
|
|
22
|
+
#private;
|
|
23
|
+
constructor(endpoint: EventEndpoint, label: string);
|
|
24
|
+
/** The service's answer about one delivery's sender, not yet checked. */
|
|
25
|
+
ask(request: ResolveUserRequest, deliveryId: string): Promise<unknown>;
|
|
26
|
+
}
|
|
27
|
+
/** A declared `resolveUser`: a function, or the service an endpoint names. */
|
|
28
|
+
export type ChannelResolveUser = ResolveUser | ResolveUserEndpoint;
|
|
29
|
+
/**
|
|
30
|
+
* A declared `resolveUser`, with an endpoint's URL and the deployment's secret
|
|
31
|
+
* checked; one that is neither a function nor an endpoint throws.
|
|
32
|
+
*/
|
|
33
|
+
export declare function checkedResolveUser(resolveUser: unknown, owner: string): ChannelResolveUser | undefined;
|
|
34
|
+
//# sourceMappingURL=resolve-user-endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-user-endpoint.d.ts","sourceRoot":"","sources":["../../src/channels/resolve-user-endpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAazE;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;;IAG9B,YAAY,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAEjD;IAED,yEAAyE;IACzE,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrE;CACF;AAED,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS,CAQhC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `resolveUser` that is an endpoint. Kept apart from `resolve-user.ts`, which
|
|
3
|
+
* reaches Agent Auth, so `defineIdentity` can check one with no runtime
|
|
4
|
+
* dependency.
|
|
5
|
+
*/
|
|
6
|
+
import { endpointClient, isEventEndpoint, } from "./http/endpoint.js";
|
|
7
|
+
/**
|
|
8
|
+
* The limits of a `resolveUser` endpoint. The delivery waits on it before MDA
|
|
9
|
+
* acknowledges it, and Trigger Server gives up on a delivery after 10 seconds,
|
|
10
|
+
* so two attempts share 5 seconds.
|
|
11
|
+
*/
|
|
12
|
+
const ENDPOINT_LIMITS = {
|
|
13
|
+
timeoutMs: 5_000,
|
|
14
|
+
total: true,
|
|
15
|
+
retryDelaysMs: [500],
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A `resolveUser` that is an endpoint: a URL, or a `Request` that also carries
|
|
19
|
+
* headers, such as a credential the service checks. Before a delivery starts a
|
|
20
|
+
* run, MDA POSTs the {@link ResolveUserRequest} as JSON to the URL, with the
|
|
21
|
+
* `Request`'s headers, signed when the deployment has `MDA_SERVICE_SECRET`,
|
|
22
|
+
* with the webhook ID `msg_<deliveryId>_resolve_user`. The service answers
|
|
23
|
+
* with a `ResolveUserResult`, checked as a function's; `null` or HTTP 204
|
|
24
|
+
* keeps the channel's own principal. A network error, HTTP 429 or a 5xx is
|
|
25
|
+
* tried again once. Any other answer, a redirect, or no answer within 5
|
|
26
|
+
* seconds fails the delivery, as a function that throws does. A retry and a
|
|
27
|
+
* redelivery keep the webhook ID, so the service answers each request and
|
|
28
|
+
* never dedupes on it.
|
|
29
|
+
*/
|
|
30
|
+
export class ResolveUserEndpoint {
|
|
31
|
+
#ask;
|
|
32
|
+
constructor(endpoint, label) {
|
|
33
|
+
this.#ask = endpointClient(endpoint, label, "resolveUser endpoint");
|
|
34
|
+
}
|
|
35
|
+
/** The service's answer about one delivery's sender, not yet checked. */
|
|
36
|
+
ask(request, deliveryId) {
|
|
37
|
+
return this.#ask(`msg_${deliveryId}_resolve_user`, JSON.stringify(request), ENDPOINT_LIMITS);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A declared `resolveUser`, with an endpoint's URL and the deployment's secret
|
|
42
|
+
* checked; one that is neither a function nor an endpoint throws.
|
|
43
|
+
*/
|
|
44
|
+
export function checkedResolveUser(resolveUser, owner) {
|
|
45
|
+
if (resolveUser === undefined || typeof resolveUser === "function")
|
|
46
|
+
return resolveUser;
|
|
47
|
+
if (isEventEndpoint(resolveUser))
|
|
48
|
+
return new ResolveUserEndpoint(resolveUser, `${owner}(...) resolveUser`);
|
|
49
|
+
throw new TypeError(`${owner}(...) resolveUser must be a function or an endpoint URL`);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=resolve-user-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-user-endpoint.js","sourceRoot":"","sources":["../../src/channels/resolve-user-endpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,oBAAoB,CAAC;AAG5B;;;;GAIG;AACH,MAAM,eAAe,GAAmB;IACtC,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC,GAAG,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAmB;IACrB,IAAI,CAAc;IAE3B,YAAY,QAAuB,EAAE,KAAa;QAChD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,yEAAyE;IACzE,GAAG,CAAC,OAA2B,EAAE,UAAkB;QACjD,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,UAAU,eAAe,EAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,eAAe,CAChB,CAAC;IACJ,CAAC;CACF;AAKD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAoB,EACpB,KAAa;IAEb,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,UAAU;QAChE,OAAO,WAAsC,CAAC;IAChD,IAAI,eAAe,CAAC,WAAW,CAAC;QAC9B,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC3E,MAAM,IAAI,SAAS,CACjB,GAAG,KAAK,yDAAyD,CAClE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type ResolvePrincipalIdentity } from "../agent-auth.js";
|
|
2
|
+
import { type ChannelActor } from "./actor.js";
|
|
3
|
+
import { type ChannelResolveUser } from "./resolve-user-endpoint.js";
|
|
4
|
+
import { type ChannelMessagingAdapter } from "./runtime.js";
|
|
5
|
+
import type { ChannelMessage, JsonValue } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* What `resolveUser` gets: the verified sender of a channel delivery. An
|
|
8
|
+
* endpoint is POSTed it as JSON.
|
|
9
|
+
*
|
|
10
|
+
* @experimental This may change in a minor release.
|
|
11
|
+
*/
|
|
12
|
+
export interface ResolveUserRequest<A extends ChannelActor = ChannelActor> {
|
|
13
|
+
/** Absent when the channel could not verify who sent the delivery. */
|
|
14
|
+
actor?: A;
|
|
15
|
+
channel: {
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Who a channel delivery runs as.
|
|
21
|
+
*
|
|
22
|
+
* - `user`: one of your users. The run gets the principal a backend call with
|
|
23
|
+
* `auth: "backend"` gets for the same `id`.
|
|
24
|
+
* - `identity`: an exact Agent Auth identity, such as the IdP `sub` your web
|
|
25
|
+
* users sign in with.
|
|
26
|
+
* - `reply`: start nothing, and post `message` where the delivery came from, as
|
|
27
|
+
* `runtime.channel.post` would.
|
|
28
|
+
* - `ignore`: start nothing.
|
|
29
|
+
*
|
|
30
|
+
* `null` or `undefined` keeps the channel's own principal.
|
|
31
|
+
*
|
|
32
|
+
* @experimental This may change in a minor release.
|
|
33
|
+
*/
|
|
34
|
+
export type ResolveUserResult = {
|
|
35
|
+
type: "user";
|
|
36
|
+
id: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: "identity";
|
|
39
|
+
provider: string;
|
|
40
|
+
issuer: string;
|
|
41
|
+
subject: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: "reply";
|
|
44
|
+
message: ChannelMessage;
|
|
45
|
+
} | {
|
|
46
|
+
type: "ignore";
|
|
47
|
+
} | null | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Map a channel's verified sender to one of your users.
|
|
50
|
+
*
|
|
51
|
+
* @experimental This may change in a minor release.
|
|
52
|
+
*/
|
|
53
|
+
export type ResolveUser<A extends ChannelActor = ChannelActor> = (request: ResolveUserRequest<A>) => ResolveUserResult | Promise<ResolveUserResult>;
|
|
54
|
+
/**
|
|
55
|
+
* What a delivery does after `resolveUser`.
|
|
56
|
+
*
|
|
57
|
+
* @experimental This may change in a minor release.
|
|
58
|
+
*/
|
|
59
|
+
export type ChannelUser = {
|
|
60
|
+
type: "principal";
|
|
61
|
+
id: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: "reply";
|
|
64
|
+
message: ChannelMessage;
|
|
65
|
+
} | {
|
|
66
|
+
type: "ignore";
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Ask `resolveUser` about the actor of delivery `deliveryId`; `undefined` keeps
|
|
70
|
+
* the channel's principal.
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveChannelUser(resolveUser: ChannelResolveUser | undefined, actor: ChannelActor | undefined, channelName: string, deliveryId: string, resolvePrincipal?: (identity: ResolvePrincipalIdentity) => Promise<string>): Promise<ChannelUser | undefined>;
|
|
73
|
+
/**
|
|
74
|
+
* The principal a webhook channel's sender runs as when no `resolveUser` maps
|
|
75
|
+
* them, from {@link actorIdentity}; `undefined` runs the delivery as the
|
|
76
|
+
* channel. Unlike a mapped user's, it owns no user connections: whoever
|
|
77
|
+
* completes a connection's sign-in from a public thread would attach their
|
|
78
|
+
* account to it. Without Agent Auth (`mda dev` without a LangSmith key) the
|
|
79
|
+
* channel's own user ID stays.
|
|
80
|
+
*/
|
|
81
|
+
export declare function senderPrincipalId(actor: ChannelActor | undefined, resolvePrincipal?: (identity: ResolvePrincipalIdentity) => Promise<string>): Promise<string | undefined>;
|
|
82
|
+
/** Set a channel's own `resolveUser`, which overrides the identity's. */
|
|
83
|
+
export declare function withResolveUser<C extends object>(channel: C, resolveUser: unknown, owner: string): C;
|
|
84
|
+
/**
|
|
85
|
+
* Post `resolveUser`'s reply through the path `runtime.channel.post` takes,
|
|
86
|
+
* once per `deliveryKey`.
|
|
87
|
+
*/
|
|
88
|
+
export declare function postReply(message: ChannelMessage, channel: {
|
|
89
|
+
name: string;
|
|
90
|
+
provider: string;
|
|
91
|
+
target: JsonValue;
|
|
92
|
+
transport: ChannelMessagingAdapter | undefined;
|
|
93
|
+
deliveryKey?: string;
|
|
94
|
+
}): Promise<void>;
|
|
95
|
+
//# sourceMappingURL=resolve-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-user.d.ts","sourceRoot":"","sources":["../../src/channels/resolve-user.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK9D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACvE,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB,IAAI,GACJ,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CAC/D,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC3B,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAiBpD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,GAAE,CAChB,QAAQ,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAA8B,GAChD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAqClC;AAKD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,gBAAgB,GAAE,CAChB,QAAQ,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAA8B,GAChD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,GACZ,CAAC,CAQH;AAMD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ConnectionsNotConfiguredError, WORKSPACE_SETTING, } from "../agent-auth.js";
|
|
3
|
+
import { resolveExternalPrincipalId, TRUSTED_BACKEND_PROVIDER, } from "../connections.js";
|
|
4
|
+
import { resolveWorkspaceId } from "../runtime/langsmith-env.js";
|
|
5
|
+
import { logger } from "../runtime/log.js";
|
|
6
|
+
import { actorIdentity } from "./actor.js";
|
|
7
|
+
import { channelMessageSchema, nonblankStringSchema, } from "./message-schema.js";
|
|
8
|
+
import { checkedResolveUser, ResolveUserEndpoint, } from "./resolve-user-endpoint.js";
|
|
9
|
+
import { createRuntimeChannel, } from "./runtime.js";
|
|
10
|
+
/** A result `resolveUser` returns, or an endpoint answers, other than `null`. */
|
|
11
|
+
const resultSchema = z.discriminatedUnion("type", [
|
|
12
|
+
z.strictObject({ type: z.literal("user"), id: nonblankStringSchema }),
|
|
13
|
+
z.strictObject({
|
|
14
|
+
type: z.literal("identity"),
|
|
15
|
+
provider: nonblankStringSchema,
|
|
16
|
+
issuer: nonblankStringSchema,
|
|
17
|
+
subject: nonblankStringSchema,
|
|
18
|
+
}),
|
|
19
|
+
z.strictObject({ type: z.literal("reply"), message: channelMessageSchema }),
|
|
20
|
+
z.strictObject({ type: z.literal("ignore") }),
|
|
21
|
+
]);
|
|
22
|
+
const RESULT_SHAPE = 'resolveUser must return { type: "user", id }, { type: "identity", provider, issuer, subject }, { type: "reply", message }, { type: "ignore" } or null';
|
|
23
|
+
/**
|
|
24
|
+
* Ask `resolveUser` about the actor of delivery `deliveryId`; `undefined` keeps
|
|
25
|
+
* the channel's principal.
|
|
26
|
+
*/
|
|
27
|
+
export async function resolveChannelUser(resolveUser, actor, channelName, deliveryId, resolvePrincipal = resolveExternalPrincipalId) {
|
|
28
|
+
if (!resolveUser)
|
|
29
|
+
return undefined;
|
|
30
|
+
const request = {
|
|
31
|
+
...(actor && { actor }),
|
|
32
|
+
channel: { name: channelName },
|
|
33
|
+
};
|
|
34
|
+
const answer = resolveUser instanceof ResolveUserEndpoint
|
|
35
|
+
? await resolveUser.ask(request, deliveryId)
|
|
36
|
+
: await resolveUser(request);
|
|
37
|
+
if (answer === null || answer === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
// An endpoint's answer is any JSON, and a function's is checked the same way.
|
|
40
|
+
const parsed = resultSchema.safeParse(answer);
|
|
41
|
+
if (!parsed.success)
|
|
42
|
+
throw new TypeError(RESULT_SHAPE);
|
|
43
|
+
const result = parsed.data;
|
|
44
|
+
switch (result.type) {
|
|
45
|
+
case "user":
|
|
46
|
+
return {
|
|
47
|
+
type: "principal",
|
|
48
|
+
id: await resolvePrincipal(appUserIdentity(result.id)),
|
|
49
|
+
};
|
|
50
|
+
case "identity":
|
|
51
|
+
return {
|
|
52
|
+
type: "principal",
|
|
53
|
+
id: await resolvePrincipal({
|
|
54
|
+
provider: result.provider,
|
|
55
|
+
issuer: result.issuer,
|
|
56
|
+
subject: result.subject,
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
case "reply":
|
|
60
|
+
return { type: "reply", message: result.message };
|
|
61
|
+
case "ignore":
|
|
62
|
+
return { type: "ignore" };
|
|
63
|
+
default:
|
|
64
|
+
throw new TypeError(RESULT_SHAPE);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Whether the fallback without Agent Auth was logged already. */
|
|
68
|
+
let loggedSenderFallback = false;
|
|
69
|
+
/**
|
|
70
|
+
* The principal a webhook channel's sender runs as when no `resolveUser` maps
|
|
71
|
+
* them, from {@link actorIdentity}; `undefined` runs the delivery as the
|
|
72
|
+
* channel. Unlike a mapped user's, it owns no user connections: whoever
|
|
73
|
+
* completes a connection's sign-in from a public thread would attach their
|
|
74
|
+
* account to it. Without Agent Auth (`mda dev` without a LangSmith key) the
|
|
75
|
+
* channel's own user ID stays.
|
|
76
|
+
*/
|
|
77
|
+
export async function senderPrincipalId(actor, resolvePrincipal = resolveExternalPrincipalId) {
|
|
78
|
+
const identity = actor && actorIdentity(actor);
|
|
79
|
+
if (!identity)
|
|
80
|
+
return undefined;
|
|
81
|
+
try {
|
|
82
|
+
return await resolvePrincipal(identity);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (!(error instanceof ConnectionsNotConfiguredError))
|
|
86
|
+
throw error;
|
|
87
|
+
if (!loggedSenderFallback) {
|
|
88
|
+
loggedSenderFallback = true;
|
|
89
|
+
logger.warn(`channel senders keep the channel's user ID: ${error.message}`);
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Set a channel's own `resolveUser`, which overrides the identity's. */
|
|
95
|
+
export function withResolveUser(channel, resolveUser, owner) {
|
|
96
|
+
const checked = checkedResolveUser(resolveUser, owner);
|
|
97
|
+
if (checked === undefined)
|
|
98
|
+
return channel;
|
|
99
|
+
Object.defineProperty(channel, "resolveUser", {
|
|
100
|
+
value: checked,
|
|
101
|
+
enumerable: false,
|
|
102
|
+
});
|
|
103
|
+
return channel;
|
|
104
|
+
}
|
|
105
|
+
/** Deliveries already replied to; a provider may redeliver one. */
|
|
106
|
+
const repliedDeliveries = new Set();
|
|
107
|
+
const REPLIED_DELIVERIES_KEPT = 1000;
|
|
108
|
+
/**
|
|
109
|
+
* Post `resolveUser`'s reply through the path `runtime.channel.post` takes,
|
|
110
|
+
* once per `deliveryKey`.
|
|
111
|
+
*/
|
|
112
|
+
export async function postReply(message, channel) {
|
|
113
|
+
const { deliveryKey, ...route } = channel;
|
|
114
|
+
if (deliveryKey !== undefined) {
|
|
115
|
+
if (repliedDeliveries.has(deliveryKey))
|
|
116
|
+
return;
|
|
117
|
+
repliedDeliveries.add(deliveryKey);
|
|
118
|
+
if (repliedDeliveries.size > REPLIED_DELIVERIES_KEPT)
|
|
119
|
+
repliedDeliveries.delete(repliedDeliveries.values().next().value);
|
|
120
|
+
}
|
|
121
|
+
const { post } = createRuntimeChannel({ ...route, event: null });
|
|
122
|
+
if (!post) {
|
|
123
|
+
logger.warn("channel cannot post resolveUser's reply");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
await post(message);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.error(`channel resolveUser reply failed (${logger.safeErrorLabel(error)})`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function appUserIdentity(id) {
|
|
134
|
+
const workspaceId = resolveWorkspaceId();
|
|
135
|
+
if (!workspaceId)
|
|
136
|
+
throw new ConnectionsNotConfiguredError(WORKSPACE_SETTING);
|
|
137
|
+
return {
|
|
138
|
+
provider: TRUSTED_BACKEND_PROVIDER,
|
|
139
|
+
issuer: workspaceId,
|
|
140
|
+
subject: id,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=resolve-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-user.js","sourceRoot":"","sources":["../../src/channels/resolve-user.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { type BaseMessage, type BaseMessageLike } from "@langchain/core/messages";
|
|
6
6
|
import type { LangGraphRunnableConfig } from "@langchain/langgraph";
|
|
7
7
|
import type { JsonObject } from "./manifest.js";
|
|
8
|
+
import type { JsonValue } from "./types.js";
|
|
8
9
|
/**
|
|
9
10
|
* State to start a run with, as `agent.invoke` takes it: `messages` plus any
|
|
10
11
|
* other keys of the agent's state.
|
|
@@ -15,18 +16,35 @@ export interface ChannelStateInput {
|
|
|
15
16
|
}
|
|
16
17
|
/** A user message's text, a message, or state to start a run with. */
|
|
17
18
|
export type ChannelRunInput = string | BaseMessage | ChannelStateInput;
|
|
18
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Run options a handler may set with its input, as `agent.invoke` takes them.
|
|
21
|
+
*
|
|
22
|
+
* @experimental This may change in a minor release.
|
|
23
|
+
*/
|
|
19
24
|
export type ChannelRunOptions = Pick<LangGraphRunnableConfig<Record<string, unknown>>, "context"> & {
|
|
20
25
|
/**
|
|
21
26
|
* Metadata for the run, such as where it came from, to find it by in
|
|
22
27
|
* LangSmith. Keys are letters, digits, `_`, `.` or `-` and start with a
|
|
23
|
-
* letter
|
|
28
|
+
* letter. Keys the Agent Server and LangSmith set are reserved: those
|
|
29
|
+
* starting with `mda_`, `langgraph_` or `ls_`, and ids such as `thread_id`,
|
|
30
|
+
* `session_id`, `run_id` or `user_id`.
|
|
31
|
+
*/
|
|
32
|
+
metadata?: {
|
|
33
|
+
readonly [key: string]: JsonValue;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* A URL the Agent Server POSTs the finished run to (its status, metadata,
|
|
37
|
+
* values and any error), as LangGraph's `runs.create({ webhook })` does:
|
|
38
|
+
* from the server, so it reaches you even if the deployment restarts.
|
|
39
|
+
* http(s), without credentials in it.
|
|
24
40
|
*/
|
|
25
|
-
|
|
41
|
+
webhook?: string;
|
|
26
42
|
};
|
|
27
43
|
/**
|
|
28
44
|
* What a channel handler may return to start a run: the input, or the input
|
|
29
45
|
* with run options, as `agent.invoke(input, options)` takes them.
|
|
46
|
+
*
|
|
47
|
+
* @experimental This may change in a minor release.
|
|
30
48
|
*/
|
|
31
49
|
export type ChannelRunResult = ChannelRunInput | readonly [ChannelRunInput, ChannelRunOptions];
|
|
32
50
|
/** A handler's result as the Agent Server takes it. */
|
|
@@ -37,10 +55,34 @@ export interface NormalizedRunInput {
|
|
|
37
55
|
state: JsonObject;
|
|
38
56
|
context?: JsonObject;
|
|
39
57
|
metadata?: JsonObject;
|
|
58
|
+
webhook?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A handler's run input as `startIngressRun` takes it, with MDA's own
|
|
62
|
+
* `metadata` over the handler's, so a handler can't replace it. Empty state
|
|
63
|
+
* and metadata are left out.
|
|
64
|
+
*/
|
|
65
|
+
export declare function runStartOptions(input: NormalizedRunInput, metadata?: JsonObject): {
|
|
66
|
+
messages: JsonObject[];
|
|
67
|
+
state?: JsonObject;
|
|
68
|
+
metadata?: JsonObject;
|
|
69
|
+
webhook?: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Run input MDA starts no run with. Its `reason`, which is also its message,
|
|
73
|
+
* says what is wrong in a fixed phrase. A key or type it names is bounded to
|
|
74
|
+
* one log line, so the channel logs the reason, where it logs no other
|
|
75
|
+
* error's message. A `TypeError`, as invalid run input threw before.
|
|
76
|
+
*/
|
|
77
|
+
export declare class InvalidRunInput extends TypeError {
|
|
78
|
+
/** Why MDA refused the input, such as `run metadata key is reserved: user_id`. */
|
|
79
|
+
readonly reason: string;
|
|
80
|
+
constructor(reason: string);
|
|
40
81
|
}
|
|
41
82
|
/**
|
|
42
83
|
* Normalize what a handler returned. `null` and `undefined` start nothing;
|
|
43
|
-
* anything else that is not valid input throws a
|
|
84
|
+
* anything else that is not valid input throws an {@link InvalidRunInput}, a
|
|
85
|
+
* `TypeError`. A run option that is `null` or `undefined` is not set.
|
|
44
86
|
*/
|
|
45
87
|
export declare function normalizeRunInput(value: unknown): NormalizedRunInput | undefined;
|
|
46
88
|
//# sourceMappingURL=run-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-input.d.ts","sourceRoot":"","sources":["../../src/channels/run-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"run-input.d.ts","sourceRoot":"","sources":["../../src/channels/run-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAChD,SAAS,CACV,GAAG;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACjD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAElD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,wBAAwB;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,GAAE,UAAe,GACxB;IACD,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAQA;AASD;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAIzB;CACF;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,kBAAkB,GAAG,SAAS,CAsBhC"}
|