hive-intelligence 1.1.2 → 1.1.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/README.md +232 -379
- package/agent-skills/.claude-plugin/plugin.json +105 -0
- package/{LICENSE → agent-skills/LICENSE} +1 -1
- package/agent-skills/README.md +146 -0
- package/agent-skills/SKILL.md +68 -0
- package/agent-skills/evals/README.md +20 -0
- package/agent-skills/evals/trigger-queries.json +194 -0
- package/agent-skills/package.json +49 -0
- package/agent-skills/packs/hive-build/SKILL.md +327 -0
- package/agent-skills/packs/hive-build/evals/evals.json +28 -0
- package/agent-skills/packs/hive-build-onboarding/SKILL.md +137 -0
- package/agent-skills/packs/hive-build-onboarding/evals/evals.json +27 -0
- package/agent-skills/packs/hive-cli/SKILL.md +141 -0
- package/agent-skills/packs/hive-cli/evals/evals.json +27 -0
- package/agent-skills/packs/hive-defi-research/SKILL.md +42 -0
- package/agent-skills/packs/hive-defi-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-defi-research/references/workflow.md +41 -0
- package/agent-skills/packs/hive-dex-pool-analysis/SKILL.md +41 -0
- package/agent-skills/packs/hive-dex-pool-analysis/evals/evals.json +27 -0
- package/agent-skills/packs/hive-dex-pool-analysis/references/workflow.md +42 -0
- package/agent-skills/packs/hive-market-research/SKILL.md +45 -0
- package/agent-skills/packs/hive-market-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-market-research/references/workflow.md +47 -0
- package/agent-skills/packs/hive-mcp/SKILL.md +224 -0
- package/agent-skills/packs/hive-mcp/evals/evals.json +38 -0
- package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +83 -0
- package/agent-skills/packs/hive-network-infrastructure/SKILL.md +44 -0
- package/agent-skills/packs/hive-network-infrastructure/evals/evals.json +27 -0
- package/agent-skills/packs/hive-network-infrastructure/references/workflow.md +41 -0
- package/agent-skills/packs/hive-nft-research/SKILL.md +41 -0
- package/agent-skills/packs/hive-nft-research/evals/evals.json +27 -0
- package/agent-skills/packs/hive-nft-research/references/workflow.md +42 -0
- package/agent-skills/packs/hive-prediction-markets/SKILL.md +44 -0
- package/agent-skills/packs/hive-prediction-markets/evals/evals.json +27 -0
- package/agent-skills/packs/hive-prediction-markets/references/workflow.md +42 -0
- package/agent-skills/packs/hive-query/SKILL.md +98 -0
- package/agent-skills/packs/hive-query/evals/evals.json +38 -0
- package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +54 -0
- package/agent-skills/packs/hive-security-risk/SKILL.md +42 -0
- package/agent-skills/packs/hive-security-risk/evals/evals.json +27 -0
- package/agent-skills/packs/hive-security-risk/references/workflow.md +46 -0
- package/agent-skills/packs/hive-solana-analysis/SKILL.md +42 -0
- package/agent-skills/packs/hive-solana-analysis/evals/evals.json +27 -0
- package/agent-skills/packs/hive-solana-analysis/references/workflow.md +42 -0
- package/agent-skills/packs/hive-token-diligence/SKILL.md +44 -0
- package/agent-skills/packs/hive-token-diligence/evals/evals.json +27 -0
- package/agent-skills/packs/hive-token-diligence/references/workflow.md +45 -0
- package/agent-skills/packs/hive-tool-discovery/SKILL.md +49 -0
- package/agent-skills/packs/hive-tool-discovery/evals/evals.json +38 -0
- package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +62 -0
- package/agent-skills/packs/hive-wallet-investigation/SKILL.md +42 -0
- package/agent-skills/packs/hive-wallet-investigation/evals/evals.json +27 -0
- package/agent-skills/packs/hive-wallet-investigation/references/workflow.md +45 -0
- package/agent-skills/references/agents-routing.md +49 -0
- package/agent-skills/scripts/validate-agent-skills-package.mjs +178 -0
- package/agent-skills/skills.sh.json +40 -0
- package/bin/hive-mcp.js +33 -0
- package/build/{alias-INGXWFCG.js → alias-CZ3DEYHF.js} +3 -3
- package/build/api-client-I23XLSHU.js +28 -0
- package/build/auth-KKINNBXT.js +40 -0
- package/build/browser-auth-EEFGRHWY.js +9 -0
- package/build/{cache-US4LSZPI.js → cache-EGNMENNA.js} +3 -3
- package/build/chunk-2MYMHMBF.js +340 -0
- package/build/chunk-2MYMHMBF.js.map +1 -0
- package/build/chunk-2X3U4DFK.js +77369 -0
- package/build/chunk-2X3U4DFK.js.map +1 -0
- package/build/chunk-B6G222LS.js +265 -0
- package/build/chunk-B6G222LS.js.map +1 -0
- package/build/{chunk-WKVZVQTG.js → chunk-DYJBTKNR.js} +4 -4
- package/build/chunk-DYJBTKNR.js.map +1 -0
- package/build/chunk-IDZD2NVG.js +247 -0
- package/build/chunk-IDZD2NVG.js.map +1 -0
- package/build/chunk-IZTN7WFH.js +250 -0
- package/build/chunk-IZTN7WFH.js.map +1 -0
- package/build/{chunk-QMRVH5ZP.js → chunk-KBVPIZS4.js} +10 -2
- package/build/chunk-KGYBTXIN.js +86 -0
- package/build/chunk-KGYBTXIN.js.map +1 -0
- package/build/{chunk-CGXVV6WR.js → chunk-MPIUUE3T.js} +87 -105
- package/build/chunk-MPIUUE3T.js.map +1 -0
- package/build/chunk-PGBVNMNZ.js +127 -0
- package/build/chunk-PGBVNMNZ.js.map +1 -0
- package/build/chunk-QNCI4DEB.js +88 -0
- package/build/chunk-QNCI4DEB.js.map +1 -0
- package/build/chunk-RKICZ6DZ.js +497 -0
- package/build/chunk-RKICZ6DZ.js.map +1 -0
- package/build/chunk-UKHZIVDT.js +44 -0
- package/build/chunk-UKHZIVDT.js.map +1 -0
- package/build/{chunk-XQJ6PB2L.js → chunk-V77LO4RO.js} +1 -1
- package/build/chunk-V77LO4RO.js.map +1 -0
- package/build/{chunk-CP3FXEQA.js → chunk-XYBEFFZ3.js} +5 -6
- package/build/chunk-XYBEFFZ3.js.map +1 -0
- package/build/cli.js +133 -122
- package/build/cli.js.map +1 -1
- package/build/{completion-J6HFY6PS.js → completion-BELZL7ND.js} +55 -50
- package/build/completion-BELZL7ND.js.map +1 -0
- package/build/config-TDX4VUGW.js +58 -0
- package/build/{config-dir-IEOID7Q6.js → config-dir-V43W2WIA.js} +3 -3
- package/build/{doctor-7WZMCQC7.js → doctor-5K5UWHNX.js} +13 -13
- package/build/doctor-5K5UWHNX.js.map +1 -0
- package/build/{errors-U6UZWVSD.js → errors-E6MVUBNA.js} +3 -3
- package/build/format-TSFSI2K7.js +43 -0
- package/build/format-TSFSI2K7.js.map +1 -0
- package/build/{init-CAVIFVSH.js → init-YQ5NBICF.js} +2 -2
- package/build/init-all-6OWEQALB.js +274 -0
- package/build/init-all-6OWEQALB.js.map +1 -0
- package/build/mcpServer-AEX3RQ4U.js +20 -0
- package/build/mcpServer-AEX3RQ4U.js.map +1 -0
- package/build/{namespace-7JWWBWBL.js → namespace-PVHBFDW2.js} +3 -3
- package/build/namespace-PVHBFDW2.js.map +1 -0
- package/build/{open-FUXYIHFO.js → open-YUIJP37F.js} +6 -6
- package/build/open-YUIJP37F.js.map +1 -0
- package/build/{output-7PGQWJY2.js → output-IYJBFCYK.js} +3 -3
- package/build/output-IYJBFCYK.js.map +1 -0
- package/build/serve-KWNJK6EY.js +44 -0
- package/build/serve-KWNJK6EY.js.map +1 -0
- package/build/server.js +4749 -14124
- package/build/server.js.map +1 -1
- package/build/setup-YTUKMPNP.js +136 -0
- package/build/setup-YTUKMPNP.js.map +1 -0
- package/build/stdio.js +31 -0
- package/build/stdio.js.map +1 -0
- package/build/{telemetry-KNWMQURH.js → telemetry-5IPRKZBL.js} +4 -4
- package/build/telemetry-5IPRKZBL.js.map +1 -0
- package/build/{tools-VRRMBCZQ.js → tools-PJHWFCAG.js} +15 -15
- package/build/uninstall-HWXEIP6K.js +115 -0
- package/build/uninstall-HWXEIP6K.js.map +1 -0
- package/build/{watch-A75SVIQ6.js → watch-KZ5EDZK3.js} +7 -7
- package/package.json +118 -52
- package/bin/hive.js +0 -25
- package/build/auth-77MKFFBQ.js +0 -233
- package/build/auth-77MKFFBQ.js.map +0 -1
- package/build/chunk-CGXVV6WR.js.map +0 -1
- package/build/chunk-CP3FXEQA.js.map +0 -1
- package/build/chunk-DTUDM6HX.js +0 -3108
- package/build/chunk-DTUDM6HX.js.map +0 -1
- package/build/chunk-LBTLYTZS.js +0 -115
- package/build/chunk-LBTLYTZS.js.map +0 -1
- package/build/chunk-OK3LSM73.js +0 -22
- package/build/chunk-OK3LSM73.js.map +0 -1
- package/build/chunk-RRI526CJ.js +0 -212
- package/build/chunk-RRI526CJ.js.map +0 -1
- package/build/chunk-WKVZVQTG.js.map +0 -1
- package/build/chunk-XQJ6PB2L.js.map +0 -1
- package/build/completion-J6HFY6PS.js.map +0 -1
- package/build/config-ANFERP7A.js +0 -99
- package/build/config-ANFERP7A.js.map +0 -1
- package/build/doctor-7WZMCQC7.js.map +0 -1
- package/build/format-CVLLK6GD.js +0 -75
- package/build/format-CVLLK6GD.js.map +0 -1
- package/build/open-FUXYIHFO.js.map +0 -1
- package/build/version-3TZ3U4IR.js +0 -9
- /package/build/{alias-INGXWFCG.js.map → alias-CZ3DEYHF.js.map} +0 -0
- /package/build/{chunk-QMRVH5ZP.js.map → api-client-I23XLSHU.js.map} +0 -0
- /package/build/{config-dir-IEOID7Q6.js.map → auth-KKINNBXT.js.map} +0 -0
- /package/build/{errors-U6UZWVSD.js.map → browser-auth-EEFGRHWY.js.map} +0 -0
- /package/build/{cache-US4LSZPI.js.map → cache-EGNMENNA.js.map} +0 -0
- /package/build/{namespace-7JWWBWBL.js.map → chunk-KBVPIZS4.js.map} +0 -0
- /package/build/{output-7PGQWJY2.js.map → config-TDX4VUGW.js.map} +0 -0
- /package/build/{telemetry-KNWMQURH.js.map → config-dir-V43W2WIA.js.map} +0 -0
- /package/build/{version-3TZ3U4IR.js.map → errors-E6MVUBNA.js.map} +0 -0
- /package/build/{init-CAVIFVSH.js.map → init-YQ5NBICF.js.map} +0 -0
- /package/build/{tools-VRRMBCZQ.js.map → tools-PJHWFCAG.js.map} +0 -0
- /package/build/{watch-A75SVIQ6.js.map → watch-KZ5EDZK3.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/jq.ts","../src/cli/output.ts"],"sourcesContent":["/**\n * Minimal jq-like evaluator for CLI --jq flag.\n * Supports: .field, .a.b, .[N], .[] | .field, .[] | select(.field op val)\n */\nexport function jqEval(data: unknown, expr: string): unknown {\n const trimmed = expr.trim();\n if (trimmed === \".\") return data;\n\n // Handle pipe: split on \" | \" and chain\n if (trimmed.includes(\" | \")) {\n const parts = trimmed.split(\" | \");\n let result = data;\n for (const part of parts) {\n result = jqEval(result, part.trim());\n }\n return result;\n }\n\n // Handle select(.field op value)\n const selectMatch = trimmed.match(\n /^select\\(\\.(\\w[\\w.]*)\\s*(>|<|>=|<=|==|!=)\\s*(.+)\\)$/,\n );\n if (selectMatch) {\n const [, field, op, rawVal] = selectMatch;\n if (!Array.isArray(data)) return data;\n const val = parseValue(rawVal);\n return data.filter((item) => {\n const fieldVal = extractPath(item, field);\n return compare(fieldVal, op, val);\n });\n }\n\n // If data is an array and expression is a plain field access, map over elements.\n // Exclude bracket expressions like .[1] or .[] to avoid false-positive mapping.\n if (\n Array.isArray(data) &&\n trimmed.startsWith(\".\") &&\n !trimmed.includes(\"[\")\n ) {\n const path = trimmed.slice(1);\n if (path && !path.includes(\" \")) {\n return data.map((item) => extractPath(item, path));\n }\n }\n\n // Handle .[] (iterate array)\n if (trimmed === \".[]\") {\n if (Array.isArray(data)) return data;\n if (typeof data === \"object\" && data !== null) return Object.values(data);\n return data;\n }\n\n // Handle .[N] (array index)\n const indexMatch = trimmed.match(/^\\.\\[(\\d+)\\]$/);\n if (indexMatch) {\n const idx = parseInt(indexMatch[1], 10);\n if (Array.isArray(data)) return data[idx];\n return undefined;\n }\n\n // Handle .field or .a.b.c — may include .[] in path\n if (trimmed.startsWith(\".\")) {\n const path = trimmed.slice(1);\n return extractPath(data, path);\n }\n\n return extractPath(data, trimmed);\n}\n\nfunction extractPath(data: unknown, path: string): unknown {\n if (!path) return data;\n\n const parts: string[] = [];\n let current = \"\";\n for (let i = 0; i < path.length; i++) {\n if (path[i] === \".\" && path[i + 1] === \"[\" && path[i + 2] === \"]\") {\n if (current) parts.push(current);\n parts.push(\"[]\");\n current = \"\";\n i += 2;\n } else if (path[i] === \".\" && current) {\n parts.push(current);\n current = \"\";\n } else if (path[i] !== \".\" || current) {\n current += path[i];\n }\n }\n if (current) parts.push(current);\n\n let result: unknown = data;\n for (const part of parts) {\n if (result == null) return undefined;\n if (part === \"[]\") {\n if (Array.isArray(result)) return result;\n return undefined;\n }\n if (typeof result === \"object\" && result !== null) {\n result = (result as Record<string, unknown>)[part];\n } else {\n return undefined;\n }\n }\n return result;\n}\n\nfunction parseValue(raw: string): string | number | boolean {\n const trimmed = raw.trim();\n if (trimmed === \"true\") return true;\n if (trimmed === \"false\") return false;\n if (/^\".*\"$/.test(trimmed)) return trimmed.slice(1, -1);\n const num = Number(trimmed);\n if (!isNaN(num)) return num;\n return trimmed;\n}\n\nfunction compare(a: unknown, op: string, b: unknown): boolean {\n switch (op) {\n case \"==\":\n return a === b;\n case \"!=\":\n return a !== b;\n case \">\":\n return typeof a === \"number\" && typeof b === \"number\" && a > b;\n case \"<\":\n return typeof a === \"number\" && typeof b === \"number\" && a < b;\n case \">=\":\n return typeof a === \"number\" && typeof b === \"number\" && a >= b;\n case \"<=\":\n return typeof a === \"number\" && typeof b === \"number\" && a <= b;\n default:\n return false;\n }\n}\n","import { CliError, type ErrorCode } from \"./errors.js\";\nimport { jqEval } from \"./jq.js\";\n\n// SIGPIPE — clean exit when piping to `head`, `less`, etc.\nprocess.on(\"SIGPIPE\", () => process.exit(0));\n\n/** Global output options set from CLI flags. */\nexport interface OutputOptions {\n json?: boolean;\n pretty?: boolean;\n fields?: string;\n quiet?: boolean;\n verbose?: boolean;\n noColor?: boolean;\n jq?: string;\n csv?: boolean;\n}\n\nlet globalOpts: OutputOptions = {};\n\nexport function setOutputOptions(opts: OutputOptions): void {\n globalOpts = opts;\n}\n\n/** Whether to emit JSON (non-TTY default, or --json flag). */\nexport function shouldOutputJson(): boolean {\n if (globalOpts.json) return true;\n if (globalOpts.pretty) return false;\n return !process.stdout.isTTY;\n}\n\n/** Whether color is enabled. */\nexport function colorEnabled(): boolean {\n if (globalOpts.noColor) return false;\n if (process.env.NO_COLOR) return false;\n if (process.env.FORCE_COLOR) return true;\n return !!process.stdout.isTTY;\n}\n\n/** Apply ANSI color if enabled. */\nexport function red(s: string): string {\n return colorEnabled() ? `\\x1b[31m${s}\\x1b[0m` : s;\n}\nexport function green(s: string): string {\n return colorEnabled() ? `\\x1b[32m${s}\\x1b[0m` : s;\n}\nexport function yellow(s: string): string {\n return colorEnabled() ? `\\x1b[33m${s}\\x1b[0m` : s;\n}\nexport function dim(s: string): string {\n return colorEnabled() ? `\\x1b[2m${s}\\x1b[0m` : s;\n}\nexport function bold(s: string): string {\n return colorEnabled() ? `\\x1b[1m${s}\\x1b[0m` : s;\n}\n\n/** The standard envelope for all CLI output. */\nexport interface Envelope<T = unknown> {\n ok: boolean;\n data?: T;\n error?: {\n code: ErrorCode;\n message: string;\n suggestion?: string;\n };\n meta: {\n tool?: string;\n provider?: string;\n duration_ms?: number;\n };\n}\n\n/** Build a success envelope. */\nexport function successEnvelope<T>(\n data: T,\n meta: Envelope[\"meta\"],\n): Envelope<T> {\n return { ok: true, data, meta };\n}\n\n/** Build an error envelope. */\nexport function errorEnvelope(err: CliError, meta: Envelope[\"meta\"]): Envelope {\n return {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n ...(err.suggestion && { suggestion: err.suggestion }),\n },\n meta,\n };\n}\n\n/** Apply --fields filtering to data. */\nfunction applyFields<T>(data: T, fields: string | undefined): T {\n if (!fields) return data;\n const keys = fields.split(\",\").map((f) => f.trim());\n if (Array.isArray(data)) {\n return data.map((item) => pick(item, keys)) as T;\n }\n if (typeof data === \"object\" && data !== null) {\n return pick(data, keys) as T;\n }\n return data;\n}\n\nfunction pick(obj: unknown, keys: string[]): unknown {\n if (typeof obj !== \"object\" || obj === null) return obj;\n const result: Record<string, unknown> = {};\n for (const key of keys) {\n if (key in (obj as Record<string, unknown>)) {\n result[key] = (obj as Record<string, unknown>)[key];\n }\n }\n return result;\n}\n\n/** Write an envelope to stdout. Handles JSON vs human mode. */\nexport async function writeOutput(envelope: Envelope): Promise<void> {\n if (globalOpts.fields && envelope.data) {\n envelope = {\n ...envelope,\n data: applyFields(envelope.data, globalOpts.fields),\n };\n }\n\n // Apply --jq filter\n if (globalOpts.jq && envelope.data != null) {\n envelope = { ...envelope, data: jqEval(envelope.data, globalOpts.jq) };\n }\n\n // CSV output mode\n if (globalOpts.csv && envelope.ok && Array.isArray(envelope.data)) {\n process.stdout.write(\n formatCsv(envelope.data as Record<string, unknown>[]) + \"\\n\",\n );\n return;\n }\n\n if (shouldOutputJson()) {\n const output = JSON.stringify(envelope, null, 2);\n process.stdout.write(output + \"\\n\");\n return;\n }\n\n // Human-readable mode\n if (!globalOpts.quiet && envelope.meta.tool) {\n const status = envelope.ok\n ? green(`✓ ${envelope.meta.tool}`)\n : red(`✗ ${envelope.meta.tool}`);\n const provider = envelope.meta.provider\n ? dim(` (${envelope.meta.provider})`)\n : \"\";\n const timing =\n envelope.meta.duration_ms != null\n ? dim(` ${envelope.meta.duration_ms}ms`)\n : \"\";\n process.stderr.write(`${status}${provider}${timing}\\n\\n`);\n }\n\n if (envelope.ok && envelope.data != null) {\n // Auto-table: array of objects renders as a fixed-width table\n if (\n Array.isArray(envelope.data) &&\n envelope.data.length > 0 &&\n typeof envelope.data[0] === \"object\" &&\n envelope.data[0] !== null\n ) {\n const { formatTable } = await import(\"./format.js\");\n process.stdout.write(\n formatTable(envelope.data as Record<string, unknown>[]) + \"\\n\",\n );\n return;\n }\n\n const text =\n typeof envelope.data === \"string\"\n ? envelope.data\n : JSON.stringify(envelope.data, null, 2);\n process.stdout.write(text + \"\\n\");\n }\n\n if (!envelope.ok && envelope.error) {\n process.stderr.write(red(`Error: ${envelope.error.message}\\n`));\n if (envelope.error.suggestion) {\n process.stderr.write(\n yellow(` Suggestion: ${envelope.error.suggestion}\\n`),\n );\n }\n }\n}\n\n/** Write a data envelope and exit. */\nexport async function outputSuccess<T>(\n data: T,\n meta: Envelope[\"meta\"],\n): Promise<void> {\n await writeOutput(successEnvelope(data, meta));\n}\n\n/** Write an error envelope and exit with the appropriate code. */\nexport async function outputError(\n err: CliError,\n meta: Envelope[\"meta\"],\n): Promise<never> {\n await writeOutput(errorEnvelope(err, meta));\n process.exit(err.exitCode);\n}\n\n/** Log to stderr (only when not --quiet). */\nexport function info(msg: string): void {\n if (!globalOpts.quiet) {\n process.stderr.write(msg + \"\\n\");\n }\n}\n\n/** Log to stderr (only when --verbose). */\nexport function debug(msg: string): void {\n if (globalOpts.verbose) {\n process.stderr.write(dim(`[debug] ${msg}`) + \"\\n\");\n }\n}\n\n/** Detect CI environment. */\nexport function isCI(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.JENKINS_URL ||\n process.env.HIVE_CI\n );\n}\n\n/** Format array of objects as RFC 4180 CSV. */\nexport function formatCsv(data: Record<string, unknown>[]): string {\n if (data.length === 0) return \"\";\n const keys = [...new Set(data.flatMap((row) => Object.keys(row)))];\n const escape = (val: unknown): string => {\n const str = val == null ? \"\" : String(val);\n return str.includes(\",\") || str.includes('\"') || str.includes(\"\\n\")\n ? `\"${str.replace(/\"/g, '\"\"')}\"`\n : str;\n };\n const header = keys.join(\",\");\n const rows = data.map((row) => keys.map((k) => escape(row[k])).join(\",\"));\n return [header, ...rows].join(\"\\n\");\n}\n"],"mappings":";;;AAIO,SAAS,OAAO,MAAe,MAAuB;AAC3D,QAAM,UAAU,KAAK,KAAK;AAC1B,MAAI,YAAY,IAAK,QAAO;AAG5B,MAAI,QAAQ,SAAS,KAAK,GAAG;AAC3B,UAAM,QAAQ,QAAQ,MAAM,KAAK;AACjC,QAAI,SAAS;AACb,eAAW,QAAQ,OAAO;AACxB,eAAS,OAAO,QAAQ,KAAK,KAAK,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AAGA,QAAM,cAAc,QAAQ;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,IAAI,MAAM,IAAI;AAC9B,QAAI,CAAC,MAAM,QAAQ,IAAI,EAAG,QAAO;AACjC,UAAM,MAAM,WAAW,MAAM;AAC7B,WAAO,KAAK,OAAO,CAAC,SAAS;AAC3B,YAAM,WAAW,YAAY,MAAM,KAAK;AACxC,aAAO,QAAQ,UAAU,IAAI,GAAG;AAAA,IAClC,CAAC;AAAA,EACH;AAIA,MACE,MAAM,QAAQ,IAAI,KAClB,QAAQ,WAAW,GAAG,KACtB,CAAC,QAAQ,SAAS,GAAG,GACrB;AACA,UAAM,OAAO,QAAQ,MAAM,CAAC;AAC5B,QAAI,QAAQ,CAAC,KAAK,SAAS,GAAG,GAAG;AAC/B,aAAO,KAAK,IAAI,CAAC,SAAS,YAAY,MAAM,IAAI,CAAC;AAAA,IACnD;AAAA,EACF;AAGA,MAAI,YAAY,OAAO;AACrB,QAAI,MAAM,QAAQ,IAAI,EAAG,QAAO;AAChC,QAAI,OAAO,SAAS,YAAY,SAAS,KAAM,QAAO,OAAO,OAAO,IAAI;AACxE,WAAO;AAAA,EACT;AAGA,QAAM,aAAa,QAAQ,MAAM,eAAe;AAChD,MAAI,YAAY;AACd,UAAM,MAAM,SAAS,WAAW,CAAC,GAAG,EAAE;AACtC,QAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,KAAK,GAAG;AACxC,WAAO;AAAA,EACT;AAGA,MAAI,QAAQ,WAAW,GAAG,GAAG;AAC3B,UAAM,OAAO,QAAQ,MAAM,CAAC;AAC5B,WAAO,YAAY,MAAM,IAAI;AAAA,EAC/B;AAEA,SAAO,YAAY,MAAM,OAAO;AAClC;AAEA,SAAS,YAAY,MAAe,MAAuB;AACzD,MAAI,CAAC,KAAM,QAAO;AAElB,QAAM,QAAkB,CAAC;AACzB,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,KAAK,CAAC,MAAM,OAAO,KAAK,IAAI,CAAC,MAAM,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AACjE,UAAI,QAAS,OAAM,KAAK,OAAO;AAC/B,YAAM,KAAK,IAAI;AACf,gBAAU;AACV,WAAK;AAAA,IACP,WAAW,KAAK,CAAC,MAAM,OAAO,SAAS;AACrC,YAAM,KAAK,OAAO;AAClB,gBAAU;AAAA,IACZ,WAAW,KAAK,CAAC,MAAM,OAAO,SAAS;AACrC,iBAAW,KAAK,CAAC;AAAA,IACnB;AAAA,EACF;AACA,MAAI,QAAS,OAAM,KAAK,OAAO;AAE/B,MAAI,SAAkB;AACtB,aAAW,QAAQ,OAAO;AACxB,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,SAAS,MAAM;AACjB,UAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAClC,aAAO;AAAA,IACT;AACA,QAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,eAAU,OAAmC,IAAI;AAAA,IACnD,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WAAW,KAAwC;AAC1D,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,YAAY,OAAQ,QAAO;AAC/B,MAAI,YAAY,QAAS,QAAO;AAChC,MAAI,SAAS,KAAK,OAAO,EAAG,QAAO,QAAQ,MAAM,GAAG,EAAE;AACtD,QAAM,MAAM,OAAO,OAAO;AAC1B,MAAI,CAAC,MAAM,GAAG,EAAG,QAAO;AACxB,SAAO;AACT;AAEA,SAAS,QAAQ,GAAY,IAAY,GAAqB;AAC5D,UAAQ,IAAI;AAAA,IACV,KAAK;AACH,aAAO,MAAM;AAAA,IACf,KAAK;AACH,aAAO,MAAM;AAAA,IACf,KAAK;AACH,aAAO,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,IAAI;AAAA,IAC/D,KAAK;AACH,aAAO,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,IAAI;AAAA,IAC/D,KAAK;AACH,aAAO,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,KAAK;AAAA,IAChE,KAAK;AACH,aAAO,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,KAAK;AAAA,IAChE;AACE,aAAO;AAAA,EACX;AACF;;;AChIA,QAAQ,GAAG,WAAW,MAAM,QAAQ,KAAK,CAAC,CAAC;AAc3C,IAAI,aAA4B,CAAC;AAE1B,SAAS,iBAAiB,MAA2B;AAC1D,eAAa;AACf;AAGO,SAAS,mBAA4B;AAC1C,MAAI,WAAW,KAAM,QAAO;AAC5B,MAAI,WAAW,OAAQ,QAAO;AAC9B,SAAO,CAAC,QAAQ,OAAO;AACzB;AAGO,SAAS,eAAwB;AACtC,MAAI,WAAW,QAAS,QAAO;AAC/B,MAAI,QAAQ,IAAI,SAAU,QAAO;AACjC,MAAI,QAAQ,IAAI,YAAa,QAAO;AACpC,SAAO,CAAC,CAAC,QAAQ,OAAO;AAC1B;AAGO,SAAS,IAAI,GAAmB;AACrC,SAAO,aAAa,IAAI,WAAW,CAAC,YAAY;AAClD;AACO,SAAS,MAAM,GAAmB;AACvC,SAAO,aAAa,IAAI,WAAW,CAAC,YAAY;AAClD;AACO,SAAS,OAAO,GAAmB;AACxC,SAAO,aAAa,IAAI,WAAW,CAAC,YAAY;AAClD;AACO,SAAS,IAAI,GAAmB;AACrC,SAAO,aAAa,IAAI,UAAU,CAAC,YAAY;AACjD;AACO,SAAS,KAAK,GAAmB;AACtC,SAAO,aAAa,IAAI,UAAU,CAAC,YAAY;AACjD;AAmBO,SAAS,gBACd,MACA,MACa;AACb,SAAO,EAAE,IAAI,MAAM,MAAM,KAAK;AAChC;AAGO,SAAS,cAAc,KAAe,MAAkC;AAC7E,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO;AAAA,MACL,MAAM,IAAI;AAAA,MACV,SAAS,IAAI;AAAA,MACb,GAAI,IAAI,cAAc,EAAE,YAAY,IAAI,WAAW;AAAA,IACrD;AAAA,IACA;AAAA,EACF;AACF;AAGA,SAAS,YAAe,MAAS,QAA+B;AAC9D,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,OAAO,OAAO,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAClD,MAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,WAAO,KAAK,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC;AAAA,EAC5C;AACA,MAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAC7C,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AACA,SAAO;AACT;AAEA,SAAS,KAAK,KAAc,MAAyB;AACnD,MAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO;AACpD,QAAM,SAAkC,CAAC;AACzC,aAAW,OAAO,MAAM;AACtB,QAAI,OAAQ,KAAiC;AAC3C,aAAO,GAAG,IAAK,IAAgC,GAAG;AAAA,IACpD;AAAA,EACF;AACA,SAAO;AACT;AAGA,eAAsB,YAAY,UAAmC;AACnE,MAAI,WAAW,UAAU,SAAS,MAAM;AACtC,eAAW;AAAA,MACT,GAAG;AAAA,MACH,MAAM,YAAY,SAAS,MAAM,WAAW,MAAM;AAAA,IACpD;AAAA,EACF;AAGA,MAAI,WAAW,MAAM,SAAS,QAAQ,MAAM;AAC1C,eAAW,EAAE,GAAG,UAAU,MAAM,OAAO,SAAS,MAAM,WAAW,EAAE,EAAE;AAAA,EACvE;AAGA,MAAI,WAAW,OAAO,SAAS,MAAM,MAAM,QAAQ,SAAS,IAAI,GAAG;AACjE,YAAQ,OAAO;AAAA,MACb,UAAU,SAAS,IAAiC,IAAI;AAAA,IAC1D;AACA;AAAA,EACF;AAEA,MAAI,iBAAiB,GAAG;AACtB,UAAM,SAAS,KAAK,UAAU,UAAU,MAAM,CAAC;AAC/C,YAAQ,OAAO,MAAM,SAAS,IAAI;AAClC;AAAA,EACF;AAGA,MAAI,CAAC,WAAW,SAAS,SAAS,KAAK,MAAM;AAC3C,UAAM,SAAS,SAAS,KACpB,MAAM,UAAK,SAAS,KAAK,IAAI,EAAE,IAC/B,IAAI,UAAK,SAAS,KAAK,IAAI,EAAE;AACjC,UAAM,WAAW,SAAS,KAAK,WAC3B,IAAI,KAAK,SAAS,KAAK,QAAQ,GAAG,IAClC;AACJ,UAAM,SACJ,SAAS,KAAK,eAAe,OACzB,IAAI,IAAI,SAAS,KAAK,WAAW,IAAI,IACrC;AACN,YAAQ,OAAO,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;AAAA;AAAA,CAAM;AAAA,EAC1D;AAEA,MAAI,SAAS,MAAM,SAAS,QAAQ,MAAM;AAExC,QACE,MAAM,QAAQ,SAAS,IAAI,KAC3B,SAAS,KAAK,SAAS,KACvB,OAAO,SAAS,KAAK,CAAC,MAAM,YAC5B,SAAS,KAAK,CAAC,MAAM,MACrB;AACA,YAAM,EAAE,YAAY,IAAI,MAAM,OAAO,sBAAa;AAClD,cAAQ,OAAO;AAAA,QACb,YAAY,SAAS,IAAiC,IAAI;AAAA,MAC5D;AACA;AAAA,IACF;AAEA,UAAM,OACJ,OAAO,SAAS,SAAS,WACrB,SAAS,OACT,KAAK,UAAU,SAAS,MAAM,MAAM,CAAC;AAC3C,YAAQ,OAAO,MAAM,OAAO,IAAI;AAAA,EAClC;AAEA,MAAI,CAAC,SAAS,MAAM,SAAS,OAAO;AAClC,YAAQ,OAAO,MAAM,IAAI,UAAU,SAAS,MAAM,OAAO;AAAA,CAAI,CAAC;AAC9D,QAAI,SAAS,MAAM,YAAY;AAC7B,cAAQ,OAAO;AAAA,QACb,OAAO,iBAAiB,SAAS,MAAM,UAAU;AAAA,CAAI;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AACF;AAGA,eAAsB,cACpB,MACA,MACe;AACf,QAAM,YAAY,gBAAgB,MAAM,IAAI,CAAC;AAC/C;AAGA,eAAsB,YACpB,KACA,MACgB;AAChB,QAAM,YAAY,cAAc,KAAK,IAAI,CAAC;AAC1C,UAAQ,KAAK,IAAI,QAAQ;AAC3B;AAGO,SAAS,KAAK,KAAmB;AACtC,MAAI,CAAC,WAAW,OAAO;AACrB,YAAQ,OAAO,MAAM,MAAM,IAAI;AAAA,EACjC;AACF;AAGO,SAAS,MAAM,KAAmB;AACvC,MAAI,WAAW,SAAS;AACtB,YAAQ,OAAO,MAAM,IAAI,WAAW,GAAG,EAAE,IAAI,IAAI;AAAA,EACnD;AACF;AAGO,SAAS,OAAgB;AAC9B,SAAO,CAAC,EACN,QAAQ,IAAI,MACZ,QAAQ,IAAI,kBACZ,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACZ,QAAQ,IAAI;AAEhB;AAGO,SAAS,UAAU,MAAyC;AACjE,MAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAM,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC;AACjE,QAAM,SAAS,CAAC,QAAyB;AACvC,UAAM,MAAM,OAAO,OAAO,KAAK,OAAO,GAAG;AACzC,WAAO,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,IAAI,IAC9D,IAAI,IAAI,QAAQ,MAAM,IAAI,CAAC,MAC3B;AAAA,EACN;AACA,QAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,QAAM,OAAO,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;AACxE,SAAO,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,IAAI;AACpC;","names":[]}
|
package/build/cli.js
CHANGED
|
@@ -2,34 +2,34 @@
|
|
|
2
2
|
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
executeTool
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-WKVZVQTG.js";
|
|
7
|
-
import "./chunk-LBTLYTZS.js";
|
|
5
|
+
} from "./chunk-UKHZIVDT.js";
|
|
8
6
|
import {
|
|
9
|
-
|
|
10
|
-
} from "./chunk-
|
|
7
|
+
NAMESPACE
|
|
8
|
+
} from "./chunk-MPIUUE3T.js";
|
|
9
|
+
import "./chunk-DYJBTKNR.js";
|
|
10
|
+
import "./chunk-IZTN7WFH.js";
|
|
11
|
+
import {
|
|
12
|
+
checkForUpdates
|
|
13
|
+
} from "./chunk-QNCI4DEB.js";
|
|
14
|
+
import {
|
|
15
|
+
SERVER_VERSION
|
|
16
|
+
} from "./chunk-2X3U4DFK.js";
|
|
17
|
+
import "./chunk-B6G222LS.js";
|
|
11
18
|
import {
|
|
12
19
|
red,
|
|
13
20
|
setOutputOptions
|
|
14
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-XYBEFFZ3.js";
|
|
15
22
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
readJsonFile,
|
|
19
|
-
setCliFlags,
|
|
20
|
-
writeJsonFile
|
|
21
|
-
} from "./chunk-XQJ6PB2L.js";
|
|
23
|
+
setCliFlags
|
|
24
|
+
} from "./chunk-V77LO4RO.js";
|
|
22
25
|
import {
|
|
23
26
|
ExitCode
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import {
|
|
26
|
-
NAMESPACE
|
|
27
|
-
} from "./chunk-CGXVV6WR.js";
|
|
27
|
+
} from "./chunk-KGYBTXIN.js";
|
|
28
28
|
import {
|
|
29
29
|
__commonJS,
|
|
30
30
|
__require,
|
|
31
31
|
__toESM
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-KBVPIZS4.js";
|
|
33
33
|
|
|
34
34
|
// node_modules/commander/lib/error.js
|
|
35
35
|
var require_error = __commonJS({
|
|
@@ -3481,75 +3481,6 @@ var {
|
|
|
3481
3481
|
Help
|
|
3482
3482
|
} = import_index.default;
|
|
3483
3483
|
|
|
3484
|
-
// src/cli/update-check.ts
|
|
3485
|
-
import { join } from "path";
|
|
3486
|
-
var CACHE_TTL_MS = 864e5;
|
|
3487
|
-
function getCachePath() {
|
|
3488
|
-
return join(getConfigDir(), "cache", "update-check.json");
|
|
3489
|
-
}
|
|
3490
|
-
async function checkForUpdates() {
|
|
3491
|
-
if (process.env.CI || process.env.HIVE_NO_UPDATE_CHECK || !process.stderr.isTTY) {
|
|
3492
|
-
return;
|
|
3493
|
-
}
|
|
3494
|
-
const cached = readJsonFile(getCachePath());
|
|
3495
|
-
if (cached?.checkedAt && cached.cliVersion === CLI_VERSION) {
|
|
3496
|
-
const age = Date.now() - new Date(cached.checkedAt).getTime();
|
|
3497
|
-
if (age < CACHE_TTL_MS) {
|
|
3498
|
-
if (cached.latestVersion && isNewer(cached.latestVersion, CLI_VERSION)) {
|
|
3499
|
-
showUpdateMessage(cached.latestVersion);
|
|
3500
|
-
}
|
|
3501
|
-
return;
|
|
3502
|
-
}
|
|
3503
|
-
}
|
|
3504
|
-
try {
|
|
3505
|
-
const controller = new AbortController();
|
|
3506
|
-
const timeout = setTimeout(() => controller.abort(), 3e3);
|
|
3507
|
-
const res = await fetch("https://registry.npmjs.org/hive-intelligence/latest", {
|
|
3508
|
-
signal: controller.signal
|
|
3509
|
-
});
|
|
3510
|
-
clearTimeout(timeout);
|
|
3511
|
-
if (!res.ok) return;
|
|
3512
|
-
const data = await res.json();
|
|
3513
|
-
ensureConfigDir();
|
|
3514
|
-
writeJsonFile(getCachePath(), {
|
|
3515
|
-
checkedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
3516
|
-
latestVersion: data.version ?? null,
|
|
3517
|
-
cliVersion: CLI_VERSION
|
|
3518
|
-
});
|
|
3519
|
-
if (!data.version || !isNewer(data.version, CLI_VERSION)) return;
|
|
3520
|
-
showUpdateMessage(data.version);
|
|
3521
|
-
} catch {
|
|
3522
|
-
}
|
|
3523
|
-
}
|
|
3524
|
-
function isNewer(latest, current) {
|
|
3525
|
-
const parse = (v) => {
|
|
3526
|
-
const [main, pre = ""] = v.split("-", 2);
|
|
3527
|
-
const parts = main.split(".").map((n) => parseInt(n, 10) || 0);
|
|
3528
|
-
return { parts, pre };
|
|
3529
|
-
};
|
|
3530
|
-
const a = parse(latest);
|
|
3531
|
-
const b = parse(current);
|
|
3532
|
-
for (let i = 0; i < 3; i++) {
|
|
3533
|
-
const ai = a.parts[i] ?? 0;
|
|
3534
|
-
const bi = b.parts[i] ?? 0;
|
|
3535
|
-
if (ai !== bi) return ai > bi;
|
|
3536
|
-
}
|
|
3537
|
-
if (a.pre === b.pre) return false;
|
|
3538
|
-
if (!a.pre) return true;
|
|
3539
|
-
if (!b.pre) return false;
|
|
3540
|
-
return a.pre > b.pre;
|
|
3541
|
-
}
|
|
3542
|
-
function showUpdateMessage(newVersion) {
|
|
3543
|
-
process.stderr.write(
|
|
3544
|
-
`
|
|
3545
|
-
Update available: ${CLI_VERSION} \u2192 ${newVersion}
|
|
3546
|
-
npm: npm update -g hive-intelligence
|
|
3547
|
-
bun: bun update -g hive-intelligence
|
|
3548
|
-
|
|
3549
|
-
`
|
|
3550
|
-
);
|
|
3551
|
-
}
|
|
3552
|
-
|
|
3553
3484
|
// src/cli.ts
|
|
3554
3485
|
process.on("unhandledRejection", (err) => {
|
|
3555
3486
|
const msg = err instanceof Error ? process.env.DEBUG ? err.stack : err.message : String(err);
|
|
@@ -3567,8 +3498,8 @@ process.on("uncaughtException", (err) => {
|
|
|
3567
3498
|
process.on("SIGINT", () => process.exit(130));
|
|
3568
3499
|
process.on("SIGTERM", () => process.exit(143));
|
|
3569
3500
|
var program2 = new Command();
|
|
3570
|
-
program2.name("hive").version(
|
|
3571
|
-
"Hive Intelligence
|
|
3501
|
+
program2.name("hive").version(SERVER_VERSION).description(
|
|
3502
|
+
"Hive Intelligence \u2014 institutional-grade crypto market data, DeFi, wallets, security, DEX, NFTs, and prediction markets for AI agents and developers"
|
|
3572
3503
|
).exitOverride().configureOutput({
|
|
3573
3504
|
writeErr: (str) => process.stderr.write(str),
|
|
3574
3505
|
outputError: (str, write) => {
|
|
@@ -3592,8 +3523,26 @@ program2.hook("preAction", (thisCommand) => {
|
|
|
3592
3523
|
}
|
|
3593
3524
|
setCliFlags({ apiKey: opts.apiKey, noRetry: opts.retry === false });
|
|
3594
3525
|
});
|
|
3595
|
-
program2.action(() => {
|
|
3596
|
-
|
|
3526
|
+
program2.action(async () => {
|
|
3527
|
+
const { startStdio } = await import("./serve-KWNJK6EY.js");
|
|
3528
|
+
await startStdio(program2.opts().envFile);
|
|
3529
|
+
});
|
|
3530
|
+
program2.command("serve").description("Start the MCP server").option("--http", "Start HTTP server instead of stdio").option("--port <number>", "HTTP server port", "8080").action(async (opts) => {
|
|
3531
|
+
if (opts.http) {
|
|
3532
|
+
const port = parseInt(opts.port, 10);
|
|
3533
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
3534
|
+
process.stderr.write(
|
|
3535
|
+
`Error: invalid port "${opts.port}" (must be 1-65535)
|
|
3536
|
+
`
|
|
3537
|
+
);
|
|
3538
|
+
process.exit(ExitCode.INVALID_ARGS);
|
|
3539
|
+
}
|
|
3540
|
+
const { startHttp } = await import("./serve-KWNJK6EY.js");
|
|
3541
|
+
await startHttp(port, program2.opts().envFile);
|
|
3542
|
+
} else {
|
|
3543
|
+
const { startStdio } = await import("./serve-KWNJK6EY.js");
|
|
3544
|
+
await startStdio(program2.opts().envFile);
|
|
3545
|
+
}
|
|
3597
3546
|
});
|
|
3598
3547
|
for (const domain of NAMESPACE) {
|
|
3599
3548
|
const domainCmd = program2.command(domain.name).description(domain.description);
|
|
@@ -3664,15 +3613,15 @@ for (const domain of NAMESPACE) {
|
|
|
3664
3613
|
}
|
|
3665
3614
|
var toolsCmd = program2.command("tools").description("Discover and execute tools");
|
|
3666
3615
|
toolsCmd.command("list").description("List all registered tools").option("--category <name>", "Filter by category").option("--provider <name>", "Filter by provider prefix").option("--limit <n>", "Max tools to show", "50").option("--offset <n>", "Skip first N tools", "0").action(async (opts) => {
|
|
3667
|
-
const { listTools } = await import("./tools-
|
|
3616
|
+
const { listTools } = await import("./tools-PJHWFCAG.js");
|
|
3668
3617
|
await listTools(opts);
|
|
3669
3618
|
});
|
|
3670
3619
|
toolsCmd.command("search <query>").description("Search tools by name or description").action(async (query) => {
|
|
3671
|
-
const { searchTools } = await import("./tools-
|
|
3620
|
+
const { searchTools } = await import("./tools-PJHWFCAG.js");
|
|
3672
3621
|
await searchTools(query);
|
|
3673
3622
|
});
|
|
3674
3623
|
toolsCmd.command("info <name>").description("Show detailed tool schema and description").action(async (name) => {
|
|
3675
|
-
const { toolInfo } = await import("./tools-
|
|
3624
|
+
const { toolInfo } = await import("./tools-PJHWFCAG.js");
|
|
3676
3625
|
await toolInfo(name);
|
|
3677
3626
|
});
|
|
3678
3627
|
toolsCmd.command("call <name>").description("Execute a tool by name").option("--args <json>", "Tool arguments as JSON (or pipe JSON via stdin)").action(async (name, opts) => {
|
|
@@ -3701,76 +3650,139 @@ toolsCmd.command("call <name>").description("Execute a tool by name").option("--
|
|
|
3701
3650
|
await executeTool(name, args, timeout);
|
|
3702
3651
|
});
|
|
3703
3652
|
toolsCmd.command("refresh").description("Force-refresh the tool catalog cache").action(async () => {
|
|
3704
|
-
const { refreshTools } = await import("./tools-
|
|
3653
|
+
const { refreshTools } = await import("./tools-PJHWFCAG.js");
|
|
3705
3654
|
await refreshTools();
|
|
3706
3655
|
});
|
|
3707
3656
|
var configCmd = program2.command("config").description("Generate configuration for MCP clients");
|
|
3708
3657
|
configCmd.command("claude-desktop").description("Print Claude Desktop config JSON").action(async () => {
|
|
3709
|
-
const { configClaudeDesktop } = await import("./config-
|
|
3658
|
+
const { configClaudeDesktop } = await import("./config-TDX4VUGW.js");
|
|
3710
3659
|
configClaudeDesktop();
|
|
3711
3660
|
});
|
|
3712
3661
|
configCmd.command("cursor").description("Print Cursor config JSON").action(async () => {
|
|
3713
|
-
const { configCursor } = await import("./config-
|
|
3662
|
+
const { configCursor } = await import("./config-TDX4VUGW.js");
|
|
3714
3663
|
configCursor();
|
|
3715
3664
|
});
|
|
3716
3665
|
configCmd.command("vscode").description("Print VS Code mcp.json config").action(async () => {
|
|
3717
|
-
const { configVscode } = await import("./config-
|
|
3666
|
+
const { configVscode } = await import("./config-TDX4VUGW.js");
|
|
3718
3667
|
configVscode();
|
|
3719
3668
|
});
|
|
3720
3669
|
configCmd.command("claude-code").description("Print claude mcp add command").action(async () => {
|
|
3721
|
-
const { configClaudeCode } = await import("./config-
|
|
3670
|
+
const { configClaudeCode } = await import("./config-TDX4VUGW.js");
|
|
3722
3671
|
configClaudeCode();
|
|
3723
3672
|
});
|
|
3724
3673
|
configCmd.command("http [url]").description("Print remote HTTP connection instructions").action(async (url) => {
|
|
3725
|
-
const { configHttpUrl } = await import("./config-
|
|
3674
|
+
const { configHttpUrl } = await import("./config-TDX4VUGW.js");
|
|
3726
3675
|
configHttpUrl(
|
|
3727
3676
|
url || process.env.HIVE_DEFAULT_URL || "https://mcp.hiveintelligence.xyz"
|
|
3728
3677
|
);
|
|
3729
3678
|
});
|
|
3730
|
-
program2.command("
|
|
3731
|
-
|
|
3732
|
-
|
|
3679
|
+
program2.command("setup [client]").description(
|
|
3680
|
+
"Interactive setup wizard \u2014 log in and configure your AI client (claude-desktop, claude-code, cursor, vscode)"
|
|
3681
|
+
).action(async (client) => {
|
|
3682
|
+
const { runSetup } = await import("./setup-YTUKMPNP.js");
|
|
3683
|
+
await runSetup(client);
|
|
3684
|
+
});
|
|
3685
|
+
program2.command("init").description(
|
|
3686
|
+
"One-command setup. --all installs across every detected client; --browser runs PKCE browser auth."
|
|
3687
|
+
).option("--all", "Configure every detected MCP client + install skill packs").option("--browser", "Authenticate via PKCE browser flow").option("--skip-skills", "Don't copy skill packs into client skills dirs").option("--skip-verify", "Skip the post-install connectivity check").option("--dry-run", "Preview changes without writing").option(
|
|
3688
|
+
"--minimal",
|
|
3689
|
+
"Legacy mode: write a .env file only, no client install (kept for backwards compat)"
|
|
3690
|
+
).option(
|
|
3691
|
+
"--api-url <url>",
|
|
3692
|
+
"Override the Hive API URL (e.g. for staging or self-hosted)"
|
|
3693
|
+
).action(async (opts) => {
|
|
3694
|
+
if (opts.minimal && !opts.all && !opts.browser) {
|
|
3695
|
+
const { runInit } = await import("./init-YQ5NBICF.js");
|
|
3696
|
+
await runInit(opts);
|
|
3697
|
+
return;
|
|
3698
|
+
}
|
|
3699
|
+
const { runInitAll } = await import("./init-all-6OWEQALB.js");
|
|
3700
|
+
const exitCode = await runInitAll({
|
|
3701
|
+
all: Boolean(opts.all),
|
|
3702
|
+
browser: Boolean(opts.browser),
|
|
3703
|
+
skipSkills: Boolean(opts.skipSkills),
|
|
3704
|
+
skipVerify: Boolean(opts.skipVerify),
|
|
3705
|
+
dryRun: Boolean(opts.dryRun),
|
|
3706
|
+
json: Boolean(program2.opts().json),
|
|
3707
|
+
apiUrl: opts.apiUrl
|
|
3708
|
+
});
|
|
3709
|
+
if (exitCode !== 0) process.exit(exitCode);
|
|
3710
|
+
});
|
|
3711
|
+
program2.command("uninstall").description(
|
|
3712
|
+
"Remove Hive's MCP entry from every client config + delete copied skill packs"
|
|
3713
|
+
).option(
|
|
3714
|
+
"--all",
|
|
3715
|
+
"Clean every known client (default; explicit flag for symmetry with `init --all`)"
|
|
3716
|
+
).option("--dry-run", "Preview removals without changing anything").action(async (opts) => {
|
|
3717
|
+
const { runUninstall } = await import("./uninstall-HWXEIP6K.js");
|
|
3718
|
+
const exitCode = await runUninstall({
|
|
3719
|
+
all: opts.all !== false,
|
|
3720
|
+
dryRun: Boolean(opts.dryRun),
|
|
3721
|
+
json: Boolean(program2.opts().json)
|
|
3722
|
+
});
|
|
3723
|
+
if (exitCode !== 0) process.exit(exitCode);
|
|
3733
3724
|
});
|
|
3734
3725
|
program2.command("doctor").description("Diagnose environment and server connectivity").option("--probe", "Run live API probes (slower)").action(async (opts) => {
|
|
3735
|
-
const { runDoctor } = await import("./doctor-
|
|
3726
|
+
const { runDoctor } = await import("./doctor-5K5UWHNX.js");
|
|
3736
3727
|
await runDoctor(opts);
|
|
3737
3728
|
});
|
|
3738
3729
|
program2.command("completion <shell>").description("Generate shell completion script (bash, zsh, fish, powershell)").option("--install", "Auto-install to shell rc file").action(async (shell, opts) => {
|
|
3739
3730
|
if (opts.install) {
|
|
3740
|
-
const { installCompletion } = await import("./completion-
|
|
3731
|
+
const { installCompletion } = await import("./completion-BELZL7ND.js");
|
|
3741
3732
|
await installCompletion(shell);
|
|
3742
3733
|
} else {
|
|
3743
|
-
const { generateCompletion } = await import("./completion-
|
|
3734
|
+
const { generateCompletion } = await import("./completion-BELZL7ND.js");
|
|
3744
3735
|
await generateCompletion(shell);
|
|
3745
3736
|
}
|
|
3746
3737
|
});
|
|
3747
3738
|
var authCmd = program2.command("auth").description("Manage authentication profiles");
|
|
3748
|
-
authCmd.command("
|
|
3749
|
-
const {
|
|
3739
|
+
authCmd.command("signup").description("Create a new Hive account and get your API key").option("--profile <name>", "Profile name", "default").action(async (opts) => {
|
|
3740
|
+
const { runSignup } = await import("./auth-KKINNBXT.js");
|
|
3741
|
+
await runSignup(opts);
|
|
3742
|
+
});
|
|
3743
|
+
authCmd.command("login").description("Log in via browser (or --manual to paste API key)").option("--profile <name>", "Profile name", "default").option("--manual", "Manually paste API key instead of browser login").action(async (opts) => {
|
|
3744
|
+
const { runLogin } = await import("./auth-KKINNBXT.js");
|
|
3750
3745
|
await runLogin(opts);
|
|
3751
3746
|
});
|
|
3752
3747
|
authCmd.command("logout").description("Remove stored credentials").action(async () => {
|
|
3753
|
-
const { runLogout } = await import("./auth-
|
|
3748
|
+
const { runLogout } = await import("./auth-KKINNBXT.js");
|
|
3754
3749
|
await runLogout();
|
|
3755
3750
|
});
|
|
3756
3751
|
authCmd.command("whoami").description("Show current profile").action(async () => {
|
|
3757
|
-
const { runWhoami } = await import("./auth-
|
|
3752
|
+
const { runWhoami } = await import("./auth-KKINNBXT.js");
|
|
3758
3753
|
await runWhoami();
|
|
3759
3754
|
});
|
|
3760
3755
|
authCmd.command("profiles").description("List all profiles").action(async () => {
|
|
3761
|
-
const { runProfiles } = await import("./auth-
|
|
3756
|
+
const { runProfiles } = await import("./auth-KKINNBXT.js");
|
|
3762
3757
|
await runProfiles();
|
|
3763
3758
|
});
|
|
3764
3759
|
authCmd.command("switch <name>").description("Switch active profile").action(async (name) => {
|
|
3765
|
-
const { runSwitch } = await import("./auth-
|
|
3760
|
+
const { runSwitch } = await import("./auth-KKINNBXT.js");
|
|
3766
3761
|
await runSwitch(name);
|
|
3767
3762
|
});
|
|
3763
|
+
var keysCmd = program2.command("keys").description("Manage your Hive API keys");
|
|
3764
|
+
keysCmd.command("list").description("List your API keys").action(async () => {
|
|
3765
|
+
const { runKeysList } = await import("./auth-KKINNBXT.js");
|
|
3766
|
+
await runKeysList();
|
|
3767
|
+
});
|
|
3768
|
+
keysCmd.command("create").description("Create a new API key").option("--name <name>", "Key name", "CLI Key").action(async (opts) => {
|
|
3769
|
+
const { runKeysCreate } = await import("./auth-KKINNBXT.js");
|
|
3770
|
+
await runKeysCreate(opts);
|
|
3771
|
+
});
|
|
3772
|
+
keysCmd.command("revoke <id>").description("Revoke an API key").action(async (id) => {
|
|
3773
|
+
const { runKeysRevoke } = await import("./auth-KKINNBXT.js");
|
|
3774
|
+
await runKeysRevoke(id);
|
|
3775
|
+
});
|
|
3776
|
+
program2.command("usage").description("Show your API usage and plan limits").action(async () => {
|
|
3777
|
+
const { runUsage } = await import("./auth-KKINNBXT.js");
|
|
3778
|
+
await runUsage();
|
|
3779
|
+
});
|
|
3768
3780
|
program2.command("status").description("Quick health and version check").action(async () => {
|
|
3769
|
-
const { runStatus } = await import("./doctor-
|
|
3781
|
+
const { runStatus } = await import("./doctor-5K5UWHNX.js");
|
|
3770
3782
|
await runStatus();
|
|
3771
3783
|
});
|
|
3772
3784
|
program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
|
|
3773
|
-
const { runOpen } = await import("./open-
|
|
3785
|
+
const { runOpen } = await import("./open-YUIJP37F.js");
|
|
3774
3786
|
runOpen(target);
|
|
3775
3787
|
});
|
|
3776
3788
|
program2.command("watch <domain> <command>").description("Poll a tool on interval").option("--interval <seconds>", "Poll interval in seconds", "30").option("--args <json>", "Tool arguments as JSON").action(async (domain, command, opts) => {
|
|
@@ -3797,18 +3809,18 @@ program2.command("watch <domain> <command>").description("Poll a tool on interva
|
|
|
3797
3809
|
}
|
|
3798
3810
|
const interval = parseInt(opts.interval, 10);
|
|
3799
3811
|
const timeout = parseInt(program2.opts().timeout, 10);
|
|
3800
|
-
const { runWatch } = await import("./watch-
|
|
3812
|
+
const { runWatch } = await import("./watch-KZ5EDZK3.js");
|
|
3801
3813
|
await runWatch(cmdDef.tool, args, interval, timeout);
|
|
3802
3814
|
});
|
|
3803
3815
|
var aliasCmd = program2.command("alias").description("Manage command aliases");
|
|
3804
3816
|
aliasCmd.command("set <name> <command>").description("Create an alias").action(async (name, command) => {
|
|
3805
|
-
const { setAlias } = await import("./alias-
|
|
3817
|
+
const { setAlias } = await import("./alias-CZ3DEYHF.js");
|
|
3806
3818
|
setAlias(name, command);
|
|
3807
3819
|
process.stderr.write(`Alias "${name}" set.
|
|
3808
3820
|
`);
|
|
3809
3821
|
});
|
|
3810
3822
|
aliasCmd.command("list").description("Show all aliases").action(async () => {
|
|
3811
|
-
const { getAliases } = await import("./alias-
|
|
3823
|
+
const { getAliases } = await import("./alias-CZ3DEYHF.js");
|
|
3812
3824
|
const aliases = getAliases();
|
|
3813
3825
|
const entries = Object.entries(aliases);
|
|
3814
3826
|
if (entries.length === 0) {
|
|
@@ -3822,22 +3834,22 @@ aliasCmd.command("list").description("Show all aliases").action(async () => {
|
|
|
3822
3834
|
process.stderr.write("\n");
|
|
3823
3835
|
});
|
|
3824
3836
|
aliasCmd.command("remove <name>").description("Remove an alias").action(async (name) => {
|
|
3825
|
-
const { removeAlias } = await import("./alias-
|
|
3837
|
+
const { removeAlias } = await import("./alias-CZ3DEYHF.js");
|
|
3826
3838
|
removeAlias(name);
|
|
3827
3839
|
process.stderr.write(`Alias "${name}" removed.
|
|
3828
3840
|
`);
|
|
3829
3841
|
});
|
|
3830
3842
|
var telemetryCmd = program2.command("telemetry").description("Control anonymous usage telemetry");
|
|
3831
3843
|
telemetryCmd.command("enable").description("Enable telemetry").action(async () => {
|
|
3832
|
-
const { enableTelemetry } = await import("./telemetry-
|
|
3844
|
+
const { enableTelemetry } = await import("./telemetry-5IPRKZBL.js");
|
|
3833
3845
|
enableTelemetry();
|
|
3834
3846
|
});
|
|
3835
3847
|
telemetryCmd.command("disable").description("Disable telemetry").action(async () => {
|
|
3836
|
-
const { disableTelemetry } = await import("./telemetry-
|
|
3848
|
+
const { disableTelemetry } = await import("./telemetry-5IPRKZBL.js");
|
|
3837
3849
|
disableTelemetry();
|
|
3838
3850
|
});
|
|
3839
3851
|
telemetryCmd.command("status").description("Show telemetry status").action(async () => {
|
|
3840
|
-
const { telemetryStatus } = await import("./telemetry-
|
|
3852
|
+
const { telemetryStatus } = await import("./telemetry-5IPRKZBL.js");
|
|
3841
3853
|
telemetryStatus();
|
|
3842
3854
|
});
|
|
3843
3855
|
program2.addHelpText(
|
|
@@ -3848,7 +3860,6 @@ Examples:
|
|
|
3848
3860
|
$ hive market price --ids bitcoin --vs usd
|
|
3849
3861
|
$ hive defi tvl --protocol aave
|
|
3850
3862
|
$ hive security scan --token 0x...
|
|
3851
|
-
$ hive portfolio balance --address 0x...
|
|
3852
3863
|
$ hive tools search "price" --jq ".[] | .name"
|
|
3853
3864
|
$ hive status
|
|
3854
3865
|
$ hive alias set btc 'market price --ids bitcoin --vs usd'
|
|
@@ -3858,7 +3869,7 @@ Examples:
|
|
|
3858
3869
|
);
|
|
3859
3870
|
checkForUpdates();
|
|
3860
3871
|
{
|
|
3861
|
-
const { expandAlias } = await import("./alias-
|
|
3872
|
+
const { expandAlias } = await import("./alias-CZ3DEYHF.js");
|
|
3862
3873
|
const expanded = expandAlias(process.argv);
|
|
3863
3874
|
if (expanded !== process.argv) {
|
|
3864
3875
|
process.argv = expanded;
|