managed-deepagents 0.4.0-dev.68 → 0.4.0-dev.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +1 -1
  2. package/dist/channels/assistant-text.d.ts +7 -0
  3. package/dist/channels/assistant-text.d.ts.map +1 -0
  4. package/dist/channels/assistant-text.js +28 -0
  5. package/dist/channels/assistant-text.js.map +1 -0
  6. package/dist/channels/binding.d.ts +34 -0
  7. package/dist/channels/binding.d.ts.map +1 -0
  8. package/dist/channels/binding.js +67 -0
  9. package/dist/channels/binding.js.map +1 -0
  10. package/dist/channels/errors.d.ts +11 -0
  11. package/dist/channels/errors.d.ts.map +1 -0
  12. package/dist/channels/errors.js +25 -0
  13. package/dist/channels/errors.js.map +1 -0
  14. package/dist/channels/index.d.ts +19 -0
  15. package/dist/channels/index.d.ts.map +1 -0
  16. package/dist/channels/index.js +14 -0
  17. package/dist/channels/index.js.map +1 -0
  18. package/dist/channels/runtime.d.ts +40 -0
  19. package/dist/channels/runtime.d.ts.map +1 -0
  20. package/dist/channels/runtime.js +76 -0
  21. package/dist/channels/runtime.js.map +1 -0
  22. package/dist/channels/schedule-delivery.d.ts +67 -0
  23. package/dist/channels/schedule-delivery.d.ts.map +1 -0
  24. package/dist/channels/schedule-delivery.js +193 -0
  25. package/dist/channels/schedule-delivery.js.map +1 -0
  26. package/dist/channels/slack/define.d.ts +87 -0
  27. package/dist/channels/slack/define.d.ts.map +1 -0
  28. package/dist/channels/slack/define.js +141 -0
  29. package/dist/channels/slack/define.js.map +1 -0
  30. package/dist/channels/slack/http.d.ts +86 -0
  31. package/dist/channels/slack/http.d.ts.map +1 -0
  32. package/dist/channels/slack/http.js +441 -0
  33. package/dist/channels/slack/http.js.map +1 -0
  34. package/dist/channels/slack/index.d.ts +18 -0
  35. package/dist/channels/slack/index.d.ts.map +1 -0
  36. package/dist/channels/slack/index.js +13 -0
  37. package/dist/channels/slack/index.js.map +1 -0
  38. package/dist/channels/slack/normalize.d.ts +62 -0
  39. package/dist/channels/slack/normalize.d.ts.map +1 -0
  40. package/dist/channels/slack/normalize.js +320 -0
  41. package/dist/channels/slack/normalize.js.map +1 -0
  42. package/dist/channels/slack/source-thread.d.ts +34 -0
  43. package/dist/channels/slack/source-thread.d.ts.map +1 -0
  44. package/dist/channels/slack/source-thread.js +92 -0
  45. package/dist/channels/slack/source-thread.js.map +1 -0
  46. package/dist/channels/slack/transport.d.ts +48 -0
  47. package/dist/channels/slack/transport.d.ts.map +1 -0
  48. package/dist/channels/slack/transport.js +178 -0
  49. package/dist/channels/slack/transport.js.map +1 -0
  50. package/dist/channels/store.d.ts +51 -0
  51. package/dist/channels/store.d.ts.map +1 -0
  52. package/dist/channels/store.js +76 -0
  53. package/dist/channels/store.js.map +1 -0
  54. package/dist/channels/types.d.ts +116 -0
  55. package/dist/channels/types.d.ts.map +1 -0
  56. package/dist/channels/types.js +24 -0
  57. package/dist/channels/types.js.map +1 -0
  58. package/dist/identity/links.d.ts +62 -0
  59. package/dist/identity/links.d.ts.map +1 -0
  60. package/dist/identity/links.js +176 -0
  61. package/dist/identity/links.js.map +1 -0
  62. package/dist/identity/slack-connect-http.d.ts +21 -0
  63. package/dist/identity/slack-connect-http.d.ts.map +1 -0
  64. package/dist/identity/slack-connect-http.js +129 -0
  65. package/dist/identity/slack-connect-http.js.map +1 -0
  66. package/dist/identity/slack-oauth.d.ts +60 -0
  67. package/dist/identity/slack-oauth.d.ts.map +1 -0
  68. package/dist/identity/slack-oauth.js +193 -0
  69. package/dist/identity/slack-oauth.js.map +1 -0
  70. package/dist/index.d.ts +6 -1
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +3 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/runtime/auth.d.ts +40 -0
  75. package/dist/runtime/auth.d.ts.map +1 -1
  76. package/dist/runtime/auth.js +123 -9
  77. package/dist/runtime/auth.js.map +1 -1
  78. package/dist/runtime/cors.d.ts +28 -0
  79. package/dist/runtime/cors.d.ts.map +1 -0
  80. package/dist/runtime/cors.js +92 -0
  81. package/dist/runtime/cors.js.map +1 -0
  82. package/dist/runtime/identity-http.d.ts +6 -0
  83. package/dist/runtime/identity-http.d.ts.map +1 -1
  84. package/dist/runtime/identity-http.js +90 -2
  85. package/dist/runtime/identity-http.js.map +1 -1
  86. package/dist/runtime/identity-runtime.d.ts +41 -1
  87. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  88. package/dist/runtime/identity-runtime.js +142 -2
  89. package/dist/runtime/identity-runtime.js.map +1 -1
  90. package/dist/runtime/index.d.ts +2 -1
  91. package/dist/runtime/index.d.ts.map +1 -1
  92. package/dist/runtime/index.js +75 -191
  93. package/dist/runtime/index.js.map +1 -1
  94. package/dist/runtime/langsmith-connector.d.ts.map +1 -1
  95. package/dist/runtime/langsmith-connector.js +4 -3
  96. package/dist/runtime/langsmith-connector.js.map +1 -1
  97. package/dist/runtime/managed-tools.d.ts +6 -0
  98. package/dist/runtime/managed-tools.d.ts.map +1 -1
  99. package/dist/runtime/managed-tools.js +10 -0
  100. package/dist/runtime/managed-tools.js.map +1 -1
  101. package/dist/runtime/memory/context-io.d.ts +5 -0
  102. package/dist/runtime/memory/context-io.d.ts.map +1 -0
  103. package/dist/runtime/memory/context-io.js +28 -0
  104. package/dist/runtime/memory/context-io.js.map +1 -0
  105. package/dist/runtime/memory/index.d.ts +8 -0
  106. package/dist/runtime/memory/index.d.ts.map +1 -0
  107. package/dist/runtime/memory/index.js +6 -0
  108. package/dist/runtime/memory/index.js.map +1 -0
  109. package/dist/runtime/memory/mounts.d.ts +38 -0
  110. package/dist/runtime/memory/mounts.d.ts.map +1 -0
  111. package/dist/runtime/memory/mounts.js +185 -0
  112. package/dist/runtime/memory/mounts.js.map +1 -0
  113. package/dist/runtime/memory/paths.d.ts +10 -0
  114. package/dist/runtime/memory/paths.d.ts.map +1 -0
  115. package/dist/runtime/memory/paths.js +50 -0
  116. package/dist/runtime/memory/paths.js.map +1 -0
  117. package/dist/runtime/memory/seed.d.ts +37 -0
  118. package/dist/runtime/memory/seed.d.ts.map +1 -0
  119. package/dist/runtime/memory/seed.js +203 -0
  120. package/dist/runtime/memory/seed.js.map +1 -0
  121. package/dist/runtime/memory/user-repo.d.ts +19 -0
  122. package/dist/runtime/memory/user-repo.d.ts.map +1 -0
  123. package/dist/runtime/memory/user-repo.js +57 -0
  124. package/dist/runtime/memory/user-repo.js.map +1 -0
  125. package/dist/runtime/types.d.ts +11 -2
  126. package/dist/runtime/types.d.ts.map +1 -1
  127. package/dist/schedules.d.ts +6 -3
  128. package/dist/schedules.d.ts.map +1 -1
  129. package/dist/schedules.js +22 -0
  130. package/dist/schedules.js.map +1 -1
  131. package/dist/types.d.ts +4 -11
  132. package/dist/types.d.ts.map +1 -1
  133. package/dist/types.js +1 -1
  134. package/dist/types.js.map +1 -1
  135. package/package.json +16 -7
