hive-intelligence 1.7.1 → 1.7.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 (31) hide show
  1. package/README.md +1 -1
  2. package/agent-skills/packs/hive/SKILL.md +45 -23
  3. package/agent-skills/packs/hive/evals/triggers.json +32 -8
  4. package/agent-skills/packs/hive-query/SKILL.md +2 -1
  5. package/build/{api-client-UGNFUZ2L.js → api-client-POBN6Y5S.js} +2 -2
  6. package/build/{auth-5TLYP2DC.js → auth-6XVL5CE3.js} +1 -1
  7. package/build/{call-args-NVOYX6DL.js → call-args-BUB6YNHW.js} +2 -2
  8. package/build/{chunk-POPAEM4E.js → chunk-APBLB62S.js} +1 -1
  9. package/build/{chunk-XT6RURQV.js → chunk-AZFOTKS2.js} +1 -1
  10. package/build/{chunk-UPWYFTTJ.js → chunk-KQVPKTEO.js} +2 -2
  11. package/build/{chunk-2C5FBG7B.js → chunk-QKVI3YHQ.js} +1 -1
  12. package/build/{chunk-TWYGJEVN.js → chunk-RNVZIPNY.js} +1 -1
  13. package/build/{chunk-3SQPLZW6.js → chunk-WDF56OFL.js} +18030 -17831
  14. package/build/{chunk-WII7MTYZ.js → chunk-YLHNUAFT.js} +2 -2
  15. package/build/{chunk-3Z5VR53Z.js → chunk-ZSPPJW4G.js} +9 -1
  16. package/build/cli.js +27 -27
  17. package/build/{doctor-44WSVNGJ.js → doctor-KCSYB4QG.js} +4 -4
  18. package/build/{errors-W3GXQN34.js → errors-YQAVCXXO.js} +3 -1
  19. package/build/{feedback-FRRLZDAF.js → feedback-G2DFCCI6.js} +2 -2
  20. package/build/{init-all-LYRFE2YQ.js → init-all-JXLG7LOX.js} +1 -1
  21. package/build/{mcpServer-43LTLURB.js → mcpServer-2OCMJW2T.js} +1 -1
  22. package/build/monitor-worker.js +2 -2
  23. package/build/release.json +4 -4
  24. package/build/{routing-CP43PP5F.js → routing-4VKAVRYR.js} +2 -2
  25. package/build/{serve-LTMDRKXS.js → serve-MGOPELHF.js} +1 -1
  26. package/build/server.js +28 -6
  27. package/build/stdio.js +1 -1
  28. package/build/{tools-VA7JXD3K.js → tools-NJQPIJ53.js} +5 -5
  29. package/build/{uninstall-3KJLHTNM.js → uninstall-4TJ4SZLU.js} +2 -2
  30. package/build/{watch-HJOTI32P.js → watch-BUSEPVDM.js} +3 -3
  31. package/package.json +2 -2
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-XN3T6YOG.js";
5
5
  import {
6
6
  executeRemoteTool
7
- } from "./chunk-TWYGJEVN.js";
7
+ } from "./chunk-RNVZIPNY.js";
8
8
  import {
9
9
  trackCommand
10
10
  } from "./chunk-RU6QOFHH.js";
