@hol-org/hashnet-mcp 1.0.1 → 1.0.3
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.
- package/dist/cli/up.js +26 -4
- package/dist/cli/up.js.map +1 -1
- package/package.json +27 -4
package/dist/cli/up.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
#!/usr/bin/env node
|
|
3
2
|
|
|
4
3
|
// src/cli/up.ts
|
|
5
4
|
import { spawnSync } from "child_process";
|
|
6
|
-
import { copyFileSync, existsSync } from "fs";
|
|
5
|
+
import { copyFileSync, existsSync, writeFileSync } from "fs";
|
|
7
6
|
import path from "path";
|
|
8
7
|
import { fileURLToPath } from "url";
|
|
9
8
|
var dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -25,6 +24,7 @@ var installOnly = Boolean(flags["install-only"]);
|
|
|
25
24
|
try {
|
|
26
25
|
ensureNodeVersion();
|
|
27
26
|
const packageManager = detectPackageManager();
|
|
27
|
+
ensurePnpmConfig();
|
|
28
28
|
installDependencies(packageManager);
|
|
29
29
|
ensureEnvFile();
|
|
30
30
|
if (installOnly) {
|
|
@@ -93,14 +93,36 @@ function commandExists(bin) {
|
|
|
93
93
|
}
|
|
94
94
|
function installDependencies(pm) {
|
|
95
95
|
console.log(`Installing dependencies with ${pm}...`);
|
|
96
|
-
const
|
|
96
|
+
const baseEnv = {
|
|
97
|
+
...process.env,
|
|
98
|
+
NODE_OPTIONS: process.env.NODE_OPTIONS ?? "--max-old-space-size=8192"
|
|
99
|
+
};
|
|
100
|
+
const npmArgs = ["install", "--legacy-peer-deps"];
|
|
101
|
+
const installResult = spawnSync(pm, pm === "pnpm" ? ["install"] : npmArgs, {
|
|
97
102
|
cwd: projectRoot,
|
|
98
|
-
stdio: "inherit"
|
|
103
|
+
stdio: "inherit",
|
|
104
|
+
env: baseEnv
|
|
99
105
|
});
|
|
100
106
|
if (installResult.status !== 0) {
|
|
101
107
|
throw new Error(`${pm} install failed.`);
|
|
102
108
|
}
|
|
103
109
|
}
|
|
110
|
+
function ensurePnpmConfig() {
|
|
111
|
+
const npmrcPath = path.join(projectRoot, ".npmrc");
|
|
112
|
+
if (existsSync(npmrcPath)) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const content = [
|
|
116
|
+
"node-linker=isolated",
|
|
117
|
+
"shamefully-hoist=false",
|
|
118
|
+
"strict-peer-dependencies=false",
|
|
119
|
+
"auto-install-peers=false",
|
|
120
|
+
"resolution-mode=lowest-direct",
|
|
121
|
+
"node-options=--max-old-space-size=8192",
|
|
122
|
+
"child-concurrency=4"
|
|
123
|
+
].join("\n");
|
|
124
|
+
writeFileSync(npmrcPath, content);
|
|
125
|
+
}
|
|
104
126
|
function ensureEnvFile() {
|
|
105
127
|
const envPath = path.join(projectRoot, ".env");
|
|
106
128
|
const examplePath = path.join(projectRoot, ".env.example");
|
package/dist/cli/up.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/up.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/cli/up.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport { copyFileSync, existsSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst dirname = path.dirname(fileURLToPath(import.meta.url));\nconst projectRoot = path.resolve(dirname, '../..');\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nif (!command || command === '--help' || command === '-h') {\n printHelp();\n process.exit(0);\n}\n\nif (command !== 'up') {\n console.error(`Unknown command: ${command}`);\n printHelp();\n process.exit(1);\n}\n\nconst flags = parseFlags(args.slice(1));\nconst transport = (flags.transport ?? 'stdio').toLowerCase();\nconst installOnly = Boolean(flags['install-only']);\n\ntry {\n ensureNodeVersion();\n const packageManager = detectPackageManager();\n ensurePnpmConfig();\n installDependencies(packageManager);\n ensureEnvFile();\n\n if (installOnly) {\n console.log('Dependencies installed. Skipping server launch (--install-only set).');\n process.exit(0);\n }\n\n runServer(packageManager, transport);\n} catch (error) {\n console.error(error instanceof Error ? error.message : error);\n process.exit(1);\n}\n\nfunction printHelp() {\n console.log(`Usage: npx @hol-org/hashnet-mcp up [options]\\n\\nOptions:\\n --transport <stdio|sse> Choose the transport to start (default: stdio)\\n --install-only Install deps and sync .env, then exit\\n -h, --help Show this help message`);\n}\n\nfunction parseFlags(values: string[]) {\n const cloned = [...values];\n return cloned.reduce<Record<string, any>>((acc, entry, index) => {\n if (entry.startsWith('--')) {\n const [key, inlineValue] = entry.split('=');\n const normalized = key.replace(/^--/, '');\n if (inlineValue !== undefined) {\n acc[normalized] = inlineValue;\n } else {\n const next = cloned[index + 1];\n if (next && !next.startsWith('--')) {\n acc[normalized] = next;\n cloned.splice(index + 1, 1);\n } else {\n acc[normalized] = true;\n }\n }\n }\n return acc;\n }, {});\n}\n\nfunction ensureNodeVersion() {\n const major = Number(process.versions.node.split('.')[0]);\n if (Number.isNaN(major) || major < 18) {\n throw new Error(`Node.js 18+ is required (detected ${process.versions.node}).`);\n }\n}\n\nfunction detectPackageManager(): 'pnpm' | 'npm' {\n if (commandExists('pnpm')) {\n return 'pnpm';\n }\n\n console.warn('pnpm not detected. Attempting to enable via corepack...');\n const enabled = spawnSync('corepack', ['enable', 'pnpm'], { stdio: 'inherit' });\n if (enabled.status === 0 && commandExists('pnpm')) {\n return 'pnpm';\n }\n\n console.warn('Falling back to npm. Install pnpm globally for faster installs.');\n return 'npm';\n}\n\nfunction commandExists(bin: string) {\n try {\n const result = spawnSync(bin, ['--version'], { stdio: 'ignore' });\n return result.status === 0;\n } catch {\n return false;\n }\n}\n\nfunction installDependencies(pm: 'pnpm' | 'npm') {\n console.log(`Installing dependencies with ${pm}...`);\n const baseEnv = {\n ...process.env,\n NODE_OPTIONS: process.env.NODE_OPTIONS ?? '--max-old-space-size=8192',\n };\n\n const npmArgs = ['install', '--legacy-peer-deps'];\n\n const installResult = spawnSync(pm, pm === 'pnpm' ? ['install'] : npmArgs, {\n cwd: projectRoot,\n stdio: 'inherit',\n env: baseEnv,\n });\n if (installResult.status !== 0) {\n throw new Error(`${pm} install failed.`);\n }\n}\n\nfunction ensurePnpmConfig() {\n const npmrcPath = path.join(projectRoot, '.npmrc');\n if (existsSync(npmrcPath)) {\n return;\n }\n\n const content = [\n 'node-linker=isolated',\n 'shamefully-hoist=false',\n 'strict-peer-dependencies=false',\n 'auto-install-peers=false',\n 'resolution-mode=lowest-direct',\n 'node-options=--max-old-space-size=8192',\n 'child-concurrency=4',\n ].join('\\n');\n\n writeFileSync(npmrcPath, content);\n}\n\nfunction ensureEnvFile() {\n const envPath = path.join(projectRoot, '.env');\n const examplePath = path.join(projectRoot, '.env.example');\n if (!existsSync(envPath) && existsSync(examplePath)) {\n copyFileSync(examplePath, envPath);\n console.log('Created .env from .env.example. Remember to fill in your credentials.');\n }\n}\n\nfunction runServer(pm: 'pnpm' | 'npm', transport: string) {\n if (!['stdio', 'sse'].includes(transport)) {\n throw new Error(`Unsupported transport \"${transport}\". Use stdio or sse.`);\n }\n const script = transport === 'stdio' ? 'dev:stdio' : 'dev:sse';\n console.log(`Starting ${transport} transport via ${pm} run ${script}...`);\n const runner = ['run', script];\n const child = spawnSync(pm, runner, {\n cwd: projectRoot,\n stdio: 'inherit',\n env: { ...process.env },\n });\n if (child.status !== 0) {\n throw new Error(`${pm} run ${script} exited with code ${child.status}`);\n }\n}\n"],"mappings":";;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,cAAc,YAAY,qBAAqB;AACxD,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAE9B,IAAM,UAAU,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC;AAC3D,IAAM,cAAc,KAAK,QAAQ,SAAS,OAAO;AAEjD,IAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,IAAM,UAAU,KAAK,CAAC;AAEtB,IAAI,CAAC,WAAW,YAAY,YAAY,YAAY,MAAM;AACxD,YAAU;AACV,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAI,YAAY,MAAM;AACpB,UAAQ,MAAM,oBAAoB,OAAO,EAAE;AAC3C,YAAU;AACV,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAM,QAAQ,WAAW,KAAK,MAAM,CAAC,CAAC;AACtC,IAAM,aAAa,MAAM,aAAa,SAAS,YAAY;AAC3D,IAAM,cAAc,QAAQ,MAAM,cAAc,CAAC;AAEjD,IAAI;AACF,oBAAkB;AAClB,QAAM,iBAAiB,qBAAqB;AAC5C,mBAAiB;AACjB,sBAAoB,cAAc;AAClC,gBAAc;AAEd,MAAI,aAAa;AACf,YAAQ,IAAI,sEAAsE;AAClF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,YAAU,gBAAgB,SAAS;AACrC,SAAS,OAAO;AACd,UAAQ,MAAM,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAC5D,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,YAAY;AACnB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,iDAAwP;AACtQ;AAEA,SAAS,WAAW,QAAkB;AACpC,QAAM,SAAS,CAAC,GAAG,MAAM;AACzB,SAAO,OAAO,OAA4B,CAAC,KAAK,OAAO,UAAU;AAC/D,QAAI,MAAM,WAAW,IAAI,GAAG;AAC1B,YAAM,CAAC,KAAK,WAAW,IAAI,MAAM,MAAM,GAAG;AAC1C,YAAM,aAAa,IAAI,QAAQ,OAAO,EAAE;AACxC,UAAI,gBAAgB,QAAW;AAC7B,YAAI,UAAU,IAAI;AAAA,MACpB,OAAO;AACL,cAAM,OAAO,OAAO,QAAQ,CAAC;AAC7B,YAAI,QAAQ,CAAC,KAAK,WAAW,IAAI,GAAG;AAClC,cAAI,UAAU,IAAI;AAClB,iBAAO,OAAO,QAAQ,GAAG,CAAC;AAAA,QAC5B,OAAO;AACL,cAAI,UAAU,IAAI;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AAEA,SAAS,oBAAoB;AAC3B,QAAM,QAAQ,OAAO,QAAQ,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AACxD,MAAI,OAAO,MAAM,KAAK,KAAK,QAAQ,IAAI;AACrC,UAAM,IAAI,MAAM,qCAAqC,QAAQ,SAAS,IAAI,IAAI;AAAA,EAChF;AACF;AAEA,SAAS,uBAAuC;AAC9C,MAAI,cAAc,MAAM,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,UAAQ,KAAK,yDAAyD;AACtE,QAAM,UAAU,UAAU,YAAY,CAAC,UAAU,MAAM,GAAG,EAAE,OAAO,UAAU,CAAC;AAC9E,MAAI,QAAQ,WAAW,KAAK,cAAc,MAAM,GAAG;AACjD,WAAO;AAAA,EACT;AAEA,UAAQ,KAAK,iEAAiE;AAC9E,SAAO;AACT;AAEA,SAAS,cAAc,KAAa;AAClC,MAAI;AACF,UAAM,SAAS,UAAU,KAAK,CAAC,WAAW,GAAG,EAAE,OAAO,SAAS,CAAC;AAChE,WAAO,OAAO,WAAW;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,oBAAoB,IAAoB;AAC/C,UAAQ,IAAI,gCAAgC,EAAE,KAAK;AACnD,QAAM,UAAU;AAAA,IACd,GAAG,QAAQ;AAAA,IACX,cAAc,QAAQ,IAAI,gBAAgB;AAAA,EAC5C;AAEA,QAAM,UAAU,CAAC,WAAW,oBAAoB;AAEhD,QAAM,gBAAgB,UAAU,IAAI,OAAO,SAAS,CAAC,SAAS,IAAI,SAAS;AAAA,IACzE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC;AACD,MAAI,cAAc,WAAW,GAAG;AAC9B,UAAM,IAAI,MAAM,GAAG,EAAE,kBAAkB;AAAA,EACzC;AACF;AAEA,SAAS,mBAAmB;AAC1B,QAAM,YAAY,KAAK,KAAK,aAAa,QAAQ;AACjD,MAAI,WAAW,SAAS,GAAG;AACzB;AAAA,EACF;AAEA,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AAEX,gBAAc,WAAW,OAAO;AAClC;AAEA,SAAS,gBAAgB;AACvB,QAAM,UAAU,KAAK,KAAK,aAAa,MAAM;AAC7C,QAAM,cAAc,KAAK,KAAK,aAAa,cAAc;AACzD,MAAI,CAAC,WAAW,OAAO,KAAK,WAAW,WAAW,GAAG;AACnD,iBAAa,aAAa,OAAO;AACjC,YAAQ,IAAI,uEAAuE;AAAA,EACrF;AACF;AAEA,SAAS,UAAU,IAAoBA,YAAmB;AACxD,MAAI,CAAC,CAAC,SAAS,KAAK,EAAE,SAASA,UAAS,GAAG;AACzC,UAAM,IAAI,MAAM,0BAA0BA,UAAS,sBAAsB;AAAA,EAC3E;AACA,QAAM,SAASA,eAAc,UAAU,cAAc;AACrD,UAAQ,IAAI,YAAYA,UAAS,kBAAkB,EAAE,QAAQ,MAAM,KAAK;AACxE,QAAM,SAAS,CAAC,OAAO,MAAM;AAC7B,QAAM,QAAQ,UAAU,IAAI,QAAQ;AAAA,IAClC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,KAAK,EAAE,GAAG,QAAQ,IAAI;AAAA,EACxB,CAAC;AACD,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI,MAAM,GAAG,EAAE,QAAQ,MAAM,qBAAqB,MAAM,MAAM,EAAE;AAAA,EACxE;AACF;","names":["transport"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hol-org/hashnet-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "FastMCP server exposing Hashgraph Online Registry Broker tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -48,9 +48,32 @@
|
|
|
48
48
|
"claude:install": "tsx scripts/install-claude-code.ts",
|
|
49
49
|
"cursor:install": "tsx scripts/install-cursor.ts"
|
|
50
50
|
},
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
51
|
+
"homepage": "https://hashgraphonline.com",
|
|
52
|
+
"funding": {
|
|
53
|
+
"type": "individual",
|
|
54
|
+
"url": "https://github.com/sponsors/hashgraph-online"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/hashgraph-online/hashnet-mcp-js/issues"
|
|
58
|
+
},
|
|
59
|
+
"repository": {
|
|
60
|
+
"type": "git",
|
|
61
|
+
"url": "git+https://github.com/hashgraph-online/hashnet-mcp-js.git"
|
|
62
|
+
},
|
|
63
|
+
"keywords": [
|
|
64
|
+
"hashgraph online",
|
|
65
|
+
"hedera",
|
|
66
|
+
"hashgraph",
|
|
67
|
+
"web3",
|
|
68
|
+
"mcp",
|
|
69
|
+
"fastmcp",
|
|
70
|
+
"agent",
|
|
71
|
+
"registry broker",
|
|
72
|
+
"standards",
|
|
73
|
+
"sdk"
|
|
74
|
+
],
|
|
75
|
+
"author": "Hashgraph Online <hello@hashgraphonline.com>",
|
|
76
|
+
"license": "Apache-2.0",
|
|
54
77
|
"engines": {
|
|
55
78
|
"node": ">=18"
|
|
56
79
|
},
|