@agent-vm/mcp-portal 0.0.69 → 0.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +42 -11
  2. package/dist/agent-bearer-token-DCtpDPCZ.js +59 -0
  3. package/dist/agent-bearer-token-DCtpDPCZ.js.map +1 -0
  4. package/dist/bin/mcp-portal.d.ts +28 -0
  5. package/dist/bin/mcp-portal.d.ts.map +1 -0
  6. package/dist/bin/mcp-portal.js +318 -0
  7. package/dist/bin/mcp-portal.js.map +1 -0
  8. package/dist/{catalog-types--gUGFPpN.d.ts → catalog-types-BVuB4Ynx.d.ts} +1 -1
  9. package/dist/{catalog-types--gUGFPpN.d.ts.map → catalog-types-BVuB4Ynx.d.ts.map} +1 -1
  10. package/dist/cli/index.d.ts +101 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +2 -0
  13. package/dist/core/index.d.ts +40 -0
  14. package/dist/core/index.d.ts.map +1 -0
  15. package/dist/core/index.js +5 -0
  16. package/dist/hmac-env-B4shpRRB.js +20 -0
  17. package/dist/hmac-env-B4shpRRB.js.map +1 -0
  18. package/dist/hmac-token-DBqWY3-w.js +100 -0
  19. package/dist/hmac-token-DBqWY3-w.js.map +1 -0
  20. package/dist/index.d.ts +5 -485
  21. package/dist/index.js +4 -5
  22. package/dist/mcp-proxy/index.d.ts +24 -0
  23. package/dist/mcp-proxy/index.d.ts.map +1 -0
  24. package/dist/mcp-proxy/index.js +2 -0
  25. package/dist/portal-auth/agent-bearer-token.d.ts +22 -0
  26. package/dist/portal-auth/agent-bearer-token.d.ts.map +1 -0
  27. package/dist/portal-auth/agent-bearer-token.js +2 -0
  28. package/dist/portal-auth/hmac-env.d.ts +6 -0
  29. package/dist/portal-auth/hmac-env.d.ts.map +1 -0
  30. package/dist/portal-auth/hmac-env.js +2 -0
  31. package/dist/portal-auth/hmac-token.d.ts +40 -0
  32. package/dist/portal-auth/hmac-token.d.ts.map +1 -0
  33. package/dist/portal-auth/hmac-token.js +2 -0
  34. package/dist/portal-config/index.d.ts +11 -0
  35. package/dist/portal-config/index.d.ts.map +1 -0
  36. package/dist/{tool-vm → portal-config}/index.js +2 -3
  37. package/dist/portal-core-CZQI7Ob6.d.ts +264 -0
  38. package/dist/portal-core-CZQI7Ob6.d.ts.map +1 -0
  39. package/dist/portal-core-Cgu714CL.js +416 -0
  40. package/dist/portal-core-Cgu714CL.js.map +1 -0
  41. package/dist/portal-session-DG2CUjIo.d.ts +184 -0
  42. package/dist/portal-session-DG2CUjIo.d.ts.map +1 -0
  43. package/dist/portal-tools-DKci1szO.js +528 -0
  44. package/dist/portal-tools-DKci1szO.js.map +1 -0
  45. package/dist/resolve-agent-identity-DnC_Pmnh.js +550 -0
  46. package/dist/resolve-agent-identity-DnC_Pmnh.js.map +1 -0
  47. package/dist/resolve-agent-identity-FQL02YdW.d.ts +81 -0
  48. package/dist/resolve-agent-identity-FQL02YdW.d.ts.map +1 -0
  49. package/dist/serve-command-CnSMUybd.js +358 -0
  50. package/dist/serve-command-CnSMUybd.js.map +1 -0
  51. package/dist/testing/fake-upstream-mcp-server.d.ts +5 -2
  52. package/dist/testing/fake-upstream-mcp-server.d.ts.map +1 -1
  53. package/dist/testing/fake-upstream-mcp-server.js +14 -4
  54. package/dist/testing/fake-upstream-mcp-server.js.map +1 -1
  55. package/dist/typescript-artifact-BVLt3Ifd.js +60 -0
  56. package/dist/typescript-artifact-BVLt3Ifd.js.map +1 -0
  57. package/dist/upstream-mcp-client-runtime-JlsfTm7_.js +760 -0
  58. package/dist/upstream-mcp-client-runtime-JlsfTm7_.js.map +1 -0
  59. package/dist/upstream-response-middleware-1MZnAD9C.d.ts +115 -0
  60. package/dist/upstream-response-middleware-1MZnAD9C.d.ts.map +1 -0
  61. package/dist/upstream-response-middleware-BjUWZ2G8.js +172 -0
  62. package/dist/upstream-response-middleware-BjUWZ2G8.js.map +1 -0
  63. package/dist/{index-BcI9c8sg.d.ts → zod-schema-loader-DLGQpYFD.d.ts} +3 -9
  64. package/dist/zod-schema-loader-DLGQpYFD.d.ts.map +1 -0
  65. package/dist/{typescript-artifact-BqU8okQy.js → zod-schema-loader-yNekKNpm.js} +85 -55
  66. package/dist/zod-schema-loader-yNekKNpm.js.map +1 -0
  67. package/package.json +30 -13
  68. package/dist/bin/agent-vm-mcp-portal.d.ts +0 -10
  69. package/dist/bin/agent-vm-mcp-portal.d.ts.map +0 -1
  70. package/dist/bin/agent-vm-mcp-portal.js +0 -56
  71. package/dist/bin/agent-vm-mcp-portal.js.map +0 -1
  72. package/dist/bin/portal-server.d.ts +0 -55
  73. package/dist/bin/portal-server.d.ts.map +0 -1
  74. package/dist/bin/portal-server.js +0 -289
  75. package/dist/bin/portal-server.js.map +0 -1
  76. package/dist/index-BcI9c8sg.d.ts.map +0 -1
  77. package/dist/index.d.ts.map +0 -1
  78. package/dist/tool-vm/index.d.ts +0 -2
  79. package/dist/tool-vm-ihnzDyjJ.js +0 -3
  80. package/dist/typescript-artifact-BqU8okQy.js.map +0 -1
  81. package/dist/upstream-mcp-client-runtime-DiBCBsDj.js +0 -1729
  82. package/dist/upstream-mcp-client-runtime-DiBCBsDj.js.map +0 -1
  83. package/dist/zod-schema-loader-CDDtoRE1.js +0 -90
  84. package/dist/zod-schema-loader-CDDtoRE1.js.map +0 -1
