@humain/humain-code 0.3.7 → 0.3.8
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/CHANGELOG.md +7 -0
- package/dist/bundle/agent-monitor.js +1 -1
- package/dist/bundle/chunks/{chunk-B44UVTZL.js → chunk-2KVH67UZ.js} +1 -1
- package/dist/bundle/chunks/{chunk-IYCS4ZUX.js → chunk-3ZYKCI45.js} +1 -1
- package/dist/bundle/chunks/{chunk-E6ZGTXQP.js → chunk-6HQRNHO7.js} +1 -1
- package/dist/bundle/chunks/{chunk-LTQ2YA2G.js → chunk-6MMGBL46.js} +2 -2
- package/dist/bundle/chunks/{chunk-6PGWVVGK.js → chunk-74L7EWMA.js} +1 -1
- package/dist/bundle/chunks/{chunk-7VMWPYCR.js → chunk-HL54JCNV.js} +3 -3
- package/dist/bundle/chunks/{chunk-ZWHFLRTK.js → chunk-QJZ5QYKE.js} +1 -1
- package/dist/bundle/chunks/{chunk-UDTXD6EF.js → chunk-QWB2GGVH.js} +116 -115
- package/dist/bundle/chunks/{chunk-I2VOYPDI.js → chunk-REZ7FW4X.js} +1 -1
- package/dist/bundle/chunks/{chunk-6FTYU7I7.js → chunk-TEOX3AWC.js} +1 -1
- package/dist/bundle/chunks/{chunk-DMAZLWJY.js → chunk-VHVY22A2.js} +1 -1
- package/dist/bundle/chunks/{chunk-IPWO7ULX.js → chunk-WQN4VIAM.js} +17 -17
- package/dist/bundle/chunks/{chunk-RCJ2GKUP.js → chunk-X5JUC5RE.js} +1 -1
- package/dist/bundle/chunks/{chunk-ANSL5PYD.js → chunk-YEG6NREY.js} +3 -3
- package/dist/bundle/chunks/{cli-JPMYGPAI.js → cli-5NYUGRWC.js} +2 -2
- package/dist/bundle/chunks/{compat-VHCHB5WQ.js → compat-UPJNJCGF.js} +1 -1
- package/dist/bundle/chunks/{easter-egg-3d-XXETTDXE.js → easter-egg-3d-XUJ4HNAR.js} +1 -1
- package/dist/bundle/chunks/{execute-G3YZLU7S.js → execute-IAU7EI3P.js} +1 -1
- package/dist/bundle/chunks/{extract-SJF4DY5M.js → extract-QIC545HI.js} +2 -2
- package/dist/bundle/chunks/{host-M54XD7HV.js → host-QBIXSMNN.js} +1 -1
- package/dist/bundle/chunks/{runtime-POHTHFKR.js → runtime-NBGMTCI6.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-ORGE66B4.js → virtual-modules-P2MH665T.js} +2 -2
- package/dist/bundle/cli-runtime.js +2 -2
- package/dist/bundle/index.js +5 -5
- package/dist/bundle/rpc-entry.js +2 -2
- package/dist/config.d.ts +5 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -2
- package/dist/config.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/humain-code.md +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { accessSync, constants, existsSync, readFileSync, realpathSync } from \"fs\";\nimport { createRequire } from \"module\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join, resolve, sep, win32 } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { spawnProcessSync } from \"./utils/child-process.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nimport { stripBom } from \"./utils/text.ts\";\n\n// =============================================================================\n// Package Detection\n// =============================================================================\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst BOOTSTRAP_ENV_PACKAGE_DIR = \"HUMAIN_TERMINAL_PACKAGE_DIR\";\n\n/**\n * Detect if we're running as a Bun compiled binary.\n * Bun binaries have import.meta.url containing \"$bunfs\", \"~BUN\", or \"%7EBUN\" (Bun's virtual filesystem path)\n */\nexport const isBunBinary =\n\timport.meta.url.includes(\"$bunfs\") || import.meta.url.includes(\"~BUN\") || import.meta.url.includes(\"%7EBUN\");\n\n/** Detect if Bun is the runtime (compiled binary or bun run) */\nexport const isBunRuntime = !!process.versions.bun;\n\n/** Detect the esbuild-bundled Node.js distribution. */\ndeclare const PI_BUNDLED_NODE: boolean;\nexport const isBundledNode = typeof PI_BUNDLED_NODE !== \"undefined\" && PI_BUNDLED_NODE;\n\n// =============================================================================\n// Install Method Detection\n// =============================================================================\n\nexport type InstallMethod = \"bun-binary\" | \"npm\" | \"pnpm\" | \"yarn\" | \"bun\" | \"unknown\";\n\ninterface SelfUpdateCommandStep {\n\tcommand: string;\n\targs: string[];\n\tdisplay: string;\n}\n\nexport interface SelfUpdateCommand extends SelfUpdateCommandStep {\n\tsteps?: SelfUpdateCommandStep[];\n}\n\nexport type SelfUpdatePackageTarget = string | { packageName: string; installSpec?: string };\n\nfunction normalizeSelfUpdatePackageTarget(target: SelfUpdatePackageTarget): {\n\tpackageName: string;\n\tinstallSpec: string;\n} {\n\tif (typeof target === \"string\") {\n\t\treturn { packageName: target, installSpec: target };\n\t}\n\treturn { packageName: target.packageName, installSpec: target.installSpec ?? target.packageName };\n}\n\nfunction makeSelfUpdateCommand(\n\tinstallStep: SelfUpdateCommandStep,\n\tuninstallStep?: SelfUpdateCommandStep,\n): SelfUpdateCommand {\n\tif (!uninstallStep) return installStep;\n\treturn {\n\t\t...installStep,\n\t\tdisplay: `${uninstallStep.display} && ${installStep.display}`,\n\t\tsteps: [uninstallStep, installStep],\n\t};\n}\n\nfunction makeSelfUpdateCommandStep(command: string, args: string[]): SelfUpdateCommandStep {\n\treturn {\n\t\tcommand,\n\t\targs,\n\t\tdisplay: [command, ...args].map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg)).join(\" \"),\n\t};\n}\n\nexport function detectInstallMethod(): InstallMethod {\n\tif (isBunBinary) {\n\t\treturn \"bun-binary\";\n\t}\n\n\tconst resolvedPath = `${__dirname}\\0${process.execPath || \"\"}`.toLowerCase().replace(/\\\\/g, \"/\");\n\n\tif (resolvedPath.includes(\"/pnpm/\") || resolvedPath.includes(\"/.pnpm/\")) {\n\t\treturn \"pnpm\";\n\t}\n\tif (resolvedPath.includes(\"/yarn/\") || resolvedPath.includes(\"/.yarn/\")) {\n\t\treturn \"yarn\";\n\t}\n\tif (isBunRuntime || resolvedPath.includes(\"/install/global/node_modules/\")) {\n\t\treturn \"bun\";\n\t}\n\tif (resolvedPath.includes(\"/npm/\") || resolvedPath.includes(\"/node_modules/\")) {\n\t\treturn \"npm\";\n\t}\n\n\treturn \"unknown\";\n}\n\nfunction getInferredNpmInstall(): { root: string; prefix: string } | undefined {\n\tconst packageDir = getPackageDir();\n\tconst path = process.platform === \"win32\" || packageDir.includes(\"\\\\\") ? win32 : { basename, dirname };\n\tconst parent = path.dirname(packageDir);\n\tlet root: string | undefined;\n\tif (path.basename(parent).startsWith(\"@\") && path.basename(path.dirname(parent)) === \"node_modules\") {\n\t\troot = path.dirname(parent);\n\t} else if (path.basename(parent) === \"node_modules\") {\n\t\troot = parent;\n\t}\n\tif (!root) return undefined;\n\tconst rootParent = path.dirname(root);\n\tif (path.basename(rootParent) === \"lib\") return { root, prefix: path.dirname(rootParent) };\n\t// Windows global npm prefixes use `<prefix>\\\\node_modules`, which is\n\t// indistinguishable from local project installs by path shape alone. Do not\n\t// infer unsupported Windows custom prefixes without `npm root -g` evidence.\n\treturn undefined;\n}\n\nfunction getSelfUpdateCommandForMethod(\n\tmethod: InstallMethod,\n\tinstalledPackageName: string,\n\tupdatePackageTarget: SelfUpdatePackageTarget = installedPackageName,\n\tnpmCommand?: string[],\n): SelfUpdateCommand | undefined {\n\tconst target = normalizeSelfUpdatePackageTarget(updatePackageTarget);\n\tswitch (method) {\n\t\tcase \"bun-binary\":\n\t\t\treturn undefined;\n\t\tcase \"pnpm\": {\n\t\t\tconst match = readCommandOutput(\"pnpm\", [\"root\", \"-g\"])\n\t\t\t\t? undefined\n\t\t\t\t: /^(.*[\\\\/]global[\\\\/][^\\\\/]+)[\\\\/]\\.pnpm[\\\\/]/.exec(getPackageDir());\n\t\t\tconst binDirArgs = match\n\t\t\t\t? [`--config.global-bin-dir=${process.env.PNPM_HOME || dirname(dirname(match[1]))}`]\n\t\t\t\t: [];\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"pnpm\", [\n\t\t\t\t\t\"install\",\n\t\t\t\t\t\"-g\",\n\t\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\t\"--config.minimumReleaseAge=0\",\n\t\t\t\t\t...binDirArgs,\n\t\t\t\t\ttarget.installSpec,\n\t\t\t\t]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"pnpm\", [\"remove\", \"-g\", ...binDirArgs, installedPackageName]),\n\t\t\t);\n\t\t}\n\t\tcase \"yarn\":\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"yarn\", [\"global\", \"add\", \"--ignore-scripts\", target.installSpec]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"yarn\", [\"global\", \"remove\", installedPackageName]),\n\t\t\t);\n\t\tcase \"bun\":\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"bun\", [\n\t\t\t\t\t\"install\",\n\t\t\t\t\t\"-g\",\n\t\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\t\"--minimum-release-age=0\",\n\t\t\t\t\ttarget.installSpec,\n\t\t\t\t]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"bun\", [\"uninstall\", \"-g\", installedPackageName]),\n\t\t\t);\n\t\tcase \"npm\": {\n\t\t\tconst [command = \"npm\", ...npmArgs] = npmCommand ?? [];\n\t\t\tconst inferred = npmCommand?.length ? undefined : getInferredNpmInstall();\n\t\t\tconst prefixArgs = [...npmArgs, ...(inferred ? [\"--prefix\", inferred.prefix] : [])];\n\t\t\t// pi.dev advertises releases immediately, so a configured npm age gate would\n\t\t\t// block the update. npm has no per-package age gate, so this also lets new\n\t\t\t// transitive dependency releases through. Managed installs avoid this.\n\t\t\tconst installStep = makeSelfUpdateCommandStep(command, [\n\t\t\t\t...prefixArgs,\n\t\t\t\t\"install\",\n\t\t\t\t\"-g\",\n\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\"--min-release-age=0\",\n\t\t\t\ttarget.installSpec,\n\t\t\t]);\n\t\t\tconst uninstallStep =\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(command, [...prefixArgs, \"uninstall\", \"-g\", installedPackageName]);\n\t\t\treturn makeSelfUpdateCommand(installStep, uninstallStep);\n\t\t}\n\t\tcase \"unknown\":\n\t\t\treturn undefined;\n\t}\n}\n\nfunction readCommandOutput(\n\tcommand: string,\n\targs: string[],\n\toptions: { requireSuccess?: boolean } = {},\n): string | undefined {\n\tconst result = spawnProcessSync(command, args, {\n\t\tencoding: \"utf-8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t});\n\tif (result.status === 0) return result.stdout.trim() || undefined;\n\tif (options.requireSuccess) {\n\t\tconst reason = result.error?.message || result.stderr.trim() || `exit code ${result.status ?? \"unknown\"}`;\n\t\tthrow new Error(`Failed to run ${[command, ...args].join(\" \")}: ${reason}`);\n\t}\n\treturn undefined;\n}\n\nfunction getGlobalPackageRoots(method: InstallMethod, _packageName: string, npmCommand?: string[]): string[] {\n\tswitch (method) {\n\t\tcase \"npm\": {\n\t\t\tconst configured = !!npmCommand?.length;\n\t\t\tconst [command = \"npm\", ...npmArgs] = npmCommand ?? [];\n\t\t\tif (configured && command === \"bun\") {\n\t\t\t\tconst bunBin = readCommandOutput(command, [...npmArgs, \"pm\", \"bin\", \"-g\"], {\n\t\t\t\t\trequireSuccess: true,\n\t\t\t\t});\n\t\t\t\tconst roots = [join(homedir(), \".bun\", \"install\", \"global\", \"node_modules\")];\n\t\t\t\tif (bunBin) {\n\t\t\t\t\troots.push(join(dirname(bunBin), \"install\", \"global\", \"node_modules\"));\n\t\t\t\t}\n\t\t\t\treturn roots;\n\t\t\t}\n\t\t\tconst root = readCommandOutput(command, [...npmArgs, \"root\", \"-g\"], {\n\t\t\t\trequireSuccess: configured,\n\t\t\t});\n\t\t\tconst inferred = configured ? undefined : getInferredNpmInstall();\n\t\t\treturn [root, inferred?.root].filter((x): x is string => !!x);\n\t\t}\n\t\tcase \"pnpm\": {\n\t\t\tconst root = readCommandOutput(\"pnpm\", [\"root\", \"-g\"]);\n\t\t\tif (root) return [root, dirname(root)];\n\t\t\tconst match = /^(.*[\\\\/]global[\\\\/][^\\\\/]+)[\\\\/]\\.pnpm[\\\\/]/.exec(getPackageDir());\n\t\t\treturn match ? [match[1]] : [];\n\t\t}\n\t\tcase \"yarn\": {\n\t\t\tconst dir = readCommandOutput(\"yarn\", [\"global\", \"dir\"]);\n\t\t\treturn dir ? [dir, join(dir, \"node_modules\")] : [];\n\t\t}\n\t\tcase \"bun\": {\n\t\t\tconst bunBin = readCommandOutput(\"bun\", [\"pm\", \"bin\", \"-g\"]);\n\t\t\tconst roots = [join(homedir(), \".bun\", \"install\", \"global\", \"node_modules\")];\n\t\t\tif (bunBin) {\n\t\t\t\troots.push(join(dirname(bunBin), \"install\", \"global\", \"node_modules\"));\n\t\t\t}\n\t\t\treturn roots;\n\t\t}\n\t\tcase \"bun-binary\":\n\t\tcase \"unknown\":\n\t\t\treturn [];\n\t}\n}\n\nfunction normalizeExistingPathForComparison(path: string, resolveSymlinks: boolean): string | undefined {\n\tconst resolvedPath = resolve(path);\n\tif (!existsSync(resolvedPath)) {\n\t\treturn undefined;\n\t}\n\tlet normalizedPath = resolvedPath;\n\tif (resolveSymlinks) {\n\t\ttry {\n\t\t\tnormalizedPath = realpathSync(resolvedPath);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\tif (process.platform === \"win32\") {\n\t\tnormalizedPath = normalizedPath.toLowerCase();\n\t}\n\treturn normalizedPath;\n}\n\nfunction getPathComparisonCandidates(path: string): string[] {\n\treturn Array.from(\n\t\tnew Set(\n\t\t\t[normalizeExistingPathForComparison(path, false), normalizeExistingPathForComparison(path, true)].filter(\n\t\t\t\t(candidate): candidate is string => !!candidate,\n\t\t\t),\n\t\t),\n\t);\n}\n\nfunction getEntrypointPackageDir(): string | undefined {\n\tconst entrypoint = process.argv[1];\n\tif (!entrypoint) return undefined;\n\tlet dir = dirname(entrypoint);\n\twhile (dir !== dirname(dir)) {\n\t\tif (existsSync(join(dir, \"package.json\"))) {\n\t\t\treturn dir;\n\t\t}\n\t\tdir = dirname(dir);\n\t}\n\treturn undefined;\n}\n\nfunction isSelfUpdatePathWritable(): boolean {\n\tconst packageDir = getPackageDir();\n\ttry {\n\t\taccessSync(packageDir, constants.W_OK);\n\t\taccessSync(dirname(packageDir), constants.W_OK);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isManagedByGlobalPackageManager(method: InstallMethod, packageName: string, npmCommand?: string[]): boolean {\n\tconst packageDirs = [getPackageDir(), getEntrypointPackageDir()].filter((dir): dir is string => !!dir);\n\tconst packageDirCandidates = packageDirs.flatMap((dir) => getPathComparisonCandidates(dir));\n\treturn getGlobalPackageRoots(method, packageName, npmCommand).some((root) => {\n\t\treturn getPathComparisonCandidates(root).some((normalizedRoot) => {\n\t\t\tconst rootPrefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;\n\t\t\treturn packageDirCandidates.some((packageDir) => packageDir.startsWith(rootPrefix));\n\t\t});\n\t});\n}\n\nexport function getSelfUpdateCommand(\n\tpackageName: string,\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = packageName,\n): SelfUpdateCommand | undefined {\n\tconst method = detectInstallMethod();\n\tconst command = getSelfUpdateCommandForMethod(method, packageName, updatePackageTarget, npmCommand);\n\tif (!command || !isManagedByGlobalPackageManager(method, packageName, npmCommand) || !isSelfUpdatePathWritable()) {\n\t\treturn undefined;\n\t}\n\treturn command;\n}\n\nexport function getSelfUpdateUnavailableInstruction(\n\tpackageName: string,\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = packageName,\n): string {\n\tconst method = detectInstallMethod();\n\tconst target = normalizeSelfUpdatePackageTarget(updatePackageTarget);\n\tif (method === \"bun-binary\") {\n\t\treturn `Download from: ${getBinaryReleaseUrl()}`;\n\t}\n\tconst command = getSelfUpdateCommandForMethod(method, packageName, target, npmCommand);\n\tif (command) {\n\t\tif (isManagedByGlobalPackageManager(method, packageName, npmCommand) && !isSelfUpdatePathWritable()) {\n\t\t\treturn `This installation is managed by a global ${method} install, but the install path is not writable. Update it yourself with: ${command.display}`;\n\t\t}\n\t\treturn `This installation is not managed by a global ${method} install. Update it with the package manager, wrapper, or source checkout that provides it.`;\n\t}\n\treturn `Update ${target.installSpec} using the package manager, wrapper, or source checkout that provides this installation.`;\n}\n\nexport function getUpdateInstruction(packageName: string): string {\n\tconst method = detectInstallMethod();\n\tconst command = getSelfUpdateCommandForMethod(method, packageName);\n\tif (command) {\n\t\treturn `Run: ${command.display}`;\n\t}\n\treturn getSelfUpdateUnavailableInstruction(packageName);\n}\n\n// =============================================================================\n// Package Asset Paths (shipped with executable)\n// =============================================================================\n\n/**\n * Get the base directory for resolving package assets (themes, package.json, README.md, CHANGELOG.md).\n * - For Bun binary: returns the directory containing the executable\n * - For Node.js: returns the package root containing package.json\n * - Ignores Bun binary metadata copied into dist/ when the package root is available\n */\nexport function findNodePackageDir(startDir: string): string {\n\tlet dir = startDir;\n\twhile (dir !== dirname(dir)) {\n\t\tif (existsSync(join(dir, \"package.json\"))) {\n\t\t\tconst parent = dirname(dir);\n\t\t\t// Binary builds copy package metadata into dist/. Node still needs the\n\t\t\t// package root so dist-relative asset paths do not become dist/dist/.\n\t\t\tif (basename(dir) === \"dist\" && existsSync(join(parent, \"package.json\"))) {\n\t\t\t\treturn parent;\n\t\t\t}\n\t\t\treturn dir;\n\t\t}\n\t\tdir = dirname(dir);\n\t}\n\treturn startDir;\n}\n\nexport function getPackageDir(): string {\n\t// Allow override via environment variable (useful for Nix/Guix where store paths tokenize poorly)\n\tconst envDir = process.env[BOOTSTRAP_ENV_PACKAGE_DIR];\n\tif (envDir) {\n\t\treturn normalizePath(envDir);\n\t}\n\n\tif (isBunBinary) {\n\t\t// Bun binary: process.execPath points to the compiled executable\n\t\treturn dirname(process.execPath);\n\t}\n\treturn findNodePackageDir(__dirname);\n}\n\n/**\n * Get path to built-in themes directory (shipped with package)\n * - For Bun binary: theme/ next to executable\n * - For Node.js (dist/): dist/modes/interactive/theme/\n * - For source (src/): src/modes/interactive/theme/\n */\nexport function getThemesDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"theme\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst distThemes = join(packageDir, \"dist\", \"modes\", \"interactive\", \"theme\");\n\treturn existsSync(join(distThemes, \"dark.json\"))\n\t\t? distThemes\n\t\t: join(packageDir, \"src\", \"modes\", \"interactive\", \"theme\");\n}\n\n/**\n * Get path to HTML export template directory (shipped with package)\n * - For Bun binary: export-html/ next to executable\n * - For Node.js (dist/): dist/core/export-html/\n * - For source (src/): src/core/export-html/\n */\nexport function getExportTemplateDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"export-html\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst srcOrDist = existsSync(join(packageDir, \"src\")) ? \"src\" : \"dist\";\n\treturn join(packageDir, srcOrDist, \"core\", \"export-html\");\n}\n\n/** Get path to package.json */\nexport function getPackageJsonPath(): string {\n\treturn join(getPackageDir(), \"package.json\");\n}\n\n/** Get path to README.md */\nexport function getReadmePath(): string {\n\treturn resolve(join(getPackageDir(), \"README.md\"));\n}\n\n/** Get path to docs directory */\nexport function getDocsPath(): string {\n\treturn resolve(join(getPackageDir(), \"docs\"));\n}\n\n/** Get path to examples directory */\nexport function getExamplesPath(): string {\n\treturn resolve(join(getPackageDir(), \"examples\"));\n}\n\n/** Get path to CHANGELOG.md */\nexport function getChangelogPath(): string {\n\treturn resolve(join(getPackageDir(), \"CHANGELOG.md\"));\n}\n\n/**\n * Get path to built-in interactive assets directory.\n * - For Bun binary: assets/ next to executable\n * - For Node.js (dist/): dist/modes/interactive/assets/\n * - For source (src/): src/modes/interactive/assets/\n */\nexport function getInteractiveAssetsDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"assets\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst srcOrDist = existsSync(join(packageDir, \"src\")) ? \"src\" : \"dist\";\n\treturn join(packageDir, srcOrDist, \"modes\", \"interactive\", \"assets\");\n}\n\n/** Get path to a bundled interactive asset */\nexport function getBundledInteractiveAssetPath(name: string): string {\n\treturn join(getInteractiveAssetsDir(), name);\n}\n\n/**\n * Get path to a vendored HUMAIN module's runtime assets (skill markdown, license text).\n * - For Bun binary: humain-modules/<module>/ next to executable (copied by scripts/build-binaries.sh)\n * - For Node.js (npm package or source checkout): src/humain/<module>/vendor/ (shipped via package.json `files`)\n */\nexport function getHumainModuleAssetsDir(moduleName: string): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"humain-modules\", moduleName);\n\t}\n\treturn join(getPackageDir(), \"src\", \"humain\", moduleName, \"vendor\");\n}\n\nlet quickJSWasmPath: string | undefined;\n\n/** Called by the Bun entry with the path of the QuickJS wasm file embedded in the compiled executable. */\nexport function setEmbeddedQuickJSWasmPath(path: string): void {\n\tquickJSWasmPath = path;\n}\n\n/**\n * Get path to `quickjs-wasi/quickjs.wasm`, the VM that runs codemode scripts. Resolved once so the\n * compiled module cached per path keeps working after an update removes this install (#10439).\n */\nexport function getQuickJSWasmPath(): string {\n\tquickJSWasmPath ??= createRequire(import.meta.url).resolve(\"quickjs-wasi/quickjs.wasm\");\n\treturn quickJSWasmPath;\n}\n\n/** Resolve the codemode worker entry for a release runtime. */\nexport function resolveCodemodeWorkerSpecifier(\n\truntime: \"bun-binary\" | \"bundled-node\" | \"unbundled\",\n\tmoduleUrl: string,\n): string | URL | undefined {\n\t// Bun embeds explicit source entrypoints, but on Windows Bun 1.3 cannot map an absolute\n\t// B:\\~BUN URL back to one. A relative string with the original source extension works on\n\t// every Bun platform. Bun keeps entrypoints relative to their common directory, which is src/\n\t// because HUMAIN builds the binary from src/bun/cli.ts (see scripts/build-binaries.sh).\n\tif (runtime === \"bun-binary\") return \"./extensions/codemode/worker.ts\";\n\tif (runtime === \"bundled-node\") return new URL(\"./codemode-worker.js\", moduleUrl);\n\treturn undefined;\n}\n\nlet codemodeWorkerDataUrl: URL | undefined;\n\n/**\n * Get the codemode worker entry, or undefined to use the worker that ships next to pi-codemode.\n * The Bun and Node release builds both pass the worker as an extra entrypoint.\n */\nexport function getCodemodeWorkerSpecifier(): string | URL | undefined {\n\tconst runtime = isBunBinary ? \"bun-binary\" : isBundledNode ? \"bundled-node\" : \"unbundled\";\n\tconst specifier = resolveCodemodeWorkerSpecifier(runtime, import.meta.url);\n\tif (runtime !== \"bundled-node\" || !(specifier instanceof URL)) return specifier;\n\t// Spawn workers from an in-memory copy. An update replaces or deletes the file while this\n\t// process keeps running (#10439). The bundle build keeps the worker free of relative imports\n\t// and import.meta, so it runs from a data: URL.\n\tcodemodeWorkerDataUrl ??= new URL(`data:text/javascript;base64,${readFileSync(specifier).toString(\"base64\")}`);\n\treturn codemodeWorkerDataUrl;\n}\n\nexport type InstallChange = { kind: \"updated\"; version: string } | { kind: \"removed\" };\n\n/**\n * Detect that the package this process runs from changed on disk, for example after `pi update`\n * in another terminal. Code loaded on demand can then be missing or from another version.\n *\n * Checks the package.json read at startup. Resolving it again would walk up past a deleted install\n * and could find an unrelated package.json, such as one in the home directory.\n */\nexport function detectInstallChange(packageJsonPath = startupPackageJsonPath): InstallChange | undefined {\n\t// The Bun binary embeds its code, so replacing the executable does not affect this process.\n\tif (isBunBinary || !packageJsonPath) return undefined;\n\tlet installed: PackageJson;\n\ttry {\n\t\tinstalled = JSON.parse(stripBom(readFileSync(packageJsonPath, \"utf-8\"))) as PackageJson;\n\t} catch (error) {\n\t\treturn (error as NodeJS.ErrnoException).code === \"ENOENT\" ? { kind: \"removed\" } : undefined;\n\t}\n\treturn installed.version && installed.version !== VERSION\n\t\t? { kind: \"updated\", version: installed.version }\n\t\t: undefined;\n}\n\n// =============================================================================\n// App Config (from package.json humainTerminalConfig; piConfig is a legacy fallback)\n// =============================================================================\n\ninterface PackageAppConfig {\n\tname?: string;\n\ttitle?: string;\n\tconfigDir?: string;\n\tenvPrefix?: string;\n\tfirstTimeSetup?: boolean;\n\tupstreamPiVersion?: string;\n}\n\ninterface PackageJson {\n\tname?: string;\n\tversion?: string;\n\thumainTerminalConfig?: PackageAppConfig;\n\tpiConfig?: PackageAppConfig;\n}\n\nlet pkg: PackageJson = {};\n/** The package.json this process started from, if one existed. */\nlet startupPackageJsonPath: string | undefined;\ntry {\n\tconst packageJsonPath = getPackageJsonPath();\n\tpkg = JSON.parse(stripBom(readFileSync(packageJsonPath, \"utf-8\"))) as PackageJson;\n\tstartupPackageJsonPath = packageJsonPath;\n} catch (e: unknown) {\n\tconst err = e as NodeJS.ErrnoException;\n\tif (err.code !== \"ENOENT\") throw e;\n}\n\nconst appConfig = pkg.humainTerminalConfig ?? pkg.piConfig;\nconst appConfigName: string | undefined = appConfig?.name;\nconst appConfigTitle: string | undefined = appConfig?.title;\nconst appConfigEnvPrefix: string | undefined = appConfig?.envPrefix;\n\nfunction sanitizeEnvPrefix(value: string): string {\n\treturn value\n\t\t.trim()\n\t\t.replace(/[^a-zA-Z0-9]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\")\n\t\t.toUpperCase();\n}\n\nexport const PACKAGE_NAME: string = pkg.name || \"@humain/humain-code\";\nexport const APP_NAME: string = appConfigName || \"pi\";\nexport const APP_TITLE: string = appConfigTitle || (appConfigName ? APP_NAME : \"π\");\n/** Display-only command name shown in help and usage text. Never use for paths, ids, or env vars. */\nexport const APP_COMMAND: string = APP_NAME === \"humain-terminal\" ? \"humain-code\" : APP_NAME;\nexport const CONFIG_DIR_NAME: string = appConfig?.configDir || \".pi\";\nexport const FIRST_TIME_SETUP_ENABLED: boolean = appConfig?.firstTimeSetup ?? false;\nexport const VERSION: string = pkg.version || \"0.0.0\";\nexport const UPSTREAM_PI_VERSION: string = appConfig?.upstreamPiVersion || \"0.0.0\";\n\n// e.g., PI_CODING_AGENT_DIR, TAU_CODING_AGENT_DIR, or HUMAIN_TERMINAL_CODING_AGENT_DIR.\nexport const ENV_PREFIX = sanitizeEnvPrefix(appConfigEnvPrefix || APP_NAME);\nexport const ENV_AGENT_DIR = `${ENV_PREFIX}_CODING_AGENT_DIR`;\nexport const ENV_SESSION_DIR = `${ENV_PREFIX}_CODING_AGENT_SESSION_DIR`;\nexport const ENV_SESSION_ID = `${ENV_PREFIX}_SESSION_ID`;\nexport const ENV_SESSION_FILE = `${ENV_PREFIX}_SESSION_FILE`;\nexport const ENV_PROVIDER = `${ENV_PREFIX}_PROVIDER`;\nexport const ENV_MODEL = `${ENV_PREFIX}_MODEL`;\nexport const ENV_MCP_CLIENT_METADATA_URL = `${ENV_PREFIX}_MCP_CLIENT_METADATA_URL`;\nexport const ENV_REASONING_LEVEL = `${ENV_PREFIX}_REASONING_LEVEL`;\nexport const ENV_OFFLINE = `${ENV_PREFIX}_OFFLINE`;\nexport const ENV_PACKAGE_DIR = `${ENV_PREFIX}_PACKAGE_DIR`;\nexport const ENV_SHARE_VIEWER_URL = `${ENV_PREFIX}_SHARE_VIEWER_URL`;\nexport const ENV_SKIP_VERSION_CHECK = `${ENV_PREFIX}_SKIP_VERSION_CHECK`;\nexport const ENV_STARTUP_BENCHMARK = `${ENV_PREFIX}_STARTUP_BENCHMARK`;\nexport const ENV_TELEMETRY = `${ENV_PREFIX}_TELEMETRY`;\nexport const ENV_VERSION_CHECK_URL = `${ENV_PREFIX}_VERSION_CHECK_URL`;\nexport const ENV_BINARY_RELEASE_URL = `${ENV_PREFIX}_BINARY_RELEASE_URL`;\nexport const ENV_INSTALL_TELEMETRY_URL = `${ENV_PREFIX}_INSTALL_TELEMETRY_URL`;\nexport const ENV_CHANGELOG_URL = `${ENV_PREFIX}_CHANGELOG_URL`;\n\nexport function expandTildePath(path: string): string {\n\treturn normalizePath(path);\n}\n\nexport const HUMAIN_TERMINAL_WEB_URL = \"https://terminal.humain.com\";\nexport const HUMAIN_TERMINAL_BINARY_RELEASE_URL =\n\t\"https://gitlab.humain.com/humain/data-and-ai-modeling/standard/agentic/humain-terminal/-/releases/permalink/latest\";\nexport const HUMAIN_TERMINAL_VERSION_CHECK_URL = `${HUMAIN_TERMINAL_WEB_URL}/api/latest-version`;\nexport const HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL = `${HUMAIN_TERMINAL_WEB_URL}/api/report-install`;\nexport const HUMAIN_TERMINAL_CHANGELOG_URL = `${HUMAIN_TERMINAL_WEB_URL}/changelog`;\nexport const DEFAULT_SHARE_VIEWER_URL = `${HUMAIN_TERMINAL_WEB_URL}/session/`;\n\nexport function getVersionCheckUrl(): string {\n\treturn process.env[ENV_VERSION_CHECK_URL] || HUMAIN_TERMINAL_VERSION_CHECK_URL;\n}\n\nexport function getBinaryReleaseUrl(): string {\n\treturn process.env[ENV_BINARY_RELEASE_URL] || HUMAIN_TERMINAL_BINARY_RELEASE_URL;\n}\n\nexport function getInstallTelemetryUrl(version: string): string {\n\tconst url = new URL(process.env[ENV_INSTALL_TELEMETRY_URL] || HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL);\n\turl.searchParams.set(\"version\", version);\n\treturn url.toString();\n}\n\nexport function getChangelogUrl(): string {\n\treturn process.env[ENV_CHANGELOG_URL] || HUMAIN_TERMINAL_CHANGELOG_URL;\n}\n\n/** Get the share viewer URL for a gist ID */\nexport function getShareViewerUrl(gistId: string): string {\n\tconst baseUrl = process.env[ENV_SHARE_VIEWER_URL] || process.env.PI_SHARE_VIEWER_URL || DEFAULT_SHARE_VIEWER_URL;\n\treturn `${baseUrl}#${gistId}`;\n}\n\n// =============================================================================\n// User Config Paths (~/.humain-terminal/agent/*)\n// =============================================================================\n\n/** Get the agent config directory (e.g., ~/.humain-terminal/agent/) */\nexport function getAgentDir(): string {\n\tconst envDir = process.env[ENV_AGENT_DIR];\n\tif (envDir) {\n\t\treturn expandTildePath(envDir);\n\t}\n\treturn join(homedir(), CONFIG_DIR_NAME, \"agent\");\n}\n\n/** Get path to user's custom themes directory */\nexport function getCustomThemesDir(): string {\n\treturn join(getAgentDir(), \"themes\");\n}\n\n/** Get path to models.json */\nexport function getModelsPath(): string {\n\treturn join(getAgentDir(), \"models.json\");\n}\n\n/** Get path to auth.json */\nexport function getAuthPath(): string {\n\treturn join(getAgentDir(), \"auth.json\");\n}\n\n/** Get path to settings.json */\nexport function getSettingsPath(): string {\n\treturn join(getAgentDir(), \"settings.json\");\n}\n\n/** Get path to tools directory */\nexport function getToolsDir(): string {\n\treturn join(getAgentDir(), \"tools\");\n}\n\n/** Get path to managed binaries directory (fd, rg) */\nexport function getBinDir(): string {\n\treturn join(getAgentDir(), \"bin\");\n}\n\n/** Get path to prompt templates directory */\nexport function getPromptsDir(): string {\n\treturn join(getAgentDir(), \"prompts\");\n}\n\n/** Get path to sessions directory */\nexport function getSessionsDir(): string {\n\treturn join(getAgentDir(), \"sessions\");\n}\n\n/** Get path to debug log file */\nexport function getDebugLogPath(): string {\n\treturn join(getAgentDir(), `${APP_NAME}-debug.log`);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { accessSync, constants, existsSync, readFileSync, realpathSync } from \"fs\";\nimport { createRequire } from \"module\";\nimport { homedir } from \"os\";\nimport { basename, dirname, join, resolve, sep, win32 } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { spawnProcessSync } from \"./utils/child-process.ts\";\nimport { normalizePath } from \"./utils/paths.ts\";\nimport { stripBom } from \"./utils/text.ts\";\n\n// =============================================================================\n// Package Detection\n// =============================================================================\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst BOOTSTRAP_ENV_PACKAGE_DIR = \"HUMAIN_TERMINAL_PACKAGE_DIR\";\n\n/**\n * Detect if we're running as a Bun compiled binary.\n * Bun binaries have import.meta.url containing \"$bunfs\", \"~BUN\", or \"%7EBUN\" (Bun's virtual filesystem path)\n */\nexport const isBunBinary =\n\timport.meta.url.includes(\"$bunfs\") || import.meta.url.includes(\"~BUN\") || import.meta.url.includes(\"%7EBUN\");\n\n/** Detect if Bun is the runtime (compiled binary or bun run) */\nexport const isBunRuntime = !!process.versions.bun;\n\n/** Detect the esbuild-bundled Node.js distribution. */\ndeclare const PI_BUNDLED_NODE: boolean;\nexport const isBundledNode = typeof PI_BUNDLED_NODE !== \"undefined\" && PI_BUNDLED_NODE;\n\n// =============================================================================\n// Install Method Detection\n// =============================================================================\n\nexport type InstallMethod = \"bun-binary\" | \"npm\" | \"pnpm\" | \"yarn\" | \"bun\" | \"unknown\";\n\ninterface SelfUpdateCommandStep {\n\tcommand: string;\n\targs: string[];\n\tdisplay: string;\n}\n\nexport interface SelfUpdateCommand extends SelfUpdateCommandStep {\n\tsteps?: SelfUpdateCommandStep[];\n}\n\nexport type SelfUpdatePackageTarget = string | { packageName: string; installSpec?: string };\n\nfunction normalizeSelfUpdatePackageTarget(target: SelfUpdatePackageTarget): {\n\tpackageName: string;\n\tinstallSpec: string;\n} {\n\tif (typeof target === \"string\") {\n\t\treturn { packageName: target, installSpec: target };\n\t}\n\treturn { packageName: target.packageName, installSpec: target.installSpec ?? target.packageName };\n}\n\nfunction makeSelfUpdateCommand(\n\tinstallStep: SelfUpdateCommandStep,\n\tuninstallStep?: SelfUpdateCommandStep,\n): SelfUpdateCommand {\n\tif (!uninstallStep) return installStep;\n\treturn {\n\t\t...installStep,\n\t\tdisplay: `${uninstallStep.display} && ${installStep.display}`,\n\t\tsteps: [uninstallStep, installStep],\n\t};\n}\n\nfunction makeSelfUpdateCommandStep(command: string, args: string[]): SelfUpdateCommandStep {\n\treturn {\n\t\tcommand,\n\t\targs,\n\t\tdisplay: [command, ...args].map((arg) => (/\\s/.test(arg) ? `\"${arg}\"` : arg)).join(\" \"),\n\t};\n}\n\nexport function detectInstallMethod(): InstallMethod {\n\tif (isBunBinary) {\n\t\treturn \"bun-binary\";\n\t}\n\n\tconst resolvedPath = `${__dirname}\\0${process.execPath || \"\"}`.toLowerCase().replace(/\\\\/g, \"/\");\n\n\tif (resolvedPath.includes(\"/pnpm/\") || resolvedPath.includes(\"/.pnpm/\")) {\n\t\treturn \"pnpm\";\n\t}\n\tif (resolvedPath.includes(\"/yarn/\") || resolvedPath.includes(\"/.yarn/\")) {\n\t\treturn \"yarn\";\n\t}\n\tif (isBunRuntime || resolvedPath.includes(\"/install/global/node_modules/\")) {\n\t\treturn \"bun\";\n\t}\n\tif (resolvedPath.includes(\"/npm/\") || resolvedPath.includes(\"/node_modules/\")) {\n\t\treturn \"npm\";\n\t}\n\n\treturn \"unknown\";\n}\n\nfunction getInferredNpmInstall(): { root: string; prefix: string } | undefined {\n\tconst packageDir = getPackageDir();\n\tconst path = process.platform === \"win32\" || packageDir.includes(\"\\\\\") ? win32 : { basename, dirname };\n\tconst parent = path.dirname(packageDir);\n\tlet root: string | undefined;\n\tif (path.basename(parent).startsWith(\"@\") && path.basename(path.dirname(parent)) === \"node_modules\") {\n\t\troot = path.dirname(parent);\n\t} else if (path.basename(parent) === \"node_modules\") {\n\t\troot = parent;\n\t}\n\tif (!root) return undefined;\n\tconst rootParent = path.dirname(root);\n\tif (path.basename(rootParent) === \"lib\") return { root, prefix: path.dirname(rootParent) };\n\t// Windows global npm prefixes use `<prefix>\\\\node_modules`, which is\n\t// indistinguishable from local project installs by path shape alone. Do not\n\t// infer unsupported Windows custom prefixes without `npm root -g` evidence.\n\treturn undefined;\n}\n\nfunction getSelfUpdateCommandForMethod(\n\tmethod: InstallMethod,\n\tinstalledPackageName: string,\n\tupdatePackageTarget: SelfUpdatePackageTarget = installedPackageName,\n\tnpmCommand?: string[],\n): SelfUpdateCommand | undefined {\n\tconst target = normalizeSelfUpdatePackageTarget(updatePackageTarget);\n\tswitch (method) {\n\t\tcase \"bun-binary\":\n\t\t\treturn undefined;\n\t\tcase \"pnpm\": {\n\t\t\tconst match = readCommandOutput(\"pnpm\", [\"root\", \"-g\"])\n\t\t\t\t? undefined\n\t\t\t\t: /^(.*[\\\\/]global[\\\\/][^\\\\/]+)[\\\\/]\\.pnpm[\\\\/]/.exec(getPackageDir());\n\t\t\tconst binDirArgs = match\n\t\t\t\t? [`--config.global-bin-dir=${process.env.PNPM_HOME || dirname(dirname(match[1]))}`]\n\t\t\t\t: [];\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"pnpm\", [\n\t\t\t\t\t\"install\",\n\t\t\t\t\t\"-g\",\n\t\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\t\"--config.minimumReleaseAge=0\",\n\t\t\t\t\t...binDirArgs,\n\t\t\t\t\ttarget.installSpec,\n\t\t\t\t]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"pnpm\", [\"remove\", \"-g\", ...binDirArgs, installedPackageName]),\n\t\t\t);\n\t\t}\n\t\tcase \"yarn\":\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"yarn\", [\"global\", \"add\", \"--ignore-scripts\", target.installSpec]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"yarn\", [\"global\", \"remove\", installedPackageName]),\n\t\t\t);\n\t\tcase \"bun\":\n\t\t\treturn makeSelfUpdateCommand(\n\t\t\t\tmakeSelfUpdateCommandStep(\"bun\", [\n\t\t\t\t\t\"install\",\n\t\t\t\t\t\"-g\",\n\t\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\t\"--minimum-release-age=0\",\n\t\t\t\t\ttarget.installSpec,\n\t\t\t\t]),\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(\"bun\", [\"uninstall\", \"-g\", installedPackageName]),\n\t\t\t);\n\t\tcase \"npm\": {\n\t\t\tconst [command = \"npm\", ...npmArgs] = npmCommand ?? [];\n\t\t\tconst inferred = npmCommand?.length ? undefined : getInferredNpmInstall();\n\t\t\tconst prefixArgs = [...npmArgs, ...(inferred ? [\"--prefix\", inferred.prefix] : [])];\n\t\t\t// pi.dev advertises releases immediately, so a configured npm age gate would\n\t\t\t// block the update. npm has no per-package age gate, so this also lets new\n\t\t\t// transitive dependency releases through. Managed installs avoid this.\n\t\t\tconst installStep = makeSelfUpdateCommandStep(command, [\n\t\t\t\t...prefixArgs,\n\t\t\t\t\"install\",\n\t\t\t\t\"-g\",\n\t\t\t\t\"--ignore-scripts\",\n\t\t\t\t\"--min-release-age=0\",\n\t\t\t\ttarget.installSpec,\n\t\t\t]);\n\t\t\tconst uninstallStep =\n\t\t\t\ttarget.packageName === installedPackageName\n\t\t\t\t\t? undefined\n\t\t\t\t\t: makeSelfUpdateCommandStep(command, [...prefixArgs, \"uninstall\", \"-g\", installedPackageName]);\n\t\t\treturn makeSelfUpdateCommand(installStep, uninstallStep);\n\t\t}\n\t\tcase \"unknown\":\n\t\t\treturn undefined;\n\t}\n}\n\nfunction readCommandOutput(\n\tcommand: string,\n\targs: string[],\n\toptions: { requireSuccess?: boolean } = {},\n): string | undefined {\n\tconst result = spawnProcessSync(command, args, {\n\t\tencoding: \"utf-8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t});\n\tif (result.status === 0) return result.stdout.trim() || undefined;\n\tif (options.requireSuccess) {\n\t\tconst reason = result.error?.message || result.stderr.trim() || `exit code ${result.status ?? \"unknown\"}`;\n\t\tthrow new Error(`Failed to run ${[command, ...args].join(\" \")}: ${reason}`);\n\t}\n\treturn undefined;\n}\n\nfunction getGlobalPackageRoots(method: InstallMethod, _packageName: string, npmCommand?: string[]): string[] {\n\tswitch (method) {\n\t\tcase \"npm\": {\n\t\t\tconst configured = !!npmCommand?.length;\n\t\t\tconst [command = \"npm\", ...npmArgs] = npmCommand ?? [];\n\t\t\tif (configured && command === \"bun\") {\n\t\t\t\tconst bunBin = readCommandOutput(command, [...npmArgs, \"pm\", \"bin\", \"-g\"], {\n\t\t\t\t\trequireSuccess: true,\n\t\t\t\t});\n\t\t\t\tconst roots = [join(homedir(), \".bun\", \"install\", \"global\", \"node_modules\")];\n\t\t\t\tif (bunBin) {\n\t\t\t\t\troots.push(join(dirname(bunBin), \"install\", \"global\", \"node_modules\"));\n\t\t\t\t}\n\t\t\t\treturn roots;\n\t\t\t}\n\t\t\tconst root = readCommandOutput(command, [...npmArgs, \"root\", \"-g\"], {\n\t\t\t\trequireSuccess: configured,\n\t\t\t});\n\t\t\tconst inferred = configured ? undefined : getInferredNpmInstall();\n\t\t\treturn [root, inferred?.root].filter((x): x is string => !!x);\n\t\t}\n\t\tcase \"pnpm\": {\n\t\t\tconst root = readCommandOutput(\"pnpm\", [\"root\", \"-g\"]);\n\t\t\tif (root) return [root, dirname(root)];\n\t\t\tconst match = /^(.*[\\\\/]global[\\\\/][^\\\\/]+)[\\\\/]\\.pnpm[\\\\/]/.exec(getPackageDir());\n\t\t\treturn match ? [match[1]] : [];\n\t\t}\n\t\tcase \"yarn\": {\n\t\t\tconst dir = readCommandOutput(\"yarn\", [\"global\", \"dir\"]);\n\t\t\treturn dir ? [dir, join(dir, \"node_modules\")] : [];\n\t\t}\n\t\tcase \"bun\": {\n\t\t\tconst bunBin = readCommandOutput(\"bun\", [\"pm\", \"bin\", \"-g\"]);\n\t\t\tconst roots = [join(homedir(), \".bun\", \"install\", \"global\", \"node_modules\")];\n\t\t\tif (bunBin) {\n\t\t\t\troots.push(join(dirname(bunBin), \"install\", \"global\", \"node_modules\"));\n\t\t\t}\n\t\t\treturn roots;\n\t\t}\n\t\tcase \"bun-binary\":\n\t\tcase \"unknown\":\n\t\t\treturn [];\n\t}\n}\n\nfunction normalizeExistingPathForComparison(path: string, resolveSymlinks: boolean): string | undefined {\n\tconst resolvedPath = resolve(path);\n\tif (!existsSync(resolvedPath)) {\n\t\treturn undefined;\n\t}\n\tlet normalizedPath = resolvedPath;\n\tif (resolveSymlinks) {\n\t\ttry {\n\t\t\tnormalizedPath = realpathSync(resolvedPath);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\tif (process.platform === \"win32\") {\n\t\tnormalizedPath = normalizedPath.toLowerCase();\n\t}\n\treturn normalizedPath;\n}\n\nfunction getPathComparisonCandidates(path: string): string[] {\n\treturn Array.from(\n\t\tnew Set(\n\t\t\t[normalizeExistingPathForComparison(path, false), normalizeExistingPathForComparison(path, true)].filter(\n\t\t\t\t(candidate): candidate is string => !!candidate,\n\t\t\t),\n\t\t),\n\t);\n}\n\nfunction getEntrypointPackageDir(): string | undefined {\n\tconst entrypoint = process.argv[1];\n\tif (!entrypoint) return undefined;\n\tlet dir = dirname(entrypoint);\n\twhile (dir !== dirname(dir)) {\n\t\tif (existsSync(join(dir, \"package.json\"))) {\n\t\t\treturn dir;\n\t\t}\n\t\tdir = dirname(dir);\n\t}\n\treturn undefined;\n}\n\nfunction isSelfUpdatePathWritable(): boolean {\n\tconst packageDir = getPackageDir();\n\ttry {\n\t\taccessSync(packageDir, constants.W_OK);\n\t\taccessSync(dirname(packageDir), constants.W_OK);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction isManagedByGlobalPackageManager(method: InstallMethod, packageName: string, npmCommand?: string[]): boolean {\n\tconst packageDirs = [getPackageDir(), getEntrypointPackageDir()].filter((dir): dir is string => !!dir);\n\tconst packageDirCandidates = packageDirs.flatMap((dir) => getPathComparisonCandidates(dir));\n\treturn getGlobalPackageRoots(method, packageName, npmCommand).some((root) => {\n\t\treturn getPathComparisonCandidates(root).some((normalizedRoot) => {\n\t\t\tconst rootPrefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;\n\t\t\treturn packageDirCandidates.some((packageDir) => packageDir.startsWith(rootPrefix));\n\t\t});\n\t});\n}\n\nexport function getSelfUpdateCommand(\n\tpackageName: string,\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = packageName,\n): SelfUpdateCommand | undefined {\n\tconst method = detectInstallMethod();\n\tconst command = getSelfUpdateCommandForMethod(method, packageName, updatePackageTarget, npmCommand);\n\tif (!command || !isManagedByGlobalPackageManager(method, packageName, npmCommand) || !isSelfUpdatePathWritable()) {\n\t\treturn undefined;\n\t}\n\treturn command;\n}\n\nexport function getSelfUpdateUnavailableInstruction(\n\tpackageName: string,\n\tnpmCommand?: string[],\n\tupdatePackageTarget: SelfUpdatePackageTarget = packageName,\n): string {\n\tconst method = detectInstallMethod();\n\tconst target = normalizeSelfUpdatePackageTarget(updatePackageTarget);\n\tif (method === \"bun-binary\") {\n\t\treturn `Download from: ${getBinaryReleaseUrl()}`;\n\t}\n\tconst command = getSelfUpdateCommandForMethod(method, packageName, target, npmCommand);\n\tif (command) {\n\t\tif (isManagedByGlobalPackageManager(method, packageName, npmCommand) && !isSelfUpdatePathWritable()) {\n\t\t\treturn `This installation is managed by a global ${method} install, but the install path is not writable. Update it yourself with: ${command.display}`;\n\t\t}\n\t\treturn `This installation is not managed by a global ${method} install. Update it with the package manager, wrapper, or source checkout that provides it.`;\n\t}\n\treturn `Update ${target.installSpec} using the package manager, wrapper, or source checkout that provides this installation.`;\n}\n\nexport function getUpdateInstruction(packageName: string): string {\n\tconst method = detectInstallMethod();\n\tconst command = getSelfUpdateCommandForMethod(method, packageName);\n\tif (command) {\n\t\treturn `Run: ${command.display}`;\n\t}\n\treturn getSelfUpdateUnavailableInstruction(packageName);\n}\n\n// =============================================================================\n// Package Asset Paths (shipped with executable)\n// =============================================================================\n\n/**\n * Get the base directory for resolving package assets (themes, package.json, README.md, CHANGELOG.md).\n * - For Bun binary: returns the directory containing the executable\n * - For Node.js: returns the package root containing package.json\n * - Ignores Bun binary metadata copied into dist/ when the package root is available\n */\nexport function findNodePackageDir(startDir: string): string {\n\tlet dir = startDir;\n\twhile (dir !== dirname(dir)) {\n\t\tif (existsSync(join(dir, \"package.json\"))) {\n\t\t\tconst parent = dirname(dir);\n\t\t\t// Binary builds copy package metadata into dist/. Node still needs the\n\t\t\t// package root so dist-relative asset paths do not become dist/dist/.\n\t\t\tif (basename(dir) === \"dist\" && existsSync(join(parent, \"package.json\"))) {\n\t\t\t\treturn parent;\n\t\t\t}\n\t\t\treturn dir;\n\t\t}\n\t\tdir = dirname(dir);\n\t}\n\treturn startDir;\n}\n\nexport function getPackageDir(): string {\n\t// Allow override via environment variable (useful for Nix/Guix where store paths tokenize poorly)\n\tconst envDir = process.env[BOOTSTRAP_ENV_PACKAGE_DIR];\n\tif (envDir) {\n\t\treturn normalizePath(envDir);\n\t}\n\n\tif (isBunBinary) {\n\t\t// Bun binary: process.execPath points to the compiled executable\n\t\treturn dirname(process.execPath);\n\t}\n\treturn findNodePackageDir(__dirname);\n}\n\n/**\n * Get path to built-in themes directory (shipped with package)\n * - For Bun binary: theme/ next to executable\n * - For Node.js (dist/): dist/modes/interactive/theme/\n * - For source (src/): src/modes/interactive/theme/\n */\nexport function getThemesDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"theme\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst distThemes = join(packageDir, \"dist\", \"modes\", \"interactive\", \"theme\");\n\treturn existsSync(join(distThemes, \"dark.json\"))\n\t\t? distThemes\n\t\t: join(packageDir, \"src\", \"modes\", \"interactive\", \"theme\");\n}\n\n/**\n * Get path to HTML export template directory (shipped with package)\n * - For Bun binary: export-html/ next to executable\n * - For Node.js (dist/): dist/core/export-html/\n * - For source (src/): src/core/export-html/\n */\nexport function getExportTemplateDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"export-html\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst srcOrDist = existsSync(join(packageDir, \"src\")) ? \"src\" : \"dist\";\n\treturn join(packageDir, srcOrDist, \"core\", \"export-html\");\n}\n\n/** Get path to package.json */\nexport function getPackageJsonPath(): string {\n\treturn join(getPackageDir(), \"package.json\");\n}\n\n/** Get path to README.md */\nexport function getReadmePath(): string {\n\treturn resolve(join(getPackageDir(), \"README.md\"));\n}\n\n/** Get path to docs directory */\nexport function getDocsPath(): string {\n\treturn resolve(join(getPackageDir(), \"docs\"));\n}\n\n/** Get path to examples directory */\nexport function getExamplesPath(): string {\n\treturn resolve(join(getPackageDir(), \"examples\"));\n}\n\n/** Get path to CHANGELOG.md */\nexport function getChangelogPath(): string {\n\treturn resolve(join(getPackageDir(), \"CHANGELOG.md\"));\n}\n\n/**\n * Get path to built-in interactive assets directory.\n * - For Bun binary: assets/ next to executable\n * - For Node.js (dist/): dist/modes/interactive/assets/\n * - For source (src/): src/modes/interactive/assets/\n */\nexport function getInteractiveAssetsDir(): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"assets\");\n\t}\n\tconst packageDir = getPackageDir();\n\tconst srcOrDist = existsSync(join(packageDir, \"src\")) ? \"src\" : \"dist\";\n\treturn join(packageDir, srcOrDist, \"modes\", \"interactive\", \"assets\");\n}\n\n/** Get path to a bundled interactive asset */\nexport function getBundledInteractiveAssetPath(name: string): string {\n\treturn join(getInteractiveAssetsDir(), name);\n}\n\n/**\n * Get path to a vendored HUMAIN module's runtime assets (skill markdown, license text).\n * - For Bun binary: humain-modules/<module>/ next to executable (copied by scripts/build-binaries.sh)\n * - For Node.js (npm package or source checkout): src/humain/<module>/vendor/ (shipped via package.json `files`)\n */\nexport function getHumainModuleAssetsDir(moduleName: string): string {\n\tif (isBunBinary) {\n\t\treturn join(getPackageDir(), \"humain-modules\", moduleName);\n\t}\n\treturn join(getPackageDir(), \"src\", \"humain\", moduleName, \"vendor\");\n}\n\nlet quickJSWasmPath: string | undefined;\n\n/** Called by the Bun entry with the path of the QuickJS wasm file embedded in the compiled executable. */\nexport function setEmbeddedQuickJSWasmPath(path: string): void {\n\tquickJSWasmPath = path;\n}\n\n/**\n * Get path to `quickjs-wasi/quickjs.wasm`, the VM that runs codemode scripts. Resolved once so the\n * compiled module cached per path keeps working after an update removes this install (#10439).\n */\nexport function getQuickJSWasmPath(): string {\n\tquickJSWasmPath ??= createRequire(import.meta.url).resolve(\"quickjs-wasi/quickjs.wasm\");\n\treturn quickJSWasmPath;\n}\n\n/** Resolve the codemode worker entry for a release runtime. */\nexport function resolveCodemodeWorkerSpecifier(\n\truntime: \"bun-binary\" | \"bundled-node\" | \"unbundled\",\n\tmoduleUrl: string,\n): string | URL | undefined {\n\t// Bun embeds explicit source entrypoints, but on Windows Bun 1.3 cannot map an absolute\n\t// B:\\~BUN URL back to one. A relative string with the original source extension works on\n\t// every Bun platform. Bun keeps entrypoints relative to their common directory, which is src/\n\t// because HUMAIN builds the binary from src/bun/cli.ts (see scripts/build-binaries.sh).\n\tif (runtime === \"bun-binary\") return \"./extensions/codemode/worker.ts\";\n\tif (runtime === \"bundled-node\") return new URL(\"./codemode-worker.js\", moduleUrl);\n\treturn undefined;\n}\n\nlet codemodeWorkerDataUrl: URL | undefined;\n\n/**\n * Get the codemode worker entry, or undefined to use the worker that ships next to pi-codemode.\n * The Bun and Node release builds both pass the worker as an extra entrypoint.\n */\nexport function getCodemodeWorkerSpecifier(): string | URL | undefined {\n\tconst runtime = isBunBinary ? \"bun-binary\" : isBundledNode ? \"bundled-node\" : \"unbundled\";\n\tconst specifier = resolveCodemodeWorkerSpecifier(runtime, import.meta.url);\n\tif (runtime !== \"bundled-node\" || !(specifier instanceof URL)) return specifier;\n\t// Spawn workers from an in-memory copy. An update replaces or deletes the file while this\n\t// process keeps running (#10439). The bundle build keeps the worker free of relative imports\n\t// and import.meta, so it runs from a data: URL.\n\tcodemodeWorkerDataUrl ??= new URL(`data:text/javascript;base64,${readFileSync(specifier).toString(\"base64\")}`);\n\treturn codemodeWorkerDataUrl;\n}\n\nexport type InstallChange = { kind: \"updated\"; version: string } | { kind: \"removed\" };\n\n/**\n * Detect that the package this process runs from changed on disk, for example after `pi update`\n * in another terminal. Code loaded on demand can then be missing or from another version.\n *\n * Checks the package.json read at startup. Resolving it again would walk up past a deleted install\n * and could find an unrelated package.json, such as one in the home directory.\n */\nexport function detectInstallChange(packageJsonPath = startupPackageJsonPath): InstallChange | undefined {\n\t// The Bun binary embeds its code, so replacing the executable does not affect this process.\n\tif (isBunBinary || !packageJsonPath) return undefined;\n\tlet installed: PackageJson;\n\ttry {\n\t\tinstalled = JSON.parse(stripBom(readFileSync(packageJsonPath, \"utf-8\"))) as PackageJson;\n\t} catch (error) {\n\t\treturn (error as NodeJS.ErrnoException).code === \"ENOENT\" ? { kind: \"removed\" } : undefined;\n\t}\n\treturn installed.version && installed.version !== VERSION\n\t\t? { kind: \"updated\", version: installed.version }\n\t\t: undefined;\n}\n\n// =============================================================================\n// App Config (from package.json humainTerminalConfig; piConfig is a legacy fallback)\n// =============================================================================\n\ninterface PackageAppConfig {\n\tname?: string;\n\ttitle?: string;\n\tconfigDir?: string;\n\tenvPrefix?: string;\n\tfirstTimeSetup?: boolean;\n\tupstreamPiVersion?: string;\n}\n\ninterface PackageJson {\n\tname?: string;\n\tversion?: string;\n\thumainTerminalConfig?: PackageAppConfig;\n\tpiConfig?: PackageAppConfig;\n}\n\nlet pkg: PackageJson = {};\n/** The package.json this process started from, if one existed. */\nlet startupPackageJsonPath: string | undefined;\ntry {\n\tconst packageJsonPath = getPackageJsonPath();\n\tpkg = JSON.parse(stripBom(readFileSync(packageJsonPath, \"utf-8\"))) as PackageJson;\n\tstartupPackageJsonPath = packageJsonPath;\n} catch (e: unknown) {\n\tconst err = e as NodeJS.ErrnoException;\n\tif (err.code !== \"ENOENT\") throw e;\n}\n\nconst appConfig = pkg.humainTerminalConfig ?? pkg.piConfig;\nconst appConfigName: string | undefined = appConfig?.name;\nconst appConfigTitle: string | undefined = appConfig?.title;\nconst appConfigEnvPrefix: string | undefined = appConfig?.envPrefix;\n\nfunction sanitizeEnvPrefix(value: string): string {\n\treturn value\n\t\t.trim()\n\t\t.replace(/[^a-zA-Z0-9]+/g, \"_\")\n\t\t.replace(/^_+|_+$/g, \"\")\n\t\t.toUpperCase();\n}\n\nexport const PACKAGE_NAME: string = pkg.name || \"@humain/humain-code\";\nexport const APP_NAME: string = appConfigName || \"pi\";\nexport const APP_TITLE: string = appConfigTitle || (appConfigName ? APP_NAME : \"π\");\n/** Display-only command name shown in help and usage text. Never use for paths, ids, or env vars. */\nexport const APP_COMMAND: string = APP_NAME === \"humain-terminal\" ? \"humain-code\" : APP_NAME;\nexport const CONFIG_DIR_NAME: string = appConfig?.configDir || \".pi\";\nexport const FIRST_TIME_SETUP_ENABLED: boolean = appConfig?.firstTimeSetup ?? false;\nexport const VERSION: string = pkg.version || \"0.0.0\";\nexport const UPSTREAM_PI_VERSION: string = appConfig?.upstreamPiVersion || \"0.0.0\";\n\n// e.g., PI_CODING_AGENT_DIR, TAU_CODING_AGENT_DIR, or HUMAIN_TERMINAL_CODING_AGENT_DIR.\nexport const ENV_PREFIX = sanitizeEnvPrefix(appConfigEnvPrefix || APP_NAME);\nexport const ENV_AGENT_DIR = `${ENV_PREFIX}_CODING_AGENT_DIR`;\nexport const ENV_SESSION_DIR = `${ENV_PREFIX}_CODING_AGENT_SESSION_DIR`;\nexport const ENV_SESSION_ID = `${ENV_PREFIX}_SESSION_ID`;\nexport const ENV_SESSION_FILE = `${ENV_PREFIX}_SESSION_FILE`;\nexport const ENV_PROVIDER = `${ENV_PREFIX}_PROVIDER`;\nexport const ENV_MODEL = `${ENV_PREFIX}_MODEL`;\nexport const ENV_MCP_CLIENT_METADATA_URL = `${ENV_PREFIX}_MCP_CLIENT_METADATA_URL`;\nexport const ENV_REASONING_LEVEL = `${ENV_PREFIX}_REASONING_LEVEL`;\nexport const ENV_OFFLINE = `${ENV_PREFIX}_OFFLINE`;\nexport const ENV_PACKAGE_DIR = `${ENV_PREFIX}_PACKAGE_DIR`;\nexport const ENV_SHARE_VIEWER_URL = `${ENV_PREFIX}_SHARE_VIEWER_URL`;\nexport const ENV_SKIP_VERSION_CHECK = `${ENV_PREFIX}_SKIP_VERSION_CHECK`;\nexport const ENV_STARTUP_BENCHMARK = `${ENV_PREFIX}_STARTUP_BENCHMARK`;\nexport const ENV_TELEMETRY = `${ENV_PREFIX}_TELEMETRY`;\nexport const ENV_VERSION_CHECK_URL = `${ENV_PREFIX}_VERSION_CHECK_URL`;\nexport const ENV_BINARY_RELEASE_URL = `${ENV_PREFIX}_BINARY_RELEASE_URL`;\nexport const ENV_INSTALL_TELEMETRY_URL = `${ENV_PREFIX}_INSTALL_TELEMETRY_URL`;\nexport const ENV_CHANGELOG_URL = `${ENV_PREFIX}_CHANGELOG_URL`;\n\nexport function expandTildePath(path: string): string {\n\treturn normalizePath(path);\n}\n\nexport const HUMAIN_TERMINAL_WEB_URL = \"https://code.humain.com\";\nexport const HUMAIN_TERMINAL_BINARY_RELEASE_URL =\n\t\"https://gitlab.humain.com/humain/data-and-ai-modeling/standard/agentic/humain-terminal/-/releases/permalink/latest\";\n// The npm registry is the source of truth for the latest release: no hosted endpoint needed. Its `name` and `version`\n// fields give the package to install; HUMAIN_TERMINAL_VERSION_CHECK_URL can point at any URL with the same JSON shape.\nexport const HUMAIN_TERMINAL_VERSION_CHECK_URL = \"https://registry.npmjs.org/@humain%2fhumain-code/latest\";\nexport const HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL = `${HUMAIN_TERMINAL_WEB_URL}/api/report-install`;\nexport const HUMAIN_TERMINAL_CHANGELOG_URL = `${HUMAIN_TERMINAL_WEB_URL}/changelog`;\nexport const DEFAULT_SHARE_VIEWER_URL = `${HUMAIN_TERMINAL_WEB_URL}/session/`;\n\nexport function getVersionCheckUrl(): string {\n\treturn process.env[ENV_VERSION_CHECK_URL] || HUMAIN_TERMINAL_VERSION_CHECK_URL;\n}\n\nexport function getBinaryReleaseUrl(): string {\n\treturn process.env[ENV_BINARY_RELEASE_URL] || HUMAIN_TERMINAL_BINARY_RELEASE_URL;\n}\n\nexport function getInstallTelemetryUrl(version: string): string {\n\tconst url = new URL(process.env[ENV_INSTALL_TELEMETRY_URL] || HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL);\n\turl.searchParams.set(\"version\", version);\n\treturn url.toString();\n}\n\nexport function getChangelogUrl(): string {\n\treturn process.env[ENV_CHANGELOG_URL] || HUMAIN_TERMINAL_CHANGELOG_URL;\n}\n\n/** Get the share viewer URL for a gist ID */\nexport function getShareViewerUrl(gistId: string): string {\n\tconst baseUrl = process.env[ENV_SHARE_VIEWER_URL] || process.env.PI_SHARE_VIEWER_URL || DEFAULT_SHARE_VIEWER_URL;\n\treturn `${baseUrl}#${gistId}`;\n}\n\n// =============================================================================\n// User Config Paths (~/.humain-terminal/agent/*)\n// =============================================================================\n\n/** Get the agent config directory (e.g., ~/.humain-terminal/agent/) */\nexport function getAgentDir(): string {\n\tconst envDir = process.env[ENV_AGENT_DIR];\n\tif (envDir) {\n\t\treturn expandTildePath(envDir);\n\t}\n\treturn join(homedir(), CONFIG_DIR_NAME, \"agent\");\n}\n\n/** Get path to user's custom themes directory */\nexport function getCustomThemesDir(): string {\n\treturn join(getAgentDir(), \"themes\");\n}\n\n/** Get path to models.json */\nexport function getModelsPath(): string {\n\treturn join(getAgentDir(), \"models.json\");\n}\n\n/** Get path to auth.json */\nexport function getAuthPath(): string {\n\treturn join(getAgentDir(), \"auth.json\");\n}\n\n/** Get path to settings.json */\nexport function getSettingsPath(): string {\n\treturn join(getAgentDir(), \"settings.json\");\n}\n\n/** Get path to tools directory */\nexport function getToolsDir(): string {\n\treturn join(getAgentDir(), \"tools\");\n}\n\n/** Get path to managed binaries directory (fd, rg) */\nexport function getBinDir(): string {\n\treturn join(getAgentDir(), \"bin\");\n}\n\n/** Get path to prompt templates directory */\nexport function getPromptsDir(): string {\n\treturn join(getAgentDir(), \"prompts\");\n}\n\n/** Get path to sessions directory */\nexport function getSessionsDir(): string {\n\treturn join(getAgentDir(), \"sessions\");\n}\n\n/** Get path to debug log file */\nexport function getDebugLogPath(): string {\n\treturn join(getAgentDir(), `${APP_NAME}-debug.log`);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,sFAAsF;AACtF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB9D;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAM/F;AAED,wBAAsB,kBAAkB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,sFAAsF;AACtF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiB9D;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAM/F;AAED,wBAAsB,kBAAkB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAoCtC;AAED,wBAAsB,kBAAkB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7B;AAED,wBAAsB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAYvG"}
|
|
@@ -51,7 +51,9 @@ export async function getLatestPiRelease(currentVersion, options = {}) {
|
|
|
51
51
|
if (typeof data.version !== "string" || !data.version.trim()) {
|
|
52
52
|
return undefined;
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
// A custom endpoint says `packageName`; the npm registry document says `name`.
|
|
55
|
+
const packageField = data.packageName ?? data.name;
|
|
56
|
+
const packageName = typeof packageField === "string" && packageField.trim() ? packageField.trim() : undefined;
|
|
55
57
|
const note = typeof data.note === "string" && data.note.trim() ? data.note.trim() : undefined;
|
|
56
58
|
return {
|
|
57
59
|
version: data.version.trim(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { compare, valid } from \"semver\";\nimport { ENV_OFFLINE, ENV_SKIP_VERSION_CHECK, getVersionCheckUrl } from \"../config.ts\";\nimport { fetchWithRetry } from \"./management-http.ts\";\nimport { getPiUserAgent } from \"./pi-user-agent.ts\";\n\nconst DEFAULT_VERSION_CHECK_TIMEOUT_MS = 10000;\n\nexport interface LatestPiRelease {\n\tversion: string;\n\tpackageName?: string;\n\tnote?: string;\n}\n\n/** Include useful errno details hidden behind Node's generic \"fetch failed\" error. */\nexport function formatVersionCheckError(error: unknown): string {\n\tconst rootMessage = error instanceof Error && error.message ? error.message : String(error);\n\tconst cause = error instanceof Error ? error.cause : undefined;\n\tconst causes = cause instanceof AggregateError ? cause.errors : cause === undefined ? [] : [cause];\n\tconst codes = causes\n\t\t.map((value) =>\n\t\t\ttypeof value === \"object\" && value !== null && \"code\" in value && typeof value.code === \"string\"\n\t\t\t\t? value.code\n\t\t\t\t: undefined,\n\t\t)\n\t\t.filter((code): code is string => code !== undefined);\n\n\tif (codes.length > 0) return `${rootMessage} (${[...new Set(codes)].join(\", \")})`;\n\tconst causeMessage = causes.find(\n\t\t(value): value is Error => value instanceof Error && Boolean(value.message),\n\t)?.message;\n\treturn causeMessage ? `${rootMessage} (cause: ${causeMessage})` : rootMessage;\n}\n\nexport function comparePackageVersions(leftVersion: string, rightVersion: string): number | undefined {\n\tconst left = valid(leftVersion.trim());\n\tconst right = valid(rightVersion.trim());\n\tif (!left || !right) {\n\t\treturn undefined;\n\t}\n\treturn compare(left, right);\n}\n\nexport function isNewerPackageVersion(candidateVersion: string, currentVersion: string): boolean {\n\tconst comparison = comparePackageVersions(candidateVersion, currentVersion);\n\tif (comparison !== undefined) {\n\t\treturn comparison > 0;\n\t}\n\treturn candidateVersion.trim() !== currentVersion.trim();\n}\n\nexport async function getLatestPiRelease(\n\tcurrentVersion: string,\n\toptions: { timeoutMs?: number; retry?: boolean } = {},\n): Promise<LatestPiRelease | undefined> {\n\tif (process.env[ENV_OFFLINE]) return undefined;\n\n\tconst response = await fetchWithRetry(\n\t\tgetVersionCheckUrl(),\n\t\t{\n\t\t\theaders: {\n\t\t\t\t\"User-Agent\": getPiUserAgent(currentVersion),\n\t\t\t\taccept: \"application/json\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tmaxRetries: options.retry ? 2 : 0,\n\t\t\ttimeoutMs: options.timeoutMs ?? DEFAULT_VERSION_CHECK_TIMEOUT_MS,\n\t\t},\n\t);\n\tif (!response.ok) return undefined;\n\n\tconst data = (await response.json()) as {\n\t\tname?: unknown;\n\t\tpackageName?: unknown;\n\t\tversion?: unknown;\n\t\tnote?: unknown;\n\t};\n\tif (typeof data.version !== \"string\" || !data.version.trim()) {\n\t\treturn undefined;\n\t}\n\t// A custom endpoint says `packageName`; the npm registry document says `name`.\n\tconst packageField = data.packageName ?? data.name;\n\tconst packageName = typeof packageField === \"string\" && packageField.trim() ? packageField.trim() : undefined;\n\tconst note = typeof data.note === \"string\" && data.note.trim() ? data.note.trim() : undefined;\n\treturn {\n\t\tversion: data.version.trim(),\n\t\tpackageName,\n\t\t...(note ? { note } : {}),\n\t};\n}\n\nexport async function getLatestPiVersion(\n\tcurrentVersion: string,\n\toptions: { timeoutMs?: number; retry?: boolean } = {},\n): Promise<string | undefined> {\n\treturn (await getLatestPiRelease(currentVersion, options))?.version;\n}\n\nexport async function checkForNewPiVersion(currentVersion: string): Promise<LatestPiRelease | undefined> {\n\tif (process.env[ENV_SKIP_VERSION_CHECK]) return undefined;\n\n\ttry {\n\t\tconst latestRelease = await getLatestPiRelease(currentVersion);\n\t\tif (latestRelease && isNewerPackageVersion(latestRelease.version, currentVersion)) {\n\t\t\treturn latestRelease;\n\t\t}\n\t\treturn undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n"]}
|
package/docs/humain-code.md
CHANGED
|
@@ -14,7 +14,7 @@ Useful distribution-specific environment variables:
|
|
|
14
14
|
- `HUMAIN_TERMINAL_PACKAGE_DIR` - override bundled package asset lookup.
|
|
15
15
|
- `HUMAIN_TERMINAL_OFFLINE` - disable startup network operations.
|
|
16
16
|
- `HUMAIN_TERMINAL_SKIP_VERSION_CHECK` - disable startup version checks.
|
|
17
|
-
- `HUMAIN_TERMINAL_VERSION_CHECK_URL` - override the latest-version
|
|
17
|
+
- `HUMAIN_TERMINAL_VERSION_CHECK_URL` - override the latest-version URL (default: the npm registry document for `@humain/humain-code`).
|
|
18
18
|
- `HUMAIN_TERMINAL_TELEMETRY` - override install/update telemetry.
|
|
19
19
|
- `HUMAIN_TERMINAL_INSTALL_TELEMETRY_URL` - override the install/update telemetry endpoint.
|
|
20
20
|
- `HUMAIN_TERMINAL_CHANGELOG_URL` - override the release changelog URL.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humain/humain-code",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@humain/humain-code",
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.8",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@humain/humain-code-contracts": "0.3.3",
|