managed-deepagents 0.0.3-dev.34 → 0.0.3-dev.38
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/connectors/langsmith.d.ts +133 -0
- package/dist/connectors/langsmith.d.ts.map +1 -0
- package/dist/connectors/langsmith.js +262 -0
- package/dist/connectors/langsmith.js.map +1 -0
- package/dist/connectors.d.ts +7 -2
- package/dist/connectors.d.ts.map +1 -1
- package/dist/connectors.js +18 -1
- package/dist/connectors.js.map +1 -1
- package/dist/identity.d.ts +273 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +358 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/auth.d.ts +54 -0
- package/dist/runtime/auth.d.ts.map +1 -0
- package/dist/runtime/auth.js +191 -0
- package/dist/runtime/auth.js.map +1 -0
- package/dist/runtime/connector.d.ts +138 -0
- package/dist/runtime/connector.d.ts.map +1 -0
- package/dist/runtime/connector.js +82 -0
- package/dist/runtime/connector.js.map +1 -0
- package/dist/runtime/credentials.d.ts +60 -0
- package/dist/runtime/credentials.d.ts.map +1 -0
- package/dist/runtime/credentials.js +189 -0
- package/dist/runtime/credentials.js.map +1 -0
- package/dist/runtime/identity-http.d.ts +27 -0
- package/dist/runtime/identity-http.d.ts.map +1 -0
- package/dist/runtime/identity-http.js +150 -0
- package/dist/runtime/identity-http.js.map +1 -0
- package/dist/runtime/identity-runtime.d.ts +54 -0
- package/dist/runtime/identity-runtime.d.ts.map +1 -0
- package/dist/runtime/identity-runtime.js +151 -0
- package/dist/runtime/identity-runtime.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +39 -12
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/langsmith-connector.d.ts +112 -0
- package/dist/runtime/langsmith-connector.d.ts.map +1 -0
- package/dist/runtime/langsmith-connector.js +411 -0
- package/dist/runtime/langsmith-connector.js.map +1 -0
- package/dist/runtime/managed-middleware.d.ts +25 -0
- package/dist/runtime/managed-middleware.d.ts.map +1 -0
- package/dist/runtime/managed-middleware.js +76 -0
- package/dist/runtime/managed-middleware.js.map +1 -0
- package/dist/runtime/managed-tools.d.ts +61 -0
- package/dist/runtime/managed-tools.d.ts.map +1 -0
- package/dist/runtime/managed-tools.js +102 -0
- package/dist/runtime/managed-tools.js.map +1 -0
- package/dist/runtime/types.d.ts +23 -7
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/validated-token.d.ts +25 -0
- package/dist/runtime/validated-token.d.ts.map +1 -0
- package/dist/runtime/validated-token.js +260 -0
- package/dist/runtime/validated-token.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +12 -8
package/dist/runtime/index.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { CompositeBackend, ContextHubBackend, StateBackend, createDeepAgent, } from "deepagents";
|
|
2
|
-
import {
|
|
2
|
+
import { loadConnectorTools } from "./connector.js";
|
|
3
|
+
import { wrapMiddlewareWithManagedRuntime, } from "./managed-middleware.js";
|
|
4
|
+
import { wrapToolsWithManagedRuntime, } from "./managed-tools.js";
|
|
3
5
|
import { resolveManagedSandbox } from "./sandbox-manager.js";
|
|
6
|
+
export { buildManagedAuth } from "./auth.js";
|
|
7
|
+
export { buildManagedHttpApp } from "./identity-http.js";
|
|
8
|
+
export { CONNECTOR_BRAND, collectConnectors, isConnector, loadConnectorTools, } from "./connector.js";
|
|
9
|
+
export { CredentialCache, CREDENTIAL_SIGNING_SECRET_ENV, clearCredentialCacheForTests, createCredentialsProvider, } from "./credentials.js";
|
|
10
|
+
export { buildRuntimeIdentity, memoryIdentitySegments, memoryNamespace, memoryNamespaceFor, sanitizeConfigurable, } from "./identity-runtime.js";
|
|
11
|
+
export { managedRuntimeExtras, managedRuntimeOverrides, withManagedRuntime, wrapToolsWithManagedRuntime, } from "./managed-tools.js";
|
|
12
|
+
export { withManagedMiddleware, wrapMiddlewareWithManagedRuntime, } from "./managed-middleware.js";
|
|
13
|
+
export { issueGuestToken } from "./validated-token.js";
|
|
4
14
|
class LazyManagedSandboxBackend {
|
|
5
15
|
sandbox;
|
|
6
16
|
setupScript;
|
|
@@ -73,19 +83,24 @@ class LazyManagedSandboxBackend {
|
|
|
73
83
|
* generated entry module; agent authors never call it.
|
|
74
84
|
*/
|
|
75
85
|
export async function compileManagedAgent(definition, config, options) {
|
|
76
|
-
const { systemPrompt, contextRepo, hasSkills = false, sandbox, setupScript, connectors,
|
|
86
|
+
const { systemPrompt, contextRepo, hasSkills = false, sandbox, setupScript, connectors,
|
|
87
|
+
// Resolution + thread/store scoping run in the generated custom-auth handler
|
|
88
|
+
// (`buildManagedAuth`). When identity is declared, the seam also surfaces the
|
|
89
|
+
// frozen `runtime.identity` envelope to authored + connector tools (below).
|
|
90
|
+
identity, } = options ?? {};
|
|
77
91
|
const { disableMemory = false, ...agentConfig } = definition.config;
|
|
78
92
|
const params = { ...agentConfig };
|
|
79
93
|
/**
|
|
80
|
-
* Loading
|
|
81
|
-
* it off up front and let it run concurrently with
|
|
94
|
+
* Loading connector tools (e.g. MCP) can involve independent network
|
|
95
|
+
* round-trips, so kick it off up front and let it run concurrently with
|
|
96
|
+
* backend resolution below.
|
|
82
97
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
98
|
+
* Each connector's `tools` hook contributes tools appended to the authored
|
|
99
|
+
* tools. The author never imports the MCP client or calls `getTools()` — MDA
|
|
100
|
+
* owns the connector lifecycle.
|
|
86
101
|
*/
|
|
87
|
-
const
|
|
88
|
-
?
|
|
102
|
+
const connectorToolsPromise = connectors && connectors.length > 0
|
|
103
|
+
? loadConnectorTools(connectors)
|
|
89
104
|
: undefined;
|
|
90
105
|
const sandboxBackend = sandbox
|
|
91
106
|
? new LazyManagedSandboxBackend(sandbox, setupScript, config)
|
|
@@ -113,10 +128,22 @@ export async function compileManagedAgent(definition, config, options) {
|
|
|
113
128
|
params.backend = sandboxBackend;
|
|
114
129
|
}
|
|
115
130
|
}
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
131
|
+
const connectorTools = await connectorToolsPromise;
|
|
132
|
+
if (connectorTools && connectorTools.length > 0) {
|
|
118
133
|
const authoredTools = Array.isArray(params.tools) ? params.tools : [];
|
|
119
|
-
params.tools = [...authoredTools, ...
|
|
134
|
+
params.tools = [...authoredTools, ...connectorTools];
|
|
135
|
+
}
|
|
136
|
+
// With identity declared, surface the frozen `runtime.identity` envelope (and,
|
|
137
|
+
// in custom-credentials mode, `runtime.credentials`) on the runtime every tool
|
|
138
|
+
// receives, built from the trusted `langgraph_auth_user`.
|
|
139
|
+
if (identity && Array.isArray(params.tools)) {
|
|
140
|
+
params.tools = wrapToolsWithManagedRuntime(params.tools, identity.config);
|
|
141
|
+
}
|
|
142
|
+
// Do the same for authored middleware: each hook's `runtime` (and the `wrap*`
|
|
143
|
+
// hooks' `request.runtime`) gains `runtime.identity` / `runtime.credentials`,
|
|
144
|
+
// built from the same trusted `langgraph_auth_user` on `runtime.configurable`.
|
|
145
|
+
if (identity && Array.isArray(params.middleware)) {
|
|
146
|
+
params.middleware = wrapMiddlewareWithManagedRuntime(params.middleware, identity.config);
|
|
120
147
|
}
|
|
121
148
|
return createDeepAgent(params);
|
|
122
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAuC7D,MAAM,yBAAyB;IAKV;IACA;IACA;IANX,cAAc,CAA2C;IACzD,eAAe,CAAkC;IAEzD,YACmB,OAAoD,EACpD,WAA+B,EAC/B,SAAuC;QAFvC,YAAO,GAAP,OAAO,CAA6C;QACpD,gBAAW,GAAX,WAAW,CAAoB;QAC/B,cAAS,GAAT,SAAS,CAA8B;IACvD,CAAC;IAEJ,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG;QACjB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAe,EAAE,KAAc;QAC1D,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAoB,EAAE,IAAoB;QACpE,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAa;QACvC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;QAC3C,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAU,GAAG,KAAK;QAElB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAClC,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,CACX,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAkC;QAClD,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAe;QACjC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAA8B;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,OAAO;YACZ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,qBAAqB,CACzC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC,IAAI,CACJ,CAAC,OAAO,EAAE,EAAE;gBACV,IAAI,CAAC,eAAe,GAAG,OAAyC,CAAC;gBACjE,OAAO,IAAI,CAAC,eAAe,CAAC;YAC9B,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;gBACR,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC,CACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA+B,EAC/B,MAAyB,EACzB,OAA6B;IAE7B,MAAM,EACJ,YAAY,EACZ,WAAW,EACX,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,WAAW,EACX,UAAU,GACX,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IACpE,MAAM,MAAM,GAA4B,EAAE,GAAG,WAAW,EAAE,CAAC;IAE3D;;;;;;;OAOG;IACH,MAAM,eAAe,GAAG,UAAU;QAChC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,cAAc,GAAG,OAAO;QAC5B,CAAC,CAAC,IAAI,yBAAyB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;QAC7D,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,cAAc,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACvE,MAAM,CAAC,WAAW,GAAG,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAeD,KAAK,UAAU,gBAAgB,CAC7B,OAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,qBAAqB,CAC5B,cAAuB,EACvB,cAAmC;IAEnC,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,MAAM,GAAG,oBAAoB,CACjC,cAAgC,CACgB,CAAC;IACnD,MAAM,cAAc,GAAG,CAAC,cAAc;QACpC,IAAI,YAAY,EAAE,CAAuB,CAAC;IAC5C,OAAO,IAAI,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,kBAAkB;IAEH;IACA;IAFnB,YACmB,OAAuB,EACvB,MAE4B;QAH5B,YAAO,GAAP,OAAO,CAAgB;QACvB,WAAM,GAAN,MAAM,CAEsB;IAC5C,CAAC;IAEJ,MAAM,CAAC,SAAS,CACd,OAAuB,EACvB,UAAkB,EAClB,aAAqB;QAErB,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE;YACrC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;YACnC,aAAa,EAAE,kBAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAuB,EAAE,QAAgB,EAAE,WAAmB;QACxE,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE;YACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC;YAC/B,WAAW,EAAE,cAAc,CAAC,WAAW,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAe,EAAE,KAAc;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAoB,EAAE,IAAoB;QACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxC,OAAO,EACP,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAClE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACpC,CAAC;QACF,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,IAAI,GAAG,GAAG;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CACtB,CAAC;QACF,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzB,OAAO,CACR,CAAC;QACF,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAU,GAAG,KAAK;QAElB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzB,SAAS,EACT,SAAS,EACT,UAAU,CACX,CAAC;QACF,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAkC;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAC/C,KAAK,CAAC,GAAG,CACP,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAClB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAyB,CAC3D,CACF,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAe;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CACjD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACjC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CACjD,CAAC;IACJ,CAAC;IAEO,QAAQ,CACd,MAAS;QAET,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAmC,CAAC;IACjE,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,EAAE;YACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,MAAM;YACX,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,EAAE;YACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7B,CAAC;IAEO,oBAAoB,CAC1B,MAAS;QAET,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3B,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CACrB,MAAS,EACT,WAAmB;QAEnB,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;IAC9D,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,UAAU,KAAK,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACxD,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,UAAU,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACjC,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,MAAM;YACX,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE;YAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IAChC,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GACX,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,qBAAqB,UAAU,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,cAA8B;IAC1D,OAAO;QACL,kBAAkB,EAAE,kBAAkB,CAAC,IAAI,CACzC,cAAc,EACd,iBAAiB,EACjB,kBAAkB,CACnB;QACD,UAAU,EAAE,kBAAkB,CAAC,SAAS,CACtC,cAAc,EACd,QAAQ,EACR,SAAS,CACV;QACD,YAAY,EAAE,kBAAkB,CAAC,SAAS,CACxC,cAAc,EACd,UAAU,EACV,WAAW,CACZ;KACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAiB;IAClD,MAAM,OAAO,GAAG;QACd;YACE,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,CAAC,kBAAkB,EAAE,YAAY,CAAC;YACzC,IAAI,EAAE,MAAM;SACb;KACF,CAAC;IACF,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CACrB,MAA+B,EAC/B,GAAoC,EACpC,KAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,KAAiB,CAAC;QAC/B,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAClC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangSmith connector — runtime enforcement engine.
|
|
3
|
+
*
|
|
4
|
+
* Mounted by the connector's `http(ctx)` hook on its namespaced sub-router.
|
|
5
|
+
* Exposes one uniform endpoint per capability:
|
|
6
|
+
*
|
|
7
|
+
* POST /connectors/langsmith/capabilities/{capability_id}
|
|
8
|
+
*
|
|
9
|
+
* with a JSON body naming the `action` and its parameters. Per request the
|
|
10
|
+
* engine resolves identity (resolve-or-401), checks the caller surface, checks
|
|
11
|
+
* the action, validates typed constraints, performs the LangSmith operation
|
|
12
|
+
* server-side with the workspace key, and returns an allowlisted response.
|
|
13
|
+
*
|
|
14
|
+
* v0 does NOT prove object ownership (`runId` is treated as an unguessable
|
|
15
|
+
* capability, matching the app being replaced), and has no rate limiting, audit,
|
|
16
|
+
* or multi-workspace fan-out.
|
|
17
|
+
*/
|
|
18
|
+
import type { Example, Feedback, KVMap, Prompt, Run, ScoreType, ValueType } from "langsmith/schemas";
|
|
19
|
+
import type { IdentityConfig, RuntimeIdentity } from "../identity.js";
|
|
20
|
+
import type { LangSmithCapability, LangSmithCallerSurface } from "../connectors/langsmith.js";
|
|
21
|
+
import type { HttpContext } from "./connector.js";
|
|
22
|
+
/**
|
|
23
|
+
* The thin LangSmith operations the engine needs, typed against the `langsmith`
|
|
24
|
+
* SDK's own schemas. {@link defaultClient} wraps a real {@link Client}; tests
|
|
25
|
+
* inject a fake so the enforcement logic is verified without network or SDK
|
|
26
|
+
* specifics.
|
|
27
|
+
*
|
|
28
|
+
* A connector "score" is a categorical value (e.g. `"positive"`), so it maps to
|
|
29
|
+
* a LangSmith `score` when numeric/boolean and to a feedback `value` otherwise —
|
|
30
|
+
* hence the `ScoreType | ValueType` inputs.
|
|
31
|
+
*/
|
|
32
|
+
export interface LangSmithClient {
|
|
33
|
+
createFeedback(input: {
|
|
34
|
+
runId: string;
|
|
35
|
+
key: string;
|
|
36
|
+
score?: ScoreType | ValueType;
|
|
37
|
+
comment?: string;
|
|
38
|
+
feedbackId?: string;
|
|
39
|
+
}): Promise<Feedback>;
|
|
40
|
+
updateFeedback(input: {
|
|
41
|
+
feedbackId: string;
|
|
42
|
+
score?: ScoreType | ValueType;
|
|
43
|
+
comment?: string;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
deleteFeedback(input: {
|
|
46
|
+
feedbackId: string;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
readRun(input: {
|
|
49
|
+
runId: string;
|
|
50
|
+
}): Promise<Run>;
|
|
51
|
+
shareRun(input: {
|
|
52
|
+
runId: string;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
url: string;
|
|
55
|
+
}>;
|
|
56
|
+
createExample(input: {
|
|
57
|
+
dataset: string;
|
|
58
|
+
inputs: KVMap;
|
|
59
|
+
outputs?: KVMap;
|
|
60
|
+
}): Promise<Example>;
|
|
61
|
+
enqueueRun(input: {
|
|
62
|
+
queue: string;
|
|
63
|
+
runId: string;
|
|
64
|
+
priority?: string;
|
|
65
|
+
note?: string;
|
|
66
|
+
}): Promise<void>;
|
|
67
|
+
readPrompt(input: {
|
|
68
|
+
name: string;
|
|
69
|
+
}): Promise<Prompt | null>;
|
|
70
|
+
readThread(input: {
|
|
71
|
+
threadId: string;
|
|
72
|
+
}): Promise<Run>;
|
|
73
|
+
updateThreadMetadata(input: {
|
|
74
|
+
threadId: string;
|
|
75
|
+
metadata: KVMap;
|
|
76
|
+
}): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/** An error carrying an HTTP status the engine surfaces to the caller. */
|
|
79
|
+
export declare class EnforcementError extends Error {
|
|
80
|
+
readonly status: number;
|
|
81
|
+
constructor(status: number, message: string);
|
|
82
|
+
}
|
|
83
|
+
/** Options the engine handler closes over. */
|
|
84
|
+
export interface HandlerDeps {
|
|
85
|
+
capabilitiesById: Map<string, LangSmithCapability>;
|
|
86
|
+
client: LangSmithClient;
|
|
87
|
+
identityConfig?: IdentityConfig;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Mount the capability route on the connector's namespaced sub-router. Runs the
|
|
91
|
+
* identity-dependent authoring checks at mount time (fails startup on an illegal
|
|
92
|
+
* scope/ingress combination), then registers the uniform POST endpoint.
|
|
93
|
+
*/
|
|
94
|
+
export declare function mountLangSmithRoutes(ctx: HttpContext, capabilities: LangSmithCapability[], client?: LangSmithClient): void;
|
|
95
|
+
/** Identity-aware authoring validation, run when the app is constructed. */
|
|
96
|
+
export declare function validateAgainstIdentity(capabilities: LangSmithCapability[], identity: IdentityConfig | undefined): void;
|
|
97
|
+
/** The per-request enforcement pipeline. Returns a JSON `Response`. */
|
|
98
|
+
export declare function handleCapabilityRequest(request: Request, identity: RuntimeIdentity, deps: HandlerDeps): Promise<Response>;
|
|
99
|
+
/** Map the resolved identity + ingress mode to a caller surface. */
|
|
100
|
+
export declare function callerSurface(identity: RuntimeIdentity, identityConfig: IdentityConfig | undefined): LangSmithCallerSurface;
|
|
101
|
+
/** Apply the capability's `include` allowlist, then drop any `redact` roots. */
|
|
102
|
+
export declare function shapeResponse(raw: Record<string, unknown>, capability: LangSmithCapability): Record<string, unknown>;
|
|
103
|
+
/**
|
|
104
|
+
* Default client backed by the `langsmith` SDK {@link Client}. The underlying
|
|
105
|
+
* client is created on first use so building the engine (e.g. for an app with no
|
|
106
|
+
* requests yet) never requires `LANGSMITH_API_KEY`.
|
|
107
|
+
*
|
|
108
|
+
* A connector "score" is numeric/boolean → LangSmith `score`, or categorical
|
|
109
|
+
* (string/object) → LangSmith feedback `value`.
|
|
110
|
+
*/
|
|
111
|
+
export declare function defaultClient(): LangSmithClient;
|
|
112
|
+
//# sourceMappingURL=langsmith-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langsmith-connector.d.ts","sourceRoot":"","sources":["../../src/runtime/langsmith-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LangSmith connector — runtime enforcement engine.
|
|
3
|
+
*
|
|
4
|
+
* Mounted by the connector's `http(ctx)` hook on its namespaced sub-router.
|
|
5
|
+
* Exposes one uniform endpoint per capability:
|
|
6
|
+
*
|
|
7
|
+
* POST /connectors/langsmith/capabilities/{capability_id}
|
|
8
|
+
*
|
|
9
|
+
* with a JSON body naming the `action` and its parameters. Per request the
|
|
10
|
+
* engine resolves identity (resolve-or-401), checks the caller surface, checks
|
|
11
|
+
* the action, validates typed constraints, performs the LangSmith operation
|
|
12
|
+
* server-side with the workspace key, and returns an allowlisted response.
|
|
13
|
+
*
|
|
14
|
+
* v0 does NOT prove object ownership (`runId` is treated as an unguessable
|
|
15
|
+
* capability, matching the app being replaced), and has no rate limiting, audit,
|
|
16
|
+
* or multi-workspace fan-out.
|
|
17
|
+
*/
|
|
18
|
+
import { Client } from "langsmith";
|
|
19
|
+
/** An error carrying an HTTP status the engine surfaces to the caller. */
|
|
20
|
+
export class EnforcementError extends Error {
|
|
21
|
+
status;
|
|
22
|
+
constructor(status, message) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.status = status;
|
|
25
|
+
this.name = "EnforcementError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Mount the capability route on the connector's namespaced sub-router. Runs the
|
|
30
|
+
* identity-dependent authoring checks at mount time (fails startup on an illegal
|
|
31
|
+
* scope/ingress combination), then registers the uniform POST endpoint.
|
|
32
|
+
*/
|
|
33
|
+
export function mountLangSmithRoutes(ctx, capabilities, client = defaultClient()) {
|
|
34
|
+
validateAgainstIdentity(capabilities, ctx.identity);
|
|
35
|
+
const deps = {
|
|
36
|
+
capabilitiesById: new Map(capabilities.map((c) => [c.id, c])),
|
|
37
|
+
client,
|
|
38
|
+
identityConfig: ctx.identity,
|
|
39
|
+
};
|
|
40
|
+
// Registered on the secure-by-default router, which resolves and enforces
|
|
41
|
+
// identity before this runs and injects the frozen identity as the handler's
|
|
42
|
+
// second argument.
|
|
43
|
+
ctx.router.post("/capabilities/:id", (request, identity) => handleCapabilityRequest(request, identity, deps));
|
|
44
|
+
}
|
|
45
|
+
/** Identity-aware authoring validation, run when the app is constructed. */
|
|
46
|
+
export function validateAgainstIdentity(capabilities, identity) {
|
|
47
|
+
const httpMode = identity?.ingress.http;
|
|
48
|
+
const hasValidatedToken = httpMode !== undefined && httpMode !== "trusted_backend";
|
|
49
|
+
const tenancy = identity?.tenancy ?? "single";
|
|
50
|
+
for (const capability of capabilities) {
|
|
51
|
+
const externallyExposed = capability.exposeTo.length > 0;
|
|
52
|
+
const identityScoped = capability.scope === "actor" ||
|
|
53
|
+
capability.scope === "tenant" ||
|
|
54
|
+
capability.scope === "thread" ||
|
|
55
|
+
capability.scope === "run";
|
|
56
|
+
if (!identity) {
|
|
57
|
+
const readOnly = capability.actions.every((a) => a.startsWith("read"));
|
|
58
|
+
if (externallyExposed && !(capability.scope === "agent" && readOnly)) {
|
|
59
|
+
throw new Error(`LangSmith capability "${capability.id}" is exposed externally but the ` +
|
|
60
|
+
`deployment has no identity configured. Only agent-scoped, read-only ` +
|
|
61
|
+
`capabilities may be exposed without identity.`);
|
|
62
|
+
}
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (capability.scope === "tenant" && tenancy === "single") {
|
|
66
|
+
throw new Error(`LangSmith capability "${capability.id}" is tenant-scoped but the ` +
|
|
67
|
+
`deployment is tenancy: "single".`);
|
|
68
|
+
}
|
|
69
|
+
if (capability.exposeTo.includes("browser") &&
|
|
70
|
+
identityScoped &&
|
|
71
|
+
!hasValidatedToken) {
|
|
72
|
+
throw new Error(`LangSmith capability "${capability.id}" is ${capability.scope}-scoped and ` +
|
|
73
|
+
`exposed to browser, but the deployment has no validated_token ingress ` +
|
|
74
|
+
`to resolve an end-user identity.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** The per-request enforcement pipeline. Returns a JSON `Response`. */
|
|
79
|
+
export async function handleCapabilityRequest(request, identity, deps) {
|
|
80
|
+
try {
|
|
81
|
+
const capabilityId = capabilityIdFromUrl(request.url);
|
|
82
|
+
const capability = deps.capabilitiesById.get(capabilityId);
|
|
83
|
+
if (!capability) {
|
|
84
|
+
throw new EnforcementError(404, `unknown capability "${capabilityId}"`);
|
|
85
|
+
}
|
|
86
|
+
const surface = callerSurface(identity, deps.identityConfig);
|
|
87
|
+
if (!capability.exposeTo.includes(surface)) {
|
|
88
|
+
throw new EnforcementError(403, `capability "${capability.id}" is not exposed to ${surface}`);
|
|
89
|
+
}
|
|
90
|
+
const body = await parseJsonBody(request);
|
|
91
|
+
const action = String(body.action ?? "");
|
|
92
|
+
if (!capability.actions.includes(action)) {
|
|
93
|
+
throw new EnforcementError(403, `action "${action}" is not allowed for capability "${capability.id}"`);
|
|
94
|
+
}
|
|
95
|
+
const raw = toRecord(await performLangSmithCall(capability, action, body, deps));
|
|
96
|
+
const shaped = shapeResponse(raw, capability);
|
|
97
|
+
return jsonResponse(200, { data: shaped });
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error instanceof EnforcementError) {
|
|
101
|
+
return jsonResponse(error.status, { error: error.message });
|
|
102
|
+
}
|
|
103
|
+
const status = statusFromUnknownError(error);
|
|
104
|
+
return jsonResponse(status, { error: errorMessage(error) });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Map the resolved identity + ingress mode to a caller surface. */
|
|
108
|
+
export function callerSurface(identity, identityConfig) {
|
|
109
|
+
const provider = identity.source.provider;
|
|
110
|
+
if (provider === "slack") {
|
|
111
|
+
return "channel";
|
|
112
|
+
}
|
|
113
|
+
if (provider === "schedule") {
|
|
114
|
+
return "schedule";
|
|
115
|
+
}
|
|
116
|
+
// http / cli: browser vs trusted_backend depends on the ingress mode.
|
|
117
|
+
return identityConfig?.ingress.http === "trusted_backend"
|
|
118
|
+
? "trusted_backend"
|
|
119
|
+
: "browser";
|
|
120
|
+
}
|
|
121
|
+
// --- Call mapping ----------------------------------------------------------
|
|
122
|
+
async function performLangSmithCall(capability, action, body, deps) {
|
|
123
|
+
switch (capability.resource) {
|
|
124
|
+
case "feedback":
|
|
125
|
+
return feedbackCall(capability, action, body, deps.client);
|
|
126
|
+
case "runs":
|
|
127
|
+
return runsCall(action, body, deps.client);
|
|
128
|
+
case "examples":
|
|
129
|
+
return examplesCall(capability, body, deps.client);
|
|
130
|
+
case "annotation_queues":
|
|
131
|
+
return annotationQueueCall(capability, body, deps.client);
|
|
132
|
+
case "prompts":
|
|
133
|
+
return deps.client.readPrompt({ name: requireString(body, "name") });
|
|
134
|
+
case "threads":
|
|
135
|
+
return threadsCall(capability, action, body, deps.client);
|
|
136
|
+
default:
|
|
137
|
+
throw new EnforcementError(400, `resource "${capability.resource}" is not supported in v0`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function feedbackCall(capability, action, body, client) {
|
|
141
|
+
const c = capability.constraints ?? {};
|
|
142
|
+
if (action === "create") {
|
|
143
|
+
const key = requireString(body, "key");
|
|
144
|
+
assertAllowed(c.keys, key, "key");
|
|
145
|
+
// Validated against the `scores` allowlist, then handed to the SDK as a
|
|
146
|
+
// categorical score/value (see LangSmithClient docs).
|
|
147
|
+
const score = body.score;
|
|
148
|
+
if (score !== undefined) {
|
|
149
|
+
assertAllowed(c.scores, String(score), "score");
|
|
150
|
+
}
|
|
151
|
+
const comment = optionalComment(body, c.maxCommentChars);
|
|
152
|
+
return client.createFeedback({
|
|
153
|
+
runId: requireString(body, "runId"),
|
|
154
|
+
key,
|
|
155
|
+
...(score !== undefined ? { score } : {}),
|
|
156
|
+
...(comment !== undefined ? { comment } : {}),
|
|
157
|
+
...(typeof body.feedbackId === "string"
|
|
158
|
+
? { feedbackId: body.feedbackId }
|
|
159
|
+
: {}),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (action === "update") {
|
|
163
|
+
const comment = optionalComment(body, c.maxCommentChars);
|
|
164
|
+
const score = body.score;
|
|
165
|
+
return client.updateFeedback({
|
|
166
|
+
feedbackId: requireString(body, "feedbackId"),
|
|
167
|
+
...(score !== undefined ? { score } : {}),
|
|
168
|
+
...(comment !== undefined ? { comment } : {}),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
if (action === "delete") {
|
|
172
|
+
return client.deleteFeedback({
|
|
173
|
+
feedbackId: requireString(body, "feedbackId"),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
throw new EnforcementError(400, `unknown feedback action "${action}"`);
|
|
177
|
+
}
|
|
178
|
+
async function runsCall(action, body, client) {
|
|
179
|
+
const runId = requireString(body, "runId");
|
|
180
|
+
if (action === "read") {
|
|
181
|
+
return client.readRun({ runId });
|
|
182
|
+
}
|
|
183
|
+
if (action === "share") {
|
|
184
|
+
return client.shareRun({ runId });
|
|
185
|
+
}
|
|
186
|
+
throw new EnforcementError(400, `unknown runs action "${action}"`);
|
|
187
|
+
}
|
|
188
|
+
async function examplesCall(capability, body, client) {
|
|
189
|
+
const c = capability.constraints ?? {};
|
|
190
|
+
const dataset = c.dataset;
|
|
191
|
+
if (!dataset) {
|
|
192
|
+
throw new EnforcementError(400, "examples capability has no dataset");
|
|
193
|
+
}
|
|
194
|
+
const inputs = requireObject(body, "inputs");
|
|
195
|
+
const allowedFields = c.allowedFields;
|
|
196
|
+
if (allowedFields) {
|
|
197
|
+
for (const field of Object.keys(inputs)) {
|
|
198
|
+
if (!allowedFields.includes(field)) {
|
|
199
|
+
throw new EnforcementError(400, `field "${field}" is not allowed`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const outputs = body.outputs && typeof body.outputs === "object"
|
|
204
|
+
? body.outputs
|
|
205
|
+
: undefined;
|
|
206
|
+
return client.createExample({
|
|
207
|
+
dataset,
|
|
208
|
+
inputs,
|
|
209
|
+
...(outputs ? { outputs } : {}),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
async function annotationQueueCall(capability, body, client) {
|
|
213
|
+
const c = capability.constraints ?? {};
|
|
214
|
+
const queue = c.queue;
|
|
215
|
+
if (!queue) {
|
|
216
|
+
throw new EnforcementError(400, "annotation queue capability has no queue");
|
|
217
|
+
}
|
|
218
|
+
const priority = body.priority;
|
|
219
|
+
if (priority !== undefined) {
|
|
220
|
+
assertAllowed(c.allowedPriorities, String(priority), "priority");
|
|
221
|
+
}
|
|
222
|
+
const note = optionalComment(body, c.maxNoteChars, "note");
|
|
223
|
+
return client.enqueueRun({
|
|
224
|
+
queue,
|
|
225
|
+
runId: requireString(body, "runId"),
|
|
226
|
+
...(typeof priority === "string" ? { priority } : {}),
|
|
227
|
+
...(note !== undefined ? { note } : {}),
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
async function threadsCall(capability, action, body, client) {
|
|
231
|
+
const threadId = requireString(body, "threadId");
|
|
232
|
+
if (action === "read") {
|
|
233
|
+
return client.readThread({ threadId });
|
|
234
|
+
}
|
|
235
|
+
if (action === "update_metadata") {
|
|
236
|
+
const c = capability.constraints ?? {};
|
|
237
|
+
const metadata = requireObject(body, "metadata");
|
|
238
|
+
const metadataKeys = c.metadataKeys;
|
|
239
|
+
if (metadataKeys) {
|
|
240
|
+
for (const key of Object.keys(metadata)) {
|
|
241
|
+
if (!metadataKeys.includes(key)) {
|
|
242
|
+
throw new EnforcementError(400, `metadata key "${key}" is not allowed`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const maxTitle = c.maxTitleChars;
|
|
247
|
+
if (maxTitle !== undefined && typeof metadata.title === "string") {
|
|
248
|
+
if (metadata.title.length > maxTitle) {
|
|
249
|
+
throw new EnforcementError(400, `title exceeds ${maxTitle} characters`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return client.updateThreadMetadata({ threadId, metadata });
|
|
253
|
+
}
|
|
254
|
+
throw new EnforcementError(400, `unknown threads action "${action}"`);
|
|
255
|
+
}
|
|
256
|
+
// --- Response shaping ------------------------------------------------------
|
|
257
|
+
/** Apply the capability's `include` allowlist, then drop any `redact` roots. */
|
|
258
|
+
export function shapeResponse(raw, capability) {
|
|
259
|
+
const include = capability.response?.include ?? [];
|
|
260
|
+
const redact = new Set(capability.response?.redact ?? []);
|
|
261
|
+
const picked = {};
|
|
262
|
+
for (const path of include) {
|
|
263
|
+
const [root, ...rest] = path.split(".");
|
|
264
|
+
if (root === undefined || redact.has(root)) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
if (rest.length === 0) {
|
|
268
|
+
if (root in raw) {
|
|
269
|
+
picked[root] = raw[root];
|
|
270
|
+
}
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
const nested = pickNested(raw[root], rest);
|
|
274
|
+
if (nested !== undefined) {
|
|
275
|
+
const existing = picked[root] ?? {};
|
|
276
|
+
picked[root] = { ...existing, [rest.join(".")]: nested };
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return picked;
|
|
280
|
+
}
|
|
281
|
+
function pickNested(value, path) {
|
|
282
|
+
let current = value;
|
|
283
|
+
for (const segment of path) {
|
|
284
|
+
if (current && typeof current === "object" && segment in current) {
|
|
285
|
+
current = current[segment];
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
return undefined;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return current;
|
|
292
|
+
}
|
|
293
|
+
// --- Helpers ---------------------------------------------------------------
|
|
294
|
+
function capabilityIdFromUrl(url) {
|
|
295
|
+
const { pathname } = new URL(url);
|
|
296
|
+
const marker = "/capabilities/";
|
|
297
|
+
const index = pathname.lastIndexOf(marker);
|
|
298
|
+
if (index === -1) {
|
|
299
|
+
throw new EnforcementError(404, "capability id missing from path");
|
|
300
|
+
}
|
|
301
|
+
return decodeURIComponent(pathname.slice(index + marker.length));
|
|
302
|
+
}
|
|
303
|
+
async function parseJsonBody(request) {
|
|
304
|
+
try {
|
|
305
|
+
const parsed = await request.json();
|
|
306
|
+
if (parsed && typeof parsed === "object") {
|
|
307
|
+
return parsed;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
// fall through to the uniform error below
|
|
312
|
+
}
|
|
313
|
+
throw new EnforcementError(400, "request body must be a JSON object");
|
|
314
|
+
}
|
|
315
|
+
function requireString(body, key) {
|
|
316
|
+
const value = body[key];
|
|
317
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
318
|
+
throw new EnforcementError(400, `missing or invalid "${key}"`);
|
|
319
|
+
}
|
|
320
|
+
return value;
|
|
321
|
+
}
|
|
322
|
+
function requireObject(body, key) {
|
|
323
|
+
const value = body[key];
|
|
324
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
325
|
+
throw new EnforcementError(400, `missing or invalid "${key}"`);
|
|
326
|
+
}
|
|
327
|
+
return value;
|
|
328
|
+
}
|
|
329
|
+
function assertAllowed(allowed, value, label) {
|
|
330
|
+
if (allowed && !allowed.includes(value)) {
|
|
331
|
+
throw new EnforcementError(400, `${label} "${value}" is not allowed`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
function optionalComment(body, maxChars, field = "comment") {
|
|
335
|
+
const value = body[field];
|
|
336
|
+
if (value === undefined || value === null) {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
if (typeof value !== "string") {
|
|
340
|
+
throw new EnforcementError(400, `"${field}" must be a string`);
|
|
341
|
+
}
|
|
342
|
+
if (maxChars !== undefined && value.length > maxChars) {
|
|
343
|
+
throw new EnforcementError(400, `"${field}" exceeds ${maxChars} characters`);
|
|
344
|
+
}
|
|
345
|
+
return value;
|
|
346
|
+
}
|
|
347
|
+
function jsonResponse(status, body) {
|
|
348
|
+
return new Response(JSON.stringify(body), {
|
|
349
|
+
status,
|
|
350
|
+
headers: { "content-type": "application/json" },
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
function statusFromUnknownError(error) {
|
|
354
|
+
const status = error?.status;
|
|
355
|
+
if (typeof status === "number" && status >= 400 && status <= 599) {
|
|
356
|
+
return status;
|
|
357
|
+
}
|
|
358
|
+
return 502;
|
|
359
|
+
}
|
|
360
|
+
function errorMessage(error) {
|
|
361
|
+
if (error instanceof Error) {
|
|
362
|
+
return error.message;
|
|
363
|
+
}
|
|
364
|
+
return "internal error";
|
|
365
|
+
}
|
|
366
|
+
/** Coerce an SDK result (object | void | null) into a plain record for shaping. */
|
|
367
|
+
function toRecord(value) {
|
|
368
|
+
if (value && typeof value === "object") {
|
|
369
|
+
return { ...value };
|
|
370
|
+
}
|
|
371
|
+
return {};
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Default client backed by the `langsmith` SDK {@link Client}. The underlying
|
|
375
|
+
* client is created on first use so building the engine (e.g. for an app with no
|
|
376
|
+
* requests yet) never requires `LANGSMITH_API_KEY`.
|
|
377
|
+
*
|
|
378
|
+
* A connector "score" is numeric/boolean → LangSmith `score`, or categorical
|
|
379
|
+
* (string/object) → LangSmith feedback `value`.
|
|
380
|
+
*/
|
|
381
|
+
export function defaultClient() {
|
|
382
|
+
let client;
|
|
383
|
+
const sdk = () => {
|
|
384
|
+
client ??= new Client({ apiKey: process.env.LANGSMITH_API_KEY });
|
|
385
|
+
return client;
|
|
386
|
+
};
|
|
387
|
+
const isScore = (value) => typeof value === "number" || typeof value === "boolean" || value === null;
|
|
388
|
+
const scoreOrValue = (value) => {
|
|
389
|
+
if (isScore(value)) {
|
|
390
|
+
return { score: value };
|
|
391
|
+
}
|
|
392
|
+
return value === undefined ? {} : { value };
|
|
393
|
+
};
|
|
394
|
+
return {
|
|
395
|
+
createFeedback: ({ runId, key, score, comment, feedbackId }) => sdk().createFeedback(runId, key, {
|
|
396
|
+
...scoreOrValue(score),
|
|
397
|
+
comment,
|
|
398
|
+
feedbackId,
|
|
399
|
+
}),
|
|
400
|
+
updateFeedback: ({ feedbackId, score, comment }) => sdk().updateFeedback(feedbackId, { ...scoreOrValue(score), comment }),
|
|
401
|
+
deleteFeedback: ({ feedbackId }) => sdk().deleteFeedback(feedbackId),
|
|
402
|
+
readRun: ({ runId }) => sdk().readRun(runId),
|
|
403
|
+
shareRun: async ({ runId }) => ({ url: await sdk().shareRun(runId) }),
|
|
404
|
+
createExample: ({ dataset, inputs, outputs }) => sdk().createExample({ inputs, outputs, dataset_name: dataset }),
|
|
405
|
+
enqueueRun: ({ queue, runId }) => sdk().addRunsToAnnotationQueue(queue, [runId]),
|
|
406
|
+
readPrompt: ({ name }) => sdk().getPrompt(name),
|
|
407
|
+
readThread: ({ threadId }) => sdk().readRun(threadId),
|
|
408
|
+
updateThreadMetadata: ({ threadId, metadata }) => sdk().updateRun(threadId, { extra: metadata }),
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=langsmith-connector.js.map
|