managed-deepagents 0.4.0-dev.72 → 0.4.0-dev.73

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.
Files changed (245) hide show
  1. package/dist/channels/binding.d.ts +3 -5
  2. package/dist/channels/binding.d.ts.map +1 -1
  3. package/dist/channels/binding.js +3 -9
  4. package/dist/channels/binding.js.map +1 -1
  5. package/dist/channels/collect.d.ts +23 -0
  6. package/dist/channels/collect.d.ts.map +1 -0
  7. package/dist/channels/collect.js +46 -0
  8. package/dist/channels/collect.js.map +1 -0
  9. package/dist/channels/github/adapter-core.d.ts +6 -0
  10. package/dist/channels/github/adapter-core.d.ts.map +1 -0
  11. package/dist/channels/github/adapter-core.js +27 -0
  12. package/dist/channels/github/adapter-core.js.map +1 -0
  13. package/dist/channels/github/adapter.d.ts +16 -0
  14. package/dist/channels/github/adapter.d.ts.map +1 -0
  15. package/dist/channels/github/adapter.js +52 -0
  16. package/dist/channels/github/adapter.js.map +1 -0
  17. package/dist/channels/github/define.d.ts +198 -0
  18. package/dist/channels/github/define.d.ts.map +1 -0
  19. package/dist/channels/github/define.js +166 -0
  20. package/dist/channels/github/define.js.map +1 -0
  21. package/dist/channels/github/http.d.ts +25 -0
  22. package/dist/channels/github/http.d.ts.map +1 -0
  23. package/dist/channels/github/http.js +147 -0
  24. package/dist/channels/github/http.js.map +1 -0
  25. package/dist/channels/github/index.d.ts +12 -0
  26. package/dist/channels/github/index.d.ts.map +1 -0
  27. package/dist/channels/github/index.js +10 -0
  28. package/dist/channels/github/index.js.map +1 -0
  29. package/dist/channels/github/normalize.d.ts +32 -0
  30. package/dist/channels/github/normalize.d.ts.map +1 -0
  31. package/dist/channels/github/normalize.js +152 -0
  32. package/dist/channels/github/normalize.js.map +1 -0
  33. package/dist/channels/github/source-thread.d.ts +24 -0
  34. package/dist/channels/github/source-thread.d.ts.map +1 -0
  35. package/dist/channels/github/source-thread.js +54 -0
  36. package/dist/channels/github/source-thread.js.map +1 -0
  37. package/dist/channels/github/transport.d.ts +19 -0
  38. package/dist/channels/github/transport.d.ts.map +1 -0
  39. package/dist/channels/github/transport.js +92 -0
  40. package/dist/channels/github/transport.js.map +1 -0
  41. package/dist/channels/index.d.ts +9 -1
  42. package/dist/channels/index.d.ts.map +1 -1
  43. package/dist/channels/index.js +4 -0
  44. package/dist/channels/index.js.map +1 -1
  45. package/dist/channels/manifest.d.ts +36 -0
  46. package/dist/channels/manifest.d.ts.map +1 -0
  47. package/dist/channels/manifest.js +20 -0
  48. package/dist/channels/manifest.js.map +1 -0
  49. package/dist/channels/plugin.d.ts +61 -0
  50. package/dist/channels/plugin.d.ts.map +1 -0
  51. package/dist/channels/plugin.js +80 -0
  52. package/dist/channels/plugin.js.map +1 -0
  53. package/dist/channels/registry-store.d.ts +12 -0
  54. package/dist/channels/registry-store.d.ts.map +1 -0
  55. package/dist/channels/registry-store.js +18 -0
  56. package/dist/channels/registry-store.js.map +1 -0
  57. package/dist/channels/registry-types.d.ts +32 -0
  58. package/dist/channels/registry-types.d.ts.map +1 -0
  59. package/dist/channels/registry-types.js +5 -0
  60. package/dist/channels/registry-types.js.map +1 -0
  61. package/dist/channels/registry.d.ts +17 -0
  62. package/dist/channels/registry.d.ts.map +1 -0
  63. package/dist/channels/registry.js +37 -0
  64. package/dist/channels/registry.js.map +1 -0
  65. package/dist/channels/runtime.d.ts +2 -2
  66. package/dist/channels/runtime.d.ts.map +1 -1
  67. package/dist/channels/runtime.js.map +1 -1
  68. package/dist/channels/schedule-delivery.d.ts +4 -0
  69. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  70. package/dist/channels/schedule-delivery.js +6 -5
  71. package/dist/channels/schedule-delivery.js.map +1 -1
  72. package/dist/channels/slack/adapter-core.d.ts +6 -0
  73. package/dist/channels/slack/adapter-core.d.ts.map +1 -0
  74. package/dist/channels/slack/adapter-core.js +24 -0
  75. package/dist/channels/slack/adapter-core.js.map +1 -0
  76. package/dist/channels/slack/adapter.d.ts +10 -0
  77. package/dist/channels/slack/adapter.d.ts.map +1 -0
  78. package/dist/channels/slack/adapter.js +22 -0
  79. package/dist/channels/slack/adapter.js.map +1 -0
  80. package/dist/channels/slack/define.d.ts +8 -18
  81. package/dist/channels/slack/define.d.ts.map +1 -1
  82. package/dist/channels/slack/define.js +29 -10
  83. package/dist/channels/slack/define.js.map +1 -1
  84. package/dist/channels/slack/http.d.ts +12 -1
  85. package/dist/channels/slack/http.d.ts.map +1 -1
  86. package/dist/channels/slack/http.js +103 -47
  87. package/dist/channels/slack/http.js.map +1 -1
  88. package/dist/channels/store.d.ts +4 -4
  89. package/dist/channels/store.d.ts.map +1 -1
  90. package/dist/channels/store.js.map +1 -1
  91. package/dist/channels/types.d.ts +4 -4
  92. package/dist/channels/types.d.ts.map +1 -1
  93. package/dist/channels/types.js.map +1 -1
  94. package/dist/connectors/github/index.d.ts +80 -0
  95. package/dist/connectors/github/index.d.ts.map +1 -0
  96. package/dist/connectors/github/index.js +118 -0
  97. package/dist/connectors/github/index.js.map +1 -0
  98. package/dist/connectors/github/sandbox.d.ts +57 -0
  99. package/dist/connectors/github/sandbox.d.ts.map +1 -0
  100. package/dist/connectors/github/sandbox.js +534 -0
  101. package/dist/connectors/github/sandbox.js.map +1 -0
  102. package/dist/connectors/{langsmith.d.ts → langsmith/index.d.ts} +3 -3
  103. package/dist/connectors/langsmith/index.d.ts.map +1 -0
  104. package/dist/connectors/{langsmith.js → langsmith/index.js} +4 -4
  105. package/dist/connectors/langsmith/index.js.map +1 -0
  106. package/dist/{runtime/langsmith-connector.d.ts → connectors/langsmith/routes.d.ts} +4 -4
  107. package/dist/connectors/langsmith/routes.d.ts.map +1 -0
  108. package/dist/{runtime/langsmith-connector.js → connectors/langsmith/routes.js} +12 -6
  109. package/dist/connectors/langsmith/routes.js.map +1 -0
  110. package/dist/{connectors.d.ts → connectors/mcp/index.d.ts} +2 -2
  111. package/dist/connectors/mcp/index.d.ts.map +1 -0
  112. package/dist/{connectors.js → connectors/mcp/index.js} +3 -3
  113. package/dist/connectors/mcp/index.js.map +1 -0
  114. package/dist/{runtime/connectors-manager.d.ts → connectors/mcp/load.d.ts} +2 -2
  115. package/dist/connectors/mcp/load.d.ts.map +1 -0
  116. package/dist/{runtime/connectors-manager.js → connectors/mcp/load.js} +1 -1
  117. package/dist/connectors/mcp/load.js.map +1 -0
  118. package/dist/identity/connect-paths.d.ts +8 -0
  119. package/dist/identity/connect-paths.d.ts.map +1 -0
  120. package/dist/identity/connect-paths.js +11 -0
  121. package/dist/identity/connect-paths.js.map +1 -0
  122. package/dist/identity/connect-provider-store.d.ts +16 -0
  123. package/dist/identity/connect-provider-store.d.ts.map +1 -0
  124. package/dist/identity/connect-provider-store.js +27 -0
  125. package/dist/identity/connect-provider-store.js.map +1 -0
  126. package/dist/identity/connect-provider-types.d.ts +68 -0
  127. package/dist/identity/connect-provider-types.d.ts.map +1 -0
  128. package/dist/identity/connect-provider-types.js +8 -0
  129. package/dist/identity/connect-provider-types.js.map +1 -0
  130. package/dist/identity/connect-provider.d.ts +33 -0
  131. package/dist/identity/connect-provider.d.ts.map +1 -0
  132. package/dist/identity/connect-provider.js +125 -0
  133. package/dist/identity/connect-provider.js.map +1 -0
  134. package/dist/identity/github/connect-http.d.ts +33 -0
  135. package/dist/identity/github/connect-http.d.ts.map +1 -0
  136. package/dist/identity/github/connect-http.js +111 -0
  137. package/dist/identity/github/connect-http.js.map +1 -0
  138. package/dist/identity/github/credentials-store.d.ts +76 -0
  139. package/dist/identity/github/credentials-store.d.ts.map +1 -0
  140. package/dist/identity/github/credentials-store.js +257 -0
  141. package/dist/identity/github/credentials-store.js.map +1 -0
  142. package/dist/identity/github/credentials.d.ts +82 -0
  143. package/dist/identity/github/credentials.d.ts.map +1 -0
  144. package/dist/identity/github/credentials.js +171 -0
  145. package/dist/identity/github/credentials.js.map +1 -0
  146. package/dist/identity/github/index.d.ts +10 -0
  147. package/dist/identity/github/index.d.ts.map +1 -0
  148. package/dist/identity/github/index.js +9 -0
  149. package/dist/identity/github/index.js.map +1 -0
  150. package/dist/identity/github/oauth.d.ts +50 -0
  151. package/dist/identity/github/oauth.d.ts.map +1 -0
  152. package/dist/identity/github/oauth.js +146 -0
  153. package/dist/identity/github/oauth.js.map +1 -0
  154. package/dist/identity/index.d.ts +2 -1
  155. package/dist/identity/index.d.ts.map +1 -1
  156. package/dist/identity/index.js +30 -0
  157. package/dist/identity/index.js.map +1 -1
  158. package/dist/identity/loopback.d.ts +8 -0
  159. package/dist/identity/loopback.d.ts.map +1 -0
  160. package/dist/identity/loopback.js +18 -0
  161. package/dist/identity/loopback.js.map +1 -0
  162. package/dist/identity/slack/connect-http.d.ts +36 -0
  163. package/dist/identity/slack/connect-http.d.ts.map +1 -0
  164. package/dist/identity/slack/connect-http.js +111 -0
  165. package/dist/identity/slack/connect-http.js.map +1 -0
  166. package/dist/identity/slack/index.d.ts +9 -0
  167. package/dist/identity/slack/index.d.ts.map +1 -0
  168. package/dist/identity/slack/index.js +8 -0
  169. package/dist/identity/slack/index.js.map +1 -0
  170. package/dist/identity/slack/links.d.ts.map +1 -0
  171. package/dist/identity/{links.js → slack/links.js} +2 -12
  172. package/dist/identity/slack/links.js.map +1 -0
  173. package/dist/identity/{slack-oauth.d.ts → slack/oauth.d.ts} +1 -1
  174. package/dist/identity/slack/oauth.d.ts.map +1 -0
  175. package/dist/identity/{slack-oauth.js → slack/oauth.js} +1 -1
  176. package/dist/identity/slack/oauth.js.map +1 -0
  177. package/dist/identity/types.d.ts +12 -1
  178. package/dist/identity/types.d.ts.map +1 -1
  179. package/dist/index.d.ts +13 -6
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.js +7 -2
  182. package/dist/index.js.map +1 -1
  183. package/dist/runtime/auth.d.ts +6 -0
  184. package/dist/runtime/auth.d.ts.map +1 -1
  185. package/dist/runtime/auth.js +19 -8
  186. package/dist/runtime/auth.js.map +1 -1
  187. package/dist/runtime/backend.d.ts +52 -0
  188. package/dist/runtime/backend.d.ts.map +1 -0
  189. package/dist/runtime/backend.js +165 -0
  190. package/dist/runtime/backend.js.map +1 -0
  191. package/dist/runtime/connector.d.ts +43 -12
  192. package/dist/runtime/connector.d.ts.map +1 -1
  193. package/dist/runtime/connector.js +25 -10
  194. package/dist/runtime/connector.js.map +1 -1
  195. package/dist/runtime/cors.js +1 -1
  196. package/dist/runtime/identity-http.d.ts +9 -3
  197. package/dist/runtime/identity-http.d.ts.map +1 -1
  198. package/dist/runtime/identity-http.js +24 -34
  199. package/dist/runtime/identity-http.js.map +1 -1
  200. package/dist/runtime/identity-runtime.d.ts +9 -28
  201. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  202. package/dist/runtime/identity-runtime.js +30 -65
  203. package/dist/runtime/identity-runtime.js.map +1 -1
  204. package/dist/runtime/index.d.ts +9 -3
  205. package/dist/runtime/index.d.ts.map +1 -1
  206. package/dist/runtime/index.js +26 -68
  207. package/dist/runtime/index.js.map +1 -1
  208. package/dist/runtime/memory/index.d.ts +2 -2
  209. package/dist/runtime/memory/index.d.ts.map +1 -1
  210. package/dist/runtime/memory/index.js +2 -2
  211. package/dist/runtime/memory/index.js.map +1 -1
  212. package/dist/runtime/memory/mounts.d.ts +15 -1
  213. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  214. package/dist/runtime/memory/mounts.js +31 -7
  215. package/dist/runtime/memory/mounts.js.map +1 -1
  216. package/dist/runtime/memory/paths.d.ts +0 -5
  217. package/dist/runtime/memory/paths.d.ts.map +1 -1
  218. package/dist/runtime/memory/paths.js +0 -24
  219. package/dist/runtime/memory/paths.js.map +1 -1
  220. package/dist/runtime/memory/seed.d.ts +0 -16
  221. package/dist/runtime/memory/seed.d.ts.map +1 -1
  222. package/dist/runtime/memory/seed.js +0 -43
  223. package/dist/runtime/memory/seed.js.map +1 -1
  224. package/dist/runtime/sandbox-manager.d.ts +20 -2
  225. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  226. package/dist/runtime/sandbox-manager.js +102 -9
  227. package/dist/runtime/sandbox-manager.js.map +1 -1
  228. package/package.json +11 -7
  229. package/dist/connectors/langsmith.d.ts.map +0 -1
  230. package/dist/connectors/langsmith.js.map +0 -1
  231. package/dist/connectors.d.ts.map +0 -1
  232. package/dist/connectors.js.map +0 -1
  233. package/dist/identity/links.d.ts.map +0 -1
  234. package/dist/identity/links.js.map +0 -1
  235. package/dist/identity/slack-connect-http.d.ts +0 -21
  236. package/dist/identity/slack-connect-http.d.ts.map +0 -1
  237. package/dist/identity/slack-connect-http.js +0 -129
  238. package/dist/identity/slack-connect-http.js.map +0 -1
  239. package/dist/identity/slack-oauth.d.ts.map +0 -1
  240. package/dist/identity/slack-oauth.js.map +0 -1
  241. package/dist/runtime/connectors-manager.d.ts.map +0 -1
  242. package/dist/runtime/connectors-manager.js.map +0 -1
  243. package/dist/runtime/langsmith-connector.d.ts.map +0 -1
  244. package/dist/runtime/langsmith-connector.js.map +0 -1
  245. /package/dist/identity/{links.d.ts → slack/links.d.ts} +0 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Lazy LangSmith sandbox backend used by {@link compileManagedAgent}.
