managed-deepagents 0.10.0-dev.17 → 0.10.0-dev.18
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 +508 -80
- 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 +29 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +72 -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/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +13 -11
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/schema.d.ts +50 -1
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +12 -0
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/http/endpoint.d.ts +6 -4
- package/dist/channels/http/endpoint.d.ts.map +1 -1
- package/dist/channels/http/endpoint.js.map +1 -1
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +4 -10
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +10 -16
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +2 -2
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +9 -21
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +10 -5
- package/dist/channels/http/provider.d.ts.map +1 -1
- package/dist/channels/http/provider.js +17 -10
- package/dist/channels/http/provider.js.map +1 -1
- package/dist/channels/http/studio.d.ts +5 -5
- package/dist/channels/http/studio.d.ts.map +1 -1
- package/dist/channels/http/studio.js +4 -6
- package/dist/channels/http/studio.js.map +1 -1
- package/dist/channels/http/types.d.ts +7 -1
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +16 -11
- 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 +9 -2
- 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/run-input.d.ts +11 -0
- package/dist/channels/run-input.d.ts.map +1 -1
- package/dist/channels/run-input.js +18 -8
- package/dist/channels/run-input.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 +9 -20
- 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 +44 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +124 -3
- 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 +4 -9
- 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 +310 -71
- package/dist/channels/trigger/http.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 +47 -1
- 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/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/runs.d.ts +22 -0
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +45 -1
- 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/namespaces.d.ts +0 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +0 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts +1 -2
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +90 -63
- package/dist/runtime/auth.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.map +1 -1
- package/dist/runtime/index.js +32 -23
- package/dist/runtime/index.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 -2
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +10 -8
- package/dist/runtime/managed-tools.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 +48 -2
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +1 -1
- 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 +39 -1
- package/dist/runtime/schedule-auth.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 +83 -20
- 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/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 +7 -7
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-content.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/message-content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message-content.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/message-content.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AA8J7C;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CA+BpB;AAsBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAkB3B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isRecord, trimmedString } from "../../values.js";
|
|
1
2
|
/**
|
|
2
3
|
* Render the Slack attachments and blocks the Trigger Server leaves out of the
|
|
3
4
|
* prompt.
|
|
@@ -21,31 +22,25 @@ const LABEL = "Blocks and attachments of this Slack message (third-party content
|
|
|
21
22
|
const OPEN_TAG = "<slack_message_content>";
|
|
22
23
|
const CLOSE_TAG = "</slack_message_content>";
|
|
23
24
|
const MENTION = /<@[A-Z0-9]+(?:\|[^>]*)?>/g;
|
|
24
|
-
function isObject(value) {
|
|
25
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
26
|
-
}
|
|
27
25
|
function list(value, max = MAX_ITEMS) {
|
|
28
26
|
return Array.isArray(value) ? value.slice(0, max) : [];
|
|
29
27
|
}
|
|
30
|
-
function nonblank(value) {
|
|
31
|
-
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
32
|
-
}
|
|
33
28
|
/** A Slack text object (`{ type, text }`) or a plain string. */
|
|
34
29
|
function textOf(value) {
|
|
35
|
-
return
|
|
30
|
+
return isRecord(value) ? trimmedString(value.text) : trimmedString(value);
|
|
36
31
|
}
|
|
37
32
|
function linked(label, url) {
|
|
38
|
-
const href =
|
|
33
|
+
const href = trimmedString(url);
|
|
39
34
|
if (label && href)
|
|
40
35
|
return `${label} (${href})`;
|
|
41
36
|
return label ?? href;
|
|
42
37
|
}
|
|
43
38
|
function elementLine(element) {
|
|
44
|
-
if (!
|
|
39
|
+
if (!isRecord(element))
|
|
45
40
|
return undefined;
|
|
46
41
|
switch (element.type) {
|
|
47
42
|
case "image":
|
|
48
|
-
return
|
|
43
|
+
return trimmedString(element.alt_text);
|
|
49
44
|
case "button":
|
|
50
45
|
return linked(textOf(element.text), element.url);
|
|
51
46
|
default:
|
|
@@ -53,13 +48,13 @@ function elementLine(element) {
|
|
|
53
48
|
}
|
|
54
49
|
}
|
|
55
50
|
function richTextLeaf(element) {
|
|
56
|
-
if (!
|
|
51
|
+
if (!isRecord(element))
|
|
57
52
|
return "";
|
|
58
53
|
switch (element.type) {
|
|
59
54
|
case "text":
|
|
60
55
|
return typeof element.text === "string" ? element.text : "";
|
|
61
56
|
case "link":
|
|
62
|
-
return linked(
|
|
57
|
+
return linked(trimmedString(element.text), element.url) ?? "";
|
|
63
58
|
case "emoji":
|
|
64
59
|
return typeof element.name === "string" ? `:${element.name}:` : "";
|
|
65
60
|
case "user":
|
|
@@ -74,7 +69,7 @@ function richTextLeaf(element) {
|
|
|
74
69
|
}
|
|
75
70
|
/** One rich_text section, list, quote or preformatted block as text. */
|
|
76
71
|
function richTextElement(element) {
|
|
77
|
-
if (!
|
|
72
|
+
if (!isRecord(element))
|
|
78
73
|
return "";
|
|
79
74
|
if (element.type === "rich_text_list") {
|
|
80
75
|
return list(element.elements, MAX_RICH_TEXT_ELEMENTS)
|
|
@@ -90,7 +85,7 @@ function richTextElement(element) {
|
|
|
90
85
|
* `text`, but bots can send a short `text` and the details in rich_text.
|
|
91
86
|
*/
|
|
92
87
|
function blockLines(block, richText) {
|
|
93
|
-
if (!
|
|
88
|
+
if (!isRecord(block))
|
|
94
89
|
return [];
|
|
95
90
|
switch (block.type) {
|
|
96
91
|
case "header":
|
|
@@ -107,7 +102,7 @@ function blockLines(block, richText) {
|
|
|
107
102
|
return list(block.elements).map(elementLine).filter(present);
|
|
108
103
|
case "image":
|
|
109
104
|
return [
|
|
110
|
-
linked(textOf(block.title) ??
|
|
105
|
+
linked(textOf(block.title) ?? trimmedString(block.alt_text), block.image_url),
|
|
111
106
|
].filter(present);
|
|
112
107
|
case "video":
|
|
113
108
|
return [linked(textOf(block.title), block.title_url)].filter(present);
|
|
@@ -120,27 +115,27 @@ function blockLines(block, richText) {
|
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
117
|
function attachmentLines(attachment, richText) {
|
|
123
|
-
if (!
|
|
118
|
+
if (!isRecord(attachment))
|
|
124
119
|
return [];
|
|
125
120
|
const lines = [
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
linked(
|
|
129
|
-
|
|
121
|
+
trimmedString(attachment.pretext),
|
|
122
|
+
trimmedString(attachment.author_name),
|
|
123
|
+
linked(trimmedString(attachment.title), attachment.title_link),
|
|
124
|
+
trimmedString(attachment.text),
|
|
130
125
|
...list(attachment.fields).map((field) => {
|
|
131
|
-
if (!
|
|
126
|
+
if (!isRecord(field))
|
|
132
127
|
return undefined;
|
|
133
|
-
const title =
|
|
134
|
-
const value =
|
|
128
|
+
const title = trimmedString(field.title);
|
|
129
|
+
const value = trimmedString(field.value);
|
|
135
130
|
return title && value ? `${title}: ${value}` : (value ?? title);
|
|
136
131
|
}),
|
|
137
132
|
...list(attachment.blocks).flatMap((block) => blockLines(block, richText)),
|
|
138
|
-
|
|
139
|
-
|
|
133
|
+
trimmedString(attachment.image_url),
|
|
134
|
+
trimmedString(attachment.footer),
|
|
140
135
|
].filter(present);
|
|
141
136
|
if (lines.length)
|
|
142
137
|
return lines;
|
|
143
|
-
const fallback =
|
|
138
|
+
const fallback = trimmedString(attachment.fallback);
|
|
144
139
|
return fallback ? [fallback] : [];
|
|
145
140
|
}
|
|
146
141
|
/**
|
|
@@ -170,7 +165,7 @@ function lineKeys(text) {
|
|
|
170
165
|
* add nothing beyond `text` and `shown` (the text the agent already gets).
|
|
171
166
|
*/
|
|
172
167
|
export function renderSlackRichContent(rawEvent, shown) {
|
|
173
|
-
if (!
|
|
168
|
+
if (!isRecord(rawEvent))
|
|
174
169
|
return undefined;
|
|
175
170
|
const richText = rawEvent.bot_id != null || rawEvent.subtype === "bot_message";
|
|
176
171
|
// Only lines the agent already has are dropped: repeats between attachments
|
|
@@ -209,7 +204,7 @@ function contentText(content) {
|
|
|
209
204
|
if (typeof content === "string")
|
|
210
205
|
return content;
|
|
211
206
|
return list(content, MAX_RICH_TEXT_ELEMENTS)
|
|
212
|
-
.map((part) =>
|
|
207
|
+
.map((part) => isRecord(part) && part.type === "text" && typeof part.text === "string"
|
|
213
208
|
? part.text
|
|
214
209
|
: "")
|
|
215
210
|
.join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-content.js","sourceRoot":"","sources":["../../../src/channels/slack/message-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,SAAS,GAAG,aAAa,CAAC;AAChC,MAAM,KAAK,GACT,+FAA+F,CAAC;AAClG,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAC3C,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAC7C,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAI5C,SAAS,
|
|
1
|
+
{"version":3,"file":"message-content.js","sourceRoot":"","sources":["../../../src/channels/slack/message-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|