managed-deepagents 0.4.0-dev.70 → 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.
- package/dist/channels/binding.d.ts +3 -5
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +3 -9
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/collect.d.ts +23 -0
- package/dist/channels/collect.d.ts.map +1 -0
- package/dist/channels/collect.js +46 -0
- package/dist/channels/collect.js.map +1 -0
- package/dist/channels/errors.d.ts.map +1 -1
- package/dist/channels/github/adapter-core.d.ts +6 -0
- package/dist/channels/github/adapter-core.d.ts.map +1 -0
- package/dist/channels/github/adapter-core.js +27 -0
- package/dist/channels/github/adapter-core.js.map +1 -0
- package/dist/channels/github/adapter.d.ts +16 -0
- package/dist/channels/github/adapter.d.ts.map +1 -0
- package/dist/channels/github/adapter.js +52 -0
- package/dist/channels/github/adapter.js.map +1 -0
- package/dist/channels/github/define.d.ts +198 -0
- package/dist/channels/github/define.d.ts.map +1 -0
- package/dist/channels/github/define.js +166 -0
- package/dist/channels/github/define.js.map +1 -0
- package/dist/channels/github/http.d.ts +25 -0
- package/dist/channels/github/http.d.ts.map +1 -0
- package/dist/channels/github/http.js +147 -0
- package/dist/channels/github/http.js.map +1 -0
- package/dist/channels/github/index.d.ts +12 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +10 -0
- package/dist/channels/github/index.js.map +1 -0
- package/dist/channels/github/normalize.d.ts +32 -0
- package/dist/channels/github/normalize.d.ts.map +1 -0
- package/dist/channels/github/normalize.js +152 -0
- package/dist/channels/github/normalize.js.map +1 -0
- package/dist/channels/github/source-thread.d.ts +24 -0
- package/dist/channels/github/source-thread.d.ts.map +1 -0
- package/dist/channels/github/source-thread.js +54 -0
- package/dist/channels/github/source-thread.js.map +1 -0
- package/dist/channels/github/transport.d.ts +19 -0
- package/dist/channels/github/transport.d.ts.map +1 -0
- package/dist/channels/github/transport.js +92 -0
- package/dist/channels/github/transport.js.map +1 -0
- package/dist/channels/index.d.ts +9 -1
- package/dist/channels/index.d.ts.map +1 -1
- package/dist/channels/index.js +4 -0
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/manifest.d.ts +36 -0
- package/dist/channels/manifest.d.ts.map +1 -0
- package/dist/channels/manifest.js +20 -0
- package/dist/channels/manifest.js.map +1 -0
- package/dist/channels/plugin.d.ts +61 -0
- package/dist/channels/plugin.d.ts.map +1 -0
- package/dist/channels/plugin.js +80 -0
- package/dist/channels/plugin.js.map +1 -0
- package/dist/channels/registry-store.d.ts +12 -0
- package/dist/channels/registry-store.d.ts.map +1 -0
- package/dist/channels/registry-store.js +18 -0
- package/dist/channels/registry-store.js.map +1 -0
- package/dist/channels/registry-types.d.ts +32 -0
- package/dist/channels/registry-types.d.ts.map +1 -0
- package/dist/channels/registry-types.js +5 -0
- package/dist/channels/registry-types.js.map +1 -0
- package/dist/channels/registry.d.ts +17 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +37 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/runtime.d.ts +2 -2
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +4 -0
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +6 -5
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/adapter-core.d.ts +6 -0
- package/dist/channels/slack/adapter-core.d.ts.map +1 -0
- package/dist/channels/slack/adapter-core.js +24 -0
- package/dist/channels/slack/adapter-core.js.map +1 -0
- package/dist/channels/slack/adapter.d.ts +10 -0
- package/dist/channels/slack/adapter.d.ts.map +1 -0
- package/dist/channels/slack/adapter.js +22 -0
- package/dist/channels/slack/adapter.js.map +1 -0
- package/dist/channels/slack/define.d.ts +8 -18
- package/dist/channels/slack/define.d.ts.map +1 -1
- package/dist/channels/slack/define.js +29 -10
- package/dist/channels/slack/define.js.map +1 -1
- package/dist/channels/slack/http.d.ts +12 -1
- package/dist/channels/slack/http.d.ts.map +1 -1
- package/dist/channels/slack/http.js +112 -47
- package/dist/channels/slack/http.js.map +1 -1
- package/dist/channels/slack/normalize.js.map +1 -1
- package/dist/channels/store.d.ts +4 -4
- package/dist/channels/store.d.ts.map +1 -1
- package/dist/channels/store.js.map +1 -1
- package/dist/channels/types.d.ts +4 -4
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js.map +1 -1
- package/dist/connectors/github/index.d.ts +80 -0
- package/dist/connectors/github/index.d.ts.map +1 -0
- package/dist/connectors/github/index.js +118 -0
- package/dist/connectors/github/index.js.map +1 -0
- package/dist/connectors/github/sandbox.d.ts +57 -0
- package/dist/connectors/github/sandbox.d.ts.map +1 -0
- package/dist/connectors/github/sandbox.js +534 -0
- package/dist/connectors/github/sandbox.js.map +1 -0
- package/dist/connectors/{langsmith.d.ts → langsmith/index.d.ts} +5 -5
- package/dist/connectors/langsmith/index.d.ts.map +1 -0
- package/dist/connectors/{langsmith.js → langsmith/index.js} +4 -4
- package/dist/connectors/langsmith/index.js.map +1 -0
- package/dist/{runtime/langsmith-connector.d.ts → connectors/langsmith/routes.d.ts} +4 -4
- package/dist/connectors/langsmith/routes.d.ts.map +1 -0
- package/dist/{runtime/langsmith-connector.js → connectors/langsmith/routes.js} +12 -6
- package/dist/connectors/langsmith/routes.js.map +1 -0
- package/dist/{connectors.d.ts → connectors/mcp/index.d.ts} +2 -2
- package/dist/connectors/mcp/index.d.ts.map +1 -0
- package/dist/{connectors.js → connectors/mcp/index.js} +3 -3
- package/dist/connectors/mcp/index.js.map +1 -0
- package/dist/{runtime/connectors-manager.d.ts → connectors/mcp/load.d.ts} +2 -2
- package/dist/connectors/mcp/load.d.ts.map +1 -0
- package/dist/{runtime/connectors-manager.js → connectors/mcp/load.js} +1 -1
- package/dist/connectors/mcp/load.js.map +1 -0
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +3 -2
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/identity/connect-paths.d.ts +8 -0
- package/dist/identity/connect-paths.d.ts.map +1 -0
- package/dist/identity/connect-paths.js +11 -0
- package/dist/identity/connect-paths.js.map +1 -0
- package/dist/identity/connect-provider-store.d.ts +16 -0
- package/dist/identity/connect-provider-store.d.ts.map +1 -0
- package/dist/identity/connect-provider-store.js +27 -0
- package/dist/identity/connect-provider-store.js.map +1 -0
- package/dist/identity/connect-provider-types.d.ts +68 -0
- package/dist/identity/connect-provider-types.d.ts.map +1 -0
- package/dist/identity/connect-provider-types.js +8 -0
- package/dist/identity/connect-provider-types.js.map +1 -0
- package/dist/identity/connect-provider.d.ts +33 -0
- package/dist/identity/connect-provider.d.ts.map +1 -0
- package/dist/identity/connect-provider.js +125 -0
- package/dist/identity/connect-provider.js.map +1 -0
- package/dist/identity/github/connect-http.d.ts +33 -0
- package/dist/identity/github/connect-http.d.ts.map +1 -0
- package/dist/identity/github/connect-http.js +111 -0
- package/dist/identity/github/connect-http.js.map +1 -0
- package/dist/identity/github/credentials-store.d.ts +76 -0
- package/dist/identity/github/credentials-store.d.ts.map +1 -0
- package/dist/identity/github/credentials-store.js +257 -0
- package/dist/identity/github/credentials-store.js.map +1 -0
- package/dist/identity/github/credentials.d.ts +82 -0
- package/dist/identity/github/credentials.d.ts.map +1 -0
- package/dist/identity/github/credentials.js +171 -0
- package/dist/identity/github/credentials.js.map +1 -0
- package/dist/identity/github/index.d.ts +10 -0
- package/dist/identity/github/index.d.ts.map +1 -0
- package/dist/identity/github/index.js +9 -0
- package/dist/identity/github/index.js.map +1 -0
- package/dist/identity/github/oauth.d.ts +50 -0
- package/dist/identity/github/oauth.d.ts.map +1 -0
- package/dist/identity/github/oauth.js +146 -0
- package/dist/identity/github/oauth.js.map +1 -0
- package/dist/identity/index.d.ts +2 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +30 -0
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/loopback.d.ts +8 -0
- package/dist/identity/loopback.d.ts.map +1 -0
- package/dist/identity/loopback.js +18 -0
- package/dist/identity/loopback.js.map +1 -0
- package/dist/identity/slack/connect-http.d.ts +36 -0
- package/dist/identity/slack/connect-http.d.ts.map +1 -0
- package/dist/identity/slack/connect-http.js +111 -0
- package/dist/identity/slack/connect-http.js.map +1 -0
- package/dist/identity/slack/index.d.ts +9 -0
- package/dist/identity/slack/index.d.ts.map +1 -0
- package/dist/identity/slack/index.js +8 -0
- package/dist/identity/slack/index.js.map +1 -0
- package/dist/identity/slack/links.d.ts.map +1 -0
- package/dist/identity/{links.js → slack/links.js} +2 -12
- package/dist/identity/slack/links.js.map +1 -0
- package/dist/identity/{slack-oauth.d.ts → slack/oauth.d.ts} +1 -1
- package/dist/identity/slack/oauth.d.ts.map +1 -0
- package/dist/identity/{slack-oauth.js → slack/oauth.js} +1 -1
- package/dist/identity/slack/oauth.js.map +1 -0
- package/dist/identity/types.d.ts +12 -1
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/resolve.js.map +1 -1
- package/dist/runtime/auth.d.ts +6 -0
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +19 -8
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +52 -0
- package/dist/runtime/backend.d.ts.map +1 -0
- package/dist/runtime/backend.js +165 -0
- package/dist/runtime/backend.js.map +1 -0
- package/dist/runtime/connector.d.ts +43 -12
- package/dist/runtime/connector.d.ts.map +1 -1
- package/dist/runtime/connector.js +25 -10
- package/dist/runtime/connector.js.map +1 -1
- package/dist/runtime/cors.d.ts.map +1 -1
- package/dist/runtime/cors.js +1 -1
- package/dist/runtime/cors.js.map +1 -1
- package/dist/runtime/credentials.d.ts +3 -3
- package/dist/runtime/credentials.d.ts.map +1 -1
- package/dist/runtime/credentials.js +3 -3
- package/dist/runtime/credentials.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +9 -3
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +24 -34
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +9 -28
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +30 -65
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts +19 -14
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +26 -69
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/memory/index.d.ts +2 -2
- package/dist/runtime/memory/index.d.ts.map +1 -1
- package/dist/runtime/memory/index.js +2 -2
- package/dist/runtime/memory/index.js.map +1 -1
- package/dist/runtime/memory/mounts.d.ts +15 -1
- package/dist/runtime/memory/mounts.d.ts.map +1 -1
- package/dist/runtime/memory/mounts.js +31 -7
- package/dist/runtime/memory/mounts.js.map +1 -1
- package/dist/runtime/memory/paths.d.ts +0 -5
- package/dist/runtime/memory/paths.d.ts.map +1 -1
- package/dist/runtime/memory/paths.js +0 -24
- package/dist/runtime/memory/paths.js.map +1 -1
- package/dist/runtime/memory/seed.d.ts +0 -16
- package/dist/runtime/memory/seed.d.ts.map +1 -1
- package/dist/runtime/memory/seed.js +0 -43
- package/dist/runtime/memory/seed.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +19 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +94 -7
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/types.d.ts +5 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandbox.d.ts +6 -0
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +3 -2
- package/dist/sandbox.js.map +1 -1
- package/dist/types.d.ts +1 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +12 -8
- package/dist/connectors/langsmith.d.ts.map +0 -1
- package/dist/connectors/langsmith.js.map +0 -1
- package/dist/connectors.d.ts.map +0 -1
- package/dist/connectors.js.map +0 -1
- package/dist/identity/links.d.ts.map +0 -1
- package/dist/identity/links.js.map +0 -1
- package/dist/identity/slack-connect-http.d.ts +0 -21
- package/dist/identity/slack-connect-http.d.ts.map +0 -1
- package/dist/identity/slack-connect-http.js +0 -129
- package/dist/identity/slack-connect-http.js.map +0 -1
- package/dist/identity/slack-oauth.d.ts.map +0 -1
- package/dist/identity/slack-oauth.js.map +0 -1
- package/dist/runtime/connectors-manager.d.ts.map +0 -1
- package/dist/runtime/connectors-manager.js.map +0 -1
- package/dist/runtime/langsmith-connector.d.ts.map +0 -1
- package/dist/runtime/langsmith-connector.js.map +0 -1
- /package/dist/identity/{links.d.ts → slack/links.d.ts} +0 -0
|
@@ -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
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* {@link Connector.
|
|
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 {
|
|
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}
|
|
98
|
-
* {@link Connector.http}; a connector implementing
|
|
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"`.
|
|
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":"AAAA
|
|
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
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* {@link Connector.
|
|
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
|
-
|
|
72
|
-
|
|
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
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/runtime/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/runtime/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,YACjC,WAAW,EACX,aAAa,EACb,WAAW,CACH,CAAC;AAEX,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD,oEAAoE;AACpE,eAAO,MAAM,sBAAsB,YACjC,eAAe,EACf,cAAc,EACd,QAAQ,EACR,WAAW,EACX,WAAW,CACH,CAAC;AAEX,eAAO,MAAM,sBAAsB,YACjC,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,CACD,CAAC;AAEX,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAaV;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,GAAG,SAAS,CA+BpB"}
|
package/dist/runtime/cors.js
CHANGED
|
@@ -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
|
|
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",
|
package/dist/runtime/cors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/runtime/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,aAAa;IACb,WAAW;CACH,CAAC;AAEX,2EAA2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,oEAAoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,cAAc;IACd,QAAQ;IACR,WAAW;IACX,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,sBAAsB,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAClC,
|
|
1
|
+
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/runtime/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,WAAW;IACX,aAAa;IACb,WAAW;CACH,CAAC;AAEX,2EAA2E;AAC3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,oEAAoE;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe;IACf,cAAc;IACd,QAAQ;IACR,WAAW;IACX,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,SAAS;CACD,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,sBAAsB,CAAC,IAAI,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAClC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,aAAqB,EACrB,SAAmB;IAEnB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IACE,WAAW,KAAK,WAAW;YAC3B,WAAW,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,EACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -9,9 +9,9 @@ import type { CredentialTarget, IdentityConfig, ResolvedCredential, RuntimeIdent
|
|
|
9
9
|
* credential's `expiresAt`. Secrets live only in this in-memory cache keyed by
|
|
10
10
|
* identity — never in thread state or traces.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Managed credential modes (`agent`/`actor`) are reserved for platform Agent
|
|
13
|
+
* Auth and are **not** resolved by this package — only `custom` builds a
|
|
14
|
+
* {@link CredentialsProvider} here.
|
|
15
15
|
*/
|
|
16
16
|
/** Env var holding the HMAC secret MDA signs the endpoint assertion with. */
|
|
17
17
|
export declare const CREDENTIAL_SIGNING_SECRET_ENV = "MDA_TOKEN_EXCHANGE_SECRET";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AAKzE,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CACD,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,CACb,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAQD,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AACxD,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;;;GAKG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;GAaG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AAKzE,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CACD,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,CACb,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAQD,kEAAkE;AAClE,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AACxD,kDAAkD;AAClD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;;;GAKG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IAEzD,YACmB,YAAY,GAAE,MAAkC,EAChD,UAAU,GAAE,MAAqC,EAChE;IAEJ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAU9D;IAED,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,kBAAkB,EACzB,KAAK,GAAE,MAAmB,GACzB,IAAI,CAkBN;IAED,KAAK,IAAI,IAAI,CAEZ;CACF;AAKD,2DAA2D;AAC3D,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,eAAe,GAAG,SAAS,EACrC,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAC9B,KAAK,GAAE,eAA8B,GACpC,mBAAmB,GAAG,SAAS,CA8BjC"}
|
|
@@ -9,9 +9,9 @@ import { SignJWT } from "jose";
|
|
|
9
9
|
* credential's `expiresAt`. Secrets live only in this in-memory cache keyed by
|
|
10
10
|
* identity — never in thread state or traces.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Managed credential modes (`agent`/`actor`) are reserved for platform Agent
|
|
13
|
+
* Auth and are **not** resolved by this package — only `custom` builds a
|
|
14
|
+
* {@link CredentialsProvider} here.
|
|
15
15
|
*/
|
|
16
16
|
/** Env var holding the HMAC secret MDA signs the endpoint assertion with. */
|
|
17
17
|
export const CREDENTIAL_SIGNING_SECRET_ENV = "MDA_TOKEN_EXCHANGE_SECRET";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAS/B;;;;;;;;;;;;;GAaG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAEzE,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAwCjC,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAIP;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAS/B;;;;;;;;;;;;;GAaG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAEzE,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAwCjC,kEAAkE;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,kDAAkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAIP,YAAY;IACZ,UAAU;IAJZ,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEzD,YACmB,YAAY,GAAW,yBAAyB,EAChD,UAAU,GAAW,4BAA4B;4BADjD,YAAY;0BACZ,UAAU;IAC1B,CAAC;IAEJ,GAAG,CAAC,GAAW,EAAE,KAAa;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,GAAG,CACD,GAAW,EACX,KAAyB,EACzB,KAAK,GAAW,IAAI,CAAC,GAAG,EAAE;QAE1B,IAAI,WAAmB,CAAC;QACxB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAChD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;AAE3C,2DAA2D;AAC3D,MAAM,UAAU,4BAA4B;IAC1C,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAmB,EACnB,QAAqC,EACrC,IAA8B,EAC9B,KAAK,GAAoB,YAAY;IAErC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAmB;QAC/B,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK;QAC3B,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,oBAAoB;KAC3D,CAAC;IACF,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,sEAAsE;oBACpE,6BAA6B,CAChC,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;YACD,2EAA2E;YAC3E,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpB,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAmB,EACnB,QAAyB,EACzB,MAAwB,EACxB,IAAoB;IAEpB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,SAAiB,EACjB,IAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,SAAS,EAAE;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,cAAc,QAAQ,CAAC,MAAM,GAAG,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,QAAyB,EACzB,MAAwB;IAExB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC5D,GAAG,6BAA6B,iCAAiC,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC;QACjB,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;QAC/B,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;KACxE,CAAC;SACC,kBAAkB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;SACpC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;SAC7B,WAAW,CAAC,QAAQ,CAAC;SACrB,iBAAiB,CAAC,QAAQ,GAAG,qBAAqB,CAAC;SACnD,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,QAAyB,EAAE,MAAwB;IACnE,OAAO,eAAe,CAAC;QACrB,QAAQ,CAAC,KAAK,CAAC,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI;QAC3B,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,MAAM,IAAI,IAAI;QACrB,MAAM,CAAC,QAAQ,IAAI,IAAI;QACvB,MAAM,CAAC,QAAQ,IAAI,IAAI;KACxB,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACrD,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACxB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClB,CAAC;AAED,6EAA6E;AAC7E,SAAS,iBAAiB,CACxB,KAAc,EACd,WAAmB;IAEnB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,cAAc,WAAW,gCAAgC,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAG9B,CAAC;IACF,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,cAAc,WAAW,sCAAsC,CAChE,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAA2B,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,cAAc,WAAW,YAAY,IAAI,qBAAqB,CAC/D,CAAC;QACJ,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAuB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAClE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,cAAc,WAAW,uCAAuC,CACjE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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/
|
|
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
|
|
13
|
-
*
|
|
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,
|
|
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 {
|
|
4
|
-
import {
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
97
|
+
* Mount public Events routes for each channel manifest via the provider registry.
|
|
106
98
|
*
|
|
107
|
-
* Channel ingress authenticates
|
|
108
|
-
* stay public at the LangGraph auth layer
|
|
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
|
-
|
|
115
|
-
|
|
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
|
|
120
|
+
// bytes the provider signed (platform middleware may otherwise consume `raw`).
|
|
126
121
|
const rawBody = await c.req.text();
|
|
127
|
-
return
|
|
122
|
+
return adapter.handleEventsRequest(c.req.raw, {
|
|
128
123
|
name,
|
|
129
|
-
|
|
130
|
-
|
|
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
|
});
|