@@ -1,5 +1,9 @@
1
1
  import { Hono } from "hono";
2
+ import { cors } from "hono/cors";
3
+ import { handleSlackEventsRequest } from "../channels/slack/http.js";
4
+ import { mountSlackConnectRoutes, projectHasSlackChannel, } from "../identity/slack-connect-http.js";
2
5
  import { resolveRequestIdentity } from "./auth.js";
6
+ import { isManagedCorsPath, matchCorsOrigin, MDA_CORS_ALLOW_HEADERS, MDA_CORS_ALLOW_METHODS, resolveCorsAllowlist, } from "./cors.js";
3
7
  import { issueGuestToken } from "./validated-token.js";
4
8
  /** Signals a secured route was reached but no identity is declared to resolve it. */
5
9
  class IdentityNotConfiguredError extends Error {
@@ -26,6 +30,7 @@ class IdentityNotConfiguredError extends Error {
26
30
  */
27
31
  export function buildManagedHttpApp(inputs) {
28
32
  const app = new Hono();
33
+ mountManagedCors(app);
29
34
  if (inputs.identity) {
30
35
  mountIdentityRoutes(app, inputs.identity);
31
36
  }
@@ -35,9 +40,52 @@ export function buildManagedHttpApp(inputs) {
35
40
  mountConnectorRoutes(app, connector, inputs.identity?.config, mounted);
36
41
  }
37
42
  }
43
+ mountChannelRoutes(app, inputs.channels, mounted);
44
+ // Connect-with-Slack only when the project declares a Slack channel.
45
+ if (inputs.identity && projectHasSlackChannel(inputs.channels)) {
46
+ mountSlackConnectRoutes(app, inputs.identity.config);
47
+ for (const route of [
48
+ { method: "get", path: "/identity/slack/status", secured: true },
49
+ { method: "get", path: "/identity/slack/connect", secured: true },
50
+ { method: "get", path: "/identity/slack/callback", secured: false },
51
+ { method: "delete", path: "/identity/slack/link", secured: true },
52
+ ]) {
53
+ mounted.push({
54
+ connector: "identity:slack-connect",
55
+ method: route.method,
56
+ path: route.path,
57
+ secured: route.secured,
58
+ });
59
+ }
60
+ }
38
61
  logConnectorSurface(mounted);
39
62
  return app;
40
63
  }
64
+ /**
65
+ * CORS for managed routes only.
66
+ *
67
+ * LangGraph's `CORS_ALLOW_ORIGINS` covers built-ins (`/ok`, `/threads`, …) but
68
+ * GET responses from `http.app` often omit ACAO. Scoping to managed prefixes
69
+ * avoids stacking a second ACAO on those built-ins.
70
+ */
71
+ function mountManagedCors(app) {
72
+ const allowlist = resolveCorsAllowlist();
73
+ if (allowlist.length === 0) {
74
+ return;
75
+ }
76
+ const middleware = cors({
77
+ origin: (origin) => matchCorsOrigin(origin, allowlist) ?? null,
78
+ allowMethods: [...MDA_CORS_ALLOW_METHODS],
79
+ allowHeaders: [...MDA_CORS_ALLOW_HEADERS],
80
+ credentials: true,
81
+ });
82
+ app.use("*", async (c, next) => {
83
+ if (!isManagedCorsPath(c.req.path)) {
84
+ return next();
85
+ }
86
+ return middleware(c, next);
87
+ });
88
+ }
41
89
  /** Mount the public identity routes (guest issuance) onto `app`. */
42
90
  function mountIdentityRoutes(app, identity) {
43
91
  const http = identity.config.ingress.http;
@@ -53,6 +101,43 @@ function mountIdentityRoutes(app, identity) {
53
101
  return c.json({ token });
54
102
  });
55
103
  }
