arc-1 0.7.2 → 0.9.0

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 (86) hide show
  1. package/README.md +32 -6
  2. package/dist/adt/btp.d.ts +14 -3
  3. package/dist/adt/btp.d.ts.map +1 -1
  4. package/dist/adt/btp.js +18 -3
  5. package/dist/adt/btp.js.map +1 -1
  6. package/dist/adt/client.d.ts +30 -1
  7. package/dist/adt/client.d.ts.map +1 -1
  8. package/dist/adt/client.js +72 -2
  9. package/dist/adt/client.js.map +1 -1
  10. package/dist/adt/codeintel.d.ts +23 -0
  11. package/dist/adt/codeintel.d.ts.map +1 -1
  12. package/dist/adt/codeintel.js +39 -0
  13. package/dist/adt/codeintel.js.map +1 -1
  14. package/dist/adt/config.d.ts +4 -0
  15. package/dist/adt/config.d.ts.map +1 -1
  16. package/dist/adt/config.js.map +1 -1
  17. package/dist/adt/crud.d.ts +28 -4
  18. package/dist/adt/crud.d.ts.map +1 -1
  19. package/dist/adt/crud.js +74 -28
  20. package/dist/adt/crud.js.map +1 -1
  21. package/dist/adt/diagnostics.d.ts +7 -1
  22. package/dist/adt/diagnostics.d.ts.map +1 -1
  23. package/dist/adt/diagnostics.js +38 -9
  24. package/dist/adt/diagnostics.js.map +1 -1
  25. package/dist/adt/errors.d.ts +1 -1
  26. package/dist/adt/errors.d.ts.map +1 -1
  27. package/dist/adt/errors.js +47 -2
  28. package/dist/adt/errors.js.map +1 -1
  29. package/dist/adt/http.d.ts +43 -0
  30. package/dist/adt/http.d.ts.map +1 -1
  31. package/dist/adt/http.js +93 -0
  32. package/dist/adt/http.js.map +1 -1
  33. package/dist/adt/transport.d.ts +22 -2
  34. package/dist/adt/transport.d.ts.map +1 -1
  35. package/dist/adt/transport.js +41 -13
  36. package/dist/adt/transport.js.map +1 -1
  37. package/dist/adt/xml-parser.d.ts +4 -0
  38. package/dist/adt/xml-parser.d.ts.map +1 -1
  39. package/dist/adt/xml-parser.js +6 -2
  40. package/dist/adt/xml-parser.js.map +1 -1
  41. package/dist/cli.js +13 -0
  42. package/dist/cli.js.map +1 -1
  43. package/dist/context/compressor.d.ts +1 -1
  44. package/dist/context/compressor.js +7 -11
  45. package/dist/context/compressor.js.map +1 -1
  46. package/dist/handlers/intent.d.ts +21 -0
  47. package/dist/handlers/intent.d.ts.map +1 -1
  48. package/dist/handlers/intent.js +378 -78
  49. package/dist/handlers/intent.js.map +1 -1
  50. package/dist/handlers/schemas.d.ts +5 -2
  51. package/dist/handlers/schemas.d.ts.map +1 -1
  52. package/dist/handlers/schemas.js +14 -4
  53. package/dist/handlers/schemas.js.map +1 -1
  54. package/dist/handlers/tools.d.ts.map +1 -1
  55. package/dist/handlers/tools.js +42 -10
  56. package/dist/handlers/tools.js.map +1 -1
  57. package/dist/probe/catalog.d.ts.map +1 -1
  58. package/dist/probe/catalog.js +19 -11
  59. package/dist/probe/catalog.js.map +1 -1
  60. package/dist/server/audit.d.ts +41 -1
  61. package/dist/server/audit.d.ts.map +1 -1
  62. package/dist/server/audit.js.map +1 -1
  63. package/dist/server/config.d.ts.map +1 -1
  64. package/dist/server/config.js +32 -0
  65. package/dist/server/config.js.map +1 -1
  66. package/dist/server/http.d.ts +25 -0
  67. package/dist/server/http.d.ts.map +1 -1
  68. package/dist/server/http.js +149 -7
  69. package/dist/server/http.js.map +1 -1
  70. package/dist/server/server.d.ts +1 -1
  71. package/dist/server/server.d.ts.map +1 -1
  72. package/dist/server/server.js +40 -3
  73. package/dist/server/server.js.map +1 -1
  74. package/dist/server/stateless-client-store.d.ts +97 -0
  75. package/dist/server/stateless-client-store.d.ts.map +1 -0
  76. package/dist/server/stateless-client-store.js +334 -0
  77. package/dist/server/stateless-client-store.js.map +1 -0
  78. package/dist/server/types.d.ts +12 -0
  79. package/dist/server/types.d.ts.map +1 -1
  80. package/dist/server/types.js +2 -0
  81. package/dist/server/types.js.map +1 -1
  82. package/dist/server/xsuaa.d.ts +11 -43
  83. package/dist/server/xsuaa.d.ts.map +1 -1
  84. package/dist/server/xsuaa.js +12 -177
  85. package/dist/server/xsuaa.js.map +1 -1
  86. package/package.json +10 -4
@@ -23,7 +23,7 @@ import { isActionDenied } from './deny-actions.js';
23
23
  import { initLogger, logger } from './logger.js';
24
24
  import { FileSink } from './sinks/file.js';
25
25
  /** ARC-1 version */
