managed-deepagents 0.4.0-dev.72 → 0.4.0
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 +2 -1
- package/dist/channels/binding.d.ts +3 -5
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +3 -9
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/collect.d.ts +23 -0
- package/dist/channels/collect.d.ts.map +1 -0
- package/dist/channels/collect.js +46 -0
- package/dist/channels/collect.js.map +1 -0
- package/dist/channels/github/adapter-core.d.ts +6 -0
- package/dist/channels/github/adapter-core.d.ts.map +1 -0
- package/dist/channels/github/adapter-core.js +27 -0
- package/dist/channels/github/adapter-core.js.map +1 -0
- package/dist/channels/github/adapter.d.ts +16 -0
- package/dist/channels/github/adapter.d.ts.map +1 -0
- package/dist/channels/github/adapter.js +52 -0
- package/dist/channels/github/adapter.js.map +1 -0
- package/dist/channels/github/define.d.ts +198 -0
- package/dist/channels/github/define.d.ts.map +1 -0
- package/dist/channels/github/define.js +166 -0
- package/dist/channels/github/define.js.map +1 -0
- package/dist/channels/github/http.d.ts +25 -0
- package/dist/channels/github/http.d.ts.map +1 -0
- package/dist/channels/github/http.js +147 -0
- package/dist/channels/github/http.js.map +1 -0
- package/dist/channels/github/index.d.ts +12 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +10 -0
- package/dist/channels/github/index.js.map +1 -0
- package/dist/channels/github/normalize.d.ts +32 -0
- package/dist/channels/github/normalize.d.ts.map +1 -0
- package/dist/channels/github/normalize.js +152 -0
- package/dist/channels/github/normalize.js.map +1 -0
- package/dist/channels/github/source-thread.d.ts +24 -0
- package/dist/channels/github/source-thread.d.ts.map +1 -0
- package/dist/channels/github/source-thread.js +54 -0
- package/dist/channels/github/source-thread.js.map +1 -0
- package/dist/channels/github/transport.d.ts +19 -0
- package/dist/channels/github/transport.d.ts.map +1 -0
- package/dist/channels/github/transport.js +92 -0
- package/dist/channels/github/transport.js.map +1 -0
- package/dist/channels/index.d.ts +10 -3
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +5 -2
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +34 -0
- package/dist/channels/manifest.d.ts.map +1 -0
- package/dist/channels/manifest.js +8 -0
- package/dist/channels/manifest.js.map +1 -0
- package/dist/channels/plugin.d.ts +61 -0
- package/dist/channels/plugin.d.ts.map +1 -0
- package/dist/channels/plugin.js +80 -0
- package/dist/channels/plugin.js.map +1 -0
- package/dist/channels/registry-store.d.ts +12 -0
- package/dist/channels/registry-store.d.ts.map +1 -0
- package/dist/channels/registry-store.js +18 -0
- package/dist/channels/registry-store.js.map +1 -0
- package/dist/channels/registry-types.d.ts +32 -0
- package/dist/channels/registry-types.d.ts.map +1 -0
- package/dist/channels/registry-types.js +5 -0
- package/dist/channels/registry-types.js.map +1 -0
- package/dist/channels/registry.d.ts +14 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +25 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/runtime.d.ts +2 -4
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +0 -4
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +4 -0
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +6 -5
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/adapter-core.d.ts +6 -0
- package/dist/channels/slack/adapter-core.d.ts.map +1 -0
- package/dist/channels/slack/adapter-core.js +24 -0
- package/dist/channels/slack/adapter-core.js.map +1 -0
- package/dist/channels/slack/adapter.d.ts +10 -0
- package/dist/channels/slack/adapter.d.ts.map +1 -0
- package/dist/channels/slack/adapter.js +22 -0
- package/dist/channels/slack/adapter.js.map +1 -0
- package/dist/channels/slack/define.d.ts +7 -20
- package/dist/channels/slack/define.d.ts.map +1 -1
- package/dist/channels/slack/define.js +29 -10
- package/dist/channels/slack/define.js.map +1 -1
- package/dist/channels/slack/http.d.ts +12 -1
- package/dist/channels/slack/http.d.ts.map +1 -1
- package/dist/channels/slack/http.js +103 -47
- package/dist/channels/slack/http.js.map +1 -1
- package/dist/channels/store.d.ts +4 -4
- package/dist/channels/store.d.ts.map +1 -1
- package/dist/channels/store.js.map +1 -1
- package/dist/channels/types.d.ts +4 -4
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js.map +1 -1
- package/dist/connectors/github/index.d.ts +80 -0
- package/dist/connectors/github/index.d.ts.map +1 -0
- package/dist/connectors/github/index.js +118 -0
- package/dist/connectors/github/index.js.map +1 -0
- package/dist/connectors/github/sandbox.d.ts +54 -0
- package/dist/connectors/github/sandbox.d.ts.map +1 -0
- package/dist/connectors/github/sandbox.js +519 -0
- package/dist/connectors/github/sandbox.js.map +1 -0
- package/dist/connectors/{langsmith.d.ts → langsmith/index.d.ts} +3 -3
- package/dist/connectors/langsmith/index.d.ts.map +1 -0
- package/dist/connectors/{langsmith.js → langsmith/index.js} +4 -4
- package/dist/connectors/langsmith/index.js.map +1 -0
- package/dist/{runtime/langsmith-connector.d.ts → connectors/langsmith/routes.d.ts} +4 -4
- package/dist/connectors/langsmith/routes.d.ts.map +1 -0
- package/dist/{runtime/langsmith-connector.js → connectors/langsmith/routes.js} +12 -6
- package/dist/connectors/langsmith/routes.js.map +1 -0
- package/dist/{connectors.d.ts → connectors/mcp/index.d.ts} +2 -2
- package/dist/connectors/mcp/index.d.ts.map +1 -0
- package/dist/{connectors.js → connectors/mcp/index.js} +3 -3
- package/dist/connectors/mcp/index.js.map +1 -0
- package/dist/{runtime/connectors-manager.d.ts → connectors/mcp/load.d.ts} +2 -2
- package/dist/connectors/mcp/load.d.ts.map +1 -0
- package/dist/{runtime/connectors-manager.js → connectors/mcp/load.js} +1 -1
- package/dist/connectors/mcp/load.js.map +1 -0
- package/dist/define-deep-agent.d.ts +1 -0
- 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/connect-paths.d.ts +8 -0
- package/dist/identity/connect-paths.d.ts.map +1 -0
- package/dist/identity/connect-paths.js +11 -0
- package/dist/identity/connect-paths.js.map +1 -0
- package/dist/identity/connect-provider-types.d.ts +68 -0
- package/dist/identity/connect-provider-types.d.ts.map +1 -0
- package/dist/identity/connect-provider-types.js +8 -0
- package/dist/identity/connect-provider-types.js.map +1 -0
- package/dist/identity/connect-provider.d.ts +30 -0
- package/dist/identity/connect-provider.d.ts.map +1 -0
- package/dist/identity/connect-provider.js +122 -0
- package/dist/identity/connect-provider.js.map +1 -0
- package/dist/identity/github/connect-http.d.ts +33 -0
- package/dist/identity/github/connect-http.d.ts.map +1 -0
- package/dist/identity/github/connect-http.js +111 -0
- package/dist/identity/github/connect-http.js.map +1 -0
- package/dist/identity/github/credentials-store.d.ts +76 -0
- package/dist/identity/github/credentials-store.d.ts.map +1 -0
- package/dist/identity/github/credentials-store.js +257 -0
- package/dist/identity/github/credentials-store.js.map +1 -0
- package/dist/identity/github/credentials.d.ts +82 -0
- package/dist/identity/github/credentials.d.ts.map +1 -0
- package/dist/identity/github/credentials.js +171 -0
- package/dist/identity/github/credentials.js.map +1 -0
- package/dist/identity/github/index.d.ts +10 -0
- package/dist/identity/github/index.d.ts.map +1 -0
- package/dist/identity/github/index.js +9 -0
- package/dist/identity/github/index.js.map +1 -0
- package/dist/identity/github/oauth.d.ts +49 -0
- package/dist/identity/github/oauth.d.ts.map +1 -0
- package/dist/identity/github/oauth.js +143 -0
- package/dist/identity/github/oauth.js.map +1 -0
- package/dist/identity/index.d.ts +2 -3
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +30 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/loopback.d.ts +8 -0
- package/dist/identity/loopback.d.ts.map +1 -0
- package/dist/identity/loopback.js +18 -0
- package/dist/identity/loopback.js.map +1 -0
- package/dist/identity/slack/connect-http.d.ts +33 -0
- package/dist/identity/slack/connect-http.d.ts.map +1 -0
- package/dist/identity/slack/connect-http.js +105 -0
- package/dist/identity/slack/connect-http.js.map +1 -0
- package/dist/identity/slack/index.d.ts +9 -0
- package/dist/identity/slack/index.d.ts.map +1 -0
- package/dist/identity/slack/index.js +8 -0
- package/dist/identity/slack/index.js.map +1 -0
- package/dist/identity/slack/links.d.ts.map +1 -0
- package/dist/identity/{links.js → slack/links.js} +2 -12
- package/dist/identity/slack/links.js.map +1 -0
- package/dist/identity/{slack-oauth.d.ts → slack/oauth.d.ts} +1 -1
- package/dist/identity/slack/oauth.d.ts.map +1 -0
- package/dist/identity/{slack-oauth.js → slack/oauth.js} +1 -1
- package/dist/identity/slack/oauth.js.map +1 -0
- package/dist/identity/types.d.ts +12 -1
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime/auth.d.ts +6 -0
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +19 -8
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +52 -0
- package/dist/runtime/backend.d.ts.map +1 -0
- package/dist/runtime/backend.js +165 -0
- package/dist/runtime/backend.js.map +1 -0
- package/dist/runtime/connector.d.ts +43 -12
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +25 -10
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.js +1 -1
- package/dist/runtime/identity-http.d.ts +9 -3
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +24 -34
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +9 -28
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +30 -65
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +11 -5
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +27 -69
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +3 -6
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +3 -4
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +15 -1
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +31 -7
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/paths.d.ts +0 -5
- package/dist/runtime/memory/paths.d.ts.map +1 -1
- package/dist/runtime/memory/paths.js +0 -24
- package/dist/runtime/memory/paths.js.map +1 -1
- package/dist/runtime/memory/seed.d.ts +0 -16
- package/dist/runtime/memory/seed.d.ts.map +1 -1
- package/dist/runtime/memory/seed.js +0 -43
- package/dist/runtime/memory/seed.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +20 -2
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +102 -9
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/types.d.ts +0 -6
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +11 -7
- package/dist/connectors/langsmith.d.ts.map +0 -1
- package/dist/connectors/langsmith.js.map +0 -1
- package/dist/connectors.d.ts.map +0 -1
- package/dist/connectors.js.map +0 -1
- package/dist/identity/links.d.ts.map +0 -1
- package/dist/identity/links.js.map +0 -1
- package/dist/identity/slack-connect-http.d.ts +0 -21
- package/dist/identity/slack-connect-http.d.ts.map +0 -1
- package/dist/identity/slack-connect-http.js +0 -129
- package/dist/identity/slack-connect-http.js.map +0 -1
- package/dist/identity/slack-oauth.d.ts.map +0 -1
- package/dist/identity/slack-oauth.js.map +0 -1
- package/dist/runtime/connectors-manager.d.ts.map +0 -1
- package/dist/runtime/connectors-manager.js.map +0 -1
- package/dist/runtime/langsmith-connector.d.ts.map +0 -1
- package/dist/runtime/langsmith-connector.js.map +0 -1
- /package/dist/identity/{links.d.ts → slack/links.d.ts} +0 -0
package/dist/channels/runtime.js
CHANGED
|
@@ -69,8 +69,4 @@ function validateMessage(message, provider) {
|
|
|
69
69
|
throw new ChannelError("channel_provider_rejected", `native payload provider "${message.native.provider}" does not match channel provider "${provider}"`);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
/** True when an explicit `post(..., { final: true })` already delivered the reply. */
|
|
73
|
-
export function wasFinalPosted(channel) {
|
|
74
|
-
return Boolean(channel.finalPosted);
|
|
75
|
-
}
|
|
76
72
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/channels/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,10 @@ export declare function isTrustedScheduleDeliveryRun(configurable: Record<string
|
|
|
60
60
|
/**
|
|
61
61
|
* Always-on middleware that auto-posts schedule results when `deliver_to` is set
|
|
62
62
|
* on a trusted managed cron run.
|
|
63
|
+
*
|
|
64
|
+
* Prefer explicit `runtime.configurable`, then ambient — not
|
|
65
|
+
* `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
|
|
66
|
+
* the bag lacks `langgraph_auth_user`.
|
|
63
67
|
*/
|
|
64
68
|
export declare function createScheduleDeliveryMiddleware(options?: {
|
|
65
69
|
deliver?: typeof deliverScheduleResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"schedule-delivery.d.ts","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAK1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,6DAA6D;AAC7D,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;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAgD1C;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,OAAO,CAcT;AAmBD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,OAAO,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACxC,GAAG,iBAAiB,CAyBpB"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* pair (and `mda_schedule` is a reserved configurable key).
|
|
11
11
|
*/
|
|
12
12
|
import { getConfig } from "@langchain/langgraph";
|
|
13
|
+
import { configurableFromRuntime, resolveAmbientConfigurable, } from "../runtime/identity-runtime.js";
|
|
13
14
|
import { extractAssistantText } from "./assistant-text.js";
|
|
14
15
|
import { SLACK_BOT_TOKEN_ENV } from "./binding.js";
|
|
15
16
|
import { createSlackWebApiTransport } from "./slack/transport.js";
|
|
@@ -161,17 +162,17 @@ function resolveScheduleMetadata() {
|
|
|
161
162
|
/**
|
|
162
163
|
* Always-on middleware that auto-posts schedule results when `deliver_to` is set
|
|
163
164
|
* on a trusted managed cron run.
|
|
165
|
+
*
|
|
166
|
+
* Prefer explicit `runtime.configurable`, then ambient — not
|
|
167
|
+
* `resolveRuntimeConfigurable`, which can discard a present `mda_schedule` when
|
|
168
|
+
* the bag lacks `langgraph_auth_user`.
|
|
164
169
|
*/
|
|
165
170
|
export function createScheduleDeliveryMiddleware(options) {
|
|
166
171
|
const deliver = options?.deliver ?? deliverScheduleResult;
|
|
167
172
|
return {
|
|
168
173
|
name: "mda-schedule-delivery",
|
|
169
174
|
async afterAgent(state, runtime) {
|
|
170
|
-
const configurable = runtime
|
|
171
|
-
typeof runtime.configurable === "object" &&
|
|
172
|
-
!Array.isArray(runtime.configurable)
|
|
173
|
-
? runtime.configurable
|
|
174
|
-
: undefined;
|
|
175
|
+
const configurable = configurableFromRuntime(runtime) ?? resolveAmbientConfigurable();
|
|
175
176
|
if (!isTrustedScheduleDeliveryRun(configurable)) {
|
|
176
177
|
return undefined;
|
|
177
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"schedule-delivery.js","sourceRoot":"","sources":["../../src/channels/schedule-delivery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack adapter object without imports from `define.ts` (avoids load cycles).
|
|
3
|
+
*/
|
|
4
|
+
import type { ChannelProviderAdapter } from "../registry-types.js";
|
|
5
|
+
export declare const slackChannelAdapter: ChannelProviderAdapter;
|
|
6
|
+
//# sourceMappingURL=adapter-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-core.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/adapter-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAInE,eAAO,MAAM,mBAAmB,EAAE,sBAkBjC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack adapter object without imports from `define.ts` (avoids load cycles).
|
|
3
|
+
*/
|
|
4
|
+
import { handleSlackEventsRequest } from "./http.js";
|
|
5
|
+
import { createSlackWebApiTransport } from "./transport.js";
|
|
6
|
+
export const slackChannelAdapter = {
|
|
7
|
+
provider: "slack",
|
|
8
|
+
async handleEventsRequest(request, ctx) {
|
|
9
|
+
const { slackConfigFromManifest } = await import("./adapter.js");
|
|
10
|
+
const config = slackConfigFromManifest(ctx.manifest);
|
|
11
|
+
return handleSlackEventsRequest(request, {
|
|
12
|
+
name: ctx.name,
|
|
13
|
+
config,
|
|
14
|
+
rawBody: ctx.rawBody,
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
createTransport(env) {
|
|
18
|
+
const token = env.SLACK_BOT_TOKEN;
|
|
19
|
+
if (!token)
|
|
20
|
+
return undefined;
|
|
21
|
+
return createSlackWebApiTransport({ botToken: token });
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=adapter-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-core.js","sourceRoot":"","sources":["../../../src/channels/slack/adapter-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,QAAQ,EAAE,OAAO;IAEjB,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG;QACpC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,wBAAwB,CAAC,OAAO,EAAE;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM;YACN,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO,0BAA0B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack channel provider adapter — registry entry for Events + transport.
|
|
3
|
+
*/
|
|
4
|
+
import type { ChannelManifest } from "../manifest.js";
|
|
5
|
+
import type { RequiredSlackChannelConfig } from "./define.js";
|
|
6
|
+
export { SLACK_CHANNEL_REQUIRED_ENV } from "./define.js";
|
|
7
|
+
export { slackChannelAdapter } from "./adapter-core.js";
|
|
8
|
+
/** Rebuild Slack runtime config from a compiled envelope manifest. */
|
|
9
|
+
export declare function slackConfigFromManifest(manifest: ChannelManifest): RequiredSlackChannelConfig;
|
|
10
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EACV,0BAA0B,EAI3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,0BAA0B,CAiB5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack channel provider adapter — registry entry for Events + transport.
|
|
3
|
+
*/
|
|
4
|
+
export { SLACK_CHANNEL_REQUIRED_ENV } from "./define.js";
|
|
5
|
+
export { slackChannelAdapter } from "./adapter-core.js";
|
|
6
|
+
/** Rebuild Slack runtime config from a compiled envelope manifest. */
|
|
7
|
+
export function slackConfigFromManifest(manifest) {
|
|
8
|
+
const cfg = manifest.providerConfig;
|
|
9
|
+
return {
|
|
10
|
+
on: cfg.triggers ?? [],
|
|
11
|
+
autoReply: manifest.autoReply,
|
|
12
|
+
mentionBehavior: cfg.mentionBehavior ?? "strip",
|
|
13
|
+
filters: cfg.filters ?? {
|
|
14
|
+
allowSharedConversations: false,
|
|
15
|
+
},
|
|
16
|
+
conversation: cfg.conversation ?? {
|
|
17
|
+
appMention: "thread",
|
|
18
|
+
directMessage: "conversation",
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/channels/slack/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,sEAAsE;AACtE,MAAM,UAAU,uBAAuB,CACrC,QAAyB;IAEzB,MAAM,GAAG,GAAG,QAAQ,CAAC,cAA4B,CAAC;IAClD,OAAO;QACL,EAAE,EAAG,GAAG,CAAC,QAA2C,IAAI,EAAE;QAC1D,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAG,GAAG,CAAC,eAAwC,IAAI,OAAO;QACzE,OAAO,EAAG,GAAG,CAAC,OAAiD,IAAI;YACjE,wBAAwB,EAAE,KAAK;SAChC;QACD,YAAY,EAAG,GAAG,CAAC,YAGjB,IAAI;YACJ,UAAU,EAAE,QAAQ;YACpB,aAAa,EAAE,cAAc;SAC9B;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
* Returns a validated declaration. Provider HTTP, OAuth, and Web API clients
|
|
5
5
|
* remain managed implementation details.
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { ChannelManifest } from "../manifest.js";
|
|
8
|
+
import { type ChannelDefinition } from "../plugin.js";
|
|
9
|
+
export type { ChannelManifest } from "../manifest.js";
|
|
10
|
+
/** Env vars deploy must ensure for any Slack channel manifest. */
|
|
11
|
+
export declare const SLACK_CHANNEL_REQUIRED_ENV: readonly ["SLACK_SIGNING_SECRET", "SLACK_BOT_TOKEN"];
|
|
8
12
|
/**
|
|
9
13
|
* Managed Slack triggers.
|
|
10
14
|
* Later phases may enable `slash_command` / `interaction`.
|
|
@@ -40,11 +44,7 @@ export interface SlackChannelConfig {
|
|
|
40
44
|
conversation?: SlackConversationPolicy;
|
|
41
45
|
}
|
|
42
46
|
/** Object exported from `channels/*.ts`. */
|
|
43
|
-
export
|
|
44
|
-
readonly kind: "channel";
|
|
45
|
-
readonly provider: ChannelProvider;
|
|
46
|
-
readonly config: RequiredSlackChannelConfig;
|
|
47
|
-
}
|
|
47
|
+
export type SlackChannelDefinition = ChannelDefinition<RequiredSlackChannelConfig>;
|
|
48
48
|
/** Normalized config with defaults applied. */
|
|
49
49
|
export interface RequiredSlackChannelConfig {
|
|
50
50
|
on: readonly SlackChannelTrigger[];
|
|
@@ -62,17 +62,6 @@ export interface RequiredSlackChannelConfig {
|
|
|
62
62
|
directMessage: SlackConversationMapping;
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
/** Provider-neutral channel manifest emitted at compile/deploy time. */
|
|
66
|
-
export interface ChannelManifest {
|
|
67
|
-
name: string;
|
|
68
|
-
provider: ChannelProvider;
|
|
69
|
-
triggers: readonly SlackChannelTrigger[];
|
|
70
|
-
autoReply: boolean;
|
|
71
|
-
mentionBehavior: SlackMentionBehavior;
|
|
72
|
-
filters: RequiredSlackChannelConfig["filters"];
|
|
73
|
-
conversation: RequiredSlackChannelConfig["conversation"];
|
|
74
|
-
requiredScopes: readonly string[];
|
|
75
|
-
}
|
|
76
65
|
/**
|
|
77
66
|
* Declare a managed Slack channel. Files under `channels/*.ts` export a named
|
|
78
67
|
* `channel` created with this helper.
|
|
@@ -81,7 +70,5 @@ export declare function defineSlackChannel(config: SlackChannelConfig): SlackCha
|
|
|
81
70
|
/** Derive Slack OAuth scopes from enabled channel triggers. */
|
|
82
71
|
export declare function requiredSlackScopes(config: Pick<RequiredSlackChannelConfig, "on">): string[];
|
|
83
72
|
/** Build the compile/deploy channel manifest for a file-derived name. */
|
|
84
|
-
export declare function toChannelManifest(name: string, definition: SlackChannelDefinition): ChannelManifest;
|
|
85
|
-
/** @internal — re-export for manifest JSON typing. */
|
|
86
|
-
export type SlackChannelJsonValue = JsonValue;
|
|
73
|
+
export declare function toChannelManifest(name: string, definition: SlackChannelDefinition | RequiredSlackChannelConfig): ChannelManifest;
|
|
87
74
|
//# sourceMappingURL=define.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGrE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,kEAAkE;AAClE,eAAO,MAAM,0BAA0B,YACrC,sBAAsB,oBAEd,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,kEAAkE;IAClE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,wBAAwB,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnC,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uBAAuB;IACvB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACxC;AAED,4CAA4C;AAC5C,MAAM,MAAM,sBAAsB,GAChC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,oBAAoB,CAAC;IACtC,OAAO,EAAE;QACP,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAClC,wBAAwB,EAAE,OAAO,CAAC;KACnC,CAAC;IACF,YAAY,EAAE;QACZ,UAAU,EAAE,wBAAwB,CAAC;QACrC,aAAa,EAAE,wBAAwB,CAAC;KACzC,CAAC;CACH;AAUD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,sBAAsB,CAexB;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,GAC7C,MAAM,EAAE,CAeV;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,sBAAsB,GAAG,0BAA0B,GAC9D,eAAe,CAmBjB"}
|
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* Returns a validated declaration. Provider HTTP, OAuth, and Web API clients
|
|
5
5
|
* remain managed implementation details.
|
|
6
6
|
*/
|
|
7
|
+
import { SLACK_BOT_TOKEN_ENV } from "../binding.js";
|
|
8
|
+
import { defineChannel } from "../plugin.js";
|
|
9
|
+
import { slackChannelAdapter } from "./adapter-core.js";
|
|
10
|
+
/** Env vars deploy must ensure for any Slack channel manifest. */
|
|
11
|
+
export const SLACK_CHANNEL_REQUIRED_ENV = [
|
|
12
|
+
"SLACK_SIGNING_SECRET",
|
|
13
|
+
SLACK_BOT_TOKEN_ENV,
|
|
14
|
+
];
|
|
7
15
|
const SUPPORTED_TRIGGERS = new Set([
|
|
8
16
|
"app_mention",
|
|
9
17
|
"direct_message",
|
|
@@ -17,11 +25,15 @@ const MAPPINGS = new Set(["thread", "conversation", "message"]);
|
|
|
17
25
|
*/
|
|
18
26
|
export function defineSlackChannel(config) {
|
|
19
27
|
const normalized = validateAndNormalize(config);
|
|
20
|
-
return {
|
|
21
|
-
kind: "channel",
|
|
28
|
+
return defineChannel({
|
|
22
29
|
provider: "slack",
|
|
30
|
+
adapter: slackChannelAdapter,
|
|
23
31
|
config: normalized,
|
|
24
|
-
|
|
32
|
+
toManifest: (name) => {
|
|
33
|
+
const { name: _n, provider: _p, ...body } = toChannelManifest(name, normalized);
|
|
34
|
+
return body;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
25
37
|
}
|
|
26
38
|
/** Derive Slack OAuth scopes from enabled channel triggers. */
|
|
27
39
|
export function requiredSlackScopes(config) {
|
|
@@ -42,15 +54,22 @@ export function requiredSlackScopes(config) {
|
|
|
42
54
|
}
|
|
43
55
|
/** Build the compile/deploy channel manifest for a file-derived name. */
|
|
44
56
|
export function toChannelManifest(name, definition) {
|
|
57
|
+
const config = "config" in definition && definition.config
|
|
58
|
+
? definition.config
|
|
59
|
+
: definition;
|
|
60
|
+
const scopes = requiredSlackScopes(config);
|
|
45
61
|
return {
|
|
46
62
|
name,
|
|
47
|
-
provider:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
63
|
+
provider: "slack",
|
|
64
|
+
autoReply: config.autoReply,
|
|
65
|
+
requiredPermissions: scopes,
|
|
66
|
+
requiredEnv: [...SLACK_CHANNEL_REQUIRED_ENV],
|
|
67
|
+
providerConfig: {
|
|
68
|
+
triggers: config.on,
|
|
69
|
+
mentionBehavior: config.mentionBehavior,
|
|
70
|
+
filters: config.filters,
|
|
71
|
+
conversation: config.conversation,
|
|
72
|
+
},
|
|
54
73
|
};
|
|
55
74
|
}
|
|
56
75
|
function validateAndNormalize(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/channels/slack/define.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { InMemoryChannelStore } from "../store.js";
|
|
|
9
9
|
import { type ChannelBinding } from "../binding.js";
|
|
10
10
|
import type { RequiredSlackChannelConfig } from "./define.js";
|
|
11
11
|
import { type SlackInstallationContext } from "./normalize.js";
|
|
12
|
-
import { type IdentityLinkStore } from "../../identity/links.js";
|
|
12
|
+
import { type IdentityLinkStore } from "../../identity/slack/links.js";
|
|
13
13
|
/** Env vars for Phase 1 single-workspace Slack install. */
|
|
14
14
|
export declare const SLACK_SIGNING_SECRET_ENV = "SLACK_SIGNING_SECRET";
|
|
15
15
|
export declare const SLACK_API_APP_ID_ENV = "SLACK_API_APP_ID";
|
|
@@ -63,6 +63,8 @@ export interface InvokeChannelAgentInput {
|
|
|
63
63
|
binding: ChannelBinding;
|
|
64
64
|
text: string;
|
|
65
65
|
assistantId: string;
|
|
66
|
+
/** Trusted source provider stamped on loopback invoke. @default "slack" */
|
|
67
|
+
sourceProvider?: ChannelBinding["provider"];
|
|
66
68
|
}
|
|
67
69
|
export interface InvokeChannelAgentResult {
|
|
68
70
|
replyText: string;
|
|
@@ -83,4 +85,13 @@ export declare function channelSourceThreadExists(input: SourceThreadExistsInput
|
|
|
83
85
|
export declare function invokeChannelAgent(input: InvokeChannelAgentInput): Promise<InvokeChannelAgentResult>;
|
|
84
86
|
/** Deterministic LangGraph thread id from the Slack source-thread key. */
|
|
85
87
|
export declare function stableThreadId(sourceThreadKey: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Build a short user-facing Slack failure message.
|
|
90
|
+
*
|
|
91
|
+
* Opaque by default; only allowlisted {@link ChannelError} codes get a fixed
|
|
92
|
+
* safe string. Raw exception text is never posted to the channel.
|
|
93
|
+
*
|
|
94
|
+
* Exported for unit tests.
|
|
95
|
+
*/
|
|
96
|
+
export declare function formatSlackFailureReply(error: unknown): string;
|
|
86
97
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAevC,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AACjD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAiBzD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC,8BAA8B;IAC9B,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACxC,oDAAoD;IACpD,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA2QnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAgDnC;AA4BD,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAS9D;AA8ID;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK9D"}
|
|
@@ -9,14 +9,15 @@ import { createHash } from "node:crypto";
|
|
|
9
9
|
import { Client } from "@langchain/langgraph-sdk";
|
|
10
10
|
import { ChannelError } from "../errors.js";
|
|
11
11
|
import { InMemoryChannelStore } from "../store.js";
|
|
12
|
-
import { CHANNEL_BINDING_KEY, clearFinalPosted, wasDeliveryFinalPosted, } from "../binding.js";
|
|
12
|
+
import { CHANNEL_BINDING_KEY, clearFinalPosted, markFinalPosted, wasDeliveryFinalPosted, } from "../binding.js";
|
|
13
13
|
import { extractAssistantText } from "../assistant-text.js";
|
|
14
14
|
import { createRuntimeChannel } from "../runtime.js";
|
|
15
15
|
import { normalizeSlackEvent, verifySlackRequest, } from "./normalize.js";
|
|
16
16
|
import { createSlackWebApiTransport, DEFAULT_ASSISTANT_STATUS, DEFAULT_LOADING_MESSAGES, setSlackAssistantStatus, } from "./transport.js";
|
|
17
17
|
import { SLACK_BOT_TOKEN_ENV } from "../binding.js";
|
|
18
|
-
import { getIdentityLinkStore, } from "../../identity/links.js";
|
|
19
|
-
import {
|
|
18
|
+
import { getIdentityLinkStore, } from "../../identity/slack/links.js";
|
|
19
|
+
import { resolveLoopbackApiUrl } from "../../identity/loopback.js";
|
|
20
|
+
import { readSlackOidcConfig, slackConnectUrl, } from "../../identity/slack/oauth.js";
|
|
20
21
|
import { ACTOR_HEADER, INGRESS_SECRET_ENV, INGRESS_SECRET_HEADER, SOURCE_PROVIDER_HEADER, SOURCE_THREAD_HEADER, TENANT_HEADER, } from "../../runtime/auth.js";
|
|
21
22
|
/** Env vars for Phase 1 single-workspace Slack install. */
|
|
22
23
|
export const SLACK_SIGNING_SECRET_ENV = "SLACK_SIGNING_SECRET";
|
|
@@ -205,43 +206,66 @@ export async function handleSlackEventsRequest(request, channel) {
|
|
|
205
206
|
}
|
|
206
207
|
}
|
|
207
208
|
const address = normalized.event.address;
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
209
|
+
try {
|
|
210
|
+
await withSlackAssistantStatusHeartbeat({
|
|
211
|
+
botToken,
|
|
212
|
+
channelId: address.conversationId,
|
|
213
|
+
threadTs: address.threadId ?? "",
|
|
214
|
+
}, async () => {
|
|
215
|
+
const result = await invoke({
|
|
216
|
+
actorId,
|
|
217
|
+
tenantId: normalized.tenantId,
|
|
218
|
+
sourceThreadKey: normalized.sourceThreadKey,
|
|
219
|
+
binding,
|
|
220
|
+
text,
|
|
221
|
+
assistantId: channel.assistantId ?? DEFAULT_ASSISTANT_ID,
|
|
222
|
+
});
|
|
223
|
+
delivery.runId = result.runId;
|
|
224
|
+
delivery.status = "response_pending";
|
|
225
|
+
delivery.updatedAt = new Date().toISOString();
|
|
226
|
+
if (channel.config.autoReply &&
|
|
227
|
+
!wasDeliveryFinalPosted(delivery.deliveryId) &&
|
|
228
|
+
result.replyText.trim().length > 0) {
|
|
229
|
+
if (!botToken) {
|
|
230
|
+
throw new ChannelError("channel_run_failed", "auto-reply requires SLACK_BOT_TOKEN");
|
|
231
|
+
}
|
|
232
|
+
const transport = createSlackWebApiTransport({ botToken });
|
|
233
|
+
const runtimeChannel = createRuntimeChannel({
|
|
234
|
+
name: channel.name,
|
|
235
|
+
provider: "slack",
|
|
236
|
+
event: normalized.event,
|
|
237
|
+
address: normalized.event.address,
|
|
238
|
+
transport,
|
|
239
|
+
onFinalPosted: () => undefined,
|
|
240
|
+
});
|
|
241
|
+
const posted = await runtimeChannel.post({ text: result.replyText }, { final: true });
|
|
242
|
+
delivery.outboundMessageIds.push(posted.id);
|
|
243
|
+
}
|
|
244
|
+
delivery.status = "delivered";
|
|
245
|
+
delivery.updatedAt = new Date().toISOString();
|
|
220
246
|
});
|
|
221
|
-
|
|
222
|
-
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
delivery.status = "failed";
|
|
223
250
|
delivery.updatedAt = new Date().toISOString();
|
|
224
|
-
if (
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
251
|
+
if (botToken && !wasDeliveryFinalPosted(delivery.deliveryId)) {
|
|
252
|
+
try {
|
|
253
|
+
const posted = await postFailureReply({
|
|
254
|
+
botToken,
|
|
255
|
+
channelName: channel.name,
|
|
256
|
+
event: normalized.event,
|
|
257
|
+
address: normalized.event.address,
|
|
258
|
+
error,
|
|
259
|
+
});
|
|
260
|
+
delivery.outboundMessageIds.push(posted.id);
|
|
261
|
+
markFinalPosted(delivery.deliveryId);
|
|
262
|
+
}
|
|
263
|
+
catch (postError) {
|
|
264
|
+
console.error(`[mda] channel "${channel.name}" failed to post failure reply for delivery ${delivery.deliveryId}:`, postError);
|
|
229
265
|
}
|
|
230
|
-
const transport = createSlackWebApiTransport({ botToken });
|
|
231
|
-
const runtimeChannel = createRuntimeChannel({
|
|
232
|
-
name: channel.name,
|
|
233
|
-
provider: "slack",
|
|
234
|
-
event: normalized.event,
|
|
235
|
-
address: normalized.event.address,
|
|
236
|
-
transport,
|
|
237
|
-
onFinalPosted: () => undefined,
|
|
238
|
-
});
|
|
239
|
-
const posted = await runtimeChannel.post({ text: result.replyText }, { final: true });
|
|
240
|
-
delivery.outboundMessageIds.push(posted.id);
|
|
241
266
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
});
|
|
267
|
+
throw error;
|
|
268
|
+
}
|
|
245
269
|
});
|
|
246
270
|
return new Response("", { status: 200 });
|
|
247
271
|
}
|
|
@@ -285,6 +309,7 @@ export async function invokeChannelAgent(input) {
|
|
|
285
309
|
tenantId: input.tenantId,
|
|
286
310
|
sourceThreadKey: input.sourceThreadKey,
|
|
287
311
|
ingressSecret,
|
|
312
|
+
sourceProvider: input.sourceProvider ?? "slack",
|
|
288
313
|
});
|
|
289
314
|
const threadId = stableThreadId(input.sourceThreadKey);
|
|
290
315
|
try {
|
|
@@ -319,7 +344,7 @@ function createChannelLoopbackClient(input) {
|
|
|
319
344
|
const headers = {
|
|
320
345
|
[INGRESS_SECRET_HEADER]: input.ingressSecret,
|
|
321
346
|
[ACTOR_HEADER]: input.actorId,
|
|
322
|
-
[SOURCE_PROVIDER_HEADER]: "slack",
|
|
347
|
+
[SOURCE_PROVIDER_HEADER]: input.sourceProvider ?? "slack",
|
|
323
348
|
[SOURCE_THREAD_HEADER]: input.sourceThreadKey,
|
|
324
349
|
};
|
|
325
350
|
if (input.tenantId) {
|
|
@@ -331,16 +356,6 @@ function createChannelLoopbackClient(input) {
|
|
|
331
356
|
defaultHeaders: headers,
|
|
332
357
|
});
|
|
333
358
|
}
|
|
334
|
-
function resolveLoopbackApiUrl() {
|
|
335
|
-
const explicit = process.env.MDA_CHANNEL_API_URL ??
|
|
336
|
-
process.env.LANGGRAPH_API_URL ??
|
|
337
|
-
process.env.LANGSMITH_ENDPOINT;
|
|
338
|
-
if (explicit && explicit.trim().length > 0) {
|
|
339
|
-
return explicit.replace(/\/$/, "");
|
|
340
|
-
}
|
|
341
|
-
const port = process.env.PORT ?? "8000";
|
|
342
|
-
return `http://127.0.0.1:${port}`;
|
|
343
|
-
}
|
|
344
359
|
/** Deterministic LangGraph thread id from the Slack source-thread key. */
|
|
345
360
|
export function stableThreadId(sourceThreadKey) {
|
|
346
361
|
const hex = createHash("sha256").update(sourceThreadKey).digest("hex");
|
|
@@ -441,6 +456,47 @@ async function postConnectPrompt(input) {
|
|
|
441
456
|
`Open ${connectUrl} while signed in, then try again.`,
|
|
442
457
|
}, { final: true });
|
|
443
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* Pre-approved Slack copy for known {@link ChannelError} codes.
|
|
461
|
+
*
|
|
462
|
+
* Never include `error.message` — provisioning / credential / upstream failures
|
|
463
|
+
* can embed actor ids, paths, or API details that must not go to the channel.
|
|
464
|
+
*/
|
|
465
|
+
const SAFE_SLACK_FAILURE_BY_CODE = {
|
|
466
|
+
channel_identity_unresolvable: "Connect your account to use this agent in Slack, then try again.",
|
|
467
|
+
channel_provider_rate_limited: "Slack is rate-limiting replies right now. Please try again shortly.",
|
|
468
|
+
channel_invocation_rate_limited: "Too many requests. Please try again shortly.",
|
|
469
|
+
channel_destination_forbidden: "That destination isn't allowed for this agent.",
|
|
470
|
+
channel_provider_rejected: "I couldn't post a reply to Slack. Please try again.",
|
|
471
|
+
channel_run_failed: "I couldn't finish this request — workspace setup or the agent run failed.",
|
|
472
|
+
};
|
|
473
|
+
const OPAQUE_SLACK_FAILURE_REPLY = "I couldn't finish this request — workspace setup or the agent run failed.";
|
|
474
|
+
/**
|
|
475
|
+
* Build a short user-facing Slack failure message.
|
|
476
|
+
*
|
|
477
|
+
* Opaque by default; only allowlisted {@link ChannelError} codes get a fixed
|
|
478
|
+
* safe string. Raw exception text is never posted to the channel.
|
|
479
|
+
*
|
|
480
|
+
* Exported for unit tests.
|
|
481
|
+
*/
|
|
482
|
+
export function formatSlackFailureReply(error) {
|
|
483
|
+
if (error instanceof ChannelError) {
|
|
484
|
+
return SAFE_SLACK_FAILURE_BY_CODE[error.code] ?? OPAQUE_SLACK_FAILURE_REPLY;
|
|
485
|
+
}
|
|
486
|
+
return OPAQUE_SLACK_FAILURE_REPLY;
|
|
487
|
+
}
|
|
488
|
+
async function postFailureReply(input) {
|
|
489
|
+
const transport = createSlackWebApiTransport({ botToken: input.botToken });
|
|
490
|
+
const runtimeChannel = createRuntimeChannel({
|
|
491
|
+
name: input.channelName,
|
|
492
|
+
provider: "slack",
|
|
493
|
+
event: input.event,
|
|
494
|
+
address: input.address,
|
|
495
|
+
transport,
|
|
496
|
+
onFinalPosted: () => undefined,
|
|
497
|
+
});
|
|
498
|
+
return runtimeChannel.post({ text: formatSlackFailureReply(input.error) }, { final: true });
|
|
499
|
+
}
|
|
444
500
|
function jsonError(status, message) {
|
|
445
501
|
return new Response(JSON.stringify({ error: message }), {
|
|
446
502
|
status,
|