3
+ *
4
+ * One class, frozen per-run identity: construct unbound for static mounts, or
5
+ * call {@link LazyManagedSandboxBackend.forRuntime} so concurrent requests each
6
+ * keep their own `configurable` (thread id + actor) without sharing mutable state.
7
+ */
8
+ import { resolveRuntimeConfigurable } from "./identity-runtime.js";
9
+ import { invalidateManagedSandbox, isTransientSandboxError, resolveManagedSandbox, sandboxScopeKey, } from "./sandbox-manager.js";
10
+ /**
11
+ * Process-scoped resolve cache shared by all {@link LazyManagedSandboxBackend}
12
+ * instances created from the same factory (unbound + per-run siblings).
13
+ */
14
+ class SandboxResolveCache {
15
+ pendingByScope = new Map();
16
+ resolvedByScope = new Map();
17
+ recreatedScopes = new Set();
18
+ idFor(deps, config) {
19
+ return (this.resolvedByScope.get(sandboxScopeKey(deps.sandbox, config))?.id ?? "");
20
+ }
21
+ resolve(deps, config) {
22
+ const key = sandboxScopeKey(deps.sandbox, config);
23
+ const existing = this.pendingByScope.get(key);
24
+ if (existing) {
25
+ return existing;
26
+ }
27
+ const pending = resolveManagedSandbox(deps.sandbox, deps.setupScript, config, {
28
+ connectors: deps.connectors === undefined ? undefined : [...deps.connectors],
29
+ identity: deps.identity,
30
+ }).then((backend) => {
31
+ const managed = backend;
32
+ this.resolvedByScope.set(key, managed);
33
+ return managed;
34
+ }, (error) => {
35
+ if (this.pendingByScope.get(key) === pending) {
36
+ this.pendingByScope.delete(key);
37
+ }
38
+ throw error;
39
+ });
40
+ this.pendingByScope.set(key, pending);
41
+ return pending;
42
+ }
43
+ async withRetry(deps, config, operation) {
44
+ const key = sandboxScopeKey(deps.sandbox, config);
45
+ try {
46
+ return await operation(await this.resolve(deps, config));
47
+ }
48
+ catch (error) {
49
+ if (this.recreatedScopes.has(key) || !isTransientSandboxError(error)) {
50
+ throw error;
51
+ }
52
+ this.recreatedScopes.add(key);
53
+ invalidateManagedSandbox(deps.sandbox, config);
54
+ this.pendingByScope.delete(key);
55
+ this.resolvedByScope.delete(key);
56
+ return await operation(await this.resolve(deps, config));
57
+ }
58
+ }
59
+ }
60
+ /**
61
+ * Lazy sandbox backend. Identity is frozen at construction — use
62
+ * {@link forRuntime} for per-request facades that share the same resolve cache.
63
+ */
64
+ export class LazyManagedSandboxBackend {
65
+ deps;
66
+ cache;
67
+ boundConfigurable;
68
+ constructor(deps, cache, boundConfigurable) {
69
+ this.deps = deps;
70
+ this.cache = cache;
71
+ this.boundConfigurable = boundConfigurable;
72
+ }
73
+ /** Build the unbound backend used for static mounts / tests. */
74
+ static create(deps) {
75
+ return new LazyManagedSandboxBackend(deps, new SandboxResolveCache(), undefined);
76
+ }
77
+ /**
78
+ * Per-run sibling with this request's `configurable` frozen. Safe under
79
+ * concurrent Slack/web requests; shares the process resolve cache.
80
+ */
81
+ forRuntime(runtime) {
82
+ const configurable = resolveRuntimeConfigurable(runtime);
83
+ const scoped = new LazyManagedSandboxBackend(this.deps, this.cache, configurable);
84
+ scoped.prefetch().catch(() => undefined);
85
+ return scoped;
86
+ }
87
+ get id() {
88
+ // deepagents' `isSandboxProtocol` / `isSandboxBackend` require a non-empty
89
+ // string `id` (and snapshot it at adapt time). Return the resolved sandbox
90
+ // id when available; otherwise a stable pending placeholder so execute is
91
+ // not stripped before the first resolve. Never throw — a missing thread_id
92
+ // must not crash CompositeBackend construction.
93
+ try {
94
+ const config = this.runConfig();
95
+ const resolved = this.cache.idFor(this.deps, config);
96
+ if (resolved) {
97
+ return resolved;
98
+ }
99
+ return `pending:${sandboxScopeKey(this.deps.sandbox, config)}`;
100
+ }
101
+ catch {
102
+ return "pending:sandbox";
103
+ }
104
+ }
105
+ async ls(path = "/") {
106
+ return this.withRetry((backend) => backend.ls(path));
107
+ }
108
+ async read(filePath, offset, limit) {
109
+ return this.withRetry((backend) => backend.read(filePath, offset, limit));
110
+ }
111
+ async readRaw(filePath) {
112
+ return this.withRetry((backend) => backend.readRaw(filePath));
113
+ }
114
+ async grep(pattern, path, glob) {
115
+ return this.withRetry((backend) => backend.grep(pattern, path, glob));
116
+ }
117
+ async glob(pattern, path) {
118
+ return this.withRetry((backend) => backend.glob(pattern, path));
119
+ }
120
+ async write(filePath, content) {
121
+ return this.withRetry((backend) => backend.write(filePath, content));
122
+ }
123
+ async edit(filePath, oldString, newString, replaceAll = false) {
124
+ return this.withRetry((backend) => backend.edit(filePath, oldString, newString, replaceAll));
125
+ }
126
+ async delete(filePath) {
127
+ return this.withRetry((backend) => backend.delete?.(filePath));
128
+ }
129
+ async uploadFiles(files) {
130
+ return this.withRetry((backend) => backend.uploadFiles?.(files));
131
+ }
132
+ async downloadFiles(paths) {
133
+ return this.withRetry((backend) => backend.downloadFiles?.(paths));
134
+ }
135
+ async execute(command) {
136
+ return this.withRetry((backend) => backend.execute(command));
137
+ }
138
+ prefetch() {
139
+ return this.cache.resolve(this.deps, this.runConfig());
140
+ }
141
+ withRetry(operation) {
142
+ return this.cache.withRetry(this.deps, this.runConfig(), operation);
143
+ }
144
+ runConfig() {
145
+ const closed = this.deps.runConfig?.configurable;
146
+ const configurable = resolveRuntimeConfigurable({
147
+ configurable: {
148
+ ...closed,
149
+ ...this.boundConfigurable,
150
+ },
151
+ });
152
+ if (!configurable) {
153
+ return this.deps.runConfig;
154
+ }
155
+ return {
156
+ ...this.deps.runConfig,
157
+ configurable: {
158
+ ...closed,
159
+ ...this.boundConfigurable,
160
+ ...configurable,
161
+ },
162
+ };
163
+ }
164
+ }
165
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/runtime/backend.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,20 @@
2
2
  * The managed connector protocol.
