@numa-tech/numa 1.20.0 → 1.20.1

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 (102) hide show
  1. package/README.md +28 -2
  2. package/dist/ai-registry/bridge.js +3 -2
  3. package/dist/ai-registry/bridge.js.map +1 -1
  4. package/dist/ai-registry/client.d.ts +8 -1
  5. package/dist/ai-registry/client.js +11 -1
  6. package/dist/ai-registry/client.js.map +1 -1
  7. package/dist/ai-registry/commands.d.ts +3 -0
  8. package/dist/ai-registry/commands.js +48 -36
  9. package/dist/ai-registry/commands.js.map +1 -1
  10. package/dist/ai-registry/mcp-management.d.ts +2 -0
  11. package/dist/ai-registry/mcp-management.js +74 -0
  12. package/dist/ai-registry/mcp-management.js.map +1 -0
  13. package/dist/ai-registry/mcp-runtime-commands.d.ts +15 -0
  14. package/dist/ai-registry/mcp-runtime-commands.js +101 -0
  15. package/dist/ai-registry/mcp-runtime-commands.js.map +1 -0
  16. package/dist/ai-registry/mcp-runtime.d.ts +37 -0
  17. package/dist/ai-registry/mcp-runtime.js +134 -0
  18. package/dist/ai-registry/mcp-runtime.js.map +1 -0
  19. package/dist/ai-registry/mcp-stdio.d.ts +2 -0
  20. package/dist/ai-registry/mcp-stdio.js +18 -0
  21. package/dist/ai-registry/mcp-stdio.js.map +1 -0
  22. package/dist/authorization/application-client.d.ts +1271 -0
  23. package/dist/authorization/application-client.js +391 -0
  24. package/dist/authorization/application-client.js.map +1 -0
  25. package/dist/authorization/application-commands.d.ts +15 -0
  26. package/dist/authorization/application-commands.js +240 -0
  27. package/dist/authorization/application-commands.js.map +1 -0
  28. package/dist/authorization/application-schemas.d.ts +731 -0
  29. package/dist/authorization/application-schemas.js +521 -0
  30. package/dist/authorization/application-schemas.js.map +1 -0
  31. package/dist/authorization/{client.d.ts → bootstrap-client.d.ts} +5 -26
  32. package/dist/authorization/{client.js → bootstrap-client.js} +4 -27
  33. package/dist/authorization/bootstrap-client.js.map +1 -0
  34. package/dist/authorization/commands.d.ts +6 -21
  35. package/dist/authorization/commands.js +8 -130
  36. package/dist/authorization/commands.js.map +1 -1
  37. package/dist/authorization/enrollment-client.d.ts +40 -0
  38. package/dist/authorization/enrollment-client.js +56 -0
  39. package/dist/authorization/enrollment-client.js.map +1 -0
  40. package/dist/authorization/enrollment-commands.d.ts +5 -0
  41. package/dist/authorization/enrollment-commands.js +30 -0
  42. package/dist/authorization/enrollment-commands.js.map +1 -0
  43. package/dist/authorization/enrollment.d.ts +2 -2
  44. package/dist/authorization/enrollment.js +2 -2
  45. package/dist/authorization/enrollment.js.map +1 -1
  46. package/dist/authorization/schemas.d.ts +0 -90
  47. package/dist/authorization/schemas.js +0 -48
  48. package/dist/authorization/schemas.js.map +1 -1
  49. package/dist/backend.d.ts +1 -0
  50. package/dist/backend.js +4 -1
  51. package/dist/backend.js.map +1 -1
  52. package/dist/business-issuer.d.ts +4 -0
  53. package/dist/business-issuer.js +30 -0
  54. package/dist/business-issuer.js.map +1 -0
  55. package/dist/cli.js +61 -30
  56. package/dist/cli.js.map +1 -1
  57. package/dist/cloud/bootstrap.js +1 -1
  58. package/dist/cloud/bootstrap.js.map +1 -1
  59. package/dist/command-catalog.js +11 -36
  60. package/dist/command-catalog.js.map +1 -1
  61. package/dist/config.d.ts +1 -1
  62. package/dist/config.js +15 -6
  63. package/dist/config.js.map +1 -1
  64. package/dist/login-configuration.d.ts +8 -0
  65. package/dist/login-configuration.js +17 -0
  66. package/dist/login-configuration.js.map +1 -0
  67. package/dist/login-recovery.d.ts +2 -0
  68. package/dist/login-recovery.js +15 -0
  69. package/dist/login-recovery.js.map +1 -0
  70. package/dist/mcp/commands.js +12 -2
  71. package/dist/mcp/commands.js.map +1 -1
  72. package/dist/mcp-gateway/commands.d.ts +2 -0
  73. package/dist/mcp-gateway/commands.js +11 -0
  74. package/dist/mcp-gateway/commands.js.map +1 -1
  75. package/dist/oss/commands.js +15 -15
  76. package/dist/oss/commands.js.map +1 -1
  77. package/dist/oss/tools.js +1 -1
  78. package/dist/oss/tools.js.map +1 -1
  79. package/dist/oss/web.js +1 -1
  80. package/dist/oss/web.js.map +1 -1
  81. package/dist/platform-profile.d.ts +22 -2
  82. package/dist/platform-profile.js +67 -6
  83. package/dist/platform-profile.js.map +1 -1
  84. package/docs/application-default-groups.md +73 -0
  85. package/examples/cloud-bootstrap/README.md +1 -1
  86. package/examples/mcp/README.md +108 -0
  87. package/examples/mcp/management-smoke.py +154 -0
  88. package/examples/mcp/runtime-smoke.mjs +187 -0
  89. package/examples/mcp/server.json +17 -0
  90. package/examples/oss/README.md +78 -0
  91. package/examples/oss/__pycache__/roundtrip.cpython-314.pyc +0 -0
  92. package/examples/oss/__pycache__/test_roundtrip.cpython-314.pyc +0 -0
  93. package/examples/oss/roundtrip.py +84 -0
  94. package/examples/oss/test_roundtrip.py +66 -0
  95. package/package.json +5 -4
  96. package/dist/authorization/client.js.map +0 -1
  97. package/dist/authorization/group-client.d.ts +0 -169
  98. package/dist/authorization/group-client.js +0 -129
  99. package/dist/authorization/group-client.js.map +0 -1
  100. package/dist/authorization/group-commands.d.ts +0 -25
  101. package/dist/authorization/group-commands.js +0 -155
  102. package/dist/authorization/group-commands.js.map +0 -1