@@ -0,0 +1,60 @@
1
+ import { a as portalToolRecordSchema, r as encodeToolRef } from "./zod-schema-loader-yNekKNpm.js";
2
+ import { createHash } from "node:crypto";
3
+ //#region src/portal-config/typescript-artifact.ts
4
+ function toIdentifierPart(value) {
5
+ const words = value.split(/[^A-Za-z0-9]+/).filter(Boolean);
6
+ if (words.length === 0) return "tool";
7
+ return words.map((word) => word.slice(0, 1).toUpperCase() + word.slice(1)).join("");
8
+ }
9
+ function shortToolRefHash(toolRef) {
10
+ return createHash("sha256").update(toolRef).digest("hex").slice(0, 8);
11
+ }
12
+ function toToolConstantName(tool) {
13
+ const identifier = `${toIdentifierPart(tool.namespace)}${toIdentifierPart(tool.toolName)}${shortToolRefHash(tool.toolRef)}Tool`;
14
+ return identifier.slice(0, 1).toLowerCase() + identifier.slice(1);
15
+ }
16
+ function generateTypescriptCatalogArtifact(input) {
17
+ const catalogEntries = input.tools.map((tool) => portalToolRecordSchema.parse(tool)).toSorted((left, right) => {
18
+ const leftRef = encodeToolRef({
19
+ namespace: left.namespace,
20
+ toolName: left.toolName
21
+ });
22
+ const rightRef = encodeToolRef({
23
+ namespace: right.namespace,
24
+ toolName: right.toolName
25
+ });
26
+ return leftRef.localeCompare(rightRef);
27
+ }).map((tool) => Object.assign({}, tool, { toolRef: encodeToolRef({
28
+ namespace: tool.namespace,
29
+ toolName: tool.toolName
30
+ }) }));
31
+ const constants = catalogEntries.map((tool) => {
32
+ return `export const ${toToolConstantName(tool)} = requireCatalogTool(${JSON.stringify(tool.toolRef)});`;
33
+ }).join("\n");
34
+ return [
35
+ "// Generated by mcp-portal. JSON Schema is canonical; Zod is derived for runtime validation.",
36
+ "import * as z from 'zod';",
37
+ "",
38
+ `export const portalCatalog = ${JSON.stringify({ tools: catalogEntries }, null, " ")} as const;`,
39
+ "",
40
+ constants,
41
+ "",
42
+ "function requireCatalogTool(toolRef: string): (typeof portalCatalog.tools)[number] {",
43
+ " const tool = portalCatalog.tools.find((catalogTool) => catalogTool.toolRef === toolRef);",
44
+ " if (!tool) {",
45
+ " throw new Error(`Unknown MCP portal toolRef: ${toolRef}`);",
46
+ " }",
47
+ " return tool;",
48
+ "}",
49
+ "",
50
+ "export function createInputValidator(toolRef: string): z.ZodType {",
51
+ " const tool = requireCatalogTool(toolRef);",
52
+ " return z.fromJSONSchema(tool.inputSchema);",
53
+ "}",
54
+ ""
55
+ ].join("\n");
56
+ }
57
+ //#endregion
58
+ export { generateTypescriptCatalogArtifact as t };
59
+
60
+ //# sourceMappingURL=typescript-artifact-BVLt3Ifd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-artifact-BVLt3Ifd.js","names":[],"sources":["../src/portal-config/typescript-artifact.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nimport { portalToolRecordSchema, type PortalToolRecord } from '../catalog-types.js';\nimport { encodeToolRef } from '../tool-ref.js';\n\nexport interface CatalogArtifactInput {\n\treadonly tools: readonly PortalToolRecord[];\n}\n\nfunction toIdentifierPart(value: string): string {\n\tconst words = value.split(/[^A-Za-z0-9]+/).filter(Boolean);\n\tif (words.length === 0) {\n\t\treturn 'tool';\n\t}\n\n\treturn words.map((word) => word.slice(0, 1).toUpperCase() + word.slice(1)).join('');\n}\n\nfunction shortToolRefHash(toolRef: string): string {\n\treturn createHash('sha256').update(toolRef).digest('hex').slice(0, 8);\n}\n\nfunction toToolConstantName(tool: PortalToolRecord & { readonly toolRef: string }): string {\n\tconst namespacePart = toIdentifierPart(tool.namespace);\n\tconst toolNamePart = toIdentifierPart(tool.toolName);\n\tconst identifier = `${namespacePart}${toolNamePart}${shortToolRefHash(tool.toolRef)}Tool`;\n\n\treturn identifier.slice(0, 1).toLowerCase() + identifier.slice(1);\n}\n\nexport function generateTypescriptCatalogArtifact(input: CatalogArtifactInput): string {\n\tconst tools = input.tools\n\t\t.map((tool) => portalToolRecordSchema.parse(tool))\n\t\t.toSorted((left, right) => {\n\t\t\tconst leftRef = encodeToolRef({ namespace: left.namespace, toolName: left.toolName });\n\t\t\tconst rightRef = encodeToolRef({ namespace: right.namespace, toolName: right.toolName });\n\t\t\treturn leftRef.localeCompare(rightRef);\n\t\t});\n\n\tconst catalogEntries = tools.map((tool) =>\n\t\tObject.assign({}, tool, {\n\t\t\ttoolRef: encodeToolRef({ namespace: tool.namespace, toolName: tool.toolName }),\n\t\t}),\n\t);\n\tconst constants = catalogEntries\n\t\t.map((tool) => {\n\t\t\tconst constantName = toToolConstantName(tool);\n\t\t\treturn `export const ${constantName} = requireCatalogTool(${JSON.stringify(tool.toolRef)});`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn [\n\t\t'// Generated by mcp-portal. JSON Schema is canonical; Zod is derived for runtime validation.',\n\t\t\"import * as z from 'zod';\",\n\t\t'',\n\t\t`export const portalCatalog = ${JSON.stringify({ tools: catalogEntries }, null, '\\t')} as const;`,\n\t\t'',\n\t\tconstants,\n\t\t'',\n\t\t'function requireCatalogTool(toolRef: string): (typeof portalCatalog.tools)[number] {',\n\t\t'\\tconst tool = portalCatalog.tools.find((catalogTool) => catalogTool.toolRef === toolRef);',\n\t\t'\\tif (!tool) {',\n\t\t'\\t\\tthrow new Error(`Unknown MCP portal toolRef: ${toolRef}`);',\n\t\t'\\t}',\n\t\t'\\treturn tool;',\n\t\t'}',\n\t\t'',\n\t\t'export function createInputValidator(toolRef: string): z.ZodType {',\n\t\t'\\tconst tool = requireCatalogTool(toolRef);',\n\t\t'\\treturn z.fromJSONSchema(tool.inputSchema);',\n\t\t'}',\n\t\t'',\n\t].join('\\n');\n}\n"],"mappings":";;;AASA,SAAS,iBAAiB,OAAuB;CAChD,MAAM,QAAQ,MAAM,MAAM,gBAAgB,CAAC,OAAO,QAAQ;CAC1D,IAAI,MAAM,WAAW,GACpB,OAAO;CAGR,OAAO,MAAM,KAAK,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG;;AAGpF,SAAS,iBAAiB,SAAyB;CAClD,OAAO,WAAW,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE;;AAGtE,SAAS,mBAAmB,MAA+D;CAG1F,MAAM,aAAa,GAFG,iBAAiB,KAAK,UAET,GADd,iBAAiB,KAAK,SACO,GAAG,iBAAiB,KAAK,QAAQ,CAAC;CAEpF,OAAO,WAAW,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,WAAW,MAAM,EAAE;;AAGlE,SAAgB,kCAAkC,OAAqC;CAStF,MAAM,iBARQ,MAAM,MAClB,KAAK,SAAS,uBAAuB,MAAM,KAAK,CAAC,CACjD,UAAU,MAAM,UAAU;EAC1B,MAAM,UAAU,cAAc;GAAE,WAAW,KAAK;GAAW,UAAU,KAAK;GAAU,CAAC;EACrF,MAAM,WAAW,cAAc;GAAE,WAAW,MAAM;GAAW,UAAU,MAAM;GAAU,CAAC;EACxF,OAAO,QAAQ,cAAc,SAAS;GAGZ,CAAC,KAAK,SACjC,OAAO,OAAO,EAAE,EAAE,MAAM,EACvB,SAAS,cAAc;EAAE,WAAW,KAAK;EAAW,UAAU,KAAK;EAAU,CAAC,EAC9E,CAAC,CACF;CACD,MAAM,YAAY,eAChB,KAAK,SAAS;EAEd,OAAO,gBADc,mBAAmB,KACL,CAAC,wBAAwB,KAAK,UAAU,KAAK,QAAQ,CAAC;GACxF,CACD,KAAK,KAAK;CAEZ,OAAO;EACN;EACA;EACA;EACA,gCAAgC,KAAK,UAAU,EAAE,OAAO,gBAAgB,EAAE,MAAM,IAAK,CAAC;EACtF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC,KAAK,KAAK"}