managed-deepagents 0.9.6-dev.15 → 0.9.6-dev.16
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 +57 -953
- package/dist/agent-auth.d.ts +1 -1
- package/dist/agent-auth.d.ts.map +1 -1
- package/dist/agent-auth.js +12 -36
- package/dist/agent-auth.js.map +1 -1
- package/dist/channels/assistant-text.d.ts +0 -24
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +1 -65
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts +1 -20
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +10 -39
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +65 -386
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +1 -2
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +10 -14
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +5 -65
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +33 -149
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/types.d.ts +2 -143
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/message-schema.d.ts +0 -2
- package/dist/channels/message-schema.d.ts.map +1 -1
- package/dist/channels/message-schema.js +0 -4
- package/dist/channels/message-schema.js.map +1 -1
- package/dist/channels/messaging-registry.d.ts +0 -16
- package/dist/channels/messaging-registry.d.ts.map +1 -1
- package/dist/channels/messaging-registry.js +0 -29
- package/dist/channels/messaging-registry.js.map +1 -1
- package/dist/channels/runtime.d.ts +1 -1
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +1 -1
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +1 -1
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +23 -12
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/api.d.ts +0 -2
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +0 -6
- package/dist/channels/slack/api.js.map +1 -1
- package/dist/channels/slack/files.d.ts.map +1 -1
- package/dist/channels/slack/files.js +3 -2
- package/dist/channels/slack/files.js.map +1 -1
- package/dist/channels/slack/index.d.ts +2 -76
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +6 -177
- 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 +28 -23
- package/dist/channels/slack/message-content.js.map +1 -1
- package/dist/channels/source-providers.js +1 -1
- package/dist/channels/source-providers.js.map +1 -1
- package/dist/channels/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +12 -6
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +3 -114
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +82 -314
- 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 +1 -38
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +24 -49
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +3 -82
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +0 -36
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +3 -19
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js +0 -2
- 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 +1 -42
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +14 -127
- package/dist/connections.js.map +1 -1
- package/dist/credential-gate.d.ts +0 -2
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +3 -37
- package/dist/credential-gate.js.map +1 -1
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +0 -6
- package/dist/define-deep-agent.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/slack/links.js +3 -2
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/index.d.ts +4 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- 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.js +4 -3
- package/dist/ingress/loopback.js.map +1 -1
- package/dist/ingress/runs.d.ts +1 -74
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +16 -176
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +13 -8
- 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 +21 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +29 -4
- 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/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +21 -151
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/channel.d.ts +0 -6
- 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 +0 -2
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +16 -40
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +0 -10
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +0 -22
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +47 -46
- 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-tools.d.ts +10 -10
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +24 -24
- 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 +3 -1
- package/dist/runtime/memory/policy.js.map +1 -1
- package/dist/runtime/run-input.d.ts +0 -10
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +19 -47
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +1 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +10 -15
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +0 -17
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +3 -40
- 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/types.d.ts +1 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +0 -13
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +22 -86
- package/dist/runtime-schedules.js.map +1 -1
- package/dist/sandbox.d.ts +6 -0
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +7 -3
- package/dist/sandbox.js.map +1 -1
- package/dist/schedule-channel.d.ts +2 -5
- package/dist/schedule-channel.d.ts.map +1 -1
- package/dist/schedule-channel.js +12 -13
- 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/package.json +11 -11
- package/dist/channels/actor.d.ts +0 -43
- package/dist/channels/actor.d.ts.map +0 -1
- package/dist/channels/actor.js +0 -2
- package/dist/channels/actor.js.map +0 -1
- package/dist/channels/delivery.d.ts +0 -21
- package/dist/channels/delivery.d.ts.map +0 -1
- package/dist/channels/delivery.js +0 -196
- package/dist/channels/delivery.js.map +0 -1
- package/dist/channels/github/connections.d.ts +0 -11
- package/dist/channels/github/connections.d.ts.map +0 -1
- package/dist/channels/github/connections.js +0 -14
- package/dist/channels/github/connections.js.map +0 -1
- package/dist/channels/github/index.d.ts +0 -8
- package/dist/channels/github/index.d.ts.map +0 -1
- package/dist/channels/github/index.js +0 -274
- package/dist/channels/github/index.js.map +0 -1
- package/dist/channels/github/mentions.d.ts +0 -12
- package/dist/channels/github/mentions.d.ts.map +0 -1
- package/dist/channels/github/mentions.js +0 -185
- package/dist/channels/github/mentions.js.map +0 -1
- package/dist/channels/github/schema.d.ts +0 -4165
- package/dist/channels/github/schema.d.ts.map +0 -1
- package/dist/channels/github/schema.js +0 -221
- package/dist/channels/github/schema.js.map +0 -1
- package/dist/channels/github/types.d.ts +0 -163
- package/dist/channels/github/types.d.ts.map +0 -1
- package/dist/channels/github/types.js +0 -2
- package/dist/channels/github/types.js.map +0 -1
- package/dist/channels/http/endpoint.d.ts +0 -95
- package/dist/channels/http/endpoint.d.ts.map +0 -1
- package/dist/channels/http/endpoint.js +0 -276
- package/dist/channels/http/endpoint.js.map +0 -1
- package/dist/channels/http/provider.d.ts +0 -119
- package/dist/channels/http/provider.d.ts.map +0 -1
- package/dist/channels/http/provider.js +0 -227
- package/dist/channels/http/provider.js.map +0 -1
- package/dist/channels/http/studio.d.ts +0 -24
- package/dist/channels/http/studio.d.ts.map +0 -1
- package/dist/channels/http/studio.js +0 -95
- package/dist/channels/http/studio.js.map +0 -1
- package/dist/channels/http/threads.d.ts +0 -7
- package/dist/channels/http/threads.d.ts.map +0 -1
- package/dist/channels/http/threads.js +0 -10
- package/dist/channels/http/threads.js.map +0 -1
- package/dist/channels/linear/connections.d.ts +0 -11
- package/dist/channels/linear/connections.d.ts.map +0 -1
- package/dist/channels/linear/connections.js +0 -14
- package/dist/channels/linear/connections.js.map +0 -1
- package/dist/channels/linear/graphql.d.ts +0 -57
- package/dist/channels/linear/graphql.d.ts.map +0 -1
- package/dist/channels/linear/graphql.js +0 -167
- package/dist/channels/linear/graphql.js.map +0 -1
- package/dist/channels/linear/index.d.ts +0 -9
- package/dist/channels/linear/index.d.ts.map +0 -1
- package/dist/channels/linear/index.js +0 -489
- package/dist/channels/linear/index.js.map +0 -1
- package/dist/channels/linear/schema.d.ts +0 -1050
- package/dist/channels/linear/schema.d.ts.map +0 -1
- package/dist/channels/linear/schema.js +0 -255
- package/dist/channels/linear/schema.js.map +0 -1
- package/dist/channels/linear/types.d.ts +0 -162
- package/dist/channels/linear/types.d.ts.map +0 -1
- package/dist/channels/linear/types.js +0 -2
- package/dist/channels/linear/types.js.map +0 -1
- package/dist/channels/reserved-connections.d.ts +0 -12
- package/dist/channels/reserved-connections.d.ts.map +0 -1
- package/dist/channels/reserved-connections.js +0 -55
- package/dist/channels/reserved-connections.js.map +0 -1
- package/dist/channels/run-input.d.ts +0 -71
- package/dist/channels/run-input.d.ts.map +0 -1
- package/dist/channels/run-input.js +0 -155
- package/dist/channels/run-input.js.map +0 -1
- package/dist/channels/slack/connections.d.ts +0 -6
- package/dist/channels/slack/connections.d.ts.map +0 -1
- package/dist/channels/slack/connections.js +0 -6
- package/dist/channels/slack/connections.js.map +0 -1
- package/dist/channels/slack/events.d.ts +0 -272
- package/dist/channels/slack/events.d.ts.map +0 -1
- package/dist/channels/slack/events.js +0 -235
- package/dist/channels/slack/events.js.map +0 -1
- package/dist/channels/slack/status.d.ts +0 -76
- package/dist/channels/slack/status.d.ts.map +0 -1
- package/dist/channels/slack/status.js +0 -427
- package/dist/channels/slack/status.js.map +0 -1
- package/dist/runtime/channel-icon.d.ts +0 -22
- package/dist/runtime/channel-icon.d.ts.map +0 -1
- package/dist/runtime/channel-icon.js +0 -70
- package/dist/runtime/channel-icon.js.map +0 -1
- package/dist/runtime/managed-thread.d.ts +0 -60
- package/dist/runtime/managed-thread.d.ts.map +0 -1
- package/dist/runtime/managed-thread.js +0 -76
- package/dist/runtime/managed-thread.js.map +0 -1
- package/dist/runtime/thread-record.d.ts +0 -81
- package/dist/runtime/thread-record.d.ts.map +0 -1
- package/dist/runtime/thread-record.js +0 -205
- package/dist/runtime/thread-record.js.map +0 -1
- package/dist/values.d.ts +0 -15
- package/dist/values.d.ts.map +0 -1
- package/dist/values.js +0 -31
- package/dist/values.js.map +0 -1
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* What a channel handler starts a run with, in the shapes `agent.invoke`
|
|
3
|
-
* takes, normalized to the JSON the Agent Server accepts.
|
|
4
|
-
*/
|
|
5
|
-
import { HumanMessage, coerceMessageLikeToMessage, isBaseMessage, } from "@langchain/core/messages";
|
|
6
|
-
import { isJsonValue } from "./message-schema.js";
|
|
7
|
-
import { isPlainObject } from "../values.js";
|
|
8
|
-
/**
|
|
9
|
-
* A handler's run input as `startIngressRun` takes it, with MDA's own
|
|
10
|
-
* `metadata` over the handler's, so a handler can't replace it. Empty state
|
|
11
|
-
* and metadata are left out.
|
|
12
|
-
*/
|
|
13
|
-
export function runStartOptions(input, metadata = {}) {
|
|
14
|
-
const merged = { ...input.metadata, ...metadata };
|
|
15
|
-
return {
|
|
16
|
-
messages: input.messages,
|
|
17
|
-
...(Object.keys(input.state).length && { state: input.state }),
|
|
18
|
-
...(Object.keys(merged).length && { metadata: merged }),
|
|
19
|
-
...(input.webhook !== undefined && { webhook: input.webhook }),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const MESSAGE_ROLES = new Set([
|
|
23
|
-
"human",
|
|
24
|
-
"ai",
|
|
25
|
-
"system",
|
|
26
|
-
"tool",
|
|
27
|
-
]);
|
|
28
|
-
/**
|
|
29
|
-
* Normalize what a handler returned. `null` and `undefined` start nothing;
|
|
30
|
-
* anything else that is not valid input throws a `TypeError`. A run option
|
|
31
|
-
* that is `null` or `undefined` is not set.
|
|
32
|
-
*/
|
|
33
|
-
export function normalizeRunInput(value) {
|
|
34
|
-
if (value === null || value === undefined)
|
|
35
|
-
return undefined;
|
|
36
|
-
const [input, options] = Array.isArray(value)
|
|
37
|
-
? value
|
|
38
|
-
: [value, undefined];
|
|
39
|
-
if (Array.isArray(value) && value.length !== 2 && value.length !== 1)
|
|
40
|
-
throw new TypeError("run input must be [input, options]");
|
|
41
|
-
const normalized = normalizeInput(input);
|
|
42
|
-
if (options === undefined)
|
|
43
|
-
return normalized;
|
|
44
|
-
if (!isPlainObject(options))
|
|
45
|
-
throw new TypeError("run options must be an object");
|
|
46
|
-
const { context, metadata, webhook, ...rest } = options;
|
|
47
|
-
if (Object.keys(rest).length)
|
|
48
|
-
throw new TypeError(`unsupported run option ${Object.keys(rest).join(", ")}; use context, metadata or webhook`);
|
|
49
|
-
return {
|
|
50
|
-
...normalized,
|
|
51
|
-
...(context != null && { context: runContext(context) }),
|
|
52
|
-
...(metadata != null && { metadata: runMetadata(metadata) }),
|
|
53
|
-
...(webhook != null && { webhook: runWebhook(webhook) }),
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
const WEBHOOK_PREFIX = /^https?:\/\//i;
|
|
57
|
-
// eslint-disable-next-line no-control-regex
|
|
58
|
-
const UNSAFE_URL_CHARACTER = /[\s\u0000-\u001f\u007f]/;
|
|
59
|
-
/**
|
|
60
|
-
* The webhook as given, once it is `http://` or `https://`, a host and an
|
|
61
|
-
* optional port, without credentials, whitespace or control characters. The
|
|
62
|
-
* Python runtime checks it the same way, so both pass the Agent Server the
|
|
63
|
-
* same string.
|
|
64
|
-
*/
|
|
65
|
-
function runWebhook(webhook) {
|
|
66
|
-
let url;
|
|
67
|
-
try {
|
|
68
|
-
url =
|
|
69
|
-
typeof webhook === "string" &&
|
|
70
|
-
WEBHOOK_PREFIX.test(webhook) &&
|
|
71
|
-
!UNSAFE_URL_CHARACTER.test(webhook)
|
|
72
|
-
? new URL(webhook)
|
|
73
|
-
: undefined;
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
url = undefined;
|
|
77
|
-
}
|
|
78
|
-
if (!url || !url.hostname || url.username || url.password)
|
|
79
|
-
throw new TypeError("run webhook must be an http(s) URL, without credentials in it");
|
|
80
|
-
return webhook;
|
|
81
|
-
}
|
|
82
|
-
function runContext(context) {
|
|
83
|
-
if (!isPlainObject(context) || !isJsonValue(context))
|
|
84
|
-
throw new TypeError("run context must be a JSON object");
|
|
85
|
-
for (const key of ["channel", "mda_channel"])
|
|
86
|
-
if (key in context)
|
|
87
|
-
throw new TypeError(`context.${key} is reserved for managed ingress`);
|
|
88
|
-
return context;
|
|
89
|
-
}
|
|
90
|
-
/** The metadata keys a handler may set. */
|
|
91
|
-
const METADATA_KEY = /^[A-Za-z][A-Za-z0-9_.-]{0,63}$/;
|
|
92
|
-
/**
|
|
93
|
-
* Keys MDA, the Agent Server and LangSmith set, which a handler's would
|
|
94
|
-
* override or confuse (LangSmith groups a thread's runs by `thread_id`,
|
|
95
|
-
* `session_id` or `conversation_id`), and object internals.
|
|
96
|
-
*/
|
|
97
|
-
const RESERVED_METADATA_KEY = /^(mda_|langgraph_|ls_)|^(assistant_id|graph_id|run_id|run_attempt|thread_id|session_id|conversation_id|user_id|owner|checkpoint_id|checkpoint_ns|constructor|prototype)$/i;
|
|
98
|
-
function runMetadata(metadata) {
|
|
99
|
-
if (!isPlainObject(metadata) || !isJsonValue(metadata))
|
|
100
|
-
throw new TypeError("run metadata must be a JSON object");
|
|
101
|
-
for (const key of Object.keys(metadata)) {
|
|
102
|
-
if (!METADATA_KEY.test(key) || RESERVED_METADATA_KEY.test(key))
|
|
103
|
-
throw new TypeError(`run metadata keys are letters, digits, _, . or -, start with a letter, and aren't reserved (${key})`);
|
|
104
|
-
}
|
|
105
|
-
return metadata;
|
|
106
|
-
}
|
|
107
|
-
function normalizeInput(input) {
|
|
108
|
-
if (typeof input === "string") {
|
|
109
|
-
if (!input.trim())
|
|
110
|
-
throw new TypeError("run input must not be blank");
|
|
111
|
-
return { messages: [messageJson(new HumanMessage(input))], state: {} };
|
|
112
|
-
}
|
|
113
|
-
if (isBaseMessage(input))
|
|
114
|
-
return { messages: [messageJson(input)], state: {} };
|
|
115
|
-
if (!isPlainObject(input))
|
|
116
|
-
throw new TypeError("run input must be a string, a message, or an object of state");
|
|
117
|
-
const { messages, ...state } = input;
|
|
118
|
-
if (messages !== undefined && !Array.isArray(messages))
|
|
119
|
-
throw new TypeError("run input messages must be an array");
|
|
120
|
-
if (!isJsonValue(state))
|
|
121
|
-
throw new TypeError("run input state must be JSON");
|
|
122
|
-
const normalized = (messages ?? []).map(messageLike);
|
|
123
|
-
if (!normalized.length && !Object.keys(state).length)
|
|
124
|
-
throw new TypeError("run input must not be empty");
|
|
125
|
-
return { messages: normalized, state: state };
|
|
126
|
-
}
|
|
127
|
-
function messageLike(message) {
|
|
128
|
-
if (typeof message === "string" && !message.trim())
|
|
129
|
-
throw new TypeError("a message must not be blank");
|
|
130
|
-
try {
|
|
131
|
-
return messageJson(coerceMessageLikeToMessage(message));
|
|
132
|
-
}
|
|
133
|
-
catch (error) {
|
|
134
|
-
if (error instanceof TypeError)
|
|
135
|
-
throw error;
|
|
136
|
-
throw new TypeError("a message must be a string, a message, or JSON");
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* A message as the JSON the Agent Server turns back into a message: its
|
|
141
|
-
* `toDict()` fields with a `role`. `toDict()` puts content built from
|
|
142
|
-
* `contentBlocks` under `content_blocks`, which the server does not read, so
|
|
143
|
-
* the message's `content` is sent instead.
|
|
144
|
-
*/
|
|
145
|
-
function messageJson(message) {
|
|
146
|
-
const role = message.getType();
|
|
147
|
-
if (!MESSAGE_ROLES.has(role))
|
|
148
|
-
throw new TypeError(`unsupported message type ${role}`);
|
|
149
|
-
const { content_blocks: _blocks, ...fields } = message.toDict().data;
|
|
150
|
-
const json = { ...fields, role, content: message.content };
|
|
151
|
-
if (!isJsonValue(json))
|
|
152
|
-
throw new TypeError("a message must be JSON");
|
|
153
|
-
return json;
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=run-input.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-input.js","sourceRoot":"","sources":["../../src/channels/run-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/connections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,wBAAwB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../../src/channels/slack/connections.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC"}
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The Slack messages a channel's `onEvent` handlers see: which kind of
|
|
3
|
-
* message each is, and the message as a handler reads it.
|
|
4
|
-
*/
|
|
5
|
-
import type { MultitaskStrategy } from "../../ingress/runs.js";
|
|
6
|
-
import type { JsonValue } from "../types.js";
|
|
7
|
-
import type { ChannelRunResult } from "../run-input.js";
|
|
8
|
-
import type { TriggerChannelMessageEvent, TriggerChannelUserPromptResponseEvent } from "../trigger/types.js";
|
|
9
|
-
import type { EndpointRequest, EventEndpoint } from "../http/endpoint.js";
|
|
10
|
-
import { type EventFinished, type EventThread } from "../http/provider.js";
|
|
11
|
-
import type { ChannelActor, SlackActor } from "../actor.js";
|
|
12
|
-
export declare const SLACK_MESSAGE_KEYS: readonly ["mention", "directMessage", "message"];
|
|
13
|
-
export declare const SLACK_EVENT_KEYS: readonly ["mention", "directMessage", "message", "interaction"];
|
|
14
|
-
/**
|
|
15
|
-
* Which kind of Slack message reached the agent:
|
|
16
|
-
* - `"mention"`: a channel message that @-mentions your agent.
|
|
17
|
-
* - `"directMessage"`: a direct message to your agent.
|
|
18
|
-
* - `"message"`: any other channel message, which only `triggerMode`
|
|
19
|
-
* `"thread"` or `"all"` delivers.
|
|
20
|
-
*/
|
|
21
|
-
export type SlackMessageKey = (typeof SLACK_MESSAGE_KEYS)[number];
|
|
22
|
-
/**
|
|
23
|
-
* What reached the agent from Slack: a kind of message
|
|
24
|
-
* ({@link SlackMessageKey}), or `"interaction"`, a click on a button in a
|
|
25
|
-
* message your agent posted with its own blocks, or a submitted modal it
|
|
26
|
-
* opened, that answers no decision the thread waits on.
|
|
27
|
-
*/
|
|
28
|
-
export type SlackEventKey = (typeof SLACK_EVENT_KEYS)[number];
|
|
29
|
-
/** A file attached to a Slack message, as Slack describes it. */
|
|
30
|
-
export interface SlackFile {
|
|
31
|
-
id: string;
|
|
32
|
-
name?: string;
|
|
33
|
-
mimetype?: string;
|
|
34
|
-
/** Size in bytes. */
|
|
35
|
-
size?: number;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* A Slack message that reached the agent. The run it starts can read its
|
|
39
|
-
* files under `/workspace/attachments`, as without a handler.
|
|
40
|
-
*/
|
|
41
|
-
export interface SlackMessageEvent<K extends SlackMessageKey = SlackMessageKey> {
|
|
42
|
-
key: K;
|
|
43
|
-
/** Trigger Server's ID for this delivery. */
|
|
44
|
-
deliveryId: string;
|
|
45
|
-
/** The message's text as Slack sent it, with mentions as `<@U123>`. */
|
|
46
|
-
text: string;
|
|
47
|
-
/** The Slack user who sent it; absent for some bot messages. */
|
|
48
|
-
userId?: string;
|
|
49
|
-
/** The Slack conversation: a channel's or a direct message's ID. */
|
|
50
|
-
channelId: string;
|
|
51
|
-
/** The message's timestamp, its ID in Slack. */
|
|
52
|
-
messageTs: string;
|
|
53
|
-
/** The timestamp of its thread's first message; `messageTs` when it starts one. */
|
|
54
|
-
threadTs: string;
|
|
55
|
-
files: SlackFile[];
|
|
56
|
-
/** The Slack event as Slack sent it, from the Events API. */
|
|
57
|
-
payload: {
|
|
58
|
-
readonly [key: string]: JsonValue;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* The Slack user who sent the message, as Trigger Server verified it from
|
|
62
|
-
* Slack's signed request, in the shape every channel's `actor` has. Its
|
|
63
|
-
* `teamId` is their own workspace, which in a Slack Connect channel isn't
|
|
64
|
-
* your app's. Absent when Trigger Server names no one, such as an older
|
|
65
|
-
* Trigger Server or a message from a bot. It is personal data: MDA neither
|
|
66
|
-
* logs it nor adds it to the run's metadata.
|
|
67
|
-
*/
|
|
68
|
-
actor?: SlackActor;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* A click on a button in a message your agent posted with its own blocks, or
|
|
72
|
-
* a submitted modal it opened, as Trigger Server forwards it: one that
|
|
73
|
-
* answers no decision the thread waits on. A click on a decision's buttons
|
|
74
|
-
* resumes the run instead.
|
|
75
|
-
*/
|
|
76
|
-
export interface SlackInteractionEvent {
|
|
77
|
-
key: "interaction";
|
|
78
|
-
/** Trigger Server's ID for this delivery. */
|
|
79
|
-
deliveryId: string;
|
|
80
|
-
/** The button's `action_id`, or the modal's `callback_id`. */
|
|
81
|
-
actionId: string;
|
|
82
|
-
/** The button's `value`, or the modal's `state.values`. */
|
|
83
|
-
value?: JsonValue;
|
|
84
|
-
/** The Slack user who clicked, as Slack's payload says. */
|
|
85
|
-
userId?: string;
|
|
86
|
-
/** The Slack conversation the message is in. */
|
|
87
|
-
channelId: string;
|
|
88
|
-
/** The timestamp of the message holding the button; absent for a modal. */
|
|
89
|
-
messageTs?: string;
|
|
90
|
-
/** The timestamp of its thread's first message. */
|
|
91
|
-
threadTs: string;
|
|
92
|
-
/**
|
|
93
|
-
* Slack's interaction payload, such as a `block_actions` one, with its
|
|
94
|
-
* `response_url` and `actions`, without its verification `token`.
|
|
95
|
-
*/
|
|
96
|
-
payload: {
|
|
97
|
-
readonly [key: string]: JsonValue;
|
|
98
|
-
};
|
|
99
|
-
/**
|
|
100
|
-
* The Slack user who clicked, as Trigger Server verified it; see
|
|
101
|
-
* {@link SlackMessageEvent.actor}.
|
|
102
|
-
*/
|
|
103
|
-
actor?: SlackActor;
|
|
104
|
-
}
|
|
105
|
-
type SlackEventUnion = {
|
|
106
|
-
[K in SlackMessageKey]: SlackMessageEvent<K>;
|
|
107
|
-
}[SlackMessageKey] | SlackInteractionEvent;
|
|
108
|
-
/** What reached the agent from Slack, typed by its key. */
|
|
109
|
-
export type SlackEvent<K extends SlackEventKey = SlackEventKey> = Extract<SlackEventUnion, {
|
|
110
|
-
key: K;
|
|
111
|
-
}>;
|
|
112
|
-
/**
|
|
113
|
-
* The conversation's thread a message belongs to. A handler runs before any
|
|
114
|
-
* run exists, so this is not a run's runtime.
|
|
115
|
-
*/
|
|
116
|
-
export interface SlackChannelThread extends EventThread {
|
|
117
|
-
/**
|
|
118
|
-
* The thread the run the handler starts runs on, one per Slack thread.
|
|
119
|
-
* Useful for run context that names the thread, such as a token a backend
|
|
120
|
-
* signs for it.
|
|
121
|
-
*/
|
|
122
|
-
id: string;
|
|
123
|
-
/** The key the thread is derived from, which names the Slack thread. */
|
|
124
|
-
sourceThreadKey: string;
|
|
125
|
-
}
|
|
126
|
-
/** The Slack thread of a Trigger message's thread, for a channel named `name`. */
|
|
127
|
-
export declare function slackThread(thread: {
|
|
128
|
-
id: string;
|
|
129
|
-
sourceThreadKey: string;
|
|
130
|
-
}, name: string): SlackChannelThread;
|
|
131
|
-
/**
|
|
132
|
-
* What an event handler returns: a run's input, as `agent.invoke` takes it —
|
|
133
|
-
* a string, a message such as `new HumanMessage(...)`, state such as
|
|
134
|
-
* `{ messages: [...] }`, or `[input, { context, metadata, webhook }]`.
|
|
135
|
-
* `null` or `undefined` starts nothing.
|
|
136
|
-
*/
|
|
137
|
-
export type SlackEventResult = ChannelRunResult | null | undefined | void;
|
|
138
|
-
export type SlackEventCallback<K extends SlackEventKey = SlackEventKey> = (event: SlackEvent<K>, thread: SlackChannelThread) => SlackEventResult | Promise<SlackEventResult>;
|
|
139
|
-
/** The `channels.slack(...)` options that decide what each message starts. */
|
|
140
|
-
export interface SlackEventOptions {
|
|
141
|
-
/**
|
|
142
|
-
* Handlers that decide what each kind of message starts. Return a prompt
|
|
143
|
-
* (string, message, or state), optionally with run options as
|
|
144
|
-
* `[input, { context, metadata, webhook }]`, or nothing to start no run:
|
|
145
|
-
* then the agent doesn't react or reply. A message kind without a handler
|
|
146
|
-
* starts a run with the message, as without `onEvent`. The run's reply is
|
|
147
|
-
* posted in the message's thread.
|
|
148
|
-
*
|
|
149
|
-
* `interaction` decides what a click on a button your agent posted with
|
|
150
|
-
* its own blocks starts, such as the next prompt, or `null` after
|
|
151
|
-
* recording it. Without one, such a click starts a run with no new
|
|
152
|
-
* message, which reads the click from `runtime.channel.event`. A click
|
|
153
|
-
* that answers a decision the thread waits on resumes the run, and never
|
|
154
|
-
* reaches it.
|
|
155
|
-
*
|
|
156
|
-
* @example
|
|
157
|
-
* ```ts
|
|
158
|
-
* onEvent: {
|
|
159
|
-
* mention: (event) => [event.text, { metadata: { slack_channel: event.channelId } }],
|
|
160
|
-
* message: () => null,
|
|
161
|
-
* interaction: (event) =>
|
|
162
|
-
* event.actionId === "quick_reply" ? String(event.value) : null,
|
|
163
|
-
* }
|
|
164
|
-
* ```
|
|
165
|
-
*
|
|
166
|
-
* A handler may also be an endpoint, a URL or a `Request` carrying
|
|
167
|
-
* headers, to have a service of yours decide: MDA answers Trigger Server,
|
|
168
|
-
* then POSTs the endpoint the message and its thread, and starts the run it
|
|
169
|
-
* answers with. See the README's "Asking your service what to start".
|
|
170
|
-
*/
|
|
171
|
-
onEvent?: {
|
|
172
|
-
[K in SlackEventKey]?: SlackEventCallback<K> | EventEndpoint;
|
|
173
|
-
};
|
|
174
|
-
/**
|
|
175
|
-
* What a message that starts a run does while its thread already runs:
|
|
176
|
-
* `enqueue` (the default) waits for the run and starts after it,
|
|
177
|
-
* `interrupt` cancels the run, keeping its progress, and starts at once,
|
|
178
|
-
* `rollback` cancels it and discards its progress, and `reject` starts
|
|
179
|
-
* nothing.
|
|
180
|
-
*/
|
|
181
|
-
multitaskStrategy?: MultitaskStrategy;
|
|
182
|
-
/**
|
|
183
|
-
* Called once when a message or an `interaction` is done, with the event,
|
|
184
|
-
* its thread, and how it finished:
|
|
185
|
-
*
|
|
186
|
-
* - `run`: it started a run, which ended with `run.status`
|
|
187
|
-
* (`success`, `error`, `timeout` or `interrupted`). `interrupts` lists
|
|
188
|
-
* the decisions the thread waits on.
|
|
189
|
-
* - `skipped`: no run started. The handler returned nothing or failed
|
|
190
|
-
* (`ignored`), or the thread was busy under `multitaskStrategy:
|
|
191
|
-
* "reject"` (`rejected`).
|
|
192
|
-
* - `failed`: MDA couldn't start the run, or lost track of it.
|
|
193
|
-
*
|
|
194
|
-
* It runs in the background after the reply; errors are logged. Interrupt
|
|
195
|
-
* resumes don't call it, and neither does a message Trigger Server will
|
|
196
|
-
* send again because its run couldn't start. It runs in the deployment's process, so a restart
|
|
197
|
-
* loses it: use the run's `webhook` for anything you can't miss.
|
|
198
|
-
*
|
|
199
|
-
* @example
|
|
200
|
-
* ```ts
|
|
201
|
-
* onFinish: async (event, thread, finished) => {
|
|
202
|
-
* if (finished.type !== "run") return;
|
|
203
|
-
* if (finished.run.status === "success") {
|
|
204
|
-
* // e.g. record the answer in your service, or update memory
|
|
205
|
-
* } else {
|
|
206
|
-
* // e.g. alert someone that the run failed
|
|
207
|
-
* }
|
|
208
|
-
* }
|
|
209
|
-
* ```
|
|
210
|
-
*/
|
|
211
|
-
onFinish?: EventFinished<SlackEvent, SlackChannelThread>;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* A Slack event's fields its endpoints are sent beside its key, delivery ID
|
|
215
|
-
* and payload, those its kind has: the one list of them, so
|
|
216
|
-
* `SlackEndpointRequest` is typed by it.
|
|
217
|
-
*/
|
|
218
|
-
export declare const SLACK_ENDPOINT_EVENT_FIELDS: readonly ["text", "userId", "channelId", "messageTs", "threadTs", "files", "actor", "actionId", "value"];
|
|
219
|
-
/** What a Slack channel POSTs an endpoint, for one event key or any. */
|
|
220
|
-
export type SlackEndpointRequest<K extends SlackEventKey = SlackEventKey> = EndpointRequest<SlackEvent<K>, (typeof SLACK_ENDPOINT_EVENT_FIELDS)[number]>;
|
|
221
|
-
/**
|
|
222
|
-
* Which kind of message a delivery is. Slack sends a mention as
|
|
223
|
-
* `app_mention` under `triggerMode` `"mention"`, and as a `message` that
|
|
224
|
-
* names the app's bot user under `"thread"` and `"all"`, so only a channel
|
|
225
|
-
* `message` asks who the bot is.
|
|
226
|
-
*/
|
|
227
|
-
export declare function slackEventKey(rawEvent: Record<string, unknown>): Promise<SlackMessageKey>;
|
|
228
|
-
/**
|
|
229
|
-
* Whether a delivery is surely a plain channel message, neither a mention
|
|
230
|
-
* nor a direct message. One that names a user while the bot user is unknown
|
|
231
|
-
* may be a mention, so it isn't.
|
|
232
|
-
*/
|
|
233
|
-
export declare function isPlainSlackMessage(rawEvent: Record<string, unknown>): Promise<boolean>;
|
|
234
|
-
/** Forget the bot user's ID; for tests. */
|
|
235
|
-
export declare function resetSlackBotUser(): void;
|
|
236
|
-
/**
|
|
237
|
-
* What a delivery carries: a message, of the kind Slack's event says, or an
|
|
238
|
-
* interaction; `undefined` when it has nothing to read one from.
|
|
239
|
-
*/
|
|
240
|
-
export declare function readSlackEvent(event: TriggerChannelMessageEvent | TriggerChannelUserPromptResponseEvent, actor?: ChannelActor): Promise<SlackEvent | undefined>;
|
|
241
|
-
/**
|
|
242
|
-
* The `SlackEvent` a handler got for each delivery, so `onFinish` gets that
|
|
243
|
-
* same event rather than reading the delivery again, which could read it as
|
|
244
|
-
* another kind. A delivery that never finishes, such as one Trigger Server
|
|
245
|
-
* sends again, is dropped once there are many.
|
|
246
|
-
*/
|
|
247
|
-
export declare class DecidedSlackEvents {
|
|
248
|
-
#private;
|
|
249
|
-
remember(deliveryId: string, event: SlackEvent): void;
|
|
250
|
-
/**
|
|
251
|
-
* What a finished delivery carried: as its handler got it, or read from the
|
|
252
|
-
* delivery, with its verified actor, when no handler did.
|
|
253
|
-
*/
|
|
254
|
-
finished(rawEvent: JsonValue | undefined): Promise<SlackEvent | undefined>;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* The Trigger delivery a finished message or interaction carries; see
|
|
258
|
-
* `TriggerFinishedEvent`.
|
|
259
|
-
*/
|
|
260
|
-
export declare function finishedDelivery(rawEvent: JsonValue | undefined): TriggerChannelMessageEvent | TriggerChannelUserPromptResponseEvent | undefined;
|
|
261
|
-
/**
|
|
262
|
-
* The message a delivery carries, as a handler reads it, or `undefined` when
|
|
263
|
-
* the delivery has no Slack event to read it from.
|
|
264
|
-
*/
|
|
265
|
-
export declare function slackEvent<K extends SlackMessageKey>(key: K, event: TriggerChannelMessageEvent, actor?: ChannelActor): SlackMessageEvent<K> | undefined;
|
|
266
|
-
/**
|
|
267
|
-
* The interaction a forwarded click or modal submission carries, as a
|
|
268
|
-
* handler reads it, or `undefined` without the conversation it happened in.
|
|
269
|
-
*/
|
|
270
|
-
export declare function slackInteractionEvent(event: TriggerChannelUserPromptResponseEvent, actor?: ChannelActor): SlackInteractionEvent | undefined;
|
|
271
|
-
export type { SlackActor } from "../actor.js";
|
|
272
|
-
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/events.ts"],"names":[],"mappings":"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"}
|