managed-deepagents 0.9.6-dev.14 → 0.9.6-dev.15
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 +953 -57
- package/dist/agent-auth.d.ts +1 -1
- package/dist/agent-auth.d.ts.map +1 -1
- package/dist/agent-auth.js +36 -12
- package/dist/agent-auth.js.map +1 -1
- package/dist/channels/actor.d.ts +43 -0
- package/dist/channels/actor.d.ts.map +1 -0
- package/dist/channels/actor.js +2 -0
- package/dist/channels/actor.js.map +1 -0
- package/dist/channels/assistant-text.d.ts +24 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +65 -1
- 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 +39 -10
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +21 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +196 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/connections.d.ts +11 -0
- package/dist/channels/github/connections.d.ts.map +1 -0
- package/dist/channels/github/connections.js +14 -0
- package/dist/channels/github/connections.js.map +1 -0
- package/dist/channels/github/index.d.ts +8 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +274 -0
- package/dist/channels/github/index.js.map +1 -0
- 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 +4165 -0
- package/dist/channels/github/schema.d.ts.map +1 -0
- package/dist/channels/github/schema.js +221 -0
- package/dist/channels/github/schema.js.map +1 -0
- package/dist/channels/github/types.d.ts +163 -0
- package/dist/channels/github/types.d.ts.map +1 -0
- package/dist/channels/github/types.js +2 -0
- package/dist/channels/github/types.js.map +1 -0
- package/dist/channels/http/endpoint.d.ts +95 -0
- package/dist/channels/http/endpoint.d.ts.map +1 -0
- package/dist/channels/http/endpoint.js +276 -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 +386 -65
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +2 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +14 -10
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +65 -5
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +149 -33
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +119 -0
- package/dist/channels/http/provider.d.ts.map +1 -0
- package/dist/channels/http/provider.js +227 -0
- package/dist/channels/http/provider.js.map +1 -0
- package/dist/channels/http/studio.d.ts +24 -0
- package/dist/channels/http/studio.d.ts.map +1 -0
- package/dist/channels/http/studio.js +95 -0
- package/dist/channels/http/studio.js.map +1 -0
- package/dist/channels/http/threads.d.ts +7 -0
- package/dist/channels/http/threads.d.ts.map +1 -0
- package/dist/channels/http/threads.js +10 -0
- package/dist/channels/http/threads.js.map +1 -0
- package/dist/channels/http/types.d.ts +143 -2
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/connections.d.ts +11 -0
- package/dist/channels/linear/connections.d.ts.map +1 -0
- package/dist/channels/linear/connections.js +14 -0
- package/dist/channels/linear/connections.js.map +1 -0
- package/dist/channels/linear/graphql.d.ts +57 -0
- package/dist/channels/linear/graphql.d.ts.map +1 -0
- package/dist/channels/linear/graphql.js +167 -0
- package/dist/channels/linear/graphql.js.map +1 -0
- package/dist/channels/linear/index.d.ts +9 -0
- package/dist/channels/linear/index.d.ts.map +1 -0
- package/dist/channels/linear/index.js +489 -0
- package/dist/channels/linear/index.js.map +1 -0
- package/dist/channels/linear/schema.d.ts +1050 -0
- package/dist/channels/linear/schema.d.ts.map +1 -0
- package/dist/channels/linear/schema.js +255 -0
- package/dist/channels/linear/schema.js.map +1 -0
- package/dist/channels/linear/types.d.ts +162 -0
- package/dist/channels/linear/types.d.ts.map +1 -0
- package/dist/channels/linear/types.js +2 -0
- package/dist/channels/linear/types.js.map +1 -0
- package/dist/channels/message-schema.d.ts +2 -0
- package/dist/channels/message-schema.d.ts.map +1 -1
- package/dist/channels/message-schema.js +4 -0
- package/dist/channels/message-schema.js.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 +12 -0
- package/dist/channels/reserved-connections.d.ts.map +1 -0
- package/dist/channels/reserved-connections.js +55 -0
- package/dist/channels/reserved-connections.js.map +1 -0
- package/dist/channels/run-input.d.ts +71 -0
- package/dist/channels/run-input.d.ts.map +1 -0
- package/dist/channels/run-input.js +155 -0
- package/dist/channels/run-input.js.map +1 -0
- 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 +12 -23
- 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 +272 -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 +76 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +177 -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/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 +6 -15
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +114 -3
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +314 -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 +2 -3
- package/dist/channels/trigger/identity-context.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +38 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +49 -23
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +82 -3
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +36 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +19 -3
- 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/connections.d.ts +31 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +108 -11
- package/dist/connections.js.map +1 -1
- package/dist/credential-gate.d.ts +2 -0
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +37 -3
- package/dist/credential-gate.js.map +1 -1
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +6 -0
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/identity/loopback.d.ts +2 -14
- package/dist/identity/loopback.d.ts.map +1 -1
- package/dist/identity/loopback.js +4 -25
- package/dist/identity/loopback.js.map +1 -1
- package/dist/identity/slack/links.js +3 -3
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/index.d.ts +15 -4
- 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 +0 -8
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +2 -32
- package/dist/ingress/index.js.map +1 -1
- package/dist/ingress/loopback.js +4 -4
- package/dist/ingress/loopback.js.map +1 -1
- package/dist/ingress/runs.d.ts +74 -1
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +176 -16
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +8 -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 +5 -6
- 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 +4 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +151 -21
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/channel-icon.d.ts +22 -0
- package/dist/runtime/channel-icon.d.ts.map +1 -0
- package/dist/runtime/channel-icon.js +70 -0
- package/dist/runtime/channel-icon.js.map +1 -0
- package/dist/runtime/channel.d.ts +6 -0
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/http.d.ts +0 -15
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +0 -37
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +2 -0
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +40 -16
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +10 -0
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +22 -0
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +46 -47
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/log.d.ts +14 -8
- package/dist/runtime/log.d.ts.map +1 -1
- package/dist/runtime/log.js +7 -16
- package/dist/runtime/log.js.map +1 -1
- package/dist/runtime/managed-middleware.d.ts.map +1 -1
- package/dist/runtime/managed-middleware.js +14 -1
- package/dist/runtime/managed-middleware.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +60 -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 +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 +11 -82
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +34 -173
- 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/run-input.d.ts +10 -0
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +47 -19
- 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 +9 -7
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +17 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +41 -3
- 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/thread-record.d.ts +81 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +205 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +5 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +13 -0
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +86 -22
- 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/run-listener.d.ts +1 -1
- package/dist/telemetry/run-listener.d.ts.map +1 -1
- package/dist/telemetry/run-listener.js +2 -32
- package/dist/telemetry/run-listener.js.map +1 -1
- package/dist/telemetry/transport/posthog.d.ts +1 -13
- package/dist/telemetry/transport/posthog.d.ts.map +1 -1
- package/dist/telemetry/transport/posthog.js +30 -68
- package/dist/telemetry/transport/posthog.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 +11 -11
- package/dist/concurrency/batch-processor.d.ts +0 -51
- package/dist/concurrency/batch-processor.d.ts.map +0 -1
- package/dist/concurrency/batch-processor.js +0 -99
- package/dist/concurrency/batch-processor.js.map +0 -1
- package/dist/resilience/retry.d.ts +0 -21
- package/dist/resilience/retry.d.ts.map +0 -1
- package/dist/resilience/retry.js +0 -40
- package/dist/resilience/retry.js.map +0 -1
- package/dist/runtime/graph-build-timing.d.ts +0 -30
- package/dist/runtime/graph-build-timing.d.ts.map +0 -1
- package/dist/runtime/graph-build-timing.js +0 -50
- package/dist/runtime/graph-build-timing.js.map +0 -1
- package/dist/telemetry/lifecycle.d.ts +0 -26
- package/dist/telemetry/lifecycle.d.ts.map +0 -1
- package/dist/telemetry/lifecycle.js +0 -49
- package/dist/telemetry/lifecycle.js.map +0 -1
- package/dist/telemetry/otel/context.d.ts +0 -57
- package/dist/telemetry/otel/context.d.ts.map +0 -1
- package/dist/telemetry/otel/context.js +0 -122
- package/dist/telemetry/otel/context.js.map +0 -1
- package/dist/telemetry/otel/exporter.d.ts +0 -53
- package/dist/telemetry/otel/exporter.d.ts.map +0 -1
- package/dist/telemetry/otel/exporter.js +0 -190
- package/dist/telemetry/otel/exporter.js.map +0 -1
- package/dist/telemetry/otel/index.d.ts +0 -6
- package/dist/telemetry/otel/index.d.ts.map +0 -1
- package/dist/telemetry/otel/index.js +0 -3
- package/dist/telemetry/otel/index.js.map +0 -1
- package/dist/telemetry/otel/otlp.d.ts +0 -44
- package/dist/telemetry/otel/otlp.d.ts.map +0 -1
- package/dist/telemetry/otel/otlp.js +0 -7
- package/dist/telemetry/otel/otlp.js.map +0 -1
- package/dist/telemetry/otel/truncate.d.ts +0 -10
- package/dist/telemetry/otel/truncate.d.ts.map +0 -1
- package/dist/telemetry/otel/truncate.js +0 -39
- package/dist/telemetry/otel/truncate.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { BaseMessage } from "@langchain/core/messages";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { Channel } from "../../runtime/channel.js";
|
|
4
|
+
import type { TriggerChannelRuntimeStatus } from "../trigger/types.js";
|
|
5
|
+
/** Where a step is: Slack's task statuses. */
|
|
6
|
+
export type SlackStatusStepStatus = "pending" | "in_progress" | "complete" | "error";
|
|
7
|
+
/** One step of the run's plan; a step without a status is `pending`. */
|
|
8
|
+
export interface SlackStatusStep {
|
|
9
|
+
title: string;
|
|
10
|
+
status?: SlackStatusStepStatus;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The run's status: one line, or a list of steps that Slack shows as a plan,
|
|
14
|
+
* each a title or a {@link SlackStatusStep}.
|
|
15
|
+
*/
|
|
16
|
+
export type SlackStatusValue = string | readonly (string | SlackStatusStep)[];
|
|
17
|
+
/** The agent's state as a status chooser reads it. */
|
|
18
|
+
export interface SlackStatusState {
|
|
19
|
+
readonly messages: readonly BaseMessage[];
|
|
20
|
+
/** The agent's to-do list, when it keeps one. */
|
|
21
|
+
readonly todos?: readonly {
|
|
22
|
+
content: string;
|
|
23
|
+
status: "pending" | "in_progress" | "completed";
|
|
24
|
+
}[];
|
|
25
|
+
readonly [key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
/** What a status chooser is told: the agent's state, as of now. */
|
|
28
|
+
export interface SlackStatusContext {
|
|
29
|
+
readonly state: SlackStatusState;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Picks the run's status from the agent's state, or `null` to leave what's
|
|
33
|
+
* shown. May be sync or async.
|
|
34
|
+
*
|
|
35
|
+
* It is called as the run starts, before and after each model call, and
|
|
36
|
+
* every few seconds while a model or tool call runs, one call at a time. A
|
|
37
|
+
* sync chooser runs on the event loop, where the timeout cannot stop it, so
|
|
38
|
+
* do slow work in an async one.
|
|
39
|
+
*/
|
|
40
|
+
export type SlackStatusChooser = (context: SlackStatusContext) => SlackStatusValue | null | Promise<SlackStatusValue | null>;
|
|
41
|
+
/**
|
|
42
|
+
* How a channel shows a run's status: always the same value, or a function
|
|
43
|
+
* of the agent's state.
|
|
44
|
+
*/
|
|
45
|
+
export type SlackStatusChoice = SlackStatusValue | SlackStatusChooser;
|
|
46
|
+
/**
|
|
47
|
+
* A status value as Trigger Server takes it, or `undefined` when `value` is
|
|
48
|
+
* not one. A plan keeps its first steps, as many as Slack shows.
|
|
49
|
+
*/
|
|
50
|
+
export declare function slackStatusFields(value: unknown): Pick<TriggerChannelRuntimeStatus, "message" | "steps"> | undefined;
|
|
51
|
+
/** Whether `value` is a status value a channel can show. */
|
|
52
|
+
export declare function isSlackStatusValue(value: unknown): value is SlackStatusValue;
|
|
53
|
+
/**
|
|
54
|
+
* What a run's `run.started` tells Trigger Server about its status: a custom
|
|
55
|
+
* status shows as a plan, whose title is the line, and a fixed one from the
|
|
56
|
+
* start. `undefined` keeps Trigger Server's working phrases.
|
|
57
|
+
*/
|
|
58
|
+
export declare function startedStatus(choice: SlackStatusChoice | undefined): TriggerChannelRuntimeStatus | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Show what each Slack channel's status chooser says while a run of the
|
|
61
|
+
* channel works. Runs from other channels, and channels with a fixed status
|
|
62
|
+
* or none, pass through: `run.started` carries a fixed status.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createSlackStatusMiddleware(channels: readonly Channel[]): import("langchain").AgentMiddleware<z.ZodObject<{
|
|
65
|
+
todos: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
66
|
+
content: z.ZodString;
|
|
67
|
+
status: z.ZodEnum<{
|
|
68
|
+
completed: "completed";
|
|
69
|
+
in_progress: "in_progress";
|
|
70
|
+
pending: "pending";
|
|
71
|
+
}>;
|
|
72
|
+
}, z.core.$strip>>>;
|
|
73
|
+
}, z.core.$strip>, undefined, unknown, readonly (import("@langchain/core/tools").ServerTool | import("@langchain/core/tools").ClientTool)[], readonly []>;
|
|
74
|
+
/** Whether a channel's status needs the status middleware in its runs. */
|
|
75
|
+
export declare function hasSlackStatusChooser(channels: readonly Channel[]): boolean;
|
|
76
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/status.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQxD,OAAO,KAAK,EAEV,2BAA2B,EAE5B,MAAM,qBAAqB,CAAC;AAE7B,8CAA8C;AAC9C,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,aAAa,GACb,UAAU,GACV,OAAO,CAAC;AAEZ,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,qBAAqB,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC;AAE9E,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;KACjD,EAAE,CAAC;IACJ,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,kBAAkB,KACxB,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AA0CtE;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,IAAI,CAAC,2BAA2B,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,SAAS,CAapE;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,2BAA2B,GAAG,SAAS,CAIzC;AAyRD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE;;;;;;;;;0JAqFvE;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAM3E"}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The status a Slack channel shows while a run works: a line, or a list of
|
|
3
|
+
* steps, in place of Trigger Server's own working phrases.
|
|
4
|
+
*
|
|
5
|
+
* It is a courtesy, like `reactions`: a chooser that throws, hangs, or
|
|
6
|
+
* answers with something that is not a status leaves what Slack shows, and
|
|
7
|
+
* posting it never fails or slows the run.
|
|
8
|
+
*/
|
|
9
|
+
import { randomUUID } from "node:crypto";
|
|
10
|
+
import { getConfig } from "@langchain/langgraph";
|
|
11
|
+
import { createMiddleware } from "langchain";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { logger } from "../../runtime/log.js";
|
|
14
|
+
import { isRecord, nonblankString } from "../../values.js";
|
|
15
|
+
import { resolveChannelBinding } from "../binding.js";
|
|
16
|
+
import { createTriggerClient, } from "../trigger/client.js";
|
|
17
|
+
const STEP_STATUSES = new Set([
|
|
18
|
+
"pending",
|
|
19
|
+
"in_progress",
|
|
20
|
+
"complete",
|
|
21
|
+
"error",
|
|
22
|
+
]);
|
|
23
|
+
/** Slack's limit on a task's or plan's title. */
|
|
24
|
+
const MAX_TITLE_LENGTH = 256;
|
|
25
|
+
/** Slack's limit on a plan's tasks. */
|
|
26
|
+
const MAX_STEPS = 50;
|
|
27
|
+
/** How long a chooser may take before what's shown stays. */
|
|
28
|
+
const CHOOSER_TIMEOUT_MS = 1_000;
|
|
29
|
+
/** How often a chooser is asked again while a model or tool call runs. */
|
|
30
|
+
const HEARTBEAT_MS = 4_000;
|
|
31
|
+
/** The least time between two status updates of a run. */
|
|
32
|
+
const MIN_UPDATE_GAP_MS = 1_000;
|
|
33
|
+
/** How long the end of a run waits for its last status update. */
|
|
34
|
+
const DRAIN_TIMEOUT_MS = 2_000;
|
|
35
|
+
/** Runs whose status is tracked at once; an interrupted run never says it ended. */
|
|
36
|
+
const MAX_TRACKED_RUNS = 256;
|
|
37
|
+
/** `text` on one line, at most Slack's title length; `undefined` when blank. */
|
|
38
|
+
function oneLine(text) {
|
|
39
|
+
const line = text.split(/\s+/u).filter(Boolean).join(" ");
|
|
40
|
+
return line ? [...line].slice(0, MAX_TITLE_LENGTH).join("") : undefined;
|
|
41
|
+
}
|
|
42
|
+
function statusStep(value) {
|
|
43
|
+
if (typeof value === "string") {
|
|
44
|
+
const title = oneLine(value);
|
|
45
|
+
return title === undefined ? undefined : { title, status: "pending" };
|
|
46
|
+
}
|
|
47
|
+
if (!isRecord(value) || typeof value.title !== "string")
|
|
48
|
+
return undefined;
|
|
49
|
+
const title = oneLine(value.title);
|
|
50
|
+
const status = value.status ?? "pending";
|
|
51
|
+
if (title === undefined || typeof status !== "string")
|
|
52
|
+
return undefined;
|
|
53
|
+
if (!STEP_STATUSES.has(status))
|
|
54
|
+
return undefined;
|
|
55
|
+
return { title, status: status };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A status value as Trigger Server takes it, or `undefined` when `value` is
|
|
59
|
+
* not one. A plan keeps its first steps, as many as Slack shows.
|
|
60
|
+
*/
|
|
61
|
+
export function slackStatusFields(value) {
|
|
62
|
+
if (typeof value === "string") {
|
|
63
|
+
const text = oneLine(value);
|
|
64
|
+
return text === undefined ? undefined : { message: { text } };
|
|
65
|
+
}
|
|
66
|
+
if (!Array.isArray(value))
|
|
67
|
+
return undefined;
|
|
68
|
+
const steps = [];
|
|
69
|
+
for (const entry of value.slice(0, MAX_STEPS)) {
|
|
70
|
+
const step = statusStep(entry);
|
|
71
|
+
if (!step)
|
|
72
|
+
return undefined;
|
|
73
|
+
steps.push(step);
|
|
74
|
+
}
|
|
75
|
+
return { steps };
|
|
76
|
+
}
|
|
77
|
+
/** Whether `value` is a status value a channel can show. */
|
|
78
|
+
export function isSlackStatusValue(value) {
|
|
79
|
+
return slackStatusFields(value) !== undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* What a run's `run.started` tells Trigger Server about its status: a custom
|
|
83
|
+
* status shows as a plan, whose title is the line, and a fixed one from the
|
|
84
|
+
* start. `undefined` keeps Trigger Server's working phrases.
|
|
85
|
+
*/
|
|
86
|
+
export function startedStatus(choice) {
|
|
87
|
+
if (choice === undefined)
|
|
88
|
+
return undefined;
|
|
89
|
+
if (typeof choice === "function")
|
|
90
|
+
return { display: "plan" };
|
|
91
|
+
return { display: "plan", ...slackStatusFields(choice) };
|
|
92
|
+
}
|
|
93
|
+
/** What a chooser says, as Trigger Server takes it; `null` to leave what's shown. */
|
|
94
|
+
async function chooseStatus(chooser, context, warn) {
|
|
95
|
+
let timer;
|
|
96
|
+
try {
|
|
97
|
+
const chosen = await Promise.race([
|
|
98
|
+
Promise.resolve(chooser(context)),
|
|
99
|
+
new Promise((_, reject) => {
|
|
100
|
+
timer = setTimeout(() => reject(new Error(`timed out after ${CHOOSER_TIMEOUT_MS}ms`)), CHOOSER_TIMEOUT_MS);
|
|
101
|
+
}),
|
|
102
|
+
]);
|
|
103
|
+
// An empty list, as a to-do list is before the agent writes one, leaves
|
|
104
|
+
// what's shown too.
|
|
105
|
+
if (chosen === null || (Array.isArray(chosen) && chosen.length === 0))
|
|
106
|
+
return null;
|
|
107
|
+
const fields = slackStatusFields(chosen);
|
|
108
|
+
if (fields)
|
|
109
|
+
return fields;
|
|
110
|
+
warn("Slack status chooser did not answer with a status line or steps; leaving the status.");
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
warn(`Slack status chooser failed (${logger.safeErrorLabel(error)}); leaving the status.`);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
if (timer !== undefined)
|
|
117
|
+
clearTimeout(timer);
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* One run's status updates: one chooser call at a time, at most one update a
|
|
123
|
+
* second, and only when the status changed. Updates are posted in order, in
|
|
124
|
+
* the background; a failed post is logged.
|
|
125
|
+
*/
|
|
126
|
+
class RunStatus {
|
|
127
|
+
#chooser;
|
|
128
|
+
#target;
|
|
129
|
+
/** The newest state not yet shown to the chooser. */
|
|
130
|
+
#pending;
|
|
131
|
+
#draining;
|
|
132
|
+
#shown;
|
|
133
|
+
#updatedAt = 0;
|
|
134
|
+
#closed = false;
|
|
135
|
+
/** Bumped when what the chooser was asked about is out of date. */
|
|
136
|
+
#generation = 0;
|
|
137
|
+
#warned = false;
|
|
138
|
+
#wake;
|
|
139
|
+
/** The model and tool calls under way, and the state the heartbeat asks with. */
|
|
140
|
+
#calls = 0;
|
|
141
|
+
#callState;
|
|
142
|
+
#heartbeat;
|
|
143
|
+
constructor(chooser, target) {
|
|
144
|
+
this.#chooser = chooser;
|
|
145
|
+
this.#target = target;
|
|
146
|
+
}
|
|
147
|
+
/** Ask the chooser about `state`, once the previous call is done. */
|
|
148
|
+
update(state) {
|
|
149
|
+
if (this.#closed)
|
|
150
|
+
return;
|
|
151
|
+
this.#pending = state;
|
|
152
|
+
this.#draining ??= this.#drain().finally(() => {
|
|
153
|
+
this.#draining = undefined;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/** Run a model or tool call, asking the chooser again while it runs. */
|
|
157
|
+
async during(state, call) {
|
|
158
|
+
this.#calls += 1;
|
|
159
|
+
this.#callState = state;
|
|
160
|
+
if (this.#calls === 1 && !this.#closed) {
|
|
161
|
+
this.#heartbeat = setInterval(() => {
|
|
162
|
+
if (this.#callState)
|
|
163
|
+
this.update(this.#callState);
|
|
164
|
+
}, HEARTBEAT_MS);
|
|
165
|
+
this.#heartbeat.unref?.();
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
return await call();
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// The run is failing, interrupted, or cancelled, and may never reach
|
|
172
|
+
// `afterAgent`: show nothing more, as Trigger Server hears it ended.
|
|
173
|
+
this.close();
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
this.#calls -= 1;
|
|
178
|
+
if (this.#calls === 0) {
|
|
179
|
+
this.#stopHeartbeat();
|
|
180
|
+
this.#dropStale();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** Whether the run's status updates are over. */
|
|
185
|
+
get closed() {
|
|
186
|
+
return this.#closed;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* A finished call leaves what was asked during it out of date. The next
|
|
190
|
+
* hook asks again, unless the run stops first, as an interrupt in a later
|
|
191
|
+
* hook stops it.
|
|
192
|
+
*/
|
|
193
|
+
#dropStale() {
|
|
194
|
+
this.#pending = undefined;
|
|
195
|
+
this.#generation += 1;
|
|
196
|
+
this.#wake?.();
|
|
197
|
+
}
|
|
198
|
+
/** Stop asking, and wait a little for an update already on its way. */
|
|
199
|
+
async close() {
|
|
200
|
+
this.#closed = true;
|
|
201
|
+
this.#pending = undefined;
|
|
202
|
+
this.#stopHeartbeat();
|
|
203
|
+
this.#wake?.();
|
|
204
|
+
const draining = this.#draining;
|
|
205
|
+
if (!draining)
|
|
206
|
+
return;
|
|
207
|
+
let timer;
|
|
208
|
+
await Promise.race([
|
|
209
|
+
draining,
|
|
210
|
+
new Promise((resolve) => {
|
|
211
|
+
timer = setTimeout(resolve, DRAIN_TIMEOUT_MS);
|
|
212
|
+
}),
|
|
213
|
+
]);
|
|
214
|
+
clearTimeout(timer);
|
|
215
|
+
}
|
|
216
|
+
#stopHeartbeat() {
|
|
217
|
+
if (this.#heartbeat !== undefined)
|
|
218
|
+
clearInterval(this.#heartbeat);
|
|
219
|
+
this.#heartbeat = undefined;
|
|
220
|
+
this.#callState = undefined;
|
|
221
|
+
}
|
|
222
|
+
async #drain() {
|
|
223
|
+
while (this.#pending !== undefined && !this.#closed) {
|
|
224
|
+
await this.#gap();
|
|
225
|
+
const state = this.#pending;
|
|
226
|
+
this.#pending = undefined;
|
|
227
|
+
if (state === undefined || this.#closed)
|
|
228
|
+
return;
|
|
229
|
+
const generation = this.#generation;
|
|
230
|
+
const fields = await chooseStatus(this.#chooser, { state }, (message) => this.#warnOnce(message));
|
|
231
|
+
if (fields === null || this.#closed)
|
|
232
|
+
continue;
|
|
233
|
+
if (generation !== this.#generation)
|
|
234
|
+
continue;
|
|
235
|
+
const shown = JSON.stringify(fields);
|
|
236
|
+
if (shown === this.#shown)
|
|
237
|
+
continue;
|
|
238
|
+
this.#updatedAt = Date.now();
|
|
239
|
+
// Only a status Trigger Server took counts as shown; a failed one is
|
|
240
|
+
// posted again when the chooser answers it again.
|
|
241
|
+
if (await this.#post(fields))
|
|
242
|
+
this.#shown = shown;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/** Wait out the least time between updates; closing ends the wait. */
|
|
246
|
+
async #gap() {
|
|
247
|
+
const wait = this.#updatedAt + MIN_UPDATE_GAP_MS - Date.now();
|
|
248
|
+
if (wait <= 0)
|
|
249
|
+
return;
|
|
250
|
+
await new Promise((resolve) => {
|
|
251
|
+
const timer = setTimeout(resolve, wait);
|
|
252
|
+
this.#wake = () => {
|
|
253
|
+
clearTimeout(timer);
|
|
254
|
+
resolve();
|
|
255
|
+
};
|
|
256
|
+
});
|
|
257
|
+
this.#wake = undefined;
|
|
258
|
+
}
|
|
259
|
+
async #post(fields) {
|
|
260
|
+
const target = this.#target;
|
|
261
|
+
try {
|
|
262
|
+
await target.client.postRuntimeEvent(target.channelId, {
|
|
263
|
+
id: randomUUID(),
|
|
264
|
+
type: "run.thinking",
|
|
265
|
+
delivery_id: target.deliveryId,
|
|
266
|
+
source_thread_key: target.sourceThreadKey,
|
|
267
|
+
address: target.address,
|
|
268
|
+
run_thread_id: target.threadId,
|
|
269
|
+
run_id: target.runId,
|
|
270
|
+
display: "plan",
|
|
271
|
+
...fields,
|
|
272
|
+
});
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
logger.warn(`Slack status update failed (${logger.safeErrorLabel(error)}).`);
|
|
277
|
+
return false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** A broken chooser fails on every call; say so once per run. */
|
|
281
|
+
#warnOnce(message) {
|
|
282
|
+
if (this.#warned)
|
|
283
|
+
return;
|
|
284
|
+
this.#warned = true;
|
|
285
|
+
logger.warn(message);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function currentConfig() {
|
|
289
|
+
try {
|
|
290
|
+
return getConfig();
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// Outside a runnable context.
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** The run's Trigger Slack delivery, verified against the run's own source. */
|
|
298
|
+
function statusTarget(binding, config) {
|
|
299
|
+
const target = binding.target;
|
|
300
|
+
const runId = nonblankString(config.metadata?.run_id);
|
|
301
|
+
const threadId = nonblankString(config.configurable?.thread_id);
|
|
302
|
+
if (!runId || !threadId || !isRecord(target.address))
|
|
303
|
+
return undefined;
|
|
304
|
+
return {
|
|
305
|
+
channelId: target.channel_id,
|
|
306
|
+
address: target.address,
|
|
307
|
+
deliveryId: binding.deliveryId,
|
|
308
|
+
sourceThreadKey: binding.sourceThreadKey,
|
|
309
|
+
runId,
|
|
310
|
+
threadId,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
/** LangGraph's checkpoint namespaces nest with `|`. */
|
|
314
|
+
function nestedGraph(config) {
|
|
315
|
+
const namespace = config.configurable?.checkpoint_ns;
|
|
316
|
+
return typeof namespace === "string" && namespace.includes("|");
|
|
317
|
+
}
|
|
318
|
+
function statusState(state) {
|
|
319
|
+
return state;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* The state fields a chooser reads beyond `messages`. LangChain hands a
|
|
323
|
+
* middleware only the fields it declares, so without this a chooser never
|
|
324
|
+
* saw the to-do list. It is the to-do list middleware's own schema, so
|
|
325
|
+
* declaring it again changes nothing for agents that keep one.
|
|
326
|
+
*/
|
|
327
|
+
const statusStateSchema = z.object({
|
|
328
|
+
todos: z
|
|
329
|
+
.array(z.object({
|
|
330
|
+
content: z.string(),
|
|
331
|
+
status: z.enum(["pending", "in_progress", "completed"]),
|
|
332
|
+
}))
|
|
333
|
+
.default([]),
|
|
334
|
+
});
|
|
335
|
+
/**
|
|
336
|
+
* Show what each Slack channel's status chooser says while a run of the
|
|
337
|
+
* channel works. Runs from other channels, and channels with a fixed status
|
|
338
|
+
* or none, pass through: `run.started` carries a fixed status.
|
|
339
|
+
*/
|
|
340
|
+
export function createSlackStatusMiddleware(channels) {
|
|
341
|
+
const choosers = new Map();
|
|
342
|
+
for (const channel of channels) {
|
|
343
|
+
const status = channel.status;
|
|
344
|
+
if (channel.kind === "slack" &&
|
|
345
|
+
channel.name &&
|
|
346
|
+
typeof status === "function")
|
|
347
|
+
choosers.set(channel.name, status);
|
|
348
|
+
}
|
|
349
|
+
const runs = new Map();
|
|
350
|
+
/**
|
|
351
|
+
* The current run's status updates, when its channel has a chooser; new
|
|
352
|
+
* ones only with `start`.
|
|
353
|
+
*/
|
|
354
|
+
const currentRun = (start = true) => {
|
|
355
|
+
const config = currentConfig();
|
|
356
|
+
// A subagent forked inside a tool call shares the run's config; only the
|
|
357
|
+
// run's own agent, at the root of its graph, shows the status.
|
|
358
|
+
if (!config || nestedGraph(config))
|
|
359
|
+
return undefined;
|
|
360
|
+
const binding = resolveChannelBinding(config.context, config.configurable);
|
|
361
|
+
if (!binding || binding.transport !== "trigger_server")
|
|
362
|
+
return undefined;
|
|
363
|
+
const chooser = choosers.get(binding.name);
|
|
364
|
+
const target = chooser && statusTarget(binding, config);
|
|
365
|
+
if (!chooser || !target)
|
|
366
|
+
return undefined;
|
|
367
|
+
const key = target.runId;
|
|
368
|
+
let run = runs.get(key);
|
|
369
|
+
if (run?.closed) {
|
|
370
|
+
runs.delete(key);
|
|
371
|
+
run = undefined;
|
|
372
|
+
}
|
|
373
|
+
if (!run) {
|
|
374
|
+
if (!start)
|
|
375
|
+
return undefined;
|
|
376
|
+
const client = createTriggerClient();
|
|
377
|
+
if (!client)
|
|
378
|
+
return undefined;
|
|
379
|
+
if (runs.size >= MAX_TRACKED_RUNS) {
|
|
380
|
+
const [oldest, stale] = runs.entries().next().value;
|
|
381
|
+
runs.delete(oldest);
|
|
382
|
+
// Not awaited: it only stops the stale run's heartbeat.
|
|
383
|
+
stale.close();
|
|
384
|
+
}
|
|
385
|
+
run = new RunStatus(chooser, { client, ...target });
|
|
386
|
+
runs.set(key, run);
|
|
387
|
+
}
|
|
388
|
+
return { key, run };
|
|
389
|
+
};
|
|
390
|
+
const update = (state) => {
|
|
391
|
+
currentRun()?.run.update(statusState(state));
|
|
392
|
+
return undefined;
|
|
393
|
+
};
|
|
394
|
+
return createMiddleware({
|
|
395
|
+
name: "mda-slack-status",
|
|
396
|
+
stateSchema: statusStateSchema,
|
|
397
|
+
beforeAgent: update,
|
|
398
|
+
beforeModel: update,
|
|
399
|
+
afterModel: update,
|
|
400
|
+
async afterAgent() {
|
|
401
|
+
const current = currentRun(false);
|
|
402
|
+
if (!current)
|
|
403
|
+
return undefined;
|
|
404
|
+
runs.delete(current.key);
|
|
405
|
+
await current.run.close();
|
|
406
|
+
return undefined;
|
|
407
|
+
},
|
|
408
|
+
async wrapModelCall(request, handler) {
|
|
409
|
+
const current = currentRun();
|
|
410
|
+
return current
|
|
411
|
+
? current.run.during(statusState(request.state), async () => handler(request))
|
|
412
|
+
: handler(request);
|
|
413
|
+
},
|
|
414
|
+
async wrapToolCall(request, handler) {
|
|
415
|
+
const current = currentRun();
|
|
416
|
+
return current
|
|
417
|
+
? current.run.during(statusState(request.state), async () => handler(request))
|
|
418
|
+
: handler(request);
|
|
419
|
+
},
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
/** Whether a channel's status needs the status middleware in its runs. */
|
|
423
|
+
export function hasSlackStatusChooser(channels) {
|
|
424
|
+
return channels.some((channel) => channel.kind === "slack" &&
|
|
425
|
+
typeof channel.status === "function");
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/channels/slack/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const declaredProviders = new Set();
|
|
2
2
|
// Keep first-party ingress working before adapter modules are loaded.
|
|
3
|
-
const builtinProviders = new Set(["slack", "github"]);
|
|
3
|
+
const builtinProviders = new Set(["slack", "github", "linear"]);
|
|
4
4
|
/** Register declared providers independently of outbound messaging support. */
|
|
5
5
|
export function registerDeclaredSourceProviders(sources) {
|
|
6
6
|
const providers = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-providers.js","sourceRoot":"","sources":["../../src/channels/source-providers.ts"],"names":[],"mappings":"AAMA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC5C,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"source-providers.js","sourceRoot":"","sources":["../../src/channels/source-providers.ts"],"names":[],"mappings":"AAMA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC5C,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhE,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAC7C,OAAkC;IAElC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,SAAS;QAC3B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;YACvC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,SAAS,CAAC;QAChB,IACE,OAAO,YAAY,EAAE,QAAQ,KAAK,QAAQ;YAC1C,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5B,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,0EAA0E;IAC1E,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EACnC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,kCAAkC,EACnC,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,oCAAoC,qCACb,CAAC;AACrC,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAEhE,KAAK,sBAAsB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iCAAiC,GACtC,OAAO,CAAC,kCAAkC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,SAAS,EAAE,sBAAsB;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAF1B,YACW,SAAS,EAAE,sBAAsB,EACjC,MAAM,CAAC,EAAE,MAAM,YAAA,EAQzB;CACF;AAED,4EAA4E;AAC5E,qBAAa,aAAc,YAAW,iBAAiB;;IAOrD,YAAY,OAAO,GAAE,oBAAyB,EAW7C;IAEK,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC,CAOvC;IAEK,oBAAoB,CACxB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC,CAWvC;IAEK,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iCAAiC,GACtC,OAAO,CAAC,kCAAkC,CAAC,CAU7C;CAoCF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,oBAAyB,GACjC,aAAa,GAAG,SAAS,CAM3B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
|
|
2
2
|
import { normalizeUuid } from "./uuid.js";
|
|
3
|
+
import { isRecord, nonblankString } from "../../values.js";
|
|
3
4
|
export const LANGSMITH_MDA_TRIGGER_SERVER_URL_ENV = "LANGSMITH_MDA_TRIGGER_SERVER_URL";
|
|
4
5
|
export const TRIGGER_HTTP_TIMEOUT_MS = PROVIDER_HTTP_TIMEOUT_MS;
|
|
5
6
|
/** Fixed-message callback error safe for logs and diagnostics. */
|
|
@@ -23,7 +24,7 @@ export class TriggerClient {
|
|
|
23
24
|
constructor(options = {}) {
|
|
24
25
|
const env = options.env ?? process.env;
|
|
25
26
|
this.#apiBase = triggerServerApiBase(configuredTriggerServerUrl(env));
|
|
26
|
-
const apiKey =
|
|
27
|
+
const apiKey = env.LANGSMITH_API_KEY?.trim();
|
|
27
28
|
if (!apiKey) {
|
|
28
29
|
throw new Error("Channel runtime is not configured.");
|
|
29
30
|
}
|
|
@@ -81,7 +82,7 @@ export class TriggerClient {
|
|
|
81
82
|
}
|
|
82
83
|
export function createTriggerClient(options = {}) {
|
|
83
84
|
const env = options.env ?? process.env;
|
|
84
|
-
if (!configuredTriggerServerUrl(env) || !
|
|
85
|
+
if (!configuredTriggerServerUrl(env) || !env.LANGSMITH_API_KEY?.trim()) {
|
|
85
86
|
return undefined;
|
|
86
87
|
}
|
|
87
88
|
return new TriggerClient(options);
|
|
@@ -89,10 +90,6 @@ export function createTriggerClient(options = {}) {
|
|
|
89
90
|
function configuredTriggerServerUrl(env) {
|
|
90
91
|
return env[LANGSMITH_MDA_TRIGGER_SERVER_URL_ENV]?.trim() || undefined;
|
|
91
92
|
}
|
|
92
|
-
/** Self-hosted Host injects the deployment key under its legacy name. */
|
|
93
|
-
function configuredApiKey(env) {
|
|
94
|
-
return (env.LANGSMITH_API_KEY?.trim() || env.LANGCHAIN_API_KEY?.trim() || undefined);
|
|
95
|
-
}
|
|
96
93
|
function triggerServerApiBase(raw) {
|
|
97
94
|
if (!raw) {
|
|
98
95
|
throw new Error("Channel runtime is not configured.");
|
|
@@ -122,16 +119,10 @@ function triggerServerApiBase(raw) {
|
|
|
122
119
|
}
|
|
123
120
|
return `${url.origin}${path || "/v1"}`;
|
|
124
121
|
}
|
|
125
|
-
function isRecord(value) {
|
|
126
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
127
|
-
}
|
|
128
|
-
function nonblank(value) {
|
|
129
|
-
return typeof value === "string" && value.trim().length > 0;
|
|
130
|
-
}
|
|
131
122
|
function parseActionResponse(response) {
|
|
132
|
-
|
|
123
|
+
const id = isRecord(response) ? nonblankString(response.id) : undefined;
|
|
124
|
+
if (id === undefined)
|
|
133
125
|
throw new TriggerClientError("actions");
|
|
134
|
-
}
|
|
135
|
-
return { id: response.id };
|
|
126
|
+
return { id };
|
|
136
127
|
}
|
|
137
128
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/channels/trigger/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/channels/trigger/client.ts"],"names":[],"mappings":"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"}
|