3
3
  *
4
4
  * A connector is any object carrying {@link CONNECTOR_BRAND} that knows how to
5
- * contribute to a managed Deep Agent. MCP is one built-in implementation
6
- * (contributes tools); the LangSmith connector is another (mounts HTTP routes).
7
- * Third parties implement the same interface with their own `kind` — nothing
8
- * about the built-ins is privileged.
5
+ * contribute to a managed Deep Agent. Built-ins (MCP tools, LangSmith HTTP,
6
+ * GitHub sandbox) implement the same interface with their own `kind` — nothing
7
+ * about them is privileged at the protocol level.
9
8
  *
10
9
  * Discovery is name-agnostic: the CLI globs every module under `connectors/`,
11
10
  * imports the single connector each one exposes as its default export, and hands
12
11
  * them to {@link collectConnectors}, which validates the brand at build/startup.
13
- * The two generated entrypoints each call the hook they care about — the agent
14
- * graph calls {@link Connector.tools}, the managed HTTP app calls
15
- * {@link Connector.http}.
12
+ * Entrypoints call the hooks they care about — the agent graph calls
13
+ * {@link Connector.tools}, the managed HTTP app calls {@link Connector.http},
14
+ * and sandbox provisioning calls {@link Connector.sandbox}.
16
15
  */