104
+ /**
105
+ * Mount public Slack Events routes for each channel manifest.
106
+ *
107
+ * Channel ingress authenticates via Slack request signatures — these routes
108
+ * stay public at the LangGraph auth layer (middleware_first).
109
+ */
110
+ function mountChannelRoutes(app, channels, mounted) {
111
+ if (!channels)
112
+ return;
113
+ for (const [name, manifest] of Object.entries(channels)) {
114
+ if (manifest.provider !== "slack")
115
+ continue;
116
+ const path = `/channels/${name}/events`;
117
+ mounted.push({
118
+ connector: `channel:${name}`,
119
+ method: "post",
120
+ path,
121
+ secured: false,
122
+ });
123
+ app.post(path, async (c) => {
124
+ // Read the body through Hono so signature verification sees the same
125
+ // bytes Slack signed (platform middleware may otherwise consume `raw`).
126
+ const rawBody = await c.req.text();
127
+ return handleSlackEventsRequest(c.req.raw, {
128
+ name,
129
+ config: {
130
+ on: manifest.triggers,
131
+ autoReply: manifest.autoReply,
132
+ mentionBehavior: manifest.mentionBehavior,
133
+ filters: manifest.filters,
134
+ conversation: manifest.conversation,
135
+ },
136
+ rawBody,
137
+ });
138
+ });
139
+ }
140
+ }
56
141
  /**
57
142
  * Mount a connector's `http` routes on a sub-router namespaced under
58
143
  * `/connectors/{kind}`, so connector routes cannot collide with identity/API
@@ -144,9 +229,12 @@ function logConnectorSurface(mounted) {
144
229
  if (mounted.length === 0) {
145
230
  return;
146
231
  }
147
- console.info(`[mda] connector HTTP surface (${mounted.length} route(s)):`);
232
+ console.info(`[mda] managed HTTP surface (${mounted.length} route(s)):`);
148
233
  for (const route of mounted) {
149
- const full = `/connectors/${route.connector}${route.path}`;
234
+ const full = route.connector.startsWith("channel:") ||
235
+ route.connector.startsWith("identity:")
236
+ ? route.path
237
+ : `/connectors/${route.connector}${route.path}`;
150
238
  const line = `[mda] ${route.method.toUpperCase().padEnd(6)} ${full}`;
151
239
  if (route.secured) {
152
240
  console.info(`${line} (identity enforced)`);
@@ -1 +1 @@
1
- {"version":3,"file":"identity-http.js","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-http.js","sourceRoot":"","sources":["../../src/runtime/identity-http.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,21 @@
1
1
  import type { IdentityConfig, MemoryScope, RuntimeIdentity, Tenancy } from "../identity/index.js";
2
+ import type { RuntimeChannel } from "../channels/types.js";
2
3
  import type { ConfigurableCarrier } from "./types.js";
4
+ /** Override ambient LangGraph configurable resolution. Test-only. */
5
+ export declare function setAmbientConfigurableForTests(loader?: () => Record<string, unknown> | undefined): void;
3
6
  /**
4
7
  * Resolve the LangGraph `configurable` bag from either a flat runtime or the
5
- * nested `ToolRuntime` shape LangChain passes to tools (`runtime.config.configurable`).
8
+ * nested `ToolRuntime` shape LangChain passes to tools
9
+ * (`runtime.config.configurable`).
10
+ *
11
+ * When the caller only passes `{ state }` (deepagents memory/skills middleware
12
+ * does this when resolving a {@link BackendFactory}), fall back to the ambient
13
+ * LangGraph runnable config so `langgraph_auth_user` still reaches actor/tenant
14
+ * memory remounts.
15
+ *
16
+ * Also fall back when a runtime `config` is present but its `configurable` bag
17
+ * lacks `langgraph_auth_user` (empty or partial). Returning that bag would skip
18
+ * ambient and break first-turn actor memory remounts.
6
19
  */
