@algosuite/vo-mcp 0.2.0-beta.40 → 0.2.0-beta.42

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.
@@ -400,6 +400,7 @@ function extractModelUsage(evt) {
400
400
  }
401
401
 
402
402
  // ../../scripts/virtual-office/code-runner/claude-result-event.mjs
403
+ var CAPPED_RESULT_SUBTYPES = Object.freeze(["error_max_budget_usd", "error_max_turns"]);
403
404
  function buildResultEvent(evt) {
404
405
  const isError = Boolean(evt.is_error) || evt.subtype === "error_max_turns" || evt.subtype === "error_during_execution";
405
406
  return {
@@ -681,7 +682,14 @@ var PROVIDER_ENV = {
681
682
  "oai-compat": ["VO_CODE_RUNNER_OAI_API_KEY"],
682
683
  // Sovereign local inference (Ollama / LM Studio). The key is OPTIONAL — most
683
684
  // local servers need none — and exists for locally secured endpoints only.
684
- local: ["VO_CODE_RUNNER_LOCAL_API_KEY"]
685
+ local: ["VO_CODE_RUNNER_LOCAL_API_KEY"],
686
+ // AlgoHQ cloud consensus (ADR-002 moat plane) entitlement token. Not a model
687
+ // key: it authorises the runner's `vo_consensus_judgment` / `vo_verify_answer`
688
+ // tools against the moat. On an npm-installed runner the local consensus
689
+ // engine is never present (it is a workspace-only package), so WITHOUT this
690
+ // token every consensus call answers `unimplemented /
691
+ // consensus-engine-package-not-installed` (2026-08-16 finding, task fbd8659b).
692
+ moat: ["VO_ENTITLEMENT_TOKEN"]
685
693
  };
686
694
  var PROVIDER_ALIAS = {
687
695
  claude: "anthropic",
@@ -697,7 +705,10 @@ var PROVIDER_ALIAS = {
697
705
  "oai-compat": "oai-compat",
698
706
  local: "local",
699
707
  ollama: "local",
700
- lmstudio: "local"
708
+ lmstudio: "local",
709
+ moat: "moat",
710
+ entitlement: "moat",
711
+ consensus: "moat"
701
712
  };
702
713
  function resolveProvider(name) {
703
714
  const key = String(name || "").trim().toLowerCase();
package/dist/cli.js CHANGED
@@ -8400,10 +8400,15 @@ function createConsensusFallbackClient(primary, fallback, options = {}) {
8400
8400
  import { createRequire as createRequire2 } from "node:module";
8401
8401
  var require2 = createRequire2(import.meta.url);
8402
8402
  var KEY_SERVICE = "algosuite-vo";
8403
+ var MOAT_ENTITLEMENT_KEYCHAIN_ACCOUNT = "moat-api-key";
8403
8404
  var KEYCHAIN_TARGETS = [
8404
8405
  { account: "anthropic-api-key", envVar: "ANTHROPIC_API_KEY" },
8405
8406
  { account: "openai-api-key", envVar: "OPENAI_API_KEY" },
8406
- { account: "meta-api-key", envVar: "MODEL_API_KEY" }
8407
+ { account: "meta-api-key", envVar: "MODEL_API_KEY" },
8408
+ // The cloud-consensus entitlement (ADR-002 moat). Read here so an npm-installed
8409
+ // runner — where the local engine package never exists — still has a working
8410
+ // consensus path without an operator plumbing a secret into the daemon's env.
8411
+ { account: MOAT_ENTITLEMENT_KEYCHAIN_ACCOUNT, envVar: "VO_ENTITLEMENT_TOKEN" }
8407
8412
  ];
8408
8413
  function loadEntryCtor() {
8409
8414
  try {
@@ -8703,7 +8708,7 @@ async function main() {
8703
8708
  if (!process.env[key] && localEnv[key]) process.env[key] = localEnv[key];
8704
8709
  }
8705
8710
  const localConsensus = tryCreateEngineConsensusClientFromEnv({ envSource: localEnv });
8706
- const cloudConsensus = testClient ? null : tryCreateMoatConsensusClientFromEnv();
8711
+ const cloudConsensus = testClient ? null : tryCreateMoatConsensusClientFromEnv(localEnv);
8707
8712
  let consensus = testClient ?? localConsensus;
8708
8713
  if (!testClient && cloudConsensus && localProviders.length >= 2) {
8709
8714
  console.error(`[vo-mcp] local-first consensus active (${localProviders.join(", ")}); cloud moat is fallback-only`);
@@ -8713,6 +8718,8 @@ async function main() {
8713
8718
  } else if (!testClient && cloudConsensus) {
8714
8719
  console.error("[vo-mcp] fewer than 2 linked local providers; cloud moat consensus active");
8715
8720
  consensus = cloudConsensus;
8721
+ } else if (!testClient) {
8722
+ console.error("[vo-mcp] no VO_ENTITLEMENT_TOKEN (env or keychain via `vo-mcp set-key --provider moat`); consensus tools depend on a locally installed engine and will report engine-unavailable on an npm-installed runner");
8716
8723
  }
8717
8724
  let adminCallables = null;
8718
8725
  try {