11
11
  import {
12
12
  ExitCode
13
- } from "./chunk-3Z5VR53Z.js";
13
+ } from "./chunk-ZSPPJW4G.js";
14
14
  import {
15
15
  debug,
16
16
  dim,
@@ -39,7 +39,14 @@ var ERROR_CODE_TO_EXIT = {
39
39
  QUOTA_EXCEEDED: ExitCode.RATE_LIMITED,
40
40
  FEEDBACK_RATE_LIMITED: ExitCode.RATE_LIMITED,
41
41
  // Account state, not a cap: there is no reset time and retrying cannot help.
42
- NO_WALLET: ExitCode.API_ERROR
42
+ NO_WALLET: ExitCode.API_ERROR,
43
+ // Credential rejected: same class as AUTH_REQUIRED, because the fix is the
44
+ // key, not the call.
45
+ UNAUTHORIZED: ExitCode.AUTH_FAILURE,
46
+ INVALID_API_KEY: ExitCode.AUTH_FAILURE,
47
+ // The server answered, the call failed there.
48
+ TOOL_ERROR: ExitCode.API_ERROR,
49
+ INTERNAL_ERROR: ExitCode.API_ERROR
43
50
  };
44
51
  var ERROR_DOCS_BASE = "https://www.hiveintelligence.xyz/errors#";
45
52
  function errorDocSlug(code) {
@@ -109,6 +116,7 @@ function suggestSimilarTools(input, toolNames, maxDistance = 3) {
109
116
  export {
110
117
  ExitCode,
111
118
  NEVER_RETRY_ERROR_CODES,
119
+ ERROR_CODE_TO_EXIT,
112
120
  errorDocSlug,
113
121
  ERROR_DOC_URLS,
114
122
  isCliErrorCode,
package/build/cli.js CHANGED
@@ -2,21 +2,21 @@
2
2
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
3
3
  import {
4
4
  executeTool
5
- } from "./chunk-WII7MTYZ.js";
5
+ } from "./chunk-YLHNUAFT.js";
6
6
  import "./chunk-XN3T6YOG.js";
7
7
  import {
8
8
  NAMESPACE
9
9
  } from "./chunk-5QAXJON7.js";
10
- import "./chunk-TWYGJEVN.js";
10
+ import "./chunk-RNVZIPNY.js";
11
11
  import "./chunk-RU6QOFHH.js";
12
12
  import {
13
13
  ALWAYS_RESERVED_OPTIONS,
14
14
  parseFlagTokens,
15
15
  reservedOptionNames
16
- } from "./chunk-XT6RURQV.js";
16
+ } from "./chunk-AZFOTKS2.js";
17
17
  import {
18
18
  ExitCode
19
- } from "./chunk-3Z5VR53Z.js";
19
+ } from "./chunk-ZSPPJW4G.js";
20
20
  import {
21
21
  checkForUpdates
22
22
  } from "./chunk-M6REON2I.js";
@@ -3453,7 +3453,7 @@ program2.hook("preAction", (thisCommand) => {
3453
3453
  setCliFlags({ apiKey: opts.apiKey, noRetry: opts.retry === false });
3454
3454
  });
3455
3455
  program2.action(async () => {
3456
- const { startStdio } = await import("./serve-LTMDRKXS.js");
3456
+ const { startStdio } = await import("./serve-MGOPELHF.js");
3457
3457
  await startStdio(program2.opts().envFile);
3458
3458
  });
3459
3459
  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) => {
@@ -3466,10 +3466,10 @@ program2.command("serve").description("Start the MCP server").option("--http", "
3466
3466
  );
3467
3467
  process.exit(ExitCode.INVALID_ARGS);
3468
3468
  }
3469
- const { startHttp } = await import("./serve-LTMDRKXS.js");
3469
+ const { startHttp } = await import("./serve-MGOPELHF.js");
3470
3470
  await startHttp(port, program2.opts().envFile);
3471
3471
  } else {
3472
- const { startStdio } = await import("./serve-LTMDRKXS.js");
3472
+ const { startStdio } = await import("./serve-MGOPELHF.js");
3473
3473
  await startStdio(program2.opts().envFile);
3474
3474
  }
3475
3475
  });
@@ -3556,15 +3556,15 @@ for (const domain of NAMESPACE) {
3556
3556
  }
3557
3557
  var toolsCmd = program2.command("tools").description("Discover and execute tools");
3558
3558
  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) => {
3559
- const { listTools } = await import("./tools-VA7JXD3K.js");
3559
+ const { listTools } = await import("./tools-NJQPIJ53.js");
3560
3560
  await listTools(opts);
3561
3561
  });
3562
3562
  toolsCmd.command("search <query>").description("Search tools by name or description").action(async (query) => {
3563
- const { searchTools } = await import("./tools-VA7JXD3K.js");
3563
+ const { searchTools } = await import("./tools-NJQPIJ53.js");
3564
3564
  await searchTools(query);
3565
3565
  });
