managed-deepagents 0.5.3-dev.111 → 0.5.3-dev.113

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 (275) hide show
  1. package/README.md +20 -17
  2. package/dist/channels/manifest.d.ts +0 -2
  3. package/dist/channels/manifest.d.ts.map +1 -1
  4. package/dist/channels/slack/http.d.ts.map +1 -1
  5. package/dist/channels/slack/http.js +3 -48
  6. package/dist/channels/slack/http.js.map +1 -1
  7. package/dist/channels/slack/index.d.ts +2 -3
  8. package/dist/channels/slack/index.d.ts.map +1 -1
  9. package/dist/channels/slack/index.js +2 -3
  10. package/dist/channels/slack/index.js.map +1 -1
  11. package/dist/connectors/mcp/index.d.ts.map +1 -1
  12. package/dist/connectors/mcp/index.js +5 -1
  13. package/dist/connectors/mcp/index.js.map +1 -1
  14. package/dist/connectors/mcp/load.js +3 -0
  15. package/dist/connectors/mcp/load.js.map +1 -1
  16. package/dist/connectors/tool-selection.d.ts +13 -18
  17. package/dist/connectors/tool-selection.d.ts.map +1 -1
  18. package/dist/connectors/tool-selection.js +10 -13
  19. package/dist/connectors/tool-selection.js.map +1 -1
  20. package/dist/extension.d.ts +5 -5
  21. package/dist/extension.js +5 -5
  22. package/dist/identity/index.d.ts +2 -11
  23. package/dist/identity/index.d.ts.map +1 -1
  24. package/dist/identity/index.js +8 -66
  25. package/dist/identity/index.js.map +1 -1
  26. package/dist/identity/options.d.ts +3 -3
  27. package/dist/identity/options.js +7 -8
  28. package/dist/identity/options.js.map +1 -1
  29. package/dist/identity/slack/links.d.ts +1 -2
  30. package/dist/identity/slack/links.d.ts.map +1 -1
  31. package/dist/identity/slack/links.js +1 -2
  32. package/dist/identity/slack/links.js.map +1 -1
  33. package/dist/identity/supabase.d.ts.map +1 -1
  34. package/dist/identity/supabase.js +2 -0
  35. package/dist/identity/supabase.js.map +1 -1
  36. package/dist/identity/types.d.ts +8 -81
  37. package/dist/identity/types.d.ts.map +1 -1
  38. package/dist/index.d.ts +2 -5
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/namespaces.d.ts +5 -183
  43. package/dist/namespaces.d.ts.map +1 -1
  44. package/dist/namespaces.js +1 -63
  45. package/dist/namespaces.js.map +1 -1
  46. package/dist/runtime/auth.d.ts +11 -14
  47. package/dist/runtime/auth.d.ts.map +1 -1
  48. package/dist/runtime/auth.js +15 -54
  49. package/dist/runtime/auth.js.map +1 -1
  50. package/dist/runtime/cors.d.ts +5 -4
  51. package/dist/runtime/cors.d.ts.map +1 -1
  52. package/dist/runtime/cors.js +5 -9
  53. package/dist/runtime/cors.js.map +1 -1
  54. package/dist/runtime/identity-http.d.ts.map +1 -1
  55. package/dist/runtime/identity-http.js +0 -69
  56. package/dist/runtime/identity-http.js.map +1 -1
  57. package/dist/runtime/identity-runtime.d.ts +2 -10
  58. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  59. package/dist/runtime/identity-runtime.js +2 -38
  60. package/dist/runtime/identity-runtime.js.map +1 -1
  61. package/dist/runtime/index.d.ts +15 -11
  62. package/dist/runtime/index.d.ts.map +1 -1
  63. package/dist/runtime/index.js +8 -44
  64. package/dist/runtime/index.js.map +1 -1
  65. package/dist/runtime/managed-middleware.d.ts +2 -3
  66. package/dist/runtime/managed-middleware.d.ts.map +1 -1
  67. package/dist/runtime/managed-middleware.js +12 -12
  68. package/dist/runtime/managed-middleware.js.map +1 -1
  69. package/dist/runtime/managed-tools.d.ts +4 -11
  70. package/dist/runtime/managed-tools.d.ts.map +1 -1
  71. package/dist/runtime/managed-tools.js +11 -18
  72. package/dist/runtime/managed-tools.js.map +1 -1
  73. package/dist/runtime/memory/context-io.d.ts +0 -1
  74. package/dist/runtime/memory/context-io.d.ts.map +1 -1
  75. package/dist/runtime/memory/context-io.js +0 -10
  76. package/dist/runtime/memory/context-io.js.map +1 -1
  77. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  78. package/dist/runtime/memory/mounts.js +0 -10
  79. package/dist/runtime/memory/mounts.js.map +1 -1
  80. package/dist/runtime/validated-token.d.ts.map +1 -1
  81. package/dist/runtime/validated-token.js +7 -1
  82. package/dist/runtime/validated-token.js.map +1 -1
  83. package/package.json +10 -11
  84. package/dist/channels/index.d.ts +0 -25
  85. package/dist/channels/index.d.ts.map +0 -1
  86. package/dist/channels/index.js +0 -18
  87. package/dist/channels/index.js.map +0 -1
  88. package/dist/connectors/marketplace/catalog.d.ts +0 -96
  89. package/dist/connectors/marketplace/catalog.d.ts.map +0 -1
  90. package/dist/connectors/marketplace/catalog.js +0 -213
  91. package/dist/connectors/marketplace/catalog.js.map +0 -1
  92. package/dist/connectors/marketplace/fleet-mcp.d.ts +0 -62
  93. package/dist/connectors/marketplace/fleet-mcp.d.ts.map +0 -1
  94. package/dist/connectors/marketplace/fleet-mcp.js +0 -215
  95. package/dist/connectors/marketplace/fleet-mcp.js.map +0 -1
  96. package/dist/connectors/marketplace/index.d.ts +0 -31
  97. package/dist/connectors/marketplace/index.d.ts.map +0 -1
  98. package/dist/connectors/marketplace/index.js +0 -39
  99. package/dist/connectors/marketplace/index.js.map +0 -1
  100. package/dist/connectors/marketplace/load.d.ts +0 -14
  101. package/dist/connectors/marketplace/load.d.ts.map +0 -1
  102. package/dist/connectors/marketplace/load.js +0 -206
  103. package/dist/connectors/marketplace/load.js.map +0 -1
  104. package/dist/connectors/slack/index.d.ts +0 -24
  105. package/dist/connectors/slack/index.d.ts.map +0 -1
  106. package/dist/connectors/slack/index.js +0 -64
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/toolserver/catalog.d.ts +0 -326
  109. package/dist/connectors/toolserver/catalog.d.ts.map +0 -1
  110. package/dist/connectors/toolserver/catalog.js +0 -415
  111. package/dist/connectors/toolserver/catalog.js.map +0 -1
  112. package/dist/connectors/toolserver/connectors.d.ts +0 -698
  113. package/dist/connectors/toolserver/connectors.d.ts.map +0 -1
  114. package/dist/connectors/toolserver/connectors.js +0 -13
  115. package/dist/connectors/toolserver/connectors.js.map +0 -1
  116. package/dist/connectors/toolserver/index.d.ts +0 -142
  117. package/dist/connectors/toolserver/index.d.ts.map +0 -1
  118. package/dist/connectors/toolserver/index.js +0 -105
  119. package/dist/connectors/toolserver/index.js.map +0 -1
  120. package/dist/connectors/toolserver/integrations.d.ts +0 -103
  121. package/dist/connectors/toolserver/integrations.d.ts.map +0 -1
  122. package/dist/connectors/toolserver/integrations.js +0 -288
  123. package/dist/connectors/toolserver/integrations.js.map +0 -1
  124. package/dist/connectors/toolserver/load.d.ts +0 -55
  125. package/dist/connectors/toolserver/load.d.ts.map +0 -1
  126. package/dist/connectors/toolserver/load.js +0 -289
  127. package/dist/connectors/toolserver/load.js.map +0 -1
  128. package/dist/identity/actor-subject.d.ts +0 -60
  129. package/dist/identity/actor-subject.d.ts.map +0 -1
  130. package/dist/identity/actor-subject.js +0 -107
  131. package/dist/identity/actor-subject.js.map +0 -1
  132. package/dist/identity/byo-oauth.d.ts +0 -105
  133. package/dist/identity/byo-oauth.d.ts.map +0 -1
  134. package/dist/identity/byo-oauth.js +0 -190
  135. package/dist/identity/byo-oauth.js.map +0 -1
  136. package/dist/identity/connect-inference.d.ts +0 -37
  137. package/dist/identity/connect-inference.d.ts.map +0 -1
  138. package/dist/identity/connect-inference.js +0 -53
  139. package/dist/identity/connect-inference.js.map +0 -1
  140. package/dist/identity/connect-paths.d.ts +0 -8
  141. package/dist/identity/connect-paths.d.ts.map +0 -1
  142. package/dist/identity/connect-paths.js +0 -11
  143. package/dist/identity/connect-paths.js.map +0 -1
  144. package/dist/identity/connect-provider-types.d.ts +0 -97
  145. package/dist/identity/connect-provider-types.d.ts.map +0 -1
  146. package/dist/identity/connect-provider-types.js +0 -10
  147. package/dist/identity/connect-provider-types.js.map +0 -1
  148. package/dist/identity/connect-provider.d.ts +0 -35
  149. package/dist/identity/connect-provider.d.ts.map +0 -1
  150. package/dist/identity/connect-provider.js +0 -148
  151. package/dist/identity/connect-provider.js.map +0 -1
  152. package/dist/identity/credential-resolvers.d.ts +0 -33
  153. package/dist/identity/credential-resolvers.d.ts.map +0 -1
  154. package/dist/identity/credential-resolvers.js +0 -62
  155. package/dist/identity/credential-resolvers.js.map +0 -1
  156. package/dist/identity/define-fleet-connect.d.ts +0 -53
  157. package/dist/identity/define-fleet-connect.d.ts.map +0 -1
  158. package/dist/identity/define-fleet-connect.js +0 -76
  159. package/dist/identity/define-fleet-connect.js.map +0 -1
  160. package/dist/identity/fleet-connect-hint.d.ts +0 -41
  161. package/dist/identity/fleet-connect-hint.d.ts.map +0 -1
  162. package/dist/identity/fleet-connect-hint.js +0 -190
  163. package/dist/identity/fleet-connect-hint.js.map +0 -1
  164. package/dist/identity/fleet-connect.d.ts +0 -93
  165. package/dist/identity/fleet-connect.d.ts.map +0 -1
  166. package/dist/identity/fleet-connect.js +0 -256
  167. package/dist/identity/fleet-connect.js.map +0 -1
  168. package/dist/identity/fleet-integration-connect.d.ts +0 -32
  169. package/dist/identity/fleet-integration-connect.d.ts.map +0 -1
  170. package/dist/identity/fleet-integration-connect.js +0 -35
  171. package/dist/identity/fleet-integration-connect.js.map +0 -1
  172. package/dist/identity/fleet.d.ts +0 -56
  173. package/dist/identity/fleet.d.ts.map +0 -1
  174. package/dist/identity/fleet.js +0 -131
  175. package/dist/identity/fleet.js.map +0 -1
  176. package/dist/identity/github/connect-http.d.ts +0 -37
  177. package/dist/identity/github/connect-http.d.ts.map +0 -1
  178. package/dist/identity/github/connect-http.js +0 -128
  179. package/dist/identity/github/connect-http.js.map +0 -1
  180. package/dist/identity/github/credentials-store.d.ts +0 -76
  181. package/dist/identity/github/credentials-store.d.ts.map +0 -1
  182. package/dist/identity/github/credentials-store.js +0 -270
  183. package/dist/identity/github/credentials-store.js.map +0 -1
  184. package/dist/identity/github/credentials.d.ts +0 -87
  185. package/dist/identity/github/credentials.d.ts.map +0 -1
  186. package/dist/identity/github/credentials.js +0 -201
  187. package/dist/identity/github/credentials.js.map +0 -1
  188. package/dist/identity/github/index.d.ts +0 -7
  189. package/dist/identity/github/index.d.ts.map +0 -1
  190. package/dist/identity/github/index.js +0 -6
  191. package/dist/identity/github/index.js.map +0 -1
  192. package/dist/identity/github/oauth.d.ts +0 -47
  193. package/dist/identity/github/oauth.d.ts.map +0 -1
  194. package/dist/identity/github/oauth.js +0 -124
  195. package/dist/identity/github/oauth.js.map +0 -1
  196. package/dist/identity/google/connect-http.d.ts +0 -37
  197. package/dist/identity/google/connect-http.d.ts.map +0 -1
  198. package/dist/identity/google/connect-http.js +0 -42
  199. package/dist/identity/google/connect-http.js.map +0 -1
  200. package/dist/identity/google/index.d.ts +0 -7
  201. package/dist/identity/google/index.d.ts.map +0 -1
  202. package/dist/identity/google/index.js +0 -6
  203. package/dist/identity/google/index.js.map +0 -1
  204. package/dist/identity/google/oauth.d.ts +0 -22
  205. package/dist/identity/google/oauth.d.ts.map +0 -1
  206. package/dist/identity/google/oauth.js +0 -48
  207. package/dist/identity/google/oauth.js.map +0 -1
  208. package/dist/identity/linkedin/connect-http.d.ts +0 -37
  209. package/dist/identity/linkedin/connect-http.d.ts.map +0 -1
  210. package/dist/identity/linkedin/connect-http.js +0 -41
  211. package/dist/identity/linkedin/connect-http.js.map +0 -1
  212. package/dist/identity/linkedin/index.d.ts +0 -7
  213. package/dist/identity/linkedin/index.d.ts.map +0 -1
  214. package/dist/identity/linkedin/index.js +0 -6
  215. package/dist/identity/linkedin/index.js.map +0 -1
  216. package/dist/identity/linkedin/oauth.d.ts +0 -22
  217. package/dist/identity/linkedin/oauth.d.ts.map +0 -1
  218. package/dist/identity/linkedin/oauth.js +0 -47
  219. package/dist/identity/linkedin/oauth.js.map +0 -1
  220. package/dist/identity/marketplace/connect-hint.d.ts +0 -31
  221. package/dist/identity/marketplace/connect-hint.d.ts.map +0 -1
  222. package/dist/identity/marketplace/connect-hint.js +0 -59
  223. package/dist/identity/marketplace/connect-hint.js.map +0 -1
  224. package/dist/identity/marketplace/connect.d.ts +0 -51
  225. package/dist/identity/marketplace/connect.d.ts.map +0 -1
  226. package/dist/identity/marketplace/connect.js +0 -88
  227. package/dist/identity/marketplace/connect.js.map +0 -1
  228. package/dist/identity/marketplace/index.d.ts +0 -9
  229. package/dist/identity/marketplace/index.d.ts.map +0 -1
  230. package/dist/identity/marketplace/index.js +0 -9
  231. package/dist/identity/marketplace/index.js.map +0 -1
  232. package/dist/identity/microsoft/connect-http.d.ts +0 -38
  233. package/dist/identity/microsoft/connect-http.d.ts.map +0 -1
  234. package/dist/identity/microsoft/connect-http.js +0 -42
  235. package/dist/identity/microsoft/connect-http.js.map +0 -1
  236. package/dist/identity/microsoft/index.d.ts +0 -7
  237. package/dist/identity/microsoft/index.d.ts.map +0 -1
  238. package/dist/identity/microsoft/index.js +0 -6
  239. package/dist/identity/microsoft/index.js.map +0 -1
  240. package/dist/identity/microsoft/oauth.d.ts +0 -24
  241. package/dist/identity/microsoft/oauth.d.ts.map +0 -1
  242. package/dist/identity/microsoft/oauth.js +0 -65
  243. package/dist/identity/microsoft/oauth.js.map +0 -1
  244. package/dist/identity/oauth-env.d.ts +0 -43
  245. package/dist/identity/oauth-env.d.ts.map +0 -1
  246. package/dist/identity/oauth-env.js +0 -66
  247. package/dist/identity/oauth-env.js.map +0 -1
  248. package/dist/identity/oauth-tickets.d.ts +0 -37
  249. package/dist/identity/oauth-tickets.d.ts.map +0 -1
  250. package/dist/identity/oauth-tickets.js +0 -114
  251. package/dist/identity/oauth-tickets.js.map +0 -1
  252. package/dist/identity/slack/connect-http.d.ts +0 -35
  253. package/dist/identity/slack/connect-http.d.ts.map +0 -1
  254. package/dist/identity/slack/connect-http.js +0 -115
  255. package/dist/identity/slack/connect-http.js.map +0 -1
  256. package/dist/identity/slack/index.d.ts +0 -8
  257. package/dist/identity/slack/index.d.ts.map +0 -1
  258. package/dist/identity/slack/index.js +0 -7
  259. package/dist/identity/slack/index.js.map +0 -1
  260. package/dist/identity/slack/oauth.d.ts +0 -28
  261. package/dist/identity/slack/oauth.d.ts.map +0 -1
  262. package/dist/identity/slack/oauth.js +0 -87
  263. package/dist/identity/slack/oauth.js.map +0 -1
  264. package/dist/identity/x/connect-http.d.ts +0 -38
  265. package/dist/identity/x/connect-http.d.ts.map +0 -1
  266. package/dist/identity/x/connect-http.js +0 -41
  267. package/dist/identity/x/connect-http.js.map +0 -1
  268. package/dist/identity/x/index.d.ts +0 -6
  269. package/dist/identity/x/index.d.ts.map +0 -1
  270. package/dist/identity/x/index.js +0 -5
  271. package/dist/identity/x/index.js.map +0 -1
  272. package/dist/runtime/credentials.d.ts +0 -68
  273. package/dist/runtime/credentials.d.ts.map +0 -1
  274. package/dist/runtime/credentials.js +0 -235
  275. package/dist/runtime/credentials.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B;;;;;;;;;;;;;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"}