17
- import type { IdentityConfig, RuntimeIdentity } from "../identity/index.js";
16
+ import type { SandboxBackendProtocolV2 } from "deepagents";
17
+ import type { IdentityConfig, IdentityDefinition, RuntimeIdentity } from "../identity/index.js";
18
+ import type { ManagedRunConfig } from "./types.js";
18
19
  /**
19
20
  * Realm-global brand marking a value as a managed connector. `Symbol.for` keeps
20
21
  * the identity stable across duplicate module instances (e.g. a connector built
@@ -55,6 +56,27 @@ export interface HttpContext {
55
56
  */
56
57
  requireIdentity(request: Request): Promise<RuntimeIdentity>;
57
58
  }
59
+ /**
60
+ * Context handed to {@link Connector.sandbox} when a managed sandbox is created
61
+ * or reused for a thread. Connectors close over their own config and use
62
+ * {@link SandboxContext.backend} to provision checkout/CLI/credentials state.
63
+ */
64
+ export interface SandboxContext {
65
+ /** Sandbox backend surface (execute + optional file upload). */
66
+ readonly backend: ConnectorSandboxBackend;
67
+ /**
68
+ * `"create"` on first provision; `"reuse"` when a new thread joins an existing
69
+ * sandbox; `"credentials"` on later messages in an already-synced thread
70
+ * (refresh token / CLI wiring without re-cloning).
71
+ */
72
+ readonly mode: "create" | "reuse" | "credentials";
73
+ /** Per-run LangGraph config (identity + thread scoping). */
74
+ readonly config?: ManagedRunConfig;
75
+ /** Root identity declaration, when the project opts into managed identity. */
76
+ readonly identity?: IdentityDefinition;
77
+ }
78
+ /** Backend surface connectors may use during sandbox provisioning. */
79
+ export type ConnectorSandboxBackend = Pick<SandboxBackendProtocolV2, "execute"> & Partial<Pick<SandboxBackendProtocolV2, "uploadFiles">>;
58
80
  /**
59
81
  * The router a connector uses to register routes. Structural so the managed app
60
82
  * can back it with Hono without leaking the framework type into the contract.
@@ -94,18 +116,20 @@ export type PublicRouteHandler = (request: Request) => Response | Promise<Respon
94
116
  /** Tools a connector contributes to the agent. Kept structural (`unknown[]`). */