3566
3566
  toolsCmd.command("info <name>").description("Show a tool's parameters, response schema, and description").action(async (name) => {
3567
- const { toolInfo } = await import("./tools-VA7JXD3K.js");
3567
+ const { toolInfo } = await import("./tools-NJQPIJ53.js");
3568
3568
  await toolInfo(name, RESERVED_OPTION_NAMES);
3569
3569
  });
3570
3570
  toolsCmd.command("call <name>").description("Execute a tool by name").option("--args <json>", "Tool arguments as JSON (or pipe JSON via stdin)").allowUnknownOption(true).allowExcessArguments(true).addHelpText(
@@ -3586,8 +3586,8 @@ Examples:
3586
3586
  $ hive tools call get_price --args '{"ids":"bitcoin","vs_currencies":"usd"}'
3587
3587
  $ echo '{"ids":"bitcoin"}' | hive tools call get_price`
3588
3588
  ).action(async (_name, opts, cmd) => {
3589
- const { planToolCall } = await import("./call-args-NVOYX6DL.js");
3590
- const { CliError } = await import("./errors-W3GXQN34.js");
3589
+ const { planToolCall } = await import("./call-args-BUB6YNHW.js");
3590
+ const { CliError } = await import("./errors-YQAVCXXO.js");
3591
3591
  const { outputError } = await import("./output-BBHBJI32.js");
3592
3592
  const tokens = cmd.args;
3593
3593
  let stdinJson;
@@ -3604,7 +3604,7 @@ Examples:
3604
3604
  stdinJson,
3605
3605
  reservedNames: RESERVED_OPTION_NAMES,
3606
3606
  lookupSchema: async (toolName) => {
3607
- const { loadToolCatalog } = await import("./tools-VA7JXD3K.js");
3607
+ const { loadToolCatalog } = await import("./tools-NJQPIJ53.js");
3608
3608
  const catalog = await loadToolCatalog();
3609
3609
  return catalog.find((t) => t.name === toolName)?.inputSchema;
3610
3610
  }
@@ -3622,7 +3622,7 @@ Examples:
3622
3622
  await executeTool(plan.toolName, plan.args, timeout);
3623
3623
  });
3624
3624
  toolsCmd.command("refresh").description("Force-refresh the tool catalog cache").action(async () => {
3625
- const { refreshTools } = await import("./tools-VA7JXD3K.js");
3625
+ const { refreshTools } = await import("./tools-NJQPIJ53.js");
3626
3626
  await refreshTools();
3627
3627
  });
3628
3628
  var configCmd = program2.command("config").description("Generate configuration for MCP clients");
@@ -3681,7 +3681,7 @@ program2.command("init").description(
3681
3681
  await runSetup();
3682
3682
  return;
3683
3683
  }
3684
- const { runInitAll } = await import("./init-all-LYRFE2YQ.js");
3684
+ const { runInitAll } = await import("./init-all-JXLG7LOX.js");
3685
3685
  const exitCode = await runInitAll({
3686
3686
  all: Boolean(opts.all),
3687
3687
  browser: Boolean(opts.browser),
@@ -3699,7 +3699,7 @@ program2.command("uninstall").description(
3699
3699
  "--all",
3700
3700
  "Clean every known client (default; explicit flag for symmetry with `init --all`)"
3701
3701
  ).option("--dry-run", "Preview removals without changing anything").action(async (opts) => {
3702
- const { runUninstall } = await import("./uninstall-3KJLHTNM.js");
3702
+ const { runUninstall } = await import("./uninstall-4TJ4SZLU.js");
3703
3703
  const exitCode = await runUninstall({
3704
3704
  all: opts.all !== false,
3705
3705
  dryRun: Boolean(opts.dryRun),
@@ -3714,7 +3714,7 @@ for (const action of ["install", "decline", "remove"]) {
3714
3714
  routingCmd.command(action).description(
3715
3715
  action === "install" ? "Append the Hive routing block (AGENTS.md preferred over CLAUDE.md)" : action === "decline" ? "Record that this project does not want the routing block" : "Remove the routing block and restore the file's original bytes"
3716
3716
  ).option("--file <name>", "Target file: AGENTS.md or CLAUDE.md").option("--dry-run", "Print the resulting file; write nothing").option("--create", "Create the target file when it does not exist").action(async (opts) => {
3717
- const { runRouting } = await import("./routing-CP43PP5F.js");
3717
+ const { runRouting } = await import("./routing-4VKAVRYR.js");
3718
3718
  const exitCode = await runRouting(action, {
3719
3719
  file: opts.file,
3720
3720
  dryRun: Boolean(opts.dryRun),
@@ -3730,11 +3730,11 @@ program2.command("feedback <message>").description(
3730
3730
  "--receipt <id>",
3731
3731
  "Receipt ID (defaults to the last successful call's receipt)"
3732
3732
  ).action(async (message, opts) => {
3733
- const { runFeedback } = await import("./feedback-FRRLZDAF.js");
3733
+ const { runFeedback } = await import("./feedback-G2DFCCI6.js");
3734
3734
  await runFeedback(message, { tool: opts.tool, receipt: opts.receipt });
3735
3735
  });
3736
3736
  program2.command("doctor").description("Diagnose environment and server connectivity").option("--probe", "Run live API probes (slower)").action(async (opts) => {
3737
- const { runDoctor } = await import("./doctor-44WSVNGJ.js");
3737
+ const { runDoctor } = await import("./doctor-KCSYB4QG.js");
3738
3738
  await runDoctor(opts);
3739
3739
  });
3740
3740
  program2.command("upgrade").description("Update Hive to the latest published version").action(async () => {
@@ -3758,31 +3758,31 @@ program2.command("keys").description("Retired \u2014 manage API keys in the dash
3758
3758
  });
3759
3759
  var authCmd = program2.command("auth").description("Manage authentication profiles");
3760
3760
  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) => {
3761
- const { runLogin } = await import("./auth-5TLYP2DC.js");
3761
+ const { runLogin } = await import("./auth-6XVL5CE3.js");
3762
3762
  await runLogin(opts);
3763
3763
  });
3764
3764
  authCmd.command("logout").description("Remove stored credentials").action(async () => {
3765
- const { runLogout } = await import("./auth-5TLYP2DC.js");
3765
+ const { runLogout } = await import("./auth-6XVL5CE3.js");
3766
3766
  await runLogout();
3767
3767
  });
3768
3768
  authCmd.command("whoami").description("Show current profile").action(async () => {
3769
- const { runWhoami } = await import("./auth-5TLYP2DC.js");
3769
+ const { runWhoami } = await import("./auth-6XVL5CE3.js");
3770
3770
  await runWhoami();
3771
3771
  });
3772
3772
  authCmd.command("profiles").description("List all profiles").action(async () => {
3773
- const { runProfiles } = await import("./auth-5TLYP2DC.js");
3773
+ const { runProfiles } = await import("./auth-6XVL5CE3.js");
3774
3774
  await runProfiles();
3775
3775
  });
3776
3776
  authCmd.command("switch <name>").description("Switch active profile").action(async (name) => {
3777
- const { runSwitch } = await import("./auth-5TLYP2DC.js");
3777
+ const { runSwitch } = await import("./auth-6XVL5CE3.js");
3778
3778
  await runSwitch(name);
3779
3779
  });
3780
3780
  program2.command("usage").description("Show your API usage and plan limits").action(async () => {
3781
- const { runUsage } = await import("./auth-5TLYP2DC.js");
3781
+ const { runUsage } = await import("./auth-6XVL5CE3.js");
3782
3782
  await runUsage();
3783
3783
  });
3784
3784
  program2.command("status").description("Quick health and version check").action(async () => {
3785
- const { runStatus } = await import("./doctor-44WSVNGJ.js");
3785
+ const { runStatus } = await import("./doctor-KCSYB4QG.js");
3786
3786
  await runStatus();
3787
3787
  });
3788
3788
  program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
@@ -3813,7 +3813,7 @@ program2.command("watch <domain> <command>").description("Poll a tool on interva
3813
3813
  }
3814
3814
  const interval = parseInt(opts.interval, 10);
3815
3815
  const timeout = parseInt(program2.opts().timeout, 10);
3816
- const { runWatch } = await import("./watch-HJOTI32P.js");
3816
+ const { runWatch } = await import("./watch-BUSEPVDM.js");
3817
3817
  await runWatch(cmdDef.tool, args, interval, timeout);
3818
3818
  });
3819
3819
  var aliasCmd = program2.command("alias").description("Manage command aliases");
@@ -2,8 +2,8 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
2
2
  import {
3
3
  fetchToolCatalog,
4
4
  getAnonQuota
5
- } from "./chunk-TWYGJEVN.js";
6
- import "./chunk-3Z5VR53Z.js";
5
+ } from "./chunk-RNVZIPNY.js";
6
+ import "./chunk-ZSPPJW4G.js";
7
7
  import "./chunk-ZXKFJQDE.js";
8
8
  import {
9
9
  debug,
@@ -240,9 +240,9 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
240
240
  if (fails > 0) process.exit(1);
241
241
  }
242
242
  async function runStatus() {
243
- const { SERVER_VERSION } = await import("./mcpServer-43LTLURB.js");
243
+ const { SERVER_VERSION } = await import("./mcpServer-2OCMJW2T.js");
244
244
  const { resolveApiKey, resolveApiUrl } = await import("./config-dir-2QLA5PXD.js");
245
- const { getActiveProfile, maskKey } = await import("./auth-5TLYP2DC.js");
245
+ const { getActiveProfile, maskKey } = await import("./auth-6XVL5CE3.js");
246
246
  const apiUrl = resolveApiUrl();
247
247
  const apiKey = resolveApiKey();
248
248
  const profile = getActiveProfile();
@@ -1,6 +1,7 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  CliError,
4
+ ERROR_CODE_TO_EXIT,
4
5
  ERROR_DOC_URLS,
5
6
  ExitCode,
6
7
  NEVER_RETRY_ERROR_CODES,
@@ -8,10 +9,11 @@ import {
8
9
  errorDocSlug,
9
10
  isCliErrorCode,
10
11
  suggestSimilarTools
11
- } from "./chunk-3Z5VR53Z.js";
12
+ } from "./chunk-ZSPPJW4G.js";
12
13
  import "./chunk-OMO7XLC5.js";
13
14
  export {
14
15
  CliError,
16
+ ERROR_CODE_TO_EXIT,
15
17
  ERROR_DOC_URLS,
16
18
  ExitCode,
17
19
  NEVER_RETRY_ERROR_CODES,
@@ -4,11 +4,11 @@ import {
4
4
  } from "./chunk-XN3T6YOG.js";
5
5
  import {
6
6
  postFeedback
7
- } from "./chunk-TWYGJEVN.js";
7
+ } from "./chunk-RNVZIPNY.js";
8
8
  import {
9
9
  CliError,
10
10
  isCliErrorCode
11
- } from "./chunk-3Z5VR53Z.js";
11
+ } from "./chunk-ZSPPJW4G.js";
12
12
  import {
13
13
  SERVER_VERSION
14
14
  } from "./chunk-ZXKFJQDE.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-BDO27NIP.js";
23
23
  import {
24
24
  saveProfile
25
- } from "./chunk-UPWYFTTJ.js";
25
+ } from "./chunk-KQVPKTEO.js";
26
26
  import {
27
27
  detectInstallMode
28
28
  } from "./chunk-L4KVJDA7.js";
@@ -9,7 +9,7 @@ import {
9
9
  getToolsForScope,
10
10
  memoizedJsonSchemaToZodInputSchema,
11
11
  memoizedJsonSchemaToZodOutputSchema
12
- } from "./chunk-3SQPLZW6.js";
12
+ } from "./chunk-WDF56OFL.js";
13
13
  import "./chunk-4QDGA6GP.js";
14
14
  import "./chunk-EPF36Q3Z.js";
15
15
  import {
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
2
2
  import {
3
3
  consumeCredits,
4
4
  executeToolByName
5
- } from "./chunk-2C5FBG7B.js";
5
+ } from "./chunk-QKVI3YHQ.js";
6
6
  import {
7
7
  HyperliquidAPI,
8
8
  MIN_MONITOR_CADENCE_MS,
@@ -15,7 +15,7 @@ import {
15
15
  monitorCadenceIntervalMs,
16
16
  runScheduledHealthCanaries,
17
17
  secureLogger
18
- } from "./chunk-3SQPLZW6.js";
18
+ } from "./chunk-WDF56OFL.js";
19
19
  import "./chunk-4QDGA6GP.js";
20
20
  import "./chunk-EPF36Q3Z.js";
21
21
  import "./chunk-ZXKFJQDE.js";
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "package": "hive-intelligence",
3
- "version": "1.7.1",
4
- "buildSha": "23cbc84e5c23959f6ef52fd4cc81c9852337c72a",
5
- "imageDigest": "sha256:a8fbe5e5265989645732dca2c4dac746c816c99b6b14e99c6b002fa1da4e397e",
3
+ "version": "1.7.3",
4
+ "buildSha": "540c6eaec6539e8a8b09b3f0d9bff4efa592f4d5",
5
+ "imageDigest": "sha256:de6599072579cc25854052f2cb99393129d9363c36f6abf1454a39efdcee0bb0",
6
6
  "deployedUrl": "https://mcp.hiveintelligence.xyz",
7
- "manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.7.1/releases/v1.7.1.json"
7
+ "manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.7.3/releases/v1.7.3.json"
8
8
  }
@@ -17,8 +17,8 @@ import {
17
17
  renderRoutingBlock,
18
18
  runRouting,
19
19
  stripRoutingBlock
20
- } from "./chunk-POPAEM4E.js";
21
- import "./chunk-3Z5VR53Z.js";
20
+ } from "./chunk-APBLB62S.js";
21
+ import "./chunk-ZSPPJW4G.js";
22
22
  import "./chunk-ZDXMZPC6.js";
23
23
  import "./chunk-6PC3HUAK.js";
24
24
  import "./chunk-OMO7XLC5.js";
@@ -7,7 +7,7 @@ async function startStdio(envFile) {
7
7
  dotenv.config({ path: envFile || ".env", quiet: true });
8
8
  console.log = (...args) => console.error("[LOG]", ...args);
9
9
  const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
10
- const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-43LTLURB.js");
10
+ const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-2OCMJW2T.js");
11
11
  const { getPendingUpdateVersion } = await import("./update-check-36QU6PKA.js");
12
12
  const transport = new StdioServerTransport();
13
13
  const pendingUpdate = getPendingUpdateVersion();
package/build/server.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  ensureWallet,
7
7
  executeToolByName,
8
8
  getWalletStatus
9
- } from "./chunk-2C5FBG7B.js";
9
+ } from "./chunk-QKVI3YHQ.js";
10
10
  import {
11
11
  CategoryEndpoints,
12
12
  HERO_TOOL_NAMES,
@@ -34,6 +34,7 @@ import {
34
34
  createHiveMcpServer,
35
35
  createOAuthStore,
36
36
  createToolNotFoundResult,
37
+ describeErrorCode,
37
38
  endpointAllowedForInvoker,
38
39
  errorDocUrl,
39
40
  executeEndpoint,
@@ -101,7 +102,7 @@ import {
101
102
  validateEndpointArgs,
102
103
  verifyApiKey,
103
104
  waitForRedisAvailability
104
- } from "./chunk-3SQPLZW6.js";
105
+ } from "./chunk-WDF56OFL.js";
105
106
  import {
106
107
  HIVE_AGENT_SKILLS
107
108
  } from "./chunk-4QDGA6GP.js";
@@ -768,6 +769,10 @@ import RedisStore from "rate-limit-redis";
768
769
 
769
770
  // src/utils/api-errors.ts
770
771
  function apiError(type, code, message, opts) {
772
+ const known = describeErrorCode(code);
773
+ const cause = opts?.cause ?? known?.meaning;
774
+ const nextAction = opts?.next_action ?? known?.nextAction;
775
+ const retryable = opts?.retryable ?? known?.retryable;
771
776
  return {
772
777
  ok: false,
773
778
  error: {
@@ -776,9 +781,9 @@ function apiError(type, code, message, opts) {
776
781
  message,
777
782
  ...opts?.param && { param: opts.param },
778
783
  ...opts?.requestId && { request_id: opts.requestId },
779
- ...opts?.cause && { cause: opts.cause },
780
- ...opts?.next_action && { next_action: opts.next_action },
781
- ...opts?.retryable !== void 0 && { retryable: opts.retryable },
784
+ ...cause && { cause },
785
+ ...nextAction && { next_action: nextAction },
786
+ ...retryable !== void 0 && { retryable },
782
787
  ...opts?.retry_after !== void 0 && { retry_after: opts.retry_after },
783
788
  doc_url: errorDocUrl(code)
784
789
  }
@@ -7196,6 +7201,15 @@ function classifyAnonymousMcpRequest(body) {
7196
7201
  }
7197
7202
  return getMcpCreditCost(exposedToolName) === 0 ? "open" : "material";
7198
7203
  }
7204
+ function anonymousPaywallToolName(body) {
7205
+ const params = body?.params;
7206
+ const name = typeof params?.name === "string" ? params.name : void 0;
7207
+ if (name !== "invoke_api_endpoint" && name !== "invoke_stateful_endpoint") {
7208
+ return name;
7209
+ }
7210
+ const target = params?.arguments?.endpoint;
7211
+ return typeof target === "string" ? target : name;
7212
+ }
7199
7213
  async function authorizeAnonymousMcpRequest(req) {
7200
7214
  const access = classifyAnonymousMcpRequest(req.body);
7201
7215
  if (access === "auth_required") return { kind: "require_auth" };
@@ -7466,6 +7480,13 @@ function createStatelessMcpHandler(scope) {
7466
7480
  id: req.body?.id ?? null
7467
7481
  });
7468
7482
  return;
7483
+ } else if (decision.kind === "require_auth") {
7484
+ recordPaywall(req, {
7485
+ code: "ANON_AUTH_REQUIRED",
7486
+ authLane: "anonymous",
7487
+ transport: "mcp",
7488
+ toolName: anonymousPaywallToolName(req.body)
7489
+ });
7469
7490
  }
7470
7491
  }
7471
7492
  if (!auth.ok && !anonymousLane) {
@@ -8528,7 +8549,7 @@ app.get("/api/openapi.json", (_req, res) => {
8528
8549
  res.json(generateOpenApiSpec());
8529
8550
  });
8530
8551
  var require2 = createNodeRequire(import.meta.url);
8531
- var swaggerUiAssetPath = require2("swagger-ui-dist").getAbsoluteFSPath();
8552
+ var swaggerUiAssetPath = require2("swagger-ui-dist/absolute-path.js")();
8532
8553
  app.use(
8533
8554
  "/docs/assets",
8534
8555
  express2.static(swaggerUiAssetPath, {
@@ -8789,6 +8810,7 @@ if (isMainModule()) {
8789
8810
  }
8790
8811
  var server_default = app;
8791
8812
  export {
8813
+ anonymousPaywallToolName,
8792
8814
  buildMcpQuotaExhaustedCopy,
8793
8815
  classifyAnonymousMcpRequest,
8794
8816
  createHttpApp,
package/build/stdio.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  createHiveMcpServer,
8
8
  secureLogger
9
- } from "./chunk-3SQPLZW6.js";
9
+ } from "./chunk-WDF56OFL.js";
10
10
  import "./chunk-4QDGA6GP.js";
11
11
  import "./chunk-EPF36Q3Z.js";
12
12
  import {
@@ -1,12 +1,12 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  fetchToolCatalog
4
- } from "./chunk-TWYGJEVN.js";
4
+ } from "./chunk-RNVZIPNY.js";
5
5
  import {
6
6
  canonicalParamName,
7
7
  describeParameters
8
- } from "./chunk-XT6RURQV.js";
9
- import "./chunk-3Z5VR53Z.js";
8
+ } from "./chunk-AZFOTKS2.js";
9
+ import "./chunk-ZSPPJW4G.js";
10
10
  import "./chunk-ZXKFJQDE.js";
11
11
  import {
12
12
  info,
@@ -25,7 +25,7 @@ async function loadToolCatalog() {
25
25
  const response = await fetchToolCatalog();
26
26
  if (!response.ok) {
27
27
  const msg = response.error && typeof response.error === "object" && "message" in response.error ? String(response.error.message) : "Failed to fetch tool catalog";
28
- const { CliError } = await import("./errors-W3GXQN34.js");
28
+ const { CliError } = await import("./errors-YQAVCXXO.js");
29
29
  const { outputError } = await import("./output-BBHBJI32.js");
30
30
  await outputError(new CliError("API_ERROR", msg, "Check: hive doctor"), {});
31
31
  return [];
@@ -173,7 +173,7 @@ async function toolInfo(name, reservedNames = /* @__PURE__ */ new Set()) {
173
173
  const allTools = await loadToolCatalog();
174
174
  const tool = allTools.find((t) => t.name === name);
175
175
  if (!tool) {
176
- const { CliError, suggestSimilarTools } = await import("./errors-W3GXQN34.js");
176
+ const { CliError, suggestSimilarTools } = await import("./errors-YQAVCXXO.js");
177
177
  const { outputError } = await import("./output-BBHBJI32.js");
178
178
  const similar = suggestSimilarTools(
179
179
  name,
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-FQNW6SZ6.js";
6
6
  import {
7
7
  removeRecordedRoutingBlocks
8
- } from "./chunk-POPAEM4E.js";
8
+ } from "./chunk-APBLB62S.js";
9
9
  import {
10
10
  removeClaudeCodeUserConfig,
11
11
  removeClaudeDesktopConfig,
@@ -15,7 +15,7 @@ import {
15
15
  removeVscodeConfig,
16
16
  removeWindsurfConfig
17
17
  } from "./chunk-QDZ7MAVN.js";
18
- import "./chunk-3Z5VR53Z.js";
18
+ import "./chunk-ZSPPJW4G.js";
19
19
  import "./chunk-4QDGA6GP.js";
20
20
  import {
21
21
  bold,
@@ -1,11 +1,11 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  executeTool
4
- } from "./chunk-WII7MTYZ.js";
4
+ } from "./chunk-YLHNUAFT.js";
5
5
  import "./chunk-XN3T6YOG.js";
6
- import "./chunk-TWYGJEVN.js";
6
+ import "./chunk-RNVZIPNY.js";
7
7
  import "./chunk-RU6QOFHH.js";
8
- import "./chunk-3Z5VR53Z.js";
8
+ import "./chunk-ZSPPJW4G.js";
9
9
  import "./chunk-EPF36Q3Z.js";
10
10
  import "./chunk-ZXKFJQDE.js";
11
11
  import "./chunk-ZDXMZPC6.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hive-intelligence",
3
- "version": "1.7.1",
3
+ "version": "1.7.3",
4
4
  "description": "Evidence-backed crypto due diligence for AI agents, with sources, freshness, and a runtime receipt on every call.",
5
5
  "mcpName": "xyz.hiveintelligence/mcp",
6
6
  "type": "module",
@@ -157,7 +157,7 @@
157
157
  },
158
158
  "overrides": {
159
159
  "github-actionlint": {
160
- "adm-zip": "0.6.0"
160
+ "adm-zip": "0.6.1"
161
161
  },
162
162
  "@modelcontextprotocol/sdk": {
163
163
  "express-rate-limit": "8.5.2"