@nekzus/liop 2.4.0-alpha.24 → 2.4.0-alpha.26

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 (109) hide show
  1. package/README.md +21 -10
  2. package/dist/bin/agent.js +27 -932
  3. package/dist/bridge.d.ts +3 -3
  4. package/dist/bridge.js +1 -5
  5. package/dist/chunk-2XHSALII.js +3 -0
  6. package/dist/chunk-2ZYX736J.js +2 -0
  7. package/dist/chunk-3WRKTVOF.js +2 -0
  8. package/dist/chunk-6KFKO6ZX.js +2 -0
  9. package/dist/chunk-6VK2XALI.js +2 -0
  10. package/dist/chunk-AYDF3IFZ.js +2 -0
  11. package/dist/chunk-CTTTLCGL.js +31 -0
  12. package/dist/chunk-ECRS6N33.js +4 -0
  13. package/dist/chunk-FDJMH4CB.js +2 -0
  14. package/dist/chunk-FTF6AMF6.js +0 -1
  15. package/dist/chunk-GWVSCZUS.js +2 -0
  16. package/dist/chunk-LEXMMIQI.js +15 -0
  17. package/dist/chunk-LM26HOJ6.js +31 -0
  18. package/dist/chunk-MQ5SU26J.js +2 -0
  19. package/dist/chunk-N35BC62H.js +2 -0
  20. package/dist/chunk-P6IJ3VBD.js +3 -0
  21. package/dist/chunk-TKLRW52V.js +2 -0
  22. package/dist/chunk-V35CXJQN.js +2 -0
  23. package/dist/chunk-WP5ER7RH.js +3 -0
  24. package/dist/chunk-XLVEDKM6.js +2 -0
  25. package/dist/chunk-Y675R34Z.js +2 -0
  26. package/dist/chunk-YD2AF2M6.js +46 -0
  27. package/dist/chunk-YLCNV764.js +3 -0
  28. package/dist/chunk-ZZMSFCJP.js +3 -0
  29. package/dist/client.d.ts +4 -4
  30. package/dist/client.js +1 -12
  31. package/dist/gateway.d.ts +5 -5
  32. package/dist/gateway.js +1 -12
  33. package/dist/{hybrid-Cb95yJFg.d.ts → hybrid-BZpCiUaV.d.ts} +3 -3
  34. package/dist/{index-DtovobWb.d.ts → index-BYDtRGue.d.ts} +3 -3
  35. package/dist/{index-D2P6Z_hP.d.ts → index-ByzjpRCk.d.ts} +6 -1
  36. package/dist/index.d.ts +15 -10
  37. package/dist/index.js +4 -319
  38. package/dist/kyber-PULV7PQX.js +2 -0
  39. package/dist/mesh.js +1 -5
  40. package/dist/server.d.ts +3 -3
  41. package/dist/server.js +1 -9
  42. package/dist/{types-rxL19f0l.d.ts → types-29zv9X1V.d.ts} +1 -1
  43. package/dist/types.d.ts +2 -2
  44. package/dist/types.js +1 -3
  45. package/dist/{verifier-EgKmGrh7.d.ts → verifier-DqZ9MQ9l.d.ts} +34 -5
  46. package/dist/verifier-J4NQYZX5.js +2 -0
  47. package/dist/workers/logic-execution.d.ts +2 -1
  48. package/dist/workers/logic-execution.js +1 -326
  49. package/dist/workers/zk-verifier.d.ts +1 -1
  50. package/dist/workers/zk-verifier.js +1 -245
  51. package/dist/{zk-CYImPsa6.d.ts → zk-DzYNWBgo.d.ts} +14 -1
  52. package/package.json +6 -2
  53. package/dist/bin/agent.js.map +0 -1
  54. package/dist/bridge.js.map +0 -1
  55. package/dist/chunk-2VQS2XRH.js +0 -564
  56. package/dist/chunk-2VQS2XRH.js.map +0 -1
  57. package/dist/chunk-3QH44NKZ.js +0 -115
  58. package/dist/chunk-3QH44NKZ.js.map +0 -1
  59. package/dist/chunk-53QKIQNF.js +0 -818
  60. package/dist/chunk-53QKIQNF.js.map +0 -1
  61. package/dist/chunk-7BSCUYUE.js +0 -421
  62. package/dist/chunk-7BSCUYUE.js.map +0 -1
  63. package/dist/chunk-7PITYWOV.js +0 -68
  64. package/dist/chunk-7PITYWOV.js.map +0 -1
  65. package/dist/chunk-FTF6AMF6.js.map +0 -1
  66. package/dist/chunk-GFGSHQN5.js +0 -206884
  67. package/dist/chunk-GFGSHQN5.js.map +0 -1
  68. package/dist/chunk-IDTXJQBH.js +0 -1506
  69. package/dist/chunk-IDTXJQBH.js.map +0 -1
  70. package/dist/chunk-IHKKWXHJ.js +0 -876
  71. package/dist/chunk-IHKKWXHJ.js.map +0 -1
  72. package/dist/chunk-IK7CGWAZ.js +0 -24
  73. package/dist/chunk-IK7CGWAZ.js.map +0 -1
  74. package/dist/chunk-JWFLXXZS.js +0 -3743
  75. package/dist/chunk-JWFLXXZS.js.map +0 -1
  76. package/dist/chunk-K3DGJLUY.js +0 -106
  77. package/dist/chunk-K3DGJLUY.js.map +0 -1
  78. package/dist/chunk-KR5UZUEY.js +0 -98
  79. package/dist/chunk-KR5UZUEY.js.map +0 -1
  80. package/dist/chunk-OHMZZMMC.js +0 -58
  81. package/dist/chunk-OHMZZMMC.js.map +0 -1
  82. package/dist/chunk-P34HDRN5.js +0 -213
  83. package/dist/chunk-P34HDRN5.js.map +0 -1
  84. package/dist/chunk-Q3FKHJ3B.js +0 -345
  85. package/dist/chunk-Q3FKHJ3B.js.map +0 -1
  86. package/dist/chunk-V47P2AQR.js +0 -281
  87. package/dist/chunk-V47P2AQR.js.map +0 -1
  88. package/dist/chunk-WPTOJYN5.js +0 -181
  89. package/dist/chunk-WPTOJYN5.js.map +0 -1
  90. package/dist/chunk-Y62GORQF.js +0 -51
  91. package/dist/chunk-Y62GORQF.js.map +0 -1
  92. package/dist/chunk-ZJGVKM7G.js +0 -803
  93. package/dist/chunk-ZJGVKM7G.js.map +0 -1
  94. package/dist/chunk-ZP3VVXOI.js +0 -66
  95. package/dist/chunk-ZP3VVXOI.js.map +0 -1
  96. package/dist/chunk-ZRWNMP5L.js +0 -165
  97. package/dist/chunk-ZRWNMP5L.js.map +0 -1
  98. package/dist/client.js.map +0 -1
  99. package/dist/gateway.js.map +0 -1
  100. package/dist/index.js.map +0 -1
  101. package/dist/kyber-CGOA7Q6A.js +0 -3
  102. package/dist/kyber-CGOA7Q6A.js.map +0 -1
  103. package/dist/mesh.js.map +0 -1
  104. package/dist/server.js.map +0 -1
  105. package/dist/types.js.map +0 -1
  106. package/dist/verifier-UBJTZQSA.js +0 -6
  107. package/dist/verifier-UBJTZQSA.js.map +0 -1
  108. package/dist/workers/logic-execution.js.map +0 -1
  109. package/dist/workers/zk-verifier.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/bin/agent.ts"],"names":["token"],"mappings":"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","file":"agent.js","sourcesContent":["#!/usr/bin/env node\n\n// Copyright 2026 Nekzus Solutions and contributors\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport * as readline from \"node:readline\";\nimport { multiaddr } from \"@multiformats/multiaddr\";\nimport {\n\tisLegacyRequest,\n\tnormalizeToolArguments,\n\tTOOL_ALIASES,\n} from \"../gateway/mcp-compat.js\";\nimport { LiopMcpRouter } from \"../gateway/router.js\";\nimport { MeshNode } from \"../mesh/index.js\";\nimport { RoutingTable, type ToolDefinition } from \"../runtime/routing-table.js\";\nimport { TokenManager } from \"../runtime/token-manager.js\";\nimport {\n\ttype GatewayTopologyInfo,\n\ttype MeshTopologyInfo,\n\tprobeTopology,\n\ttype TopologyProbeResult,\n} from \"../runtime/topology-probe.js\";\nimport { LiopServer } from \"../server/index.js\";\nimport type { McpRequest, McpResponse } from \"../types.js\";\nimport { log } from \"../utils/logger.js\";\n\n/**\n * Mandatory Diagnostic Tool definition.\n * Claude Desktop silently hides the connector if it receives an empty array initially.\n */\nconst LIOP_MESH_STATUS_TOOL: ToolDefinition = {\n\tname: \"LiopMeshStatus\",\n\tdescription:\n\t\t\"LiopMeshStatus: Returns the current dynamic diagnostic status of the Zero-Trust Neural Mesh.\",\n\tinputSchema: {\n\t\ttype: \"object\",\n\t\tproperties: {},\n\t\tadditionalProperties: false,\n\t},\n};\n\n/**\n * Resolves a full libp2p multiaddr (with PeerID) from a LIOP node's\n * HTTP health endpoint.\n */\nasync function resolveBootstrapFromUrl(url: string): Promise<string | null> {\n\ttry {\n\t\tconst healthUrl = url.endsWith(\"/health\") ? url : `${url}/health`;\n\t\tconst response = await fetch(healthUrl, {\n\t\t\theaders: { Accept: \"application/json\" },\n\t\t\tsignal: AbortSignal.timeout(10000),\n\t\t});\n\t\tif (!response.ok) return null;\n\n\t\tconst data = (await response.json()) as {\n\t\t\tmesh?: { multiaddrs?: string[]; peerId?: string };\n\t\t};\n\t\tif (!data.mesh?.multiaddrs?.length || !data.mesh?.peerId) return null;\n\n\t\tconst tcpAddr = data.mesh.multiaddrs.find(\n\t\t\t(a: string) =>\n\t\t\t\ta.includes(\"/tcp/\") &&\n\t\t\t\t!a.includes(\"/ws\") &&\n\t\t\t\t!a.includes(\"/ip4/127.0.0.1/\"),\n\t\t);\n\t\tif (!tcpAddr) return null;\n\n\t\tlet resolved = shouldEnableDockerMap()\n\t\t\t? industrialAddressMapper(tcpAddr)\n\t\t\t: tcpAddr;\n\t\tif (!resolved || resolved === tcpAddr) {\n\t\t\tconst urlHost = new URL(url).hostname;\n\t\t\tresolved = tcpAddr.replace(/\\/ip4\\/[^/]+/, `/ip4/${urlHost}`);\n\t\t}\n\n\t\tif (!resolved) return null;\n\t\tresolved += resolved.includes(\"/p2p/\") ? \"\" : `/p2p/${data.mesh.peerId}`;\n\t\treturn resolved;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Normalizes a bootstrap multiaddr string to 127.0.0.1 for local Docker bridge resilience.\n */\nfunction normalizeBootstrap(addr: string): string {\n\tconst trimmed = addr.trim();\n\tconst dockerIpRegex =\n\t\t/\\/ip4\\/172\\.(1[6-9]|2[0-9]|3[0-1])\\.[0-9]{1,3}\\.[0-9]{1,3}/;\n\tconst loopbackRegex = /\\/ip4\\/127\\.0\\.0\\.1/;\n\tconst physicalIpRegex = /\\/ip4\\/192\\.168\\.[0-9]{1,3}\\.[0-9]{1,3}/;\n\n\tif (\n\t\tdockerIpRegex.test(trimmed) ||\n\t\tloopbackRegex.test(trimmed) ||\n\t\tphysicalIpRegex.test(trimmed)\n\t) {\n\t\tconst targetIp = \"127.0.0.1\";\n\t\tconst normalized = trimmed\n\t\t\t.replace(dockerIpRegex, `/ip4/${targetIp}`)\n\t\t\t.replace(loopbackRegex, `/ip4/${targetIp}`)\n\t\t\t.replace(physicalIpRegex, `/ip4/${targetIp}`);\n\n\t\tif (normalized !== trimmed) {\n\t\t\tlog.info(\n\t\t\t\t`[LIOP-Agent] 🔄 Local Routing Hack → Forced 127.0.0.1: ${normalized}`,\n\t\t\t);\n\t\t}\n\t\treturn normalized;\n\t}\n\n\treturn trimmed;\n}\n\n/**\n * Maps Docker-internal IPs to host-published ports for local environments.\n * Supports both legacy demo ports (13001-13005) and production tier ports (15001-15041).\n */\nfunction industrialAddressMapper(addr: string): string | null {\n\t// Production Multi-Tier Mappings\n\tif (addr.includes(\"/ip4/172.23.0.10\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.23\\.0\\.10\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/15001\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.23.0.20\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.23\\.0\\.20\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/15011\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.21.0.13\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.21\\.0\\.13\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/15031\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.21.0.14\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.21\\.0\\.14\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/15041\",\n\t\t);\n\n\t// Legacy Demo Cluster Mappings\n\tif (addr.includes(\"/ip4/172.20.0.10\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.20\\.0\\.10\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/13001\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.20.0.11\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.20\\.0\\.11\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/13003\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.20.0.12\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.20\\.0\\.12\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/13004\",\n\t\t);\n\tif (addr.includes(\"/ip4/172.20.0.13\"))\n\t\treturn addr.replace(\n\t\t\t/\\/ip4\\/172\\.20\\.0\\.13\\/tcp\\/[0-9]+/,\n\t\t\t\"/ip4/127.0.0.1/tcp/13005\",\n\t\t);\n\n\t// Drop container-internal loopbacks\n\tif (\n\t\taddr.includes(\"/ip4/127.0.0.1/tcp/4000\") ||\n\t\taddr.includes(\"/ip4/127.0.0.1/tcp/3000\")\n\t) {\n\t\treturn null;\n\t}\n\n\treturn addr;\n}\n\nfunction isDockerDemoHost(urlStr: string): boolean {\n\ttry {\n\t\tconst u = new URL(urlStr);\n\t\treturn (\n\t\t\t(u.hostname === \"127.0.0.1\" || u.hostname === \"localhost\") &&\n\t\t\t(u.port === \"13000\" ||\n\t\t\t\tu.port === \"13001\" ||\n\t\t\t\tu.port === \"15000\" ||\n\t\t\t\tu.port === \"15018\")\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction shouldEnableDockerMap(): boolean {\n\treturn (\n\t\tprocess.env.NODE_ENV === \"development\" ||\n\t\tprocess.env.NODE_ENV === \"test\" ||\n\t\tprocess.env.LIOP_DOCKER_MAP === \"true\" ||\n\t\tprocess.env.LIOP_DEV_MODE === \"true\" ||\n\t\t(!!process.env.LIOP_NEXUS_URL &&\n\t\t\tisDockerDemoHost(process.env.LIOP_NEXUS_URL))\n\t);\n}\n\n/**\n * Discovers P2P bootstrap nodes through physical beacons, env vars, and URL discovery.\n */\nasync function resolveBootstrapNodes(liopDir: string): Promise<string[]> {\n\tlet bootstrapNodes: string[] = [];\n\tconst args = process.argv.slice(2);\n\tif (args.length > 0) {\n\t\tbootstrapNodes = args.filter((a) => a.startsWith(\"/\"));\n\t}\n\n\tif (process.env.LIOP_NEXUS_URL || process.env.LIOP_BLG_URL) {\n\t\tconst targetUrl = process.env.LIOP_NEXUS_URL || process.env.LIOP_BLG_URL;\n\t\tif (targetUrl) {\n\t\t\tconst resolved = await resolveBootstrapFromUrl(targetUrl);\n\t\t\tif (resolved) {\n\t\t\t\tconst normalized = normalizeBootstrap(resolved);\n\t\t\t\tif (!bootstrapNodes.includes(normalized)) {\n\t\t\t\t\tbootstrapNodes.push(normalized);\n\t\t\t\t\tlog.info(\n\t\t\t\t\t\t`[LIOP-Agent] ✅ Added bootstrap from URL discovery: ${normalized}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (bootstrapNodes.length === 0) {\n\t\tconst searchDirs = [\n\t\t\tprocess.cwd(),\n\t\t\tpath.join(process.cwd(), \"tests/infra/nexus-data\"),\n\t\t\tliopDir,\n\t\t\tpath.join(\n\t\t\t\tpath\n\t\t\t\t\t.dirname(new URL(import.meta.url).pathname)\n\t\t\t\t\t.replace(/^\\/([A-Z]:)/, \"$1\"),\n\t\t\t\t\"../../tests/infra/nexus-data\",\n\t\t\t),\n\t\t];\n\n\t\tfor (const dir of searchDirs) {\n\t\t\ttry {\n\t\t\t\tif (fs.existsSync(dir)) {\n\t\t\t\t\tconst files = fs.readdirSync(dir);\n\t\t\t\t\tconst multiaddrFiles = files.filter((f) => f.endsWith(\".multiaddr\"));\n\n\t\t\t\t\tfor (const file of multiaddrFiles) {\n\t\t\t\t\t\tconst filePath = path.join(dir, file);\n\t\t\t\t\t\tconst addr = fs.readFileSync(filePath, \"utf8\").trim();\n\t\t\t\t\t\tif (addr) {\n\t\t\t\t\t\t\tconst normalized = normalizeBootstrap(addr);\n\t\t\t\t\t\t\tif (!bootstrapNodes.includes(normalized)) {\n\t\t\t\t\t\t\t\tbootstrapNodes.push(normalized);\n\t\t\t\t\t\t\t\tlog.info(`[LIOP-Agent] ✅ Loaded beacon: ${file} from ${dir}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (bootstrapNodes.length > 0) break;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t/* ignore */\n\t\t\t}\n\t\t}\n\t}\n\n\tif (bootstrapNodes.length === 0 && process.env.LIOP_BOOTSTRAP) {\n\t\tbootstrapNodes.push(process.env.LIOP_BOOTSTRAP.trim());\n\t}\n\n\treturn bootstrapNodes.filter((addr) => {\n\t\ttry {\n\t\t\tmultiaddr(addr);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t});\n}\n\n/**\n * Dispatches an MCP request to an HTTP Gateway (BLG) with automatic token negotiation.\n */\nasync function forwardToGateway(\n\tmcpEndpoint: string,\n\trequest: McpRequest,\n\ttokenManager: TokenManager,\n): Promise<McpResponse> {\n\tconst send = async (token?: string) => {\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t};\n\t\tif (token) {\n\t\t\theaders.Authorization = `Bearer ${token}`;\n\t\t}\n\t\tif (request.method) {\n\t\t\theaders[\"Mcp-Method\"] = request.method;\n\t\t}\n\t\tconst params = request.params as { name?: string } | undefined;\n\t\tif (params?.name) {\n\t\t\theaders[\"Mcp-Name\"] = params.name;\n\t\t}\n\n\t\treturn await fetch(mcpEndpoint, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody: JSON.stringify(request),\n\t\t\tsignal: AbortSignal.timeout(30000),\n\t\t});\n\t};\n\n\tlet token: string | undefined;\n\ttry {\n\t\ttoken = await tokenManager.getToken();\n\t} catch (err) {\n\t\tlog.warn(\n\t\t\t`[LIOP-Agent] Token acquisition warning: ${err instanceof Error ? err.message : String(err)}`,\n\t\t);\n\t}\n\n\tlet response = await send(token);\n\n\t// If 401 Unauthorized, invalidate token and retry once\n\tif (response.status === 401 && token) {\n\t\tlog.info(\n\t\t\t\"[LIOP-Agent] 🔄 401 received from Gateway. Refreshing token and retrying...\",\n\t\t);\n\t\ttokenManager.invalidate();\n\t\ttry {\n\t\t\ttoken = await tokenManager.getToken();\n\t\t\tresponse = await send(token);\n\t\t} catch {\n\t\t\t/* fallback to original error handling */\n\t\t}\n\t}\n\n\tif (!response.ok) {\n\t\tconst errorBody = await response.text();\n\t\tlet parsedError: Record<string, unknown> | null = null;\n\t\ttry {\n\t\t\tparsedError = JSON.parse(errorBody);\n\t\t} catch {\n\t\t\t// not json\n\t\t}\n\n\t\tconst errorObj = parsedError?.error as\n\t\t\t| { code?: number; message?: string }\n\t\t\t| undefined;\n\t\treturn {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid: request.id,\n\t\t\terror: {\n\t\t\t\tcode: errorObj?.code ?? -32603,\n\t\t\t\tmessage:\n\t\t\t\t\terrorObj?.message ??\n\t\t\t\t\t`Gateway returned HTTP ${response.status}: ${errorBody}`,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn (await response.json()) as McpResponse;\n}\n\n/**\n * Operates in Mode 1: GATEWAY MODE.\n * Ultra-lightweight, sub-50ms startup, zero libp2p overhead.\n */\nasync function runGatewayMode(\n\tgateway: GatewayTopologyInfo,\n\ttokenManager: TokenManager,\n\troutingTable: RoutingTable,\n) {\n\tlog.info(\n\t\t`[LIOP-Agent] 🛡️ Running in ADAPTIVE GATEWAY MODE -> ${gateway.mcpEndpoint}`,\n\t);\n\n\t// Register known initial tools\n\troutingTable.registerLocalTool(LIOP_MESH_STATUS_TOOL);\n\troutingTable.registerGatewayTools(\n\t\tgateway.tools.map((t) => ({ name: t })),\n\t\tgateway.mcpEndpoint,\n\t);\n\n\t// Periodic tool refresh from /health to notify Claude of any changes\n\tlet lastToolCount = gateway.tools.length;\n\tconst pollInterval = setInterval(async () => {\n\t\ttry {\n\t\t\tconst res = await fetch(gateway.healthEndpoint, {\n\t\t\t\theaders: { Accept: \"application/json\" },\n\t\t\t\tsignal: AbortSignal.timeout(4000),\n\t\t\t});\n\t\t\tif (res.ok) {\n\t\t\t\tconst data = (await res.json()) as { tools?: string[] };\n\t\t\t\tif (data.tools && data.tools.length !== lastToolCount) {\n\t\t\t\t\tlog.info(\n\t\t\t\t\t\t`[LIOP-Agent] Gateway tools topology updated (${lastToolCount} -> ${data.tools.length})`,\n\t\t\t\t\t);\n\t\t\t\t\tlastToolCount = data.tools.length;\n\t\t\t\t\troutingTable.registerGatewayTools(\n\t\t\t\t\t\tdata.tools.map((t) => ({ name: t })),\n\t\t\t\t\t\tgateway.mcpEndpoint,\n\t\t\t\t\t);\n\t\t\t\t\tprocess.stdout.write(\n\t\t\t\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/tools/list_changed\"}\\n`,\n\t\t\t\t\t);\n\t\t\t\t\tprocess.stdout.write(\n\t\t\t\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/resources/list_changed\"}\\n`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// ignore polling errors\n\t\t}\n\t}, 15000);\n\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\tterminal: false,\n\t});\n\n\tprocess.stdout.on(\"error\", (err: Error & { code?: string }) => {\n\t\tif (err.code === \"EPIPE\") {\n\t\t\tclearInterval(pollInterval);\n\t\t\tprocess.exit(0);\n\t\t}\n\t});\n\n\trl.on(\"line\", async (line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) return;\n\n\t\tlet request: McpRequest;\n\t\ttry {\n\t\t\trequest = JSON.parse(trimmed);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { id, method } = request;\n\n\t\tif (method === \"server/discover\") {\n\t\t\tconst discoverResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\tsupportedVersions: [\"2026-07-28\", \"2025-11-25\"],\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\ttools: { listChanged: true },\n\t\t\t\t\t\tresources: { listChanged: true, subscribe: true },\n\t\t\t\t\t\tprompts: { listChanged: true },\n\t\t\t\t\t},\n\t\t\t\t\tserverInfo: {\n\t\t\t\t\t\tname: \"liop-adaptive-agent\",\n\t\t\t\t\t\tversion: \"2.5.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(discoverResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"initialize\") {\n\t\t\tconst clientVersion =\n\t\t\t\t(\n\t\t\t\t\trequest.params as {\n\t\t\t\t\t\tprotocolVersion?: string;\n\t\t\t\t\t\t_meta?: { \"io.modelcontextprotocol/protocolVersion\"?: string };\n\t\t\t\t\t}\n\t\t\t\t)?.protocolVersion ??\n\t\t\t\t(\n\t\t\t\t\trequest.params as {\n\t\t\t\t\t\t_meta?: { \"io.modelcontextprotocol/protocolVersion\"?: string };\n\t\t\t\t\t}\n\t\t\t\t)?._meta?.[\"io.modelcontextprotocol/protocolVersion\"];\n\t\t\tconst protocolVersion =\n\t\t\t\tclientVersion === \"2026-07-28\" ? \"2026-07-28\" : \"2025-11-25\";\n\n\t\t\tconst initResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tprotocolVersion,\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\ttools: { listChanged: true },\n\t\t\t\t\t\tresources: { listChanged: true, subscribe: true },\n\t\t\t\t\t\tprompts: { listChanged: true },\n\t\t\t\t\t},\n\t\t\t\t\tserverInfo: {\n\t\t\t\t\t\tname: \"liop-adaptive-agent\",\n\t\t\t\t\t\tversion: \"2.5.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(initResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tmethod === \"notifications/initialized\" ||\n\t\t\tmethod === \"notifications/cancelled\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"ping\") {\n\t\t\tprocess.stdout.write(\n\t\t\t\t`${JSON.stringify({ jsonrpc: \"2.0\", id, result: {} })}\\n`,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"resources/templates/list\") {\n\t\t\tconst templatesResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\tttlMs: 300_000,\n\t\t\t\t\tcacheScope: \"public\",\n\t\t\t\t\tresourceTemplates: [],\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(templatesResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"subscriptions/listen\") {\n\t\t\tconst listenResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(listenResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"tools/call\") {\n\t\t\tconst params = request.params as\n\t\t\t\t| { name?: string; arguments?: Record<string, unknown> }\n\t\t\t\t| undefined;\n\t\t\tif (params?.arguments) {\n\t\t\t\tparams.arguments = normalizeToolArguments(params.arguments);\n\t\t\t}\n\t\t\tif (params?.name) {\n\t\t\t\tconst canonicalName = TOOL_ALIASES[params.name] || params.name;\n\t\t\t\tparams.name = canonicalName;\n\t\t\t}\n\t\t\tif (params?.name === \"LiopMeshStatus\") {\n\t\t\t\tconst statusResponse: McpResponse = {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\ttext: JSON.stringify({\n\t\t\t\t\t\t\t\t\tmode: \"adaptive-gateway\",\n\t\t\t\t\t\t\t\t\tgatewayUrl: gateway.baseUrl,\n\t\t\t\t\t\t\t\t\ttier: gateway.tier,\n\t\t\t\t\t\t\t\t\ttoolsAvailable: routingTable.getAllToolDefinitions().length,\n\t\t\t\t\t\t\t\t\tauthenticated: true,\n\t\t\t\t\t\t\t\t\tstatus: \"ONLINE\",\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tprocess.stdout.write(`${JSON.stringify(statusResponse)}\\n`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst response = await forwardToGateway(\n\t\t\t\tgateway.mcpEndpoint,\n\t\t\t\trequest,\n\t\t\t\ttokenManager,\n\t\t\t);\n\n\t\t\t// Inject LiopMeshStatus into tools/list if gateway does not list it\n\t\t\tif (\n\t\t\t\tmethod === \"tools/list\" &&\n\t\t\t\tresponse.result &&\n\t\t\t\ttypeof response.result === \"object\"\n\t\t\t) {\n\t\t\t\tconst resObj = response.result as Record<string, unknown>;\n\t\t\t\tconst toolsList = resObj.tools as ToolDefinition[] | undefined;\n\t\t\t\tif (Array.isArray(toolsList)) {\n\t\t\t\t\tconst hasStatus = toolsList.some((t) => t.name === \"LiopMeshStatus\");\n\t\t\t\t\tif (!hasStatus) {\n\t\t\t\t\t\ttoolsList.unshift(LIOP_MESH_STATUS_TOOL);\n\t\t\t\t\t}\n\t\t\t\t\t// Expose legacy aliases for full backward compatibility\n\t\t\t\t\tfor (const [alias, target] of Object.entries(TOOL_ALIASES)) {\n\t\t\t\t\t\tconst targetDef = toolsList.find((t) => t.name === target);\n\t\t\t\t\t\tif (targetDef && !toolsList.some((t) => t.name === alias)) {\n\t\t\t\t\t\t\ttoolsList.push({\n\t\t\t\t\t\t\t\t...targetDef,\n\t\t\t\t\t\t\t\tname: alias,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t`[Alias -> ${target}] ${targetDef.description || \"\"}`.trim(),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Update routing table with descriptions and schemas\n\t\t\t\t\troutingTable.registerGatewayTools(toolsList, gateway.mcpEndpoint);\n\t\t\t\t}\n\n\t\t\t\tif (!isLegacyRequest(request)) {\n\t\t\t\t\tif (!resObj.resultType) {\n\t\t\t\t\t\tresObj.resultType = \"complete\";\n\t\t\t\t\t}\n\t\t\t\t\tif (!resObj.ttlMs) {\n\t\t\t\t\t\tresObj.ttlMs = 300_000;\n\t\t\t\t\t}\n\t\t\t\t\tif (!resObj.cacheScope) {\n\t\t\t\t\t\tresObj.cacheScope = \"public\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprocess.stdout.write(`${JSON.stringify(response)}\\n`);\n\t\t} catch (err) {\n\t\t\t// Fallback resilience for tools/list\n\t\t\tif (method === \"tools/list\") {\n\t\t\t\tconst isLegacy = isLegacyRequest(request);\n\t\t\t\tconst fallbackResult = isLegacy\n\t\t\t\t\t? { tools: routingTable.getAllToolDefinitions() }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\t\t\tttlMs: 300_000,\n\t\t\t\t\t\t\tcacheScope: \"public\",\n\t\t\t\t\t\t\ttools: routingTable.getAllToolDefinitions(),\n\t\t\t\t\t\t};\n\t\t\t\tconst fallbackResponse: McpResponse = {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\tresult: fallbackResult,\n\t\t\t\t};\n\t\t\t\tprocess.stdout.write(`${JSON.stringify(fallbackResponse)}\\n`);\n\t\t\t} else {\n\t\t\t\tconst errResponse: McpResponse = {\n\t\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\t\tid,\n\t\t\t\t\terror: {\n\t\t\t\t\t\tcode: -32603,\n\t\t\t\t\t\tmessage: `Forwarding failed: ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tprocess.stdout.write(`${JSON.stringify(errResponse)}\\n`);\n\t\t\t}\n\t\t}\n\t});\n\n\trl.on(\"close\", () => {\n\t\tclearInterval(pollInterval);\n\t\tprocess.exit(0);\n\t});\n}\n\n/**\n * Operates in Mode 2: MESH MODE.\n * Preserves full libp2p Kademlia DHT P2P discovery for decentralized environments.\n */\nasync function runMeshMode(mesh: MeshTopologyInfo) {\n\tlog.info(\n\t\t`[LIOP-Agent] 🌐 Running in P2P MESH MODE (${mesh.bootstrapNodes.length} bootstraps)`,\n\t);\n\n\tconst liopServer = new LiopServer({\n\t\tname: \"@nekzus/liop\",\n\t\tversion: \"2.5.0\",\n\t});\n\tliopServer.enableZeroShotAutonomy();\n\n\tconst meshNode = new MeshNode({\n\t\tidentityPath: mesh.identityPath,\n\t\tbootstrapNodes: mesh.bootstrapNodes,\n\t\taddressMapper: shouldEnableDockerMap()\n\t\t\t? industrialAddressMapper\n\t\t\t: undefined,\n\t});\n\n\tawait meshNode.start();\n\tconst router = new LiopMcpRouter(liopServer, meshNode);\n\n\trouter.onToolsChanged = () => {\n\t\tprocess.stdout.write(\n\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/tools/list_changed\"}\\n`,\n\t\t);\n\t\tprocess.stdout.write(\n\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/resources/list_changed\"}\\n`,\n\t\t);\n\t};\n\n\tsetTimeout(() => {\n\t\trouter.refreshManifestCache(true).catch(() => {});\n\t}, 2000);\n\n\tconst POLL_BASE_MS = 10_000;\n\tconst POLL_MAX_MS = 120_000;\n\tlet pollIntervalMs = POLL_BASE_MS;\n\n\tconst scheduleAdaptivePoll = () => {\n\t\tsetTimeout(async () => {\n\t\t\tconst prevSize = router.getCacheSize();\n\t\t\tawait router.refreshManifestCache(true).catch(() => {});\n\t\t\tconst newSize = router.getCacheSize();\n\n\t\t\tif (newSize !== prevSize) {\n\t\t\t\tpollIntervalMs = POLL_BASE_MS;\n\t\t\t} else {\n\t\t\t\tpollIntervalMs = Math.min(\n\t\t\t\t\tMath.round(pollIntervalMs * 1.5),\n\t\t\t\t\tPOLL_MAX_MS,\n\t\t\t\t);\n\t\t\t}\n\t\t\tscheduleAdaptivePoll();\n\t\t}, pollIntervalMs);\n\t};\n\tscheduleAdaptivePoll();\n\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\tterminal: false,\n\t});\n\n\tprocess.stdout.on(\"error\", (err: Error & { code?: string }) => {\n\t\tif (err.code === \"EPIPE\") process.exit(0);\n\t});\n\n\trl.on(\"line\", async (line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) return;\n\n\t\ttry {\n\t\t\tconst request = JSON.parse(trimmed) as McpRequest;\n\t\t\tif (request.method) {\n\t\t\t\tconst response = await router.dispatch(request);\n\t\t\t\tif (response) {\n\t\t\t\t\tprocess.stdout.write(`${JSON.stringify(response)}\\n`);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t/* ignore malformed lines */\n\t\t}\n\t});\n\n\trl.on(\"close\", () => process.exit(0));\n\tprocess.on(\"SIGINT\", async () => {\n\t\tawait meshNode.stop();\n\t\tprocess.exit(0);\n\t});\n}\n\n/**\n * Operates in Mode 3: HYBRID MODE.\n * Serves tools via Gateway and Mesh concurrently with per-tool dynamic routing.\n */\nasync function runHybridMode(\n\ttopology: TopologyProbeResult,\n\ttokenManager: TokenManager,\n\troutingTable: RoutingTable,\n) {\n\tconst gateway = topology.gateway;\n\tconst mesh = topology.mesh;\n\tif (!gateway || !mesh) {\n\t\tif (gateway) return runGatewayMode(gateway, tokenManager, routingTable);\n\t\tif (mesh) return runMeshMode(mesh);\n\t\treturn;\n\t}\n\n\tlog.info(\n\t\t`[LIOP-Agent] ⚡ Running in HYBRID MODE (Gateway: ${gateway.baseUrl} + Mesh P2P)`,\n\t);\n\n\t// Setup Gateway tools immediately for fast startup\n\troutingTable.registerLocalTool(LIOP_MESH_STATUS_TOOL);\n\troutingTable.registerGatewayTools(\n\t\tgateway.tools.map((t) => ({ name: t })),\n\t\tgateway.mcpEndpoint,\n\t);\n\n\t// Start P2P Mesh in background (Lazy Initialization)\n\tlet meshNode: MeshNode | null = null;\n\tlet router: LiopMcpRouter | null = null;\n\n\tconst initMeshPromise = (async () => {\n\t\ttry {\n\t\t\tconst liopServer = new LiopServer({\n\t\t\t\tname: \"@nekzus/liop-hybrid\",\n\t\t\t\tversion: \"2.5.0\",\n\t\t\t});\n\t\t\tliopServer.enableZeroShotAutonomy();\n\n\t\t\tmeshNode = new MeshNode({\n\t\t\t\tidentityPath: mesh.identityPath,\n\t\t\t\tbootstrapNodes: mesh.bootstrapNodes,\n\t\t\t\taddressMapper: shouldEnableDockerMap()\n\t\t\t\t\t? industrialAddressMapper\n\t\t\t\t\t: undefined,\n\t\t\t});\n\t\t\tawait meshNode.start();\n\t\t\trouter = new LiopMcpRouter(liopServer, meshNode);\n\n\t\t\trouter.onToolsChanged = () => {\n\t\t\t\tprocess.stdout.write(\n\t\t\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/tools/list_changed\"}\\n`,\n\t\t\t\t);\n\t\t\t\tprocess.stdout.write(\n\t\t\t\t\t`{\"jsonrpc\":\"2.0\",\"method\":\"notifications/resources/list_changed\"}\\n`,\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tawait router.refreshManifestCache(true).catch(() => {});\n\t\t\tlog.info(\"[LIOP-Agent] ✅ Background P2P Mesh initialization completed.\");\n\t\t} catch (err) {\n\t\t\tlog.warn(\n\t\t\t\t`[LIOP-Agent] Background Mesh init warning: ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t);\n\t\t}\n\t})();\n\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\tterminal: false,\n\t});\n\n\tprocess.stdout.on(\"error\", (err: Error & { code?: string }) => {\n\t\tif (err.code === \"EPIPE\") process.exit(0);\n\t});\n\n\trl.on(\"line\", async (line) => {\n\t\tconst trimmed = line.trim();\n\t\tif (!trimmed) return;\n\n\t\tlet request: McpRequest;\n\t\ttry {\n\t\t\trequest = JSON.parse(trimmed);\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { id, method } = request;\n\n\t\tif (method === \"server/discover\") {\n\t\t\tconst discoverResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\tsupportedVersions: [\"2026-07-28\", \"2025-11-25\"],\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\ttools: { listChanged: true },\n\t\t\t\t\t\tresources: { listChanged: true, subscribe: true },\n\t\t\t\t\t\tprompts: { listChanged: true },\n\t\t\t\t\t},\n\t\t\t\t\tserverInfo: {\n\t\t\t\t\t\tname: \"liop-hybrid-agent\",\n\t\t\t\t\t\tversion: \"2.5.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(discoverResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"initialize\") {\n\t\t\tconst clientVersion =\n\t\t\t\t(\n\t\t\t\t\trequest.params as {\n\t\t\t\t\t\tprotocolVersion?: string;\n\t\t\t\t\t\t_meta?: { \"io.modelcontextprotocol/protocolVersion\"?: string };\n\t\t\t\t\t}\n\t\t\t\t)?.protocolVersion ??\n\t\t\t\t(\n\t\t\t\t\trequest.params as {\n\t\t\t\t\t\t_meta?: { \"io.modelcontextprotocol/protocolVersion\"?: string };\n\t\t\t\t\t}\n\t\t\t\t)?._meta?.[\"io.modelcontextprotocol/protocolVersion\"];\n\t\t\tconst protocolVersion =\n\t\t\t\tclientVersion === \"2026-07-28\" ? \"2026-07-28\" : \"2025-11-25\";\n\n\t\t\tconst initResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tprotocolVersion,\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\ttools: { listChanged: true },\n\t\t\t\t\t\tresources: { listChanged: true, subscribe: true },\n\t\t\t\t\t\tprompts: { listChanged: true },\n\t\t\t\t\t},\n\t\t\t\t\tserverInfo: {\n\t\t\t\t\t\tname: \"liop-hybrid-agent\",\n\t\t\t\t\t\tversion: \"2.5.0\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(initResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tmethod === \"notifications/initialized\" ||\n\t\t\tmethod === \"notifications/cancelled\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"ping\") {\n\t\t\tprocess.stdout.write(\n\t\t\t\t`${JSON.stringify({ jsonrpc: \"2.0\", id, result: {} })}\\n`,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"resources/templates/list\") {\n\t\t\tconst templatesResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\tttlMs: 300_000,\n\t\t\t\t\tcacheScope: \"public\",\n\t\t\t\t\tresourceTemplates: [],\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(templatesResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"subscriptions/listen\") {\n\t\t\tconst listenResponse: McpResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid,\n\t\t\t\tresult: {\n\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t},\n\t\t\t};\n\t\t\tprocess.stdout.write(`${JSON.stringify(listenResponse)}\\n`);\n\t\t\treturn;\n\t\t}\n\n\t\tif (method === \"tools/call\") {\n\t\t\tconst params = request.params as\n\t\t\t\t| { name?: string; arguments?: Record<string, unknown> }\n\t\t\t\t| undefined;\n\t\t\tif (params?.arguments) {\n\t\t\t\tparams.arguments = normalizeToolArguments(params.arguments);\n\t\t\t}\n\t\t\tconst rawToolName = params?.name || \"\";\n\t\t\tconst canonicalToolName = TOOL_ALIASES[rawToolName] || rawToolName;\n\t\t\tif (params?.name) {\n\t\t\t\tparams.name = canonicalToolName;\n\t\t\t}\n\t\t\tconst toolName = canonicalToolName;\n\n\t\t\tconst route = routingTable.resolve(toolName);\n\t\t\tif (route?.provider === \"http-gateway\") {\n\t\t\t\tconst start = Date.now();\n\t\t\t\ttry {\n\t\t\t\t\tconst res = await forwardToGateway(\n\t\t\t\t\t\tgateway.mcpEndpoint,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\ttokenManager,\n\t\t\t\t\t);\n\t\t\t\t\troutingTable.recordSuccess(toolName, Date.now() - start);\n\t\t\t\t\tprocess.stdout.write(`${JSON.stringify(res)}\\n`);\n\t\t\t\t\treturn;\n\t\t\t\t} catch (_err) {\n\t\t\t\t\troutingTable.recordFailure(toolName);\n\t\t\t\t\tlog.warn(\n\t\t\t\t\t\t`[LIOP-Agent] Gateway call failed for '${toolName}'. Checking P2P fallback...`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// P2P fallback or native P2P route\n\t\t\tawait initMeshPromise;\n\t\t\tif (router) {\n\t\t\t\tconst res = await router.dispatch(request);\n\t\t\t\tif (res) process.stdout.write(`${JSON.stringify(res)}\\n`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// By default, query gateway for tools/list and combine with mesh\n\t\tif (method === \"tools/list\") {\n\t\t\tlet gatewayTools: ToolDefinition[] = [];\n\t\t\ttry {\n\t\t\t\tconst gwRes = await forwardToGateway(\n\t\t\t\t\tgateway.mcpEndpoint,\n\t\t\t\t\trequest,\n\t\t\t\t\ttokenManager,\n\t\t\t\t);\n\t\t\t\tconst resObj = gwRes.result as { tools?: ToolDefinition[] } | undefined;\n\t\t\t\tif (Array.isArray(resObj?.tools)) {\n\t\t\t\t\tgatewayTools = resObj.tools;\n\t\t\t\t\troutingTable.registerGatewayTools(gatewayTools, gateway.mcpEndpoint);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tgatewayTools = routingTable.getAllToolDefinitions();\n\t\t\t}\n\n\t\t\tlet meshTools: ToolDefinition[] = [];\n\t\t\tif (router) {\n\t\t\t\tconst meshRes = await router.dispatch(request);\n\t\t\t\tconst meshObj = meshRes?.result as\n\t\t\t\t\t| { tools?: ToolDefinition[] }\n\t\t\t\t\t| undefined;\n\t\t\t\tif (Array.isArray(meshObj?.tools)) {\n\t\t\t\t\tmeshTools = meshObj.tools;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Merge distinct tools\n\t\t\tconst toolMap = new Map<string, ToolDefinition>();\n\t\t\ttoolMap.set(\"LiopMeshStatus\", LIOP_MESH_STATUS_TOOL);\n\t\t\tfor (const t of gatewayTools) toolMap.set(t.name, t);\n\t\t\tfor (const t of meshTools)\n\t\t\t\tif (!toolMap.has(t.name)) toolMap.set(t.name, t);\n\n\t\t\t// Expose legacy aliases for full backward compatibility\n\t\t\tfor (const [alias, target] of Object.entries(TOOL_ALIASES)) {\n\t\t\t\tconst targetDef = toolMap.get(target);\n\t\t\t\tif (targetDef && !toolMap.has(alias)) {\n\t\t\t\t\ttoolMap.set(alias, {\n\t\t\t\t\t\t...targetDef,\n\t\t\t\t\t\tname: alias,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t`[Alias -> ${target}] ${targetDef.description || \"\"}`.trim(),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst merged = Array.from(toolMap.values()).sort((a, b) =>\n\t\t\t\ta.name.localeCompare(b.name),\n\t\t\t);\n\n\t\t\tconst isLegacy = isLegacyRequest(request);\n\t\t\tconst toolsResult = isLegacy\n\t\t\t\t? { tools: merged }\n\t\t\t\t: {\n\t\t\t\t\t\tresultType: \"complete\",\n\t\t\t\t\t\tttlMs: 300_000,\n\t\t\t\t\t\tcacheScope: \"public\",\n\t\t\t\t\t\ttools: merged,\n\t\t\t\t\t};\n\n\t\t\tprocess.stdout.write(\n\t\t\t\t`${JSON.stringify({ jsonrpc: \"2.0\", id, result: toolsResult })}\\n`,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// Other methods forward to gateway first, then mesh\n\t\ttry {\n\t\t\tconst res = await forwardToGateway(\n\t\t\t\tgateway.mcpEndpoint,\n\t\t\t\trequest,\n\t\t\t\ttokenManager,\n\t\t\t);\n\t\t\tif (\n\t\t\t\t!isLegacyRequest(request) &&\n\t\t\t\tres.result &&\n\t\t\t\ttypeof res.result === \"object\"\n\t\t\t) {\n\t\t\t\tconst resObj = res.result as Record<string, unknown>;\n\t\t\t\tif (!resObj.resultType) {\n\t\t\t\t\tresObj.resultType = \"complete\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tprocess.stdout.write(`${JSON.stringify(res)}\\n`);\n\t\t} catch {\n\t\t\tawait initMeshPromise;\n\t\t\tif (router) {\n\t\t\t\tconst res = await router.dispatch(request);\n\t\t\t\tif (res) process.stdout.write(`${JSON.stringify(res)}\\n`);\n\t\t\t}\n\t\t}\n\t});\n\n\trl.on(\"close\", async () => {\n\t\tif (meshNode) await meshNode.stop();\n\t\tprocess.exit(0);\n\t});\n}\n\n/**\n * Main Entry Point\n */\nasync function main() {\n\t// Auto-Relaunch: Ensure system CA certificates are loaded for TLS compatibility\n\tif (\n\t\t(process.platform === \"win32\" || process.platform === \"darwin\") &&\n\t\t!process.execArgv.includes(\"--use-system-ca\") &&\n\t\t!(process.env.NODE_OPTIONS ?? \"\").includes(\"--use-system-ca\")\n\t) {\n\t\tconst { spawn } = await import(\"node:child_process\");\n\t\tconst child = spawn(\n\t\t\tprocess.execPath,\n\t\t\t[\"--use-system-ca\", ...process.argv.slice(1)],\n\t\t\t{ stdio: \"inherit\", env: process.env },\n\t\t);\n\t\tchild.on(\"exit\", (code) => process.exit(code ?? 1));\n\t\tchild.on(\"error\", () => process.exit(1));\n\t\tawait new Promise(() => {});\n\t\treturn;\n\t}\n\n\tconst buildTime = new Date().toISOString();\n\tlog.info(\n\t\t`[LIOP-Agent] 🚀 Version 2.5.0 (Adaptive Zero-Config) | Build: ${buildTime}`,\n\t);\n\n\tconst liopDir = path.join(os.homedir(), \".liop\");\n\tconst identityPath = path.join(liopDir, \"identity.json\");\n\tif (!fs.existsSync(liopDir)) {\n\t\tfs.mkdirSync(liopDir, { recursive: true });\n\t}\n\n\t// 1. Resolve candidate P2P bootstrap nodes\n\tconst bootstrapNodes = await resolveBootstrapNodes(liopDir);\n\n\t// 2. Execute Adaptive Topology Probe\n\tconst blgUrl = process.env.LIOP_BLG_URL;\n\tconst nexusUrl = process.env.LIOP_NEXUS_URL;\n\tconst clientId =\n\t\tprocess.env.LIOP_CLIENT_ID ||\n\t\tprocess.env.LIOP_OAUTH_CLIENT_ID ||\n\t\t\"liop-agent\";\n\tconst clientSecret =\n\t\tprocess.env.LIOP_CLIENT_SECRET ||\n\t\tprocess.env.LIOP_OAUTH_CLIENT_SECRET ||\n\t\t\"dev-secret-change-me\";\n\tconst staticToken = process.env.LIOP_TOKEN || process.env.LIOP_OAUTH_TOKEN;\n\n\tconst topology = await probeTopology({\n\t\tblgUrl,\n\t\tnexusUrl,\n\t\tclientId,\n\t\tclientSecret,\n\t\tstaticToken,\n\t\tbootstrapNodes,\n\t\tidentityPath,\n\t});\n\n\tconst routingTable = new RoutingTable();\n\tconst tokenManager = new TokenManager({\n\t\ttokenEndpoint:\n\t\t\ttopology.gateway?.tokenEndpoint ||\n\t\t\t`${nexusUrl || \"http://127.0.0.1:15000\"}/oidc/token`,\n\t\tclientId,\n\t\tclientSecret,\n\t\taudience: topology.gateway?.audience,\n\t\tscopes: topology.gateway?.scopes,\n\t\tstaticToken,\n\t});\n\n\t// 3. Dispatch by Mode\n\tswitch (topology.mode) {\n\t\tcase \"gateway\":\n\t\t\tif (!topology.gateway)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Topology probe indicated gateway mode without gateway info.\",\n\t\t\t\t);\n\t\t\tawait runGatewayMode(topology.gateway, tokenManager, routingTable);\n\t\t\tbreak;\n\t\tcase \"mesh\":\n\t\t\tif (!topology.mesh)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Topology probe indicated mesh mode without mesh info.\",\n\t\t\t\t);\n\t\t\tawait runMeshMode(topology.mesh);\n\t\t\tbreak;\n\t\tcase \"hybrid\":\n\t\t\tawait runHybridMode(topology, tokenManager, routingTable);\n\t\t\tbreak;\n\t}\n}\n\nmain().catch((err) => {\n\tlog.error(`[LIOP-Agent] Fatal Error: ${err.message}`);\n\tprocess.exit(1);\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"bridge.js"}