managed-deepagents 0.8.6-dev.3 → 0.9.0-dev.2
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 +81 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +5 -1
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/types.d.ts +2 -0
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/reactions.d.ts +31 -0
- package/dist/channels/reactions.d.ts.map +1 -0
- package/dist/channels/reactions.js +52 -0
- package/dist/channels/reactions.js.map +1 -0
- package/dist/channels/runtime.d.ts +1 -0
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +7 -1
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +3 -25
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +28 -31
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/index.d.ts +8 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +10 -0
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/slack/transport.d.ts.map +1 -1
- package/dist/channels/slack/transport.js +1 -1
- package/dist/channels/slack/transport.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +3 -0
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +82 -37
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/transport.d.ts.map +1 -1
- package/dist/channels/trigger/transport.js +6 -3
- package/dist/channels/trigger/transport.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +21 -2
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +3 -0
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js.map +1 -1
- package/dist/connection-authorization.d.ts +7 -0
- package/dist/connection-authorization.d.ts.map +1 -1
- package/dist/connection-authorization.js +1 -1
- package/dist/connection-authorization.js.map +1 -1
- package/dist/connectors/mcp/index.d.ts +11 -11
- package/dist/connectors/mcp/index.d.ts.map +1 -1
- package/dist/connectors/mcp/index.js +74 -120
- package/dist/connectors/mcp/index.js.map +1 -1
- package/dist/connectors/mcp/langsmith-url.js +2 -2
- package/dist/connectors/mcp/langsmith-url.js.map +1 -1
- package/dist/connectors/mcp/schema.d.ts +4 -13
- package/dist/connectors/mcp/schema.d.ts.map +1 -1
- package/dist/connectors/mcp/schema.js +57 -96
- package/dist/connectors/mcp/schema.js.map +1 -1
- package/dist/connectors/mcp/types.d.ts +15 -49
- package/dist/connectors/mcp/types.d.ts.map +1 -1
- package/dist/credential-gate.d.ts.map +1 -1
- package/dist/credential-gate.js +2 -4
- package/dist/credential-gate.js.map +1 -1
- package/dist/define-deep-agent.d.ts +6 -5
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +13 -17
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/dynamic-agent.d.ts +13 -0
- package/dist/dynamic-agent.d.ts.map +1 -0
- package/dist/dynamic-agent.js +12 -0
- package/dist/dynamic-agent.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/managed-composition.d.ts +15 -0
- package/dist/managed-composition.d.ts.map +1 -0
- package/dist/managed-composition.js +181 -0
- package/dist/managed-composition.js.map +1 -0
- package/dist/run-context.d.ts +6 -0
- package/dist/run-context.d.ts.map +1 -1
- package/dist/run-context.js +1 -0
- package/dist/run-context.js.map +1 -1
- package/dist/runtime/agent-entry.d.ts +6 -0
- package/dist/runtime/agent-entry.d.ts.map +1 -0
- package/dist/runtime/agent-entry.js +42 -0
- package/dist/runtime/agent-entry.js.map +1 -0
- package/dist/runtime/auth.d.ts +1 -6
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +9 -7
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +1 -0
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +9 -6
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/eval-filesystem.d.ts +4 -2
- package/dist/runtime/eval-filesystem.d.ts.map +1 -1
- package/dist/runtime/eval-filesystem.js +134 -8
- package/dist/runtime/eval-filesystem.js.map +1 -1
- package/dist/runtime/index.d.ts +4 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +118 -42
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +1 -1
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +1 -1
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +3 -2
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +11 -15
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/paths.d.ts +1 -0
- package/dist/runtime/memory/paths.d.ts.map +1 -1
- package/dist/runtime/memory/paths.js +10 -0
- package/dist/runtime/memory/paths.js.map +1 -1
- package/dist/runtime/run-input.d.ts +3 -0
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +14 -2
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +90 -12
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +49 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -0
- package/dist/runtime/schedule-auth.js +177 -0
- package/dist/runtime/schedule-auth.js.map +1 -0
- package/dist/runtime/selected-skills-backend.d.ts +22 -0
- package/dist/runtime/selected-skills-backend.d.ts.map +1 -0
- package/dist/runtime/selected-skills-backend.js +238 -0
- package/dist/runtime/selected-skills-backend.js.map +1 -0
- package/dist/runtime/selected-skills.d.ts +13 -0
- package/dist/runtime/selected-skills.d.ts.map +1 -0
- package/dist/runtime/selected-skills.js +257 -0
- package/dist/runtime/selected-skills.js.map +1 -0
- package/dist/runtime/static-entry.d.ts +4 -0
- package/dist/runtime/static-entry.d.ts.map +1 -0
- package/dist/runtime/static-entry.js +18 -0
- package/dist/runtime/static-entry.js.map +1 -0
- package/dist/runtime-schedules.d.ts +101 -0
- package/dist/runtime-schedules.d.ts.map +1 -0
- package/dist/runtime-schedules.js +454 -0
- package/dist/runtime-schedules.js.map +1 -0
- package/dist/sandbox.d.ts +2 -1
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js.map +1 -1
- package/dist/schedule-channel.d.ts +3 -0
- package/dist/schedule-channel.d.ts.map +1 -0
- package/dist/schedule-channel.js +21 -0
- package/dist/schedule-channel.js.map +1 -0
- package/dist/schedule-time.d.ts +12 -0
- package/dist/schedule-time.d.ts.map +1 -0
- package/dist/schedule-time.js +101 -0
- package/dist/schedule-time.js.map +1 -0
- package/dist/types.d.ts +40 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -125,7 +125,45 @@ export const agent = defineDeepAgent({
|
|
|
125
125
|
});
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
`defineDeepAgent` requires
|
|
128
|
+
`defineDeepAgent` requires `name` and supports the [`createDeepAgent`](https://reference.langchain.com/javascript/deepagents/agent/createDeepAgent) options except the platform-owned `backend`, `store`, `checkpointer`, `systemPrompt`, and `memory` fields. Static agents use `instructions.md` and all discovered skills.
|
|
129
|
+
|
|
130
|
+
Use `dynamic(resolve)` when run context should select the agent configuration. The resolver may be synchronous or asynchronous and must return `defineDeepAgent(...)` with an inline string-literal `name`, which `mda build` uses as the graph key:
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
import { join } from "node:path";
|
|
134
|
+
import { defineDeepAgent, dynamic } from "managed-deepagents";
|
|
135
|
+
import { customerLookup, inspectInternalCase } from "./tools/support";
|
|
136
|
+
|
|
137
|
+
const skill = (name: string) => join(import.meta.dirname, "skills", name);
|
|
138
|
+
|
|
139
|
+
export const agent = dynamic((ctx) => {
|
|
140
|
+
const internal = "role" in ctx && ctx.role === "internal";
|
|
141
|
+
|
|
142
|
+
return defineDeepAgent({
|
|
143
|
+
name: "support",
|
|
144
|
+
model: internal ? "openai:gpt-5.5" : "openai:gpt-5-mini",
|
|
145
|
+
tools: internal ? [inspectInternalCase] : [customerLookup],
|
|
146
|
+
instructions: internal ? "Help support staff." : "Help customers.",
|
|
147
|
+
skills: [skill(internal ? "internal-support" : "customer-support")],
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Dynamic agents can select `model`, `tools`, `subagents`, `middleware`, `instructions`, `skills`, `mcp`, and `sandbox`. Standard agent fields follow `createDeepAgent`. Managed fields follow these rules:
|
|
153
|
+
|
|
154
|
+
- Omitted `instructions`, `skills`, `mcp`, or `sandbox` use the discovered project resources.
|
|
155
|
+
- `instructions: ""` clears authored instructions; `skills: []` exposes no skills; `mcp: []` exposes no MCP tools.
|
|
156
|
+
- Skill entries are authored skill directory paths or generated skill definitions.
|
|
157
|
+
- `mcp` accepts definitions returned by `defineMcp(...)`. A non-empty list replaces discovered MCP definitions while keeping other connectors.
|
|
158
|
+
- `sandbox` accepts a definition returned by `defineSandbox(...)`; `sandbox: null` disables the sandbox for that run. Sandbox setup and image baking remain in `sandbox/`.
|
|
159
|
+
|
|
160
|
+
Declare durable memory in root `memory.ts`; its `allow(context)` policies already resolve per run. Dynamic definitions cannot set memory.
|
|
161
|
+
|
|
162
|
+
Clients pass application context in the Agent Server run request's `context` field. MDA may call the resolver again for retries and resumes, so keep it repeatable and free of side effects. Schema inspection calls it with `{}`. Use middleware for changes between model steps in one run.
|
|
163
|
+
|
|
164
|
+
Run context is application data, not verified identity. Derive security-sensitive roles from authenticated server state, and have tools check authorization when called.
|
|
165
|
+
|
|
166
|
+
`mda build` detects the dynamic entrypoint without calling it and uses the returned definition's inline string-literal `name` as the graph key and default deployment name. Add every possible model integration to `package.json`. `mda deploy --name <name>` changes the deployment name, not the graph key.
|
|
129
167
|
|
|
130
168
|
To authenticate SDK and API requests with a LangSmith workspace key while
|
|
131
169
|
retaining MDA's thread and store authorization, declare it explicitly:
|
|
@@ -414,6 +452,41 @@ live. Declarations must be statically serializable literals or top-level
|
|
|
414
452
|
constants; prompt schedules become user-message input, and stateless runs clean
|
|
415
453
|
up their temporary thread after completion.
|
|
416
454
|
|
|
455
|
+
### Runtime schedules
|
|
456
|
+
|
|
457
|
+
Use `schedules` in a tool or middleware to create schedules while the agent runs.
|
|
458
|
+
Each schedule belongs to the current user or to the agent. You can list, get,
|
|
459
|
+
update, and delete the schedules of an owner.
|
|
460
|
+
|
|
461
|
+
```ts
|
|
462
|
+
import { schedules } from "managed-deepagents";
|
|
463
|
+
|
|
464
|
+
const owner = { type: "user" } as const;
|
|
465
|
+
const item = await schedules.create({
|
|
466
|
+
owner,
|
|
467
|
+
cron: "0 9 * * 1-5",
|
|
468
|
+
timezone: "America/Los_Angeles",
|
|
469
|
+
prompt: "Review my tasks.",
|
|
470
|
+
});
|
|
471
|
+
const page = await schedules.list({ owner });
|
|
472
|
+
await schedules.update(item.id, { paused: true }, { owner });
|
|
473
|
+
await schedules.delete(item.id, { owner });
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
To run a schedule once, give `at` in place of `cron`.
|
|
477
|
+
|
|
478
|
+
```ts
|
|
479
|
+
await schedules.create({
|
|
480
|
+
owner,
|
|
481
|
+
at: new Date(Date.now() + 60 * 60_000),
|
|
482
|
+
prompt: "Remind me to check the deploy.",
|
|
483
|
+
});
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Set `newThread` to choose whether a run starts a new thread or continues the
|
|
487
|
+
current thread. When a schedule is created from a channel such as Slack,
|
|
488
|
+
each run posts its final answer to that channel. Runtime schedules stay when you deploy again.
|
|
489
|
+
|
|
417
490
|
## Sandbox
|
|
418
491
|
|
|
419
492
|
`mda init` scaffolds `sandbox/index.ts` with a LangSmith sandbox. MDA only
|
|
@@ -528,6 +601,13 @@ Tool names are raw MCP tool names before the managed `{server}__` prefix is
|
|
|
528
601
|
applied, so `includeTools: ["search"]` on server `langchainDocs` exposes
|
|
529
602
|
`langchainDocs__search` when prefixing is enabled.
|
|
530
603
|
|
|
604
|
+
### Migration from 0.8
|
|
605
|
+
|
|
606
|
+
- `mcpServers` → `servers`, and `type` → `transport`.
|
|
607
|
+
- Remove `useStandardContentBlocks`.
|
|
608
|
+
- `reconnect` and `automaticSSEFallback` now need `mode: "legacy"`.
|
|
609
|
+
- `HttpMcpServerConfig`, `SseMcpServerConfig`, and `RemoteMcpServerBaseConfig` → `RemoteMcpServerConfig`.
|
|
610
|
+
|
|
531
611
|
## Connections in the sandbox proxy
|
|
532
612
|
|
|
533
613
|
Authenticate GitHub API requests and HTTPS git commands with the caller's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CA+BpE"}
|
|
@@ -9,7 +9,11 @@ export function httpChannel(adapter) {
|
|
|
9
9
|
const post = adapter.post?.bind(adapter);
|
|
10
10
|
if (post) {
|
|
11
11
|
hide(channel, "messaging", () => ({
|
|
12
|
-
post: ({ message, target }) => post(immutableCopy({
|
|
12
|
+
post: ({ message, target, newThread }) => post(immutableCopy({
|
|
13
|
+
...message,
|
|
14
|
+
target,
|
|
15
|
+
...(newThread === undefined ? {} : { newThread }),
|
|
16
|
+
})),
|
|
13
17
|
}));
|
|
14
18
|
}
|
|
15
19
|
hide(channel, "requirements", (name) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EACL,aAAa,GAGd,MAAM,0BAA0B,CAAC;AAalC,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAiB,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAyB,EAAE,EAAE,CACpD,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAChC,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAA4B,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EACL,aAAa,GAGd,MAAM,0BAA0B,CAAC;AAalC,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAiB,CAAC;IAElD,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAyB,EAAE,EAAE,CACpD,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAChC,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAA4B,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CACvC,IAAI,CACF,aAAa,CAAC;gBACZ,GAAG,OAAO;gBACV,MAAM;gBACN,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;aAClD,CAAC,CACH;SACJ,CAAC,CAAC,CAAC;IACN,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,IAAY,EAAmB,EAAE,CAAC,CAAC;QAChE,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,aAAa,IAAI,SAAS;QACtC,SAAS,EAAE,IAAI,KAAK,SAAS;QAC7B,mBAAmB,EAAE,EAAE;QACvB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE;KACnB,CAAC,CAAC,CAAC;IACJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,KAAa;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,6BAA6B,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,IAAI,CAAC,MAAc,EAAE,GAAoB,EAAE,KAAc;IAChE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -19,6 +19,8 @@ export type HttpChannelParseResult = {
|
|
|
19
19
|
/** MDA adds the verified reply target to the validated message. */
|
|
20
20
|
export type HttpChannelPostInput = ChannelMessage & {
|
|
21
21
|
target: JsonValue;
|
|
22
|
+
/** Scheduled posts: start a new thread when true; keep the target unchanged. */
|
|
23
|
+
newThread?: boolean;
|
|
22
24
|
};
|
|
23
25
|
export interface HttpPostedMessage {
|
|
24
26
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/http/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,yBAAyB,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE5C,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/http/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,yBAAyB,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE5C,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG;IAClD,MAAM,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,iEAAiE;IACjE,KAAK,CACH,OAAO,EAAE,kBAAkB,GAC1B,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/D,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACrB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the emoji the agent reacts with when it picks up an inbound message.
|
|
3
|
+
*
|
|
4
|
+
* The reaction is a courtesy and must never fail a run or delay a reply, so a
|
|
5
|
+
* chooser that throws, hangs, or answers with something that is not an emoji
|
|
6
|
+
* short name yields {@link DEFAULT_REACTION_EMOJI} instead.
|
|
7
|
+
*/
|
|
8
|
+
/** The default reaction, and the fallback whenever a chooser does not answer. */
|
|
9
|
+
export declare const DEFAULT_REACTION_EMOJI = "eyes";
|
|
10
|
+
/** What a chooser is told about the message it is reacting to. */
|
|
11
|
+
export interface ReactionContext {
|
|
12
|
+
/** The inbound message text. Attacker-controlled; treat it as data. */
|
|
13
|
+
readonly text: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Picks the emoji for one inbound message. May be sync or async.
|
|
17
|
+
*
|
|
18
|
+
* A sync chooser runs on the event loop, where the timeout cannot stop it, so
|
|
19
|
+
* do slow work in an async one.
|
|
20
|
+
*/
|
|
21
|
+
export type ReactionChooser = (context: ReactionContext) => string | Promise<string>;
|
|
22
|
+
/**
|
|
23
|
+
* How a channel reacts: `true` with the default, `false` not at all, a short
|
|
24
|
+
* name always that emoji, or a function per message.
|
|
25
|
+
*/
|
|
26
|
+
export type ReactionChoice = boolean | string | ReactionChooser;
|
|
27
|
+
/** Whether `value` is a usable emoji short name. */
|
|
28
|
+
export declare function isEmojiName(value: unknown): value is string;
|
|
29
|
+
/** Resolve the reaction for one message. Never throws. */
|
|
30
|
+
export declare function resolveReactionEmoji(choice: Exclude<ReactionChoice, false>, context: ReactionContext): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=reactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/channels/reactions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAa7C,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,eAAe,KACrB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAEhE,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE3D;AAED,0DAA0D;AAC1D,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EACtC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the emoji the agent reacts with when it picks up an inbound message.
|
|
3
|
+
*
|
|
4
|
+
* The reaction is a courtesy and must never fail a run or delay a reply, so a
|
|
5
|
+
* chooser that throws, hangs, or answers with something that is not an emoji
|
|
6
|
+
* short name yields {@link DEFAULT_REACTION_EMOJI} instead.
|
|
7
|
+
*/
|
|
8
|
+
import { logger } from "../runtime/log.js";
|
|
9
|
+
/** The default reaction, and the fallback whenever a chooser does not answer. */
|
|
10
|
+
export const DEFAULT_REACTION_EMOJI = "eyes";
|
|
11
|
+
/**
|
|
12
|
+
* Slack emoji short name, without the surrounding colons.
|
|
13
|
+
*
|
|
14
|
+
* Well-formedness is all that can be checked here; whether Slack knows the
|
|
15
|
+
* name is Slack's to say, and it rejects an unknown one by doing nothing.
|
|
16
|
+
*/
|
|
17
|
+
const EMOJI_NAME = /^[a-z0-9+-][a-z0-9_+-]{0,59}$/;
|
|
18
|
+
/** How long a chooser may take before the default is used instead. */
|
|
19
|
+
const CHOOSER_TIMEOUT_MS = 5_000;
|
|
20
|
+
/** Whether `value` is a usable emoji short name. */
|
|
21
|
+
export function isEmojiName(value) {
|
|
22
|
+
return typeof value === "string" && EMOJI_NAME.test(value);
|
|
23
|
+
}
|
|
24
|
+
/** Resolve the reaction for one message. Never throws. */
|
|
25
|
+
export async function resolveReactionEmoji(choice, context) {
|
|
26
|
+
if (typeof choice === "string") {
|
|
27
|
+
return isEmojiName(choice) ? choice : DEFAULT_REACTION_EMOJI;
|
|
28
|
+
}
|
|
29
|
+
if (typeof choice !== "function")
|
|
30
|
+
return DEFAULT_REACTION_EMOJI;
|
|
31
|
+
let timer;
|
|
32
|
+
try {
|
|
33
|
+
const chosen = await Promise.race([
|
|
34
|
+
Promise.resolve(choice(context)),
|
|
35
|
+
new Promise((_, reject) => {
|
|
36
|
+
timer = setTimeout(() => reject(new Error(`timed out after ${CHOOSER_TIMEOUT_MS}ms`)), CHOOSER_TIMEOUT_MS);
|
|
37
|
+
}),
|
|
38
|
+
]);
|
|
39
|
+
if (isEmojiName(chosen))
|
|
40
|
+
return chosen;
|
|
41
|
+
logger.warn("Channel reaction chooser did not answer with an emoji short name; using the default.");
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger.warn(`Channel reaction chooser failed (${logger.safeErrorLabel(error)}); using the default.`);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
if (timer !== undefined)
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
}
|
|
50
|
+
return DEFAULT_REACTION_EMOJI;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=reactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/channels/reactions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAwBjC,oDAAoD;AACpD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAsC,EACtC,OAAwB;IAExB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,sBAAsB,CAAC;IAEhE,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/B,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,kBAAkB,IAAI,CAAC,CAAC,EAClE,kBAAkB,CACnB,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACvC,MAAM,CAAC,IAAI,CACT,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,oCAAoC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,uBAAuB,CACxF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,cAAc,CAAC;QACxB,MAAM,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,EAAE,cAAc,CAAC;QACxB,MAAM,EAAE,SAAS,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACnC;AACD,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAU5C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAO7D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,cAAc,CAkBhB;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,IAAI,cAAc,CAEnC;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAelE"}
|
package/dist/channels/runtime.js
CHANGED
|
@@ -26,7 +26,13 @@ export function createRuntimeChannel(options) {
|
|
|
26
26
|
...facts,
|
|
27
27
|
async post(message) {
|
|
28
28
|
validateMessage(message);
|
|
29
|
-
return transport.post({
|
|
29
|
+
return transport.post({
|
|
30
|
+
message: immutableCopy(message),
|
|
31
|
+
target,
|
|
32
|
+
...(facts.event.type === "schedule"
|
|
33
|
+
? { newThread: facts.event.new_thread }
|
|
34
|
+
: {}),
|
|
35
|
+
});
|
|
30
36
|
},
|
|
31
37
|
});
|
|
32
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA2B3D,MAAM,UAAU,aAAa,CAAI,KAAQ;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAM,CAAC;IAC9E,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7D,CACG,CAAC;IACT,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAoB;IAC9C,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAoC;IAEpC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,KAAK;QACR,KAAK,CAAC,IAAI,CAAC,OAAuB;YAChC,eAAe,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;gBAC/B,MAAM;gBACN,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;oBACjC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAgB;IAEhB,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC3B,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChE,IACE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CACrB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CACnE,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schedule `deliverTo` auto-post after a cron-triggered agent run.
|
|
3
|
-
*
|
|
4
|
-
* Reads `configurable.mda_schedule.deliver_to` (compiled from defineSchedule)
|
|
5
|
-
* and posts the final assistant text to Slack when configured.
|
|
6
|
-
*
|
|
7
|
-
* Delivery only runs for managed cron invocations: compiled crons stamp both
|
|
8
|
-
* `metadata.mda_managed` / `metadata.mda_schedule` and
|
|
9
|
-
* `configurable.mda_schedule.name`. Ordinary HTTP invokes cannot forge that
|
|
10
|
-
* pair (and `mda_schedule` is a reserved configurable key).
|
|
11
|
-
*/
|
|
1
|
+
/** Deliver trusted schedule results through captured or explicit channel targets. */
|
|
12
2
|
import type { ManagedMiddleware } from "../runtime/managed-middleware.js";
|
|
13
3
|
import type { ChannelAddress } from "./types.js";
|
|
14
4
|
/** Override LangGraph run metadata resolution. @internal Test-only. */
|
|
@@ -50,25 +40,13 @@ export interface DeliverScheduleResultInput {
|
|
|
50
40
|
}
|
|
51
41
|
/** Return the deployment ID supplied by the managed runtime. */
|
|
52
42
|
export declare function getDeploymentId(env?: NodeJS.ProcessEnv): string | undefined;
|
|
53
|
-
/**
|
|
54
|
-
* Post schedule result text to the configured channel. Soft-fails (logs) on
|
|
55
|
-
* missing token / provider errors so cron runs are not marked failed.
|
|
56
|
-
*/
|
|
43
|
+
/** Post result text; the middleware fails the run when delivery returns "failed". */
|
|
57
44
|
export declare function deliverScheduleResult(input: DeliverScheduleResultInput): Promise<"posted" | "skipped" | "failed">;
|
|
58
45
|
/**
|
|
59
46
|
* True when this run is a managed cron fire (not a caller-forged HTTP invoke).
|
|
60
47
|
*/
|
|
61
48
|
export declare function isTrustedScheduleDeliveryRun(configurable: Record<string, unknown> | undefined): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Always-on middleware that auto-posts schedule results when `deliver_to` is set
|
|
64
|
-
* on a trusted managed cron run.
|
|
65
|
-
*
|
|
66
|
-
* Prefer explicit `runtime.configurable`, then ambient — not
|
|
67
|
-
* `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
|
|
68
|
-
* the bag lacks `langgraph_auth_user`.
|
|
69
|
-
*
|
|
70
|
-
* Production always calls this with no options; `options.deliver` is test-only.
|
|
71
|
-
*/
|
|
49
|
+
/** Post trusted schedule results and propagate delivery failures. */
|
|
72
50
|
export declare function createScheduleDeliveryMiddleware(options?: {
|
|
73
51
|
/** Override deliver implementation (tests). */
|
|
74
52
|
_deliver?: typeof deliverScheduleResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAWrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAU1E,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAMjE,uEAAuE;AACvE,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,MAAM;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GAC3E,IAAI,CAEN;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EACE;QAAE,IAAI,EAAE,uBAAuB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GACzD;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,2BAA2B,GAAG,SAAS,CAoDzC;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,2BAA2B,CAAC,IAAI,CAAC,GACpC,cAAc,CAKhB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,2BAA2B,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxB;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAC7B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAMpB;AAED,qFAAqF;AACrF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAmF1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,OAAO,CAcT;AAmBD,qEAAqE;AACrE,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACzC,GAAG,iBAAiB,CAiDpB"}
|
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schedule `deliverTo` auto-post after a cron-triggered agent run.
|
|
3
|
-
*
|
|
4
|
-
* Reads `configurable.mda_schedule.deliver_to` (compiled from defineSchedule)
|
|
5
|
-
* and posts the final assistant text to Slack when configured.
|
|
6
|
-
*
|
|
7
|
-
* Delivery only runs for managed cron invocations: compiled crons stamp both
|
|
8
|
-
* `metadata.mda_managed` / `metadata.mda_schedule` and
|
|
9
|
-
* `configurable.mda_schedule.name`. Ordinary HTTP invokes cannot forge that
|
|
10
|
-
* pair (and `mda_schedule` is a reserved configurable key).
|
|
11
|
-
*/
|
|
1
|
+
/** Deliver trusted schedule results through captured or explicit channel targets. */
|
|
12
2
|
import { randomUUID } from "node:crypto";
|
|
13
3
|
import { getConfig } from "@langchain/langgraph";
|
|
14
4
|
import { configurableFromRuntime, resolveAmbientConfigurable, } from "../runtime/identity-runtime.js";
|
|
15
5
|
import { logger } from "../runtime/log.js";
|
|
16
|
-
import { extractAssistantText } from "./assistant-text.js";
|
|
17
|
-
import { SLACK_BOT_TOKEN_ENV } from "./binding.js";
|
|
6
|
+
import { extractAssistantContent, extractAssistantText, } from "./assistant-text.js";
|
|
7
|
+
import { SLACK_BOT_TOKEN_ENV, resolveRuntimeChannel } from "./binding.js";
|
|
18
8
|
import { createSlackWebApiTransport } from "./slack/transport.js";
|
|
19
9
|
import { createTriggerClient } from "./trigger/client.js";
|
|
20
10
|
let scheduleMetadataForTests;
|
|
@@ -90,10 +80,7 @@ export function getDeploymentId(env = process.env) {
|
|
|
90
80
|
env.LANGGRAPH_CLOUD_ID?.trim() ||
|
|
91
81
|
undefined);
|
|
92
82
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Post schedule result text to the configured channel. Soft-fails (logs) on
|
|
95
|
-
* missing token / provider errors so cron runs are not marked failed.
|
|
96
|
-
*/
|
|
83
|
+
/** Post result text; the middleware fails the run when delivery returns "failed". */
|
|
97
84
|
export async function deliverScheduleResult(input) {
|
|
98
85
|
const text = input.replyText.trim();
|
|
99
86
|
if (!text || !input.deliverTo.autoPost) {
|
|
@@ -194,28 +181,17 @@ function resolveScheduleMetadata() {
|
|
|
194
181
|
}
|
|
195
182
|
return undefined;
|
|
196
183
|
}
|
|
197
|
-
/**
|
|
198
|
-
* Always-on middleware that auto-posts schedule results when `deliver_to` is set
|
|
199
|
-
* on a trusted managed cron run.
|
|
200
|
-
*
|
|
201
|
-
* Prefer explicit `runtime.configurable`, then ambient — not
|
|
202
|
-
* `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
|
|
203
|
-
* the bag lacks `langgraph_auth_user`.
|
|
204
|
-
*
|
|
205
|
-
* Production always calls this with no options; `options.deliver` is test-only.
|
|
206
|
-
*/
|
|
184
|
+
/** Post trusted schedule results and propagate delivery failures. */
|
|
207
185
|
export function createScheduleDeliveryMiddleware(options) {
|
|
208
186
|
const deliver = options?._deliver ?? deliverScheduleResult;
|
|
209
187
|
return {
|
|
210
188
|
name: "mda-schedule-delivery",
|
|
211
189
|
async afterAgent(state, runtime) {
|
|
190
|
+
// Keep schedule config even when langgraph_auth_user is absent.
|
|
212
191
|
const configurable = configurableFromRuntime(runtime) ?? resolveAmbientConfigurable();
|
|
213
192
|
if (!isTrustedScheduleDeliveryRun(configurable)) {
|
|
214
193
|
return undefined;
|
|
215
194
|
}
|
|
216
|
-
const deliverTo = readScheduleDeliverTo(configurable);
|
|
217
|
-
if (!deliverTo)
|
|
218
|
-
return undefined;
|
|
219
195
|
const messages = state &&
|
|
220
196
|
typeof state === "object" &&
|
|
221
197
|
!Array.isArray(state) &&
|
|
@@ -223,7 +199,28 @@ export function createScheduleDeliveryMiddleware(options) {
|
|
|
223
199
|
? state.messages
|
|
224
200
|
: undefined;
|
|
225
201
|
const replyText = extractAssistantText({ messages });
|
|
226
|
-
|
|
202
|
+
const savedChannel = configurable?.channel;
|
|
203
|
+
if (savedChannel != null) {
|
|
204
|
+
const channel = resolveRuntimeChannel({ channel: savedChannel }, configurable);
|
|
205
|
+
if (!channel?.post)
|
|
206
|
+
throw new Error("Scheduled channel delivery is unavailable");
|
|
207
|
+
const binding = savedChannel;
|
|
208
|
+
const content = binding.transport === "trigger_server"
|
|
209
|
+
? replyText || null
|
|
210
|
+
: extractAssistantContent({ messages });
|
|
211
|
+
if (content !== null)
|
|
212
|
+
await channel.post({
|
|
213
|
+
type: "content",
|
|
214
|
+
content: content,
|
|
215
|
+
});
|
|
216
|
+
return undefined;
|
|
217
|
+
}
|
|
218
|
+
const deliverTo = readScheduleDeliverTo(configurable);
|
|
219
|
+
if (deliverTo) {
|
|
220
|
+
const outcome = await deliver({ deliverTo, replyText });
|
|
221
|
+
if (outcome === "failed")
|
|
222
|
+
throw new Error("Scheduled channel delivery failed");
|
|
223
|
+
}
|
|
227
224
|
return undefined;
|
|
228
225
|
},
|
|
229
226
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Trigger Server-backed Slack channel authoring surface. */
|
|
2
2
|
import type { ChannelManifest } from "../manifest.js";
|
|
3
|
+
import { type ReactionChoice } from "../reactions.js";
|
|
3
4
|
import { type Channel } from "../../runtime/channel.js";
|
|
4
5
|
export type { ChannelManifest } from "../manifest.js";
|
|
5
6
|
export interface SlackChannelConfig {
|
|
@@ -12,6 +13,12 @@ export interface SlackChannelConfig {
|
|
|
12
13
|
backgroundColor?: string;
|
|
13
14
|
triggerOnAllMessages?: boolean;
|
|
14
15
|
allowBotTriggers?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Emoji to react with when a message starts a run; `eyes` by default, and
|
|
18
|
+
* `true` keeps it. Pass `false` for none, another Slack emoji short name, or a
|
|
19
|
+
* function that picks one per message.
|
|
20
|
+
*/
|
|
21
|
+
reactions?: ReactionChoice;
|
|
15
22
|
}
|
|
16
23
|
export interface TriggerSlackAppConfig {
|
|
17
24
|
name?: string;
|
|
@@ -23,6 +30,7 @@ export interface RequiredTriggerSlackChannelConfig {
|
|
|
23
30
|
app: TriggerSlackAppConfig;
|
|
24
31
|
triggerOnAllMessages: boolean;
|
|
25
32
|
allowBotTriggers: boolean;
|
|
33
|
+
reactions?: ReactionChoice;
|
|
26
34
|
}
|
|
27
35
|
/** Branded Trigger-backed Slack declaration. */
|
|
28
36
|
export type SlackChannel = Channel & RequiredTriggerSlackChannelConfig & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,EAAE,qBAAqB,CAAC;IAC3B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,OAAO,GAChC,iCAAiC,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AA2DJ,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,MAAM,GAAE,kBAAuB,GAAG,YAAY,CAmC1E;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,iCAAiC,GAAG,YAAY,GAC3D,eAAe,CA2BjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Trigger Server-backed Slack channel authoring surface. */
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { DEFAULT_REACTION_EMOJI, isEmojiName, } from "../reactions.js";
|
|
3
4
|
import { handleTriggerChannelEventRequest } from "../trigger/http.js";
|
|
4
5
|
import { CHANNEL_BRAND, } from "../../runtime/channel.js";
|
|
5
6
|
const slackChannelConfig = z
|
|
@@ -34,6 +35,14 @@ const slackChannelConfig = z
|
|
|
34
35
|
.optional(),
|
|
35
36
|
triggerOnAllMessages: z.boolean().default(false),
|
|
36
37
|
allowBotTriggers: z.boolean().default(false),
|
|
38
|
+
reactions: z
|
|
39
|
+
.custom((value) => typeof value === "boolean" ||
|
|
40
|
+
typeof value === "function" ||
|
|
41
|
+
isEmojiName(value), {
|
|
42
|
+
message: "Must be a boolean, a Slack emoji short name, or a function returning one",
|
|
43
|
+
})
|
|
44
|
+
.transform((value) => (value === true ? DEFAULT_REACTION_EMOJI : value))
|
|
45
|
+
.default(DEFAULT_REACTION_EMOJI),
|
|
37
46
|
})
|
|
38
47
|
.strict();
|
|
39
48
|
function hide(target, key, value) {
|
|
@@ -68,6 +77,7 @@ export function slackChannel(config = {}) {
|
|
|
68
77
|
rawBody: ctx.rawBody,
|
|
69
78
|
sourceProvider: "slack",
|
|
70
79
|
channelName: ctx.name,
|
|
80
|
+
reactions: self.reactions,
|
|
71
81
|
}));
|
|
72
82
|
hide(self, "requirements", (name) => toSlackRequirements(name, self));
|
|
73
83
|
return self;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EACL,aAAa,GAGd,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/slack/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,sBAAsB,EACtB,WAAW,GAEZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EACL,aAAa,GAGd,MAAM,0BAA0B,CAAC;AA2ClC,MAAM,kBAAkB,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;QAC1C,OAAO,EAAE,oCAAoC;KAC9C,CAAC;SACD,KAAK,CAAC,qBAAqB,EAAE;QAC5B,OAAO,EACL,8EAA8E;KACjF,CAAC;SACD,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACtB,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAC1D;SACA,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE;QAC3C,OAAO,EAAE,qCAAqC;KAC/C,CAAC;SACD,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,KAAK,CAAC,mBAAmB,EAAE;QAC1B,OAAO,EAAE,6BAA6B;KACvC,CAAC;SACD,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACzC,QAAQ,EAAE;IACb,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAChD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5C,SAAS,EAAE,CAAC;SACT,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,OAAO,KAAK,KAAK,SAAS;QAC1B,OAAO,KAAK,KAAK,UAAU;QAC3B,WAAW,CAAC,KAAK,CAAC,EACpB;QACE,OAAO,EACL,0EAA0E;KAC7E,CACF;SACA,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACvE,OAAO,CAAC,sBAAsB,CAAC;CACnC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,SAAS,IAAI,CAAC,MAAc,EAAE,GAAoB,EAAE,KAAc;IAChE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,MAAM,GAAuB,EAAE;IAC1D,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5D,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7E,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,OAAgB;QACtB,SAAS,EAAE,gBAAyB;QACpC,GAAG,EAAE;YACH,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;SAC9D;QACD,GAAG,OAAO;KACK,CAAC;IAClB,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAyB,EAAE,EAAE,CACjD,gCAAgC,CAAC,GAAG,CAAC,OAAO,EAAE;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,GAAG,CAAC,IAAI;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CACH,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,UAA4D;IAE5D,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,gBAAgB;QAC3B,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,EAAE;QACvB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE;YACd,GAAG,EAAE;gBACH,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;oBAC1C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAChD,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS;oBAC9C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;aACzD;YACD,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;YACrD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;SAC9C;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAGvB,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,kDAAkD;AAClD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AAGvB,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,kDAAkD;AAClD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,uBAAuB,CAgDzB"}
|
|
@@ -35,7 +35,7 @@ export function createSlackWebApiTransport(options) {
|
|
|
35
35
|
applyNative(body, native);
|
|
36
36
|
}
|
|
37
37
|
body.channel = target.conversationId;
|
|
38
|
-
if (typeof target.threadId === "string")
|
|
38
|
+
if (!input.newThread && typeof target.threadId === "string")
|
|
39
39
|
body.thread_ts = target.threadId;
|
|
40
40
|
const result = await slackApi(token, "chat.postMessage", body, {
|
|
41
41
|
apiBase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/channels/slack/transport.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,eAAe,GAEhB,MAAM,eAAe,CAAC;AAGvB,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAUnD,kDAAkD;AAClD,MAAM,UAAU,0BAA0B,CACxC,OAAoC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC/B,SAAS,CACV,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAEvC,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAGpB,CAAC;YACF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;gBACtD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;gBAClC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAC3C,CAAC;gBACJ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,WAAW,CAAC,IAAI,EAAE,MAAiC,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;YACrC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/channels/slack/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChannelBinding } from "../binding.js";
|
|
2
|
+
import { type ReactionChoice } from "../reactions.js";
|
|
2
3
|
import { type ObservedIngressRun, type PendingInterrupt } from "./ingress.js";
|
|
3
4
|
import type { StartedIngressRun } from "../../ingress/runs.js";
|
|
4
5
|
import { type TriggerClientLike } from "./client.js";
|
|
@@ -50,6 +51,8 @@ export interface TriggerChannelHttpOptions {
|
|
|
50
51
|
threadInterrupts?: ThreadInterrupts;
|
|
51
52
|
observeAgent?: ObserveAgent;
|
|
52
53
|
triggerClient?: TriggerClientLike;
|
|
54
|
+
/** How to react to the message that starts a run. Defaults to `eyes`. */
|
|
55
|
+
reactions?: ReactionChoice;
|
|
53
56
|
/** Override identity-context JWKS verify (unit tests). */
|
|
54
57
|
identityContext?: IdentityContextVerifyOptions;
|
|
55
58
|
}
|