arc-1 0.1.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 (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/bin/arc1.js +12 -0
  4. package/dist/adt/btp.d.ts +122 -0
  5. package/dist/adt/btp.d.ts.map +1 -0
  6. package/dist/adt/btp.js +392 -0
  7. package/dist/adt/btp.js.map +1 -0
  8. package/dist/adt/client.d.ts +89 -0
  9. package/dist/adt/client.d.ts.map +1 -0
  10. package/dist/adt/client.js +208 -0
  11. package/dist/adt/client.js.map +1 -0
  12. package/dist/adt/codeintel.d.ts +38 -0
  13. package/dist/adt/codeintel.d.ts.map +1 -0
  14. package/dist/adt/codeintel.js +61 -0
  15. package/dist/adt/codeintel.js.map +1 -0
  16. package/dist/adt/config.d.ts +65 -0
  17. package/dist/adt/config.d.ts.map +1 -0
  18. package/dist/adt/config.js +35 -0
  19. package/dist/adt/config.js.map +1 -0
  20. package/dist/adt/cookies.d.ts +27 -0
  21. package/dist/adt/cookies.d.ts.map +1 -0
  22. package/dist/adt/cookies.js +67 -0
  23. package/dist/adt/cookies.js.map +1 -0
  24. package/dist/adt/crud.d.ts +35 -0
  25. package/dist/adt/crud.d.ts.map +1 -0
  26. package/dist/adt/crud.js +87 -0
  27. package/dist/adt/crud.js.map +1 -0
  28. package/dist/adt/devtools.d.ts +32 -0
  29. package/dist/adt/devtools.d.ts.map +1 -0
  30. package/dist/adt/devtools.js +154 -0
  31. package/dist/adt/devtools.js.map +1 -0
  32. package/dist/adt/errors.d.ts +49 -0
  33. package/dist/adt/errors.d.ts.map +1 -0
  34. package/dist/adt/errors.js +80 -0
  35. package/dist/adt/errors.js.map +1 -0
  36. package/dist/adt/features.d.ts +44 -0
  37. package/dist/adt/features.d.ts.map +1 -0
  38. package/dist/adt/features.js +173 -0
  39. package/dist/adt/features.js.map +1 -0
  40. package/dist/adt/http.d.ts +116 -0
  41. package/dist/adt/http.d.ts.map +1 -0
  42. package/dist/adt/http.js +374 -0
  43. package/dist/adt/http.js.map +1 -0
  44. package/dist/adt/safety.d.ts +70 -0
  45. package/dist/adt/safety.d.ts.map +1 -0
  46. package/dist/adt/safety.js +222 -0
  47. package/dist/adt/safety.js.map +1 -0
  48. package/dist/adt/transport.d.ts +18 -0
  49. package/dist/adt/transport.d.ts.map +1 -0
  50. package/dist/adt/transport.js +66 -0
  51. package/dist/adt/transport.js.map +1 -0
  52. package/dist/adt/types.d.ts +91 -0
  53. package/dist/adt/types.d.ts.map +1 -0
  54. package/dist/adt/types.js +9 -0
  55. package/dist/adt/types.js.map +1 -0
  56. package/dist/adt/xml-parser.d.ts +109 -0
  57. package/dist/adt/xml-parser.d.ts.map +1 -0
  58. package/dist/adt/xml-parser.js +283 -0
  59. package/dist/adt/xml-parser.js.map +1 -0
  60. package/dist/cache/cache.d.ts +61 -0
  61. package/dist/cache/cache.d.ts.map +1 -0
  62. package/dist/cache/cache.js +14 -0
  63. package/dist/cache/cache.js.map +1 -0
  64. package/dist/cache/memory.d.ts +25 -0
  65. package/dist/cache/memory.d.ts.map +1 -0
  66. package/dist/cache/memory.js +69 -0
  67. package/dist/cache/memory.js.map +1 -0
  68. package/dist/cache/sqlite.d.ts +26 -0
  69. package/dist/cache/sqlite.d.ts.map +1 -0
  70. package/dist/cache/sqlite.js +130 -0
  71. package/dist/cache/sqlite.js.map +1 -0
  72. package/dist/cli.d.ts +14 -0
  73. package/dist/cli.d.ts.map +1 -0
  74. package/dist/cli.js +101 -0
  75. package/dist/cli.js.map +1 -0
  76. package/dist/context/compressor.d.ts +33 -0
  77. package/dist/context/compressor.d.ts.map +1 -0
  78. package/dist/context/compressor.js +208 -0
  79. package/dist/context/compressor.js.map +1 -0
  80. package/dist/context/contract.d.ts +14 -0
  81. package/dist/context/contract.d.ts.map +1 -0
  82. package/dist/context/contract.js +202 -0
  83. package/dist/context/contract.js.map +1 -0
  84. package/dist/context/deps.d.ts +32 -0
  85. package/dist/context/deps.d.ts.map +1 -0
  86. package/dist/context/deps.js +240 -0
  87. package/dist/context/deps.js.map +1 -0
  88. package/dist/context/types.d.ts +56 -0
  89. package/dist/context/types.d.ts.map +1 -0
  90. package/dist/context/types.js +10 -0
  91. package/dist/context/types.js.map +1 -0
  92. package/dist/handlers/intent.d.ts +46 -0
  93. package/dist/handlers/intent.d.ts.map +1 -0
  94. package/dist/handlers/intent.js +539 -0
  95. package/dist/handlers/intent.js.map +1 -0
  96. package/dist/handlers/tools.d.ts +21 -0
  97. package/dist/handlers/tools.d.ts.map +1 -0
  98. package/dist/handlers/tools.js +260 -0
  99. package/dist/handlers/tools.js.map +1 -0
  100. package/dist/index.d.ts +10 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +16 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/lint/lint.d.ts +35 -0
  105. package/dist/lint/lint.d.ts.map +1 -0
  106. package/dist/lint/lint.js +67 -0
  107. package/dist/lint/lint.js.map +1 -0
  108. package/dist/server/audit.d.ts +96 -0
  109. package/dist/server/audit.d.ts.map +1 -0
  110. package/dist/server/audit.js +27 -0
  111. package/dist/server/audit.js.map +1 -0
  112. package/dist/server/config.d.ts +19 -0
  113. package/dist/server/config.d.ts.map +1 -0
  114. package/dist/server/config.js +101 -0
  115. package/dist/server/config.js.map +1 -0
  116. package/dist/server/context.d.ts +20 -0
  117. package/dist/server/context.d.ts.map +1 -0
  118. package/dist/server/context.js +20 -0
  119. package/dist/server/context.js.map +1 -0
  120. package/dist/server/elicit.d.ts +43 -0
  121. package/dist/server/elicit.d.ts.map +1 -0
  122. package/dist/server/elicit.js +183 -0
  123. package/dist/server/elicit.js.map +1 -0
  124. package/dist/server/http.d.ts +34 -0
  125. package/dist/server/http.d.ts.map +1 -0
  126. package/dist/server/http.js +328 -0
  127. package/dist/server/http.js.map +1 -0
  128. package/dist/server/logger.d.ts +57 -0
  129. package/dist/server/logger.d.ts.map +1 -0
  130. package/dist/server/logger.js +129 -0
  131. package/dist/server/logger.js.map +1 -0
  132. package/dist/server/server.d.ts +25 -0
  133. package/dist/server/server.d.ts.map +1 -0
  134. package/dist/server/server.js +307 -0
  135. package/dist/server/server.js.map +1 -0
  136. package/dist/server/sinks/btp-auditlog.d.ts +48 -0
  137. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -0
  138. package/dist/server/sinks/btp-auditlog.js +232 -0
  139. package/dist/server/sinks/btp-auditlog.js.map +1 -0
  140. package/dist/server/sinks/file.d.ts +22 -0
  141. package/dist/server/sinks/file.d.ts.map +1 -0
  142. package/dist/server/sinks/file.js +59 -0
  143. package/dist/server/sinks/file.js.map +1 -0
  144. package/dist/server/sinks/stderr.d.ts +19 -0
  145. package/dist/server/sinks/stderr.d.ts.map +1 -0
  146. package/dist/server/sinks/stderr.js +63 -0
  147. package/dist/server/sinks/stderr.js.map +1 -0
  148. package/dist/server/sinks/types.d.ts +14 -0
  149. package/dist/server/sinks/types.d.ts.map +1 -0
  150. package/dist/server/sinks/types.js +8 -0
  151. package/dist/server/sinks/types.js.map +1 -0
  152. package/dist/server/types.d.ts +54 -0
  153. package/dist/server/types.d.ts.map +1 -0
  154. package/dist/server/types.js +42 -0
  155. package/dist/server/types.js.map +1 -0
  156. package/dist/server/xsuaa.d.ts +77 -0
  157. package/dist/server/xsuaa.d.ts.map +1 -0
  158. package/dist/server/xsuaa.js +364 -0
  159. package/dist/server/xsuaa.js.map +1 -0
  160. package/package.json +66 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Configuration parser for ARC-1.
3
+ *
4
+ * Resolves configuration from CLI flags, environment variables, and defaults.
5
+ * Priority: CLI > env > .env > defaults
6
+ *
7
+ * Environment variable names match the Go version exactly (SAP_URL, SAP_USER, etc.)
8
+ * for drop-in compatibility with existing deployments and documentation.
9
+ */
10
+ import { DEFAULT_CONFIG } from './types.js';
11
+ /**
12
+ * Parse CLI arguments and environment variables into a ServerConfig.
13
+ *
14
+ * We use a simple hand-rolled parser here (not commander) because
15
+ * the MCP server entry point needs to be fast and lightweight.
16
+ * Commander is used for the full CLI (cli.ts), not the server startup.
17
+ */
18
+ export function parseArgs(args) {
19
+ const config = { ...DEFAULT_CONFIG };
20
+ // Helper: get a CLI flag value (--flag value or --flag=value)
21
+ const getFlag = (name) => {
22
+ const prefix = `--${name}=`;
23
+ for (let i = 0; i < args.length; i++) {
24
+ if (args[i] === `--${name}` && i + 1 < args.length) {
25
+ return args[i + 1];
26
+ }
27
+ if (args[i]?.startsWith(prefix)) {
28
+ return args[i].slice(prefix.length);
29
+ }
30
+ }
31
+ return undefined;
32
+ };
33
+ // Helper: resolve value from CLI > env > default
34
+ const resolve = (flag, envVar, defaultVal) => {
35
+ return getFlag(flag) ?? process.env[envVar] ?? defaultVal;
36
+ };
37
+ const resolveBool = (flag, envVar, defaultVal) => {
38
+ const val = getFlag(flag) ?? process.env[envVar];
39
+ if (val === undefined)
40
+ return defaultVal;
41
+ return val === 'true' || val === '1';
42
+ };
43
+ const resolveFeature = (flag, envVar) => {
44
+ const val = getFlag(flag) ?? process.env[envVar] ?? 'auto';
45
+ if (val === 'on' || val === 'off')
46
+ return val;
47
+ return 'auto';
48
+ };
49
+ // --- SAP Connection ---
50
+ config.url = resolve('url', 'SAP_URL', '');
51
+ config.username = resolve('user', 'SAP_USER', '');
52
+ config.password = resolve('password', 'SAP_PASSWORD', '');
53
+ config.client = resolve('client', 'SAP_CLIENT', '001');
54
+ config.language = resolve('language', 'SAP_LANGUAGE', 'EN');
55
+ config.insecure = resolveBool('insecure', 'SAP_INSECURE', false);
56
+ // --- Cookie Auth ---
57
+ config.cookieFile = getFlag('cookie-file') ?? process.env.SAP_COOKIE_FILE;
58
+ config.cookieString = getFlag('cookie-string') ?? process.env.SAP_COOKIE_STRING;
59
+ // --- Transport ---
60
+ const transport = resolve('transport', 'SAP_TRANSPORT', 'stdio');
61
+ config.transport = (transport === 'http-streamable' ? 'http-streamable' : 'stdio');
62
+ config.httpAddr = resolve('http-addr', 'SAP_HTTP_ADDR', '0.0.0.0:8080');
63
+ // --- Safety ---
64
+ config.readOnly = resolveBool('read-only', 'SAP_READ_ONLY', false);
65
+ config.blockFreeSQL = resolveBool('block-free-sql', 'SAP_BLOCK_FREE_SQL', false);
66
+ config.allowedOps = resolve('allowed-ops', 'SAP_ALLOWED_OPS', '');
67
+ config.disallowedOps = resolve('disallowed-ops', 'SAP_DISALLOWED_OPS', '');
68
+ const pkgs = resolve('allowed-packages', 'SAP_ALLOWED_PACKAGES', '');
69
+ config.allowedPackages = pkgs ? pkgs.split(',').map((p) => p.trim()) : [];
70
+ config.allowTransportableEdits = resolveBool('allow-transportable-edits', 'SAP_ALLOW_TRANSPORTABLE_EDITS', false);
71
+ config.enableTransports = resolveBool('enable-transports', 'SAP_ENABLE_TRANSPORTS', false);
72
+ // --- Features ---
73
+ config.featureAbapGit = resolveFeature('feature-abapgit', 'SAP_FEATURE_ABAPGIT');
74
+ config.featureRap = resolveFeature('feature-rap', 'SAP_FEATURE_RAP');
75
+ config.featureAmdp = resolveFeature('feature-amdp', 'SAP_FEATURE_AMDP');
76
+ config.featureUi5 = resolveFeature('feature-ui5', 'SAP_FEATURE_UI5');
77
+ config.featureTransport = resolveFeature('feature-transport', 'SAP_FEATURE_TRANSPORT');
78
+ config.featureHana = resolveFeature('feature-hana', 'SAP_FEATURE_HANA');
79
+ // --- Authentication (MCP client → ARC-1) ---
80
+ config.apiKey = getFlag('api-key') ?? process.env.ARC1_API_KEY;
81
+ config.oidcIssuer = getFlag('oidc-issuer') ?? process.env.SAP_OIDC_ISSUER;
82
+ config.oidcAudience = getFlag('oidc-audience') ?? process.env.SAP_OIDC_AUDIENCE;
83
+ config.xsuaaAuth = resolveBool('xsuaa-auth', 'SAP_XSUAA_AUTH', false);
84
+ // --- Principal Propagation ---
85
+ config.ppEnabled = resolveBool('pp-enabled', 'SAP_PP_ENABLED', false);
86
+ config.ppStrict = resolveBool('pp-strict', 'SAP_PP_STRICT', false);
87
+ // --- Logging ---
88
+ config.logFile = getFlag('log-file') ?? process.env.ARC1_LOG_FILE;
89
+ const logLevel = resolve('log-level', 'ARC1_LOG_LEVEL', 'info');
90
+ config.logLevel = (['debug', 'info', 'warn', 'error'].includes(logLevel) ? logLevel : 'info');
91
+ const logFormat = resolve('log-format', 'ARC1_LOG_FORMAT', 'text');
92
+ config.logFormat = (logFormat === 'json' ? 'json' : 'text');
93
+ // --- Misc ---
94
+ config.verbose = resolveBool('verbose', 'SAP_VERBOSE', false);
95
+ // --verbose is sugar for --log-level debug
96
+ if (config.verbose) {
97
+ config.logLevel = 'debug';
98
+ }
99
+ return config;
100
+ }
101
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../ts-src/server/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Request context for ARC-1.
3
+ *
4
+ * Uses AsyncLocalStorage to thread a requestId through the entire
5
+ * call stack (intent handler → ADT client → HTTP client) without
6
+ * changing function signatures. The logger reads from the store
7
+ * automatically to attach requestId to every log entry.
8
+ */
9
+ import { AsyncLocalStorage } from 'node:async_hooks';
10
+ export interface RequestContext {
11
+ requestId: string;
12
+ user?: string;
13
+ tool?: string;
14
+ }
15
+ export declare const requestContext: AsyncLocalStorage<RequestContext>;
16
+ /** Generate a monotonically increasing request ID */
17
+ export declare function generateRequestId(): string;
18
+ /** Get the current request context (if any) */
19
+ export declare function getCurrentContext(): RequestContext | undefined;
20
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../ts-src/server/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,mCAA0C,CAAC;AAItE,qDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,+CAA+C;AAC/C,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Request context for ARC-1.
3
+ *
4
+ * Uses AsyncLocalStorage to thread a requestId through the entire
5
+ * call stack (intent handler → ADT client → HTTP client) without
6
+ * changing function signatures. The logger reads from the store
7
+ * automatically to attach requestId to every log entry.
8
+ */
9
+ import { AsyncLocalStorage } from 'node:async_hooks';
10
+ export const requestContext = new AsyncLocalStorage();
11
+ let requestCounter = 0;
12
+ /** Generate a monotonically increasing request ID */
13
+ export function generateRequestId() {
14
+ return `REQ-${++requestCounter}`;
15
+ }
16
+ /** Get the current request context (if any) */
17
+ export function getCurrentContext() {
18
+ return requestContext.getStore();
19
+ }
20
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../ts-src/server/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAEtE,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,qDAAqD;AACrD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,EAAE,cAAc,EAAE,CAAC;AACnC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * MCP Elicitation helpers for ARC-1.
3
+ *
4
+ * Wraps the MCP SDK's server.elicitInput() with:
5
+ * - Client capability detection (graceful fallback when unsupported)
6
+ * - Typed convenience methods for common patterns
7
+ * - Audit logging of all elicitation events
8
+ *
9
+ * Based on MCP spec 2025-06-18 / 2025-11-25 elicitation protocol.
10
+ * Dassian ADT uses similar patterns for confirmations and parameter prompts.
11
+ */
12
+ import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
13
+ /**
14
+ * Confirm a destructive or irreversible operation with the user.
15
+ *
16
+ * Returns true if:
17
+ * - User confirms (action: 'accept')
18
+ * - Elicitation is not supported (graceful fallback — proceed without asking)
19
+ *
20
+ * Returns false if:
21
+ * - User declines or cancels
22
+ */
23
+ export declare function confirmDestructive(server: Server | undefined, toolName: string, message: string): Promise<boolean>;
24
+ /**
25
+ * Ask user to select from a list of options.
26
+ *
27
+ * Returns the selected value, or undefined if:
28
+ * - User cancels/declines
29
+ * - Elicitation is not supported
30
+ */
31
+ export declare function selectOption(server: Server | undefined, toolName: string, message: string, options: Array<{
32
+ value: string;
33
+ title: string;
34
+ }>): Promise<string | undefined>;
35
+ /**
36
+ * Prompt user for a string value.
37
+ *
38
+ * Returns the entered value, or undefined if:
39
+ * - User cancels/declines
40
+ * - Elicitation is not supported
41
+ */
42
+ export declare function promptString(server: Server | undefined, toolName: string, message: string, fieldName: string, description?: string): Promise<string | undefined>;
43
+ //# sourceMappingURL=elicit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicit.d.ts","sourceRoot":"","sources":["../../ts-src/server/elicit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAiBxE;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA8ClB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+C7B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6C7B"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * MCP Elicitation helpers for ARC-1.
3
+ *
4
+ * Wraps the MCP SDK's server.elicitInput() with:
5
+ * - Client capability detection (graceful fallback when unsupported)
6
+ * - Typed convenience methods for common patterns
7
+ * - Audit logging of all elicitation events
8
+ *
9
+ * Based on MCP spec 2025-06-18 / 2025-11-25 elicitation protocol.
10
+ * Dassian ADT uses similar patterns for confirmations and parameter prompts.
11
+ */
12
+ import { logger } from './logger.js';
13
+ /**
14
+ * Check if the connected MCP client supports form elicitation.
15
+ * Returns false if server is undefined or client doesn't declare the capability.
16
+ */
17
+ function supportsElicitation(server) {
18
+ if (!server)
19
+ return false;
20
+ try {
21
+ const caps = server.getClientCapabilities();
22
+ return !!caps?.elicitation?.form;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * Confirm a destructive or irreversible operation with the user.
30
+ *
31
+ * Returns true if:
32
+ * - User confirms (action: 'accept')
33
+ * - Elicitation is not supported (graceful fallback — proceed without asking)
34
+ *
35
+ * Returns false if:
36
+ * - User declines or cancels
37
+ */
38
+ export async function confirmDestructive(server, toolName, message) {
39
+ if (!supportsElicitation(server)) {
40
+ return true; // Fallback: proceed without asking
41
+ }
42
+ logger.emitAudit({
43
+ timestamp: new Date().toISOString(),
44
+ level: 'info',
45
+ event: 'elicitation_sent',
46
+ tool: toolName,
47
+ message,
48
+ fields: ['confirm'],
49
+ });
50
+ try {
51
+ const result = await server.elicitInput({
52
+ message,
53
+ requestedSchema: {
54
+ type: 'object',
55
+ properties: {
56
+ confirm: {
57
+ type: 'boolean',
58
+ title: 'Confirm',
59
+ description: message,
60
+ },
61
+ },
62
+ required: ['confirm'],
63
+ },
64
+ });
65
+ const accepted = result.action === 'accept' && result.content?.confirm === true;
66
+ logger.emitAudit({
67
+ timestamp: new Date().toISOString(),
68
+ level: 'info',
69
+ event: 'elicitation_response',
70
+ tool: toolName,
71
+ action: result.action,
72
+ });
73
+ return accepted;
74
+ }
75
+ catch {
76
+ // Elicitation failed (client doesn't support it, connection issue, etc.)
77
+ // Graceful fallback: proceed
78
+ return true;
79
+ }
80
+ }
81
+ /**
82
+ * Ask user to select from a list of options.
83
+ *
84
+ * Returns the selected value, or undefined if:
85
+ * - User cancels/declines
86
+ * - Elicitation is not supported
87
+ */
88
+ export async function selectOption(server, toolName, message, options) {
89
+ if (!supportsElicitation(server)) {
90
+ return undefined;
91
+ }
92
+ logger.emitAudit({
93
+ timestamp: new Date().toISOString(),
94
+ level: 'info',
95
+ event: 'elicitation_sent',
96
+ tool: toolName,
97
+ message,
98
+ fields: ['selection'],
99
+ });
100
+ try {
101
+ const result = await server.elicitInput({
102
+ message,
103
+ requestedSchema: {
104
+ type: 'object',
105
+ properties: {
106
+ selection: {
107
+ type: 'string',
108
+ title: 'Selection',
109
+ description: message,
110
+ enum: options.map((o) => o.value),
111
+ enumNames: options.map((o) => o.title),
112
+ },
113
+ },
114
+ required: ['selection'],
115
+ },
116
+ });
117
+ logger.emitAudit({
118
+ timestamp: new Date().toISOString(),
119
+ level: 'info',
120
+ event: 'elicitation_response',
121
+ tool: toolName,
122
+ action: result.action,
123
+ });
124
+ if (result.action === 'accept' && typeof result.content?.selection === 'string') {
125
+ return result.content.selection;
126
+ }
127
+ return undefined;
128
+ }
129
+ catch {
130
+ return undefined;
131
+ }
132
+ }
133
+ /**
134
+ * Prompt user for a string value.
135
+ *
136
+ * Returns the entered value, or undefined if:
137
+ * - User cancels/declines
138
+ * - Elicitation is not supported
139
+ */
140
+ export async function promptString(server, toolName, message, fieldName, description) {
141
+ if (!supportsElicitation(server)) {
142
+ return undefined;
143
+ }
144
+ logger.emitAudit({
145
+ timestamp: new Date().toISOString(),
146
+ level: 'info',
147
+ event: 'elicitation_sent',
148
+ tool: toolName,
149
+ message,
150
+ fields: [fieldName],
151
+ });
152
+ try {
153
+ const result = await server.elicitInput({
154
+ message,
155
+ requestedSchema: {
156
+ type: 'object',
157
+ properties: {
158
+ [fieldName]: {
159
+ type: 'string',
160
+ title: fieldName,
161
+ description: description ?? message,
162
+ },
163
+ },
164
+ required: [fieldName],
165
+ },
166
+ });
167
+ logger.emitAudit({
168
+ timestamp: new Date().toISOString(),
169
+ level: 'info',
170
+ event: 'elicitation_response',
171
+ tool: toolName,
172
+ action: result.action,
173
+ });
174
+ if (result.action === 'accept' && typeof result.content?.[fieldName] === 'string') {
175
+ return result.content[fieldName];
176
+ }
177
+ return undefined;
178
+ }
179
+ catch {
180
+ return undefined;
181
+ }
182
+ }
183
+ //# sourceMappingURL=elicit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicit.js","sourceRoot":"","sources":["../../ts-src/server/elicit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * HTTP Streamable transport for ARC-1.
3
+ *
4
+ * Provides an Express HTTP server that:
5
+ * - Serves MCP Streamable HTTP protocol on /mcp
6
+ * - Health check endpoint on /health
7
+ * - API key authentication via Bearer token
8
+ * - OIDC/JWT validation via JWKS discovery (Entra ID, etc.)
9
+ * - XSUAA OAuth proxy for MCP-native clients (Claude Desktop, Cursor)
10
+ *
11
+ * When XSUAA auth is enabled, the MCP SDK's mcpAuthRouter installs standard
12
+ * OAuth endpoints (authorize, token, register, revoke, discovery metadata).
13
+ *
14
+ * Design decisions:
15
+ *
16
+ * 1. Express is used because the MCP SDK's auth infrastructure (mcpAuthRouter,
17
+ * requireBearerAuth) requires Express. Express 5.x is already a transitive
18
+ * dependency of the MCP SDK.
19
+ *
20
+ * 2. Per-request server pattern: each MCP request gets a fresh Server + Transport.
21
+ * This avoids "already connected" errors from concurrent clients.
22
+ *
23
+ * 3. Auth is checked BEFORE creating the MCP transport to avoid wasting resources.
24
+ *
25
+ * 4. Health endpoint is always unauthenticated — needed for CF health checks.
26
+ */
27
+ import type { Server as McpServer } from '@modelcontextprotocol/sdk/server/index.js';
28
+ import type { ServerConfig } from './types.js';
29
+ import type { XsuaaCredentials } from './xsuaa.js';
30
+ /**
31
+ * Start the HTTP Streamable server.
32
+ */
33
+ export declare function startHttpServer(serverFactory: () => McpServer, config: ServerConfig, xsuaaCredentials?: XsuaaCredentials): Promise<void>;
34
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../ts-src/server/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAMrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA4CnD;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,SAAS,EAC9B,MAAM,EAAE,YAAY,EACpB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC,CA8Jf"}