95
117
  export type ConnectorToolList = unknown[];
96
118
  /**
97
- * A managed connector. Implement at least one of {@link Connector.tools} or
98
- * {@link Connector.http}; a connector implementing neither does nothing and is
99
- * rejected by {@link collectConnectors}.
119
+ * A managed connector. Implement at least one of {@link Connector.tools},
120
+ * {@link Connector.http}, or {@link Connector.sandbox}; a connector implementing
121
+ * none does nothing and is rejected by {@link collectConnectors}.
100
122
  */
101
123
  export interface Connector {
102
124
  readonly [CONNECTOR_BRAND]: true;
103
- /** Diagnostic label, e.g. `"mcp_servers"` or `"langsmith"`. Not used for routing. */
125
+ /** Diagnostic label and HTTP mount namespace, e.g. `"mcp_servers"` or `"langsmith"`. */
104
126
  readonly kind: string;
105
127
  /** Contribute tools during agent-graph construction. MCP implements this. */
106
128
  tools?(ctx: ToolContext): ConnectorToolList | Promise<ConnectorToolList>;
107
129
  /** Mount HTTP routes during managed-app construction. LangSmith implements this. */
108
130
  http?(ctx: HttpContext): void | Promise<void>;
131
+ /** Provision/refresh sandbox state when a managed sandbox is created or reused. */
132
+ sandbox?(ctx: SandboxContext): void | Promise<void>;
109
133
  }
110
134
  /**
111
135
  * Run the `tools` hook of every connector that implements it and concatenate the
@@ -113,6 +137,13 @@ export interface Connector {
113
137
  * HTTP-only connectors) contribute nothing.
114
138
  */
115
139
  export declare function loadConnectorTools(connectors: readonly Connector[], ctx?: ToolContext): Promise<unknown[]>;
140
+ /**
141
+ * Run the `sandbox` hook of every connector that implements it, preserving order.
142
+ * Connectors without a `sandbox` hook contribute nothing.
143
+ */
144
+ export declare function runConnectorSandboxHooks(connectors: readonly Connector[] | undefined, ctx: SandboxContext): Promise<void>;
145
+ /** True when at least one connector implements {@link Connector.sandbox}. */
146
+ export declare function hasSandboxConnectors(connectors: readonly Connector[] | undefined): boolean;
116
147
  /** A discovered `connectors/` module paired with its source path for diagnostics. */