@@ -0,0 +1,134 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { resolveBackendUrl } from "../backend.js";
5
+ import { PACKAGE_VERSION } from "../branding.js";
6
+ import { fetchWithKeycloakIdentity } from "../oauth.js";
7
+ import { bridgeMcpTransports } from "./bridge.js";
8
+ import { AiRegistryError } from "./errors.js";
9
+ export function resolveMcpRuntimeEndpoint(config, connection) {
10
+ if (connection.transport !== "STREAMABLE_HTTP") {
11
+ throw new AiRegistryError("MCP connection must use a governed Streamable HTTP endpoint.", "ai_registry_mcp_transport_invalid");
12
+ }
13
+ try {
14
+ const url = new URL(resolveBackendUrl({ ...config, allowAbsoluteBackendUrls: true }, {
15
+ method: "POST",
16
+ ...(connection.endpoint.startsWith("/") ? { path: connection.endpoint } : { url: connection.endpoint })
17
+ }));
18
+ const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
19
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && loopback))
20
+ throw new Error("HTTPS is required outside loopback");
21
+ if (url.search || url.hash)
22
+ throw new Error("Queries and fragments are not allowed");
23
+ if (!/\/api\/v1\/mcp\/[1-9][0-9]*\/[A-Za-z0-9_.-]+$/u.test(url.pathname))
24
+ throw new Error("A governed MCP service route is required");
25
+ return url;
26
+ }
27
+ catch {
28
+ throw new AiRegistryError("MCP endpoint must be the governed route on the configured platform API origin and service path.", "ai_registry_mcp_endpoint_invalid");
29
+ }
30
+ }
31
+ /** Restrict every SDK request before attaching identity; never follow redirects with a token. */
32
+ export function createMcpRuntimeFetch(config, endpoint, dependencies = {}) {
33
+ return async (input, init) => {
34
+ const requested = new URL(String(input));
35
+ if (requested.href !== endpoint.href) {
36
+ throw new AiRegistryError("MCP transport attempted to leave its governed endpoint.", "ai_registry_mcp_endpoint_invalid");
37
+ }
38
+ const response = await fetchWithKeycloakIdentity(config, endpoint.href, () => ({ ...init, headers: new Headers(init?.headers), redirect: "error" }), dependencies);
39
+ // Do not propagate a credential-bearing gateway/proxy error body through SDK exceptions.
40
+ if (!response.ok && !(response.status === 405 && ["GET", "DELETE"].includes(init?.method ?? "GET"))) {
41
+ await response.body?.cancel().catch(() => undefined);
42
+ throw new AiRegistryError(`MCP gateway HTTP ${response.status}.`, response.status === 401 ? "login_required" : response.status === 403 ? "ai_registry_mcp_forbidden" : "ai_registry_mcp_upstream_error", response.status, response.headers.get("x-request-id") ?? undefined);
43
+ }
44
+ return response;
45
+ };
46
+ }
47
+ /** Track negotiation for a raw bridge (SDK Client normally performs this itself). */
48
+ export class GovernedMcpTransport {
49
+ remote;
50
+ onmessage;
51
+ onerror;
52
+ onclose;
53
+ initializeId;
54
+ closing;
55
+ constructor(remote) {
56
+ this.remote = remote;
57
+ remote.onmessage = (message) => {
58
+ if ("id" in message && message.id === this.initializeId && "result" in message
59
+ && typeof message.result.protocolVersion === "string") {
60
+ remote.setProtocolVersion(message.result.protocolVersion);
61
+ }
62
+ this.onmessage?.(message);
63
+ };
64
+ remote.onerror = (error) => { if (!this.closing)
65
+ this.onerror?.(error); };
66
+ remote.onclose = () => this.onclose?.();
67
+ }
68
+ get sessionId() { return this.remote.sessionId; }
69
+ start() { return this.remote.start(); }
70
+ setProtocolVersion(version) { this.remote.setProtocolVersion(version); }
71
+ send(message, options) {
72
+ if ("method" in message && message.method === "initialize" && "id" in message)
73
+ this.initializeId = message.id;
74
+ return this.remote.send(message, options);
75
+ }
76
+ close() {
77
+ this.closing ??= (async () => {
78
+ let timer;
79
+ try {
80
+ // DELETE is best effort and bounded; a failed cleanup must not hide the actual RPC error.
81
+ await Promise.race([
82
+ this.remote.terminateSession().catch(() => undefined),
83
+ new Promise((resolve) => { timer = setTimeout(resolve, 1500); timer.unref(); })
84
+ ]);
85
+ }
86
+ finally {
87
+ if (timer)
88
+ clearTimeout(timer);
89
+ await this.remote.close();
90
+ }
91
+ })();
92
+ return this.closing;
93
+ }
94
+ }
95
+ export function createMcpRuntimeTransport(config, connection, dependencies = {}) {
96
+ const endpoint = resolveMcpRuntimeEndpoint(config, connection);
97
+ return new GovernedMcpTransport(new StreamableHTTPClientTransport(endpoint, {
98
+ fetch: createMcpRuntimeFetch(config, endpoint, dependencies)
99
+ }));
100
+ }
101
+ export async function withMcpRuntimeClient(transport, operation) {
102
+ const client = new Client({ name: "numa-mcp", version: PACKAGE_VERSION }, { capabilities: {} });
103
+ try {
104
+ await client.connect(transport, { timeout: 30_000 });
105
+ return await operation(client);
106
+ }
107
+ finally {
108
+ await transport.close();
109
+ await client.close();
110
+ }
111
+ }
112
+ /** Proxy all MCP frames unchanged: capabilities, pagination, notifications, cancellation and reverse requests. */
113
+ export async function runMcpRuntimeProxy(remote, options = {}) {
114
+ const stdin = options.stdin ?? process.stdin;
115
+ const stdout = options.stdout ?? process.stdout;
116
+ const signals = options.signals ?? process;
117
+ const local = new StdioServerTransport(stdin, stdout);
118
+ const finish = () => { void local.close(); };
119
+ stdin.once("end", finish);
120
+ stdin.once("close", finish);
121
+ signals.once("SIGINT", finish);
122
+ signals.once("SIGTERM", finish);
123
+ try {
124
+ await bridgeMcpTransports(local, remote);
125
+ }
126
+ finally {
127
+ stdin.off("end", finish);
128
+ stdin.off("close", finish);
129
+ signals.off("SIGINT", finish);
130
+ signals.off("SIGTERM", finish);
131
+ await remote.close();
132
+ }
133
+ }
134
+ //# sourceMappingURL=mcp-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-runtime.js","sourceRoot":"","sources":["../../src/ai-registry/mcp-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /** Recognize stdio mode before Commander/profile startup can fail. */
2
+ export declare function isMcpStdioInvocation(args: readonly string[]): boolean;
@@ -0,0 +1,18 @@
1
+ /** Recognize stdio mode before Commander/profile startup can fail. */
2
+ export function isMcpStdioInvocation(args) {
3
+ const words = [];
4
+ for (let index = 0; index < args.length; index += 1) {
5
+ const arg = args[index];
6
+ if (arg === "--issuer") {
7
+ index += 1;
8
+ continue;
9
+ }
10
+ if (["--json", "-j", "--debug"].includes(arg) || arg.startsWith("--issuer="))
11
+ continue;
12
+ words.push(arg);
13
+ if (words.length === 2)
14
+ break;
15
+ }
16
+ return words[0] === "mcp" && ["proxy", "bridge"].includes(words[1] ?? "");
17
+ }
18
+ //# sourceMappingURL=mcp-stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-stdio.js","sourceRoot":"","sources":["../../src/ai-registry/mcp-stdio.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,SAAS;QACvF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;IAChC,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC"}