{"record":{"id":"b971dfdf27ed4d44","repo":"affaan-m/ECC","slug":"the-canonical-ito-compute-cli-is-unpublished-and-e","errorCode":null,"errorMessage":"The canonical ito-compute-cli is unpublished and ECC will not resolve a credential-bearing \"ito\" executable from PATH. Build it from ${CANONICAL_REPOSITORY.replace(/\\.git$/, \"\")}/${CANONICAL_PACKAGE_PATH}, run npm ci and npm run check, then set ${EXECUTABLE_OVERRIDE} to the explicit absolute dist/bin/ito.js path.","messagePattern":"The canonical ito-compute-cli is unpublished and ECC will not resolve a credential-bearing \"ito\" executable from PATH\\. Build it from (.+?)/(.+?), run npm ci and npm run check, then set (.+?) to the explicit absolute dist/bin/ito\\.js path\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"scripts/ito.js","lineNumber":190,"sourceCode":"  }\n  if (command === \"evals\") {\n    validateNodeQualificationArgs(withoutJson, environment);\n  }\n\n  return Object.freeze({\n    help: false,\n    invocationArgs: Object.freeze([\n      ...(jsonIndexes.length === 1 ? [\"--json\"] : []),\n      command,\n      ...withoutJson,\n    ]),\n  });\n}\n\nfunction resolveItoExecutable(environment = process.env) {\n  const configured = environment[EXECUTABLE_OVERRIDE]?.trim();\n  if (!configured) {\n    throw new Error([\n      \"The canonical ito-compute-cli is unpublished and ECC will not resolve\",\n      `a credential-bearing \"ito\" executable from PATH. Build it from`,\n      `${CANONICAL_REPOSITORY.replace(/\\.git$/, \"\")}/${CANONICAL_PACKAGE_PATH},`,\n      \"run npm ci and npm run check, then set\",\n      `${EXECUTABLE_OVERRIDE} to the explicit absolute dist/bin/ito.js path.`,\n    ].join(\" \"));\n  }\n\n  if (!path.isAbsolute(configured)) {\n    throw new Error(\n      `${EXECUTABLE_OVERRIDE} must be an absolute path explicitly configured by the operator.`\n    );\n  }\n  return assertUsableExecutable(configured);\n}\n\nfunction assertUsableExecutable(candidate) {\n  let canonicalCandidate;","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/affaan-m/ECC/blob/01e15490f04e29cfefe3896951f43db46994d8ee/scripts/ito.js#L172-L208","documentation":"Thrown by resolveItoExecutable at scripts/ito.js:189-196 when the ECC_ITO_CLI_EXECUTABLE environment variable is unset, undefined, or trims to empty. ECC deliberately refuses to discover a credential-bearing 'ito' binary via PATH for security: PATH resolution could pick up a shim or hostile executable. The canonical ito-compute-cli package is currently unpublished, so the operator must build it locally and point ECC at the explicit built entry. The message embeds build instructions and the canonical repo path (CANONICAL_REPOSITORY with trailing .git stripped, plus CANONICAL_PACKAGE_PATH).","triggerScenarios":"Any `ecc ito <command>` invocation (other than --help/-h) when ECC_ITO_CLI_EXECUTABLE is not set. main() always calls resolveItoExecutable after parseArgs succeeds (ito.js:304).","commonSituations":"First-time setup after upgrading ECC; new machine without the env var exported; CI runner that does not source the operator's shell rc; operator cloned ito-cloud-runtime but forgot to export ECC_ITO_CLI_EXECUTABLE in the shell that runs ecc.","solutions":["Clone and build the canonical CLI: `git clone https://github.com/Ito-Markets/ito-cloud-runtime.git && cd ito-cloud-runtime/cli/ito-compute-cli && npm ci && npm run check`.","Export the absolute built entry: `export ECC_ITO_CLI_EXECUTABLE=\"/abs/ito-cloud-runtime/cli/ito-compute-cli/dist/bin/ito.js\"`.","Add the export to ~/.zshrc / ~/.bashrc / the CI env so it persists.","Verify with `echo \"$ECC_ITO_CLI_EXECUTABLE\"` and `test -f \"$ECC_ITO_CLI_EXECUTABLE\"` before rerunning ecc ito."],"exampleFix":"// before\n$ ecc ito status\nError: The canonical ito-compute-cli is unpublished ...\n// after\n$ git clone https://github.com/Ito-Markets/ito-cloud-runtime.git\n$ cd ito-cloud-runtime/cli/ito-compute-cli && npm ci && npm run check\n$ export ECC_ITO_CLI_EXECUTABLE=\"$PWD/dist/bin/ito.js\"\n$ ecc ito status","handlingStrategy":"validation","validationCode":"function assertItoExecutableConfigured(env) {\n  const v = (env.ECC_ITO_CLI_EXECUTABLE || '').trim();\n  if (!v) {\n    throw new Error('ECC_ITO_CLI_EXECUTABLE is unset. Build ito-compute-cli and export the absolute dist/bin/ito.js path.');\n  }\n  return v;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add the export to ~/.zshrc / ~/.bashrc and to the CI environment secrets.","Verify the env var in a preflight step at the start of any pipeline that uses ecc ito.","Document the build + export pair in onboarding so new operators hit it once, not repeatedly."],"tags":["cli","ito","environment","security","setup","configuration"],"backgroundTag":null,"analyzedSha":"01e15490f04e29cfefe3896951f43db46994d8ee","analyzedAt":"2026-08-13T00:31:08.655Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}