7
20
  export declare function resolveRuntimeConfigurable(runtime: RuntimeConfigLike | undefined): Record<string, unknown> | undefined;
8
21
  /**
@@ -31,6 +44,7 @@ export declare function memoryNamespace(cfg: IdentityConfig, ident: RuntimeIdent
31
44
  */
32
45
  export interface RuntimeConfigLike extends ConfigurableCarrier {
33
46
  identity?: RuntimeIdentity;
47
+ channel?: RuntimeChannel;
34
48
  config?: {
35
49
  configurable?: Record<string, unknown>;
36
50
  };
@@ -50,6 +64,32 @@ export declare function memoryNamespaceFor(runtime: RuntimeConfigLike | undefine
50
64
  * on exactly which segments identify a namespace.
51
65
  */
52
66
  export declare function memoryIdentitySegments(scope: MemoryScope, tenancy: Tenancy, actorId: string | undefined, tenantId: string | undefined): string[];
67
+ /**
68
+ * Dedicated Context Hub repo handle for actor/tenant memory.
69
+ *
70
+ * LangSmith requires `^[a-z][a-z0-9-_]*$`. Naming:
71
+ * - single · actor → `{deploy}--u--{actor}`
72
+ * - multi · actor → `{deploy}--t--{tenant}--u--{actor}`
73
+ * - tenant → `{deploy}--t--{tenant}`
74
+ *
75
+ * Returns `null` for `agent` / `none` (those stay on the deployment repo).
76
+ */
77
+ export declare function memoryHubRepoHandle(deployRepo: string, scope: MemoryScope, tenancy: Tenancy, actorId: string | undefined, tenantId: string | undefined): string | null;
78
+ /**
79
+ * Make identity ids safe as Hub / local-FS *path* segments (`guest:uuid` → `guest_uuid`).
80
+ *
81
+ * ASCII-only so npm and PyPI agree. Empty / `.` / `..` collapse to `_` so a
82
+ * local `path.join` cannot escape the Context Hub root.
83
+ */
84
+ export declare function sanitizeMemoryPathSegment(segment: string): string;
85
+ /**
86
+ * Make identity ids safe as Context Hub *repo handles*
87
+ * (`^[a-z][a-z0-9-_]*$` — LangSmith `pushAgent` requirement).
88
+ *
89
+ * Implemented as a linear scan (no `/-+/` regex) so long dash runs cannot
90
+ * trigger CodeQL polynomial-ReDoS alerts on uncontrolled identity input.
91
+ */
92
+ export declare function sanitizeHubRepoSegment(segment: string): string;
53
93
  /**
54
94
  * Strip client-supplied identity keys from an incoming `configurable` so a
55
95
  * request body can never spoof the actor/tenant the handler resolved. The
@@ -1 +1 @@
1
- {"version":3,"file":"identity-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,OAAO,EACR,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA0BtD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAErC;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,eAAe,GAAG,SAAS,CA0B7B;AAwBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAiBtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAQtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAgBV;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
1
+ {"version":3,"file":"identity-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmCtD,qEAAqE;AACrE,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACjD,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAWrC;AA4BD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,eAAe,GAAG,SAAS,CA0B7B;AAwBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAiBtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,EAAE,GAAG,SAAS,CAQtB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,EAAE,CAgBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAsBf;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0B9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAChD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
@@ -1,3 +1,4 @@
1
+ import { getConfig } from "@langchain/langgraph";
1
2
  /**
2
3
  * Identity fields a client must never assert via `config.configurable`; only the
3
4
  * custom-auth handler (`langgraph_auth_user`) is trusted.
@@ -10,7 +11,12 @@ const RESERVED_CONFIGURABLE_KEYS = new Set([
10
11
  "mda_actor_email",
11
12
  "mda_claims",
12
13
  "mda_actor_type",
14
+ "mda_source_provider",
13
15
  "mda_source_thread_id",
16
+ /** Stamped by the managed channel runner; rebuilt into `runtime.channel`. */
17
+ "mda_channel_binding",
18
+ /** Stamped by compiled cron entries; never client-asserted. */
19
+ "mda_schedule",
14
20
  ]);