117
148
  export interface DiscoveredConnectorModule {
118
149
  /** Project-relative path of the module, used in error messages. */
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/runtime/connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/runtime/connector.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,16 @@
2
2
  * The managed connector protocol.
3
3
  *
4
4
  * A connector is any object carrying {@link CONNECTOR_BRAND} that knows how to
5
- * contribute to a managed Deep Agent. MCP is one built-in implementation
6
- * (contributes tools); the LangSmith connector is another (mounts HTTP routes).
7
- * Third parties implement the same interface with their own `kind` — nothing
8
- * about the built-ins is privileged.
5
+ * contribute to a managed Deep Agent. Built-ins (MCP tools, LangSmith HTTP,
6
+ * GitHub sandbox) implement the same interface with their own `kind` — nothing
7
+ * about them is privileged at the protocol level.
9
8
  *
10
9
  * Discovery is name-agnostic: the CLI globs every module under `connectors/`,
11
10
  * imports the single connector each one exposes as its default export, and hands
12
11
  * them to {@link collectConnectors}, which validates the brand at build/startup.
13
- * The two generated entrypoints each call the hook they care about — the agent
14
- * graph calls {@link Connector.tools}, the managed HTTP app calls
15
- * {@link Connector.http}.
12
+ * Entrypoints call the hooks they care about — the agent graph calls
13
+ * {@link Connector.tools}, the managed HTTP app calls {@link Connector.http},
14
+ * and sandbox provisioning calls {@link Connector.sandbox}.
16
15
  */
17
16
  /**
18
17
  * Realm-global brand marking a value as a managed connector. `Symbol.for` keeps
@@ -34,6 +33,21 @@ export async function loadConnectorTools(connectors, ctx = {}) {
34
33
  }
35
34
  return tools;
36
35
  }
36
+ /**
37
+ * Run the `sandbox` hook of every connector that implements it, preserving order.
38
+ * Connectors without a `sandbox` hook contribute nothing.
39
+ */
40
+ export async function runConnectorSandboxHooks(connectors, ctx) {
41
+ for (const connector of connectors ?? []) {
42
+ if (typeof connector.sandbox === "function") {
43
+ await connector.sandbox(ctx);
44
+ }
45
+ }
46
+ }
47
+ /** True when at least one connector implements {@link Connector.sandbox}. */
48
+ export function hasSandboxConnectors(connectors) {
49
+ return (connectors ?? []).some((connector) => typeof connector.sandbox === "function");
50
+ }
37
51
  /** Narrow an arbitrary value to a {@link Connector} by its brand and hooks. */
38
52
  export function isConnector(value) {
39
53
  if (typeof value !== "object" || value === null) {
@@ -67,9 +81,10 @@ export function collectConnectors(modules) {
67
81
  `of a connector builder such as \`defineMcpServers(...)\`.`);
68
82
  }
69
83
  if (typeof candidate.tools !== "function" &&
70
- typeof candidate.http !== "function") {
71
- throw new Error(`${source} default export (kind "${candidate.kind}") implements neither ` +
72
- `\`tools\` nor \`http\` and would do nothing.`);
84
+ typeof candidate.http !== "function" &&
85
+ typeof candidate.sandbox !== "function") {
86
+ throw new Error(`${source} default export (kind "${candidate.kind}") implements none of ` +
87
+ `\`tools\`, \`http\`, or \`sandbox\` and would do nothing.`);
73
88
  }
74
89
  if (seen.has(candidate)) {
75
90
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/runtime/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAqG1E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAgC,EAChC,GAAG,GAAgB,EAAE;IAErB,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAUD,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAI,KAAsC,CAAC,eAAe,CAAC,CAAC;IACzE,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA6C;IAE7C,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAElC,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,+DAA+D;gBACtE,iDAAiD;gBACjD,8EAA8E,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,gEAAgE;gBACvE,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,IACE,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU;YACrC,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,EACpC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,0BAA0B,SAAS,CAAC,IAAI,wBAAwB;gBACvE,8CAA8C,CACjD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../../src/runtime/connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAkI1E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAgC,EAChC,GAAG,GAAgB,EAAE;IAErB,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAA4C,EAC5C,GAAmB;IAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAClC,UAA4C;IAE5C,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5B,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,CACvD,CAAC;AACJ,CAAC;AAUD,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAI,KAAsC,CAAC,eAAe,CAAC,CAAC;IACzE,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA6C;IAE7C,MAAM,SAAS,GAAgB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAElC,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,+DAA+D;gBACtE,iDAAiD;gBACjD,8EAA8E,CACjF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,gEAAgE;gBACvE,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,IACE,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU;YACrC,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;YACpC,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,EACvC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,0BAA0B,SAAS,CAAC,IAAI,wBAAwB;gBACvE,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * `mda deploy` still derives `CORS_ALLOW_ORIGINS` from
11
11
  * {@link MDA_PUBLIC_APP_URL_ENV} plus optional {@link MDA_CORS_ORIGINS_ENV}.
12
12
  */
13
- import { MDA_PUBLIC_APP_URL_ENV } from "../identity/slack-oauth.js";
13
+ import { MDA_PUBLIC_APP_URL_ENV } from "../identity/slack/oauth.js";
14
14
  /** Path prefixes that receive managed-app CORS (not built-in Agent Server routes). */
15
15
  export const MDA_CORS_PATH_PREFIXES = [
16
16
  "/identity",
@@ -1,6 +1,6 @@
1
1
  import { Hono } from "hono";
2
2
  import type { IdentityDefinition } from "../identity/index.js";
3
- import type { ChannelManifest } from "../channels/slack/define.js";
3
+ import type { ChannelManifest } from "../channels/manifest.js";
4
4
  import type { Connector } from "./connector.js";
5
5
  /** Inputs the managed HTTP app is built from. */
6
6
  export interface ManagedHttpAppInputs {
@@ -9,10 +9,16 @@ export interface ManagedHttpAppInputs {
9
9
  /** Discovered connectors; those implementing `http` mount routes. */
10
10
  connectors?: Connector[];
11
11
  /**
12
- * Channel manifests emitted at compile time (`channels.json`). Each Slack
13
- * entry mounts a public Events API route under `/channels/{name}/events`.
12
+ * Channel manifests (optional when {@link channelDefinitions} is present).
13
+ * Prefer live definitions manifests are derived via `toManifest`.
14
14
  */
15
15
  channels?: Record<string, ChannelManifest>;
16
+ /**
17
+ * Live channel declarations from `_mda_channels`. Keyed by file-stem name.
18
+ * When set, adapters are registered and manifests are derived from each
19
+ * branded definition's `toManifest`.
20
+ */
21
+ channelDefinitions?: Record<string, unknown>;
16
22
  }
17
23
  /**
18
24
  * Build the single managed HTTP app mounted via `langgraph.json` `http.app`.
@@ -1 +1 @@
1
- {"version":3,"file":"identity-http.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAOnE,OAAO,KAAK,EACV,SAAS,EAKV,MAAM,gBAAgB,CAAC;AAUxB,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,qEAAqE;IACrE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC5C;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAqCtE"}
1
+ {"version":3,"file":"identity-http.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EACV,SAAS,EAKV,MAAM,gBAAgB,CAAC;AAUxB,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,qEAAqE;IACrE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAmCtE"}
@@ -1,7 +1,8 @@
1
1
  import { Hono } from "hono";
2
2
  import { cors } from "hono/cors";
3
- import { handleSlackEventsRequest } from "../channels/slack/http.js";
4
- import { mountSlackConnectRoutes, projectHasSlackChannel, } from "../identity/slack-connect-http.js";
3
+ import { manifestsFromChannelDefinitions } from "../channels/plugin.js";
4
+ import { getChannelAdapter } from "../channels/registry.js";
5
+ import { mountIdentityConnectProviders } from "../identity/connect-provider.js";
5
6
  import { resolveRequestIdentity } from "./auth.js";
6
7
  import { isManagedCorsPath, matchCorsOrigin, MDA_CORS_ALLOW_HEADERS, MDA_CORS_ALLOW_METHODS, resolveCorsAllowlist, } from "./cors.js";
7
8
  import { issueGuestToken } from "./validated-token.js";
@@ -40,23 +41,14 @@ export function buildManagedHttpApp(inputs) {
40
41
  mountConnectorRoutes(app, connector, inputs.identity?.config, mounted);
41
42
  }
42
43
  }
43
- mountChannelRoutes(app, inputs.channels, mounted);
44
- // Connect-with-Slack only when the project declares a Slack channel.
45
- if (inputs.identity && projectHasSlackChannel(inputs.channels)) {
46
- mountSlackConnectRoutes(app, inputs.identity.config);
47
- for (const route of [
48
- { method: "get", path: "/identity/slack/status", secured: true },
49
- { method: "get", path: "/identity/slack/connect", secured: true },
50
- { method: "get", path: "/identity/slack/callback", secured: false },
51
- { method: "delete", path: "/identity/slack/link", secured: true },
52
- ]) {
53
- mounted.push({
54
- connector: "identity:slack-connect",
55
- method: route.method,
56
- path: route.path,
57
- secured: route.secured,
58
- });
59
- }
44
+ const channels = inputs.channelDefinitions &&
45
+ Object.keys(inputs.channelDefinitions).length > 0
46
+ ? manifestsFromChannelDefinitions(inputs.channelDefinitions)
47
+ : inputs.channels;
48
+ mountChannelRoutes(app, channels, inputs.channelDefinitions, mounted);
49
+ // Connect-with-X: only providers listed on identity.connect.
50
+ if (inputs.identity) {
51
+ mountIdentityConnectProviders(app, inputs.identity.config, { channels, hasIdentity: true }, mounted, { providers: inputs.identity.config.connect ?? [] });
60
52
  }
61
53
  logConnectorSurface(mounted);
62
54
  return app;
@@ -102,17 +94,19 @@ function mountIdentityRoutes(app, identity) {
102
94
  });
103
95
  }
104
96
  /**
105
- * Mount public Slack Events routes for each channel manifest.
97
+ * Mount public Events routes for each channel manifest via the provider registry.
106
98
  *
107
- * Channel ingress authenticates via Slack request signatures — these routes
108
- * stay public at the LangGraph auth layer (middleware_first).
99
+ * Channel ingress authenticates inside the adapter (Slack signatures, GitHub
100
+ * HMAC, …) — these routes stay public at the LangGraph auth layer.
109
101
  */
110
- function mountChannelRoutes(app, channels, mounted) {
102
+ function mountChannelRoutes(app, channels, channelDefinitions, mounted) {
111
103
  if (!channels)
112
104
  return;
113
105
  for (const [name, manifest] of Object.entries(channels)) {
114
- if (manifest.provider !== "slack")
115
- continue;
106
+ const adapter = getChannelAdapter(manifest.provider);
107
+ if (!adapter) {
108
+ throw new Error(`No channel adapter registered for provider "${manifest.provider}" (channel "${name}")`);
109
+ }
116
110
  const path = `/channels/${name}/events`;
117
111
  mounted.push({
118
112
  connector: `channel:${name}`,
@@ -120,19 +114,15 @@ function mountChannelRoutes(app, channels, mounted) {
120
114
  path,
121
115
  secured: false,
122
116
  });
117
+ const definition = channelDefinitions?.[name];
123
118
  app.post(path, async (c) => {
124
119
  // Read the body through Hono so signature verification sees the same
125
- // bytes Slack signed (platform middleware may otherwise consume `raw`).
120
+ // bytes the provider signed (platform middleware may otherwise consume `raw`).
126
121
  const rawBody = await c.req.text();
127
- return handleSlackEventsRequest(c.req.raw, {
122
+ return adapter.handleEventsRequest(c.req.raw, {
128
123
  name,
129
- config: {
130
- on: manifest.triggers,
131
- autoReply: manifest.autoReply,
132
- mentionBehavior: manifest.mentionBehavior,
133
- filters: manifest.filters,
134
- conversation: manifest.conversation,
135
- },
124
+ manifest,
125
+ definition,
136
126
  rawBody,
137
127
  });
138
128
  });
@@ -1 +1 @@
1
- {"version":3,"file":"identity-http.js","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-http.js","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { IdentityConfig, MemoryScope, RuntimeIdentity, Tenancy } from "../identity/index.js";
2
1
  import type { RuntimeChannel } from "../channels/types.js";
2
+ import type { MemoryScope, RuntimeIdentity, Tenancy } from "../identity/index.js";
3
3
  import type { ConfigurableCarrier } from "./types.js";
4
4
  /** Override ambient LangGraph configurable resolution. Test-only. */
5
5
  export declare function setAmbientConfigurableForTests(loader?: () => Record<string, unknown> | undefined): void;
@@ -18,6 +18,10 @@ export declare function setAmbientConfigurableForTests(loader?: () => Record<str
18
18
  * ambient and break first-turn actor memory remounts.
19
19
  */
20
20
  export declare function resolveRuntimeConfigurable(runtime: RuntimeConfigLike | undefined): Record<string, unknown> | undefined;
21
+ /** Read `configurable` from a flat runtime or nested `ToolRuntime.config`. */
22
+ export declare function configurableFromRuntime(runtime: RuntimeConfigLike | undefined): Record<string, unknown> | undefined;
23
+ /** `configurable` from the running LangGraph node, if any. */
24
+ export declare function resolveAmbientConfigurable(): Record<string, unknown> | undefined;
21
25
  /**
22
26
  * Build the frozen identity envelope for the current run from the trusted
23
27
  * `langgraph_auth_user` the custom-auth handler produced. Returns
@@ -29,18 +33,11 @@ export declare function resolveRuntimeConfigurable(runtime: RuntimeConfigLike |
29
33
  * during local Studio runs.
30
34
  */
31
35
  export declare function buildRuntimeIdentity(configurable: Record<string, unknown> | undefined): RuntimeIdentity | undefined;
32
- /**
33
- * The durable Store namespace for the run, per `scoping.memory`. A
34
- * `deploymentId` prefix isolates deployments; identity segments follow. Returns
35
- * `undefined` for `none` (no durable memory). Fail-closed: an `actor` scope with
36
- * no actor already rejects at ingress, so the segments are never empty here.
37
- */
38
- export declare function memoryNamespace(cfg: IdentityConfig, ident: RuntimeIdentity, deploymentId: string): string[] | undefined;
39
36
  /**
40
37
  * The runtime the managed seam sees: the shared `configurable` carrier, plus the
41
38
  * optional nested `config` (e.g. LangGraph `ToolRuntime.config`) and the frozen
42
- * `identity` envelope the seam layers on. Single source for the tool, middleware,
43
- * and memory-namespace helpers.
39
+ * `identity` envelope the seam layers on. Single source for the tool and
40
+ * middleware helpers.
44
41
  */
45
42
  export interface RuntimeConfigLike extends ConfigurableCarrier {
46
43
  identity?: RuntimeIdentity;
@@ -49,19 +46,10 @@ export interface RuntimeConfigLike extends ConfigurableCarrier {
49
46
  configurable?: Record<string, unknown>;
50
47
  };
51
48
  }
52
- /**
53
- * Resolve the durable memory namespace for a run directly from the runtime the
54
- * memory `StoreBackend` receives, per `scoping.memory`. This is the
55
- * plug-in point for the (deferred) Store-backed memory: a `StoreBackend`
56
- * namespace factory becomes `(ctx) => memoryNamespaceFor(ctx.runtime, cfg, id)`.
57
- * Returns `undefined` when the run has no durable namespace (`none`, or a
58
- * per-actor scope with no resolved actor).
59
- */
60
- export declare function memoryNamespaceFor(runtime: RuntimeConfigLike | undefined, cfg: IdentityConfig, deploymentId: string): string[] | undefined;
61
49
  /**
62
50
  * The identity portion of the memory namespace (no deployment prefix), shared by
63
- * the memory `StoreBackend` and the `@auth.on.store` boundary check so both agree
64
- * on exactly which segments identify a namespace.
51
+ * hub-repo naming and the `@auth.on.store` boundary check so both agree on
52
+ * exactly which segments identify a namespace.
65
53
  */
66
54
  export declare function memoryIdentitySegments(scope: MemoryScope, tenancy: Tenancy, actorId: string | undefined, tenantId: string | undefined): string[];
67
55
  /**
@@ -75,13 +63,6 @@ export declare function memoryIdentitySegments(scope: MemoryScope, tenancy: Tena
75
63
  * Returns `null` for `agent` / `none` (those stay on the deployment repo).
76
64
  */
77
65
  export declare function memoryHubRepoHandle(deployRepo: string, scope: MemoryScope, tenancy: Tenancy, actorId: string | undefined, tenantId: string | undefined): string | null;
78
- /**
79
- * Make identity ids safe as Hub / local-FS *path* segments (`guest:uuid` → `guest_uuid`).
80
- *
81
- * ASCII-only so npm and PyPI agree. Empty / `.` / `..` collapse to `_` so a
82
- * local `path.join` cannot escape the Context Hub root.
83
- */
84
- export declare function sanitizeMemoryPathSegment(segment: string): string;
85
66
  /**
86
67
  * Make identity ids safe as Context Hub *repo handles*
87
68
  * (`^[a-z][a-z0-9-_]*$` — LangSmith `pushAgent` requirement).
@@ -1 +1 @@
1
- {"version":3,"file":"identity-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmCtD,qEAAqE;AACrE,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAWrC;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,eAAe,GAAG,SAAS,CA0B7B;AAwBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAiBtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAQtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAgBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAsBf;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0B9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
1
+ {"version":3,"file":"identity-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,OAAO,EACR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA0BtD,qEAAqE;AACrE,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAWrC;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMrC;AAED,8DAA8D;AAC9D,wBAAgB,0BAA0B,IACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,SAAS,CAcZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,eAAe,GAAG,SAAS,CA0B7B;AAwBD;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAgBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAsBf;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0B9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}