hive-intelligence 1.1.0 → 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.
Files changed (163) hide show
  1. package/README.md +243 -166
  2. package/agent-skills/.claude-plugin/plugin.json +105 -0
  3. package/{LICENSE → agent-skills/LICENSE} +1 -1
  4. package/agent-skills/README.md +146 -0
  5. package/agent-skills/SKILL.md +68 -0
  6. package/agent-skills/evals/README.md +20 -0
  7. package/agent-skills/evals/trigger-queries.json +194 -0
  8. package/agent-skills/package.json +49 -0
  9. package/agent-skills/packs/hive-build/SKILL.md +327 -0
  10. package/agent-skills/packs/hive-build/evals/evals.json +28 -0
  11. package/agent-skills/packs/hive-build-onboarding/SKILL.md +137 -0
  12. package/agent-skills/packs/hive-build-onboarding/evals/evals.json +27 -0
  13. package/agent-skills/packs/hive-cli/SKILL.md +141 -0
  14. package/agent-skills/packs/hive-cli/evals/evals.json +27 -0
  15. package/agent-skills/packs/hive-defi-research/SKILL.md +42 -0
  16. package/agent-skills/packs/hive-defi-research/evals/evals.json +27 -0
  17. package/agent-skills/packs/hive-defi-research/references/workflow.md +41 -0
  18. package/agent-skills/packs/hive-dex-pool-analysis/SKILL.md +41 -0
  19. package/agent-skills/packs/hive-dex-pool-analysis/evals/evals.json +27 -0
  20. package/agent-skills/packs/hive-dex-pool-analysis/references/workflow.md +42 -0
  21. package/agent-skills/packs/hive-market-research/SKILL.md +45 -0
  22. package/agent-skills/packs/hive-market-research/evals/evals.json +27 -0
  23. package/agent-skills/packs/hive-market-research/references/workflow.md +47 -0
  24. package/agent-skills/packs/hive-mcp/SKILL.md +224 -0
  25. package/agent-skills/packs/hive-mcp/evals/evals.json +38 -0
  26. package/agent-skills/packs/hive-mcp/references/client-install-matrix.md +83 -0
  27. package/agent-skills/packs/hive-network-infrastructure/SKILL.md +44 -0
  28. package/agent-skills/packs/hive-network-infrastructure/evals/evals.json +27 -0
  29. package/agent-skills/packs/hive-network-infrastructure/references/workflow.md +41 -0
  30. package/agent-skills/packs/hive-nft-research/SKILL.md +41 -0
  31. package/agent-skills/packs/hive-nft-research/evals/evals.json +27 -0
  32. package/agent-skills/packs/hive-nft-research/references/workflow.md +42 -0
  33. package/agent-skills/packs/hive-prediction-markets/SKILL.md +44 -0
  34. package/agent-skills/packs/hive-prediction-markets/evals/evals.json +27 -0
  35. package/agent-skills/packs/hive-prediction-markets/references/workflow.md +42 -0
  36. package/agent-skills/packs/hive-query/SKILL.md +98 -0
  37. package/agent-skills/packs/hive-query/evals/evals.json +38 -0
  38. package/agent-skills/packs/hive-query/references/root-mcp-workflow.md +54 -0
  39. package/agent-skills/packs/hive-security-risk/SKILL.md +42 -0
  40. package/agent-skills/packs/hive-security-risk/evals/evals.json +27 -0
  41. package/agent-skills/packs/hive-security-risk/references/workflow.md +46 -0
  42. package/agent-skills/packs/hive-solana-analysis/SKILL.md +42 -0
  43. package/agent-skills/packs/hive-solana-analysis/evals/evals.json +27 -0
  44. package/agent-skills/packs/hive-solana-analysis/references/workflow.md +42 -0
  45. package/agent-skills/packs/hive-token-diligence/SKILL.md +44 -0
  46. package/agent-skills/packs/hive-token-diligence/evals/evals.json +27 -0
  47. package/agent-skills/packs/hive-token-diligence/references/workflow.md +45 -0
  48. package/agent-skills/packs/hive-tool-discovery/SKILL.md +49 -0
  49. package/agent-skills/packs/hive-tool-discovery/evals/evals.json +38 -0
  50. package/agent-skills/packs/hive-tool-discovery/references/discovery-surfaces.md +62 -0
  51. package/agent-skills/packs/hive-wallet-investigation/SKILL.md +42 -0
  52. package/agent-skills/packs/hive-wallet-investigation/evals/evals.json +27 -0
  53. package/agent-skills/packs/hive-wallet-investigation/references/workflow.md +45 -0
  54. package/agent-skills/references/agents-routing.md +49 -0
  55. package/agent-skills/scripts/validate-agent-skills-package.mjs +178 -0
  56. package/agent-skills/skills.sh.json +40 -0
  57. package/bin/hive-mcp.js +33 -0
  58. package/build/{alias-INGXWFCG.js → alias-CZ3DEYHF.js} +3 -3
  59. package/build/api-client-I23XLSHU.js +28 -0
  60. package/build/auth-KKINNBXT.js +40 -0
  61. package/build/browser-auth-EEFGRHWY.js +9 -0
  62. package/build/{cache-US4LSZPI.js → cache-EGNMENNA.js} +3 -3
  63. package/build/chunk-2MYMHMBF.js +340 -0
  64. package/build/chunk-2MYMHMBF.js.map +1 -0
  65. package/build/chunk-2X3U4DFK.js +77369 -0
  66. package/build/chunk-2X3U4DFK.js.map +1 -0
  67. package/build/chunk-B6G222LS.js +265 -0
  68. package/build/chunk-B6G222LS.js.map +1 -0
  69. package/build/{chunk-WKVZVQTG.js → chunk-DYJBTKNR.js} +4 -4
  70. package/build/chunk-DYJBTKNR.js.map +1 -0
  71. package/build/chunk-IDZD2NVG.js +247 -0
  72. package/build/chunk-IDZD2NVG.js.map +1 -0
  73. package/build/chunk-IZTN7WFH.js +250 -0
  74. package/build/chunk-IZTN7WFH.js.map +1 -0
  75. package/build/{chunk-QMRVH5ZP.js → chunk-KBVPIZS4.js} +10 -2
  76. package/build/chunk-KGYBTXIN.js +86 -0
  77. package/build/chunk-KGYBTXIN.js.map +1 -0
  78. package/build/{chunk-X7ETBCBP.js → chunk-MPIUUE3T.js} +60 -272
  79. package/build/chunk-MPIUUE3T.js.map +1 -0
  80. package/build/chunk-PGBVNMNZ.js +127 -0
  81. package/build/chunk-PGBVNMNZ.js.map +1 -0
  82. package/build/chunk-QNCI4DEB.js +88 -0
  83. package/build/chunk-QNCI4DEB.js.map +1 -0
  84. package/build/chunk-RKICZ6DZ.js +497 -0
  85. package/build/chunk-RKICZ6DZ.js.map +1 -0
  86. package/build/chunk-UKHZIVDT.js +44 -0
  87. package/build/chunk-UKHZIVDT.js.map +1 -0
  88. package/build/{chunk-XQJ6PB2L.js → chunk-V77LO4RO.js} +1 -1
  89. package/build/chunk-V77LO4RO.js.map +1 -0
  90. package/build/{chunk-CP3FXEQA.js → chunk-XYBEFFZ3.js} +5 -6
  91. package/build/chunk-XYBEFFZ3.js.map +1 -0
  92. package/build/cli.js +134 -122
  93. package/build/cli.js.map +1 -1
  94. package/build/{completion-SBTSXTR3.js → completion-BELZL7ND.js} +55 -50
  95. package/build/completion-BELZL7ND.js.map +1 -0
  96. package/build/config-TDX4VUGW.js +58 -0
  97. package/build/{config-dir-IEOID7Q6.js → config-dir-V43W2WIA.js} +3 -3
  98. package/build/{doctor-7WZMCQC7.js → doctor-5K5UWHNX.js} +13 -13
  99. package/build/doctor-5K5UWHNX.js.map +1 -0
  100. package/build/{errors-U6UZWVSD.js → errors-E6MVUBNA.js} +3 -3
  101. package/build/format-TSFSI2K7.js +43 -0
  102. package/build/format-TSFSI2K7.js.map +1 -0
  103. package/build/{init-CAVIFVSH.js → init-YQ5NBICF.js} +2 -2
  104. package/build/init-all-6OWEQALB.js +274 -0
  105. package/build/init-all-6OWEQALB.js.map +1 -0
  106. package/build/mcpServer-AEX3RQ4U.js +20 -0
  107. package/build/mcpServer-AEX3RQ4U.js.map +1 -0
  108. package/build/{namespace-7SBV4G7R.js → namespace-PVHBFDW2.js} +3 -3
  109. package/build/namespace-PVHBFDW2.js.map +1 -0
  110. package/build/{open-FUXYIHFO.js → open-YUIJP37F.js} +6 -6
  111. package/build/open-YUIJP37F.js.map +1 -0
  112. package/build/{output-7PGQWJY2.js → output-IYJBFCYK.js} +3 -3
  113. package/build/output-IYJBFCYK.js.map +1 -0
  114. package/build/serve-KWNJK6EY.js +44 -0
  115. package/build/serve-KWNJK6EY.js.map +1 -0
  116. package/build/server.js +4749 -14332
  117. package/build/server.js.map +1 -1
  118. package/build/setup-YTUKMPNP.js +136 -0
  119. package/build/setup-YTUKMPNP.js.map +1 -0
  120. package/build/stdio.js +31 -0
  121. package/build/stdio.js.map +1 -0
  122. package/build/{telemetry-KNWMQURH.js → telemetry-5IPRKZBL.js} +4 -4
  123. package/build/telemetry-5IPRKZBL.js.map +1 -0
  124. package/build/{tools-XEGCLA4I.js → tools-PJHWFCAG.js} +15 -15
  125. package/build/uninstall-HWXEIP6K.js +115 -0
  126. package/build/uninstall-HWXEIP6K.js.map +1 -0
  127. package/build/{watch-A75SVIQ6.js → watch-KZ5EDZK3.js} +7 -7
  128. package/package.json +124 -24
  129. package/bin/hive.js +0 -25
  130. package/build/auth-77MKFFBQ.js +0 -233
  131. package/build/auth-77MKFFBQ.js.map +0 -1
  132. package/build/chunk-CP3FXEQA.js.map +0 -1
  133. package/build/chunk-DTUDM6HX.js +0 -3108
  134. package/build/chunk-DTUDM6HX.js.map +0 -1
  135. package/build/chunk-LBTLYTZS.js +0 -115
  136. package/build/chunk-LBTLYTZS.js.map +0 -1
  137. package/build/chunk-OK3LSM73.js +0 -22
  138. package/build/chunk-OK3LSM73.js.map +0 -1
  139. package/build/chunk-RRI526CJ.js +0 -212
  140. package/build/chunk-RRI526CJ.js.map +0 -1
  141. package/build/chunk-WKVZVQTG.js.map +0 -1
  142. package/build/chunk-X7ETBCBP.js.map +0 -1
  143. package/build/chunk-XQJ6PB2L.js.map +0 -1
  144. package/build/completion-SBTSXTR3.js.map +0 -1
  145. package/build/config-2VDB2ZHE.js +0 -100
  146. package/build/config-2VDB2ZHE.js.map +0 -1
  147. package/build/doctor-7WZMCQC7.js.map +0 -1
  148. package/build/format-CVLLK6GD.js +0 -75
  149. package/build/format-CVLLK6GD.js.map +0 -1
  150. package/build/open-FUXYIHFO.js.map +0 -1
  151. package/build/version-3TZ3U4IR.js +0 -9
  152. /package/build/{alias-INGXWFCG.js.map → alias-CZ3DEYHF.js.map} +0 -0
  153. /package/build/{chunk-QMRVH5ZP.js.map → api-client-I23XLSHU.js.map} +0 -0
  154. /package/build/{config-dir-IEOID7Q6.js.map → auth-KKINNBXT.js.map} +0 -0
  155. /package/build/{errors-U6UZWVSD.js.map → browser-auth-EEFGRHWY.js.map} +0 -0
  156. /package/build/{cache-US4LSZPI.js.map → cache-EGNMENNA.js.map} +0 -0
  157. /package/build/{namespace-7SBV4G7R.js.map → chunk-KBVPIZS4.js.map} +0 -0
  158. /package/build/{output-7PGQWJY2.js.map → config-TDX4VUGW.js.map} +0 -0
  159. /package/build/{telemetry-KNWMQURH.js.map → config-dir-V43W2WIA.js.map} +0 -0
  160. /package/build/{version-3TZ3U4IR.js.map → errors-E6MVUBNA.js.map} +0 -0
  161. /package/build/{init-CAVIFVSH.js.map → init-YQ5NBICF.js.map} +0 -0
  162. /package/build/{tools-XEGCLA4I.js.map → tools-PJHWFCAG.js.map} +0 -0
  163. /package/build/{watch-A75SVIQ6.js.map → watch-KZ5EDZK3.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  NAMESPACE
4
- } from "./chunk-X7ETBCBP.js";
5
- import "./chunk-QMRVH5ZP.js";
4
+ } from "./chunk-MPIUUE3T.js";
5
+ import "./chunk-KBVPIZS4.js";
6
6
 