@@ -1,235 +0,0 @@
1
- import { SignJWT } from "jose";
2
- import { credentialTargetNames, isSingleCredentialResolver, } from "../identity/index.js";
3
- import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS } from "./http.js";
4
- /**
5
- * Component 5 — Credentials, custom mode.
6
- *
7
- * The escape hatch Agent Auth can't cover: bespoke per-caller credential minting
8
- * via an in-process resolver callback or a hosted token-exchange endpoint. It
9
- * runs in the worker (not the shared ingress auth handler), applies the output
10
- * to downstream calls, and caches per `(user, target)` until the credential's
11
- * `expiresAt`. Secrets live only in this in-memory cache keyed by identity —
12
- * never in thread state or traces.
13
- *
14
- * Managed credential modes (`"user"` / `"agent"`) select toolserver/Connect
15
- * ownership on the identity axis; only `custom` builds a
16
- * {@link CredentialsProvider} here.
17
- */
18
- /** Env var holding the HMAC secret MDA signs the endpoint assertion with. */
19
- export const CREDENTIAL_SIGNING_SECRET_ENV = "MDA_TOKEN_EXCHANGE_SECRET";
20
- /** How long a signed endpoint assertion is valid, in seconds. */
21
- const ASSERTION_TTL_SECONDS = 60;
22
- /** Default TTL when a resolver omits `expiresAt` (15 minutes). */
23
- export const DEFAULT_CREDENTIAL_TTL_MS = 15 * 60 * 1000;
24
- /** Soft cap on cached credentials per process. */
25
- export const MAX_CREDENTIAL_CACHE_ENTRIES = 1024;
26
- /**
27
- * TTL cache for resolved credentials, keyed by `(user, target)` so
28
- * per-repo/per-install tokens never collide. Kept out of thread state. Entries
29
- * expire at the credential's `expiresAt`, or after a default TTL when omitted.
30
- * The cache is soft-capped to bound memory in long-lived workers.
31
- */
32
- export class CredentialCache {
33
- defaultTtlMs;
34
- maxEntries;
35
- entries = new Map();
36
- constructor(defaultTtlMs = DEFAULT_CREDENTIAL_TTL_MS, maxEntries = MAX_CREDENTIAL_CACHE_ENTRIES) {
37
- this.defaultTtlMs = defaultTtlMs;
38
- this.maxEntries = maxEntries;
39
- }
40
- get(key, nowMs) {
41
- const hit = this.entries.get(key);
42
- if (!hit) {
43
- return undefined;
44
- }
45
- if (nowMs >= hit.expiresAtMs) {
46
- this.entries.delete(key);
47
- return undefined;
48
- }
49
- return hit.value;
50
- }
51
- set(key, value, nowMs = Date.now()) {
52
- let expiresAtMs;
53
- if (value.expiresAt) {
54
- const parsed = Date.parse(value.expiresAt);
55
- expiresAtMs = Number.isNaN(parsed) ? nowMs + this.defaultTtlMs : parsed;
56
- }
57
- else {
58
- expiresAtMs = nowMs + this.defaultTtlMs;
59
- }
60
- if (!this.entries.has(key)) {
61
- while (this.entries.size >= this.maxEntries) {
62
- const oldest = this.entries.keys().next().value;
63
- if (oldest === undefined) {
64
- break;
65
- }
66
- this.entries.delete(oldest);
67
- }
68
- }
69
- this.entries.set(key, { value, expiresAtMs });
70
- }
71
- clear() {
72
- this.entries.clear();
73
- }
74
- }
75
- /** Process-level cache shared across runs for the lifetime of the deployment. */
76
- const defaultCache = new CredentialCache();
77
- /** Clear the process-level credential cache. Test-only. */
78
- export function clearCredentialCacheForTests() {
79
- defaultCache.clear();
80
- }
81
- /**
82
- * Build the `runtime.credentials` provider for a run, or `undefined` when the
83
- * deployment isn't in custom-credentials mode. The provider is bound to the
84
- * run's resolved identity; every `for(target)` call is scoped to that actor.
85
- */
86
- export function createCredentialsProvider(cfg, identity, deps, cache = defaultCache) {
87
- if (cfg.scope.credentials !== "custom" || !cfg.credentials) {
88
- return undefined;
89
- }
90
- const resolved = {
91
- fetch: deps?.fetch ?? fetch,
92
- now: deps?.now ?? (() => Date.now()),
93
- signAssertion: deps?.signAssertion ?? defaultSignAssertion,
94
- };
95
- return {
96
- async for(target, options) {
97
- if (!identity) {
98
- throw new Error("runtime.credentials.for(...) requires a resolved identity, but none " +
99
- "was available for this run.");
100
- }
101
- const key = cacheKey(identity, target);
102
- if (!options?.forceRefresh) {
103
- const hit = cache.get(key, resolved.now());
104
- if (hit) {
105
- return hit;
106
- }
107
- }
108
- // Fail-closed: a resolver/endpoint error propagates and nothing is cached.
109
- const out = await resolveCredential(cfg, identity, target, resolved);
110
- cache.set(key, out);
111
- return out;
112
- },
113
- };
114
- }
115
- async function resolveCredential(cfg, identity, target, deps) {
116
- const creds = cfg.credentials;
117
- if (!creds) {
118
- throw new Error("No credentials resolver is configured for this deployment.");
119
- }
120
- return resolveOne(selectResolver(creds, target), identity, target, deps, creds);
121
- }
122
- /**
123
- * Pick the resolver for this target: the single one, or the map entry whose key
124
- * matches `target.name`.
125
- */
126
- function selectResolver(creds, target) {
127
- if (isSingleCredentialResolver(creds)) {
128
- return creds;
129
- }
130
- const entry = Object.hasOwn(creds, target.name)
131
- ? creds[target.name]
132
- : undefined;
133
- if (!entry) {
134
- const configured = credentialTargetNames(creds).join(", ");
135
- throw new Error(`runtime.credentials.for(...) has no resolver for target "${target.name}". ` +
136
- `Configured targets: ${configured}.`);
137
- }
138
- return entry;
139
- }
140
- async function resolveOne(config, identity, target, deps, creds) {
141
- const label = isSingleCredentialResolver(creds)
142
- ? "resolver"
143
- : `resolver for "${target.name}"`;
144
- if ("resolve" in config) {
145
- return normalizeResolved(await config.resolve({ identity, target }), label);
146
- }
147
- const assertion = await deps.signAssertion(identity, target);
148
- return callTokenExchange(config.endpoint.url, assertion, deps);
149
- }
150
- async function callTokenExchange(url, assertion, deps) {
151
- const response = await fetchWithTimeout(url, {
152
- method: "POST",
153
- headers: {
154
- "content-type": "application/json",
155
- authorization: `Bearer ${assertion}`,
156
- },
157
- body: JSON.stringify({ assertion }),
158
- }, PROVIDER_HTTP_TIMEOUT_MS, deps.fetch);
159
- if (!response.ok) {
160
- throw new Error(`Credential token-exchange endpoint ${url} responded ${response.status}.`);
161
- }
162
- return normalizeResolved(await response.json(), `endpoint ${url}`);
163
- }
164
- async function defaultSignAssertion(identity, target) {
165
- const secret = process.env[CREDENTIAL_SIGNING_SECRET_ENV];
166
- if (!secret) {
167
- throw new Error(`A hosted credential endpoint requires a signing secret. Set ` +
168
- `${CREDENTIAL_SIGNING_SECRET_ENV} in the deployment environment.`);
169
- }
170
- const issuedAt = Math.floor(Date.now() / 1000);
171
- return new SignJWT({
172
- user_id: identity.user.id,
173
- user_kind: identity.user.kind,
174
- target: { kind: target.kind, name: target.name, intent: target.intent },
175
- })
176
- .setProtectedHeader({ alg: "HS256" })
177
- .setSubject(identity.user.id)
178
- .setIssuedAt(issuedAt)
179
- .setExpirationTime(issuedAt + ASSERTION_TTL_SECONDS)
180
- .sign(new TextEncoder().encode(secret));
181
- }
182
- /**
183
- * The cache key that discriminates a minted credential: the user it belongs to,
184
- * plus the target's kind/name/intent/thread and metadata.
185
- */
186
- function cacheKey(identity, target) {
187
- return stableStringify([
188
- identity.user.id,
189
- target.kind,
190
- target.name,
191
- target.intent ?? null,
192
- target.threadId ?? null,
193
- target.metadata ?? null,
194
- ]);
195
- }
196
- /** Deterministic JSON with object keys sorted, so the cache key is stable. */
197
- function stableStringify(value) {
198
- if (value === null || typeof value !== "object") {
199
- return JSON.stringify(value) ?? "null";
200
- }
201
- if (Array.isArray(value)) {
202
- return `[${value.map(stableStringify).join(",")}]`;
203
- }
204
- const obj = value;
205
- return `{${Object.keys(obj)
206
- .sort()
207
- .map((key) => `${JSON.stringify(key)}:${stableStringify(obj[key])}`)
208
- .join(",")}}`;
209
- }
210
- /** Validate a resolver/endpoint result into a {@link ResolvedCredential}. */
211
- function normalizeResolved(value, sourceLabel) {
212
- if (!value || typeof value !== "object") {
213
- throw new Error(`Credential ${sourceLabel} returned a non-object result.`);
214
- }
215
- const { headers, expiresAt } = value;
216
- if (!headers || typeof headers !== "object" || Array.isArray(headers)) {
217
- throw new Error(`Credential ${sourceLabel} result is missing a headers object.`);
218
- }
219
- const normalizedHeaders = {};
220
- for (const [name, headerValue] of Object.entries(headers)) {
221
- if (typeof headerValue !== "string") {
222
- throw new Error(`Credential ${sourceLabel} header "${name}" must be a string.`);
223
- }
224
- normalizedHeaders[name] = headerValue;
225
- }
226
- const result = { headers: normalizedHeaders };
227
- if (expiresAt !== undefined) {
228
- if (typeof expiresAt !== "string") {
229
- throw new Error(`Credential ${sourceLabel} \`expiresAt\` must be an ISO string.`);
230
- }
231
- result.expiresAt = expiresAt;
232
- }
233
- return result;
234
- }
235
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/runtime/credentials.ts"],"names":[],"mappings":"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"}