@neuralnomads/codenomad-dev 0.20.0-dev-20260925-25e07c74 → 0.20.0-dev-20260927-a77e37ef
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/README.md +6 -6
- package/dist/opencode/runtime-support.js +1 -1
- package/dist/opencode/runtime-support.js.map +1 -1
- package/dist/opencode/runtime-support.test.js +2 -2
- package/dist/opencode/runtime-support.test.js.map +1 -1
- package/dist/opencode-update/incomplete-installation.js +25 -0
- package/dist/opencode-update/incomplete-installation.js.map +1 -0
- package/dist/opencode-update/incomplete-installation.test.js +99 -0
- package/dist/opencode-update/incomplete-installation.test.js.map +1 -0
- package/dist/opencode-update/service.test.js +7 -7
- package/dist/opencode-update/service.test.js.map +1 -1
- package/dist/opencode-update/shared-installation.js +10 -4
- package/dist/opencode-update/shared-installation.js.map +1 -1
- package/dist/plugins/session-pruning/plugin.mjs +1 -0
- package/package.json +3 -3
- package/public/assets/App-Bt-tnQXl.js +58 -0
- package/public/assets/App-Bt-tnQXl.js.map +1 -0
- package/public/assets/{FilesTab-CIZ1puTy.js → FilesTab-fonqwqxm.js} +3 -3
- package/public/assets/{FilesTab-CIZ1puTy.js.map → FilesTab-fonqwqxm.js.map} +1 -1
- package/public/assets/{GitChangesTab-DwMgRf-D.js → GitChangesTab-DsU2QupN.js} +3 -3
- package/public/assets/{GitChangesTab-DwMgRf-D.js.map → GitChangesTab-DsU2QupN.js.map} +1 -1
- package/public/assets/{SplitFilePanel-BCLtSYpn.js → SplitFilePanel-DVyHD97U.js} +2 -2
- package/public/assets/{SplitFilePanel-BCLtSYpn.js.map → SplitFilePanel-DVyHD97U.js.map} +1 -1
- package/public/assets/{StatusTab-I954HOlT.js → StatusTab-BYOUdsmS.js} +2 -2
- package/public/assets/{StatusTab-I954HOlT.js.map → StatusTab-BYOUdsmS.js.map} +1 -1
- package/public/assets/{align-justify-ClApgjuX.js → align-justify-DmcKEWsB.js} +2 -2
- package/public/assets/{align-justify-ClApgjuX.js.map → align-justify-DmcKEWsB.js.map} +1 -1
- package/public/assets/{bundle-full-Bv-Zo-BN.js → bundle-full-CV_LTEPl.js} +2 -2
- package/public/assets/{bundle-full-Bv-Zo-BN.js.map → bundle-full-CV_LTEPl.js.map} +1 -1
- package/public/assets/{client-state-BUfw9mlB.js → client-state-9tEzHtfW.js} +2 -2
- package/public/assets/{client-state-BUfw9mlB.js.map → client-state-9tEzHtfW.js.map} +1 -1
- package/public/assets/{diff-viewer-DTYmoMJJ.js → diff-viewer-CXCXiyRO.js} +2 -2
- package/public/assets/{diff-viewer-DTYmoMJJ.js.map → diff-viewer-CXCXiyRO.js.map} +1 -1
- package/public/assets/{index-CvvEjI09.js → index-97B_EqpY.js} +2 -2
- package/public/assets/{index-CvvEjI09.js.map → index-97B_EqpY.js.map} +1 -1
- package/public/assets/{index-B7Rzw0N8.js → index-B-_YmFJc.js} +2 -2
- package/public/assets/{index-B7Rzw0N8.js.map → index-B-_YmFJc.js.map} +1 -1
- package/public/assets/{index--pzZg96p.js → index-C5ZxyV3U.js} +2 -2
- package/public/assets/{index--pzZg96p.js.map → index-C5ZxyV3U.js.map} +1 -1
- package/public/assets/index-CDY1e4Uc.js +2 -0
- package/public/assets/{index-cCIfI5Gs.js.map → index-CDY1e4Uc.js.map} +1 -1
- package/public/assets/{index-ByEDZSKg.js → index-CuhtAbYJ.js} +3 -3
- package/public/assets/{index-ByEDZSKg.js.map → index-CuhtAbYJ.js.map} +1 -1
- package/public/assets/{index-kCzCI98C.js → index-CvKnyKel.js} +2 -2
- package/public/assets/{index-kCzCI98C.js.map → index-CvKnyKel.js.map} +1 -1
- package/public/assets/{index-q1q2jGr4.js → index-DX4zzTPL.js} +2 -2
- package/public/assets/{index-q1q2jGr4.js.map → index-DX4zzTPL.js.map} +1 -1
- package/public/assets/{index-QPxBkmUK.js → index-DY9ZO9ld.js} +2 -2
- package/public/assets/{index-QPxBkmUK.js.map → index-DY9ZO9ld.js.map} +1 -1
- package/public/assets/{index-CIsPS6rK.js → index-DqE-g5em.js} +2 -2
- package/public/assets/{index-CIsPS6rK.js.map → index-DqE-g5em.js.map} +1 -1
- package/public/assets/{index-Cq3k5jiZ.js → index-QXZuSZ1s.js} +2 -2
- package/public/assets/{index-Cq3k5jiZ.js.map → index-QXZuSZ1s.js.map} +1 -1
- package/public/assets/{index-DFYhjWFw.js → index-Ropj5M3p.js} +2 -2
- package/public/assets/{index-DFYhjWFw.js.map → index-Ropj5M3p.js.map} +1 -1
- package/public/assets/{index-BpxnUbDV.js → index-XQu8RsTR.js} +2 -2
- package/public/assets/{index-BpxnUbDV.js.map → index-XQu8RsTR.js.map} +1 -1
- package/public/assets/{loading-DUGpBMNV.js → loading-DMhZHPMZ.js} +2 -2
- package/public/assets/{loading-DUGpBMNV.js.map → loading-DMhZHPMZ.js.map} +1 -1
- package/public/assets/{main-CcoQlXKa.js → main-Y9fQI3c9.js} +20 -20
- package/public/assets/main-Y9fQI3c9.js.map +1 -0
- package/public/assets/{markdown-B2LqHvL9.js → markdown-ChsQ8753.js} +4 -4
- package/public/assets/{markdown-B2LqHvL9.js.map → markdown-ChsQ8753.js.map} +1 -1
- package/public/assets/{monaco-viewer-BQXd7g3w.js → monaco-viewer-C2EN1a6C.js} +13 -13
- package/public/assets/monaco-viewer-C2EN1a6C.js.map +1 -0
- package/public/assets/{startup-state-settings-card-BCKRPH7W.js → startup-state-settings-card-DlwE2O3S.js} +2 -2
- package/public/assets/{startup-state-settings-card-BCKRPH7W.js.map → startup-state-settings-card-DlwE2O3S.js.map} +1 -1
- package/public/assets/{terminal-square-BgSAfXCt.js → terminal-square-Br2FaCdg.js} +2 -2
- package/public/assets/{terminal-square-BgSAfXCt.js.map → terminal-square-Br2FaCdg.js.map} +1 -1
- package/public/assets/{tool-call-Df4j6aME.js → tool-call-DNxCNLt7.js} +4 -4
- package/public/assets/{tool-call-Df4j6aME.js.map → tool-call-DNxCNLt7.js.map} +1 -1
- package/public/assets/{unified-picker-DZfkh5jj.js → unified-picker-CPPucpt3.js} +2 -2
- package/public/assets/{unified-picker-DZfkh5jj.js.map → unified-picker-CPPucpt3.js.map} +1 -1
- package/public/assets/{wrap-text-BFsJjS2I.js → wrap-text-BJW9yImb.js} +2 -2
- package/public/assets/{wrap-text-BFsJjS2I.js.map → wrap-text-BJW9yImb.js.map} +1 -1
- package/public/index.html +3 -3
- package/public/loading.html +3 -3
- package/public/sw.js +1 -1
- package/public/sw.js.map +1 -1
- package/public/ui-version.json +1 -1
- package/public/assets/App-DJjznRZ_.js +0 -58
- package/public/assets/App-DJjznRZ_.js.map +0 -1
- package/public/assets/index-cCIfI5Gs.js +0 -2
- package/public/assets/main-CcoQlXKa.js.map +0 -1
- package/public/assets/monaco-viewer-BQXd7g3w.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-installation.js","sourceRoot":"","sources":["../../src/opencode-update/shared-installation.ts"],"names":[],"mappings":"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","sourcesContent":["import { accessSync, constants, existsSync, readFileSync, realpathSync, statSync } from \"node:fs\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { bundledNpm, executeInstaller } from \"./npm-runtime\"\nimport { isRetiredInstallation } from \"./retired-installation\"\nimport { registerUserPath } from \"./user-path\"\nimport { probeBinaryVersionAsync, buildSpawnSpec } from \"../workspaces/spawn\"\nimport { assertSupportedOpenCode } from \"../opencode/runtime-support\"\nimport { compareVersionStrings } from \"../releases/release-monitor\"\nimport { assertExecutableWritable, withInstallationLock } from \"./installation-lock\"\nimport { upgradeSharedOpenCode } from \"./native-upgrade\"\n\nexport interface InstallationHost {\n home?: string\n platform?: NodeJS.Platform\n env?: NodeJS.ProcessEnv\n}\n\nexport function userNpmPrefix(host: InstallationHost = {}): string {\n const home = host.home ?? os.homedir()\n const env = host.env ?? process.env\n const configured = Object.entries(env).find(([key]) => key.toLowerCase() === \"npm_config_prefix\")?.[1]\n if (configured && path.isAbsolute(configured)) return configured\n return (host.platform ?? process.platform) === \"win32\"\n ? path.join(env.APPDATA || path.join(home, \"AppData\", \"Roaming\"), \"npm\") : path.join(home, \".local\")\n}\n\nexport function npmCommandDirectory(prefix: string, platform = process.platform): string {\n return platform === \"win32\" ? prefix : path.join(prefix, \"bin\")\n}\n\nexport function npmExecutable(prefix: string, platform = process.platform): string {\n return path.join(prefix, ...(platform === \"win32\" ? [] : [\"lib\"]), \"node_modules\", \"@opencode\", \"cli\", \"bin\", \"opencode.exe\")\n}\n\nfunction npmPackage(prefix: string, platform: NodeJS.Platform) {\n try {\n const file = path.join(path.dirname(npmExecutable(prefix, platform)), \"..\", \"package.json\")\n const manifest = JSON.parse(readFileSync(file, \"utf8\")) as { name?: string; bin?: Record<string, string> }\n return manifest.name === \"@opencode/cli\" ? manifest : undefined\n } catch { return undefined }\n}\n\nfunction npmLauncher(command: string, prefix: string, platform: NodeJS.Platform): string | undefined {\n const manifest = npmPackage(prefix, platform)\n if (!manifest?.bin) return undefined\n const name = path.basename(command).replace(platform === \"win32\" ? /\\.cmd$/i : /$^/, \"\")\n const relative = manifest.bin[name]\n if (typeof relative !== \"string\" || !/^\\.\\/bin\\/[^/\\\\]+\\.exe$/.test(relative)) return undefined\n const packageRoot = path.join(path.dirname(npmExecutable(prefix, platform)), \"..\")\n const binary = path.resolve(packageRoot, relative)\n try {\n if (!statSync(binary).isFile()) return undefined\n const resolved = platform === \"win32\" ? buildSpawnSpec(command, [], { platform }).command : realpathSync(command)\n return realpathSync(resolved) === realpathSync(binary) ? binary : undefined\n } catch { return undefined }\n}\n\nfunction retiredNpmAlias(command: string, prefix: string, platform: NodeJS.Platform): boolean {\n const name = platform === \"win32\" ? path.basename(command).replace(/\\.cmd$/i, \"\") : path.basename(command)\n const relative = npmPackage(prefix, platform)?.bin?.[name]\n if (typeof relative !== \"string\" || !/^\\.\\/bin\\/[^/\\\\]+\\.cjs$/.test(relative)) return false\n try {\n const target = path.resolve(path.dirname(npmExecutable(prefix, platform)), \"..\", relative)\n if (platform === \"win32\") {\n const script = readFileSync(command, \"utf8\")\n if (script.length > 64 * 1024) return false\n const escaped = path.basename(target).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n return statSync(target).isFile() && new RegExp(`[\"'](?:%dp0%|%~dp0)[\\\\\\\\/]node_modules[\\\\\\\\/]@opencode[\\\\\\\\/]cli[\\\\\\\\/]bin[\\\\\\\\/]${escaped}[\"']\\\\s+%\\\\*`, \"i\").test(script)\n }\n return realpathSync(command) === realpathSync(target)\n } catch { return false }\n}\n\nfunction npmCommand(prefix: string, platform: NodeJS.Platform): { command: string; binary: string } | undefined {\n const directory = npmCommandDirectory(prefix, platform)\n for (const name of [\"opencode2\", \"opencode\"]) {\n const command = path.join(directory, platform === \"win32\" ? `${name}.cmd` : name)\n const binary = npmLauncher(command, prefix, platform)\n if (binary) return { command, binary }\n }\n}\n\nexport function findPathOpenCode(host: InstallationHost = {}): string | undefined {\n const env = host.env ?? process.env\n const platform = host.platform ?? process.platform\n const key = Object.keys(env).find(key => key.toLowerCase() === \"path\")\n const extensions = platform === \"win32\" ? (env.PATHEXT || \".COM;.EXE;.BAT;.CMD\").toLowerCase().split(\";\") : [\"\"]\n for (const entry of (env[key ?? \"PATH\"] || \"\").split(platform === \"win32\" ? \";\" : \":\")) {\n const directory = entry.replace(/^\"|\"$/g, \"\")\n if (!directory || !path.isAbsolute(directory)) continue\n const prefix = platform === \"win32\" ? directory : path.dirname(directory)\n const inNpmBin = path.resolve(directory) === path.resolve(npmCommandDirectory(prefix, platform))\n for (const name of [\"opencode2\", \"opencode\"]) for (const extension of extensions) {\n const candidate = path.join(directory, `${name}${extension}`)\n try {\n if (!statSync(candidate).isFile()) continue\n if (isRetiredInstallation(candidate)) continue\n accessSync(candidate, platform === \"win32\" ? constants.F_OK : constants.X_OK)\n if (inNpmBin && npmPackage(prefix, platform)) {\n if (retiredNpmAlias(candidate, prefix, platform)) continue\n }\n return candidate\n } catch { /* Continue in PATH order. */ }\n }\n }\n}\n\nexport function resolveDefaultInstallation(host: InstallationHost = {}): { path: string; source?: \"path\" | \"user\" } {\n const command = findPathOpenCode(host)\n if (command) return { path: command, source: \"path\" }\n const prefix = userNpmPrefix(host)\n const binary = npmCommand(prefix, host.platform ?? process.platform)?.binary ?? npmExecutable(prefix, host.platform)\n if (existsSync(binary) && !isRetiredInstallation(binary)) return { path: binary, source: \"user\" }\n return { path: \"opencode2\" }\n}\n\n/** Only a verified npm installation may be updated via npm. Homebrew/curl and\n * explicit custom executable choices retain their own installation authority. */\nexport function sharedInstallPrefix(host: InstallationHost = {}): string | undefined {\n const platform = host.platform ?? process.platform\n const userPrefix = userNpmPrefix(host)\n if (isRetiredInstallation(userPrefix)) return undefined\n const command = findPathOpenCode(host) ?? findPathOpenCode({ ...host,\n env: { PATH: npmCommandDirectory(userPrefix, platform), PATHEXT: \".EXE;.CMD;.BAT\" } })\n if (!command) return userPrefix\n const prefix = platform === \"win32\" ? path.dirname(command) : path.dirname(path.dirname(command))\n try {\n if (!npmLauncher(command, prefix, platform)) return undefined\n accessSync(prefix, constants.W_OK)\n return prefix\n } catch { return undefined }\n}\n\nexport async function installSharedOpenCode(version: string, options: InstallationHost & {\n node?: string; npm?: string\n execute?: typeof executeInstaller\n probe?: typeof probeBinaryVersionAsync\n registerPath?: (directory: string) => Promise<void>\n} = {}): Promise<string> {\n if (!/^\\d+\\.\\d+\\.\\d+$/.test(version)) throw new Error(\"Installation requires an exact stable OpenCode version\")\n assertSupportedOpenCode(version)\n const platform = options.platform ?? process.platform\n const prefix = sharedInstallPrefix(options)\n if (!prefix) throw new Error(\"The PATH executable is not a writable npm installation\")\n const node = options.node ?? process.execPath\n const npm = options.npm ?? bundledNpm(node)\n if (!npm) throw new Error(\"npm is unavailable beside the CodeNomad Node runtime\")\n const binary = npmExecutable(prefix, platform)\n const probe = options.probe ?? probeBinaryVersionAsync\n return withInstallationLock(prefix, async () => {\n const oldBinary = npmCommand(prefix, platform)?.binary ?? binary\n const existing = await probe(oldBinary)\n if (existing.valid && (!existing.version || !/^(?:\\d+\\.\\d+\\.\\d+|0\\.0\\.0-beta-\\d+)$/.test(existing.version))) {\n throw new Error(\"Cannot replace an unverified OpenCode version automatically\")\n }\n const target = existing.valid && existing.version && /^\\d+\\.\\d+\\.\\d+$/.test(existing.version) && compareVersionStrings(existing.version, version) > 0 ? existing.version : version\n const directory = npmCommandDirectory(prefix, platform)\n const commandHost = { ...options, env: { PATH: directory, PATHEXT: \".EXE;.CMD;.BAT\" } }\n if (!existing.valid || existing.version !== target || !npmCommand(prefix, platform) || oldBinary !== binary) {\n const env = { ...(options.env ?? process.env) }\n // 2.0.15 -> 2.0.16 is qualified with a live Windows service. Older\n // installers and same-version launcher repair keep the npm preflight.\n if (existing.valid && existing.version && /^\\d+\\.\\d+\\.\\d+$/.test(existing.version)\n && compareVersionStrings(existing.version, \"2.0.15\") >= 0 && existing.version !== target\n && npmCommand(prefix, platform)) {\n await upgradeSharedOpenCode({ binary: oldBinary, version: target, prefix, node, npm, env, platform, execute: options.execute })\n } else {\n await assertExecutableWritable(oldBinary, platform)\n const key = Object.keys(env).find(key => key.toLowerCase() === \"path\") ?? \"PATH\"\n env[key] = `${path.dirname(node)}${platform === \"win32\" ? \";\" : \":\"}${env[key] || \"\"}`\n await (options.execute ?? executeInstaller)(node, [npm, \"install\", \"--global\", \"--prefix\", prefix,\n \"--no-audit\", \"--no-fund\", \"--registry=https://registry.npmjs.org\", `@opencode/cli@${target}`], env)\n }\n }\n const result = await probe(binary)\n if (!result.valid || !result.version || !/^\\d+\\.\\d+\\.\\d+$/.test(result.version) || compareVersionStrings(result.version, target) < 0) {\n throw new Error(\"Installed OpenCode version verification failed\")\n }\n if (!findPathOpenCode(commandHost) || sharedInstallPrefix(commandHost) !== prefix) {\n throw new Error(\"npm did not publish the verified OpenCode terminal command\")\n }\n await (options.registerPath ?? (directory => registerUserPath(directory, options)))(directory)\n return binary\n })\n}\n"]}
|
|
1
|
+
{"version":3,"file":"shared-installation.js","sourceRoot":"","sources":["../../src/opencode-update/shared-installation.ts"],"names":[],"mappings":"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","sourcesContent":["import { accessSync, constants, existsSync, readFileSync, realpathSync, statSync } from \"node:fs\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { bundledNpm, executeInstaller } from \"./npm-runtime\"\nimport { isRetiredInstallation } from \"./retired-installation\"\nimport { registerUserPath } from \"./user-path\"\nimport { probeBinaryVersionAsync, buildSpawnSpec } from \"../workspaces/spawn\"\nimport { assertSupportedOpenCode } from \"../opencode/runtime-support\"\nimport { compareVersionStrings } from \"../releases/release-monitor\"\nimport { assertExecutableWritable, withInstallationLock } from \"./installation-lock\"\nimport { upgradeSharedOpenCode } from \"./native-upgrade\"\nimport { isIncompleteWindowsNpmShim } from \"./incomplete-installation\"\n\nexport interface InstallationHost {\n home?: string\n platform?: NodeJS.Platform\n env?: NodeJS.ProcessEnv\n}\n\nexport function userNpmPrefix(host: InstallationHost = {}): string {\n const home = host.home ?? os.homedir()\n const env = host.env ?? process.env\n const configured = Object.entries(env).find(([key]) => key.toLowerCase() === \"npm_config_prefix\")?.[1]\n if (configured && path.isAbsolute(configured)) return configured\n return (host.platform ?? process.platform) === \"win32\"\n ? path.join(env.APPDATA || path.join(home, \"AppData\", \"Roaming\"), \"npm\") : path.join(home, \".local\")\n}\n\nexport function npmCommandDirectory(prefix: string, platform = process.platform): string {\n return platform === \"win32\" ? prefix : path.join(prefix, \"bin\")\n}\n\nexport function npmExecutable(prefix: string, platform = process.platform): string {\n return path.join(prefix, ...(platform === \"win32\" ? [] : [\"lib\"]), \"node_modules\", \"@opencode\", \"cli\", \"bin\", \"opencode.exe\")\n}\n\nfunction npmPackage(prefix: string, platform: NodeJS.Platform) {\n try {\n const file = path.join(path.dirname(npmExecutable(prefix, platform)), \"..\", \"package.json\")\n const manifest = JSON.parse(readFileSync(file, \"utf8\")) as { name?: string; bin?: Record<string, string> }\n return manifest.name === \"@opencode/cli\" ? manifest : undefined\n } catch { return undefined }\n}\n\nfunction npmLauncher(command: string, prefix: string, platform: NodeJS.Platform): string | undefined {\n const manifest = npmPackage(prefix, platform)\n if (!manifest?.bin) return undefined\n const name = path.basename(command).replace(platform === \"win32\" ? /\\.cmd$/i : /$^/, \"\")\n const relative = manifest.bin[name]\n if (typeof relative !== \"string\" || !/^\\.\\/bin\\/[^/\\\\]+\\.exe$/.test(relative)) return undefined\n const packageRoot = path.join(path.dirname(npmExecutable(prefix, platform)), \"..\")\n const binary = path.resolve(packageRoot, relative)\n try {\n if (!statSync(binary).isFile()) return undefined\n const resolved = platform === \"win32\" ? buildSpawnSpec(command, [], { platform }).command : realpathSync(command)\n return realpathSync(resolved) === realpathSync(binary) ? binary : undefined\n } catch { return undefined }\n}\n\nfunction retiredNpmAlias(command: string, prefix: string, platform: NodeJS.Platform): boolean {\n const name = platform === \"win32\" ? path.basename(command).replace(/\\.cmd$/i, \"\") : path.basename(command)\n const relative = npmPackage(prefix, platform)?.bin?.[name]\n if (typeof relative !== \"string\" || !/^\\.\\/bin\\/[^/\\\\]+\\.cjs$/.test(relative)) return false\n try {\n const target = path.resolve(path.dirname(npmExecutable(prefix, platform)), \"..\", relative)\n if (platform === \"win32\") {\n const script = readFileSync(command, \"utf8\")\n if (script.length > 64 * 1024) return false\n const escaped = path.basename(target).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n return statSync(target).isFile() && new RegExp(`[\"'](?:%dp0%|%~dp0)[\\\\\\\\/]node_modules[\\\\\\\\/]@opencode[\\\\\\\\/]cli[\\\\\\\\/]bin[\\\\\\\\/]${escaped}[\"']\\\\s+%\\\\*`, \"i\").test(script)\n }\n return realpathSync(command) === realpathSync(target)\n } catch { return false }\n}\n\nfunction npmCommand(prefix: string, platform: NodeJS.Platform): { command: string; binary: string } | undefined {\n const directory = npmCommandDirectory(prefix, platform)\n for (const name of [\"opencode2\", \"opencode\"]) {\n const command = path.join(directory, platform === \"win32\" ? `${name}.cmd` : name)\n const binary = npmLauncher(command, prefix, platform)\n if (binary) return { command, binary }\n }\n}\n\nexport function findPathOpenCode(host: InstallationHost = {}): string | undefined {\n const env = host.env ?? process.env\n const platform = host.platform ?? process.platform\n const key = Object.keys(env).find(key => key.toLowerCase() === \"path\")\n const extensions = platform === \"win32\" ? (env.PATHEXT || \".COM;.EXE;.BAT;.CMD\").toLowerCase().split(\";\") : [\"\"]\n for (const entry of (env[key ?? \"PATH\"] || \"\").split(platform === \"win32\" ? \";\" : \":\")) {\n const directory = entry.replace(/^\"|\"$/g, \"\")\n if (!directory || !path.isAbsolute(directory)) continue\n const prefix = platform === \"win32\" ? directory : path.dirname(directory)\n const inNpmBin = path.resolve(directory) === path.resolve(npmCommandDirectory(prefix, platform))\n for (const name of [\"opencode2\", \"opencode\"]) for (const extension of extensions) {\n const candidate = path.join(directory, `${name}${extension}`)\n try {\n if (!statSync(candidate).isFile()) continue\n if (isRetiredInstallation(candidate)) continue\n accessSync(candidate, platform === \"win32\" ? constants.F_OK : constants.X_OK)\n if (inNpmBin && npmPackage(prefix, platform)) {\n if (retiredNpmAlias(candidate, prefix, platform)) continue\n }\n return candidate\n } catch { /* Continue in PATH order. */ }\n }\n }\n}\n\nexport function resolveDefaultInstallation(host: InstallationHost = {}): { path: string; source?: \"path\" | \"user\" } {\n const platform = host.platform ?? process.platform\n const prefix = userNpmPrefix(host)\n const binary = npmCommand(prefix, platform)?.binary ?? npmExecutable(prefix, platform)\n const command = findPathOpenCode(host)\n if (command) {\n if (platform === \"win32\" && isIncompleteWindowsNpmShim(command, prefix, binary)) return { path: binary, source: \"user\" }\n return { path: command, source: \"path\" }\n }\n if (existsSync(binary) && !isRetiredInstallation(binary)) return { path: binary, source: \"user\" }\n return { path: \"opencode2\" }\n}\n\n/** Only a verified npm installation may be updated via npm. Homebrew/curl and\n * explicit custom executable choices retain their own installation authority. */\nexport function sharedInstallPrefix(host: InstallationHost = {}): string | undefined {\n const platform = host.platform ?? process.platform\n const userPrefix = userNpmPrefix(host)\n if (isRetiredInstallation(userPrefix)) return undefined\n const command = findPathOpenCode(host) ?? findPathOpenCode({ ...host,\n env: { PATH: npmCommandDirectory(userPrefix, platform), PATHEXT: \".EXE;.CMD;.BAT\" } })\n if (!command) return userPrefix\n const prefix = platform === \"win32\" ? path.dirname(command) : path.dirname(path.dirname(command))\n try {\n if (!npmLauncher(command, prefix, platform)\n && !(platform === \"win32\" && isIncompleteWindowsNpmShim(command, userPrefix, npmExecutable(userPrefix, platform)))) return undefined\n accessSync(prefix, constants.W_OK)\n return prefix\n } catch { return undefined }\n}\n\nexport async function installSharedOpenCode(version: string, options: InstallationHost & {\n node?: string; npm?: string\n execute?: typeof executeInstaller\n probe?: typeof probeBinaryVersionAsync\n registerPath?: (directory: string) => Promise<void>\n} = {}): Promise<string> {\n if (!/^\\d+\\.\\d+\\.\\d+$/.test(version)) throw new Error(\"Installation requires an exact stable OpenCode version\")\n assertSupportedOpenCode(version)\n const platform = options.platform ?? process.platform\n const prefix = sharedInstallPrefix(options)\n if (!prefix) throw new Error(\"The PATH executable is not a writable npm installation\")\n const node = options.node ?? process.execPath\n const npm = options.npm ?? bundledNpm(node)\n if (!npm) throw new Error(\"npm is unavailable beside the CodeNomad Node runtime\")\n const binary = npmExecutable(prefix, platform)\n const probe = options.probe ?? probeBinaryVersionAsync\n return withInstallationLock(prefix, async () => {\n const oldBinary = npmCommand(prefix, platform)?.binary ?? binary\n const existing = await probe(oldBinary)\n if (existing.valid && (!existing.version || !/^(?:\\d+\\.\\d+\\.\\d+|0\\.0\\.0-beta-\\d+)$/.test(existing.version))) {\n throw new Error(\"Cannot replace an unverified OpenCode version automatically\")\n }\n const target = existing.valid && existing.version && /^\\d+\\.\\d+\\.\\d+$/.test(existing.version) && compareVersionStrings(existing.version, version) > 0 ? existing.version : version\n const directory = npmCommandDirectory(prefix, platform)\n const commandHost = { ...options, env: { PATH: directory, PATHEXT: \".EXE;.CMD;.BAT\" } }\n if (!existing.valid || existing.version !== target || !npmCommand(prefix, platform) || oldBinary !== binary) {\n const env = { ...(options.env ?? process.env) }\n // 2.0.15 -> 2.0.16 is qualified with a live Windows service. Older\n // installers and same-version launcher repair keep the npm preflight.\n if (existing.valid && existing.version && /^\\d+\\.\\d+\\.\\d+$/.test(existing.version)\n && compareVersionStrings(existing.version, \"2.0.15\") >= 0 && existing.version !== target\n && npmCommand(prefix, platform)) {\n await upgradeSharedOpenCode({ binary: oldBinary, version: target, prefix, node, npm, env, platform, execute: options.execute })\n } else {\n await assertExecutableWritable(oldBinary, platform)\n const key = Object.keys(env).find(key => key.toLowerCase() === \"path\") ?? \"PATH\"\n env[key] = `${path.dirname(node)}${platform === \"win32\" ? \";\" : \":\"}${env[key] || \"\"}`\n await (options.execute ?? executeInstaller)(node, [npm, \"install\", \"--global\", \"--prefix\", prefix,\n \"--no-audit\", \"--no-fund\", \"--registry=https://registry.npmjs.org\", `@opencode/cli@${target}`], env)\n }\n }\n const result = await probe(binary)\n if (!result.valid || !result.version || !/^\\d+\\.\\d+\\.\\d+$/.test(result.version) || compareVersionStrings(result.version, target) < 0) {\n throw new Error(\"Installed OpenCode version verification failed\")\n }\n if (!findPathOpenCode(commandHost) || sharedInstallPrefix(commandHost) !== prefix) {\n throw new Error(\"npm did not publish the verified OpenCode terminal command\")\n }\n await (options.registerPath ?? (directory => registerUserPath(directory, options)))(directory)\n return binary\n })\n}\n"]}
|
|
@@ -21125,6 +21125,7 @@ var Info13 = Schema_exports.Struct({
|
|
|
21125
21125
|
file: Schema_exports.String,
|
|
21126
21126
|
pid: optional3(NonNegativeInt),
|
|
21127
21127
|
exit: optional3(Schema_exports.Finite),
|
|
21128
|
+
signal: optional3(Schema_exports.String),
|
|
21128
21129
|
// Always present; defaults to an empty object when the creator supplies no metadata.
|
|
21129
21130
|
metadata: Metadata2,
|
|
21130
21131
|
time: Time2
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neuralnomads/codenomad-dev",
|
|
3
|
-
"version": "0.20.0-dev-
|
|
3
|
+
"version": "0.20.0-dev-20260927-a77e37ef",
|
|
4
4
|
"description": "CodeNomad Server",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@fastify/cors": "^8.5.0",
|
|
31
31
|
"@fastify/reply-from": "^9.8.0",
|
|
32
32
|
"@fastify/static": "^7.0.4",
|
|
33
|
-
"@opencode/client": "2.0.
|
|
33
|
+
"@opencode/client": "2.0.18",
|
|
34
34
|
"commander": "^12.1.0",
|
|
35
35
|
"fastify": "^4.28.1",
|
|
36
36
|
"fuzzysort": "^2.0.4",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"esbuild": "^0.25.12",
|
|
48
|
-
"@opencode/plugin": "2.0.
|
|
48
|
+
"@opencode/plugin": "2.0.18",
|
|
49
49
|
"@types/node-forge": "^1.3.14",
|
|
50
50
|
"@types/yauzl": "^2.10.0",
|
|
51
51
|
"cross-env": "^7.0.3",
|