26
- export const VERSION = '0.7.2'; // x-release-please-version
26
+ export const VERSION = '0.9.0'; // x-release-please-version
27
27
  /**
28
28
  * Prune a tool's action OR type enum (or both) based on the user's scopes and
29
29
  * the server's denyActions list. Uses ACTION_POLICY as the single source of truth.
@@ -187,6 +187,8 @@ export function buildAdtConfig(config, btpProxy, bearerTokenProvider, opts) {
187
187
  if (cookies) {
188
188
  adtConfig.cookies = cookies;
189
189
  }
190
+ adtConfig.cookieFile = config.cookieFile;
191
+ adtConfig.cookieString = config.cookieString;
190
192
  }
191
193
  return adtConfig;
192
194
  }
@@ -320,8 +322,20 @@ export function runStartupProbe(config, btpProxy, bearerTokenProvider, btpConfig
320
322
  })();
321
323
  }
322
324
  const STARTUP_AUTH_ENDPOINT = '/sap/bc/adt/core/discovery';
323
- function buildStartupAuthFailureReason(statusCode) {
325
+ function buildStartupAuthFailureReason(statusCode, config) {
324
326
  if (statusCode === 401) {
327
+ // Only SAP_COOKIE_FILE supports hot-reload: the file is re-read on the next request.
328
+ // SAP_COOKIE_STRING is a static env var read once at process start — it cannot
329
+ // change in the running process, so we must not promise "no restart needed".
330
+ if (config.cookieFile) {
331
+ return ('Authentication failed (401) during startup auth preflight. ' +
332
+ 'Your SAP cookies have expired. Re-extract them with `arc1-cli extract-cookies` — no restart needed, the next SAP call will reload them automatically.');
333
+ }
334
+ if (config.cookieString) {
335
+ return ('Authentication failed (401) during startup auth preflight. ' +
336
+ 'SAP_COOKIE_STRING is a static value and cannot be hot-reloaded. ' +
337
+ 'Restart ARC-1 with a refreshed SAP_COOKIE_STRING, or switch to SAP_COOKIE_FILE for automatic reload on the next request.');
338
+ }
325
339
  return ('Authentication failed (401) during startup auth preflight. ' +
326
340
  'Check SAP_USER/SAP_PASSWORD/SAP_CLIENT (or destination/service-key credentials), then restart ARC-1.');
327
341
  }
@@ -366,7 +380,15 @@ export async function runStartupAuthPreflight(config, btpProxy, bearerTokenProvi
366
380
  }
367
381
  catch (err) {
368
382
  if (err instanceof AdtApiError && (err.statusCode === 401 || err.statusCode === 403)) {
369
- const reason = buildStartupAuthFailureReason(err.statusCode);
383
+ const reason = buildStartupAuthFailureReason(err.statusCode, config);
384
+ // Non-blocking downgrade only applies to cookieFile mode — that's the path
385
+ // the runtime client can actually recover from via the lazy reload. cookieString
386
+ // is static; downgrading there would just defer the same failure to the first
387
+ // tool call without giving the operator a way to fix it without restart.
388
+ if (config.cookieFile && err.statusCode === 401) {
389
+ logger.warn(`${reason} (non-blocking: runtime cookie reload will retry)`, { endpoint, statusCode: 401 });
390
+ return { status: 'inconclusive', blocking: false, endpoint, checkedAt, statusCode: 401, reason };
391
+ }
370
392
  logger.warn(reason, { endpoint, statusCode: err.statusCode });
371
393
  return {
372
394
  status: 'failed',
@@ -406,6 +428,14 @@ export function createServer(config, btpProxy, btpConfig, bearerTokenProvider, c
406
428
  const server = new Server({ name: 'arc-1', version: VERSION }, { capabilities: { tools: {} } });
407
429
  // Create default ADT client (shared, uses startup-time credentials or OAuth bearer)
408
430
  const defaultClient = new AdtClient(buildAdtConfig(config, btpProxy, bearerTokenProvider));
431
+ // Cookie-auth preflight propagation: when startup preflight returned a non-blocking
432
+ // 401 in SAP_COOKIE_FILE mode, the throwaway preflight client marked itself stale —
433
+ // but the long-lived defaultClient was constructed independently with cookies read at
434
+ // startup and is unaware. Without explicit propagation, the first real tool call would
435
+ // re-emit the same stale cookies and hit 401 again before the lazy reload triggers,
436
+ // wasting one round-trip per startup-stale-cookie cycle. We propagate the stale state
437
+ // once on first tool call — idempotent flag keeps later calls O(1).
438
+ let preflightStalePropagated = false;
409
439
  // Register tool listing — filtered by user's scopes when auth is active
410
440
  server.setRequestHandler(ListToolsRequestSchema, async (_request, extra) => {
411
441
  // Wait for the startup probe (if provided), but with a timeout so a slow/unreachable
@@ -439,6 +469,13 @@ export function createServer(config, btpProxy, btpConfig, bearerTokenProvider, c
439
469
  isError: true,
440
470
  };
441
471
  }
472
+ // Non-blocking 401 from cookie-auth preflight → mark the runtime client's cookies
473
+ // stale so its first call goes straight to the lazy reload path instead of repeating
474
+ // the failure. Fires once per process; subsequent calls early-return.
475
+ if (!preflightStalePropagated && startupAuth.status === 'inconclusive' && startupAuth.statusCode === 401) {
476
+ defaultClient.http.markCookiesStale();
477
+ preflightStalePropagated = true;
478
+ }
442
479
  }
443
480
  // Principal propagation: create per-user ADT client if enabled and user JWT available.
444
481
  // Only attempt PP when the token is a JWT (3 dot-separated parts), not a plain API key.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAuB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,oBAAoB;AACpB,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,2BAA2B;AAE3D;;;;;;;;;GASG;AACH,SAAS,iBAAiB,CAAC,IAAoB,EAAE,MAAgB,EAAE,WAAqB;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAsC,CAAC;IAC3D,MAAM,UAAU,GAAI,MAAM,CAAC,UAAkD,IAAI,EAAE,CAAC;IAEpF,iFAAiF;IACjF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAI,UAAU,CAAC,SAAS,CAAyC,IAAI,EAAE,CAAC;IACrF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;IAElD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,CAAC,2DAA2D;QACrF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1D,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE;YACX,GAAG,MAAM;YACT,UAAU,EAAE;gBACV,GAAG,UAAU;gBACb,CAAC,SAAS,CAAC,EAAE;oBACX,GAAG,OAAO;oBACV,IAAI,EAAE,QAAQ;iBACf;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAoB;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAsC,CAAC;IAC3D,MAAM,UAAU,GAAI,MAAM,CAAC,UAAkD,IAAI,EAAE,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAI,UAAU,CAAC,SAAS,CAAyC,IAAI,EAAE,CAAC;IACrF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAuB,EACvB,MAAgB,EAChB,cAAwB,EAAE;IAE1B,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,0EAA0E;QAC1E,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,iGAAiG;QACjG,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,UAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,+FAA+F;YAC/F,4FAA4F;YAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,WAAsC,CAAC;YAC3D,MAAM,UAAU,GAAI,MAAM,CAAC,UAAkD,IAAI,EAAE,CAAC;YACpF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC9D,MAAM,OAAO,GAAI,UAAU,CAAC,SAAS,CAAyC,IAAI,EAAE,CAAC;YACrF,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;SAC3D,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY;QAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACzD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,SAAS,GAAG,MAAM,CAAC;IACvB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,cAAc;YAAE,SAAS,GAAG,gBAAgB,CAAC;aAC5C,IAAI,SAAS;YAAE,SAAS,GAAG,WAAW,CAAC;;YACvC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,SAAS,GAAG,QAAQ,CAAC;IACvB,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,SAAS,GAAG,aAAa,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,SAAS,GAAG,cAAc,CAAC;IAC7B,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,SAAS,GAAG,QAAQ,CAAC;IACvB,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,KAAK,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,+DAA+D;AAC/D,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,QAAyB,EACzB,mBAA2C,EAC3C,IAA4B;IAE5B,MAAM,SAAS,GAA6B;QAC1C,OAAO,EAAE,MAAM,CAAC,GAAG;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,QAAQ;QACR,mBAAmB;QACnB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE;YACN,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;KACF,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACvE,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,CAAC;QACD,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACzC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC/C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAoB,EACpB,SAAoB,EACpB,QAAoC,EACpC,OAAe;IAEf,MAAM,EAAE,8BAA8B,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACzE,iFAAiF;IACjF,4CAA4C;IAC5C,oFAAoF;IACpF,kFAAkF;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,8BAA8B,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEvG,+EAA+E;IAC/E,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,cAAc,GAClB,QAAQ,IAAI,WAAW,CAAC,wBAAwB,KAAK,SAAS;QAC5D,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,wBAAwB,EAAE;QACnE,CAAC,CAAC,QAAQ,CAAC;IAEf,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvF,+EAA+E;IAC/E,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;IACpC,+CAA+C;IAC/C,2EAA2E;IAC3E,+EAA+E;IAC/E,8FAA8F;IAC9F,qFAAqF;IACrF,qFAAqF;IACrF,qFAAqF;IACrF,IAAI,eAAmC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvF,eAAe,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,yDAAyD;QACzD,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC/C,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QACrC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;IACjC,CAAC;SAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAC1C,oDAAoD;QACpD,SAAS,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;QAC/D,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;QACrC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC;IACjC,CAAC;SAAM,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAClC,qEAAqE;QACrE,kDAAkD;QAClD,MAAM,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IACrG,CAAC;SAAM,CAAC;QACN,mCAAmC;QACnC,MAAM,IAAI,KAAK,CACb,iDAAiD,QAAQ,KAAK;YAC5D,kGAAkG;YAClG,iFAAiF,CACpF,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAoB,EACpB,QAAyB,EACzB,mBAA2C,EAC3C,SAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAClE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7D,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;YAClC,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,WAAoC,CAAC;YACtD,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,cAAuC,CAAC;YAC5D,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,WAAoC,CAAC;YACtD,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAmC,CAAC;YACpD,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,WAAoC,CAAC;YACtD,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAmC,CAAC;YACpD,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAyC,CAAC;YAChE,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,cAAuC,CAAC;YAC5D,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAmC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC3F,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;gBAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzF,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,kCAAkC;YAClC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,CAAC,YAAY,IAAI,gBAAgB,EAAE,CAAC,CAAC;gBAC3G,CAAC;gBACD,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC;oBACvB,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CACT,4DAA4D,EAAE,CAAC,eAAe,IAAI,gBAAgB,EAAE,CACrG,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,kBAAkB,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC9B,+EAA+E;QACjF,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAYD,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAE3D,SAAS,6BAA6B,CAAC,UAAkB,EAAE,MAAoB;IAC7E,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,qFAAqF;QACrF,+EAA+E;QAC/E,6EAA6E;QAC7E,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CACL,6DAA6D;gBAC7D,uJAAuJ,CACxJ,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,CACL,6DAA6D;gBAC7D,kEAAkE;gBAClE,0HAA0H,CAC3H,CAAC;QACJ,CAAC;QACD,OAAO,CACL,6DAA6D;YAC7D,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CACL,wDAAwD;YACxD,2EAA2E;YAC3E,yCAAyC,CAC1C,CAAC;IACJ,CAAC;IACD,OAAO,2CAA2C,UAAU,GAAG,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAoB,EACpB,QAAyB,EACzB,mBAA2C;IAE3C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,qBAAqB,CAAC;IAEvC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,mGAAmG,CAAC;QACnH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,4DAA4D,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,8DAA8D,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACxE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,6BAA6B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACrE,2EAA2E;YAC3E,iFAAiF;YACjF,8EAA8E;YAC9E,yEAAyE;YACzE,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mDAAmD,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzG,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YACnG,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,IAAI;gBACd,QAAQ;gBACR,SAAS;gBACT,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,MAAM;aACP,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,MAAM,GACV,8DAA8D;YAC9D,0EAA0E,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAClF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,SAAqC;IACvF,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,CACL,0CAA0C,IAAI,IAAI;QAClD,wGAAwG;QACxG,GAAG,SAAS,CAAC,MAAM,IAAI;QACvB,uBAAuB,SAAS,CAAC,QAAQ,IAAI;QAC7C,eAAe,SAAS,CAAC,SAAS,EAAE,CACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,QAAyB,EACzB,SAAqB,EACrB,mBAA2C,EAC3C,YAA2B,EAC3B,mBAAmC,EACnC,2BAAiE;IAEjE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAEhG,oFAAoF;IACpF,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE3F,oFAAoF;IACpF,oFAAoF;IACpF,sFAAsF;IACtF,uFAAuF;IACvF,oFAAoF;IACpF,sFAAsF;IACtF,oEAAoE;IACpE,IAAI,wBAAwB,GAAG,KAAK,CAAC;IAErC,wEAAwE;IACxE,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACzE,qFAAqF;QACrF,oFAAoF;QACpF,mFAAmF;QACnF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAElF,8DAA8D;QAC9D,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,qFAAqF;IACrF,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QAEzE,IAAI,2BAA2B,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAAC;YACtD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mCAAmC,CAAC,WAAW,CAAC;yBACvD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACa,CAAC;YAC/B,CAAC;YACD,kFAAkF;YAClF,qFAAqF;YACrF,sEAAsE;YACtE,IAAI,CAAC,wBAAwB,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc,IAAI,WAAW,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACzG,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtC,wBAAwB,GAAG,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;QAED,uFAAuF;QACvF,wFAAwF;QACxF,IAAI,MAAM,GAAG,aAAa,CAAC;QAC3B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAuB,CAAC;YACnG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;YAC3F,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACvE,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM,CAAC,SAAS,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,CAAC,SAAS,CAAC;oBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,iBAAiB;oBACxB,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,MAAM;iBACrB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,8EAA8E;oBAC9E,0EAA0E;oBAC1E,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,sDAAsD,MAAM,EAAE;6BACrE;yBACF;wBACD,OAAO,EAAE,IAAI;qBACa,CAAC;gBAC/B,CAAC;gBACD,+CAA+C;YACjD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACzD,0DAA0D;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6HAA6H;qBACpI;iBACF;gBACD,OAAO,EAAE,IAAI;aACa,CAAC;QAC/B,CAAC;QAED,+EAA+E;QAC/E,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAElD,iEAAiE;QACjE,qHAAqH;QACrH,0FAA0F;QAC1F,wFAAwF;QACxF,wEAAwE;QACxE,IAAI,eAAe,GAAG,MAAM,CAAC;QAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,eAAe,GAAG,2BAA2B,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnF,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/E,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,eAAe,EACf,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,CAAC,QAAQ,EACd,MAAM,EACN,YAAY,EACZ,eAAe,CAChB,CAAC;QACF,OAAO,EAAE,GAAG,MAAM,EAA6B,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAAC,MAAoB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;IAE9B,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,KAAY,CAAC;IACjB,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,iBAAiB,CAAC,EAAE,CAAC;QACrF,mEAAmE;QACnE,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC3D,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,qFAAqF,EAAE;gBACjG,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mCAAmC;QACnC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoB,EACpB,OAA2D;IAE3D,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,wEAAwE;IACxE,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAClH,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACrD,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAExD,8BAA8B;IAC9B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,yFAAyF;IACzF,IAAI,CAAC;QACH,MAAM,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC5F,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAC;QAChD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE;YACjE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,MAAM,CAAC,SAAS,CAAC;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,kBAAkB;QACrC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;QAC5B,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,kBAAkB;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjH,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CACT,kEAAkE;YAChE,kIAAkI,CACrI,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,IAAI,mBAAwD,CAAC;IAC7D,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEzF,8DAA8D;QAC9D,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC;QACjF,IAAI,MAAM,CAAC,iBAAiB;YAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAE9F,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,8GAA8G,CAC/G,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;QACpD,gDAAgD;QAChD,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;QAED,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAEzF,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE;YAC3D,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG;YAC1B,YAAY,EAAE,MAAM,CAAC,oBAAoB,IAAI,MAAM;SACpD,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,IAAI,QAAoC,CAAC;IACzC,IAAI,SAAgC,CAAC;IACrC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACvD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,QAAQ,GAAG,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;QAEvC,yEAAyE;QACzE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,SAAS,GAAG,iBAAiB,EAAE,IAAI,SAAS,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,WAAW,EAAE,cAAc;gBAC3B,YAAY,EAAE,CAAC,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACtC,WAAW,EAAE,cAAc;YAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,OAAO,EAAE,KAAK,CAAC,WAAW;YAC1B,SAAS,EAAE,KAAK,CAAC,aAAa;YAC9B,KAAK,EAAE,KAAK,CAAC,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IACtF,IAAI,MAAM,CAAC,WAAW,IAAI,YAAY,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,YAAY,EACZ,YAAY,EACZ,MAAM,CAAC,mBAAmB,IAAI,SAAS,EACvC,MAAM,CAAC,UAAU,CAClB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACpC,OAAO,EAAE,MAAM,CAAC,YAAY;gBAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE;gBACjE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,8FAA8F;IAC9F,4EAA4E;IAC5E,MAAM,2BAA2B,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACnG,MAAM,mBAAmB,GAAG,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC;QACxD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC3B,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,kBAAkB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,MAAM,GAAG,YAAY,CACzB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,CAC5B,CAAC;IAEF,6FAA6F;IAC7F,4FAA4F;IAC5F,gGAAgG;IAChG,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,WAAW;gBAAE,OAAO;YACxB,WAAW,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC;gBACH,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,uFAAuF;QACvF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,gEAAgE;QAChE,6EAA6E;QAC7E,0EAA0E;QAC1E,mEAAmE;QACnE,uBAAuB;QACvB,kDAAkD;QAClD,IAAI,gBAAmE,CAAC;QACxE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAA6B,CAAC;gBACnD,gBAAgB,GAAG;oBACjB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;oBACtC,SAAS,EAAE,gBAAgB,CAAC,SAAS;oBACrC,GAAG,EAAE,gBAAgB,CAAC,GAAG;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,6DAA6D,EAAE;oBAC1E,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,eAAe,CACnB,GAAG,EAAE,CACH,YAAY,CACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,CAC5B,EACH,MAAM,EACN,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Stateless OAuth Dynamic Client Registration store.
3
+ *
4
+ * MCP clients (Claude Desktop, Cursor, Copilot CLI…) register dynamically
5
+ * via RFC 7591 and cache the returned `client_id` locally. With an
6
+ * in-memory or local-disk store, every CF push / restart wipes the
7
+ * server-side registry — the cached `client_id` then fails with
8
+ * `invalid_client` and the user has to clear their MCP client's OAuth
9
+ * cache to recover.
10
+ *
11
+ * This store eliminates the storage problem entirely. Each `client_id`
12
+ * is a self-validating token: it carries the registration payload
13
+ * (redirect_uris, grant_types, …) plus an HMAC-SHA256 signature derived
14
+ * from a server-held key. `getClient` re-derives the payload by
15
+ * verifying the signature; no persistence is needed. Any process with
16
+ * the same signing key can validate any client_id ever issued.
17
+ *
18
+ * Tradeoffs vs the persisted in-memory store:
19
+ * + Survives `cf push`, `cf restart`, cell moves, multi-instance scale-out
20
+ * + No external dependency, no service binding, no native module
21
+ * - Per-client revocation is impossible (only TTL or full key rotation)
22
+ * - Rotating the signing key invalidates every outstanding registration
23
+ *
24
+ * The signing key is derived (via HKDF-style HMAC) from the XSUAA
25
+ * `clientsecret`, so it's already as stable as the service binding —
26
+ * service rebinding rotates both at once, which is the right boundary.
27
+ */
28
+ import type { OAuthRegisteredClientsStore } from '@modelcontextprotocol/sdk/server/auth/clients.js';
29
+ import type { OAuthClientInformationFull } from '@modelcontextprotocol/sdk/shared/auth.js';
30
+ export interface StatelessDcrClientStoreOptions {
31
+ /**
32
+ * How long an issued client_id remains valid, in seconds. After this
33
+ * window `getClient()` returns undefined and clients re-register via
34
+ * `/register`. Default: 30 days. Lower values bound the blast radius if
35
+ * the signing key leaks; higher values reduce re-auth churn.
36
+ */
37
+ ttlSeconds?: number;
38
+ /** Clock injection point for tests. Default: `Date.now`. */
39
+ now?: () => number;
40
+ }
41
+ export declare class StatelessDcrClientStore implements OAuthRegisteredClientsStore {
42
+ private readonly xsuaaClient;
43
+ private readonly hmacKey;
44
+ private readonly ttlSeconds;
45
+ private readonly now;
46
+ constructor(xsuaaClientId: string, xsuaaClientSecret: string, signingSecret: string, options?: StatelessDcrClientStoreOptions);
47
+ getClient(clientId: string): Promise<OAuthClientInformationFull | undefined>;
48
+ registerClient(client: Omit<OAuthClientInformationFull, 'client_id' | 'client_id_issued_at'>): Promise<OAuthClientInformationFull>;
49
+ /**
50
+ * Called by the MCP SDK before redirect_uri validation on `/authorize`.
51
+ *
52
+ * For the pre-registered XSUAA client we mutate the in-memory list (XSUAA
53
+ * itself is the authoritative validator via `xs-security.json` wildcards,
54
+ * so the SDK's local list is decorative). The mutation is replayed on
55
+ * every `/authorize`, so it doesn't need to persist.
56
+ *
57
+ * For DCR (`arc1-…`) clients we are stateless by design: there's nothing
58
+ * to mutate. The previous in-memory store implemented a percent-encoding
59
+ * loose-match (BAS/Theia registers `?x=1` then authorizes with `%3Fx=1`).
60
+ * Reproducing that statelessly would require either bundling every
61
+ * encoding variant in the signed payload or keeping a per-process scratch
62
+ * map, both of which undermine the "no state" goal. We accept the
63
+ * regression: affected clients re-register on encoding-variant mismatch,
64
+ * which is exactly what they did under the old store after every restart.
65
+ */
66
+ ensureRedirectUri(clientId: string, uri: string): void;
67
+ private payloadToClientInfo;
68
+ private encode;
69
+ /**
70
+ * Decode and verify a `client_id`. Returns either the parsed payload or a
71
+ * structured failure reason — the caller emits the failure as an audit
72
+ * event with the right reason code (so probing attempts are observable).
73
+ */
74
+ private decodeAndVerify;
75
+ private verifySignature;
76
+ private sign;
77
+ /**
78
+ * The client_secret is derived deterministically from the client_id, so
79
+ * any instance with the same signing key can validate it. This is the
80
+ * core reason DCR survives container restarts and scales out horizontally
81
+ * with no shared state.
82
+ */
83
+ private deriveSecret;
84
+ private emitLookupFailed;
85
+ }
86
+ /**
87
+ * Validate a redirect URI against the allowed scheme/host policy.
88
+ *
89
+ * Allowed: `https://*`, `http://` to localhost / 127.0.0.1 / [::1], and known
90
+ * MCP-client custom schemes (`claude:`, `cursor:`, `vscode:`,
91
+ * `vscode-insiders:`).
92
+ *
93
+ * Rejected: `javascript:`, `data:`, `file:`, `ftp:`, and any `http://` to
94
+ * non-loopback hosts.
95
+ */
96
+ export declare function validateRedirectUri(uri: string): void;
97
+ //# sourceMappingURL=stateless-client-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateless-client-store.d.ts","sourceRoot":"","sources":["../../src/server/stateless-client-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAyE3F,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAuBD,qBAAa,uBAAwB,YAAW,2BAA2B;IACzE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAGjC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,8BAAmC;IAgBxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IA0B5E,cAAc,CAClB,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,WAAW,GAAG,qBAAqB,CAAC,GAC5E,OAAO,CAAC,0BAA0B,CAAC;IA8CtC;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAiBtD,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,MAAM;IAMd;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,IAAI;IAMZ;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;CAczB;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BrD"}
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Stateless OAuth Dynamic Client Registration store.
3
+ *
4
+ * MCP clients (Claude Desktop, Cursor, Copilot CLI…) register dynamically
5
+ * via RFC 7591 and cache the returned `client_id` locally. With an
6
+ * in-memory or local-disk store, every CF push / restart wipes the
7
+ * server-side registry — the cached `client_id` then fails with
8
+ * `invalid_client` and the user has to clear their MCP client's OAuth
9
+ * cache to recover.
10
+ *
11
+ * This store eliminates the storage problem entirely. Each `client_id`
12
+ * is a self-validating token: it carries the registration payload
13
+ * (redirect_uris, grant_types, …) plus an HMAC-SHA256 signature derived
14
+ * from a server-held key. `getClient` re-derives the payload by
15
+ * verifying the signature; no persistence is needed. Any process with
16
+ * the same signing key can validate any client_id ever issued.
17
+ *
18
+ * Tradeoffs vs the persisted in-memory store:
19
+ * + Survives `cf push`, `cf restart`, cell moves, multi-instance scale-out
20
+ * + No external dependency, no service binding, no native module
21
+ * - Per-client revocation is impossible (only TTL or full key rotation)
22
+ * - Rotating the signing key invalidates every outstanding registration
23
+ *
24
+ * The signing key is derived (via HKDF-style HMAC) from the XSUAA
25
+ * `clientsecret`, so it's already as stable as the service binding —
26
+ * service rebinding rotates both at once, which is the right boundary.
27
+ */
28
+ import crypto from 'node:crypto';
29
+ import { logger } from './logger.js';
30
+ // ─── Constants ────────────────────────────────────────────────────────
31
+ /** All DCR-issued client_ids start with this prefix. */
32
+ const ID_PREFIX = 'arc1-';
33
+ /**
34
+ * Domain-separation label bound into the HMAC key derivation. Bumping the
35
+ * suffix ("v1" → "v2") invalidates every previously-issued client_id without
36
+ * requiring a service-binding rotation, which is a useful escape hatch.
37
+ */
38
+ const KDF_LABEL = 'arc1-dcr/v1';
39
+ /** Schema version of the JSON payload embedded in the signed client_id. */
40
+ const PAYLOAD_VERSION = 1;
41
+ /**
42
+ * Truncated HMAC-SHA256 length in bytes. 16 bytes = 128 bits, which is well
43
+ * above the practical forgery threshold for opaque IDs (NIST SP 800-107
44
+ * acceptable for non-replayable identifiers).
45
+ */
46
+ const SIG_BYTES = 16;
47
+ /**
48
+ * Default lifetime of a DCR registration. Tunable via `ttlSeconds` so deployments
49
+ * with stricter compromise-window requirements can shorten it. 30 days matches
50
+ * typical OAuth refresh-token lifetimes — long enough that users don't see
51
+ * spurious "re-authenticate" prompts during normal use.
52
+ */
53
+ const DEFAULT_TTL_SECONDS = 30 * 24 * 60 * 60;
54
+ // Defaults applied when a registration omits these fields.
55
+ const DEFAULT_GRANT_TYPES = ['authorization_code', 'refresh_token'];
56
+ const DEFAULT_RESPONSE_TYPES = ['code'];
57
+ const DEFAULT_TOKEN_AUTH_METHOD = 'client_secret_post';
58
+ /**
59
+ * Built-in redirect_uris for the pre-registered XSUAA client. These cover the
60
+ * common MCP clients out of the box; additional URIs can be added at
61
+ * `/authorize` time via `ensureRedirectUri()`. The list MUST also be registered
62
+ * in `xs-security.json` — XSUAA is the authoritative validator for this client.
63
+ */
64
+ const XSUAA_DEFAULT_REDIRECT_URIS = [
65
+ 'http://localhost:6274/oauth/callback', // MCP Inspector
66
+ 'http://localhost:3000/oauth/callback', // Local dev
67
+ 'https://claude.ai/api/mcp/auth_callback', // Claude Desktop
68
+ 'cursor://anysphere.cursor-retrieval/oauth/callback', // Cursor
69
+ 'vscode://vscode.microsoft-authentication/callback', // VS Code
70
+ ];
71
+ // ─── Default XSUAA client ─────────────────────────────────────────────
72
+ /**
73
+ * Pre-registered XSUAA client config. MCP clients that hit the XSUAA
74
+ * `clientid` directly (Manual mode in Copilot Studio, etc.) resolve through
75
+ * this entry instead of going through DCR.
76
+ */
77
+ function buildXsuaaDefaultClient(clientId, clientSecret) {
78
+ return {
79
+ client_id: clientId,
80
+ client_secret: clientSecret,
81
+ redirect_uris: [...XSUAA_DEFAULT_REDIRECT_URIS],
82
+ grant_types: [...DEFAULT_GRANT_TYPES],
83
+ response_types: [...DEFAULT_RESPONSE_TYPES],
84
+ token_endpoint_auth_method: DEFAULT_TOKEN_AUTH_METHOD,
85
+ client_name: 'ARC-1 XSUAA Default Client',
86
+ };
87
+ }
88
+ // ─── Store ────────────────────────────────────────────────────────────
89
+ export class StatelessDcrClientStore {
90
+ xsuaaClient;
91
+ hmacKey;
92
+ ttlSeconds;
93
+ now;
94
+ constructor(xsuaaClientId, xsuaaClientSecret, signingSecret, options = {}) {
95
+ if (!signingSecret) {
96
+ throw new Error('StatelessDcrClientStore requires a non-empty signingSecret');
97
+ }
98
+ // Derive a dedicated HMAC key so the raw service-binding secret is never
99
+ // used directly to sign client_ids. The KDF_LABEL doubles as a domain
100
+ // separator (see comment on the constant).
101
+ this.hmacKey = crypto.createHmac('sha256', signingSecret).update(KDF_LABEL).digest();
102
+ this.xsuaaClient = buildXsuaaDefaultClient(xsuaaClientId, xsuaaClientSecret);
103
+ this.ttlSeconds = options.ttlSeconds ?? DEFAULT_TTL_SECONDS;
104
+ this.now = options.now ?? (() => Date.now());
105
+ }
106
+ // ── OAuthRegisteredClientsStore implementation ──
107
+ async getClient(clientId) {
108
+ if (clientId === this.xsuaaClient.client_id) {
109
+ return this.xsuaaClient;
110
+ }
111
+ if (!clientId.startsWith(ID_PREFIX)) {
112
+ this.emitLookupFailed(clientId, 'unknown_prefix');
113
+ return undefined;
114
+ }
115
+ const decoded = this.decodeAndVerify(clientId);
116
+ if (decoded.kind === 'error') {
117
+ this.emitLookupFailed(clientId, decoded.reason);
118
+ return undefined;
119
+ }
120
+ const ageSec = Math.floor(this.now() / 1000) - decoded.payload.iat;
121
+ if (ageSec > this.ttlSeconds) {
122
+ this.emitLookupFailed(clientId, 'expired');
123
+ logger.debug('OAuth client expired (TTL)', { clientId, ageSec, ttlSeconds: this.ttlSeconds });
124
+ return undefined;
125
+ }
126
+ return this.payloadToClientInfo(clientId, decoded.payload);
127
+ }
128
+ async registerClient(client) {
129
+ if (client.redirect_uris) {
130
+ for (const uri of client.redirect_uris) {
131
+ validateRedirectUri(uri);
132
+ }
133
+ }
134
+ const issuedAt = Math.floor(this.now() / 1000);
135
+ const payload = {
136
+ v: PAYLOAD_VERSION,
137
+ iat: issuedAt,
138
+ ru: client.redirect_uris ?? [],
139
+ };
140
+ if (client.grant_types)
141
+ payload.gt = client.grant_types;
142
+ if (client.response_types)
143
+ payload.rt = client.response_types;
144
+ if (client.token_endpoint_auth_method)
145
+ payload.am = client.token_endpoint_auth_method;
146
+ if (client.client_name)
147
+ payload.cn = client.client_name;
148
+ const clientId = this.encode(payload);
149
+ const clientSecret = this.deriveSecret(clientId);
150
+ logger.debug('OAuth client registered (stateless)', {
151
+ clientId,
152
+ clientName: client.client_name,
153
+ idBytes: clientId.length,
154
+ });
155
+ logger.emitAudit({
156
+ timestamp: new Date().toISOString(),
157
+ level: 'info',
158
+ event: 'oauth_client_registered',
159
+ registeredClientId: clientId,
160
+ clientName: client.client_name,
161
+ redirectUriCount: payload.ru.length,
162
+ idBytes: clientId.length,
163
+ });
164
+ return {
165
+ ...client,
166
+ client_id: clientId,
167
+ client_secret: clientSecret,
168
+ client_id_issued_at: issuedAt,
169
+ };
170
+ }
171
+ // ── SDK redirect_uri hook ──
172
+ /**
173
+ * Called by the MCP SDK before redirect_uri validation on `/authorize`.
174
+ *
175
+ * For the pre-registered XSUAA client we mutate the in-memory list (XSUAA
176
+ * itself is the authoritative validator via `xs-security.json` wildcards,
177
+ * so the SDK's local list is decorative). The mutation is replayed on
178
+ * every `/authorize`, so it doesn't need to persist.
179
+ *
180
+ * For DCR (`arc1-…`) clients we are stateless by design: there's nothing
181
+ * to mutate. The previous in-memory store implemented a percent-encoding
182
+ * loose-match (BAS/Theia registers `?x=1` then authorizes with `%3Fx=1`).
183
+ * Reproducing that statelessly would require either bundling every
184
+ * encoding variant in the signed payload or keeping a per-process scratch
185
+ * map, both of which undermine the "no state" goal. We accept the
186
+ * regression: affected clients re-register on encoding-variant mismatch,
187
+ * which is exactly what they did under the old store after every restart.
188
+ */
189
+ ensureRedirectUri(clientId, uri) {
190
+ if (clientId !== this.xsuaaClient.client_id)
191
+ return;
192
+ if (this.xsuaaClient.redirect_uris.includes(uri))
193
+ return;
194
+ this.xsuaaClient.redirect_uris.push(uri);
195
+ logger.debug('Dynamic redirect_uri registered for XSUAA client', { clientId, uri });
196
+ logger.emitAudit({
197
+ timestamp: new Date().toISOString(),
198
+ level: 'info',
199
+ event: 'oauth_redirect_uri_registered',
200
+ registeredClientId: clientId,
201
+ redirectUri: uri,
202
+ });
203
+ }
204
+ // ── Internals: encode / decode / sign / verify ──
205
+ payloadToClientInfo(clientId, payload) {
206
+ return {
207
+ client_id: clientId,
208
+ client_secret: this.deriveSecret(clientId),
209
+ client_id_issued_at: payload.iat,
210
+ redirect_uris: payload.ru,
211
+ grant_types: payload.gt ?? [...DEFAULT_GRANT_TYPES],
212
+ response_types: payload.rt ?? [...DEFAULT_RESPONSE_TYPES],
213
+ token_endpoint_auth_method: payload.am ?? DEFAULT_TOKEN_AUTH_METHOD,
214
+ client_name: payload.cn,
215
+ };
216
+ }
217
+ encode(payload) {
218
+ const payloadB64 = Buffer.from(JSON.stringify(payload), 'utf8').toString('base64url');
219
+ const sig = this.sign(payloadB64);
220
+ return `${ID_PREFIX}${payloadB64}.${sig}`;
221
+ }
222
+ /**
223
+ * Decode and verify a `client_id`. Returns either the parsed payload or a
224
+ * structured failure reason — the caller emits the failure as an audit
225
+ * event with the right reason code (so probing attempts are observable).
226
+ */
227
+ decodeAndVerify(clientId) {
228
+ const stripped = clientId.slice(ID_PREFIX.length);
229
+ const dot = stripped.lastIndexOf('.');
230
+ if (dot < 0)
231
+ return { kind: 'error', reason: 'malformed' };
232
+ const payloadB64 = stripped.slice(0, dot);
233
+ const sigB64 = stripped.slice(dot + 1);
234
+ if (!this.verifySignature(payloadB64, sigB64)) {
235
+ return { kind: 'error', reason: 'bad_signature' };
236
+ }
237
+ const payload = parsePayload(payloadB64);
238
+ if (!payload)
239
+ return { kind: 'error', reason: 'invalid_payload' };
240
+ return { kind: 'ok', payload };
241
+ }
242
+ verifySignature(payloadB64, sigB64) {
243
+ const expected = Buffer.from(this.sign(payloadB64), 'base64url');
244
+ const actual = Buffer.from(sigB64, 'base64url');
245
+ if (actual.length !== expected.length || actual.length !== SIG_BYTES)
246
+ return false;
247
+ return crypto.timingSafeEqual(actual, expected);
248
+ }
249
+ sign(payloadB64) {
250
+ const fullDigest = crypto.createHmac('sha256', this.hmacKey).update(payloadB64).digest();
251
+ // Truncate to SIG_BYTES — see the comment on the constant for rationale.
252
+ return fullDigest.subarray(0, SIG_BYTES).toString('base64url');
253
+ }
254
+ /**
255
+ * The client_secret is derived deterministically from the client_id, so
256
+ * any instance with the same signing key can validate it. This is the
257
+ * core reason DCR survives container restarts and scales out horizontally
258
+ * with no shared state.
259
+ */
260
+ deriveSecret(clientId) {
261
+ return crypto.createHmac('sha256', this.hmacKey).update(`secret:${clientId}`).digest('base64url');
262
+ }
263
+ emitLookupFailed(clientId, reason) {
264
+ logger.debug('OAuth client lookup failed', { clientId, reason });
265
+ logger.emitAudit({
266
+ timestamp: new Date().toISOString(),
267
+ // 'expired' is normal-ish (TTL eviction); the rest are probing/forgery signals.
268
+ level: reason === 'expired' ? 'info' : 'warn',
269
+ event: 'oauth_client_lookup_failed',
270
+ registeredClientId: clientId,
271
+ reason,
272
+ });
273
+ }
274
+ }
275
+ // ─── Module-level helpers ─────────────────────────────────────────────
276
+ /**
277
+ * Parse a base64url-encoded payload back into a typed `SignedPayload`. Returns
278
+ * `undefined` on any failure (decode error, JSON parse error, schema mismatch).
279
+ */
280
+ function parsePayload(payloadB64) {
281
+ try {
282
+ const json = Buffer.from(payloadB64, 'base64url').toString('utf8');
283
+ const parsed = JSON.parse(json);
284
+ if (parsed.v !== PAYLOAD_VERSION)
285
+ return undefined;
286
+ if (typeof parsed.iat !== 'number' || !Array.isArray(parsed.ru))
287
+ return undefined;
288
+ return parsed;
289
+ }
290
+ catch {
291
+ return undefined;
292
+ }
293
+ }
294
+ /**
295
+ * Validate a redirect URI against the allowed scheme/host policy.
296
+ *
297
+ * Allowed: `https://*`, `http://` to localhost / 127.0.0.1 / [::1], and known
298
+ * MCP-client custom schemes (`claude:`, `cursor:`, `vscode:`,
299
+ * `vscode-insiders:`).
300
+ *
301
+ * Rejected: `javascript:`, `data:`, `file:`, `ftp:`, and any `http://` to
302
+ * non-loopback hosts.
303
+ */
304
+ export function validateRedirectUri(uri) {
305
+ const ALLOWED_CUSTOM_SCHEMES = ['claude:', 'cursor:', 'vscode:', 'vscode-insiders:'];
306
+ const BLOCKED_SCHEMES = ['javascript:', 'data:', 'file:', 'ftp:'];
307
+ for (const scheme of BLOCKED_SCHEMES) {
308
+ if (uri.toLowerCase().startsWith(scheme)) {
309
+ throw new Error(`Redirect URI rejected: '${scheme}' scheme is not allowed. Use https:// or a registered custom scheme.`);
310
+ }
311
+ }
312
+ for (const scheme of ALLOWED_CUSTOM_SCHEMES) {
313
+ if (uri.toLowerCase().startsWith(scheme))
314
+ return;
315
+ }
316
+ try {
317
+ const parsed = new URL(uri);
318
+ if (parsed.protocol === 'https:')
319
+ return;
320
+ if (parsed.protocol === 'http:') {
321
+ const host = parsed.hostname.toLowerCase();
322
+ if (host === 'localhost' || host === '127.0.0.1' || host === '[::1]' || host === '::1')
323
+ return;
324
+ throw new Error(`Redirect URI rejected: http:// is only allowed for localhost/127.0.0.1. Got: '${uri}'`);
325
+ }
326
+ return;
327
+ }
328
+ catch (err) {
329
+ if (err instanceof Error && err.message.startsWith('Redirect URI rejected'))
330
+ throw err;
331
+ // URL parsing failed for some other reason (unknown protocol etc.) — allow.
332
+ }
333
+ }
334
+ //# sourceMappingURL=stateless-client-store.js.map