15
21
  /** Source channels a run can originate from (`runtime.identity.source.provider`). */
16
22
  const SOURCE_PROVIDERS = new Set([
@@ -20,12 +26,57 @@ const SOURCE_PROVIDERS = new Set([
20
26
  "cli",
21
27
  "studio",
22
28
  ]);
29
+ let ambientConfigurableForTests;
30
+ /** Override ambient LangGraph configurable resolution. Test-only. */
31
+ export function setAmbientConfigurableForTests(loader) {
32
+ ambientConfigurableForTests = loader;
33
+ }
23
34
  /**
24
35
  * Resolve the LangGraph `configurable` bag from either a flat runtime or the
25
- * nested `ToolRuntime` shape LangChain passes to tools (`runtime.config.configurable`).
36
+ * nested `ToolRuntime` shape LangChain passes to tools
37
+ * (`runtime.config.configurable`).
38
+ *
39
+ * When the caller only passes `{ state }` (deepagents memory/skills middleware
40
+ * does this when resolving a {@link BackendFactory}), fall back to the ambient
41
+ * LangGraph runnable config so `langgraph_auth_user` still reaches actor/tenant
42
+ * memory remounts.
43
+ *
44
+ * Also fall back when a runtime `config` is present but its `configurable` bag
45
+ * lacks `langgraph_auth_user` (empty or partial). Returning that bag would skip
46
+ * ambient and break first-turn actor memory remounts.
26
47
  */
27
48
  export function resolveRuntimeConfigurable(runtime) {
28
- return runtime?.configurable ?? runtime?.config?.configurable;
49
+ const fromRuntime = configurableFromRuntime(runtime);
50
+ if (fromRuntime && "langgraph_auth_user" in fromRuntime) {
51
+ return fromRuntime;
52
+ }
53
+ const ambient = resolveAmbientConfigurable();
54
+ if (ambient) {
55
+ return ambient;
56
+ }
57
+ return fromRuntime;
58
+ }
59
+ function configurableFromRuntime(runtime) {
60
+ const fromRuntime = runtime?.configurable ?? runtime?.config?.configurable;
61
+ if (fromRuntime && typeof fromRuntime === "object") {
62
+ return fromRuntime;
63
+ }
64
+ return undefined;
65
+ }
66
+ function resolveAmbientConfigurable() {
67
+ if (ambientConfigurableForTests) {
68
+ return ambientConfigurableForTests();
69
+ }
70
+ try {
71
+ const configurable = getConfig().configurable;
72
+ if (configurable && typeof configurable === "object") {
73
+ return configurable;
74
+ }
75
+ }
76
+ catch {
77
+ // Outside a runnable context (e.g. authoring-time unit tests).
78
+ }
79
+ return undefined;
29
80
  }
30
81
  /**
31
82
  * Build the frozen identity envelope for the current run from the trusted
@@ -142,6 +193,83 @@ export function memoryIdentitySegments(scope, tenancy, actorId, tenantId) {
142
193
  // "agent" (shared) | "none" (no memory) → no per-identity restriction.
143
194
  return [];
144
195
  }
196
+ /**
197
+ * Dedicated Context Hub repo handle for actor/tenant memory.
198
+ *
199
+ * LangSmith requires `^[a-z][a-z0-9-_]*$`. Naming:
200
+ * - single · actor → `{deploy}--u--{actor}`
201
+ * - multi · actor → `{deploy}--t--{tenant}--u--{actor}`
202
+ * - tenant → `{deploy}--t--{tenant}`
203
+ *
204
+ * Returns `null` for `agent` / `none` (those stay on the deployment repo).
205
+ */
206
+ export function memoryHubRepoHandle(deployRepo, scope, tenancy, actorId, tenantId) {
207
+ if (scope === "none" || scope === "agent") {
208
+ return null;
209
+ }
210
+ const segments = memoryIdentitySegments(scope, tenancy, actorId, tenantId).map(sanitizeHubRepoSegment);
211
+ if (segments.length === 0) {
212
+ return null;
213
+ }
214
+ const base = sanitizeHubRepoSegment(deployRepo);
215
+ if (scope === "tenant") {
216
+ return `${base}--t--${segments[0]}`;
217
+ }
218
+ // actor
219
+ if (tenancy === "multi" && segments.length >= 2) {
220
+ return `${base}--t--${segments[0]}--u--${segments[1]}`;
221
+ }
222
+ return `${base}--u--${segments[0]}`;
223
+ }
224
+ /**
225
+ * Make identity ids safe as Hub / local-FS *path* segments (`guest:uuid` → `guest_uuid`).
226
+ *
227
+ * ASCII-only so npm and PyPI agree. Empty / `.` / `..` collapse to `_` so a
228
+ * local `path.join` cannot escape the Context Hub root.
229
+ */
230
+ export function sanitizeMemoryPathSegment(segment) {
231
+ const cleaned = segment.replace(/[^A-Za-z0-9._@-]+/g, "_");
232
+ if (cleaned === "" || cleaned === "." || cleaned === "..") {
233
+ return "_";
234
+ }
235
+ return cleaned;
236
+ }
237
+ /**
238
+ * Make identity ids safe as Context Hub *repo handles*
239
+ * (`^[a-z][a-z0-9-_]*$` — LangSmith `pushAgent` requirement).
240
+ *
241
+ * Implemented as a linear scan (no `/-+/` regex) so long dash runs cannot
242
+ * trigger CodeQL polynomial-ReDoS alerts on uncontrolled identity input.
243
+ */
244
+ export function sanitizeHubRepoSegment(segment) {
245
+ let cleaned = "";
246
+ let pendingDash = false;
247
+ for (let i = 0; i < segment.length; i++) {
248
+ const code = segment.charCodeAt(i);
249
+ // Fold ASCII A-Z to a-z; leave everything else for the separator branch.
250
+ const lower = code >= 65 && code <= 90 ? code + 32 : code;
251
+ const isLower = lower >= 97 && lower <= 122;
252
+ const isDigit = lower >= 48 && lower <= 57;
253
+ if (isLower || isDigit) {
254
+ if (pendingDash && cleaned.length > 0) {
255
+ cleaned += "-";
256
+ }
257
+ cleaned += String.fromCharCode(lower);
258
+ pendingDash = false;
259
+ }
260
+ else {
261
+ // `-`, `_`, `:`, unicode, etc. all collapse to a single separator dash.
262
+ pendingDash = true;
263
+ }
264
+ }
265
+ if (cleaned.length === 0) {
266
+ cleaned = "x";
267
+ }
268
+ else if (cleaned.charCodeAt(0) < 97 || cleaned.charCodeAt(0) > 122) {
269
+ cleaned = `u-${cleaned}`;
270
+ }
271
+ return cleaned;
272
+ }
145
273
  /**
146
274
  * Strip client-supplied identity keys from an incoming `configurable` so a
147
275
  * request body can never spoof the actor/tenant the handler resolved. The
@@ -154,6 +282,12 @@ export function sanitizeConfigurable(configurable) {
154
282
  return Object.fromEntries(Object.entries(configurable).filter(([key]) => !RESERVED_CONFIGURABLE_KEYS.has(key)));
155
283
  }
156
284
  function sourceProvider(configurable) {
285
+ const user = configurable?.langgraph_auth_user;
286
+ const fromUser = user?.mda_source_provider;
287
+ if (typeof fromUser === "string" && SOURCE_PROVIDERS.has(fromUser)) {
288
+ return fromUser;
289
+ }
290
+ // Legacy top-level stamp (pre-channel); reserved and stripped from clients.
157
291
  const declared = configurable?.mda_source_provider;
158
292
  if (typeof declared === "string" && SOURCE_PROVIDERS.has(declared)) {
159
293
  return declared;
@@ -161,6 +295,12 @@ function sourceProvider(configurable) {
161
295
  return "http";
162
296
  }
163
297
  function threadId(configurable) {
298
+ const user = configurable?.langgraph_auth_user;
299
+ const fromUser = user?.mda_source_thread_id;
300
+ if (fromUser != null && String(fromUser).length > 0) {
301
+ return String(fromUser);
302
+ }
303
+ // Non-channel / backward-compatible fallback.
164
304
  const value = configurable?.thread_id;
165
305
  return value == null ? undefined : String(value);
166
306
  }
@@ -1 +1 @@
1
- {"version":3,"file":"identity-runtime.js","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-runtime.js","sourceRoot":"","sources":["../../src/runtime/identity-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD;;;GAGG;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,UAAU;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;IACtB,6EAA6E;IAC7E,qBAAqB;IACrB,+DAA+D;IAC/D,cAAc;CACf,CAAC,CAAC;AAEH,qFAAqF;AACrF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,OAAO;IACP,UAAU;IACV,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH,IAAI,2BAES,CAAC;AAEd,qEAAqE;AACrE,MAAM,UAAU,8BAA8B,CAC5C,MAAkD;IAElD,2BAA2B,GAAG,MAAM,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAsC;IAEtC,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,WAAW,IAAI,qBAAqB,IAAI,WAAW,EAAE,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAsC;IAEtC,MAAM,WAAW,GAAG,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;IAC3E,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,WAAsC,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,2BAA2B,EAAE,CAAC;QAChC,OAAO,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC,YAAY,CAAC;QAC9C,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,YAAuC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAAiD;IAEjD,MAAM,IAAI,GAAG,YAAY,EAAE,mBAA8C,CAAC;IAC1E,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAoB;QAChC,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACtE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC;YAC1D,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE;KACF,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3D,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAqC,CAAC;IAC/D,CAAC;IACD,4EAA4E;IAC5E,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,oEAAoE;AACpE,SAAS,gBAAgB,CAAC,IAA6B;IACrD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,KAAK,uBAAuB,CAAC;AACnD,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAmB,EACnB,KAAsB,EACtB,YAAoB;IAEpB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IACjC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO;QACL,YAAY;QACZ,GAAG,sBAAsB,CACvB,KAAK,EACL,GAAG,CAAC,OAAO,EACX,KAAK,CAAC,KAAK,CAAC,EAAE,EACd,KAAK,CAAC,MAAM,EAAE,EAAE,CACjB;KACF,CAAC;AACJ,CAAC;AAcD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAsC,EACtC,GAAmB,EACnB,YAAoB;IAEpB,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;IAC5E,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,+EAA+E;IAC/E,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,OAAgB,EAChB,OAA2B,EAC3B,QAA4B;IAE5B,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,uEAAuE;IACvE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,KAAkB,EAClB,OAAgB,EAChB,OAA2B,EAC3B,QAA4B;IAE5B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,CACrC,KAAK,EACL,OAAO,EACP,OAAO,EACP,QAAQ,CACT,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,GAAG,IAAI,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC;IACD,QAAQ;IACR,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,IAAI,QAAQ,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,GAAG,IAAI,QAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAI,GAAG,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACtC,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;QACrE,OAAO,GAAG,KAAK,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAAiD;IAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACjC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CAChD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,YAAiD;IAEjD,MAAM,IAAI,GAAG,YAAY,EAAE,mBAA8C,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,EAAE,mBAAmB,CAAC;IAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,OAAO,QAAiD,CAAC;IAC3D,CAAC;IACD,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,YAAY,EAAE,mBAAmB,CAAC;IACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,OAAO,QAAiD,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CACf,YAAiD;IAEjD,MAAM,IAAI,GAAG,YAAY,EAAE,mBAA8C,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,EAAE,oBAAoB,CAAC;IAC5C,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,8CAA8C;IAC9C,MAAM,KAAK,GAAG,YAAY,EAAE,SAAS,CAAC;IACtC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC"}
@@ -8,11 +8,12 @@ export type { Connector, ConnectorToolList, DiscoveredConnectorModule, HttpConte
8
8
  export type { ManagedUser } from "./auth.js";
9
9
  export { CredentialCache, CREDENTIAL_SIGNING_SECRET_ENV, clearCredentialCacheForTests, createCredentialsProvider, } from "./credentials.js";
10
10
  export type { CredentialDeps, CredentialForOptions, CredentialsProvider, } from "./credentials.js";
11
- export { buildRuntimeIdentity, memoryIdentitySegments, memoryNamespace, memoryNamespaceFor, sanitizeConfigurable, } from "./identity-runtime.js";
11
+ export { buildRuntimeIdentity, memoryHubRepoHandle, memoryIdentitySegments, memoryNamespace, memoryNamespaceFor, resolveRuntimeConfigurable, sanitizeConfigurable, sanitizeHubRepoSegment, sanitizeMemoryPathSegment, setAmbientConfigurableForTests, } from "./identity-runtime.js";
12
12
  export { managedRuntimeOverrides, withManagedRuntime, wrapToolsWithManagedRuntime, } from "./managed-tools.js";
13
13
  export type { InvokableTool, ManagedDeepAgentRuntime, ManagedRuntimeExtras, } from "./managed-tools.js";
14
14
  export { withManagedMiddleware, wrapMiddlewareWithManagedRuntime, } from "./managed-middleware.js";
15
15
  export type { ManagedMiddleware } from "./managed-middleware.js";
16
+ export { ensureIdentityMemorySlice, ensureLocalMemorySlice, } from "./memory/index.js";
16
17
  export { issueGuestToken } from "./validated-token.js";
17
18
  /**
18
19
  * Compile a {@link DeepAgentDefinition} into a runnable Deep Agent.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAWvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAgGvD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,mBAAmB,EAC/B,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2YA4F9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,mBAAmB,EACnB,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAC1D;IACC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,mBAAmB,EAC/B,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2YAe7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAuBvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAExE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAgGvD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,mBAAmB,EAC/B,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2YAoK9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,mBAAmB,EACnB,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAC1D;IACC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,mBAAmB,EAC/B,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2YAe7B"}