managed-deepagents 0.5.0-dev.89 → 0.5.0-dev.96
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 +36 -37
- package/dist/channels/index.d.ts +6 -5
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +6 -5
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +1 -1
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/messaging-registry.d.ts +8 -4
- package/dist/channels/messaging-registry.d.ts.map +1 -1
- package/dist/channels/messaging-registry.js +22 -16
- package/dist/channels/messaging-registry.js.map +1 -1
- package/dist/channels/registry-types.d.ts +1 -1
- package/dist/channels/registry-types.d.ts.map +1 -1
- package/dist/channels/registry.d.ts.map +1 -1
- package/dist/channels/registry.js +1 -3
- package/dist/channels/registry.js.map +1 -1
- package/dist/channels/schedule-delivery.js +1 -1
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/{connectors → channels}/slack/adapter-core.d.ts +1 -1
- package/dist/channels/slack/adapter-core.d.ts.map +1 -0
- package/dist/channels/slack/adapter-core.js.map +1 -0
- package/dist/{connectors → channels}/slack/adapter.d.ts +3 -3
- package/dist/channels/slack/adapter.d.ts.map +1 -0
- package/dist/{connectors → channels}/slack/adapter.js +0 -1
- package/dist/channels/slack/adapter.js.map +1 -0
- package/dist/{connectors → channels}/slack/http.d.ts +7 -5
- package/dist/channels/slack/http.d.ts.map +1 -0
- package/dist/{connectors → channels}/slack/http.js +46 -11
- package/dist/channels/slack/http.js.map +1 -0
- package/dist/channels/slack/index.d.ts +104 -0
- package/dist/channels/slack/index.d.ts.map +1 -0
- package/dist/channels/slack/index.js +151 -0
- package/dist/channels/slack/index.js.map +1 -0
- package/dist/{connectors → channels}/slack/normalize.d.ts +7 -4
- package/dist/channels/slack/normalize.d.ts.map +1 -0
- package/dist/{connectors → channels}/slack/normalize.js +47 -11
- package/dist/channels/slack/normalize.js.map +1 -0
- package/dist/channels/slack/source-thread.d.ts.map +1 -0
- package/dist/channels/slack/source-thread.js.map +1 -0
- package/dist/{connectors → channels}/slack/transport.d.ts +1 -1
- package/dist/channels/slack/transport.d.ts.map +1 -0
- package/dist/{connectors → channels}/slack/transport.js +1 -1
- package/dist/channels/slack/transport.js.map +1 -0
- package/dist/channels/store.d.ts +14 -0
- package/dist/channels/store.d.ts.map +1 -1
- package/dist/channels/store.js +41 -27
- package/dist/channels/store.js.map +1 -1
- package/dist/connectors/slack/index.d.ts +10 -79
- package/dist/connectors/slack/index.d.ts.map +1 -1
- package/dist/connectors/slack/index.js +24 -127
- package/dist/connectors/slack/index.js.map +1 -1
- package/dist/connectors/toolserver/catalog.d.ts +4 -10
- package/dist/connectors/toolserver/catalog.d.ts.map +1 -1
- package/dist/connectors/toolserver/catalog.js +6 -54
- package/dist/connectors/toolserver/catalog.js.map +1 -1
- package/dist/connectors/toolserver/index.d.ts +5 -7
- package/dist/connectors/toolserver/index.d.ts.map +1 -1
- package/dist/connectors/toolserver/index.js +4 -6
- package/dist/connectors/toolserver/index.js.map +1 -1
- package/dist/connectors/toolserver/integrations.d.ts +4 -4
- package/dist/connectors/toolserver/integrations.d.ts.map +1 -1
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +9 -3
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/extension.d.ts +6 -14
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +5 -24
- package/dist/extension.js.map +1 -1
- package/dist/identity/connect-inference.d.ts +6 -7
- package/dist/identity/connect-inference.d.ts.map +1 -1
- package/dist/identity/connect-inference.js +7 -9
- package/dist/identity/connect-inference.js.map +1 -1
- package/dist/identity/github/connect-http.d.ts +3 -4
- package/dist/identity/github/connect-http.d.ts.map +1 -1
- package/dist/identity/github/connect-http.js +7 -10
- package/dist/identity/github/connect-http.js.map +1 -1
- package/dist/identity/github/credentials-store.d.ts.map +1 -1
- package/dist/identity/github/credentials-store.js +26 -10
- package/dist/identity/github/credentials-store.js.map +1 -1
- package/dist/identity/github/index.d.ts +0 -2
- package/dist/identity/github/index.d.ts.map +1 -1
- package/dist/identity/github/index.js +0 -2
- package/dist/identity/github/index.js.map +1 -1
- package/dist/identity/index.d.ts +15 -71
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +30 -223
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/oauth-env.d.ts +4 -3
- package/dist/identity/oauth-env.d.ts.map +1 -1
- package/dist/identity/oauth-env.js +4 -3
- package/dist/identity/oauth-env.js.map +1 -1
- package/dist/identity/options.d.ts +12 -72
- package/dist/identity/options.d.ts.map +1 -1
- package/dist/identity/options.js +38 -112
- package/dist/identity/options.js.map +1 -1
- package/dist/identity/slack/connect-http.d.ts +3 -1
- package/dist/identity/slack/connect-http.d.ts.map +1 -1
- package/dist/identity/slack/connect-http.js +3 -1
- package/dist/identity/slack/connect-http.js.map +1 -1
- package/dist/identity/slack/links.d.ts +3 -2
- package/dist/identity/slack/links.d.ts.map +1 -1
- package/dist/identity/slack/links.js +29 -12
- package/dist/identity/slack/links.js.map +1 -1
- package/dist/identity/types.d.ts +12 -43
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +26 -10
- package/dist/ingress/index.js.map +1 -1
- package/dist/memory/define-memory.d.ts +39 -0
- package/dist/memory/define-memory.d.ts.map +1 -0
- package/dist/memory/define-memory.js +78 -0
- package/dist/memory/define-memory.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +8 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/instructions-middleware.d.ts +74 -0
- package/dist/memory/instructions-middleware.d.ts.map +1 -0
- package/dist/memory/instructions-middleware.js +115 -0
- package/dist/memory/instructions-middleware.js.map +1 -0
- package/dist/memory/slices.d.ts +21 -0
- package/dist/memory/slices.d.ts.map +1 -0
- package/dist/memory/slices.js +61 -0
- package/dist/memory/slices.js.map +1 -0
- package/dist/memory/types.d.ts +71 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +10 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/namespaces.d.ts +46 -90
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +13 -39
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts +31 -19
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +192 -68
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +26 -18
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/channel.d.ts +91 -0
- package/dist/runtime/channel.d.ts.map +1 -0
- package/dist/runtime/channel.js +98 -0
- package/dist/runtime/channel.js.map +1 -0
- package/dist/runtime/connector.d.ts +1 -1
- package/dist/runtime/connector.js +5 -1
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts +1 -1
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +5 -1
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/http.d.ts +1 -2
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +1 -2
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +9 -6
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +67 -42
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +0 -18
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +0 -27
- package/dist/runtime/identity-runtime.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 +33 -31
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +0 -3
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +0 -3
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +2 -10
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +3 -11
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +5 -0
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +21 -15
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-stream-retry.d.ts +15 -7
- package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -1
- package/dist/runtime/sandbox-stream-retry.js +24 -12
- package/dist/runtime/sandbox-stream-retry.js.map +1 -1
- package/dist/runtime/types.d.ts +16 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/validated-token.d.ts +7 -12
- package/dist/runtime/validated-token.d.ts.map +1 -1
- package/dist/runtime/validated-token.js +10 -66
- package/dist/runtime/validated-token.js.map +1 -1
- package/dist/sandbox.d.ts +16 -38
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +9 -16
- package/dist/sandbox.js.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +8 -8
- package/dist/connectors/github/adapter-core.d.ts +0 -15
- package/dist/connectors/github/adapter-core.d.ts.map +0 -1
- package/dist/connectors/github/adapter-core.js +0 -52
- package/dist/connectors/github/adapter-core.js.map +0 -1
- package/dist/connectors/github/define.d.ts +0 -168
- package/dist/connectors/github/define.d.ts.map +0 -1
- package/dist/connectors/github/define.js +0 -72
- package/dist/connectors/github/define.js.map +0 -1
- package/dist/connectors/github/http.d.ts +0 -25
- package/dist/connectors/github/http.d.ts.map +0 -1
- package/dist/connectors/github/http.js +0 -146
- package/dist/connectors/github/http.js.map +0 -1
- package/dist/connectors/github/index.d.ts +0 -121
- package/dist/connectors/github/index.d.ts.map +0 -1
- package/dist/connectors/github/index.js +0 -192
- package/dist/connectors/github/index.js.map +0 -1
- package/dist/connectors/github/match.d.ts +0 -20
- package/dist/connectors/github/match.d.ts.map +0 -1
- package/dist/connectors/github/match.js +0 -41
- package/dist/connectors/github/match.js.map +0 -1
- package/dist/connectors/github/normalize.d.ts +0 -32
- package/dist/connectors/github/normalize.d.ts.map +0 -1
- package/dist/connectors/github/normalize.js +0 -152
- package/dist/connectors/github/normalize.js.map +0 -1
- package/dist/connectors/github/sandbox.d.ts +0 -54
- package/dist/connectors/github/sandbox.d.ts.map +0 -1
- package/dist/connectors/github/sandbox.js +0 -532
- package/dist/connectors/github/sandbox.js.map +0 -1
- package/dist/connectors/github/source-thread.d.ts +0 -24
- package/dist/connectors/github/source-thread.d.ts.map +0 -1
- package/dist/connectors/github/source-thread.js +0 -54
- package/dist/connectors/github/source-thread.js.map +0 -1
- package/dist/connectors/github/transport.d.ts +0 -25
- package/dist/connectors/github/transport.d.ts.map +0 -1
- package/dist/connectors/github/transport.js +0 -106
- package/dist/connectors/github/transport.js.map +0 -1
- package/dist/connectors/langsmith/index.d.ts +0 -397
- package/dist/connectors/langsmith/index.d.ts.map +0 -1
- package/dist/connectors/langsmith/index.js +0 -436
- package/dist/connectors/langsmith/index.js.map +0 -1
- package/dist/connectors/langsmith/routes.d.ts +0 -236
- package/dist/connectors/langsmith/routes.d.ts.map +0 -1
- package/dist/connectors/langsmith/routes.js +0 -1154
- package/dist/connectors/langsmith/routes.js.map +0 -1
- package/dist/connectors/slack/adapter-core.d.ts.map +0 -1
- package/dist/connectors/slack/adapter-core.js.map +0 -1
- package/dist/connectors/slack/adapter.d.ts.map +0 -1
- package/dist/connectors/slack/adapter.js.map +0 -1
- package/dist/connectors/slack/http.d.ts.map +0 -1
- package/dist/connectors/slack/http.js.map +0 -1
- package/dist/connectors/slack/normalize.d.ts.map +0 -1
- package/dist/connectors/slack/normalize.js.map +0 -1
- package/dist/connectors/slack/source-thread.d.ts.map +0 -1
- package/dist/connectors/slack/source-thread.js.map +0 -1
- package/dist/connectors/slack/transport.d.ts.map +0 -1
- package/dist/connectors/slack/transport.js.map +0 -1
- package/dist/identity/memory-slices.d.ts +0 -21
- package/dist/identity/memory-slices.d.ts.map +0 -1
- package/dist/identity/memory-slices.js +0 -105
- package/dist/identity/memory-slices.js.map +0 -1
- package/dist/runtime/memory/lazy-context-backend.d.ts +0 -74
- package/dist/runtime/memory/lazy-context-backend.d.ts.map +0 -1
- package/dist/runtime/memory/lazy-context-backend.js +0 -166
- package/dist/runtime/memory/lazy-context-backend.js.map +0 -1
- package/dist/runtime/memory/seed.d.ts +0 -30
- package/dist/runtime/memory/seed.d.ts.map +0 -1
- package/dist/runtime/memory/seed.js +0 -199
- package/dist/runtime/memory/seed.js.map +0 -1
- package/dist/runtime/memory/user-repo.d.ts +0 -18
- package/dist/runtime/memory/user-repo.d.ts.map +0 -1
- package/dist/runtime/memory/user-repo.js +0 -50
- package/dist/runtime/memory/user-repo.js.map +0 -1
- /package/dist/{connectors → channels}/slack/adapter-core.js +0 -0
- /package/dist/{connectors → channels}/slack/source-thread.d.ts +0 -0
- /package/dist/{connectors → channels}/slack/source-thread.js +0 -0
package/README.md
CHANGED
|
@@ -55,14 +55,20 @@ npm install
|
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
`mda init` can shape the project up front — `--instructions "..."` (or
|
|
58
|
-
`--instructions-file <path>`) writes the system prompt, `--
|
|
59
|
-
|
|
60
|
-
`--no-sandbox`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
`--instructions-file <path>`) writes the system prompt, `--model <spec>` picks
|
|
59
|
+
the model, `--memory agent` opts into deployment-shared durable memory, and
|
|
60
|
+
`--no-sandbox` leaves out the sandbox. Every new project includes an
|
|
61
|
+
`identity.ts` that explicitly selects `auth.langsmithApiKey()` authentication.
|
|
62
|
+
Managed Deep Agent evals are Harbor tasks under `evals/tasks/`. Optionally create
|
|
63
|
+
a minimal source task under `evals/scaffold/` with `mda evals init <name>`, then
|
|
64
|
+
package the managed agent and scaffolded tasks with `mda evals compile .`.
|
|
65
|
+
Nothing prompts, so these commands also work in coding agents and CI scripts.
|
|
66
|
+
|
|
67
|
+
`mda init my-agent --gateway` runs the agent on
|
|
68
|
+
[LangSmith Gateway](https://docs.langchain.com/langsmith/gateway) — a model
|
|
69
|
+
LangSmith hosts, billed to your workspace's Gateway Credits, authenticated with
|
|
70
|
+
a LangSmith API key instead of a model provider key of your own. It is mutually
|
|
71
|
+
exclusive with `--model`, which names a provider you hold the key for.
|
|
66
72
|
|
|
67
73
|
## Define an Agent
|
|
68
74
|
|
|
@@ -82,13 +88,32 @@ export const agent = defineDeepAgent({
|
|
|
82
88
|
|
|
83
89
|
`defineDeepAgent` requires a static `name` (LangGraph assistant id and default LangSmith deployment name) and otherwise accepts the [`createDeepAgent`](https://reference.langchain.com/javascript/deepagents/agent/createDeepAgent) configuration surface minus the managed keys: `backend`, `store`, `checkpointer`, `memory`, `skills`, and `systemPrompt`. Those are provided by the managed runtime when your agent is deployed. Write the system prompt in `instructions.md` next to `agent.ts`; the CLI embeds it at deploy time.
|
|
84
90
|
|
|
85
|
-
|
|
91
|
+
To authenticate SDK and API requests with a LangSmith workspace key while
|
|
92
|
+
retaining MDA's thread and store authorization, declare it explicitly:
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
export const identity = defineIdentity({
|
|
96
|
+
auth: auth.langsmithApiKey(),
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Clients send the key as `x-api-key`. LangSmith Cloud supplies the verification
|
|
101
|
+
endpoint and tenant configuration; do not add those platform-owned values to
|
|
102
|
+
the project `.env`.
|
|
103
|
+
|
|
104
|
+
On deploy, Context Hub stores harness files (`instructions.md`, `skills/**`). A
|
|
105
|
+
root `memory.ts` declaring `defineMemory({ scope: "agent" })` additionally mounts
|
|
106
|
+
one deployment-shared memory tree at `/memories/agent/`.
|
|
107
|
+
`/memories/agent/AGENTS.md` is injected every turn; other files are read on
|
|
108
|
+
demand. Deploy never overwrites existing memories. Memory is independent of
|
|
109
|
+
identity, and a project without `memory.ts` mounts no durable memory.
|
|
86
110
|
|
|
87
111
|
## Project Shape
|
|
88
112
|
|
|
89
113
|
```text
|
|
90
114
|
my-agent/
|
|
91
115
|
agent.ts # named `agent` export
|
|
116
|
+
identity.ts # managed authentication (included by `mda init`)
|
|
92
117
|
instructions.md # managed system prompt
|
|
93
118
|
package.json
|
|
94
119
|
.env # local deploy secrets, never committed
|
|
@@ -97,7 +122,6 @@ my-agent/
|
|
|
97
122
|
middleware/ # optional middleware
|
|
98
123
|
skills/ # optional skills synced to Context Hub
|
|
99
124
|
sandbox/ # LangSmith sandbox (`mda init` includes this; delete to opt out)
|
|
100
|
-
connectors/mcp.ts # optional MCP server declaration
|
|
101
125
|
```
|
|
102
126
|
|
|
103
127
|
The CLI copies your project files into the managed build and generates the entry
|
|
@@ -132,9 +156,9 @@ enables the sandbox when that declaration is present — delete `sandbox/` to op
|
|
|
132
156
|
out:
|
|
133
157
|
|
|
134
158
|
```ts
|
|
135
|
-
import {
|
|
159
|
+
import { defineSandbox } from "managed-deepagents";
|
|
136
160
|
|
|
137
|
-
export const sandbox =
|
|
161
|
+
export const sandbox = defineSandbox({
|
|
138
162
|
scope: "thread",
|
|
139
163
|
idleTtlSeconds: 600,
|
|
140
164
|
});
|
|
@@ -144,31 +168,6 @@ If `sandbox/setup.sh` exists, MDA embeds it and runs it once when the sandbox is
|
|
|
144
168
|
first provisioned. MDA owns sandbox naming, image/snapshot selection, reuse, and
|
|
145
169
|
lifecycle.
|
|
146
170
|
|
|
147
|
-
## MCP Connectors
|
|
148
|
-
|
|
149
|
-
Add `connectors/mcp.ts` to attach MCP servers. The file must export a named
|
|
150
|
-
`connector`. By default, MDA exposes every tool loaded from each declared
|
|
151
|
-
server:
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
import { connectors } from "managed-deepagents";
|
|
155
|
-
|
|
156
|
-
export const connector = connectors.mcp({
|
|
157
|
-
mcpServers: {
|
|
158
|
-
langchainDocs: {
|
|
159
|
-
transport: "http",
|
|
160
|
-
url: "https://docs.langchain.com/mcp",
|
|
161
|
-
includeTools: ["search", "fetch"],
|
|
162
|
-
},
|
|
163
|
-
},
|
|
164
|
-
});
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Use `includeTools` or `excludeTools` inside a server config to select a subset.
|
|
168
|
-
Tool names are raw MCP tool names before the managed `{server}__` prefix is
|
|
169
|
-
applied, so `includeTools: ["search"]` on server `langchainDocs` exposes
|
|
170
|
-
`langchainDocs__search` when prefixing is enabled.
|
|
171
|
-
|
|
172
171
|
## CLI
|
|
173
172
|
|
|
174
173
|
Create a new project:
|
package/dist/channels/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Channel capability contracts — the named messaging surface a
|
|
3
|
-
* contribute (`runtime.channel`, schedule `deliverTo`).
|
|
2
|
+
* Channel capability contracts — the named messaging surface a channel (or
|
|
3
|
+
* connector) may contribute (`runtime.channel`, schedule `deliverTo`).
|
|
4
4
|
*
|
|
5
|
-
* Authoring lives on `
|
|
6
|
-
*
|
|
5
|
+
* Authoring for Slack Events lives on `channels.slack` under project
|
|
6
|
+
* `channels/`. Provider verify/normalize/transport code lives under
|
|
7
|
+
* `channels/slack/` as implementation details.
|
|
7
8
|
*/
|
|
8
9
|
export type { ChannelAddress, ChannelAttachmentRef, ChannelCapabilities, ChannelDestination, ChannelErrorCode, ChannelEvent, ChannelInboundMessage, ChannelMessage, ChannelMessageUpdate, ChannelNativePayload, JsonValue, PostedChannelMessage, RuntimeChannel, } from "./types.js";
|
|
9
10
|
export { normalizeChannelDestination } from "./types.js";
|
|
@@ -20,5 +21,5 @@ export type { DeliveryRecord, DeliveryStatus } from "./store.js";
|
|
|
20
21
|
export { extractAssistantText } from "./assistant-text.js";
|
|
21
22
|
export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
|
|
22
23
|
export type { DeliverScheduleResultInput, NormalizedScheduleDeliverTo, } from "./schedule-delivery.js";
|
|
23
|
-
export { clearMessagingRegistry, messagingTransportForName, registerConnectorMessaging, trustedMessagingProviders, } from "./messaging-registry.js";
|
|
24
|
+
export { clearMessagingRegistry, messagingTransportForName, registerChannelMessaging, registerConnectorMessaging, trustedMessagingProviders, } from "./messaging-registry.js";
|
|
24
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
|
package/dist/channels/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Channel capability contracts — the named messaging surface a
|
|
3
|
-
* contribute (`runtime.channel`, schedule `deliverTo`).
|
|
2
|
+
* Channel capability contracts — the named messaging surface a channel (or
|
|
3
|
+
* connector) may contribute (`runtime.channel`, schedule `deliverTo`).
|
|
4
4
|
*
|
|
5
|
-
* Authoring lives on `
|
|
6
|
-
*
|
|
5
|
+
* Authoring for Slack Events lives on `channels.slack` under project
|
|
6
|
+
* `channels/`. Provider verify/normalize/transport code lives under
|
|
7
|
+
* `channels/slack/` as implementation details.
|
|
7
8
|
*/
|
|
8
9
|
export { normalizeChannelDestination } from "./types.js";
|
|
9
10
|
export { CHANNEL_ERROR_CODES, ChannelError } from "./errors.js";
|
|
@@ -13,5 +14,5 @@ export { CHANNEL_BINDING_KEY, SLACK_BOT_TOKEN_ENV, clearFinalPosted, markFinalPo
|
|
|
13
14
|
export { InMemoryChannelStore } from "./store.js";
|
|
14
15
|
export { extractAssistantText } from "./assistant-text.js";
|
|
15
16
|
export { addressFromDeliverTo, createScheduleDeliveryMiddleware, deliverScheduleResult, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
|
|
16
|
-
export { clearMessagingRegistry, messagingTransportForName, registerConnectorMessaging, trustedMessagingProviders, } from "./messaging-registry.js";
|
|
17
|
+
export { clearMessagingRegistry, messagingTransportForName, registerChannelMessaging, registerConnectorMessaging, trustedMessagingProviders, } from "./messaging-registry.js";
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAMpD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAMhC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
|
|
@@ -29,7 +29,7 @@ export interface ChannelManifest {
|
|
|
29
29
|
requiredPermissions: readonly string[];
|
|
30
30
|
/** Env vars deploy must ensure when this channel is present. */
|
|
31
31
|
requiredEnv: readonly string[];
|
|
32
|
-
/** Opaque-to-core provider config (Slack
|
|
32
|
+
/** Opaque-to-core provider config (Slack filters/conversation, …). */
|
|
33
33
|
providerConfig: JsonObject;
|
|
34
34
|
}
|
|
35
35
|
/** Author-supplied requirements fields; `name` / `provider` are stamped by the factory. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/channels/manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gEAAgE;IAChE,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/channels/manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,gEAAgE;IAChE,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,sEAAsE;IACtE,cAAc,EAAE,UAAU,CAAC;CAC5B;AAED,2FAA2F;AAC3F,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Name → messaging transport registry.
|
|
3
3
|
*
|
|
4
|
-
* Filled when connectors
|
|
5
|
-
*
|
|
4
|
+
* Filled when channels (and connectors that still contribute messaging, e.g.
|
|
5
|
+
* GitHub) are mounted / collected. `resolveRuntimeChannel` and schedule
|
|
6
|
+
* delivery look up transports by file-stem name.
|
|
6
7
|
*/
|
|
7
8
|
import type { ChannelTransport } from "./runtime.js";
|
|
9
|
+
import type { Channel } from "../runtime/channel.js";
|
|
8
10
|
import type { Connector } from "../runtime/connector.js";
|
|
9
|
-
/** Register messaging factories from collected
|
|
11
|
+
/** Register messaging factories from collected channels. */
|
|
12
|
+
export declare function registerChannelMessaging(channels: readonly Channel[]): void;
|
|
13
|
+
/** Register messaging factories from collected connectors (e.g. GitHub). */
|
|
10
14
|
export declare function registerConnectorMessaging(connectors: readonly Connector[]): void;
|
|
11
15
|
/** Clear the registry (tests). */
|
|
12
16
|
export declare function clearMessagingRegistry(): void;
|
|
13
|
-
/** Build a transport for a connector name. */
|
|
17
|
+
/** Build a transport for a channel/connector file-stem name. */
|
|
14
18
|
export declare function messagingTransportForName(name: string, env?: NodeJS.ProcessEnv): ChannelTransport | undefined;
|
|
15
19
|
/** Providers allowed as trusted source-provider stamps. */
|
|
16
20
|
export declare function trustedMessagingProviders(): ReadonlySet<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAoCzD,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAE3E;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,IAAI,CAEN;AAED,kCAAkC;AAClC,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,gBAAgB,GAAG,SAAS,CAE9B;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,IAAI,WAAW,CAAC,MAAM,CAAC,CAE/D"}
|
|
@@ -1,39 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Name → messaging transport registry.
|
|
3
3
|
*
|
|
4
|
-
* Filled when connectors
|
|
5
|
-
*
|
|
4
|
+
* Filled when channels (and connectors that still contribute messaging, e.g.
|
|
5
|
+
* GitHub) are mounted / collected. `resolveRuntimeChannel` and schedule
|
|
6
|
+
* delivery look up transports by file-stem name.
|
|
6
7
|
*/
|
|
7
8
|
const byName = new Map();
|
|
8
|
-
const trustedProviders = new Set(["slack"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (!connector.name || typeof connector.messaging !== "function") {
|
|
9
|
+
const trustedProviders = new Set(["slack"]);
|
|
10
|
+
function registerMessagingSources(sources) {
|
|
11
|
+
for (const source of sources) {
|
|
12
|
+
if (!source.name || typeof source.messaging !== "function") {
|
|
13
13
|
continue;
|
|
14
14
|
}
|
|
15
|
-
const messaging =
|
|
16
|
-
byName.set(
|
|
17
|
-
if (typeof
|
|
18
|
-
trustedProviders.add(
|
|
15
|
+
const messaging = source.messaging.bind(source);
|
|
16
|
+
byName.set(source.name, messaging);
|
|
17
|
+
if (typeof source.kind === "string" && source.kind.trim()) {
|
|
18
|
+
trustedProviders.add(source.kind);
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
? connector.requirements(connector.name)
|
|
20
|
+
const requirements = typeof source.requirements === "function"
|
|
21
|
+
? source.requirements(source.name)
|
|
23
22
|
: undefined;
|
|
24
23
|
if (requirements?.provider) {
|
|
25
24
|
trustedProviders.add(requirements.provider);
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
27
|
}
|
|
28
|
+
/** Register messaging factories from collected channels. */
|
|
29
|
+
export function registerChannelMessaging(channels) {
|
|
30
|
+
registerMessagingSources(channels);
|
|
31
|
+
}
|
|
32
|
+
/** Register messaging factories from collected connectors (e.g. GitHub). */
|
|
33
|
+
export function registerConnectorMessaging(connectors) {
|
|
34
|
+
registerMessagingSources(connectors);
|
|
35
|
+
}
|
|
29
36
|
/** Clear the registry (tests). */
|
|
30
37
|
export function clearMessagingRegistry() {
|
|
31
38
|
byName.clear();
|
|
32
39
|
trustedProviders.clear();
|
|
33
40
|
trustedProviders.add("slack");
|
|
34
|
-
trustedProviders.add("github");
|
|
35
41
|
}
|
|
36
|
-
/** Build a transport for a connector name. */
|
|
42
|
+
/** Build a transport for a channel/connector file-stem name. */
|
|
37
43
|
export function messagingTransportForName(name, env = process.env) {
|
|
38
44
|
return byName.get(name)?.(env);
|
|
39
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;AACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpD,SAAS,wBAAwB,CAAC,OAAmC;IACnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1D,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;YACvC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;YAC3B,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,wBAAwB,CAAC,QAA4B;IACnE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,0BAA0B,CACxC,UAAgC;IAEhC,wBAAwB,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,yBAAyB;IACvC,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -24,7 +24,7 @@ export interface ChannelHttpContext {
|
|
|
24
24
|
export interface ChannelProviderAdapter {
|
|
25
25
|
/** Provider key; must match {@link ChannelManifest.provider}. */
|
|
26
26
|
readonly provider: string;
|
|
27
|
-
/** Handle `POST /
|
|
27
|
+
/** Handle `POST /channels/{name}/events` (verify + normalize + ACK + work). */
|
|
28
28
|
handleEventsRequest(request: Request, ctx: ChannelHttpContext): Promise<Response>;
|
|
29
29
|
/** Build outbound transport for `resolveRuntimeChannel`. */
|
|
30
30
|
createTransport(env: NodeJS.ProcessEnv): ChannelTransport | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../../src/channels/registry-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"registry-types.d.ts","sourceRoot":"","sources":["../../src/channels/registry-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC/B;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,mBAAmB,CACjB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrB,4DAA4D;IAC5D,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAAC;CACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAUjE,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,sBAAsB,GAAG,SAAS,CAGpC"}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* lazily on first lookup so connector modules can import adapter-core without
|
|
7
7
|
* a load cycle.
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import { slackChannelAdapter } from "../connectors/slack/adapter-core.js";
|
|
9
|
+
import { slackChannelAdapter } from "./slack/adapter-core.js";
|
|
11
10
|
import { getChannelAdapter as getStoredAdapter, registerChannelAdapter, trustedChannelSourceProviders, } from "./registry-store.js";
|
|
12
11
|
export { registerChannelAdapter, trustedChannelSourceProviders };
|
|
13
12
|
let builtinsRegistered = false;
|
|
@@ -16,7 +15,6 @@ function ensureBuiltinAdapters() {
|
|
|
16
15
|
return;
|
|
17
16
|
builtinsRegistered = true;
|
|
18
17
|
registerChannelAdapter(slackChannelAdapter);
|
|
19
|
-
registerChannelAdapter(githubChannelAdapter);
|
|
20
18
|
}
|
|
21
19
|
/** Look up a registered adapter, or `undefined` if none. */
|
|
22
20
|
export function getChannelAdapter(provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/channels/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EACL,iBAAiB,IAAI,gBAAgB,EACrC,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,qBAAqB;IAC5B,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAC/B,QAAgB;IAEhB,qBAAqB,EAAE,CAAC;IACxB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -13,7 +13,7 @@ import { getConfig } from "@langchain/langgraph";
|
|
|
13
13
|
import { configurableFromRuntime, resolveAmbientConfigurable, } from "../runtime/identity-runtime.js";
|
|
14
14
|
import { extractAssistantText } from "./assistant-text.js";
|
|
15
15
|
import { SLACK_BOT_TOKEN_ENV } from "./binding.js";
|
|
16
|
-
import { createSlackWebApiTransport } from "
|
|
16
|
+
import { createSlackWebApiTransport } from "./slack/transport.js";
|
|
17
17
|
let scheduleMetadataForTests;
|
|
18
18
|
/** Override LangGraph run metadata resolution. Test-only. */
|
|
19
19
|
export function setScheduleMetadataForTests(loader) {
|
|
@@ -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;AAEjD,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,
|
|
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;AAEjD,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,IAAI,wBAES,CAAC;AAEd,6DAA6D;AAC7D,MAAM,UAAU,2BAA2B,CACzC,MAA4E;IAE5E,wBAAwB,GAAG,MAAM,CAAC;AACpC,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAiD;IAEjD,MAAM,QAAQ,GAAG,YAAY,EAAE,YAAY,CAAC;IAC5C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,QAAmC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC;IAClD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,KAAgC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,cAAc,GAClB,CAAC,OAAO,EAAE,CAAC,cAAc,KAAK,QAAQ,IAAI,EAAE,CAAC,cAAc,CAAC;QAC5D,CAAC,OAAO,EAAE,CAAC,eAAe,KAAK,QAAQ,IAAI,EAAE,CAAC,eAAe,CAAC;QAC9D,EAAE,CAAC;IACL,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAE7C,IAAI,YAA+C,CAAC;IACpD,IAAI,QAAQ,KAAK,uBAAuB,EAAE,CAAC;QACzC,YAAY,GAAG;YACb,IAAI,EAAE,uBAAuB;YAC7B,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE;SACtC,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GACZ,CAAC,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChD,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC;YAClD,EAAE,CAAC;QACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QACvC,YAAY,GAAG;YACb,IAAI,EAAE,iBAAiB;YACvB,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE;YACrC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;SAC1B,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AACjD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAClC,EAAqC;IAErC,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAClC,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC;AAC/C,CAAC;AAeD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAiC;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,4EAA4E;IAC5E,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CACX,qCAAqC,KAAK,CAAC,SAAS,CAAC,OAAO,wBAAwB,CACrF,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC;gBACf,IAAI;gBACJ,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CACX,uEAAuE,CACxE,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,CAAC,IAAI,CAAC;YACnB,IAAI;YACJ,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,YAAiD;IAEjD,MAAM,QAAQ,GAAG,YAAY,EAAE,YAAY,CAAC;IAC5C,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAI,QAAoC,CAAC,IAAI,CAAC;IACxD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IAC3C,OAAO,CACL,QAAQ,EAAE,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,EAAE,CACxE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAG9B,IAAI,wBAAwB,EAAE,CAAC;QAC7B,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;QACtC,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO,QAA6D,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAGhD;IACC,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,IAAI,qBAAqB,CAAC;IAC3D,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,KAAK,CAAC,UAAU,CAAC,KAAc,EAAE,OAA2B;YAC1D,MAAM,YAAY,GAChB,uBAAuB,CAAC,OAAO,CAAC,IAAI,0BAA0B,EAAE,CAAC;YACnE,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YAEjC,MAAM,QAAQ,GACZ,KAAK;gBACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,UAAU,IAAI,KAAK;gBACjB,CAAC,CAAE,KAAgC,CAAC,QAAQ;gBAC5C,CAAC,CAAC,SAAS,CAAC;YAChB,MAAM,SAAS,GAAG,oBAAoB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slack adapter object without imports from `define.ts` (avoids load cycles).
|
|
3
3
|
*/
|
|
4
|
-
import type { ChannelProviderAdapter } from "
|
|
4
|
+
import type { ChannelProviderAdapter } from "../registry-types.js";
|
|
5
5
|
export declare const slackChannelAdapter: ChannelProviderAdapter;
|
|
6
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 @@
|
|
|
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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Slack channel provider adapter — registry entry for Events + transport.
|
|
3
3
|
*/
|
|
4
|
-
import type { ChannelManifest } from "
|
|
5
|
-
import type {
|
|
4
|
+
import type { ChannelManifest } from "../manifest.js";
|
|
5
|
+
import type { RequiredSlackChannelConfig } from "./index.js";
|
|
6
6
|
export { slackChannelAdapter } from "./adapter-core.js";
|
|
7
7
|
/** Rebuild Slack runtime config from a compiled envelope manifest. */
|
|
8
|
-
export declare function slackConfigFromManifest(manifest: ChannelManifest):
|
|
8
|
+
export declare function slackConfigFromManifest(manifest: ChannelManifest): RequiredSlackChannelConfig;
|
|
9
9
|
//# 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,EAG3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,eAAe,GACxB,0BAA0B,CAgB5B"}
|
|
@@ -6,7 +6,6 @@ export { slackChannelAdapter } from "./adapter-core.js";
|
|
|
6
6
|
export function slackConfigFromManifest(manifest) {
|
|
7
7
|
const cfg = manifest.providerConfig;
|
|
8
8
|
return {
|
|
9
|
-
on: cfg.triggers ?? [],
|
|
10
9
|
autoReply: manifest.autoReply,
|
|
11
10
|
mentionBehavior: cfg.mentionBehavior ?? "strip",
|
|
12
11
|
filters: cfg.filters ?? {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/channels/slack/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,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,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"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Slack 3s window, then invokes the graph over a trusted loopback and posts an
|
|
6
6
|
* auto-reply when needed.
|
|
7
7
|
*/
|
|
8
|
-
import { InMemoryChannelStore } from "
|
|
9
|
-
import type {
|
|
8
|
+
import { InMemoryChannelStore } from "../store.js";
|
|
9
|
+
import type { RequiredSlackChannelConfig } from "./index.js";
|
|
10
10
|
import { type SlackInstallationContext } from "./normalize.js";
|
|
11
11
|
import { type IdentityLinkStore } from "../../identity/slack/links.js";
|
|
12
12
|
import { invokeIngressAgent, type SourceThreadExistsInput } from "../../ingress/index.js";
|
|
@@ -18,7 +18,7 @@ export declare const SLACK_TEAM_ID_ENV = "SLACK_TEAM_ID";
|
|
|
18
18
|
export declare const SLACK_BOT_USER_ID_ENV = "SLACK_BOT_USER_ID";
|
|
19
19
|
export interface SlackChannelHttpConfig {
|
|
20
20
|
name: string;
|
|
21
|
-
config:
|
|
21
|
+
config: RequiredSlackChannelConfig;
|
|
22
22
|
/** Override store (tests). */
|
|
23
23
|
store?: InMemoryChannelStore;
|
|
24
24
|
/** Override background scheduling (tests can run inline). */
|
|
@@ -46,9 +46,11 @@ export interface SlackChannelHttpConfig {
|
|
|
46
46
|
sourceThreadExists?: (input: SourceThreadExistsInput) => Promise<boolean>;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
* Handle `POST /
|
|
49
|
+
* Handle `POST /channels/{name}/events` for a Slack Events API request.
|
|
50
50
|
*
|
|
51
|
-
*
|
|
51
|
+
* Verifies signatures before parsing normal events. Until both Slack
|
|
52
|
+
* credentials are configured, only the inert URL-verification challenge is
|
|
53
|
+
* accepted.
|
|
52
54
|
*/
|
|
53
55
|
export declare function handleSlackEventsRequest(request: Request, channel: SlackChannelHttpConfig): Promise<Response>;
|
|
54
56
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAQnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAEL,kBAAkB,EAElB,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,wBAAwB,CAAC;AAEhC,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;AA8BzD,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;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC,CA8QnB;AAyKD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK9D"}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* Slack 3s window, then invokes the graph over a trusted loopback and posts an
|
|
6
6
|
* auto-reply when needed.
|
|
7
7
|
*/
|
|
8
|
-
import { ChannelError } from "
|
|
9
|
-
import { InMemoryChannelStore } from "
|
|
10
|
-
import { clearFinalPosted, markFinalPosted, wasDeliveryFinalPosted, } from "
|
|
11
|
-
import { createRuntimeChannel } from "
|
|
8
|
+
import { ChannelError } from "../errors.js";
|
|
9
|
+
import { InMemoryChannelStore } from "../store.js";
|
|
10
|
+
import { clearFinalPosted, markFinalPosted, wasDeliveryFinalPosted, } from "../binding.js";
|
|
11
|
+
import { createRuntimeChannel } from "../runtime.js";
|
|
12
12
|
import { normalizeSlackEvent, verifySlackRequest, } from "./normalize.js";
|
|
13
13
|
import { createSlackWebApiTransport, DEFAULT_ASSISTANT_STATUS, DEFAULT_LOADING_MESSAGES, setSlackAssistantStatus, } from "./transport.js";
|
|
14
|
-
import { SLACK_BOT_TOKEN_ENV } from "
|
|
14
|
+
import { SLACK_BOT_TOKEN_ENV } from "../binding.js";
|
|
15
15
|
import { getIdentityLinkStore, } from "../../identity/slack/links.js";
|
|
16
16
|
import { readSlackOidcConfig, slackConnectUrl, } from "../../identity/slack/oauth.js";
|
|
17
17
|
import { ingressSourceThreadExists, invokeIngressAgent, scheduleIngressWork, } from "../../ingress/index.js";
|
|
@@ -48,16 +48,26 @@ const ASSISTANT_STATUS_HEARTBEAT_MS = 60_000;
|
|
|
48
48
|
*/
|
|
49
49
|
const defaultStore = new InMemoryChannelStore();
|
|
50
50
|
/**
|
|
51
|
-
* Handle `POST /
|
|
51
|
+
* Handle `POST /channels/{name}/events` for a Slack Events API request.
|
|
52
52
|
*
|
|
53
|
-
*
|
|
53
|
+
* Verifies signatures before parsing normal events. Until both Slack
|
|
54
|
+
* credentials are configured, only the inert URL-verification challenge is
|
|
55
|
+
* accepted.
|
|
54
56
|
*/
|
|
55
57
|
export async function handleSlackEventsRequest(request, channel) {
|
|
56
58
|
const signingSecret = channel.signingSecret ?? process.env[SLACK_SIGNING_SECRET_ENV] ?? "";
|
|
57
|
-
|
|
58
|
-
return jsonError(503, "Slack signing secret is not configured");
|
|
59
|
-
}
|
|
59
|
+
const botToken = channel.botToken ?? process.env[SLACK_BOT_TOKEN_ENV] ?? "";
|
|
60
60
|
const rawBody = channel.rawBody ?? (await request.text());
|
|
61
|
+
if (!signingSecret || !botToken) {
|
|
62
|
+
const challenge = unverifiedUrlVerification(rawBody);
|
|
63
|
+
if (challenge !== undefined) {
|
|
64
|
+
return new Response(JSON.stringify({ challenge }), {
|
|
65
|
+
status: 200,
|
|
66
|
+
headers: { "Content-Type": "application/json" },
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return jsonError(503, "Slack credentials are not configured");
|
|
70
|
+
}
|
|
61
71
|
const signature = request.headers.get("x-slack-signature") ?? "";
|
|
62
72
|
const timestamp = request.headers.get("x-slack-request-timestamp") ?? "";
|
|
63
73
|
try {
|
|
@@ -127,12 +137,16 @@ export async function handleSlackEventsRequest(request, channel) {
|
|
|
127
137
|
return new Response("", { status: 200 });
|
|
128
138
|
}
|
|
129
139
|
// Accept + ack first (Slack 3s window). Involvement / link / invoke run after.
|
|
140
|
+
// providerMessageId is a same-process backstop; dual app_mention + message is
|
|
141
|
+
// primarily suppressed in normalize (`covered_by_app_mention`).
|
|
130
142
|
const { delivery, duplicate } = store.acceptDelivery({
|
|
131
143
|
deploymentId,
|
|
132
144
|
channelDefinitionId: channel.name,
|
|
133
145
|
provider: "slack",
|
|
134
146
|
apiAppId: installation.apiAppId,
|
|
135
147
|
eventId: normalized.event.eventId,
|
|
148
|
+
providerMessageId: normalized.event.message?.id,
|
|
149
|
+
conversationId: normalized.event.address.conversationId,
|
|
136
150
|
sourceThreadKey: normalized.sourceThreadKey,
|
|
137
151
|
status: "accepted",
|
|
138
152
|
event: normalized.event,
|
|
@@ -140,7 +154,6 @@ export async function handleSlackEventsRequest(request, channel) {
|
|
|
140
154
|
if (duplicate) {
|
|
141
155
|
return new Response("", { status: 200 });
|
|
142
156
|
}
|
|
143
|
-
const botToken = channel.botToken ?? process.env[SLACK_BOT_TOKEN_ENV] ?? "";
|
|
144
157
|
const invoke = channel.invokeAgent ?? invokeIngressAgent;
|
|
145
158
|
const linkStore = channel.linkStore ?? getIdentityLinkStore();
|
|
146
159
|
// When Connect-with-Slack OAuth is configured, unlinked users must connect
|
|
@@ -274,6 +287,28 @@ export async function handleSlackEventsRequest(request, channel) {
|
|
|
274
287
|
});
|
|
275
288
|
return new Response("", { status: 200 });
|
|
276
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* Extract only Slack's inert URL-verification challenge before an app secret
|
|
292
|
+
* exists. No event, installation, agent invocation, or provider call is
|
|
293
|
+
* reachable through this pre-configuration path.
|
|
294
|
+
*/
|
|
295
|
+
function unverifiedUrlVerification(rawBody) {
|
|
296
|
+
try {
|
|
297
|
+
const text = typeof rawBody === "string" ? rawBody : new TextDecoder().decode(rawBody);
|
|
298
|
+
const body = JSON.parse(text);
|
|
299
|
+
if (body !== null &&
|
|
300
|
+
typeof body === "object" &&
|
|
301
|
+
!Array.isArray(body) &&
|
|
302
|
+
body.type === "url_verification" &&
|
|
303
|
+
typeof body.challenge === "string") {
|
|
304
|
+
return body.challenge;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
// All malformed and non-verification requests fail closed below.
|
|
309
|
+
}
|
|
310
|
+
return undefined;
|
|
311
|
+
}
|
|
277
312
|
function readInstallationFromEnv(body) {
|
|
278
313
|
const apiAppId = process.env[SLACK_API_APP_ID_ENV];
|
|
279
314
|
const teamId = process.env[SLACK_TEAM_ID_ENV];
|