7
7
  // src/cli/completion.ts
8
8
  import {
@@ -14,6 +14,8 @@ import {
14
14
  } from "fs";
15
15
  import { join } from "path";
16
16
  import { homedir } from "os";
17
+ var PRIMARY_COMMAND = "hive";
18
+ var COMPLETION_COMMANDS = ["hive", "hive-intelligence", "hive-mcp"];
17
19
  function getTopLevel() {
18
20
  return [
19
21
  "serve",
@@ -61,9 +63,9 @@ function generateBash() {
61
63
  const cases = Object.entries(domainSubs).map(
62
64
  ([domain, subs]) => ` ${domain}) COMPREPLY=($(compgen -W "${subs.join(" ")}" -- "$cur")); return ;;`
63
65
  ).join("\n");
64
- console.log(`# Hive MCP bash completion
65
- # Add to ~/.bashrc: eval "$(hive-mcp completion bash)"
66
- _hive_mcp_completions() {
66
+ console.log(`# Hive CLI bash completion
67
+ # Add to ~/.bashrc: eval "$(hive completion bash)"
68
+ _hive_completions() {
67
69
  local cur="\${COMP_WORDS[COMP_CWORD]}"
68
70
  local prev="\${COMP_WORDS[COMP_CWORD-1]}"
69
71
 
@@ -80,7 +82,7 @@ ${cases}
80
82
 
81
83
  COMPREPLY=($(compgen -W "${topLevel.join(" ")}" -- "$cur"))
82
84
  }
83
- complete -F _hive_mcp_completions hive-mcp`);
85
+ complete -F _hive_completions ${COMPLETION_COMMANDS.join(" ")}`);
84
86
  }
85
87
  function generateZsh() {
86
88
  const domainEntries = NAMESPACE.map(
@@ -96,9 +98,9 @@ ${subs}
96
98
  _describe 'subcommand' subcmds
97
99
  ;;`;
98
100
  }).join("\n");
99
- console.log(`# Hive MCP zsh completion
100
- # Add to ~/.zshrc: eval "$(hive-mcp completion zsh)"
101
- _hive_mcp() {
101
+ console.log(`# Hive CLI zsh completion
102
+ # Add to ~/.zshrc: eval "$(hive completion zsh)"
103
+ _hive() {
102
104
  local -a commands
103
105
  commands=(
104
106
  'serve:Start the MCP server'
@@ -154,54 +156,57 @@ ${subcommandCases}
154
156
  esac
155
157
  fi
156
158
  }
157
- compdef _hive_mcp hive-mcp`);
159
+ compdef _hive ${COMPLETION_COMMANDS.join(" ")}`);
158
160
  }
159
161
  function generateFish() {
160
162
  const topLevel = getTopLevel();
161
163
  const lines = [
162
- "# Hive MCP fish completion",
163
- "# Save to: ~/.config/fish/completions/hive-mcp.fish",
164
+ "# Hive CLI fish completion",
165
+ "# Save to: ~/.config/fish/completions/hive.fish",
164
166
  ""
165
167
  ];
166
- for (const cmd of topLevel) {
167
- const desc = NAMESPACE.find((d) => d.name === cmd)?.description ?? cmd;
168
- lines.push(
169
- `complete -c hive-mcp -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`
170
- );
171
- }
172
- const domainSubs = getDomainSubs();
173
- for (const [domain, subs] of Object.entries(domainSubs)) {
174
- for (const sub of subs) {
175
- const desc = NAMESPACE.find((d) => d.name === domain)?.commands.find(
176
- (c) => c.name === sub
177
- )?.description ?? sub;
168
+ for (const commandName of COMPLETION_COMMANDS) {
169
+ for (const cmd of topLevel) {
170
+ const desc = NAMESPACE.find((d) => d.name === cmd)?.description ?? cmd;
178
171
  lines.push(
179
- `complete -c hive-mcp -n '__fish_seen_subcommand_from ${domain}' -a '${sub}' -d '${desc}'`
172
+ `complete -c ${commandName} -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`
173
+ );
174
+ }
175
+ const domainSubs = getDomainSubs();
176
+ for (const [domain, subs] of Object.entries(domainSubs)) {
177
+ for (const sub of subs) {
178
+ const desc = NAMESPACE.find((d) => d.name === domain)?.commands.find(
179
+ (c) => c.name === sub
180
+ )?.description ?? sub;
181
+ lines.push(
182
+ `complete -c ${commandName} -n '__fish_seen_subcommand_from ${domain}' -a '${sub}' -d '${desc}'`
183
+ );
184
+ }
185
+ }
186
+ for (const sub of ["list", "search", "info", "call", "refresh"]) {
187
+ lines.push(
188
+ `complete -c ${commandName} -n '__fish_seen_subcommand_from tools' -a '${sub}'`
189
+ );
190
+ }
191
+ for (const sub of ["login", "logout", "whoami", "profiles", "switch"]) {
192
+ lines.push(
193
+ `complete -c ${commandName} -n '__fish_seen_subcommand_from auth' -a '${sub}'`
194
+ );
195
+ }
196
+ for (const sub of ["set", "list", "remove"]) {
197
+ lines.push(
198
+ `complete -c ${commandName} -n '__fish_seen_subcommand_from alias' -a '${sub}'`
180
199
  );
181
200
  }
182
- }
183
- for (const sub of ["list", "search", "info", "call", "refresh"]) {
184
- lines.push(
185
- `complete -c hive-mcp -n '__fish_seen_subcommand_from tools' -a '${sub}'`
186
- );
187
- }
188
- for (const sub of ["login", "logout", "whoami", "profiles", "switch"]) {
189
- lines.push(
190
- `complete -c hive-mcp -n '__fish_seen_subcommand_from auth' -a '${sub}'`
191
- );
192
- }
193
- for (const sub of ["set", "list", "remove"]) {
194
- lines.push(
195
- `complete -c hive-mcp -n '__fish_seen_subcommand_from alias' -a '${sub}'`
196
- );
197
201
  }
198
202
  console.log(lines.join("\n"));
199
203
  }
200
204
  function generatePowerShell() {
201
205
  const topLevel = getTopLevel();
202
- console.log(`# Hive MCP PowerShell completion
203
- # Add to your $PROFILE: . (hive-mcp completion powershell)
204
- Register-ArgumentCompleter -Native -CommandName hive-mcp -ScriptBlock {
206
+ const commandNames = COMPLETION_COMMANDS.map((cmd) => `'${cmd}'`).join(",");
207
+ console.log(`# Hive CLI PowerShell completion
208
+ # Add to your $PROFILE: . (hive completion powershell)
209
+ Register-ArgumentCompleter -Native -CommandName ${commandNames} -ScriptBlock {
205
210
  param($wordToComplete, $commandAst, $cursorPosition)
206
211
  $commands = @(${topLevel.map((c) => `'${c}'`).join(", ")})
207
212
  $commands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
@@ -213,13 +218,13 @@ async function installCompletion(shell) {
213
218
  switch (shell) {
214
219
  case "bash": {
215
220
  const rcFile = join(homedir(), ".bashrc");
216
- const line = 'eval "$(hive-mcp completion bash)"';
221
+ const line = 'eval "$(hive completion bash)"';
217
222
  if (existsSync(rcFile) && readFileSync(rcFile, "utf-8").includes(line)) {
218
223
  process.stderr.write("Bash completion already installed.\n");
219
224
  return;
220
225
  }
221
226
  appendFileSync(rcFile, `
222
- # Hive MCP CLI completion
227
+ # Hive CLI completion
223
228
  ${line}
224
229
  `);
225
230
  process.stderr.write(
@@ -230,13 +235,13 @@ ${line}
230
235
  }
231
236
  case "zsh": {
232
237
  const rcFile = join(homedir(), ".zshrc");
233
- const line = 'eval "$(hive-mcp completion zsh)"';
238
+ const line = 'eval "$(hive completion zsh)"';
234
239
  if (existsSync(rcFile) && readFileSync(rcFile, "utf-8").includes(line)) {
235
240
  process.stderr.write("Zsh completion already installed.\n");
236
241
  return;
237
242
  }
238
243
  appendFileSync(rcFile, `
239
- # Hive MCP CLI completion
244
+ # Hive CLI completion
240
245
  ${line}
241
246
  `);
242
247
  process.stderr.write(
@@ -248,9 +253,9 @@ ${line}
248
253
  case "fish": {
249
254
  const dir = join(homedir(), ".config", "fish", "completions");
250
255
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
251
- const filePath = join(dir, "hive-mcp.fish");
256
+ const filePath = join(dir, "hive.fish");
252
257
  const { execFileSync } = await import("child_process");
253
- const bin = process.argv[1] ?? "hive-mcp";
258
+ const bin = process.argv[1] ?? PRIMARY_COMMAND;
254
259
  const output = execFileSync(bin, ["completion", "fish"], {
255
260
  encoding: "utf-8"
256
261
  });
@@ -271,4 +276,4 @@ export {
271
276
  generateCompletion,
272
277
  installCompletion
273
278
  };
274
- //# sourceMappingURL=completion-SBTSXTR3.js.map
279
+ //# sourceMappingURL=completion-BELZL7ND.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/completion.ts"],"sourcesContent":["import {\n existsSync,\n readFileSync,\n appendFileSync,\n writeFileSync,\n mkdirSync,\n} from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { NAMESPACE } from \"./namespace.js\";\n\nconst PRIMARY_COMMAND = \"hive\";\nconst COMPLETION_COMMANDS = [\"hive\", \"hive-intelligence\", \"hive-mcp\"];\n\nfunction getTopLevel(): string[] {\n return [\n \"serve\",\n \"doctor\",\n \"tools\",\n \"config\",\n \"init\",\n \"completion\",\n \"auth\",\n \"status\",\n \"open\",\n \"watch\",\n \"alias\",\n \"telemetry\",\n ...NAMESPACE.map((d) => d.name),\n ];\n}\n\nfunction getDomainSubs(): Record<string, string[]> {\n const subs: Record<string, string[]> = {};\n for (const domain of NAMESPACE) {\n subs[domain.name] = domain.commands.map((c) => c.name);\n }\n return subs;\n}\n\nexport async function generateCompletion(shell: string): Promise<void> {\n switch (shell) {\n case \"bash\":\n return generateBash();\n case \"zsh\":\n return generateZsh();\n case \"fish\":\n return generateFish();\n case \"powershell\":\n return generatePowerShell();\n default:\n console.error(\n `Unsupported shell: ${shell}. Use: bash, zsh, fish, powershell`,\n );\n process.exit(2);\n }\n}\n\nfunction generateBash(): void {\n const topLevel = getTopLevel();\n const domainSubs = getDomainSubs();\n\n const cases = Object.entries(domainSubs)\n .map(\n ([domain, subs]) =>\n ` ${domain}) COMPREPLY=($(compgen -W \"${subs.join(\" \")}\" -- \"$cur\")); return ;;`,\n )\n .join(\"\\n\");\n\n console.log(`# Hive CLI bash completion\n# Add to ~/.bashrc: eval \"$(hive completion bash)\"\n_hive_completions() {\n local cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n local prev=\"\\${COMP_WORDS[COMP_CWORD-1]}\"\n\n case \"$prev\" in\n${cases}\n tools) COMPREPLY=($(compgen -W \"list search info call refresh\" -- \"$cur\")); return ;;\n config) COMPREPLY=($(compgen -W \"claude-desktop cursor vscode claude-code http\" -- \"$cur\")); return ;;\n auth) COMPREPLY=($(compgen -W \"login logout whoami profiles switch\" -- \"$cur\")); return ;;\n alias) COMPREPLY=($(compgen -W \"set list remove\" -- \"$cur\")); return ;;\n telemetry) COMPREPLY=($(compgen -W \"enable disable status\" -- \"$cur\")); return ;;\n open) COMPREPLY=($(compgen -W \"dashboard docs status github\" -- \"$cur\")); return ;;\n completion) COMPREPLY=($(compgen -W \"bash zsh fish powershell install\" -- \"$cur\")); return ;;\n esac\n\n COMPREPLY=($(compgen -W \"${topLevel.join(\" \")}\" -- \"$cur\"))\n}\ncomplete -F _hive_completions ${COMPLETION_COMMANDS.join(\" \")}`);\n}\n\nfunction generateZsh(): void {\n const domainEntries = NAMESPACE.map(\n (d) => ` '${d.name}:${d.description}'`,\n ).join(\"\\n\");\n\n const subcommandCases = NAMESPACE.map((d) => {\n const subs = d.commands\n .map((c) => ` '${c.name}:${c.description}'`)\n .join(\"\\n\");\n return ` ${d.name})\n local -a subcmds\n subcmds=(\n${subs}\n )\n _describe 'subcommand' subcmds\n ;;`;\n }).join(\"\\n\");\n\n console.log(`# Hive CLI zsh completion\n# Add to ~/.zshrc: eval \"$(hive completion zsh)\"\n_hive() {\n local -a commands\n commands=(\n 'serve:Start the MCP server'\n 'doctor:Diagnose environment and connectivity'\n 'tools:Discover and execute tools'\n 'config:Generate MCP client configs'\n 'init:Interactive API key setup'\n 'completion:Generate shell completions'\n 'auth:Manage authentication profiles'\n 'status:Quick health and version check'\n 'open:Open Hive dashboard in browser'\n 'watch:Poll a tool on interval'\n 'alias:Manage command aliases'\n 'telemetry:Control anonymous usage telemetry'\n${domainEntries}\n )\n\n if (( CURRENT == 2 )); then\n _describe 'command' commands\n elif (( CURRENT == 3 )); then\n case \"\\${words[2]}\" in\n${subcommandCases}\n tools)\n local -a subcmds\n subcmds=('list:List all tools' 'search:Search tools' 'info:Show tool info' 'call:Execute a tool' 'refresh:Refresh tool cache')\n _describe 'subcommand' subcmds\n ;;\n config)\n local -a subcmds\n subcmds=('claude-desktop:Claude Desktop config' 'cursor:Cursor config' 'vscode:VS Code config' 'claude-code:Claude Code config' 'http:HTTP remote config')\n _describe 'subcommand' subcmds\n ;;\n auth)\n local -a subcmds\n subcmds=('login:Log in with API key' 'logout:Remove credentials' 'whoami:Show current profile' 'profiles:List all profiles' 'switch:Switch active profile')\n _describe 'subcommand' subcmds\n ;;\n alias)\n local -a subcmds\n subcmds=('set:Create an alias' 'list:Show all aliases' 'remove:Delete an alias')\n _describe 'subcommand' subcmds\n ;;\n telemetry)\n local -a subcmds\n subcmds=('enable:Enable telemetry' 'disable:Disable telemetry' 'status:Show telemetry status')\n _describe 'subcommand' subcmds\n ;;\n open)\n local -a subcmds\n subcmds=('dashboard:Open dashboard' 'docs:Open documentation' 'status:Open status page' 'github:Open GitHub repo')\n _describe 'subcommand' subcmds\n ;;\n esac\n fi\n}\ncompdef _hive ${COMPLETION_COMMANDS.join(\" \")}`);\n}\n\nfunction generateFish(): void {\n const topLevel = getTopLevel();\n const lines: string[] = [\n \"# Hive CLI fish completion\",\n \"# Save to: ~/.config/fish/completions/hive.fish\",\n \"\",\n ];\n\n for (const commandName of COMPLETION_COMMANDS) {\n for (const cmd of topLevel) {\n const desc = NAMESPACE.find((d) => d.name === cmd)?.description ?? cmd;\n lines.push(\n `complete -c ${commandName} -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`,\n );\n }\n\n const domainSubs = getDomainSubs();\n for (const [domain, subs] of Object.entries(domainSubs)) {\n for (const sub of subs) {\n const desc =\n NAMESPACE.find((d) => d.name === domain)?.commands.find(\n (c) => c.name === sub,\n )?.description ?? sub;\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from ${domain}' -a '${sub}' -d '${desc}'`,\n );\n }\n }\n\n for (const sub of [\"list\", \"search\", \"info\", \"call\", \"refresh\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from tools' -a '${sub}'`,\n );\n }\n for (const sub of [\"login\", \"logout\", \"whoami\", \"profiles\", \"switch\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from auth' -a '${sub}'`,\n );\n }\n for (const sub of [\"set\", \"list\", \"remove\"]) {\n lines.push(\n `complete -c ${commandName} -n '__fish_seen_subcommand_from alias' -a '${sub}'`,\n );\n }\n }\n\n console.log(lines.join(\"\\n\"));\n}\n\nfunction generatePowerShell(): void {\n const topLevel = getTopLevel();\n const commandNames = COMPLETION_COMMANDS.map((cmd) => `'${cmd}'`).join(\",\");\n console.log(`# Hive CLI PowerShell completion\n# Add to your $PROFILE: . (hive completion powershell)\nRegister-ArgumentCompleter -Native -CommandName ${commandNames} -ScriptBlock {\n param($wordToComplete, $commandAst, $cursorPosition)\n $commands = @(${topLevel.map((c) => `'${c}'`).join(\", \")})\n $commands | Where-Object { $_ -like \"$wordToComplete*\" } | ForEach-Object {\n [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)\n }\n}`);\n}\n\nexport async function installCompletion(shell: string): Promise<void> {\n switch (shell) {\n case \"bash\": {\n const rcFile = join(homedir(), \".bashrc\");\n const line = 'eval \"$(hive completion bash)\"';\n if (existsSync(rcFile) && readFileSync(rcFile, \"utf-8\").includes(line)) {\n process.stderr.write(\"Bash completion already installed.\\n\");\n return;\n }\n appendFileSync(rcFile, `\\n# Hive CLI completion\\n${line}\\n`);\n process.stderr.write(\n `Bash completion added to ${rcFile}. Restart your shell.\\n`,\n );\n return;\n }\n case \"zsh\": {\n const rcFile = join(homedir(), \".zshrc\");\n const line = 'eval \"$(hive completion zsh)\"';\n if (existsSync(rcFile) && readFileSync(rcFile, \"utf-8\").includes(line)) {\n process.stderr.write(\"Zsh completion already installed.\\n\");\n return;\n }\n appendFileSync(rcFile, `\\n# Hive CLI completion\\n${line}\\n`);\n process.stderr.write(\n `Zsh completion added to ${rcFile}. Restart your shell.\\n`,\n );\n return;\n }\n case \"fish\": {\n const dir = join(homedir(), \".config\", \"fish\", \"completions\");\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n const filePath = join(dir, \"hive.fish\");\n const { execFileSync } = await import(\"node:child_process\");\n const bin = process.argv[1] ?? PRIMARY_COMMAND;\n const output = execFileSync(bin, [\"completion\", \"fish\"], {\n encoding: \"utf-8\",\n });\n writeFileSync(filePath, output);\n process.stderr.write(`Fish completion written to ${filePath}.\\n`);\n return;\n }\n default:\n process.stderr.write(\n `Unsupported shell for install: ${shell}. Use: bash, zsh, fish\\n`,\n );\n process.exit(2);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,58 @@
1
+ import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
+ import {
3
+ configClaudeCode,
4
+ configClaudeDesktop,
5
+ configCursor,
6
+ configHttpUrl,
7
+ configVscode,
8
+ getClaudeCodeUserConfigPath,
9
+ getClaudeDesktopConfigPath,
10
+ getCursorConfigPath,
11
+ getGeminiCliSettingsPath,
12
+ getVscodeConfigPath,
13
+ getWindsurfMcpConfigPath,
14
+ printChatGptDesktopInstructions,
15
+ removeClaudeCodeUserConfig,
16
+ removeClaudeDesktopConfig,
17
+ removeCursorConfig,
18
+ removeGeminiCliConfig,
19
+ removeVscodeConfig,
20
+ removeWindsurfConfig,
21
+ writeClaudeCodeConfig,
22
+ writeClaudeCodeUserConfig,
23
+ writeClaudeDesktopConfig,
24
+ writeCursorConfig,
25
+ writeGeminiCliConfig,
26
+ writeVscodeConfig,
27
+ writeWindsurfConfig
28
+ } from "./chunk-2MYMHMBF.js";
29
+ import "./chunk-V77LO4RO.js";
30
+ import "./chunk-KBVPIZS4.js";
31
+ export {
32
+ configClaudeCode,
33
+ configClaudeDesktop,
34
+ configCursor,
35
+ configHttpUrl,
36
+ configVscode,
37
+ getClaudeCodeUserConfigPath,
38
+ getClaudeDesktopConfigPath,
39
+ getCursorConfigPath,
40
+ getGeminiCliSettingsPath,
41
+ getVscodeConfigPath,
42
+ getWindsurfMcpConfigPath,
43
+ printChatGptDesktopInstructions,
44
+ removeClaudeCodeUserConfig,
45
+ removeClaudeDesktopConfig,
46
+ removeCursorConfig,
47
+ removeGeminiCliConfig,
48
+ removeVscodeConfig,
49
+ removeWindsurfConfig,
50
+ writeClaudeCodeConfig,
51
+ writeClaudeCodeUserConfig,
52
+ writeClaudeDesktopConfig,
53
+ writeCursorConfig,
54
+ writeGeminiCliConfig,
55
+ writeVscodeConfig,
56
+ writeWindsurfConfig
57
+ };
58
+ //# sourceMappingURL=config-TDX4VUGW.js.map
@@ -12,8 +12,8 @@ import {
12
12
  saveCredentials,
13
13
  setCliFlags,
14
14
  writeJsonFile
15
- } from "./chunk-XQJ6PB2L.js";
16
- import "./chunk-QMRVH5ZP.js";
15
+ } from "./chunk-V77LO4RO.js";
16
+ import "./chunk-KBVPIZS4.js";
17
17
  export {
18
18
  ensureConfigDir,
19
19
  getConfig,
@@ -28,4 +28,4 @@ export {
28
28
  setCliFlags,
29
29
  writeJsonFile
30
30
  };
31
- //# sourceMappingURL=config-dir-IEOID7Q6.js.map
31
+ //# sourceMappingURL=config-dir-V43W2WIA.js.map
@@ -1,16 +1,16 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  fetchToolCatalog
4
- } from "./chunk-LBTLYTZS.js";
4
+ } from "./chunk-IZTN7WFH.js";
5
5
  import {
6
6
  debug,
7
7
  info,
8
8
  shouldOutputJson,
9
9
  successEnvelope,
10
10
  writeOutput
11
- } from "./chunk-CP3FXEQA.js";
12
- import "./chunk-XQJ6PB2L.js";
13
- import "./chunk-QMRVH5ZP.js";
11
+ } from "./chunk-XYBEFFZ3.js";
12
+ import "./chunk-V77LO4RO.js";
13
+ import "./chunk-KBVPIZS4.js";
14
14
 
15
15
  // src/cli/doctor.ts
16
16
  var DEFAULT_API_URL = "https://mcp.hiveintelligence.xyz";
@@ -22,8 +22,8 @@ async function runDoctor(opts) {
22
22
  const apiKey = process.env.HIVE_API_KEY;
23
23
  checks.push({
24
24
  check: "HIVE_API_KEY",
25
- status: apiKey ? "PASS" : "FAIL",
26
- detail: apiKey ? `Set (${apiKey.slice(0, 4)}...)` : "Not set \u2014 required. Get a key at https://hiveintelligence.xyz"
25
+ status: apiKey ? "PASS" : "INFO",
26
+ detail: apiKey ? `Set (${apiKey.slice(0, 4)}...)` : "Not set (optional \u2014 API is currently free)"
27
27
  });
28
28
  const apiUrl = process.env.HIVE_API_URL;
29
29
  checks.push({
@@ -116,10 +116,10 @@ async function runDoctor(opts) {
116
116
  const pObj = p;
117
117
  const name = String(pObj.name ?? pObj.provider ?? "unknown");
118
118
  const status = String(pObj.status ?? "unknown");
119
- const pass = status === "healthy" || status === "passed" || status === "partial";
119
+ const pass = status === "ok" || status === "healthy" || status === "passed" || status === "partial";
120
120
  checks.push({
121
121
  check: `Probe: ${name}`,
122
- status: pass ? "PASS" : status === "inactive" ? "SKIP" : "FAIL",
122
+ status: pass || status === "missing_key" || status === "plan_required" ? pass ? "PASS" : "SKIP" : "FAIL",
123
123
  detail: status
124
124
  });
125
125
  }
@@ -163,7 +163,7 @@ async function runDoctor(opts) {
163
163
  if (fails > 0) process.exit(1);
164
164
  return;
165
165
  }
166
- const { table } = await import("./format-CVLLK6GD.js");
166
+ const { table } = await import("./format-TSFSI2K7.js");
167
167
  info("\nHive MCP Doctor\n");
168
168
  info(
169
169
  table(
@@ -179,9 +179,9 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
179
179
  if (fails > 0) process.exit(1);
180
180
  }
181
181
  async function runStatus() {
182
- const { CLI_VERSION: SERVER_VERSION } = await import("./version-3TZ3U4IR.js");
183
- const { resolveApiKey, resolveApiUrl } = await import("./config-dir-IEOID7Q6.js");
184
- const { getActiveProfile, maskKey } = await import("./auth-77MKFFBQ.js");
182
+ const { SERVER_VERSION } = await import("./mcpServer-AEX3RQ4U.js");
183
+ const { resolveApiKey, resolveApiUrl } = await import("./config-dir-V43W2WIA.js");
184
+ const { getActiveProfile, maskKey } = await import("./auth-KKINNBXT.js");
185
185
  const apiUrl = resolveApiUrl();
186
186
  const apiKey = resolveApiKey();
187
187
  const profile = getActiveProfile();
@@ -228,4 +228,4 @@ export {
228
228
  runDoctor,
229
229
  runStatus
230
230
  };
231
- //# sourceMappingURL=doctor-7WZMCQC7.js.map
231
+ //# sourceMappingURL=doctor-5K5UWHNX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/doctor.ts"],"sourcesContent":["import {\n shouldOutputJson,\n writeOutput,\n successEnvelope,\n info,\n debug,\n} from \"./output.js\";\nimport { fetchToolCatalog } from \"./api-client.js\";\n\nconst DEFAULT_API_URL =\n \"https://mcp.hiveintelligence.xyz\";\n\nfunction getApiUrl(): string {\n return process.env.HIVE_API_URL || DEFAULT_API_URL;\n}\n\nexport async function runDoctor(opts: { probe?: boolean }): Promise<void> {\n const checks: { check: string; status: string; detail: string }[] = [];\n\n // Check HIVE_API_KEY (optional for now — API is free)\n const apiKey = process.env.HIVE_API_KEY;\n checks.push({\n check: \"HIVE_API_KEY\",\n status: apiKey ? \"PASS\" : \"INFO\",\n detail: apiKey\n ? `Set (${apiKey.slice(0, 4)}...)`\n : \"Not set (optional — API is currently free)\",\n });\n\n // Check HIVE_API_URL\n const apiUrl = process.env.HIVE_API_URL;\n checks.push({\n check: \"HIVE_API_URL\",\n status: \"PASS\",\n detail: apiUrl ? `Custom: ${apiUrl}` : `Default: ${DEFAULT_API_URL}`,\n });\n\n // Check server connectivity via /ping\n const healthUrl = `${getApiUrl()}/ping`;\n debug(`GET ${healthUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 10000);\n const resp = await fetch(healthUrl, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n const serverStatus =\n body && typeof body === \"object\" && \"status\" in body\n ? String((body as Record<string, unknown>).status)\n : \"ok\";\n checks.push({\n check: \"Server health\",\n status: \"PASS\",\n detail: `${resp.status} — ${serverStatus}`,\n });\n } else {\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n const isTimeout = err instanceof Error && err.name === \"AbortError\";\n checks.push({\n check: \"Server health\",\n status: \"FAIL\",\n detail: isTimeout\n ? `Timeout connecting to ${getApiUrl()}`\n : `Connection failed: ${msg}`,\n });\n }\n\n // Check tool catalog availability\n {\n debug(\"Fetching tool catalog...\");\n try {\n const catalog = await fetchToolCatalog();\n const toolsData = catalog.data as\n | { totalCount?: number; tools?: unknown[] }\n | unknown[];\n const toolCount = Array.isArray(toolsData)\n ? toolsData.length\n : typeof toolsData === \"object\" &&\n toolsData !== null &&\n \"totalCount\" in toolsData\n ? (toolsData as { totalCount: number }).totalCount\n : 0;\n if (catalog.ok) {\n checks.push({\n check: \"Tool catalog\",\n status: toolCount > 0 ? \"PASS\" : \"WARN\",\n detail: `${toolCount} tools available`,\n });\n } else {\n const errMsg =\n catalog.error &&\n typeof catalog.error === \"object\" &&\n \"message\" in catalog.error\n ? String(catalog.error.message)\n : \"Unknown error\";\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: errMsg,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Tool catalog\",\n status: \"FAIL\",\n detail: `Failed to fetch: ${msg}`,\n });\n }\n }\n\n // Probe: call server health endpoint with extended check\n if (opts.probe) {\n const probeUrl = `${getApiUrl()}/health?run=true`;\n debug(`Probe: GET ${probeUrl}`);\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 30000);\n const resp = await fetch(probeUrl, {\n headers: {\n ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),\n },\n signal: controller.signal,\n });\n clearTimeout(timer);\n\n if (resp.ok) {\n const body = await resp.json().catch(() => null);\n if (body && typeof body === \"object\" && \"providers\" in body) {\n const providers = (body as Record<string, unknown>).providers;\n if (Array.isArray(providers)) {\n for (const p of providers) {\n const pObj = p as Record<string, unknown>;\n const name = String(pObj.name ?? pObj.provider ?? \"unknown\");\n const status = String(pObj.status ?? \"unknown\");\n const pass =\n status === \"ok\" ||\n status === \"healthy\" ||\n status === \"passed\" ||\n status === \"partial\";\n checks.push({\n check: `Probe: ${name}`,\n status:\n pass || status === \"missing_key\" || status === \"plan_required\"\n ? pass\n ? \"PASS\"\n : \"SKIP\"\n : \"FAIL\",\n detail: status,\n });\n }\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"PASS\",\n detail: `Server responded ${resp.status}`,\n });\n }\n } else {\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `HTTP ${resp.status} ${resp.statusText}`,\n });\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n checks.push({\n check: \"Probe\",\n status: \"FAIL\",\n detail: `Failed: ${msg}`,\n });\n }\n }\n\n const fails = checks.filter((c) => c.status === \"FAIL\").length;\n const warns = checks.filter((c) => c.status === \"WARN\").length;\n const data = {\n checks,\n summary: {\n total: checks.length,\n pass: checks.filter((c) => c.status === \"PASS\").length,\n fail: fails,\n warn: warns,\n },\n };\n\n if (shouldOutputJson()) {\n await writeOutput(successEnvelope(data, {}));\n if (fails > 0) process.exit(1);\n return;\n }\n\n const { table } = await import(\"./format.js\");\n info(\"\\nHive MCP Doctor\\n\");\n info(\n table(\n [\"Check\", \"Status\", \"Detail\"],\n checks.map((c) => [c.check, c.status, c.detail]),\n ),\n );\n info(\n `\\n${fails === 0 ? \"All checks passed\" : `${fails} issues found`}${warns ? ` (${warns} warnings)` : \"\"}\\n`,\n );\n\n if (fails > 0) process.exit(1);\n}\n\nexport async function runStatus(): Promise<void> {\n const { SERVER_VERSION } = await import(\"../mcpServer.js\");\n const { resolveApiKey, resolveApiUrl } = await import(\"./config-dir.js\");\n const { getActiveProfile, maskKey } = await import(\"./auth.js\");\n\n const apiUrl = resolveApiUrl();\n const apiKey = resolveApiKey();\n const profile = getActiveProfile();\n\n let apiStatus = \"unknown\";\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 5000);\n const resp = await fetch(`${apiUrl}/ping`, {\n headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},\n signal: controller.signal,\n });\n clearTimeout(timer);\n apiStatus = resp.ok ? \"healthy\" : `HTTP ${resp.status}`;\n } catch {\n apiStatus = \"unreachable\";\n }\n\n if (shouldOutputJson()) {\n await writeOutput(\n successEnvelope(\n {\n version: SERVER_VERSION,\n profile: profile?.name ?? \"(none)\",\n apiUrl,\n apiStatus,\n hasKey: !!apiKey,\n },\n {},\n ),\n );\n return;\n }\n\n process.stderr.write(`\\nHive CLI v${SERVER_VERSION}\\n`);\n process.stderr.write(\n `Profile: ${profile ? `${profile.name} (${maskKey(profile.apiKey)})` : \"(not logged in)\"}\\n`,\n );\n process.stderr.write(`API: ${apiUrl} (${apiStatus})\\n\\n`);\n}\n"],"mappings":"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","names":[]}
@@ -5,8 +5,8 @@ import {
5
5
  ExitCode,
6
6
  classifyError,
7
7
  suggestSimilarTools
8
- } from "./chunk-RRI526CJ.js";
9
- import "./chunk-QMRVH5ZP.js";
8
+ } from "./chunk-KGYBTXIN.js";
9
+ import "./chunk-KBVPIZS4.js";
10
10
  export {
11
11
  CliError,
12
12
  ERROR_DOC_URLS,
@@ -14,4 +14,4 @@ export {
14
14
  classifyError,
15
15
  suggestSimilarTools
16
16
  };
17
- //# sourceMappingURL=errors-U6UZWVSD.js.map
17
+ //# sourceMappingURL=errors-E6MVUBNA.js.map
@@ -0,0 +1,43 @@
1
+ import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
+ import "./chunk-KBVPIZS4.js";
3
+
4
+ // src/cli/format.ts
5
+ function pad(str, width) {
6
+ return str.length >= width ? str.slice(0, width) : str + " ".repeat(width - str.length);
7
+ }
8
+ function table(headers, rows) {
9
+ const widths = headers.map(
10
+ (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || "").length)) + 2
11
+ );
12
+ const headerLine = headers.map((h, i) => pad(h, widths[i])).join("");
13
+ const separator = widths.map((w) => "-".repeat(w)).join("");
14
+ const dataLines = rows.map(
15
+ (row) => row.map((cell, i) => pad(cell, widths[i])).join("")
16
+ );
17
+ return [headerLine, separator, ...dataLines].join("\n");
18
+ }
19
+ function formatTable(data) {
20
+ if (data.length === 0) return "(empty result)";
21
+ const maxCols = 8;
22
+ const maxWidth = 40;
23
+ const allKeys = [...new Set(data.flatMap(Object.keys))];
24
+ const cols = allKeys.slice(0, maxCols);
25
+ const widths = cols.map((col) => {
26
+ const values = data.map((row) => String(row[col] ?? "").slice(0, maxWidth));
27
+ return Math.max(col.length, ...values.map((v) => v.length));
28
+ });
29
+ const header = cols.map((col, i) => col.padEnd(widths[i])).join(" ");
30
+ const separator = widths.map((w) => "-".repeat(w)).join(" ");
31
+ const rows = data.map(
32
+ (row) => cols.map(
33
+ (col, i) => String(row[col] ?? "").slice(0, maxWidth).padEnd(widths[i])
34
+ ).join(" ")
35
+ );
36
+ return [header, separator, ...rows].join("\n");
37
+ }
38
+ export {
39
+ formatTable,
40
+ pad,
41
+ table
42
+ };
43
+ //# sourceMappingURL=format-TSFSI2K7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/format.ts"],"sourcesContent":["export function pad(str: string, width: number): string {\n return str.length >= width\n ? str.slice(0, width)\n : str + \" \".repeat(width - str.length);\n}\n\nexport function table(headers: string[], rows: string[][]): string {\n const widths = headers.map(\n (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || \"\").length)) + 2,\n );\n const headerLine = headers.map((h, i) => pad(h, widths[i])).join(\"\");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\"\");\n const dataLines = rows.map((row) =>\n row.map((cell, i) => pad(cell, widths[i])).join(\"\"),\n );\n return [headerLine, separator, ...dataLines].join(\"\\n\");\n}\n\n/** Auto-format an array of objects as a fixed-width table. */\nexport function formatTable(data: Record<string, unknown>[]): string {\n if (data.length === 0) return \"(empty result)\";\n\n const maxCols = 8;\n const maxWidth = 40;\n\n const allKeys = [...new Set(data.flatMap(Object.keys))];\n const cols = allKeys.slice(0, maxCols);\n\n const widths = cols.map((col) => {\n const values = data.map((row) => String(row[col] ?? \"\").slice(0, maxWidth));\n return Math.max(col.length, ...values.map((v) => v.length));\n });\n\n const header = cols.map((col, i) => col.padEnd(widths[i])).join(\" \");\n const separator = widths.map((w) => \"-\".repeat(w)).join(\" \");\n const rows = data.map((row) =>\n cols\n .map((col, i) =>\n String(row[col] ?? \"\")\n .slice(0, maxWidth)\n .padEnd(widths[i]),\n )\n .join(\" \"),\n );\n\n return [header, separator, ...rows].join(\"\\n\");\n}\n"],"mappings":";;;;AAAO,SAAS,IAAI,KAAa,OAAuB;AACtD,SAAO,IAAI,UAAU,QACjB,IAAI,MAAM,GAAG,KAAK,IAClB,MAAM,IAAI,OAAO,QAAQ,IAAI,MAAM;AACzC;AAEO,SAAS,MAAM,SAAmB,MAA0B;AACjE,QAAM,SAAS,QAAQ;AAAA,IACrB,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,QAAQ,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;AAAA,EAC1E;AACA,QAAM,aAAa,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACnE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AAC1D,QAAM,YAAY,KAAK;AAAA,IAAI,CAAC,QAC1B,IAAI,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAAA,EACpD;AACA,SAAO,CAAC,YAAY,WAAW,GAAG,SAAS,EAAE,KAAK,IAAI;AACxD;AAGO,SAAS,YAAY,MAAyC;AACnE,MAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QAAM,UAAU;AAChB,QAAM,WAAW;AAEjB,QAAM,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,OAAO,IAAI,CAAC,CAAC;AACtD,QAAM,OAAO,QAAQ,MAAM,GAAG,OAAO;AAErC,QAAM,SAAS,KAAK,IAAI,CAAC,QAAQ;AAC/B,UAAM,SAAS,KAAK,IAAI,CAAC,QAAQ,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC;AAC1E,WAAO,KAAK,IAAI,IAAI,QAAQ,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AAAA,EAC5D,CAAC;AAED,QAAM,SAAS,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI;AACpE,QAAM,YAAY,OAAO,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC5D,QAAM,OAAO,KAAK;AAAA,IAAI,CAAC,QACrB,KACG;AAAA,MAAI,CAAC,KAAK,MACT,OAAO,IAAI,GAAG,KAAK,EAAE,EAClB,MAAM,GAAG,QAAQ,EACjB,OAAO,OAAO,CAAC,CAAC;AAAA,IACrB,EACC,KAAK,IAAI;AAAA,EACd;AAEA,SAAO,CAAC,QAAQ,WAAW,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/C;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
- import "./chunk-QMRVH5ZP.js";
2
+ import "./chunk-KBVPIZS4.js";
3
3
 
4
4
  // src/cli/init.ts
5
5
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -99,4 +99,4 @@ Validating API key against ${baseUrl}...`);
99
99
  export {
100
100
  runInit
101
101
  };
102
- //# sourceMappingURL=init-CAVIFVSH.js.map
102
+ //# sourceMappingURL=init-YQ5NBICF.js.map