ocx 1.4.2 → 1.4.4
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/dist/index.js +1069 -434
- package/dist/index.js.map +22 -19
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/error.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/argument.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/help.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/option.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/command.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/index.js", "../../../node_modules/.bun/cli-spinners@2.9.2/node_modules/cli-spinners/index.js", "../../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/esm.mjs", "../src/commands/add.ts", "../src/schemas/config.ts", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js", "../src/schemas/registry.ts", "../src/utils/errors.ts", "../src/utils/paths.ts", "../src/config/provider.ts", "../src/config/resolver.ts", "../src/profile/manager.ts", "../src/schemas/ocx.ts", "../src/utils/path-helpers.ts", "../src/schemas/common.ts", "../src/profile/atomic.ts", "../src/profile/paths.ts", "../src/profile/schema.ts", "../src/constants.ts", "../src/registry/fetcher.ts", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/purry-GjwKKIlp.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/isPlainObject.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/mergeDeep.js", "../src/registry/merge.ts", "../src/registry/resolver.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/content.ts", "../src/utils/env.ts", "../src/utils/git-context.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/logger.ts", "../src/utils/handle-error.ts", "../src/utils/json-output.ts", "../src/utils/path-safety.ts", "../src/utils/shared-options.ts", "../../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js", "../../../node_modules/.bun/cli-cursor@5.0.0/node_modules/cli-cursor/index.js", "../../../node_modules/.bun/restore-cursor@5.1.0/node_modules/restore-cursor/index.js", "../../../node_modules/.bun/mimic-function@5.0.1/node_modules/mimic-function/index.js", "../../../node_modules/.bun/onetime@7.0.0/node_modules/onetime/index.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js", "../../../node_modules/.bun/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/log-symbols@6.0.0/node_modules/log-symbols/index.js", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../../../node_modules/.bun/is-interactive@2.0.0/node_modules/is-interactive/index.js", "../../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js", "../src/utils/spinner.ts", "../src/utils/version-compat.ts", "../src/utils/npm-registry.ts", "../src/commands/build.ts", "../src/
|
|
3
|
+
"sources": ["../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/error.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/argument.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/help.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/option.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/suggestSimilar.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/lib/command.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/index.js", "../../../node_modules/.bun/cli-spinners@2.9.2/node_modules/cli-spinners/index.js", "../../../node_modules/.bun/fuzzysort@3.1.0/node_modules/fuzzysort/fuzzysort.js", "../../../node_modules/.bun/commander@14.0.2/node_modules/commander/esm.mjs", "../src/commands/add.ts", "../src/schemas/config.ts", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/string-intern.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/format.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/parser.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/edit.js", "../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/main.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/types.js", "../src/schemas/registry.ts", "../src/utils/errors.ts", "../src/utils/path-security.ts", "../src/utils/paths.ts", "../src/config/provider.ts", "../src/config/resolver.ts", "../src/profile/manager.ts", "../src/schemas/ocx.ts", "../src/utils/path-helpers.ts", "../src/schemas/common.ts", "../src/profile/atomic.ts", "../src/profile/paths.ts", "../src/profile/schema.ts", "../src/constants.ts", "../src/registry/fetcher.ts", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/lazyDataLastImpl-DtF3cihj.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/purry-GjwKKIlp.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/isPlainObject.js", "../../../node_modules/.bun/remeda@2.33.1/node_modules/remeda/dist/mergeDeep.js", "../src/registry/merge.ts", "../src/registry/resolver.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/content.ts", "../src/utils/env.ts", "../src/utils/git-context.ts", "../src/lib/build-registry.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/logger.ts", "../src/utils/handle-error.ts", "../src/utils/json-output.ts", "../src/utils/path-safety.ts", "../src/utils/shared-options.ts", "../../../node_modules/.bun/ora@8.2.0/node_modules/ora/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/index.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/utilities.js", "../../../node_modules/.bun/chalk@5.6.2/node_modules/chalk/source/index.js", "../../../node_modules/.bun/cli-cursor@5.0.0/node_modules/cli-cursor/index.js", "../../../node_modules/.bun/restore-cursor@5.1.0/node_modules/restore-cursor/index.js", "../../../node_modules/.bun/mimic-function@5.0.1/node_modules/mimic-function/index.js", "../../../node_modules/.bun/onetime@7.0.0/node_modules/onetime/index.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/signals.js", "../../../node_modules/.bun/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js", "../../../node_modules/.bun/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/log-symbols@6.0.0/node_modules/log-symbols/index.js", "../../../node_modules/.bun/ansi-regex@6.2.2/node_modules/ansi-regex/index.js", "../../../node_modules/.bun/strip-ansi@7.1.2/node_modules/strip-ansi/index.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/lookup.js", "../../../node_modules/.bun/get-east-asian-width@1.4.0/node_modules/get-east-asian-width/index.js", "../../../node_modules/.bun/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs", "../../../node_modules/.bun/string-width@7.2.0/node_modules/string-width/index.js", "../../../node_modules/.bun/is-interactive@2.0.0/node_modules/is-interactive/index.js", "../../../node_modules/.bun/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js", "../../../node_modules/.bun/stdin-discarder@0.2.2/node_modules/stdin-discarder/index.js", "../src/utils/spinner.ts", "../src/utils/version-compat.ts", "../src/utils/npm-registry.ts", "../src/commands/build.ts", "../src/commands/config/edit.ts", "../src/commands/config/show.ts", "../src/commands/config/index.ts", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/base.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/character.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/util/string.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/word.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/line.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/sentence.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/css.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/json.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/diff/array.js", "../../../node_modules/.bun/diff@8.0.3/node_modules/diff/libesm/patch/create.js", "../src/commands/diff.ts", "../src/commands/ghost/migrate.ts", "../src/commands/ghost/index.ts", "../src/commands/init.ts", "../src/commands/opencode.ts", "../src/utils/terminal-title.ts", "../src/commands/profile/install-from-registry.ts", "../src/commands/profile/add.ts", "../src/commands/profile/list.ts", "../src/commands/profile/move.ts", "../src/commands/profile/remove.ts", "../src/commands/profile/show.ts", "../src/commands/profile/index.ts", "../src/commands/registry.ts", "../src/commands/search.ts", "../src/commands/self/uninstall.ts", "../src/self-update/detect-method.ts", "../src/self-update/version-provider.ts", "../src/self-update/check.ts", "../src/self-update/download.ts", "../src/self-update/notify.ts", "../src/self-update/verify.ts", "../src/commands/self/update.ts", "../src/commands/self/index.ts", "../src/commands/update.ts", "../src/self-update/index.ts", "../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n /**\n * Constructs the CommanderError class\n * @param {number} exitCode suggested exit code which could be used with process.exit\n * @param {string} code an id string representing the error\n * @param {string} message human-readable description of the error\n */\n constructor(exitCode, code, message) {\n super(message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n this.code = code;\n this.exitCode = exitCode;\n this.nestedError = undefined;\n }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n /**\n * Constructs the InvalidArgumentError class\n * @param {string} [message] explanation of why argument is invalid\n */\n constructor(message) {\n super(1, 'commander.invalidArgument', message);\n // properly capture stack trace in Node.js\n Error.captureStackTrace(this, this.constructor);\n this.name = this.constructor.name;\n }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n",
|
|
6
6
|
"const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n /**\n * Initialize a new command argument with the given name and description.\n * The default is that the argument is required, and you can explicitly\n * indicate this with <> around the name. Put [] around the name for an optional argument.\n *\n * @param {string} name\n * @param {string} [description]\n */\n\n constructor(name, description) {\n this.description = description || '';\n this.variadic = false;\n this.parseArg = undefined;\n this.defaultValue = undefined;\n this.defaultValueDescription = undefined;\n this.argChoices = undefined;\n\n switch (name[0]) {\n case '<': // e.g. <required>\n this.required = true;\n this._name = name.slice(1, -1);\n break;\n case '[': // e.g. [optional]\n this.required = false;\n this._name = name.slice(1, -1);\n break;\n default:\n this.required = true;\n this._name = name;\n break;\n }\n\n if (this._name.endsWith('...')) {\n this.variadic = true;\n this._name = this._name.slice(0, -3);\n }\n }\n\n /**\n * Return argument name.\n *\n * @return {string}\n */\n\n name() {\n return this._name;\n }\n\n /**\n * @package\n */\n\n _collectValue(value, previous) {\n if (previous === this.defaultValue || !Array.isArray(previous)) {\n return [value];\n }\n\n previous.push(value);\n return previous;\n }\n\n /**\n * Set the default value, and optionally supply the description to be displayed in the help.\n *\n * @param {*} value\n * @param {string} [description]\n * @return {Argument}\n */\n\n default(value, description) {\n this.defaultValue = value;\n this.defaultValueDescription = description;\n return this;\n }\n\n /**\n * Set the custom handler for processing CLI command arguments into argument values.\n *\n * @param {Function} [fn]\n * @return {Argument}\n */\n\n argParser(fn) {\n this.parseArg = fn;\n return this;\n }\n\n /**\n * Only allow argument value to be one of choices.\n *\n * @param {string[]} values\n * @return {Argument}\n */\n\n choices(values) {\n this.argChoices = values.slice();\n this.parseArg = (arg, previous) => {\n if (!this.argChoices.includes(arg)) {\n throw new InvalidArgumentError(\n `Allowed choices are ${this.argChoices.join(', ')}.`,\n );\n }\n if (this.variadic) {\n return this._collectValue(arg, previous);\n }\n return arg;\n };\n return this;\n }\n\n /**\n * Make argument required.\n *\n * @returns {Argument}\n */\n argRequired() {\n this.required = true;\n return this;\n }\n\n /**\n * Make argument optional.\n *\n * @returns {Argument}\n */\n argOptional() {\n this.required = false;\n return this;\n }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"// https://github.com/farzher/fuzzysort v3.0.2\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => {\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n var go = (search, targets, options) => {\r\n if(!search) return options?.all ? all(targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = denormalizeScore( options?.threshold || 0 )\r\n var limit = options?.limit || INFINITY\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n function push_result(result) {\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result._score > q.peek()._score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]\r\n\r\n // options.key\r\n if(options?.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n result.obj = obj\r\n push_result(result)\r\n }\r\n\r\n // options.keys\r\n } else if(options?.keys) {\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n\r\n outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n\r\n { // early out based on bitflags\r\n var keysBitflags = 0\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { tmpTargets[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n tmpTargets[keyI] = target\r\n\r\n keysBitflags |= target._bitflags\r\n }\r\n\r\n if((searchBitflags & keysBitflags) !== searchBitflags) continue\r\n }\r\n\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) keysSpacesBestScores[i] = NEGATIVE_INFINITY\r\n\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n target = tmpTargets[keyI]\r\n if(target === noTarget) { tmpResults[keyI] = noTarget; continue }\r\n\r\n tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/false, /*allowPartialMatch=*/containsSpace)\r\n if(tmpResults[keyI] === NULL) { tmpResults[keyI] = noTarget; continue }\r\n\r\n // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it\r\n // if our second match isn't good we ignore it instead of averaging with it\r\n if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) {\r\n if(allowPartialMatchScores[i] > -1000) {\r\n if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {\r\n var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/\r\n if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp\r\n }\r\n }\r\n if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]\r\n }\r\n }\r\n\r\n if(containsSpace) {\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) { if(keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer }\r\n } else {\r\n var hasAtLeast1Match = false\r\n for(let i=0; i < keysLen; i++) { if(tmpResults[i]._score !== NEGATIVE_INFINITY) { hasAtLeast1Match = true; break } }\r\n if(!hasAtLeast1Match) continue\r\n }\r\n\r\n var objResults = new KeysResult(keysLen)\r\n for(let i=0; i < keysLen; i++) { objResults[i] = tmpResults[i] }\r\n\r\n if(containsSpace) {\r\n var score = 0\r\n for(let i=0; i<preparedSearch.spaceSearches.length; i++) score += keysSpacesBestScores[i]\r\n } else {\r\n // todo could rewrite this scoring to be more similar to when there's spaces\r\n // if we match multiple keys give us bonus points\r\n var score = NEGATIVE_INFINITY\r\n for(let i=0; i<keysLen; i++) {\r\n var result = objResults[i]\r\n if(result._score > -1000) {\r\n if(score > NEGATIVE_INFINITY) {\r\n var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/\r\n if(tmp > score) score = tmp\r\n }\r\n }\r\n if(result._score > score) score = result._score\r\n }\r\n }\r\n\r\n objResults.obj = obj\r\n objResults._score = score\r\n if(options?.scoreFn) {\r\n score = options.scoreFn(objResults)\r\n if(!score) continue\r\n score = denormalizeScore(score)\r\n objResults._score = score\r\n }\r\n\r\n if(score < threshold) continue\r\n push_result(objResults)\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result._score < threshold) continue\r\n\r\n push_result(result)\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n // this is written as 1 function instead of 2 for minification. perf seems fine ...\r\n // except when minified. the perf is very slow\r\n var highlight = (result, open='<b>', close='</b>') => {\r\n var callback = typeof open === 'function' ? open : undefined\r\n\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result.indexes\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var parts = []\r\n\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n if(callback) {\r\n parts.push(highlighted); highlighted = ''\r\n } else {\r\n highlighted += open\r\n }\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n if(callback) {\r\n highlighted += char\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n parts.push(target.substr(i+1))\r\n } else {\r\n highlighted += char + close + target.substr(i+1)\r\n }\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n if(callback) {\r\n parts.push(callback(highlighted, matchI++)); highlighted = ''\r\n } else {\r\n highlighted += close\r\n }\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return callback ? parts : highlighted\r\n }\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target === 'number') target = ''+target\r\n else if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})\r\n }\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n class Result {\r\n get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }\r\n set ['indexes'](indexes) { return this._indexes = indexes }\r\n ['highlight'](open, close) { return highlight(this, open, close) }\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n class KeysResult extends Array {\r\n get ['score']() { return normalizeScore(this._score) }\r\n set ['score'](score) { this._score = denormalizeScore(score) }\r\n }\r\n\r\n var new_result = (target, options) => {\r\n const result = new Result()\r\n result['target'] = target\r\n result['obj'] = options.obj ?? NULL\r\n result._score = options._score ?? NEGATIVE_INFINITY\r\n result._indexes = options._indexes ?? []\r\n result._targetLower = options._targetLower ?? ''\r\n result._targetLowerCodes = options._targetLowerCodes ?? NULL\r\n result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL\r\n result._bitflags = options._bitflags ?? 0\r\n return result\r\n }\r\n\r\n\r\n var normalizeScore = score => {\r\n if(score === NEGATIVE_INFINITY) return 0\r\n if(score > 1) return score\r\n return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)\r\n }\r\n var denormalizeScore = normalizedScore => {\r\n if(normalizedScore === 0) return NEGATIVE_INFINITY\r\n if(normalizedScore > 1) return normalizedScore\r\n return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)\r\n }\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search === 'number') search = ''+search\r\n else if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i<searches.length; i++) {\r\n if(searches[i] === '') continue\r\n var _info = prepareLowerInfo(searches[i])\r\n spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false})\r\n }\r\n }\r\n\r\n return {lowerCodes: info.lowerCodes, _lower: info._lower, containsSpace: info.containsSpace, bitflags: info.bitflags, spaceSearches: spaceSearches}\r\n }\r\n\r\n\r\n\r\n var getPrepared = (target) => {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (targets, options) => {\r\n var results = []; results.total = targets.length // this total can be wrong if some targets are skipped\r\n\r\n var limit = options?.limit || INFINITY\r\n\r\n if(options?.key) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var target = getValue(obj, options.key)\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n var result = new_result(target.target, {_score: target._score, obj: obj})\r\n results.push(result); if(results.length >= limit) return results\r\n }\r\n } else if(options?.keys) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var objResults = new KeysResult(options.keys.length)\r\n for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = noTarget; continue }\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults._score = NEGATIVE_INFINITY\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i<targets.length;i++) { var target = targets[i]\r\n if(target == NULL) continue\r\n if(!isPrepared(target)) target = getPrepared(target)\r\n target._score = NEGATIVE_INFINITY\r\n target._indexes.len = 0\r\n results.push(target); if(results.length >= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = !!~substringIndex\r\n var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n\r\n // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score\r\n if(isSubstring && !isSubstringBeginning) {\r\n for(var i=0; i<nextBeginningIndexes.length; i=nextBeginningIndexes[i]) {\r\n if(i <= substringIndex) continue\r\n\r\n for(var s=0; s<searchLen; s++) if(searchLowerCodes[s] !== prepared._targetLowerCodes[i+s]) break\r\n if(s === searchLen) { substringIndex = i; isSubstringBeginning = true; break }\r\n }\r\n }\r\n\r\n // tally up the score & keep track of matches for highlighting later\r\n // if it's a simple match, we'll switch to a substring match if a substring exists\r\n // if it's a strict match, we'll switch to a substring match only if that's a better score\r\n\r\n var calculateScore = matches => {\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= (targetLen - searchLen)/2 // penality for longer targets\r\n\r\n return score\r\n }\r\n\r\n if(!successStrict) {\r\n if(isSubstring) for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesBest)\r\n } else {\r\n if(isSubstringBeginning) {\r\n for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches\r\n var matchesBest = matchesSimple\r\n var score = calculateScore(matchesSimple)\r\n } else {\r\n var matchesBest = matchesStrict\r\n var score = calculateScore(matchesStrict)\r\n }\r\n }\r\n\r\n prepared._score = score\r\n\r\n for(var i = 0; i < searchLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = searchLen\r\n\r\n const result = new Result()\r\n result.target = prepared.target\r\n result._score = prepared._score\r\n result._indexes = prepared._indexes\r\n return result\r\n }\r\n var algorithmSpaces = (preparedSearch, target, allowPartialMatch) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n var searchesLen = searches.length\r\n var changeslen = 0\r\n\r\n // Return _nextBeginningIndexes back to its normal state\r\n var resetNextBeginningIndexes = () => {\r\n for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]\r\n }\r\n\r\n var hasAtLeast1Match = false\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = NEGATIVE_INFINITY\r\n var search = searches[i]\r\n\r\n result = algorithm(search, target)\r\n if(allowPartialMatch) {\r\n if(result === NULL) continue\r\n hasAtLeast1Match = true\r\n } else {\r\n if(result === NULL) {resetNextBeginningIndexes(); return NULL}\r\n }\r\n\r\n // if not the last search, we need to mutate _nextBeginningIndexes for the next search\r\n var isTheLastSearch = i === searchesLen - 1\r\n if(!isTheLastSearch) {\r\n var indexes = result._indexes\r\n\r\n var indexesIsConsecutiveSubstring = true\r\n for(let i=0; i<indexes.len-1; i++) {\r\n if(indexes[i+1] - indexes[i] !== 1) {\r\n indexesIsConsecutiveSubstring = false; break;\r\n }\r\n }\r\n\r\n if(indexesIsConsecutiveSubstring) {\r\n var newBeginningIndex = indexes[indexes.len-1] + 1\r\n var toReplace = target._nextBeginningIndexes[newBeginningIndex-1]\r\n for(let i=newBeginningIndex-1; i>=0; i--) {\r\n if(toReplace !== target._nextBeginningIndexes[i]) break\r\n target._nextBeginningIndexes[i] = newBeginningIndex\r\n nextBeginningIndexesChanges[changeslen*2 + 0] = i\r\n nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace\r\n changeslen++\r\n }\r\n }\r\n }\r\n\r\n score += result._score / searchesLen\r\n allowPartialMatchScores[i] = result._score / searchesLen\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= (first_seen_index_last_search - result._indexes[0]) * 2\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j<result._indexes.len; ++j) seen_indexes.add(result._indexes[j])\r\n }\r\n\r\n if(allowPartialMatch && !hasAtLeast1Match) return NULL\r\n\r\n resetNextBeginningIndexes()\r\n\r\n // allows a search with spaces that's an exact substring to score well\r\n var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/true)\r\n if(allowSpacesResult !== NULL && allowSpacesResult._score > score) {\r\n if(allowPartialMatch) {\r\n for(var i=0; i<searchesLen; ++i) {\r\n allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen\r\n }\r\n }\r\n return allowSpacesResult\r\n }\r\n\r\n if(allowPartialMatch) result = target\r\n result._score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n // we use this instead of just .normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') because that screws with japanese characters\r\n var remove_accents = (str) => str.replace(/\\p{Script=Latin}+/gu, match => match.normalize('NFD')).replace(/[\\u0300-\\u036f]/g, '')\r\n\r\n var prepareLowerInfo = (str) => {\r\n str = remove_accents(str)\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1<<bit\r\n }\r\n\r\n return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower}\r\n }\r\n var prepareBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n target = remove_accents(target)\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n\r\n // the theory behind these being globals is to reduce garbage collection by not making new arrays\r\n var matchesSimple = []; var matchesStrict = []\r\n var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search\r\n var keysSpacesBestScores = []; var allowPartialMatchScores = []\r\n var tmpTargets = []; var tmpResults = []\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n // prop = obj => obj.tags.join() ??ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }\r\n var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n var noTarget = prepare('')\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c<o;){var s=c+1;a=c,s<o&&e[s]._score<e[c]._score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score<e[f]._score;f=(a=f)-1>>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score<e[v]._score;v=(a=v)-1>>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'prepare':prepare, 'cleanup':cleanup}\r\n}) // UMD\r\n",
|
|
14
14
|
"import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n program,\n createCommand,\n createArgument,\n createOption,\n CommanderError,\n InvalidArgumentError,\n InvalidOptionArgumentError, // deprecated old name\n Command,\n Argument,\n Option,\n Help,\n} = commander;\n",
|
|
15
15
|
"/**\n * OCX CLI - add command\n * Install components from registries\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\n\nimport type { Command } from \"commander\"\nimport type { ConfigProvider } from \"../config/provider\"\nimport { GlobalConfigProvider, LocalConfigProvider } from \"../config/provider\"\nimport { ConfigResolver } from \"../config/resolver\"\nimport { CLI_VERSION, GITHUB_REPO } from \"../constants\"\nimport { getProfileDir } from \"../profile/paths\"\nimport { fetchFileContent, fetchRegistryIndex } from \"../registry/fetcher\"\nimport type { ResolvedComponent } from \"../registry/resolver\"\nimport { type ResolvedDependencies, resolveDependencies } from \"../registry/resolver\"\nimport { findOcxLock, type OcxLock, readOcxLock, writeOcxLock } from \"../schemas/config\"\nimport type { ComponentFileObject, RegistryIndex } from \"../schemas/registry\"\nimport { parseQualifiedComponent } from \"../schemas/registry\"\nimport {\n\treadOpencodeJsonConfig,\n\tupdateOpencodeJsonConfig,\n} from \"../updaters/update-opencode-config\"\nimport { isContentIdentical } from \"../utils/content\"\nimport { ConfigError, ConflictError, IntegrityError, ValidationError } from \"../utils/errors\"\nimport {\n\tassertPathInside,\n\tcollectCompatIssues,\n\tcreateSpinner,\n\thandleError,\n\tlogger,\n\twarnCompatIssues,\n} from \"../utils/index\"\nimport {\n\textractPackageName,\n\tfetchPackageVersion,\n\tformatPluginEntry,\n\tisNpmSpecifier,\n\tparseNpmSpecifier,\n\tvalidateNpmPackage,\n\tvalidateOpenCodePlugin,\n} from \"../utils/npm-registry\"\nimport { resolveTargetPath } from \"../utils/paths\"\nimport {\n\taddCommonOptions,\n\taddForceOption,\n\taddGlobalOption,\n\taddVerboseOption,\n} from \"../utils/shared-options\"\n\n// =============================================================================\n// ADD INPUT TYPES (Discriminated Union)\n// =============================================================================\n\n/**\n * Parsed add input - discriminated union for type-safe routing.\n * Parsed at the boundary (Law 2: Parse Don't Validate).\n */\nexport type AddInput =\n\t| { type: \"npm\"; name: string; version?: string }\n\t| { type: \"registry\"; namespace: string; component: string; version?: string }\n\n/**\n * Parse a component input string into a typed AddInput.\n * Routes between npm: protocol and registry component references.\n *\n * @throws ValidationError for invalid input format\n */\nexport function parseAddInput(input: string): AddInput {\n\t// Guard: empty input\n\tif (!input?.trim()) {\n\t\tthrow new ValidationError(\"Component name cannot be empty\")\n\t}\n\n\tconst trimmed = input.trim()\n\n\t// Route npm: specifiers\n\tif (isNpmSpecifier(trimmed)) {\n\t\tconst parsed = parseNpmSpecifier(trimmed)\n\t\treturn { type: \"npm\", name: parsed.name, version: parsed.version }\n\t}\n\n\t// Route registry components\n\t// Check if it's a qualified reference (namespace/component)\n\tif (trimmed.includes(\"/\")) {\n\t\tconst { namespace, component } = parseQualifiedComponent(trimmed)\n\t\treturn { type: \"registry\", namespace, component }\n\t}\n\n\t// Bare component name - needs registry resolution\n\t// For now, treat as registry component without namespace\n\t// The resolver will handle namespace inference from config\n\treturn { type: \"registry\", namespace: \"\", component: trimmed }\n}\n\nexport interface AddOptions {\n\tforce?: boolean\n\tdryRun?: boolean\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n\tskipCompatCheck?: boolean\n\ttrust?: boolean\n\tglobal?: boolean\n\tprofile?: string\n}\n\nexport function registerAddCommand(program: Command): void {\n\tconst cmd = program\n\t\t.command(\"add\")\n\t\t.description(\n\t\t\t\"Add components or npm plugins to your project.\\n\\n\" +\n\t\t\t\t\" Registry components: ocx add namespace/component\\n\" +\n\t\t\t\t\" npm plugins: ocx add npm:package-name[@version]\",\n\t\t)\n\t\t.argument(\n\t\t\t\"<components...>\",\n\t\t\t\"Components to install (namespace/component or npm:package[@version])\",\n\t\t)\n\t\t.option(\"--dry-run\", \"Show what would be installed without making changes\")\n\t\t.option(\"--skip-compat-check\", \"Skip version compatibility checks\")\n\t\t.option(\"--trust\", \"Skip npm plugin validation (for packages that don't follow conventions)\")\n\t\t.option(\"-p, --profile <name>\", \"Use specific profile\")\n\n\taddCommonOptions(cmd)\n\taddForceOption(cmd)\n\taddVerboseOption(cmd)\n\taddGlobalOption(cmd)\n\n\tcmd.action(async (components: string[], options: AddOptions) => {\n\t\ttry {\n\t\t\t// Create appropriate provider based on flags\n\t\t\tlet provider: ConfigProvider\n\n\t\t\tif (options.profile) {\n\t\t\t\t// Use ConfigResolver with profile - cwd is the profile directory\n\t\t\t\tconst resolver = await ConfigResolver.create(options.cwd ?? process.cwd(), {\n\t\t\t\t\tprofile: options.profile,\n\t\t\t\t})\n\t\t\t\t// Profile mode: install to profile directory, not working directory\n\t\t\t\tconst profileDir = getProfileDir(options.profile)\n\t\t\t\tprovider = {\n\t\t\t\t\tcwd: profileDir,\n\t\t\t\t\tgetRegistries: () => resolver.getRegistries(),\n\t\t\t\t\tgetComponentPath: () => resolver.getComponentPath(),\n\t\t\t\t}\n\t\t\t} else if (options.global) {\n\t\t\t\tprovider = await GlobalConfigProvider.requireInitialized()\n\t\t\t} else {\n\t\t\t\tprovider = await LocalConfigProvider.requireInitialized(options.cwd ?? process.cwd())\n\t\t\t}\n\n\t\t\tawait runAddCore(components, options, provider)\n\t\t} catch (error) {\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n}\n\n/**\n * Core add logic that accepts a ConfigProvider.\n * This enables reuse across both standard and profile modes.\n *\n * Routes inputs to appropriate handlers:\n * - npm: specifiers -> handleNpmPlugins\n * - registry components -> existing registry flow\n */\nexport async function runAddCore(\n\tcomponentNames: string[],\n\toptions: AddOptions,\n\tprovider: ConfigProvider,\n): Promise<void> {\n\tconst cwd = provider.cwd\n\n\t// Parse all inputs at boundary (Law 2: Parse Don't Validate)\n\tconst parsedInputs = componentNames.map(parseAddInput)\n\n\t// Separate npm and registry inputs\n\tconst npmInputs = parsedInputs.filter((i): i is AddInput & { type: \"npm\" } => i.type === \"npm\")\n\tconst registryInputs = parsedInputs.filter(\n\t\t(i): i is AddInput & { type: \"registry\" } => i.type === \"registry\",\n\t)\n\n\t// Handle npm plugins first\n\tif (npmInputs.length > 0) {\n\t\tawait handleNpmPlugins(npmInputs, options, cwd)\n\t}\n\n\t// Handle registry components (existing flow)\n\tif (registryInputs.length > 0) {\n\t\t// Reconstruct component names for registry resolver\n\t\tconst registryComponentNames = registryInputs.map((i) =>\n\t\t\ti.namespace ? `${i.namespace}/${i.component}` : i.component,\n\t\t)\n\t\tawait runRegistryAddCore(registryComponentNames, options, provider)\n\t}\n}\n\n/**\n * Handle npm plugin additions.\n * Validates packages exist on npm and updates opencode.json plugin array.\n */\nasync function handleNpmPlugins(\n\tinputs: Array<{ type: \"npm\"; name: string; version?: string }>,\n\toptions: AddOptions,\n\tcwd: string,\n): Promise<void> {\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Validating npm packages...\" })\n\tspin?.start()\n\n\ttry {\n\t\tconst allWarnings: string[] = []\n\n\t\t// Validate all packages exist on npm registry and are valid OpenCode plugins\n\t\tfor (const input of inputs) {\n\t\t\t// Always validate package exists\n\t\t\tawait validateNpmPackage(input.name)\n\n\t\t\t// Skip plugin validation if --trust flag is set\n\t\t\tif (!options.trust) {\n\t\t\t\ttry {\n\t\t\t\t\tconst versionData = await fetchPackageVersion(input.name, input.version)\n\t\t\t\t\tconst result = validateOpenCodePlugin(versionData)\n\t\t\t\t\tallWarnings.push(...result.warnings)\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Enhance error with hints for ValidationError\n\t\t\t\t\tif (error instanceof ValidationError) {\n\t\t\t\t\t\tspin?.fail(\"Plugin validation failed\")\n\t\t\t\t\t\t// Wrap with hints - handleError will log this message\n\t\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t\t`${error.message}\\n` +\n\t\t\t\t\t\t\t\t`hint OpenCode plugins must be ESM modules with an entry point\\n` +\n\t\t\t\t\t\t\t\t`hint Use \\`--trust\\` to add anyway`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tspin?.succeed(`Validated ${inputs.length} npm package(s)`)\n\n\t\t// Show warnings for soft checks\n\t\tif (allWarnings.length > 0 && !options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tfor (const warning of allWarnings) {\n\t\t\t\tlogger.warn(warning)\n\t\t\t}\n\t\t}\n\n\t\t// Read existing opencode config\n\t\tconst existingConfig = await readOpencodeJsonConfig(cwd)\n\t\tconst existingPlugins: string[] = existingConfig?.config.plugin ?? []\n\n\t\t// Build a map of existing plugin names (without version) for conflict detection\n\t\tconst existingPluginMap = new Map<string, string>()\n\t\tfor (const plugin of existingPlugins) {\n\t\t\tconst name = extractPackageName(plugin)\n\t\t\texistingPluginMap.set(name, plugin)\n\t\t}\n\n\t\t// Check for conflicts and build new plugin list\n\t\tconst pluginsToAdd: string[] = []\n\t\tconst conflicts: string[] = []\n\n\t\tfor (const input of inputs) {\n\t\t\tconst existingEntry = existingPluginMap.get(input.name)\n\n\t\t\tif (existingEntry) {\n\t\t\t\t// Conflict: package already exists\n\t\t\t\tif (!options.force) {\n\t\t\t\t\tconflicts.push(input.name)\n\t\t\t\t} else {\n\t\t\t\t\t// With --force, replace existing entry\n\t\t\t\t\texistingPluginMap.set(input.name, formatPluginEntry(input.name, input.version))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// New package\n\t\t\t\tpluginsToAdd.push(formatPluginEntry(input.name, input.version))\n\t\t\t}\n\t\t}\n\n\t\t// Fail fast on conflicts (Law 4)\n\t\tif (conflicts.length > 0) {\n\t\t\tthrow new ConflictError(\n\t\t\t\t`Plugin(s) already exist in opencode.json: ${conflicts.join(\", \")}.\\n` +\n\t\t\t\t\t\"Use --force to replace existing entries.\",\n\t\t\t)\n\t\t}\n\n\t\t// Build final plugin array\n\t\tconst finalPlugins = [...existingPluginMap.values(), ...pluginsToAdd]\n\n\t\t// Dry run: just log what would happen\n\t\tif (options.dryRun) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Dry run - no changes made\")\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Would add npm plugins:\")\n\t\t\tfor (const input of inputs) {\n\t\t\t\tlogger.info(` ${formatPluginEntry(input.name, input.version)}`)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Update opencode.json with new plugins\n\t\tawait updateOpencodeJsonConfig(cwd, { plugin: finalPlugins })\n\n\t\tif (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Added ${inputs.length} npm plugin(s) to opencode.json`)\n\t\t\tfor (const input of inputs) {\n\t\t\t\tlogger.info(` ✓ ${formatPluginEntry(input.name, input.version)}`)\n\t\t\t}\n\t\t}\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tplugins: inputs.map((i) => formatPluginEntry(i.name, i.version)),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to add npm plugins\")\n\t\tthrow error\n\t}\n}\n\n/**\n * Registry component add logic (original runAddCore implementation).\n * Handles component installation from configured registries.\n */\nasync function runRegistryAddCore(\n\tcomponentNames: string[],\n\toptions: AddOptions,\n\tprovider: ConfigProvider,\n): Promise<void> {\n\tconst cwd = provider.cwd\n\t// Use flattened paths for global/profile mode (no .opencode/ prefix)\n\tconst isFlattened = !!options.global || !!options.profile\n\tconst { path: lockPath } = findOcxLock(cwd, { isFlattened })\n\tconst registries = provider.getRegistries()\n\n\t// Load or create lock\n\tlet lock: OcxLock = { lockVersion: 1, installed: {} }\n\tconst existingLock = await readOcxLock(cwd, { isFlattened })\n\tif (existingLock) {\n\t\tlock = existingLock\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Resolving dependencies...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Resolve all dependencies across all configured registries\n\t\tconst resolved = await resolveDependencies(registries, componentNames)\n\n\t\tif (options.verbose) {\n\t\t\tlogger.info(\"Install order:\")\n\t\t\tfor (const name of resolved.installOrder) {\n\t\t\t\tlogger.info(` - ${name}`)\n\t\t\t}\n\t\t}\n\n\t\t// Fetch registry indexes once (Law 2: Parse at boundary)\n\t\tconst registryIndexes = new Map<string, RegistryIndex>()\n\t\tconst uniqueBaseUrls = new Map<string, string>() // namespace -> baseUrl\n\n\t\tfor (const component of resolved.components) {\n\t\t\tif (!uniqueBaseUrls.has(component.registryName)) {\n\t\t\t\tuniqueBaseUrls.set(component.registryName, component.baseUrl)\n\t\t\t}\n\t\t}\n\n\t\tfor (const [namespace, baseUrl] of uniqueBaseUrls) {\n\t\t\tconst index = await fetchRegistryIndex(baseUrl)\n\t\t\tregistryIndexes.set(namespace, index)\n\t\t}\n\n\t\tspin?.succeed(\n\t\t\t`Resolved ${resolved.components.length} components from ${registryIndexes.size} registries`,\n\t\t)\n\n\t\t// Version compatibility check (skip if disabled via flag)\n\t\tconst skipCompat = options.skipCompatCheck\n\t\tif (!skipCompat) {\n\t\t\tfor (const [namespace, index] of registryIndexes) {\n\t\t\t\tconst issues = collectCompatIssues({\n\t\t\t\t\tregistry: { opencode: index.opencode, ocx: index.ocx },\n\t\t\t\t\tocxVersion: CLI_VERSION,\n\t\t\t\t})\n\t\t\t\twarnCompatIssues(namespace, issues)\n\t\t\t}\n\t\t}\n\n\t\tif (options.dryRun) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Dry run - no changes made\")\n\t\t\tlogResolved(resolved)\n\t\t\treturn\n\t\t}\n\n\t\t// Phase 1: Fetch all files and perform pre-flight checks (Law 4: Fail Fast)\n\t\t// We check ALL conflicts BEFORE writing ANY files to ensure atomic behavior\n\t\tconst fetchSpin = options.quiet ? null : createSpinner({ text: \"Fetching components...\" })\n\t\tfetchSpin?.start()\n\n\t\tconst componentBundles: {\n\t\t\tcomponent: ResolvedComponent\n\t\t\tfiles: { path: string; content: Buffer }[]\n\t\t\tcomputedHash: string\n\t\t}[] = []\n\n\t\tfor (const component of resolved.components) {\n\t\t\t// Fetch component files and compute bundle hash\n\t\t\tconst files: { path: string; content: Buffer }[] = []\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst content = await fetchFileContent(component.baseUrl, component.name, file.path)\n\t\t\t\tfiles.push({ path: file.path, content: Buffer.from(content) })\n\t\t\t}\n\n\t\t\tconst computedHash = await hashBundle(files)\n\n\t\t\t// Layer 2 path safety: Verify all target paths are inside cwd (runtime containment)\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst targetPath = join(cwd, resolveTargetPath(file.target, isFlattened))\n\t\t\t\tassertPathInside(targetPath, cwd)\n\t\t\t}\n\n\t\t\t// Verify integrity if already in lock (use qualifiedName as key)\n\t\t\tconst existingEntry = lock.installed[component.qualifiedName]\n\t\t\tif (existingEntry && existingEntry.hash !== computedHash) {\n\t\t\t\tfetchSpin?.fail(\"Integrity check failed\")\n\t\t\t\tthrow new IntegrityError(component.qualifiedName, existingEntry.hash, computedHash)\n\t\t\t}\n\n\t\t\t// Check for file conflicts with components from other namespaces\n\t\t\tfor (const file of component.files) {\n\t\t\t\tconst resolvedTarget = resolveTargetPath(file.target, isFlattened)\n\t\t\t\tconst targetPath = join(cwd, resolvedTarget)\n\t\t\t\tif (existsSync(targetPath)) {\n\t\t\t\t\t// File exists - check if it's from the same component (re-install) or different (conflict)\n\t\t\t\t\tconst conflictingComponent = findComponentByFile(lock, resolvedTarget)\n\t\t\t\t\tif (conflictingComponent && conflictingComponent !== component.qualifiedName) {\n\t\t\t\t\t\tfetchSpin?.fail(\"File conflict detected\")\n\t\t\t\t\t\tthrow new ConflictError(\n\t\t\t\t\t\t\t`File conflict: ${resolvedTarget} already exists (installed by '${conflictingComponent}').\\n\\n` +\n\t\t\t\t\t\t\t\t`To resolve:\\n` +\n\t\t\t\t\t\t\t\t` 1. Remove existing: rm ${resolvedTarget}\\n` +\n\t\t\t\t\t\t\t\t` 2. Or rename it manually and update references\\n` +\n\t\t\t\t\t\t\t\t` 3. Then run: ocx add ${component.qualifiedName}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcomponentBundles.push({ component, files, computedHash })\n\t\t}\n\n\t\tfetchSpin?.succeed(`Fetched ${resolved.components.length} components`)\n\n\t\t// Phase 2: Pre-flight conflict detection (check ALL files before writing ANY)\n\t\t// This ensures atomic behavior: either all files install or none do\n\t\tconst allConflicts: string[] = []\n\n\t\tfor (const { component, files } of componentBundles) {\n\t\t\tfor (const file of files) {\n\t\t\t\tconst componentFile = component.files.find((f: ComponentFileObject) => f.path === file.path)\n\t\t\t\tif (!componentFile) continue\n\n\t\t\t\tconst resolvedTarget = resolveTargetPath(componentFile.target, isFlattened)\n\t\t\t\tconst targetPath = join(cwd, resolvedTarget)\n\t\t\t\tif (existsSync(targetPath)) {\n\t\t\t\t\tconst existingContent = await Bun.file(targetPath).text()\n\t\t\t\t\tconst incomingContent = file.content.toString(\"utf-8\")\n\n\t\t\t\t\tif (!isContentIdentical(existingContent, incomingContent) && !options.force) {\n\t\t\t\t\t\tallConflicts.push(resolvedTarget)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fail fast on conflicts BEFORE any writes (Law 4)\n\t\tif (allConflicts.length > 0) {\n\t\t\tlogger.error(\"\")\n\t\t\tlogger.error(\"File conflicts detected:\")\n\t\t\tfor (const conflict of allConflicts) {\n\t\t\t\tlogger.error(` ✗ ${conflict}`)\n\t\t\t}\n\t\t\tlogger.error(\"\")\n\t\t\tlogger.error(\"These files have been modified since installation.\")\n\t\t\tlogger.error(\"Use --force to overwrite, or review the changes first.\")\n\t\t\tthrow new ConflictError(\n\t\t\t\t`${allConflicts.length} file(s) have conflicts. Use --force to overwrite.`,\n\t\t\t)\n\t\t}\n\n\t\t// Phase 3: Install all components (no conflicts possible at this point)\n\t\tconst installSpin = options.quiet ? null : createSpinner({ text: \"Installing components...\" })\n\t\tinstallSpin?.start()\n\n\t\tfor (const { component, files, computedHash } of componentBundles) {\n\t\t\t// Install component\n\t\t\tconst installResult = await installComponent(component, files, cwd, {\n\t\t\t\tforce: options.force,\n\t\t\t\tverbose: options.verbose,\n\t\t\t\tisFlattened,\n\t\t\t})\n\n\t\t\t// Log results in verbose mode\n\t\t\tif (options.verbose) {\n\t\t\t\tfor (const f of installResult.skipped) {\n\t\t\t\t\tlogger.info(` ○ Skipped ${f} (unchanged)`)\n\t\t\t\t}\n\t\t\t\tfor (const f of installResult.overwritten) {\n\t\t\t\t\tlogger.info(` ✓ Overwrote ${f}`)\n\t\t\t\t}\n\t\t\t\tfor (const f of installResult.written) {\n\t\t\t\t\tlogger.info(` ✓ Wrote ${f}`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Use cached registry index for lockfile version\n\t\t\tconst index = registryIndexes.get(component.registryName)\n\t\t\tif (!index) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Registry index not found for \"${component.registryName}\". ` +\n\t\t\t\t\t\t`This is an internal error - please report it at https://github.com/${GITHUB_REPO}/issues`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// Update lock with qualifiedName as key (namespace/component format)\n\t\t\tlock.installed[component.qualifiedName] = {\n\t\t\t\tregistry: component.registryName,\n\t\t\t\tversion: index.version,\n\t\t\t\thash: computedHash,\n\t\t\t\tfiles: component.files.map((f) => resolveTargetPath(f.target, isFlattened)),\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tinstallSpin?.succeed(`Installed ${resolved.components.length} components`)\n\n\t\t// Apply opencode.json changes (ShadCN-style: component wins, user uses git)\n\t\tif (resolved.opencode && Object.keys(resolved.opencode).length > 0) {\n\t\t\tconst result = await updateOpencodeJsonConfig(cwd, resolved.opencode)\n\n\t\t\tif (!options.quiet && result.changed) {\n\t\t\t\tif (result.created) {\n\t\t\t\t\tlogger.info(`Created ${result.path}`)\n\t\t\t\t} else {\n\t\t\t\t\tlogger.info(`Updated ${result.path}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update package.json with npm dependencies\n\t\t// Global or profile mode: writes to cwd/package.json\n\t\t// Local mode: writes to .opencode/package.json\n\t\tconst hasNpmDeps = resolved.npmDependencies.length > 0\n\t\tconst hasNpmDevDeps = resolved.npmDevDependencies.length > 0\n\t\tconst packageJsonPath =\n\t\t\toptions.global || options.profile\n\t\t\t\t? join(cwd, \"package.json\")\n\t\t\t\t: join(cwd, \".opencode/package.json\")\n\n\t\tif (hasNpmDeps || hasNpmDevDeps) {\n\t\t\tconst npmSpin = options.quiet\n\t\t\t\t? null\n\t\t\t\t: createSpinner({ text: `Updating ${packageJsonPath}...` })\n\t\t\tnpmSpin?.start()\n\n\t\t\ttry {\n\t\t\t\tawait updateOpencodeDevDependencies(\n\t\t\t\t\tcwd,\n\t\t\t\t\tresolved.npmDependencies,\n\t\t\t\t\tresolved.npmDevDependencies,\n\t\t\t\t\t{ isFlattened },\n\t\t\t\t)\n\t\t\t\tconst totalDeps = resolved.npmDependencies.length + resolved.npmDevDependencies.length\n\t\t\t\tnpmSpin?.succeed(`Added ${totalDeps} dependencies to ${packageJsonPath}`)\n\t\t\t} catch (error) {\n\t\t\t\tnpmSpin?.fail(`Failed to update ${packageJsonPath}`)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\t// Save lock file\n\t\tawait writeOcxLock(cwd, lock, lockPath)\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tinstalled: resolved.installOrder,\n\t\t\t\t\t\topencode: !!resolved.opencode,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Done! Installed ${resolved.components.length} components.`)\n\t\t}\n\t} catch (error) {\n\t\t// Only fail the resolve spinner if it's still running (error during resolution)\n\t\t// Other spinners handle their own failures\n\t\tif (spin && !spin.isSpinning) {\n\t\t\t// Spinner already stopped - error happened after resolution\n\t\t} else {\n\t\t\tspin?.fail(\"Failed to add components\")\n\t\t}\n\t\tthrow error\n\t}\n}\n\n/**\n * Writes component files to disk.\n * Pre-flight conflict detection happens before this function is called,\n * so we can safely write all files without additional conflict checks.\n */\nasync function installComponent(\n\tcomponent: ResolvedComponent,\n\tfiles: { path: string; content: Buffer }[],\n\tcwd: string,\n\toptions: { force?: boolean; verbose?: boolean; isFlattened?: boolean },\n): Promise<{ written: string[]; skipped: string[]; overwritten: string[] }> {\n\tconst result = {\n\t\twritten: [] as string[],\n\t\tskipped: [] as string[],\n\t\toverwritten: [] as string[],\n\t}\n\n\tfor (const file of files) {\n\t\tconst componentFile = component.files.find((f: ComponentFileObject) => f.path === file.path)\n\t\tif (!componentFile) continue\n\n\t\tconst resolvedTarget = resolveTargetPath(componentFile.target, !!options.isFlattened)\n\t\tconst targetPath = join(cwd, resolvedTarget)\n\t\tconst targetDir = dirname(targetPath)\n\n\t\t// Check if file exists\n\t\tif (existsSync(targetPath)) {\n\t\t\t// Read existing content and compare\n\t\t\tconst existingContent = await Bun.file(targetPath).text()\n\t\t\tconst incomingContent = file.content.toString(\"utf-8\")\n\n\t\t\tif (isContentIdentical(existingContent, incomingContent)) {\n\t\t\t\t// Content is identical - skip silently\n\t\t\t\tresult.skipped.push(resolvedTarget)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Content differs - overwrite (conflicts already checked in pre-flight)\n\t\t\tresult.overwritten.push(resolvedTarget)\n\t\t} else {\n\t\t\tresult.written.push(resolvedTarget)\n\t\t}\n\n\t\t// Create directory if needed\n\t\tif (!existsSync(targetDir)) {\n\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t}\n\n\t\tawait writeFile(targetPath, file.content)\n\t}\n\n\treturn result\n}\n\nasync function hashContent(content: string | Buffer): Promise<string> {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\nasync function hashBundle(files: { path: string; content: Buffer }[]): Promise<string> {\n\t// Sort files for deterministic hashing\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\t// Create a manifest of file hashes\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = await hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\t// Hash the manifest itself\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n\nfunction logResolved(resolved: ResolvedDependencies): void {\n\tlogger.info(\"\")\n\tlogger.info(\"Would install:\")\n\tfor (const component of resolved.components) {\n\t\tlogger.info(` ${component.name} (${component.type}) from ${component.registryName}`)\n\t}\n\n\tif (resolved.opencode && Object.keys(resolved.opencode).length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would update opencode.json with:\")\n\t\tfor (const key of Object.keys(resolved.opencode)) {\n\t\t\tlogger.info(` ${key}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dependencies:\")\n\t\tfor (const dep of resolved.npmDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n\n\tif (resolved.npmDevDependencies.length > 0) {\n\t\tlogger.info(\"\")\n\t\tlogger.info(\"Would install npm dev dependencies:\")\n\t\tfor (const dep of resolved.npmDevDependencies) {\n\t\t\tlogger.info(` ${dep}`)\n\t\t}\n\t}\n}\n\n// ============================================================================\n// NPM Dependency Management\n// ============================================================================\n\ninterface NpmDependency {\n\tname: string\n\tversion: string\n}\n\ninterface OpencodePackageJson {\n\tname?: string\n\tprivate?: boolean\n\ttype?: string\n\tdependencies?: Record<string, string>\n\tdevDependencies?: Record<string, string>\n}\n\nconst DEFAULT_PACKAGE_JSON: OpencodePackageJson = {\n\tname: \"opencode-plugins\",\n\tprivate: true,\n\ttype: \"module\",\n}\n\n/**\n * Parses an npm dependency spec into name and version.\n * Handles: \"lodash\", \"lodash@4.0.0\", \"@types/node\", \"@types/node@1.0.0\"\n */\nfunction parseNpmDependency(spec: string): NpmDependency {\n\t// Guard: invalid input\n\tif (!spec?.trim()) {\n\t\tthrow new ValidationError(`Invalid npm dependency: expected non-empty string, got \"${spec}\"`)\n\t}\n\n\tconst trimmed = spec.trim()\n\tconst lastAt = trimmed.lastIndexOf(\"@\")\n\n\t// Has version: \"lodash@4.0.0\" or \"@types/node@1.0.0\"\n\tif (lastAt > 0) {\n\t\tconst name = trimmed.slice(0, lastAt)\n\t\tconst version = trimmed.slice(lastAt + 1)\n\t\tif (!version) {\n\t\t\tthrow new ValidationError(`Invalid npm dependency: missing version after @ in \"${spec}\"`)\n\t\t}\n\t\treturn { name, version }\n\t}\n\n\t// No version: \"lodash\" or \"@types/node\" → use \"*\"\n\treturn { name: trimmed, version: \"*\" }\n}\n\n/**\n * Merges new dependencies into existing package.json structure.\n * Pure function: same inputs always produce same output.\n */\nfunction mergeDevDependencies(\n\texisting: OpencodePackageJson,\n\tnewDeps: NpmDependency[],\n): OpencodePackageJson {\n\tconst merged: Record<string, string> = { ...existing.devDependencies }\n\tfor (const dep of newDeps) {\n\t\tmerged[dep.name] = dep.version\n\t}\n\treturn { ...existing, devDependencies: merged }\n}\n\n/**\n * Reads package.json from the given directory, or returns default structure if missing.\n */\nasync function readOpencodePackageJson(opencodeDir: string): Promise<OpencodePackageJson> {\n\tconst pkgPath = join(opencodeDir, \"package.json\")\n\n\t// Guard: file doesn't exist - return default\n\tif (!existsSync(pkgPath)) {\n\t\treturn { ...DEFAULT_PACKAGE_JSON }\n\t}\n\n\t// Try to parse, fail fast on invalid JSON\n\ttry {\n\t\tconst content = await Bun.file(pkgPath).text()\n\t\treturn JSON.parse(content) as OpencodePackageJson\n\t} catch (e) {\n\t\tconst message = e instanceof Error ? e.message : String(e)\n\t\tthrow new ConfigError(`Invalid ${pkgPath}: ${message}`)\n\t}\n}\n\n/**\n * Modifies .opencode/.gitignore to ensure package.json and bun.lock are tracked.\n * Creates the file with sensible defaults if missing.\n */\nasync function ensureManifestFilesAreTracked(opencodeDir: string): Promise<void> {\n\tconst gitignorePath = join(opencodeDir, \".gitignore\")\n\tconst filesToTrack = new Set([\"package.json\", \"bun.lock\"])\n\tconst requiredIgnores = [\"node_modules\"]\n\n\t// Read existing lines or start fresh\n\tlet lines: string[] = []\n\tif (existsSync(gitignorePath)) {\n\t\tconst content = await Bun.file(gitignorePath).text()\n\t\tlines = content\n\t\t\t.split(\"\\n\")\n\t\t\t.map((l) => l.trim())\n\t\t\t.filter(Boolean)\n\t}\n\n\t// Remove entries that should be tracked (not ignored)\n\tlines = lines.filter((line) => !filesToTrack.has(line))\n\n\t// Ensure required ignores are present\n\tfor (const ignore of requiredIgnores) {\n\t\tif (!lines.includes(ignore)) {\n\t\t\tlines.push(ignore)\n\t\t}\n\t}\n\n\tawait Bun.write(gitignorePath, `${lines.join(\"\\n\")}\\n`)\n}\n\n/**\n * Updates package.json with new devDependencies.\n * For local mode: writes to .opencode/package.json and ensures git tracking.\n * For flattened mode (global or profile): writes directly to cwd/package.json.\n */\nasync function updateOpencodeDevDependencies(\n\tcwd: string,\n\tnpmDeps: string[],\n\tnpmDevDeps: string[],\n\toptions: { isFlattened?: boolean } = {},\n): Promise<void> {\n\t// Guard: no deps to process\n\tconst allDepSpecs = [...npmDeps, ...npmDevDeps]\n\tif (allDepSpecs.length === 0) return\n\n\t// Flattened mode: write directly to cwd, no .opencode prefix\n\t// Local mode: write to .opencode subdirectory\n\tconst packageDir = options.isFlattened ? cwd : join(cwd, \".opencode\")\n\n\t// Ensure directory exists\n\tawait mkdir(packageDir, { recursive: true })\n\n\t// Parse all deps - fails fast on invalid\n\tconst parsedDeps = allDepSpecs.map(parseNpmDependency)\n\n\t// Read → merge → write\n\tconst existing = await readOpencodePackageJson(packageDir)\n\tconst updated = mergeDevDependencies(existing, parsedDeps)\n\tawait Bun.write(join(packageDir, \"package.json\"), `${JSON.stringify(updated, null, 2)}\\n`)\n\n\t// Ensure manifest files are tracked by git (only for local mode)\n\tif (!options.isFlattened) {\n\t\tawait ensureManifestFilesAreTracked(packageDir)\n\t}\n}\n\n/**\n * Find which component installed a given file path\n */\nfunction findComponentByFile(lock: OcxLock, filePath: string): string | null {\n\tfor (const [qualifiedName, entry] of Object.entries(lock.installed)) {\n\t\tif (entry.files.includes(filePath)) {\n\t\t\treturn qualifiedName\n\t\t}\n\t}\n\treturn null\n}\n",
|
|
16
|
-
"/**\n * Config & Lockfile Schemas\n *\n * Schemas for ocx.jsonc (user config) and ocx.lock (auto-generated lockfile).\n * Includes Bun-specific I/O helpers.\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { z } from \"zod\"\nimport { qualifiedComponentSchema } from \"./registry\"\n\n// =============================================================================\n// OCX CONFIG SCHEMA (ocx.jsonc)\n// =============================================================================\n\n/**\n * Registry configuration in ocx.jsonc\n */\nexport const registryConfigSchema = z.object({\n\t/** Registry URL */\n\turl: z.string().url(\"Registry URL must be a valid URL\"),\n\n\t/** Optional version pin */\n\tversion: z.string().optional(),\n\n\t/** Optional auth headers (supports ${ENV_VAR} expansion) */\n\theaders: z.record(z.string()).optional(),\n})\n\nexport type RegistryConfig = z.infer<typeof registryConfigSchema>\n\n/**\n * Main OCX config schema (ocx.jsonc)\n */\nexport const ocxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Configured registries */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/** Lock registries - prevent adding/removing (enterprise feature) */\n\tlockRegistries: z.boolean().default(false),\n\n\t/** Skip version compatibility checks */\n\tskipCompatCheck: z.boolean().default(false),\n})\n\nexport type OcxConfig = z.infer<typeof ocxConfigSchema>\n\n// =============================================================================\n// OCX LOCKFILE SCHEMA (ocx.lock)\n// =============================================================================\n\n/**\n * Installed component entry in lockfile\n * Key format: \"namespace/component\" (e.g., \"kdco/researcher\")\n */\nexport const installedComponentSchema = z.object({\n\t/** Registry namespace this was installed from */\n\tregistry: z.string(),\n\n\t/** Version at time of install */\n\tversion: z.string(),\n\n\t/** SHA-256 hash of installed files for integrity */\n\thash: z.string(),\n\n\t/** Target files where installed (clean paths, no namespace prefix) */\n\tfiles: z.array(z.string()),\n\n\t/** ISO timestamp of installation */\n\tinstalledAt: z.string(),\n\n\t/** ISO timestamp of last update (optional, only set after update) */\n\tupdatedAt: z.string().optional(),\n})\n\nexport type InstalledComponent = z.infer<typeof installedComponentSchema>\n\n/**\n * OCX lockfile schema (ocx.lock)\n * Keys are qualified component refs: \"namespace/component\"\n */\nexport const ocxLockSchema = z.object({\n\t/** Lockfile format version */\n\tlockVersion: z.literal(1),\n\n\t/** Installed components, keyed by \"namespace/component\" */\n\tinstalled: z.record(qualifiedComponentSchema, installedComponentSchema).default({}),\n})\n\nexport type OcxLock = z.infer<typeof ocxLockSchema>\n\n// =============================================================================\n// CONFIG FILE HELPERS (Bun-specific I/O)\n// =============================================================================\n\nconst CONFIG_FILE = \"ocx.jsonc\"\nconst LOCK_FILE = \"ocx.lock\"\nconst LOCAL_CONFIG_DIR = \".opencode\"\n\n/**\n * Find ocx.jsonc config file path.\n * Checks .opencode/ first, then root. Fails if both exist.\n * @returns Object with path and whether it exists, or throws if conflict\n */\nexport function findOcxConfig(cwd: string): { path: string; exists: boolean } {\n\tconst dotOpencodePath = path.join(cwd, LOCAL_CONFIG_DIR, CONFIG_FILE)\n\tconst rootPath = path.join(cwd, CONFIG_FILE)\n\n\tconst dotOpencodeExists = existsSync(dotOpencodePath)\n\tconst rootExists = existsSync(rootPath)\n\n\t// Fail if both exist - user needs to consolidate\n\tif (dotOpencodeExists && rootExists) {\n\t\tthrow new Error(\n\t\t\t`Found ${CONFIG_FILE} in both .opencode/ and project root. ` +\n\t\t\t\t`Please consolidate to one location (recommended: .opencode/${CONFIG_FILE})`,\n\t\t)\n\t}\n\n\tif (dotOpencodeExists) {\n\t\treturn { path: dotOpencodePath, exists: true }\n\t}\n\n\tif (rootExists) {\n\t\treturn { path: rootPath, exists: true }\n\t}\n\n\t// Neither exists - default to .opencode/ for new files\n\treturn { path: dotOpencodePath, exists: false }\n}\n\n/**\n * Find ocx.lock lockfile path.\n * Checks .opencode/ first, then root.\n * @param cwd - Working directory\n * @param options - Optional settings for path resolution\n * @returns Object with path and whether it exists\n */\nexport function findOcxLock(\n\tcwd: string,\n\toptions?: { isFlattened?: boolean },\n): { path: string; exists: boolean } {\n\tconst dotOpencodePath = path.join(cwd, LOCAL_CONFIG_DIR, LOCK_FILE)\n\tconst rootPath = path.join(cwd, LOCK_FILE)\n\n\tif (options?.isFlattened) {\n\t\t// Flattened mode (global/profile): prefer root, ignore .opencode/\n\t\tif (existsSync(rootPath)) {\n\t\t\treturn { path: rootPath, exists: true }\n\t\t}\n\t\treturn { path: rootPath, exists: false }\n\t}\n\n\t// Local mode: prefer .opencode/, fallback to root\n\tif (existsSync(dotOpencodePath)) {\n\t\treturn { path: dotOpencodePath, exists: true }\n\t}\n\n\tif (existsSync(rootPath)) {\n\t\treturn { path: rootPath, exists: true }\n\t}\n\n\treturn { path: dotOpencodePath, exists: false }\n}\n\n/**\n * Read ocx.jsonc config file\n */\nexport async function readOcxConfig(cwd: string): Promise<OcxConfig | null> {\n\tconst { path: configPath, exists } = findOcxConfig(cwd)\n\n\tif (!exists) {\n\t\treturn null\n\t}\n\n\tconst file = Bun.file(configPath)\n\tconst content = await file.text()\n\ttry {\n\t\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\t\treturn ocxConfigSchema.parse(json)\n\t} catch (error) {\n\t\tconsole.error(`Error parsing ${configPath}:`, error)\n\t\tthrow error\n\t}\n}\n\n/**\n * Write ocx.jsonc config file.\n * @param cwd - Working directory\n * @param config - Config to write\n * @param existingPath - If provided, write to this path (for updates). Otherwise use .opencode/\n */\nexport async function writeOcxConfig(\n\tcwd: string,\n\tconfig: OcxConfig,\n\texistingPath?: string,\n): Promise<void> {\n\tconst configPath = existingPath ?? path.join(cwd, LOCAL_CONFIG_DIR, CONFIG_FILE)\n\n\t// Ensure directory exists\n\tawait mkdir(path.dirname(configPath), { recursive: true })\n\n\tconst content = JSON.stringify(config, null, 2)\n\tawait Bun.write(configPath, content)\n}\n\n/**\n * Read ocx.lock lockfile\n */\nexport async function readOcxLock(\n\tcwd: string,\n\toptions?: { isFlattened?: boolean },\n): Promise<OcxLock | null> {\n\tconst { path: lockPath, exists } = findOcxLock(cwd, options)\n\n\tif (!exists) {\n\t\treturn null\n\t}\n\n\tconst file = Bun.file(lockPath)\n\tconst content = await file.text()\n\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\treturn ocxLockSchema.parse(json)\n}\n\n/**\n * Write ocx.lock lockfile.\n * @param cwd - Working directory\n * @param lock - Lock data to write\n * @param existingPath - If provided, write to this path (for updates). Otherwise use .opencode/\n */\nexport async function writeOcxLock(\n\tcwd: string,\n\tlock: OcxLock,\n\texistingPath?: string,\n): Promise<void> {\n\tconst lockPath = existingPath ?? path.join(cwd, LOCAL_CONFIG_DIR, LOCK_FILE)\n\n\t// Ensure directory exists\n\tawait mkdir(path.dirname(lockPath), { recursive: true })\n\n\tconst content = JSON.stringify(lock, null, 2)\n\tawait Bun.write(lockPath, content)\n}\n",
|
|
16
|
+
"/**\n * Config & Lockfile Schemas\n *\n * Schemas for ocx.jsonc (user config) and ocx.lock (auto-generated lockfile).\n * Includes Bun-specific I/O helpers.\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir } from \"node:fs/promises\"\nimport path from \"node:path\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { z } from \"zod\"\nimport { qualifiedComponentSchema } from \"./registry\"\n\n// =============================================================================\n// OCX CONFIG SCHEMA (ocx.jsonc)\n// =============================================================================\n\n/**\n * Registry configuration in ocx.jsonc\n */\nexport const registryConfigSchema = z.object({\n\t/** Registry URL */\n\turl: z.string().url(\"Registry URL must be a valid URL\"),\n\n\t/** Optional version pin */\n\tversion: z.string().optional(),\n\n\t/** Optional auth headers (supports ${ENV_VAR} expansion) */\n\theaders: z.record(z.string()).optional(),\n})\n\nexport type RegistryConfig = z.infer<typeof registryConfigSchema>\n\n/**\n * Main OCX config schema (ocx.jsonc)\n */\nexport const ocxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Configured registries */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/** Lock registries - prevent adding/removing (enterprise feature) */\n\tlockRegistries: z.boolean().default(false),\n\n\t/** Skip version compatibility checks */\n\tskipCompatCheck: z.boolean().default(false),\n})\n\nexport type OcxConfig = z.infer<typeof ocxConfigSchema>\n\n// =============================================================================\n// OCX LOCKFILE SCHEMA (ocx.lock)\n// =============================================================================\n\n/**\n * Installed component entry in lockfile\n * Key format: \"namespace/component\" (e.g., \"kdco/researcher\")\n */\nexport const installedComponentSchema = z.object({\n\t/** Registry namespace this was installed from */\n\tregistry: z.string(),\n\n\t/** Version at time of install */\n\tversion: z.string(),\n\n\t/** SHA-256 hash of installed files for integrity */\n\thash: z.string(),\n\n\t/** Target files where installed (clean paths, no namespace prefix) */\n\tfiles: z.array(z.string()),\n\n\t/** ISO timestamp of installation */\n\tinstalledAt: z.string(),\n\n\t/** ISO timestamp of last update (optional, only set after update) */\n\tupdatedAt: z.string().optional(),\n})\n\nexport type InstalledComponent = z.infer<typeof installedComponentSchema>\n\n/**\n * Profile source tracking for profiles installed from registries.\n * Optional field in OcxLock - only present for profile installs.\n */\nexport const installedFromSchema = z.object({\n\t/** Registry namespace this profile was installed from */\n\tregistry: z.string(),\n\n\t/** Component name in the registry */\n\tcomponent: z.string(),\n\n\t/** Registry version at time of install */\n\tversion: z.string().optional(),\n\n\t/** SHA-256 hash of profile files for integrity */\n\thash: z.string(),\n\n\t/** ISO timestamp of installation */\n\tinstalledAt: z.string(),\n})\n\nexport type InstalledFrom = z.infer<typeof installedFromSchema>\n\n/**\n * OCX lockfile schema (ocx.lock)\n * Keys are qualified component refs: \"namespace/component\"\n */\nexport const ocxLockSchema = z.object({\n\t/** Lockfile format version */\n\tlockVersion: z.literal(1),\n\n\t/** Profile source info (only present for profiles installed from registry) */\n\tinstalledFrom: installedFromSchema.optional(),\n\n\t/** Installed components, keyed by \"namespace/component\" */\n\tinstalled: z.record(qualifiedComponentSchema, installedComponentSchema).default({}),\n})\n\nexport type OcxLock = z.infer<typeof ocxLockSchema>\n\n// =============================================================================\n// CONFIG FILE HELPERS (Bun-specific I/O)\n// =============================================================================\n\nconst CONFIG_FILE = \"ocx.jsonc\"\nconst LOCK_FILE = \"ocx.lock\"\nconst LOCAL_CONFIG_DIR = \".opencode\"\n\n/**\n * Find ocx.jsonc config file path.\n * Checks .opencode/ first, then root. Fails if both exist.\n * @returns Object with path and whether it exists, or throws if conflict\n */\nexport function findOcxConfig(cwd: string): { path: string; exists: boolean } {\n\tconst dotOpencodePath = path.join(cwd, LOCAL_CONFIG_DIR, CONFIG_FILE)\n\tconst rootPath = path.join(cwd, CONFIG_FILE)\n\n\tconst dotOpencodeExists = existsSync(dotOpencodePath)\n\tconst rootExists = existsSync(rootPath)\n\n\t// Fail if both exist - user needs to consolidate\n\tif (dotOpencodeExists && rootExists) {\n\t\tthrow new Error(\n\t\t\t`Found ${CONFIG_FILE} in both .opencode/ and project root. ` +\n\t\t\t\t`Please consolidate to one location (recommended: .opencode/${CONFIG_FILE})`,\n\t\t)\n\t}\n\n\tif (dotOpencodeExists) {\n\t\treturn { path: dotOpencodePath, exists: true }\n\t}\n\n\tif (rootExists) {\n\t\treturn { path: rootPath, exists: true }\n\t}\n\n\t// Neither exists - default to .opencode/ for new files\n\treturn { path: dotOpencodePath, exists: false }\n}\n\n/**\n * Find ocx.lock lockfile path.\n * Checks .opencode/ first, then root.\n * @param cwd - Working directory\n * @param options - Optional settings for path resolution\n * @returns Object with path and whether it exists\n */\nexport function findOcxLock(\n\tcwd: string,\n\toptions?: { isFlattened?: boolean },\n): { path: string; exists: boolean } {\n\tconst dotOpencodePath = path.join(cwd, LOCAL_CONFIG_DIR, LOCK_FILE)\n\tconst rootPath = path.join(cwd, LOCK_FILE)\n\n\tif (options?.isFlattened) {\n\t\t// Flattened mode (global/profile): prefer root, ignore .opencode/\n\t\tif (existsSync(rootPath)) {\n\t\t\treturn { path: rootPath, exists: true }\n\t\t}\n\t\treturn { path: rootPath, exists: false }\n\t}\n\n\t// Local mode: prefer .opencode/, fallback to root\n\tif (existsSync(dotOpencodePath)) {\n\t\treturn { path: dotOpencodePath, exists: true }\n\t}\n\n\tif (existsSync(rootPath)) {\n\t\treturn { path: rootPath, exists: true }\n\t}\n\n\treturn { path: dotOpencodePath, exists: false }\n}\n\n/**\n * Read ocx.jsonc config file\n */\nexport async function readOcxConfig(cwd: string): Promise<OcxConfig | null> {\n\tconst { path: configPath, exists } = findOcxConfig(cwd)\n\n\tif (!exists) {\n\t\treturn null\n\t}\n\n\tconst file = Bun.file(configPath)\n\tconst content = await file.text()\n\ttry {\n\t\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\t\treturn ocxConfigSchema.parse(json)\n\t} catch (error) {\n\t\tconsole.error(`Error parsing ${configPath}:`, error)\n\t\tthrow error\n\t}\n}\n\n/**\n * Write ocx.jsonc config file.\n * @param cwd - Working directory\n * @param config - Config to write\n * @param existingPath - If provided, write to this path (for updates). Otherwise use .opencode/\n */\nexport async function writeOcxConfig(\n\tcwd: string,\n\tconfig: OcxConfig,\n\texistingPath?: string,\n): Promise<void> {\n\tconst configPath = existingPath ?? path.join(cwd, LOCAL_CONFIG_DIR, CONFIG_FILE)\n\n\t// Ensure directory exists\n\tawait mkdir(path.dirname(configPath), { recursive: true })\n\n\tconst content = JSON.stringify(config, null, 2)\n\tawait Bun.write(configPath, content)\n}\n\n/**\n * Read ocx.lock lockfile\n */\nexport async function readOcxLock(\n\tcwd: string,\n\toptions?: { isFlattened?: boolean },\n): Promise<OcxLock | null> {\n\tconst { path: lockPath, exists } = findOcxLock(cwd, options)\n\n\tif (!exists) {\n\t\treturn null\n\t}\n\n\tconst file = Bun.file(lockPath)\n\tconst content = await file.text()\n\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\treturn ocxLockSchema.parse(json)\n}\n\n/**\n * Write ocx.lock lockfile.\n * @param cwd - Working directory\n * @param lock - Lock data to write\n * @param existingPath - If provided, write to this path (for updates). Otherwise use .opencode/\n */\nexport async function writeOcxLock(\n\tcwd: string,\n\tlock: OcxLock,\n\texistingPath?: string,\n): Promise<void> {\n\tconst lockPath = existingPath ?? path.join(cwd, LOCAL_CONFIG_DIR, LOCK_FILE)\n\n\t// Ensure directory exists\n\tawait mkdir(path.dirname(lockPath), { recursive: true })\n\n\tconst content = JSON.stringify(lock, null, 2)\n\tawait Bun.write(lockPath, content)\n}\n",
|
|
17
17
|
"/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia = false) {\n const len = text.length;\n let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n function scanHexDigits(count, exact) {\n let digits = 0;\n let value = 0;\n while (digits < count || !exact) {\n let ch = text.charCodeAt(pos);\n if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n }\n else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n }\n else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* SyntaxKind.Unknown */;\n scanError = 0 /* ScanError.None */;\n }\n function scanNumber() {\n let start = pos;\n if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n let result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === 34 /* CharacterCodes.doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* CharacterCodes.backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* CharacterCodes.doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* CharacterCodes.backslash */:\n result += '\\\\';\n break;\n case 47 /* CharacterCodes.slash */:\n result += '/';\n break;\n case 98 /* CharacterCodes.b */:\n result += '\\b';\n break;\n case 102 /* CharacterCodes.f */:\n result += '\\f';\n break;\n case 110 /* CharacterCodes.n */:\n result += '\\n';\n break;\n case 114 /* CharacterCodes.r */:\n result += '\\r';\n break;\n case 116 /* CharacterCodes.t */:\n result += '\\t';\n break;\n case 117 /* CharacterCodes.u */:\n const ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* ScanError.InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* ScanError.InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* ScanError.None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* SyntaxKind.EOF */;\n }\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* SyntaxKind.Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* SyntaxKind.LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* CharacterCodes.openBrace */:\n pos++;\n return token = 1 /* SyntaxKind.OpenBraceToken */;\n case 125 /* CharacterCodes.closeBrace */:\n pos++;\n return token = 2 /* SyntaxKind.CloseBraceToken */;\n case 91 /* CharacterCodes.openBracket */:\n pos++;\n return token = 3 /* SyntaxKind.OpenBracketToken */;\n case 93 /* CharacterCodes.closeBracket */:\n pos++;\n return token = 4 /* SyntaxKind.CloseBracketToken */;\n case 58 /* CharacterCodes.colon */:\n pos++;\n return token = 6 /* SyntaxKind.ColonToken */;\n case 44 /* CharacterCodes.comma */:\n pos++;\n return token = 5 /* SyntaxKind.CommaToken */;\n // strings\n case 34 /* CharacterCodes.doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* SyntaxKind.StringLiteral */;\n // comments\n case 47 /* CharacterCodes.slash */:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* SyntaxKind.LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n pos += 2;\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n // numbers\n case 45 /* CharacterCodes.minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* CharacterCodes._0 */:\n case 49 /* CharacterCodes._1 */:\n case 50 /* CharacterCodes._2 */:\n case 51 /* CharacterCodes._3 */:\n case 52 /* CharacterCodes._4 */:\n case 53 /* CharacterCodes._5 */:\n case 54 /* CharacterCodes._6 */:\n case 55 /* CharacterCodes._7 */:\n case 56 /* CharacterCodes._8 */:\n case 57 /* CharacterCodes._9 */:\n value += scanNumber();\n return token = 11 /* SyntaxKind.NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n }\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* CharacterCodes.closeBrace */:\n case 93 /* CharacterCodes.closeBracket */:\n case 123 /* CharacterCodes.openBrace */:\n case 91 /* CharacterCodes.openBracket */:\n case 34 /* CharacterCodes.doubleQuote */:\n case 58 /* CharacterCodes.colon */:\n case 44 /* CharacterCodes.comma */:\n case 47 /* CharacterCodes.slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n let result;\n do {\n result = scanNext();\n } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n",
|
|
18
18
|
"export const cachedSpaces = new Array(20).fill(0).map((_, index) => {\n return ' '.repeat(index);\n});\nconst maxCachedValues = 200;\nexport const cachedBreakLinesWithSpaces = {\n ' ': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + ' '.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + ' '.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + ' '.repeat(index);\n }),\n },\n '\\t': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + '\\t'.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + '\\t'.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + '\\t'.repeat(index);\n }),\n }\n};\nexport const supportedEols = ['\\n', '\\r', '\\r\\n'];\n",
|
|
19
19
|
"/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner';\nimport { cachedSpaces, cachedBreakLinesWithSpaces, supportedEols } from './string-intern';\nexport function format(documentText, range, options) {\n let initialIndentLevel;\n let formatText;\n let formatTextStart;\n let rangeStart;\n let rangeEnd;\n if (range) {\n rangeStart = range.offset;\n rangeEnd = rangeStart + range.length;\n formatTextStart = rangeStart;\n while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n formatTextStart--;\n }\n let endOffset = rangeEnd;\n while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n endOffset++;\n }\n formatText = documentText.substring(formatTextStart, endOffset);\n initialIndentLevel = computeIndentLevel(formatText, options);\n }\n else {\n formatText = documentText;\n initialIndentLevel = 0;\n formatTextStart = 0;\n rangeStart = 0;\n rangeEnd = documentText.length;\n }\n const eol = getEOL(options, documentText);\n const eolFastPathSupported = supportedEols.includes(eol);\n let numberLineBreaks = 0;\n let indentLevel = 0;\n let indentValue;\n if (options.insertSpaces) {\n indentValue = cachedSpaces[options.tabSize || 4] ?? repeat(cachedSpaces[1], options.tabSize || 4);\n }\n else {\n indentValue = '\\t';\n }\n const indentType = indentValue === '\\t' ? '\\t' : ' ';\n let scanner = createScanner(formatText, false);\n let hasError = false;\n function newLinesAndIndent() {\n if (numberLineBreaks > 1) {\n return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n const amountOfSpaces = indentValue.length * (initialIndentLevel + indentLevel);\n if (!eolFastPathSupported || amountOfSpaces > cachedBreakLinesWithSpaces[indentType][eol].length) {\n return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n if (amountOfSpaces <= 0) {\n return eol;\n }\n return cachedBreakLinesWithSpaces[indentType][eol][amountOfSpaces];\n }\n function scanNext() {\n let token = scanner.scan();\n numberLineBreaks = 0;\n while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {\n if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {\n numberLineBreaks += 1;\n }\n else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {\n numberLineBreaks = 1;\n }\n token = scanner.scan();\n }\n hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;\n return token;\n }\n const editOperations = [];\n function addEdit(text, startOffset, endOffset) {\n if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {\n editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n }\n }\n let firstToken = scanNext();\n if (options.keepLines && numberLineBreaks > 0) {\n addEdit(repeat(eol, numberLineBreaks), 0, 0);\n }\n if (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n let initialIndent = (indentValue.length * initialIndentLevel < 20) && options.insertSpaces\n ? cachedSpaces[indentValue.length * initialIndentLevel]\n : repeat(indentValue, initialIndentLevel);\n addEdit(initialIndent, formatTextStart, firstTokenStart);\n }\n while (firstToken !== 17 /* SyntaxKind.EOF */) {\n let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n let secondToken = scanNext();\n let replaceContent = '';\n let needsLineBreak = false;\n while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n let commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(cachedSpaces[1], firstTokenEnd, commentTokenStart);\n firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;\n replaceContent = needsLineBreak ? newLinesAndIndent() : '';\n secondToken = scanNext();\n }\n if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {\n if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {\n if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n indentLevel--;\n }\n ;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {\n replaceContent = newLinesAndIndent();\n }\n else if (options.keepLines) {\n replaceContent = cachedSpaces[1];\n }\n }\n else {\n switch (firstToken) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n case 1 /* SyntaxKind.OpenBraceToken */:\n indentLevel++;\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 5 /* SyntaxKind.CommaToken */:\n if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 12 /* SyntaxKind.LineCommentTrivia */:\n replaceContent = newLinesAndIndent();\n break;\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 6 /* SyntaxKind.ColonToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (!needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n break;\n case 10 /* SyntaxKind.StringLiteral */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {\n replaceContent = '';\n }\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n case 8 /* SyntaxKind.TrueKeyword */:\n case 9 /* SyntaxKind.FalseKeyword */:\n case 11 /* SyntaxKind.NumericLiteral */:\n case 2 /* SyntaxKind.CloseBraceToken */:\n case 4 /* SyntaxKind.CloseBracketToken */:\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {\n replaceContent = cachedSpaces[1];\n }\n else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {\n hasError = true;\n }\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n hasError = true;\n break;\n }\n if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {\n replaceContent = newLinesAndIndent();\n }\n }\n if (secondToken === 17 /* SyntaxKind.EOF */) {\n if (options.keepLines && numberLineBreaks > 0) {\n replaceContent = newLinesAndIndent();\n }\n else {\n replaceContent = options.insertFinalNewline ? eol : '';\n }\n }\n const secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n firstToken = secondToken;\n }\n return editOperations;\n}\nfunction repeat(s, count) {\n let result = '';\n for (let i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\nfunction computeIndentLevel(content, options) {\n let i = 0;\n let nChars = 0;\n const tabSize = options.tabSize || 4;\n while (i < content.length) {\n let ch = content.charAt(i);\n if (ch === cachedSpaces[1]) {\n nChars++;\n }\n else if (ch === '\\t') {\n nChars += tabSize;\n }\n else {\n break;\n }\n i++;\n }\n return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n for (let i = 0; i < text.length; i++) {\n const ch = text.charAt(i);\n if (ch === '\\r') {\n if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n return '\\r\\n';\n }\n return '\\r';\n }\n else if (ch === '\\n') {\n return '\\n';\n }\n }\n return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n",
|
|
@@ -27,33 +27,35 @@
|
|
|
27
27
|
"import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n",
|
|
28
28
|
"export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n",
|
|
29
29
|
"import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n",
|
|
30
|
-
"/**\n * Registry & Component Schemas\n *\n * Zod schemas with fail-fast validation following the 5 Laws of Elegant Defense.\n * Uses Cargo-style union types: string for simple defaults, object for full control.\n */\n\nimport { isAbsolute, normalize } from \"node:path\"\nimport { z } from \"zod\"\nimport { ValidationError } from \"../utils/errors\"\n\n// =============================================================================\n// NPM SPECIFIER SCHEMA\n// =============================================================================\n\n/**\n * npm specifier schema for \"npm:package@version\" syntax.\n * Validates the format at boundary (Law 2: Parse Don't Validate).\n *\n * Valid formats:\n * - npm:lodash\n * - npm:lodash@4.0.0\n * - npm:@scope/pkg\n * - npm:@scope/pkg@1.0.0\n */\nexport const npmSpecifierSchema = z\n\t.string()\n\t.refine((val) => val.startsWith(\"npm:\"), {\n\t\tmessage: 'npm specifier must start with \"npm:\" prefix',\n\t})\n\t.refine(\n\t\t(val) => {\n\t\t\tconst remainder = val.slice(4)\n\t\t\t// Must have something after npm:\n\t\t\tif (!remainder) return false\n\t\t\t// Cannot contain path traversal\n\t\t\tif (remainder.includes(\"..\") || remainder.includes(\"/./\")) return false\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Invalid npm specifier format\",\n\t\t},\n\t)\n\nexport type NpmSpecifier = z.infer<typeof npmSpecifierSchema>\n\n// =============================================================================\n// OPENCODE NAMING CONSTRAINTS (from OpenCode docs)\n// =============================================================================\n\n/**\n * OpenCode name schema following official constraints:\n * - 1-64 characters\n * - Lowercase alphanumeric with single hyphen separators\n * - Cannot start or end with hyphen\n * - Cannot contain consecutive hyphens\n *\n * Regex: ^[a-z0-9]+(-[a-z0-9]+)*$\n */\nexport const openCodeNameSchema = z\n\t.string()\n\t.min(1, \"Name cannot be empty\")\n\t.max(64, \"Name cannot exceed 64 characters\")\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t\"Must be lowercase alphanumeric with single hyphen separators (e.g., 'my-component', 'my-plugin'). Cannot start/end with hyphen or have consecutive hyphens.\",\n\t})\n\n/**\n * Namespace schema - valid identifier for registry namespace\n * Same rules as openCodeNameSchema\n */\nexport const namespaceSchema = openCodeNameSchema\n\n/**\n * Qualified component reference: namespace/component\n * Used in CLI commands and lockfile keys\n */\nexport const qualifiedComponentSchema = z\n\t.string()\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t'Must be in format \"namespace/component\" (e.g., \"kdco/researcher\"). Both parts must be lowercase alphanumeric with hyphens.',\n\t})\n\n/**\n * Parse a qualified component reference into namespace and component.\n * Throws Error if format is invalid (Law 4: Fail Fast, Fail Loud).\n */\nexport function parseQualifiedComponent(ref: string): { namespace: string; component: string } {\n\tif (!ref.includes(\"/\")) {\n\t\tthrow new Error(`Invalid component reference: \"${ref}\". Use format: namespace/component`)\n\t}\n\tconst [namespace, component] = ref.split(\"/\")\n\tif (!namespace || !component) {\n\t\tthrow new Error(\n\t\t\t`Invalid component reference: \"${ref}\". Both namespace and component are required.`,\n\t\t)\n\t}\n\treturn { namespace, component }\n}\n\n/**\n * Create a qualified component reference from namespace and component\n */\nexport function createQualifiedComponent(namespace: string, component: string): string {\n\treturn `${namespace}/${component}`\n}\n\n/**\n * Dependency reference schema (Cargo-style):\n * - Bare string: \"utils\" -> same namespace (implicit)\n * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n */\nexport const dependencyRefSchema = z.string().refine(\n\t(dep) => {\n\t\t// Either a bare component name or a qualified namespace/component\n\t\tconst barePattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\n\t\tconst qualifiedPattern = /^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/\n\t\treturn barePattern.test(dep) || qualifiedPattern.test(dep)\n\t},\n\t{\n\t\tmessage:\n\t\t\t'Dependency must be either a bare name (e.g., \"utils\") or qualified (e.g., \"acme/utils\")',\n\t},\n)\n\n// =============================================================================\n// FILE TARGET SCHEMAS\n// =============================================================================\n\nexport const componentTypeSchema = z.enum([\n\t\"ocx:agent\",\n\t\"ocx:skill\",\n\t\"ocx:plugin\",\n\t\"ocx:command\",\n\t\"ocx:tool\",\n\t\"ocx:bundle\",\n\t\"ocx:profile\",\n])\n\nexport type ComponentType = z.infer<typeof componentTypeSchema>\n\n/** Valid target paths for profile files (flat structure, no .opencode/ prefix) */\nexport const profileTargetPathSchema = z.enum([\"ocx.jsonc\", \"opencode.jsonc\", \"AGENTS.md\"])\n\nexport type ProfileTargetPath = z.infer<typeof profileTargetPathSchema>\n\n/**\n * Target path must be inside .opencode/ with valid subdirectory\n */\nexport const targetPathSchema = z\n\t.string()\n\t.refine((path) => path.startsWith(\".opencode/\"), {\n\t\tmessage: 'Target path must start with \".opencode/\"',\n\t})\n\t.refine(\n\t\t(path) => {\n\t\t\tconst parts = path.split(\"/\")\n\t\t\tconst dir = parts[1]\n\t\t\tif (!dir) return false\n\t\t\treturn [\"agent\", \"skill\", \"plugin\", \"command\", \"tool\", \"philosophy\"].includes(dir)\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t'Target must be in a valid directory: \".opencode/{agent|skill|plugin|command|tool|philosophy}/...\"',\n\t\t},\n\t)\n\n// =============================================================================\n// MCP SERVER SCHEMA (Cargo-style: string URL or full object)\n// =============================================================================\n\n/**\n * OAuth configuration for MCP servers.\n * Supports advanced OAuth flows with custom client configuration.\n */\nexport const oauthConfigSchema = z.object({\n\t/** OAuth client ID */\n\tclientId: z.string().optional(),\n\t/** OAuth scopes to request */\n\tscopes: z.array(z.string()).optional(),\n\t/** OAuth authorization URL */\n\tauthUrl: z.string().optional(),\n\t/** OAuth token URL */\n\ttokenUrl: z.string().optional(),\n})\n\nexport type OAuthConfig = z.infer<typeof oauthConfigSchema>\n\n/**\n * Full MCP server configuration object\n */\nexport const mcpServerObjectSchema = z\n\t.object({\n\t\ttype: z.enum([\"remote\", \"local\"]),\n\t\t/** Server URL (relaxed validation - allows non-URL strings) */\n\t\turl: z.string().optional(),\n\t\t/**\n\t\t * Command to run for local servers.\n\t\t * Can be a single string (e.g., \"npx foo\") or array (e.g., [\"npx\", \"foo\"])\n\t\t */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\tenvironment: z.record(z.string()).optional(),\n\t\theaders: z.record(z.string()).optional(),\n\t\t/**\n\t\t * OAuth configuration.\n\t\t * - true: Enable OAuth with defaults\n\t\t * - object: Enable OAuth with custom configuration\n\t\t */\n\t\toauth: z.union([z.boolean(), oauthConfigSchema]).optional(),\n\t\tenabled: z.boolean().default(true),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\tif (data.type === \"remote\" && !data.url) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (data.type === \"local\" && !data.command) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Remote MCP servers require 'url', local servers require 'command'\",\n\t\t},\n\t)\n\nexport type McpServer = z.infer<typeof mcpServerObjectSchema>\n\n/**\n * Cargo-style MCP server reference:\n * - String: URL shorthand for remote server (e.g., \"https://mcp.example.com\")\n * - Object: Full configuration\n */\nexport const mcpServerRefSchema = z.union([z.string(), mcpServerObjectSchema])\n\nexport type McpServerRef = z.infer<typeof mcpServerRefSchema>\n\n// =============================================================================\n// COMPONENT FILE SCHEMA (Cargo-style: string path or full object)\n// =============================================================================\n\n/**\n * Full file configuration object (profile-aware).\n * Target validation is deferred to normalizeFile() where component type is known.\n * For profiles: flat paths (ocx.jsonc, opencode.jsonc, AGENTS.md) or .opencode/... for embedded deps\n * For other types: must be .opencode/...\n */\nexport const componentFileObjectSchema = z.object({\n\t/** Source path in registry */\n\tpath: z.string().min(1, \"File path cannot be empty\"),\n\t/** Target path - validation deferred to normalizeFile() for type-aware checking */\n\ttarget: z.string().min(1, \"Target path cannot be empty\"),\n})\n\nexport type ComponentFileObject = z.infer<typeof componentFileObjectSchema>\n\n/**\n * Cargo-style file schema:\n * - String: Path shorthand, target auto-inferred (e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\")\n * - Object: Full configuration with explicit target\n */\nexport const componentFileSchema = z.union([\n\tz.string().min(1, \"File path cannot be empty\"),\n\tcomponentFileObjectSchema,\n])\n\nexport type ComponentFile = z.infer<typeof componentFileSchema>\n\n// =============================================================================\n// OPENCODE CONFIG BLOCK SCHEMA\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Provider Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Provider configuration for AI model providers.\n * Supports custom API endpoints, headers, and environment variables.\n */\nexport const providerConfigSchema = z\n\t.object({\n\t\t/** API base URL */\n\t\tapi: z.string().optional(),\n\t\t/** Custom headers */\n\t\theaders: z.record(z.string()).optional(),\n\t\t/** Environment variables for API keys */\n\t\tenv: z.record(z.string()).optional(),\n\t\t/** Whether provider is enabled */\n\t\tenabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type ProviderConfig = z.infer<typeof providerConfigSchema>\n\n// -----------------------------------------------------------------------------\n// LSP, Formatter, Command Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Language Server Protocol configuration.\n * Defines how to start and configure LSP servers.\n */\nexport const lspConfigSchema = z\n\t.object({\n\t\t/** Command to run (string or array of args) */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\t/** Whether LSP is enabled */\n\t\tenabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type LspConfig = z.infer<typeof lspConfigSchema>\n\n/**\n * Formatter configuration for code formatting.\n * Defines the command and file patterns to format.\n */\nexport const formatterConfigSchema = z\n\t.object({\n\t\t/** Command to run (string or array of args) */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\t/** Glob pattern for files to format */\n\t\tglob: z.string().optional(),\n\t})\n\t.passthrough()\n\nexport type FormatterConfig = z.infer<typeof formatterConfigSchema>\n\n/**\n * Custom command configuration.\n * Defines executable commands with descriptions.\n */\nexport const commandConfigSchema = z\n\t.object({\n\t\t/** Command description */\n\t\tdescription: z.string().optional(),\n\t\t/** The command to run */\n\t\trun: z.string().optional(),\n\t})\n\t.passthrough()\n\nexport type CommandConfig = z.infer<typeof commandConfigSchema>\n\n// -----------------------------------------------------------------------------\n// TUI, Server, Keybind, Watcher Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * TUI (Terminal User Interface) configuration.\n */\nexport const tuiConfigSchema = z\n\t.object({\n\t\t/** Disable TUI features */\n\t\tdisabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type TuiConfig = z.infer<typeof tuiConfigSchema>\n\n/**\n * Server configuration for OpenCode server mode.\n */\nexport const serverConfigSchema = z\n\t.object({\n\t\t/** Server host */\n\t\thost: z.string().optional(),\n\t\t/** Server port */\n\t\tport: z.number().optional(),\n\t})\n\t.passthrough()\n\nexport type ServerConfig = z.infer<typeof serverConfigSchema>\n\n/**\n * Keybind configuration - maps action names to key combinations.\n */\nexport const keybindConfigSchema = z.record(z.string())\n\nexport type KeybindConfig = z.infer<typeof keybindConfigSchema>\n\n/**\n * File watcher configuration for automatic reloads.\n */\nexport const watcherConfigSchema = z\n\t.object({\n\t\t/** Patterns to include */\n\t\tinclude: z.array(z.string()).optional(),\n\t\t/** Patterns to exclude */\n\t\texclude: z.array(z.string()).optional(),\n\t})\n\t.passthrough()\n\nexport type WatcherConfig = z.infer<typeof watcherConfigSchema>\n\n// -----------------------------------------------------------------------------\n// Agent Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Agent configuration options (matches opencode.json agent schema)\n */\nexport const agentConfigSchema = z.object({\n\t/** Per-agent model override */\n\tmodel: z.string().optional(),\n\n\t/** Agent description for self-documentation */\n\tdescription: z.string().optional(),\n\n\t/** Maximum iterations/steps for the agent (must be positive integer) */\n\tsteps: z.number().int().positive().optional(),\n\n\t/** @deprecated Use `steps` instead (must be positive integer) */\n\tmaxSteps: z.number().int().positive().optional(),\n\n\t/** Agent mode */\n\tmode: z.enum([\"primary\", \"subagent\", \"all\"]).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Sampling temperature (provider-specific limits) */\n\ttemperature: z.number().optional(),\n\n\t/** Nucleus sampling parameter */\n\ttop_p: z.number().optional(),\n\n\t/** Additional prompt text */\n\tprompt: z.string().optional(),\n\n\t/**\n\t * Permission matrix for agent operations.\n\t * Use `{ \"*\": \"deny\" }` for bash to enable read-only agent detection.\n\t */\n\tpermission: z\n\t\t.record(z.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))]))\n\t\t.optional(),\n\n\t/** UI color for the agent */\n\tcolor: z.string().optional(),\n\n\t/** Whether the agent is disabled */\n\tdisable: z.boolean().optional(),\n\n\t/** Custom options for the agent */\n\toptions: z.record(z.any()).optional(),\n})\n\nexport type AgentConfig = z.infer<typeof agentConfigSchema>\n\n/**\n * Permission configuration schema (matches opencode.json permission schema)\n * Supports both simple values and per-path patterns\n */\nexport const permissionConfigSchema = z\n\t.object({\n\t\t/**\n\t\t * Bash command permissions.\n\t\t * - Use `\"allow\"` for full bash access\n\t\t * - Use `{ \"*\": \"deny\" }` to deny all bash (required for read-only agent detection)\n\t\t * - Use patterns like `{ \"git *\": \"allow\", \"*\": \"deny\" }` for partial access\n\t\t */\n\t\tbash: z\n\t\t\t.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))])\n\t\t\t.optional(),\n\t\t/** File edit permissions */\n\t\tedit: z\n\t\t\t.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))])\n\t\t\t.optional(),\n\t\t/** MCP server permissions */\n\t\tmcp: z.record(z.enum([\"ask\", \"allow\", \"deny\"])).optional(),\n\t})\n\t.catchall(z.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))]))\n\nexport type PermissionConfig = z.infer<typeof permissionConfigSchema>\n\n/**\n * OpenCode configuration block\n * Mirrors opencode.json structure exactly for 1:1 mapping\n */\nexport const opencodeConfigSchema = z.object({\n\t/** JSON Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** UI theme name */\n\ttheme: z.string().optional(),\n\n\t/** Logging level */\n\tlogLevel: z.string().optional(),\n\n\t/** Username for display */\n\tusername: z.string().optional(),\n\n\t/** Default model to use */\n\tmodel: z.string().optional(),\n\n\t/** Small/fast model for simple tasks */\n\tsmall_model: z.string().optional(),\n\n\t/** Default agent to use */\n\tdefault_agent: z.string().optional(),\n\n\t/** MCP servers (matches opencode.json 'mcp' field) */\n\tmcp: z.record(mcpServerRefSchema).optional(),\n\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugin: z.array(z.string()).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Per-agent configuration */\n\tagent: z.record(agentConfigSchema).optional(),\n\n\t/** Global instructions to append */\n\tinstructions: z.array(z.string()).optional(),\n\n\t/** Permission configuration */\n\tpermission: permissionConfigSchema.optional(),\n\n\t/** Provider configurations */\n\tprovider: z.record(providerConfigSchema).optional(),\n\n\t/** LSP configurations */\n\tlsp: z.record(lspConfigSchema).optional(),\n\n\t/** Formatter configurations */\n\tformatter: z.record(formatterConfigSchema).optional(),\n\n\t/** Custom command configurations */\n\tcommand: z.record(commandConfigSchema).optional(),\n\n\t/** TUI configuration */\n\ttui: tuiConfigSchema.optional(),\n\n\t/** Server configuration */\n\tserver: serverConfigSchema.optional(),\n\n\t/** Keybind configuration */\n\tkeybind: keybindConfigSchema.optional(),\n\n\t/** File watcher configuration */\n\twatcher: watcherConfigSchema.optional(),\n\n\t/** Enable auto-updates */\n\tauto_update: z.boolean().optional(),\n\n\t/** Enable auto-compaction */\n\tauto_compact: z.boolean().optional(),\n\n\t/** Share configuration (boolean or URL string) */\n\tshare: z.union([z.boolean(), z.string()]).optional(),\n})\n\nexport type OpencodeConfig = z.infer<typeof opencodeConfigSchema>\n\n// =============================================================================\n// COMPONENT MANIFEST SCHEMA\n// =============================================================================\n\nexport const componentManifestSchema = z.object({\n\t/** Component name (clean, no namespace prefix) */\n\tname: openCodeNameSchema,\n\n\t/** Component type */\n\ttype: componentTypeSchema,\n\n\t/** Human-readable description */\n\tdescription: z.string().min(1).max(1024),\n\n\t/**\n\t * Files to install (Cargo-style)\n\t * - String: \"plugin/foo.ts\" -> auto-infers target as \".opencode/plugin/foo.ts\"\n\t * - Object: { path: \"...\", target: \"...\" } for explicit control\n\t */\n\tfiles: z.array(componentFileSchema),\n\n\t/**\n\t * Dependencies on other components (Cargo-style)\n\t * - Bare string: \"utils\" -> same namespace (implicit)\n\t * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n\t */\n\tdependencies: z.array(dependencyRefSchema).default([]),\n\n\t/** NPM dependencies to install (supports pkg@version syntax) */\n\tnpmDependencies: z.array(z.string()).optional(),\n\n\t/** NPM dev dependencies to install (supports pkg@version syntax) */\n\tnpmDevDependencies: z.array(z.string()).optional(),\n\n\t/**\n\t * OpenCode configuration to merge into opencode.json\n\t * Use this for: mcp servers, plugins, tools, agent config, instructions, permissions\n\t */\n\topencode: opencodeConfigSchema.optional(),\n})\n\nexport type ComponentManifest = z.infer<typeof componentManifestSchema>\n\n// =============================================================================\n// NORMALIZER FUNCTIONS (Parse, Don't Validate - Law 2)\n// =============================================================================\n\n/**\n * Validates path doesn't contain traversal attacks.\n * Fails fast with descriptive error (Law 4: Fail Fast, Fail Loud).\n * Uses path.normalize for proper traversal detection.\n * @param filePath - The path to validate\n * @throws ValidationError if path contains traversal patterns\n */\nexport function validateSafePath(filePath: string): void {\n\tif (isAbsolute(filePath)) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - absolute paths not allowed`)\n\t}\n\tif (filePath.startsWith(\"~\")) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - home directory paths not allowed`)\n\t}\n\tconst normalized = normalize(filePath)\n\tif (normalized.startsWith(\"..\")) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - path traversal not allowed`)\n\t}\n}\n\n/**\n * Infer target path from source path\n * e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\"\n */\nexport function inferTargetPath(sourcePath: string): string {\n\treturn `.opencode/${sourcePath}`\n}\n\n/**\n * Validate a file target path based on component type.\n * - Profile types: allow flat paths (ocx.jsonc, etc.) OR .opencode/... for embedded deps\n * - Other types: require .opencode/... paths\n * @param target - The target path to validate\n * @param componentType - The component type for context-aware validation\n * @throws ValidationError if target is invalid for the component type\n */\nexport function validateFileTarget(target: string, componentType?: ComponentType): void {\n\tconst isProfile = componentType === \"ocx:profile\"\n\n\tif (isProfile) {\n\t\t// Profiles allow flat profile files OR .opencode/... for embedded dependencies\n\t\tconst isProfileFile = profileTargetPathSchema.safeParse(target).success\n\t\tconst isOpencodeTarget = target.startsWith(\".opencode/\")\n\n\t\tif (!isProfileFile && !isOpencodeTarget) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid profile target: \"${target}\". ` +\n\t\t\t\t\t`Must be a profile file (ocx.jsonc, opencode.jsonc, AGENTS.md) or start with \".opencode/\"`,\n\t\t\t)\n\t\t}\n\n\t\t// If .opencode target, validate the subdirectory\n\t\tif (isOpencodeTarget) {\n\t\t\tconst parseResult = targetPathSchema.safeParse(target)\n\t\t\tif (!parseResult.success) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Invalid embedded target: \"${target}\". ${parseResult.error.errors[0]?.message}`,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Non-profile types require .opencode/... paths\n\t\tconst parseResult = targetPathSchema.safeParse(target)\n\t\tif (!parseResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid target: \"${target}\". ${parseResult.error.errors[0]?.message}`,\n\t\t\t)\n\t\t}\n\t}\n}\n\n/**\n * Normalize a file entry from string shorthand to full object.\n * Handles profile type differently - uses flat paths without .opencode/ prefix.\n * @param file - The file entry to normalize\n * @param componentType - Component type to determine path behavior and validation\n */\nexport function normalizeFile(\n\tfile: ComponentFile,\n\tcomponentType?: ComponentType,\n): ComponentFileObject {\n\tconst isProfile = componentType === \"ocx:profile\"\n\n\tif (typeof file === \"string\") {\n\t\tvalidateSafePath(file)\n\t\tconst target = isProfile ? file : inferTargetPath(file)\n\t\tvalidateFileTarget(target, componentType)\n\t\treturn {\n\t\t\tpath: file,\n\t\t\ttarget,\n\t\t}\n\t}\n\n\tvalidateSafePath(file.path)\n\tvalidateSafePath(file.target)\n\tvalidateFileTarget(file.target, componentType)\n\treturn file\n}\n\n/**\n * Normalize an MCP server entry from URL shorthand to full object\n */\nexport function normalizeMcpServer(server: McpServerRef): McpServer {\n\tif (typeof server === \"string\") {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\turl: server,\n\t\t\tenabled: true,\n\t\t}\n\t}\n\treturn server\n}\n\n/**\n * Normalized opencode config with MCP servers expanded\n */\nexport interface NormalizedOpencodeConfig extends Omit<OpencodeConfig, \"mcp\"> {\n\tmcp?: Record<string, McpServer>\n}\n\n/**\n * Normalized component manifest with all shorthands expanded\n */\nexport interface NormalizedComponentManifest extends Omit<ComponentManifest, \"files\" | \"opencode\"> {\n\tfiles: ComponentFileObject[]\n\topencode?: NormalizedOpencodeConfig\n}\n\n/**\n * Normalize all Cargo-style shorthands in a component manifest\n * Call this at the parse boundary to get fully-typed objects\n */\nexport function normalizeComponentManifest(\n\tmanifest: ComponentManifest,\n): NormalizedComponentManifest {\n\t// Normalize MCP servers inside opencode block\n\tlet normalizedOpencode: NormalizedOpencodeConfig | undefined\n\tif (manifest.opencode) {\n\t\t// Destructure to exclude mcp from spread (Law 2: Parse, Don't Validate)\n\t\t// Only include mcp if present - avoid setting undefined (which would overwrite during mergeDeep)\n\t\tconst { mcp, ...rest } = manifest.opencode\n\t\tnormalizedOpencode = {\n\t\t\t...rest,\n\t\t\t...(mcp && {\n\t\t\t\tmcp: Object.fromEntries(\n\t\t\t\t\tObject.entries(mcp).map(([name, server]) => [name, normalizeMcpServer(server)]),\n\t\t\t\t),\n\t\t\t}),\n\t\t}\n\t}\n\n\treturn {\n\t\t...manifest,\n\t\tfiles: manifest.files.map((file) => normalizeFile(file, manifest.type)),\n\t\topencode: normalizedOpencode,\n\t}\n}\n\n// =============================================================================\n// REGISTRY SCHEMA\n// =============================================================================\n\n/**\n * Semver regex for version validation\n */\nconst semverRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/\n\nexport const registrySchema = z\n\t.object({\n\t\t/** Registry name */\n\t\tname: z.string().min(1, \"Registry name cannot be empty\"),\n\n\t\t/** Registry namespace - used in qualified component references (e.g., kdco/researcher) */\n\t\tnamespace: namespaceSchema,\n\n\t\t/** Registry version (semver) */\n\t\tversion: z.string().regex(semverRegex, {\n\t\t\tmessage: \"Version must be valid semver (e.g., '1.0.0', '2.1.0-beta.1')\",\n\t\t}),\n\n\t\t/** Registry author */\n\t\tauthor: z.string().min(1, \"Author cannot be empty\"),\n\n\t\t/** Minimum OpenCode version required (semver, e.g., \"1.0.0\") */\n\t\topencode: z\n\t\t\t.string()\n\t\t\t.regex(semverRegex, {\n\t\t\t\tmessage: \"OpenCode version must be valid semver\",\n\t\t\t})\n\t\t\t.optional(),\n\n\t\t/** Minimum OCX CLI version required (semver, e.g., \"1.0.0\") */\n\t\tocx: z\n\t\t\t.string()\n\t\t\t.regex(semverRegex, {\n\t\t\t\tmessage: \"OCX version must be valid semver\",\n\t\t\t})\n\t\t\t.optional(),\n\n\t\t/** Components in this registry */\n\t\tcomponents: z.array(componentManifestSchema),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\t// All dependencies must either:\n\t\t\t// 1. Be a bare name that exists in this registry\n\t\t\t// 2. Be a qualified cross-namespace reference (validated at install time)\n\t\t\tconst componentNames = new Set(data.components.map((c) => c.name))\n\t\t\tfor (const component of data.components) {\n\t\t\t\tfor (const dep of component.dependencies) {\n\t\t\t\t\t// Only validate bare (same-namespace) dependencies\n\t\t\t\t\tif (!dep.includes(\"/\") && !componentNames.has(dep)) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Bare dependencies must reference components that exist in the registry. Use qualified references (e.g., 'other-registry/component') for cross-namespace dependencies.\",\n\t\t},\n\t)\n\nexport type Registry = z.infer<typeof registrySchema>\n\n// =============================================================================\n// PACKUMENT SCHEMA (npm-style versioned component)\n// =============================================================================\n\nexport const packumentSchema = z.object({\n\t/** Component name */\n\tname: openCodeNameSchema,\n\n\t/** Latest version */\n\t\"dist-tags\": z.object({\n\t\tlatest: z.string(),\n\t}),\n\n\t/** All versions */\n\tversions: z.record(componentManifestSchema),\n})\n\nexport type Packument = z.infer<typeof packumentSchema>\n\n// =============================================================================\n// REGISTRY INDEX SCHEMA\n// =============================================================================\n\nexport const registryIndexSchema = z.object({\n\t/** Registry metadata */\n\tname: z.string(),\n\tnamespace: namespaceSchema,\n\tversion: z.string(),\n\tauthor: z.string(),\n\n\t/** Minimum OpenCode version required */\n\topencode: z\n\t\t.string()\n\t\t.regex(semverRegex, {\n\t\t\tmessage: \"OpenCode version must be valid semver\",\n\t\t})\n\t\t.optional(),\n\n\t/** Minimum OCX CLI version required */\n\tocx: z\n\t\t.string()\n\t\t.regex(semverRegex, {\n\t\t\tmessage: \"OCX version must be valid semver\",\n\t\t})\n\t\t.optional(),\n\n\t/** Component summaries for search */\n\tcomponents: z.array(\n\t\tz.object({\n\t\t\tname: openCodeNameSchema,\n\t\t\ttype: componentTypeSchema,\n\t\t\tdescription: z.string(),\n\t\t}),\n\t),\n})\n\nexport type RegistryIndex = z.infer<typeof registryIndexSchema>\n",
|
|
31
|
-
"/**\n * Custom error classes with error codes\n * Following fail-fast philosophy - clear, actionable errors\n */\n\nexport type ErrorCode =\n\t| \"NOT_FOUND\"\n\t| \"NETWORK_ERROR\"\n\t| \"CONFIG_ERROR\"\n\t| \"VALIDATION_ERROR\"\n\t| \"CONFLICT\"\n\t| \"PERMISSION_ERROR\"\n\t| \"INTEGRITY_ERROR\"\n\t| \"UPDATE_ERROR\"\n\nexport const EXIT_CODES = {\n\tSUCCESS: 0,\n\tGENERAL: 1,\n\tNOT_FOUND: 66,\n\tNETWORK: 69,\n\tCONFIG: 78,\n\tINTEGRITY: 1, // Exit code for integrity failures\n\tCONFLICT: 6,\n} as const\n\nexport class OCXError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly code: ErrorCode,\n\t\tpublic readonly exitCode: number = EXIT_CODES.GENERAL,\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"OCXError\"\n\t}\n}\n\nexport class NotFoundError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"NOT_FOUND\", EXIT_CODES.NOT_FOUND)\n\t\tthis.name = \"NotFoundError\"\n\t}\n}\n\nexport class NetworkError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"NETWORK_ERROR\", EXIT_CODES.NETWORK)\n\t\tthis.name = \"NetworkError\"\n\t}\n}\n\nexport class ConfigError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"ConfigError\"\n\t}\n}\n\nexport class ValidationError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"VALIDATION_ERROR\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"ValidationError\"\n\t}\n}\n\nexport class ConflictError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.CONFLICT)\n\t\tthis.name = \"ConflictError\"\n\t}\n}\n\nexport class IntegrityError extends OCXError {\n\tconstructor(component: string
|
|
30
|
+
"/**\n * Registry & Component Schemas\n *\n * Zod schemas with fail-fast validation following the 5 Laws of Elegant Defense.\n * Uses Cargo-style union types: string for simple defaults, object for full control.\n */\n\nimport { isAbsolute, normalize } from \"node:path\"\nimport { z } from \"zod\"\nimport { ValidationError } from \"../utils/errors\"\nimport { PathValidationError, validatePath } from \"../utils/path-security\"\n\n// =============================================================================\n// NPM SPECIFIER SCHEMA\n// =============================================================================\n\n/**\n * npm specifier schema for \"npm:package@version\" syntax.\n * Validates the format at boundary (Law 2: Parse Don't Validate).\n *\n * Valid formats:\n * - npm:lodash\n * - npm:lodash@4.0.0\n * - npm:@scope/pkg\n * - npm:@scope/pkg@1.0.0\n */\nexport const npmSpecifierSchema = z\n\t.string()\n\t.refine((val) => val.startsWith(\"npm:\"), {\n\t\tmessage: 'npm specifier must start with \"npm:\" prefix',\n\t})\n\t.refine(\n\t\t(val) => {\n\t\t\tconst remainder = val.slice(4)\n\t\t\t// Must have something after npm:\n\t\t\tif (!remainder) return false\n\t\t\t// Cannot contain path traversal\n\t\t\tif (remainder.includes(\"..\") || remainder.includes(\"/./\")) return false\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Invalid npm specifier format\",\n\t\t},\n\t)\n\nexport type NpmSpecifier = z.infer<typeof npmSpecifierSchema>\n\n// =============================================================================\n// OPENCODE NAMING CONSTRAINTS (from OpenCode docs)\n// =============================================================================\n\n/**\n * OpenCode name schema following official constraints:\n * - 1-64 characters\n * - Lowercase alphanumeric with single hyphen separators\n * - Cannot start or end with hyphen\n * - Cannot contain consecutive hyphens\n *\n * Regex: ^[a-z0-9]+(-[a-z0-9]+)*$\n */\nexport const openCodeNameSchema = z\n\t.string()\n\t.min(1, \"Name cannot be empty\")\n\t.max(64, \"Name cannot exceed 64 characters\")\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t\"Must be lowercase alphanumeric with single hyphen separators (e.g., 'my-component', 'my-plugin'). Cannot start/end with hyphen or have consecutive hyphens.\",\n\t})\n\n/**\n * Namespace schema - valid identifier for registry namespace\n * Same rules as openCodeNameSchema\n */\nexport const namespaceSchema = openCodeNameSchema\n\n/**\n * Qualified component reference: namespace/component\n * Used in CLI commands and lockfile keys\n */\nexport const qualifiedComponentSchema = z\n\t.string()\n\t.regex(/^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/, {\n\t\tmessage:\n\t\t\t'Must be in format \"namespace/component\" (e.g., \"kdco/researcher\"). Both parts must be lowercase alphanumeric with hyphens.',\n\t})\n\n/**\n * Parse a qualified component reference into namespace and component.\n * Throws Error if format is invalid (Law 4: Fail Fast, Fail Loud).\n */\nexport function parseQualifiedComponent(ref: string): { namespace: string; component: string } {\n\tif (!ref.includes(\"/\")) {\n\t\tthrow new Error(`Invalid component reference: \"${ref}\". Use format: namespace/component`)\n\t}\n\tconst [namespace, component] = ref.split(\"/\")\n\tif (!namespace || !component) {\n\t\tthrow new Error(\n\t\t\t`Invalid component reference: \"${ref}\". Both namespace and component are required.`,\n\t\t)\n\t}\n\treturn { namespace, component }\n}\n\n/**\n * Create a qualified component reference from namespace and component\n */\nexport function createQualifiedComponent(namespace: string, component: string): string {\n\treturn `${namespace}/${component}`\n}\n\n/**\n * Dependency reference schema (Cargo-style):\n * - Bare string: \"utils\" -> same namespace (implicit)\n * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n */\nexport const dependencyRefSchema = z.string().refine(\n\t(dep) => {\n\t\t// Either a bare component name or a qualified namespace/component\n\t\tconst barePattern = /^[a-z0-9]+(-[a-z0-9]+)*$/\n\t\tconst qualifiedPattern = /^[a-z0-9]+(-[a-z0-9]+)*\\/[a-z0-9]+(-[a-z0-9]+)*$/\n\t\treturn barePattern.test(dep) || qualifiedPattern.test(dep)\n\t},\n\t{\n\t\tmessage:\n\t\t\t'Dependency must be either a bare name (e.g., \"utils\") or qualified (e.g., \"acme/utils\")',\n\t},\n)\n\n// =============================================================================\n// FILE TARGET SCHEMAS\n// =============================================================================\n\nexport const componentTypeSchema = z.enum([\n\t\"ocx:agent\",\n\t\"ocx:skill\",\n\t\"ocx:plugin\",\n\t\"ocx:command\",\n\t\"ocx:tool\",\n\t\"ocx:bundle\",\n\t\"ocx:profile\",\n])\n\nexport type ComponentType = z.infer<typeof componentTypeSchema>\n\n/** Reserved targets for profiles (installer-owned files) */\nconst PROFILE_RESERVED_TARGETS = new Set([\"ocx.lock\", \".opencode\"])\n\n/**\n * Target path must be inside .opencode/ with valid subdirectory\n */\nexport const targetPathSchema = z\n\t.string()\n\t.refine((path) => path.startsWith(\".opencode/\"), {\n\t\tmessage: 'Target path must start with \".opencode/\"',\n\t})\n\t.refine(\n\t\t(path) => {\n\t\t\tconst parts = path.split(\"/\")\n\t\t\tconst dir = parts[1]\n\t\t\tif (!dir) return false\n\t\t\treturn [\"agent\", \"skill\", \"plugin\", \"command\", \"tool\", \"philosophy\"].includes(dir)\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t'Target must be in a valid directory: \".opencode/{agent|skill|plugin|command|tool|philosophy}/...\"',\n\t\t},\n\t)\n\n// =============================================================================\n// MCP SERVER SCHEMA (Cargo-style: string URL or full object)\n// =============================================================================\n\n/**\n * OAuth configuration for MCP servers.\n * Supports advanced OAuth flows with custom client configuration.\n */\nexport const oauthConfigSchema = z.object({\n\t/** OAuth client ID */\n\tclientId: z.string().optional(),\n\t/** OAuth scopes to request */\n\tscopes: z.array(z.string()).optional(),\n\t/** OAuth authorization URL */\n\tauthUrl: z.string().optional(),\n\t/** OAuth token URL */\n\ttokenUrl: z.string().optional(),\n})\n\nexport type OAuthConfig = z.infer<typeof oauthConfigSchema>\n\n/**\n * Full MCP server configuration object\n */\nexport const mcpServerObjectSchema = z\n\t.object({\n\t\ttype: z.enum([\"remote\", \"local\"]),\n\t\t/** Server URL (relaxed validation - allows non-URL strings) */\n\t\turl: z.string().optional(),\n\t\t/**\n\t\t * Command to run for local servers.\n\t\t * Can be a single string (e.g., \"npx foo\") or array (e.g., [\"npx\", \"foo\"])\n\t\t */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\tenvironment: z.record(z.string()).optional(),\n\t\theaders: z.record(z.string()).optional(),\n\t\t/**\n\t\t * OAuth configuration.\n\t\t * - true: Enable OAuth with defaults\n\t\t * - object: Enable OAuth with custom configuration\n\t\t */\n\t\toauth: z.union([z.boolean(), oauthConfigSchema]).optional(),\n\t\tenabled: z.boolean().default(true),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\tif (data.type === \"remote\" && !data.url) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (data.type === \"local\" && !data.command) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Remote MCP servers require 'url', local servers require 'command'\",\n\t\t},\n\t)\n\nexport type McpServer = z.infer<typeof mcpServerObjectSchema>\n\n/**\n * Cargo-style MCP server reference:\n * - String: URL shorthand for remote server (e.g., \"https://mcp.example.com\")\n * - Object: Full configuration\n */\nexport const mcpServerRefSchema = z.union([z.string(), mcpServerObjectSchema])\n\nexport type McpServerRef = z.infer<typeof mcpServerRefSchema>\n\n// =============================================================================\n// COMPONENT FILE SCHEMA (Cargo-style: string path or full object)\n// =============================================================================\n\n/**\n * Full file configuration object (profile-aware).\n * Target validation is deferred to normalizeFile() where component type is known.\n * For profiles: flat paths (ocx.jsonc, opencode.jsonc, AGENTS.md) or .opencode/... for embedded deps\n * For other types: must be .opencode/...\n */\nexport const componentFileObjectSchema = z.object({\n\t/** Source path in registry */\n\tpath: z.string().min(1, \"File path cannot be empty\"),\n\t/** Target path - validation deferred to normalizeFile() for type-aware checking */\n\ttarget: z.string().min(1, \"Target path cannot be empty\"),\n})\n\nexport type ComponentFileObject = z.infer<typeof componentFileObjectSchema>\n\n/**\n * Cargo-style file schema:\n * - String: Path shorthand, target auto-inferred (e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\")\n * - Object: Full configuration with explicit target\n */\nexport const componentFileSchema = z.union([\n\tz.string().min(1, \"File path cannot be empty\"),\n\tcomponentFileObjectSchema,\n])\n\nexport type ComponentFile = z.infer<typeof componentFileSchema>\n\n// =============================================================================\n// OPENCODE CONFIG BLOCK SCHEMA\n// =============================================================================\n\n// -----------------------------------------------------------------------------\n// Provider Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Provider configuration for AI model providers.\n * Supports custom API endpoints, headers, and environment variables.\n */\nexport const providerConfigSchema = z\n\t.object({\n\t\t/** API base URL */\n\t\tapi: z.string().optional(),\n\t\t/** Custom headers */\n\t\theaders: z.record(z.string()).optional(),\n\t\t/** Environment variables for API keys */\n\t\tenv: z.record(z.string()).optional(),\n\t\t/** Whether provider is enabled */\n\t\tenabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type ProviderConfig = z.infer<typeof providerConfigSchema>\n\n// -----------------------------------------------------------------------------\n// LSP, Formatter, Command Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Language Server Protocol configuration.\n * Defines how to start and configure LSP servers.\n */\nexport const lspConfigSchema = z\n\t.object({\n\t\t/** Command to run (string or array of args) */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\t/** Whether LSP is enabled */\n\t\tenabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type LspConfig = z.infer<typeof lspConfigSchema>\n\n/**\n * Formatter configuration for code formatting.\n * Defines the command and file patterns to format.\n */\nexport const formatterConfigSchema = z\n\t.object({\n\t\t/** Command to run (string or array of args) */\n\t\tcommand: z.union([z.string(), z.array(z.string())]).optional(),\n\t\t/** Glob pattern for files to format */\n\t\tglob: z.string().optional(),\n\t})\n\t.passthrough()\n\nexport type FormatterConfig = z.infer<typeof formatterConfigSchema>\n\n/**\n * Custom command configuration.\n * Defines executable commands with descriptions.\n */\nexport const commandConfigSchema = z\n\t.object({\n\t\t/** Command description */\n\t\tdescription: z.string().optional(),\n\t\t/** The command to run */\n\t\trun: z.string().optional(),\n\t})\n\t.passthrough()\n\nexport type CommandConfig = z.infer<typeof commandConfigSchema>\n\n// -----------------------------------------------------------------------------\n// TUI, Server, Keybind, Watcher Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * TUI (Terminal User Interface) configuration.\n */\nexport const tuiConfigSchema = z\n\t.object({\n\t\t/** Disable TUI features */\n\t\tdisabled: z.boolean().optional(),\n\t})\n\t.passthrough()\n\nexport type TuiConfig = z.infer<typeof tuiConfigSchema>\n\n/**\n * Server configuration for OpenCode server mode.\n */\nexport const serverConfigSchema = z\n\t.object({\n\t\t/** Server host */\n\t\thost: z.string().optional(),\n\t\t/** Server port */\n\t\tport: z.number().optional(),\n\t})\n\t.passthrough()\n\nexport type ServerConfig = z.infer<typeof serverConfigSchema>\n\n/**\n * Keybind configuration - maps action names to key combinations.\n */\nexport const keybindConfigSchema = z.record(z.string())\n\nexport type KeybindConfig = z.infer<typeof keybindConfigSchema>\n\n/**\n * File watcher configuration for automatic reloads.\n */\nexport const watcherConfigSchema = z\n\t.object({\n\t\t/** Patterns to include */\n\t\tinclude: z.array(z.string()).optional(),\n\t\t/** Patterns to exclude */\n\t\texclude: z.array(z.string()).optional(),\n\t})\n\t.passthrough()\n\nexport type WatcherConfig = z.infer<typeof watcherConfigSchema>\n\n// -----------------------------------------------------------------------------\n// Agent Configuration\n// -----------------------------------------------------------------------------\n\n/**\n * Agent configuration options (matches opencode.json agent schema)\n */\nexport const agentConfigSchema = z.object({\n\t/** Per-agent model override */\n\tmodel: z.string().optional(),\n\n\t/** Agent description for self-documentation */\n\tdescription: z.string().optional(),\n\n\t/** Maximum iterations/steps for the agent (must be positive integer) */\n\tsteps: z.number().int().positive().optional(),\n\n\t/** @deprecated Use `steps` instead (must be positive integer) */\n\tmaxSteps: z.number().int().positive().optional(),\n\n\t/** Agent mode */\n\tmode: z.enum([\"primary\", \"subagent\", \"all\"]).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Sampling temperature (provider-specific limits) */\n\ttemperature: z.number().optional(),\n\n\t/** Nucleus sampling parameter */\n\ttop_p: z.number().optional(),\n\n\t/** Additional prompt text */\n\tprompt: z.string().optional(),\n\n\t/**\n\t * Permission matrix for agent operations.\n\t * Use `{ \"*\": \"deny\" }` for bash to enable read-only agent detection.\n\t */\n\tpermission: z\n\t\t.record(z.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))]))\n\t\t.optional(),\n\n\t/** UI color for the agent */\n\tcolor: z.string().optional(),\n\n\t/** Whether the agent is disabled */\n\tdisable: z.boolean().optional(),\n\n\t/** Custom options for the agent */\n\toptions: z.record(z.any()).optional(),\n})\n\nexport type AgentConfig = z.infer<typeof agentConfigSchema>\n\n/**\n * Permission configuration schema (matches opencode.json permission schema)\n * Supports both simple values and per-path patterns\n */\nexport const permissionConfigSchema = z\n\t.object({\n\t\t/**\n\t\t * Bash command permissions.\n\t\t * - Use `\"allow\"` for full bash access\n\t\t * - Use `{ \"*\": \"deny\" }` to deny all bash (required for read-only agent detection)\n\t\t * - Use patterns like `{ \"git *\": \"allow\", \"*\": \"deny\" }` for partial access\n\t\t */\n\t\tbash: z\n\t\t\t.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))])\n\t\t\t.optional(),\n\t\t/** File edit permissions */\n\t\tedit: z\n\t\t\t.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))])\n\t\t\t.optional(),\n\t\t/** MCP server permissions */\n\t\tmcp: z.record(z.enum([\"ask\", \"allow\", \"deny\"])).optional(),\n\t})\n\t.catchall(z.union([z.enum([\"ask\", \"allow\", \"deny\"]), z.record(z.enum([\"ask\", \"allow\", \"deny\"]))]))\n\nexport type PermissionConfig = z.infer<typeof permissionConfigSchema>\n\n/**\n * OpenCode configuration block\n * Mirrors opencode.json structure exactly for 1:1 mapping\n */\nexport const opencodeConfigSchema = z.object({\n\t/** JSON Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** UI theme name */\n\ttheme: z.string().optional(),\n\n\t/** Logging level */\n\tlogLevel: z.string().optional(),\n\n\t/** Username for display */\n\tusername: z.string().optional(),\n\n\t/** Default model to use */\n\tmodel: z.string().optional(),\n\n\t/** Small/fast model for simple tasks */\n\tsmall_model: z.string().optional(),\n\n\t/** Default agent to use */\n\tdefault_agent: z.string().optional(),\n\n\t/** MCP servers (matches opencode.json 'mcp' field) */\n\tmcp: z.record(mcpServerRefSchema).optional(),\n\n\t/** NPM plugin packages to add to opencode.json 'plugin' array */\n\tplugin: z.array(z.string()).optional(),\n\n\t/** Tool enable/disable patterns */\n\ttools: z.record(z.boolean()).optional(),\n\n\t/** Per-agent configuration */\n\tagent: z.record(agentConfigSchema).optional(),\n\n\t/** Global instructions to append */\n\tinstructions: z.array(z.string()).optional(),\n\n\t/** Permission configuration */\n\tpermission: permissionConfigSchema.optional(),\n\n\t/** Provider configurations */\n\tprovider: z.record(providerConfigSchema).optional(),\n\n\t/** LSP configurations */\n\tlsp: z.record(lspConfigSchema).optional(),\n\n\t/** Formatter configurations */\n\tformatter: z.record(formatterConfigSchema).optional(),\n\n\t/** Custom command configurations */\n\tcommand: z.record(commandConfigSchema).optional(),\n\n\t/** TUI configuration */\n\ttui: tuiConfigSchema.optional(),\n\n\t/** Server configuration */\n\tserver: serverConfigSchema.optional(),\n\n\t/** Keybind configuration */\n\tkeybind: keybindConfigSchema.optional(),\n\n\t/** File watcher configuration */\n\twatcher: watcherConfigSchema.optional(),\n\n\t/** Enable auto-updates */\n\tauto_update: z.boolean().optional(),\n\n\t/** Enable auto-compaction */\n\tauto_compact: z.boolean().optional(),\n\n\t/** Share configuration (boolean or URL string) */\n\tshare: z.union([z.boolean(), z.string()]).optional(),\n})\n\nexport type OpencodeConfig = z.infer<typeof opencodeConfigSchema>\n\n// =============================================================================\n// COMPONENT MANIFEST SCHEMA\n// =============================================================================\n\nexport const componentManifestSchema = z.object({\n\t/** Component name (clean, no namespace prefix) */\n\tname: openCodeNameSchema,\n\n\t/** Component type */\n\ttype: componentTypeSchema,\n\n\t/** Human-readable description */\n\tdescription: z.string().min(1).max(1024),\n\n\t/**\n\t * Files to install (Cargo-style)\n\t * - String: \"plugin/foo.ts\" -> auto-infers target as \".opencode/plugin/foo.ts\"\n\t * - Object: { path: \"...\", target: \"...\" } for explicit control\n\t */\n\tfiles: z.array(componentFileSchema),\n\n\t/**\n\t * Dependencies on other components (Cargo-style)\n\t * - Bare string: \"utils\" -> same namespace (implicit)\n\t * - Qualified: \"acme/utils\" -> cross-namespace (explicit)\n\t */\n\tdependencies: z.array(dependencyRefSchema).default([]),\n\n\t/** NPM dependencies to install (supports pkg@version syntax) */\n\tnpmDependencies: z.array(z.string()).optional(),\n\n\t/** NPM dev dependencies to install (supports pkg@version syntax) */\n\tnpmDevDependencies: z.array(z.string()).optional(),\n\n\t/**\n\t * OpenCode configuration to merge into opencode.json\n\t * Use this for: mcp servers, plugins, tools, agent config, instructions, permissions\n\t */\n\topencode: opencodeConfigSchema.optional(),\n})\n\nexport type ComponentManifest = z.infer<typeof componentManifestSchema>\n\n// =============================================================================\n// NORMALIZER FUNCTIONS (Parse, Don't Validate - Law 2)\n// =============================================================================\n\n/**\n * Validates path doesn't contain traversal attacks.\n * Fails fast with descriptive error (Law 4: Fail Fast, Fail Loud).\n * Uses path.normalize for proper traversal detection.\n * @param filePath - The path to validate\n * @throws ValidationError if path contains traversal patterns\n */\nexport function validateSafePath(filePath: string): void {\n\tif (isAbsolute(filePath)) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - absolute paths not allowed`)\n\t}\n\tif (filePath.startsWith(\"~\")) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - home directory paths not allowed`)\n\t}\n\tconst normalized = normalize(filePath)\n\tif (normalized.startsWith(\"..\")) {\n\t\tthrow new ValidationError(`Invalid path: \"${filePath}\" - path traversal not allowed`)\n\t}\n}\n\n/**\n * Infer target path from source path\n * e.g., \"plugin/foo.ts\" -> \".opencode/plugin/foo.ts\"\n */\nexport function inferTargetPath(sourcePath: string): string {\n\treturn `.opencode/${sourcePath}`\n}\n\n/**\n * Validate a file target path based on component type.\n * - Profile types: allow flat paths (ocx.jsonc, etc.) OR .opencode/... for embedded deps\n * - Other types: require .opencode/... paths\n * @param target - The target path to validate\n * @param componentType - The component type for context-aware validation\n * @throws ValidationError if target is invalid for the component type\n */\nexport function validateFileTarget(target: string, componentType?: ComponentType): void {\n\tconst isProfile = componentType === \"ocx:profile\"\n\n\tif (isProfile) {\n\t\t// Check reserved names\n\t\tif (PROFILE_RESERVED_TARGETS.has(target)) {\n\t\t\tthrow new ValidationError(`Target \"${target}\" is reserved for installer use`)\n\t\t}\n\n\t\t// Validate path safety using battle-tested validation\n\t\ttry {\n\t\t\tvalidatePath(\"/dummy/base\", target) // Just validates the path structure\n\t\t} catch (error) {\n\t\t\tif (error instanceof PathValidationError) {\n\t\t\t\tthrow new ValidationError(`Invalid profile target \"${target}\": ${error.message}`)\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\n\t\treturn // No further restrictions for profiles - trust the user\n\t} else {\n\t\t// Non-profile types require .opencode/... paths\n\t\tconst parseResult = targetPathSchema.safeParse(target)\n\t\tif (!parseResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid target: \"${target}\". ${parseResult.error.errors[0]?.message}`,\n\t\t\t)\n\t\t}\n\t}\n}\n\n/**\n * Normalize a file entry from string shorthand to full object.\n * Handles profile type differently - uses flat paths without .opencode/ prefix.\n * @param file - The file entry to normalize\n * @param componentType - Component type to determine path behavior and validation\n */\nexport function normalizeFile(\n\tfile: ComponentFile,\n\tcomponentType?: ComponentType,\n): ComponentFileObject {\n\tconst isProfile = componentType === \"ocx:profile\"\n\n\tif (typeof file === \"string\") {\n\t\tvalidateSafePath(file)\n\t\tconst target = isProfile ? file : inferTargetPath(file)\n\t\tvalidateFileTarget(target, componentType)\n\t\treturn {\n\t\t\tpath: file,\n\t\t\ttarget,\n\t\t}\n\t}\n\n\tvalidateSafePath(file.path)\n\tvalidateSafePath(file.target)\n\tvalidateFileTarget(file.target, componentType)\n\treturn file\n}\n\n/**\n * Normalize an MCP server entry from URL shorthand to full object\n */\nexport function normalizeMcpServer(server: McpServerRef): McpServer {\n\tif (typeof server === \"string\") {\n\t\treturn {\n\t\t\ttype: \"remote\",\n\t\t\turl: server,\n\t\t\tenabled: true,\n\t\t}\n\t}\n\treturn server\n}\n\n/**\n * Normalized opencode config with MCP servers expanded\n */\nexport interface NormalizedOpencodeConfig extends Omit<OpencodeConfig, \"mcp\"> {\n\tmcp?: Record<string, McpServer>\n}\n\n/**\n * Normalized component manifest with all shorthands expanded\n */\nexport interface NormalizedComponentManifest extends Omit<ComponentManifest, \"files\" | \"opencode\"> {\n\tfiles: ComponentFileObject[]\n\topencode?: NormalizedOpencodeConfig\n}\n\n/**\n * Normalize all Cargo-style shorthands in a component manifest\n * Call this at the parse boundary to get fully-typed objects\n */\nexport function normalizeComponentManifest(\n\tmanifest: ComponentManifest,\n): NormalizedComponentManifest {\n\t// Normalize MCP servers inside opencode block\n\tlet normalizedOpencode: NormalizedOpencodeConfig | undefined\n\tif (manifest.opencode) {\n\t\t// Destructure to exclude mcp from spread (Law 2: Parse, Don't Validate)\n\t\t// Only include mcp if present - avoid setting undefined (which would overwrite during mergeDeep)\n\t\tconst { mcp, ...rest } = manifest.opencode\n\t\tnormalizedOpencode = {\n\t\t\t...rest,\n\t\t\t...(mcp && {\n\t\t\t\tmcp: Object.fromEntries(\n\t\t\t\t\tObject.entries(mcp).map(([name, server]) => [name, normalizeMcpServer(server)]),\n\t\t\t\t),\n\t\t\t}),\n\t\t}\n\t}\n\n\treturn {\n\t\t...manifest,\n\t\tfiles: manifest.files.map((file) => normalizeFile(file, manifest.type)),\n\t\topencode: normalizedOpencode,\n\t}\n}\n\n// =============================================================================\n// REGISTRY SCHEMA\n// =============================================================================\n\n/**\n * Semver regex for version validation\n */\nconst semverRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/\n\nexport const registrySchema = z\n\t.object({\n\t\t/** Registry name */\n\t\tname: z.string().min(1, \"Registry name cannot be empty\"),\n\n\t\t/** Registry namespace - used in qualified component references (e.g., kdco/researcher) */\n\t\tnamespace: namespaceSchema,\n\n\t\t/** Registry version (semver) */\n\t\tversion: z.string().regex(semverRegex, {\n\t\t\tmessage: \"Version must be valid semver (e.g., '1.0.0', '2.1.0-beta.1')\",\n\t\t}),\n\n\t\t/** Registry author */\n\t\tauthor: z.string().min(1, \"Author cannot be empty\"),\n\n\t\t/** Minimum OpenCode version required (semver, e.g., \"1.0.0\") */\n\t\topencode: z\n\t\t\t.string()\n\t\t\t.regex(semverRegex, {\n\t\t\t\tmessage: \"OpenCode version must be valid semver\",\n\t\t\t})\n\t\t\t.optional(),\n\n\t\t/** Minimum OCX CLI version required (semver, e.g., \"1.0.0\") */\n\t\tocx: z\n\t\t\t.string()\n\t\t\t.regex(semverRegex, {\n\t\t\t\tmessage: \"OCX version must be valid semver\",\n\t\t\t})\n\t\t\t.optional(),\n\n\t\t/** Components in this registry */\n\t\tcomponents: z.array(componentManifestSchema),\n\t})\n\t.refine(\n\t\t(data) => {\n\t\t\t// All dependencies must either:\n\t\t\t// 1. Be a bare name that exists in this registry\n\t\t\t// 2. Be a qualified cross-namespace reference (validated at install time)\n\t\t\tconst componentNames = new Set(data.components.map((c) => c.name))\n\t\t\tfor (const component of data.components) {\n\t\t\t\tfor (const dep of component.dependencies) {\n\t\t\t\t\t// Only validate bare (same-namespace) dependencies\n\t\t\t\t\tif (!dep.includes(\"/\") && !componentNames.has(dep)) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage:\n\t\t\t\t\"Bare dependencies must reference components that exist in the registry. Use qualified references (e.g., 'other-registry/component') for cross-namespace dependencies.\",\n\t\t},\n\t)\n\nexport type Registry = z.infer<typeof registrySchema>\n\n// =============================================================================\n// PACKUMENT SCHEMA (npm-style versioned component)\n// =============================================================================\n\nexport const packumentSchema = z.object({\n\t/** Component name */\n\tname: openCodeNameSchema,\n\n\t/** Latest version */\n\t\"dist-tags\": z.object({\n\t\tlatest: z.string(),\n\t}),\n\n\t/** All versions */\n\tversions: z.record(componentManifestSchema),\n})\n\nexport type Packument = z.infer<typeof packumentSchema>\n\n// =============================================================================\n// REGISTRY INDEX SCHEMA\n// =============================================================================\n\nexport const registryIndexSchema = z.object({\n\t/** Registry metadata */\n\tname: z.string(),\n\tnamespace: namespaceSchema,\n\tversion: z.string(),\n\tauthor: z.string(),\n\n\t/** Minimum OpenCode version required */\n\topencode: z\n\t\t.string()\n\t\t.regex(semverRegex, {\n\t\t\tmessage: \"OpenCode version must be valid semver\",\n\t\t})\n\t\t.optional(),\n\n\t/** Minimum OCX CLI version required */\n\tocx: z\n\t\t.string()\n\t\t.regex(semverRegex, {\n\t\t\tmessage: \"OCX version must be valid semver\",\n\t\t})\n\t\t.optional(),\n\n\t/** Component summaries for search */\n\tcomponents: z.array(\n\t\tz.object({\n\t\t\tname: openCodeNameSchema,\n\t\t\ttype: componentTypeSchema,\n\t\t\tdescription: z.string(),\n\t\t}),\n\t),\n})\n\nexport type RegistryIndex = z.infer<typeof registryIndexSchema>\n",
|
|
31
|
+
"/**\n * Custom error classes with error codes\n * Following fail-fast philosophy - clear, actionable errors\n */\n\nexport type ErrorCode =\n\t| \"NOT_FOUND\"\n\t| \"NETWORK_ERROR\"\n\t| \"CONFIG_ERROR\"\n\t| \"VALIDATION_ERROR\"\n\t| \"CONFLICT\"\n\t| \"PERMISSION_ERROR\"\n\t| \"INTEGRITY_ERROR\"\n\t| \"UPDATE_ERROR\"\n\nexport const EXIT_CODES = {\n\tSUCCESS: 0,\n\tGENERAL: 1,\n\tNOT_FOUND: 66,\n\tNETWORK: 69,\n\tCONFIG: 78,\n\tINTEGRITY: 1, // Exit code for integrity failures\n\tCONFLICT: 6,\n} as const\n\nexport class OCXError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly code: ErrorCode,\n\t\tpublic readonly exitCode: number = EXIT_CODES.GENERAL,\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"OCXError\"\n\t}\n}\n\nexport class NotFoundError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"NOT_FOUND\", EXIT_CODES.NOT_FOUND)\n\t\tthis.name = \"NotFoundError\"\n\t}\n}\n\nexport class NetworkError extends OCXError {\n\tpublic readonly url?: string\n\tpublic readonly status?: number\n\tpublic readonly statusText?: string\n\n\tconstructor(message: string, options?: { url?: string; status?: number; statusText?: string }) {\n\t\tsuper(message, \"NETWORK_ERROR\", EXIT_CODES.NETWORK)\n\t\tthis.name = \"NetworkError\"\n\t\tthis.url = options?.url\n\t\tthis.status = options?.status\n\t\tthis.statusText = options?.statusText\n\t}\n}\n\nexport class ConfigError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"ConfigError\"\n\t}\n}\n\nexport class ValidationError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"VALIDATION_ERROR\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"ValidationError\"\n\t}\n}\n\nexport class ConflictError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.CONFLICT)\n\t\tthis.name = \"ConflictError\"\n\t}\n}\n\nexport class IntegrityError extends OCXError {\n\tconstructor(\n\t\tpublic readonly component: string,\n\t\tpublic readonly expected: string,\n\t\tpublic readonly found: string,\n\t) {\n\t\tconst message =\n\t\t\t`Integrity verification failed for \"${component}\"\\n` +\n\t\t\t` Expected: ${expected}\\n` +\n\t\t\t` Found: ${found}\\n\\n` +\n\t\t\t`The registry content has changed since this component was locked.\\n` +\n\t\t\t`Use 'ocx update ${component}' to intentionally update this component.`\n\t\tsuper(message, \"INTEGRITY_ERROR\", EXIT_CODES.INTEGRITY)\n\t\tthis.name = \"IntegrityError\"\n\t}\n}\n\nexport class SelfUpdateError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"UPDATE_ERROR\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"SelfUpdateError\"\n\t}\n}\n\nexport class OcxConfigError extends OCXError {\n\tconstructor(message: string) {\n\t\tsuper(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"OcxConfigError\"\n\t}\n}\n\n// =============================================================================\n// PROFILE ERRORS\n// =============================================================================\n\nexport class ProfileNotFoundError extends OCXError {\n\tconstructor(public readonly profile: string) {\n\t\tsuper(`Profile \"${profile}\" not found`, \"NOT_FOUND\", EXIT_CODES.NOT_FOUND)\n\t\tthis.name = \"ProfileNotFoundError\"\n\t}\n}\n\nexport class ProfileExistsError extends OCXError {\n\tconstructor(\n\t\tpublic readonly profile: string,\n\t\thint?: string,\n\t) {\n\t\tconst message = hint\n\t\t\t? `Profile \"${profile}\" already exists. ${hint}`\n\t\t\t: `Profile \"${profile}\" already exists.`\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.CONFLICT)\n\t\tthis.name = \"ProfileExistsError\"\n\t}\n}\n\nexport class RegistryExistsError extends OCXError {\n\tconstructor(\n\t\tpublic readonly registryName: string,\n\t\tpublic readonly existingUrl: string,\n\t\tpublic readonly newUrl: string,\n\t\tpublic readonly targetLabel?: string,\n\t) {\n\t\tconst target = targetLabel ? ` in ${targetLabel}` : \"\"\n\t\tconst message =\n\t\t\t`Registry \"${registryName}\" already exists${target}.\\n` +\n\t\t\t` Current: ${existingUrl}\\n` +\n\t\t\t` New: ${newUrl}\\n\\n` +\n\t\t\t`Use --force to overwrite.`\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.CONFLICT)\n\t\tthis.name = \"RegistryExistsError\"\n\t}\n}\n\nexport class InvalidProfileNameError extends OCXError {\n\tconstructor(\n\t\tpublic readonly profile: string,\n\t\tpublic readonly reason: string,\n\t) {\n\t\tsuper(`Invalid profile name \"${profile}\": ${reason}`, \"VALIDATION_ERROR\", EXIT_CODES.GENERAL)\n\t\tthis.name = \"InvalidProfileNameError\"\n\t}\n}\n\nexport class ProfilesNotInitializedError extends OCXError {\n\tconstructor() {\n\t\tsuper(\n\t\t\t\"Profiles not initialized. Run 'ocx init --global' first.\",\n\t\t\t\"NOT_FOUND\",\n\t\t\tEXIT_CODES.NOT_FOUND,\n\t\t)\n\t\tthis.name = \"ProfilesNotInitializedError\"\n\t}\n}\n",
|
|
32
|
+
"import * as path from \"node:path\"\n\nexport class PathValidationError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly attemptedPath: string,\n\t\tpublic readonly reason: string,\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"PathValidationError\"\n\t}\n}\n\n// Windows reserved device names\nconst WINDOWS_RESERVED = new Set([\n\t\"CON\",\n\t\"PRN\",\n\t\"AUX\",\n\t\"NUL\",\n\t\"COM1\",\n\t\"COM2\",\n\t\"COM3\",\n\t\"COM4\",\n\t\"COM5\",\n\t\"COM6\",\n\t\"COM7\",\n\t\"COM8\",\n\t\"COM9\",\n\t\"LPT1\",\n\t\"LPT2\",\n\t\"LPT3\",\n\t\"LPT4\",\n\t\"LPT5\",\n\t\"LPT6\",\n\t\"LPT7\",\n\t\"LPT8\",\n\t\"LPT9\",\n])\n\n/**\n * Validates a path is safe to use within a base directory.\n * Adapted from Vercel Turborepo + pillarjs/resolve-path + Docker safepath.\n *\n * Security properties:\n * 1. No null bytes (prevents C-style string termination bypass)\n * 2. Must be relative (no absolute paths on any platform)\n * 3. No Windows drive letters or UNC paths\n * 4. No Windows reserved device names\n * 5. Unicode normalized (prevents combining character attacks)\n * 6. Backslash normalized (prevents mixed separator bypasses)\n * 7. Must stay within base directory after resolution\n *\n * @param basePath - The trusted base directory\n * @param userPath - The untrusted path to validate (should be relative)\n * @returns The safe, resolved absolute path\n * @throws {PathValidationError} If the path is unsafe\n */\nexport function validatePath(basePath: string, userPath: string): string {\n\t// 1. Null byte check (from pillarjs/resolve-path)\n\tif (userPath.includes(\"\\0\")) {\n\t\tthrow new PathValidationError(\"Path contains null bytes\", userPath, \"null_byte\")\n\t}\n\n\t// 2. Absolute path check - both POSIX and Windows (from resolve-path)\n\tif (path.isAbsolute(userPath) || path.win32.isAbsolute(userPath)) {\n\t\tthrow new PathValidationError(\"Path must be relative\", userPath, \"absolute_path\")\n\t}\n\n\t// 3. Windows drive letters and UNC paths\n\tif (/^[a-zA-Z]:/.test(userPath) || userPath.startsWith(\"\\\\\\\\\")) {\n\t\tthrow new PathValidationError(\"Path contains Windows absolute\", userPath, \"windows_absolute\")\n\t}\n\n\t// 4. Windows reserved names\n\tconst baseName = path.basename(userPath).toUpperCase().split(\".\")[0] ?? \"\"\n\tif (WINDOWS_RESERVED.has(baseName)) {\n\t\tthrow new PathValidationError(\"Path uses Windows reserved name\", userPath, \"windows_reserved\")\n\t}\n\n\t// 5. Unicode normalization (from Turborepo)\n\tconst normalized = userPath.normalize(\"NFC\")\n\n\t// 6. Separator normalization - backslash to forward slash\n\tconst unified = normalized.replace(/\\\\/g, \"/\")\n\n\t// 7. Resolve and check containment (from Turborepo + Docker)\n\tconst resolvedBase = path.resolve(basePath)\n\tconst resolvedCombined = path.resolve(resolvedBase, unified)\n\tconst relativePath = path.relative(resolvedBase, resolvedCombined)\n\n\t// 8. Escape detection\n\tif (\n\t\trelativePath.startsWith(\"../\") ||\n\t\trelativePath.startsWith(\"..\\\\\") ||\n\t\trelativePath === \"..\" ||\n\t\tpath.isAbsolute(relativePath)\n\t) {\n\t\tthrow new PathValidationError(\"Path escapes base directory\", userPath, \"path_traversal\")\n\t}\n\n\treturn resolvedCombined\n}\n\n/**\n * Boolean check for path safety.\n *\n * @param basePath - The trusted base directory\n * @param userPath - The untrusted path to validate\n * @returns true if the path is safe, false otherwise\n */\nexport function isPathSafe(basePath: string, userPath: string): boolean {\n\ttry {\n\t\tvalidatePath(basePath, userPath)\n\t\treturn true\n\t} catch {\n\t\treturn false\n\t}\n}\n",
|
|
32
33
|
"import { stat } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport { isAbsolute, join } from \"node:path\"\n\n/**\n * Returns the global OpenCode config directory path.\n * Uses XDG_CONFIG_HOME if set and absolute, otherwise ~/.config/opencode\n */\nexport function getGlobalConfigPath(): string {\n\tconst xdg = process.env.XDG_CONFIG_HOME\n\tconst base = xdg && isAbsolute(xdg) ? xdg : join(homedir(), \".config\")\n\treturn join(base, \"opencode\")\n}\n\n/**\n * Checks if the global OpenCode config directory exists.\n * Returns true if ~/.config/opencode/ (or XDG equivalent) is a directory.\n */\nexport async function globalDirectoryExists(): Promise<boolean> {\n\ttry {\n\t\tconst info = await stat(getGlobalConfigPath())\n\t\treturn info.isDirectory()\n\t} catch {\n\t\treturn false\n\t}\n}\n\n/**\n * Resolves a component target path for flattened or nested mode.\n * Registry targets start with \".opencode/\" which should be stripped for flattened installs\n * (global or profile mode).\n *\n * @param target - The target path from registry (e.g., \".opencode/plugin/foo.ts\")\n * @param isFlattened - Whether to strip the .opencode/ prefix (true for global/profile mode)\n * @returns Resolved path (e.g., \"plugin/foo.ts\" for flattened, unchanged for local)\n */\nexport function resolveTargetPath(target: string, isFlattened: boolean): string {\n\tif (isFlattened && target.startsWith(\".opencode/\")) {\n\t\treturn target.slice(\".opencode/\".length)\n\t}\n\treturn target\n}\n",
|
|
33
34
|
"/**\n * ConfigProvider Interface\n *\n * Abstract configuration provider pattern following the 5 Laws of Elegant Defense:\n * - Parse at boundary (async factory), sync getters (trusted internal state)\n * - Early exit via guard clauses in factories\n * - Fail fast with descriptive errors\n *\n * Implementations parse config at construction; getters are sync and pure.\n */\n\nimport { type OcxConfig, type RegistryConfig, readOcxConfig } from \"../schemas/config\"\nimport { ConfigError } from \"../utils/errors\"\nimport { getGlobalConfigPath, globalDirectoryExists } from \"../utils/paths\"\n\n// =============================================================================\n// INTERFACE\n// =============================================================================\n\n/**\n * Abstract configuration provider interface.\n * Implementations parse config at construction (boundary), getters are sync and pure.\n */\nexport interface ConfigProvider {\n\t/** Working directory for this config context */\n\treadonly cwd: string\n\n\t/** Get registries for this scope (sync - data already parsed at construction) */\n\tgetRegistries(): Record<string, RegistryConfig>\n\n\t/** Get component installation path */\n\tgetComponentPath(): string\n}\n\n// =============================================================================\n// LOCAL CONFIG PROVIDER\n// =============================================================================\n\n/**\n * Provides configuration from local project (ocx.jsonc).\n *\n * Use this when operating on a project with an ocx.jsonc file.\n */\nexport class LocalConfigProvider implements ConfigProvider {\n\treadonly cwd: string\n\tprivate readonly config: OcxConfig // immutable, parsed at construction\n\n\tprivate constructor(cwd: string, config: OcxConfig) {\n\t\tthis.cwd = cwd\n\t\tthis.config = config\n\t}\n\n\t/**\n\t * Require an initialized local config, throwing if not found.\n\t * Use this in commands that require a local ocx.jsonc to exist.\n\t *\n\t * @throws ConfigError if ocx.jsonc doesn't exist or is invalid\n\t * @returns LocalConfigProvider instance guaranteed to have valid config\n\t */\n\tstatic async requireInitialized(cwd: string): Promise<LocalConfigProvider> {\n\t\tconst config = await readOcxConfig(cwd)\n\n\t\t// Guard: No config file (Law 1: Early Exit)\n\t\tif (!config) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t\"No ocx.jsonc found in .opencode/ or project root. Run 'ocx init' first.\",\n\t\t\t)\n\t\t}\n\n\t\treturn new LocalConfigProvider(cwd, config)\n\t}\n\n\tgetRegistries(): Record<string, RegistryConfig> {\n\t\treturn this.config.registries\n\t}\n\n\tgetComponentPath(): string {\n\t\t// Default to .opencode directory for local projects\n\t\treturn \".opencode\"\n\t}\n\n\t/** Get the raw config for advanced use cases */\n\tgetConfig(): OcxConfig {\n\t\treturn this.config\n\t}\n}\n\n// =============================================================================\n// GLOBAL CONFIG PROVIDER\n// =============================================================================\n\n/**\n * Config provider for global OpenCode installations.\n * Installs to ~/.config/opencode/ without .opencode prefix.\n */\nexport class GlobalConfigProvider implements ConfigProvider {\n\treadonly cwd: string\n\tprivate readonly config: OcxConfig | null\n\n\tprivate constructor(basePath: string, config: OcxConfig | null) {\n\t\tthis.cwd = basePath\n\t\tthis.config = config\n\t}\n\n\t/**\n\t * Require an initialized global config, throwing if not found.\n\t * Use this in commands that require global OpenCode config to exist.\n\t *\n\t * @throws ConfigError if OpenCode hasn't been initialized globally\n\t * @returns GlobalConfigProvider instance guaranteed to have valid config\n\t */\n\tstatic async requireInitialized(): Promise<GlobalConfigProvider> {\n\t\tconst basePath = getGlobalConfigPath()\n\n\t\t// Guard: Global directory must exist (Law 1: Early Exit)\n\t\tif (!(await globalDirectoryExists())) {\n\t\t\tthrow new ConfigError(\"Global config not found. Run 'ocx init --global' first.\")\n\t\t}\n\n\t\t// Load ocx.jsonc if it exists (returns null if not found)\n\t\tconst config = await readOcxConfig(basePath)\n\n\t\treturn new GlobalConfigProvider(basePath, config)\n\t}\n\n\tgetRegistries(): Record<string, RegistryConfig> {\n\t\treturn this.config?.registries ?? {}\n\t}\n\n\t/**\n\t * Returns empty string - global installs have no .opencode prefix.\n\t */\n\tgetComponentPath(): string {\n\t\treturn \"\"\n\t}\n}\n",
|
|
34
35
|
"/**\n * ConfigResolver - Scope-Isolated Configuration Resolution\n *\n * OCX configs (ocx.jsonc) are ISOLATED per scope - they do NOT merge:\n * - Profile mode: ONLY profile's registries are available\n * - Local mode (no profile): ONLY local project's registries are available\n *\n * OpenCode configs (opencode.jsonc) DO merge: profile → local\n * This is controlled by exclude/include patterns from the profile.\n *\n * Security: This isolation prevents global registries from injecting\n * components into all projects.\n *\n * Follows the 5 Laws of Elegant Defense:\n * - Law 1 (Early Exit): Guard clauses handle edge cases at top\n * - Law 2 (Parse Don't Validate): Async factory parses at boundary, sync getters use trusted state\n * - Law 3 (Atomic Predictability): Pure resolve method, no hidden mutations\n * - Law 4 (Fail Fast): Throws ProfileNotFoundError for missing profiles\n * - Law 5 (Intentional Naming): Names describe exact purpose\n */\n\nimport { existsSync, statSync } from \"node:fs\"\nimport { join, relative } from \"node:path\"\nimport { Glob } from \"bun\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { ProfileManager } from \"../profile/manager\"\nimport {\n\tfindLocalConfigDir,\n\tLOCAL_CONFIG_DIR,\n\tOCX_CONFIG_FILE,\n\tOPENCODE_CONFIG_FILE,\n} from \"../profile/paths\"\nimport type { Profile } from \"../profile/schema\"\nimport type { RegistryConfig } from \"../schemas/config\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * The fully resolved configuration from all sources.\n */\nexport interface ResolvedConfig {\n\t/** Registries from active scope (profile OR local, never merged) */\n\tregistries: Record<string, RegistryConfig>\n\t/** Component installation path */\n\tcomponentPath: string\n\t/** Merged OpenCode config */\n\topencode: Record<string, unknown>\n\t/** Discovered instruction files (filtered by exclude/include) */\n\tinstructions: string[]\n\t/** The resolved profile name, or null if no profile */\n\tprofileName: string | null\n}\n\n/**\n * Source of a configuration value for debugging.\n */\nexport type ConfigSource = \"global-profile\" | \"local-config\" | \"local-opencode\" | \"default\"\n\n/**\n * Tracks where a configuration value originated.\n */\nexport interface ConfigOrigin {\n\tpath: string\n\tsource: ConfigSource\n}\n\n/**\n * Resolved configuration with origin tracking for debugging.\n */\nexport interface ResolvedConfigWithOrigin extends ResolvedConfig {\n\t/** Origin tracking for each setting (for debugging) */\n\torigins: Map<string, ConfigOrigin>\n}\n\n// =============================================================================\n// INSTRUCTION FILE DISCOVERY\n// =============================================================================\n\nconst INSTRUCTION_FILES = [\"AGENTS.md\", \"CLAUDE.md\", \"CONTEXT.md\"] as const\n\n/**\n * Find git root by looking for .git (file or directory).\n * Returns null if not in a git repo.\n */\nfunction detectGitRoot(startDir: string): string | null {\n\tlet currentDir = startDir\n\n\twhile (true) {\n\t\tconst gitPath = join(currentDir, \".git\")\n\t\tif (existsSync(gitPath)) {\n\t\t\treturn currentDir\n\t\t}\n\n\t\tconst parentDir = join(currentDir, \"..\")\n\t\tif (parentDir === currentDir) return null // filesystem root\n\t\tcurrentDir = parentDir\n\t}\n}\n\n/**\n * Discover instruction files by walking UP from projectDir to gitRoot.\n * Returns repo-relative paths, deepest first, alphabetical within each depth.\n */\nfunction discoverInstructionFiles(projectDir: string, gitRoot: string | null): string[] {\n\tconst root = gitRoot ?? projectDir\n\tconst discovered: string[] = []\n\tlet currentDir = projectDir\n\n\t// Walk up from projectDir to root\n\twhile (true) {\n\t\t// Check for each instruction file (alphabetical order)\n\t\tfor (const filename of INSTRUCTION_FILES) {\n\t\t\tconst filePath = join(currentDir, filename)\n\t\t\tif (existsSync(filePath) && statSync(filePath).isFile()) {\n\t\t\t\t// Store as relative to root\n\t\t\t\tconst relativePath = relative(root, filePath)\n\t\t\t\tdiscovered.push(relativePath)\n\t\t\t}\n\t\t}\n\n\t\t// Stop if we've reached the root\n\t\tif (currentDir === root) break\n\n\t\t// Move up one directory\n\t\tconst parentDir = join(currentDir, \"..\")\n\t\tif (parentDir === currentDir) break // filesystem root\n\t\tcurrentDir = parentDir\n\t}\n\n\t// Walk starts at deepest (projectDir) and goes up to root,\n\t// so discovered array is already in deepest-first order\n\treturn discovered\n}\n\n/**\n * Normalize a glob pattern by stripping leading \"./\" for consistent matching.\n * Discovered paths are repo-relative (e.g. \"src/AGENTS.md\") so patterns\n * with \"./\" prefix (e.g. \"./src/AGENTS.md\") need normalization to match.\n */\nfunction normalizePattern(pattern: string): string {\n\treturn pattern.startsWith(\"./\") ? pattern.slice(2) : pattern\n}\n\n/**\n * Filter files using TypeScript/Vite style include/exclude.\n * Include overrides exclude, order is preserved.\n */\nfunction filterByPatterns(files: string[], exclude: string[], include: string[]): string[] {\n\treturn files.filter((file) => {\n\t\t// Check include first - include overrides exclude\n\t\tfor (const pattern of include) {\n\t\t\tconst glob = new Glob(normalizePattern(pattern))\n\t\t\tif (glob.match(file)) return true\n\t\t}\n\n\t\t// Check exclude\n\t\tfor (const pattern of exclude) {\n\t\t\tconst glob = new Glob(normalizePattern(pattern))\n\t\t\tif (glob.match(file)) return false\n\t\t}\n\n\t\t// Not matched by include or exclude - keep it\n\t\treturn true\n\t})\n}\n\n// =============================================================================\n// CONFIG RESOLVER\n// =============================================================================\n\n/**\n * Configuration resolver with scope-isolated registries.\n *\n * Registries are scoped: profile registries OR local registries, never merged.\n * OpenCode config and instructions use additive merging across scopes.\n *\n * Use the static `create()` factory to construct; it parses at the boundary\n * so that `resolve()` and getter methods can be synchronous and pure.\n */\nexport class ConfigResolver {\n\tprivate readonly cwd: string\n\tprivate readonly profileName: string | null\n\tprivate readonly profile: Profile | null\n\tprivate readonly localConfigDir: string | null\n\n\t// Cached resolution (computed lazily, memoized)\n\tprivate cachedConfig: ResolvedConfig | null = null\n\n\tprivate constructor(\n\t\tcwd: string,\n\t\tprofileName: string | null,\n\t\tprofile: Profile | null,\n\t\tlocalConfigDir: string | null,\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.profileName = profileName\n\t\tthis.profile = profile\n\t\tthis.localConfigDir = localConfigDir\n\t}\n\n\t/**\n\t * Create a ConfigResolver for the given directory.\n\t *\n\t * Parses configuration at the boundary (Law 2: Parse Don't Validate).\n\t * After construction, all getter methods are synchronous.\n\t *\n\t * @param cwd - Working directory\n\t * @param options - Optional profile override\n\t * @throws ProfileNotFoundError if specified profile doesn't exist\n\t */\n\tstatic async create(cwd: string, options?: { profile?: string }): Promise<ConfigResolver> {\n\t\tconst manager = ProfileManager.create()\n\n\t\t// Resolve profile using priority: options.profile > OCX_PROFILE env > \"default\"\n\t\tlet profileName: string | null = null\n\t\tlet profile: Profile | null = null\n\n\t\tif (await manager.isInitialized()) {\n\t\t\ttry {\n\t\t\t\tprofileName = await manager.resolveProfile(options?.profile)\n\t\t\t\tprofile = await manager.get(profileName)\n\t\t\t} catch {\n\t\t\t\t// No profile resolved - that's OK, we'll just use base configs\n\t\t\t\tprofileName = null\n\t\t\t\tprofile = null\n\t\t\t}\n\t\t}\n\n\t\t// Find local config directory\n\t\tconst localConfigDir = findLocalConfigDir(cwd)\n\n\t\treturn new ConfigResolver(cwd, profileName, profile, localConfigDir)\n\t}\n\n\t/**\n\t * Resolve configuration with registry isolation.\n\t *\n\t * Registries: Uses profile's OR local's (isolated, not merged)\n\t * OpenCode config: Additively merged (profile + local if not excluded)\n\t *\n\t * Uses memoization - first call computes, subsequent calls return cached result.\n\t * Pure function (Law 3: Atomic Predictability) - same instance always returns same result.\n\t */\n\tresolve(): ResolvedConfig {\n\t\t// Return cached if available\n\t\tif (this.cachedConfig) {\n\t\t\treturn this.cachedConfig\n\t\t}\n\n\t\t// 1. Start with defaults\n\t\tlet registries: Record<string, RegistryConfig> = {}\n\t\tlet componentPath = LOCAL_CONFIG_DIR\n\t\tlet opencode: Record<string, unknown> = {}\n\n\t\t// 2. Apply global profile if resolved\n\t\tif (this.profile) {\n\t\t\tregistries = { ...registries, ...this.profile.ocx.registries }\n\t\t\tif (this.profile.ocx.componentPath) {\n\t\t\t\tcomponentPath = this.profile.ocx.componentPath\n\t\t\t}\n\t\t\tif (this.profile.opencode) {\n\t\t\t\topencode = this.deepMerge(opencode, this.profile.opencode)\n\t\t\t}\n\t\t}\n\n\t\t// 3. Check exclude/include patterns\n\t\tconst shouldLoadLocal = this.shouldLoadLocalConfig()\n\n\t\t// 4. Apply local OCX registries ONLY when no profile active (isolation)\n\t\tif (!this.profile && shouldLoadLocal && this.localConfigDir) {\n\t\t\tconst localOcxConfig = this.loadLocalOcxConfig()\n\t\t\tif (localOcxConfig) {\n\t\t\t\tregistries = localOcxConfig.registries\n\t\t\t}\n\t\t}\n\n\t\t// 5. Apply local OpenCode config (DOES merge with profile)\n\t\tif (shouldLoadLocal && this.localConfigDir) {\n\t\t\tconst localOpencodeConfig = this.loadLocalOpencodeConfig()\n\t\t\tif (localOpencodeConfig) {\n\t\t\t\topencode = this.deepMerge(opencode, localOpencodeConfig)\n\t\t\t}\n\t\t}\n\n\t\t// 6. Discover instruction files\n\t\tconst instructions = this.discoverInstructions()\n\n\t\tthis.cachedConfig = {\n\t\t\tregistries,\n\t\t\tcomponentPath,\n\t\t\topencode,\n\t\t\tinstructions,\n\t\t\tprofileName: this.profileName,\n\t\t}\n\n\t\treturn this.cachedConfig\n\t}\n\n\t/**\n\t * Resolve config with origin tracking for debugging.\n\t * Used by `ocx config show --origin`\n\t */\n\tresolveWithOrigin(): ResolvedConfigWithOrigin {\n\t\tconst origins = new Map<string, ConfigOrigin>()\n\n\t\t// 1. Start with defaults\n\t\tconst registries: Record<string, RegistryConfig> = {}\n\t\tlet componentPath = LOCAL_CONFIG_DIR\n\t\tlet opencode: Record<string, unknown> = {}\n\n\t\torigins.set(\"componentPath\", { path: \"\", source: \"default\" })\n\n\t\t// 2. Apply global profile if resolved\n\t\tif (this.profile) {\n\t\t\tconst profileOcxPath = `~/.config/opencode/profiles/${this.profileName}/ocx.jsonc`\n\n\t\t\tfor (const [key, value] of Object.entries(this.profile.ocx.registries)) {\n\t\t\t\tregistries[key] = value\n\t\t\t\torigins.set(`registries.${key}`, { path: profileOcxPath, source: \"global-profile\" })\n\t\t\t}\n\n\t\t\tif (this.profile.ocx.componentPath) {\n\t\t\t\tcomponentPath = this.profile.ocx.componentPath\n\t\t\t\torigins.set(\"componentPath\", { path: profileOcxPath, source: \"global-profile\" })\n\t\t\t}\n\n\t\t\tif (this.profile.opencode) {\n\t\t\t\topencode = this.deepMerge(opencode, this.profile.opencode)\n\t\t\t\tconst profileOpencodePath = `~/.config/opencode/profiles/${this.profileName}/opencode.jsonc`\n\t\t\t\tfor (const key of Object.keys(this.profile.opencode)) {\n\t\t\t\t\torigins.set(`opencode.${key}`, { path: profileOpencodePath, source: \"global-profile\" })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 3. Check exclude/include patterns\n\t\tconst shouldLoadLocal = this.shouldLoadLocalConfig()\n\n\t\t// 4. Apply local OCX registries ONLY when no profile active (isolation)\n\t\tif (!this.profile && shouldLoadLocal && this.localConfigDir) {\n\t\t\tconst localOcxConfig = this.loadLocalOcxConfig()\n\t\t\tif (localOcxConfig) {\n\t\t\t\tconst localOcxPath = join(this.localConfigDir, OCX_CONFIG_FILE)\n\t\t\t\tfor (const [key, value] of Object.entries(localOcxConfig.registries)) {\n\t\t\t\t\tregistries[key] = value\n\t\t\t\t\torigins.set(`registries.${key}`, { path: localOcxPath, source: \"local-config\" })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 5. Apply local OpenCode config (DOES merge with profile)\n\t\tif (shouldLoadLocal && this.localConfigDir) {\n\t\t\tconst localOpencodeConfig = this.loadLocalOpencodeConfig()\n\t\t\tif (localOpencodeConfig) {\n\t\t\t\topencode = this.deepMerge(opencode, localOpencodeConfig)\n\t\t\t\tconst localOpencodePath = join(this.localConfigDir, OPENCODE_CONFIG_FILE)\n\t\t\t\tfor (const key of Object.keys(localOpencodeConfig)) {\n\t\t\t\t\torigins.set(`opencode.${key}`, { path: localOpencodePath, source: \"local-opencode\" })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 6. Discover instruction files\n\t\tconst instructions = this.discoverInstructions()\n\n\t\treturn {\n\t\t\tregistries,\n\t\t\tcomponentPath,\n\t\t\topencode,\n\t\t\tinstructions,\n\t\t\tprofileName: this.profileName,\n\t\t\torigins,\n\t\t}\n\t}\n\n\t/**\n\t * Check if local config should be loaded based on exclude/include patterns.\n\t *\n\t * Returns true if local .opencode/ directory is NOT excluded by profile patterns.\n\t */\n\tprivate shouldLoadLocalConfig(): boolean {\n\t\t// If no profile or no exclude patterns, load local config\n\t\tif (!this.profile?.ocx.exclude) return true\n\t\tif (!this.localConfigDir) return true\n\n\t\t// Get git root for relative path calculation\n\t\tconst gitRoot = detectGitRoot(this.cwd)\n\t\tconst root = gitRoot ?? this.cwd\n\n\t\t// Get relative path of local config dir from root\n\t\tconst relativePath = relative(root, this.localConfigDir)\n\n\t\t// Check if .opencode directory matches exclude patterns\n\t\tconst exclude = this.profile.ocx.exclude ?? []\n\t\tconst include = this.profile.ocx.include ?? []\n\n\t\t// Check include first - include overrides exclude\n\t\tfor (const pattern of include) {\n\t\t\tconst glob = new Glob(normalizePattern(pattern))\n\t\t\t// Match the directory path with trailing content\n\t\t\tif (glob.match(`${relativePath}/`) || glob.match(relativePath)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\t// Check exclude\n\t\tfor (const pattern of exclude) {\n\t\t\tconst glob = new Glob(normalizePattern(pattern))\n\t\t\t// Check if pattern matches .opencode directory\n\t\t\tif (glob.match(`${relativePath}/`) || glob.match(`${relativePath}/**`)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\t/**\n\t * Load local ocx.jsonc configuration.\n\t * Returns null if file doesn't exist or fails to parse.\n\t */\n\tprivate loadLocalOcxConfig(): { registries: Record<string, RegistryConfig> } | null {\n\t\tif (!this.localConfigDir) return null\n\n\t\tconst configPath = join(this.localConfigDir, OCX_CONFIG_FILE)\n\t\tif (!existsSync(configPath)) return null\n\n\t\ttry {\n\t\t\t// Synchronous read for simplicity in resolve path\n\t\t\tconst text = require(\"node:fs\").readFileSync(configPath, \"utf8\")\n\t\t\tconst parsed = parseJsonc(text)\n\t\t\treturn {\n\t\t\t\tregistries: parsed?.registries ?? {},\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silent fail - local config is optional\n\t\t\treturn null\n\t\t}\n\t}\n\n\t/**\n\t * Load local opencode.jsonc configuration.\n\t * Returns null if file doesn't exist or fails to parse.\n\t */\n\tprivate loadLocalOpencodeConfig(): Record<string, unknown> | null {\n\t\tif (!this.localConfigDir) return null\n\n\t\tconst configPath = join(this.localConfigDir, OPENCODE_CONFIG_FILE)\n\t\tif (!existsSync(configPath)) return null\n\n\t\ttry {\n\t\t\tconst text = require(\"node:fs\").readFileSync(configPath, \"utf8\")\n\t\t\treturn parseJsonc(text) as Record<string, unknown>\n\t\t} catch {\n\t\t\t// Silent fail - local config is optional\n\t\t\treturn null\n\t\t}\n\t}\n\n\t/**\n\t * Discover instruction files (AGENTS.md, CLAUDE.md, CONTEXT.md).\n\t * Walks up from cwd to git root, filters by exclude/include.\n\t * Profile instructions are appended last (highest priority).\n\t */\n\tprivate discoverInstructions(): string[] {\n\t\tconst gitRoot = detectGitRoot(this.cwd)\n\t\tconst discoveredFiles = discoverInstructionFiles(this.cwd, gitRoot)\n\n\t\t// Apply profile exclude/include patterns\n\t\tconst exclude = this.profile?.ocx.exclude ?? []\n\t\tconst include = this.profile?.ocx.include ?? []\n\t\tconst filteredFiles = filterByPatterns(discoveredFiles, exclude, include)\n\n\t\t// Convert to absolute paths\n\t\tconst root = gitRoot ?? this.cwd\n\t\tconst projectInstructions = filteredFiles.map((f) => join(root, f))\n\n\t\t// Append profile instructions (profile comes LAST = highest priority)\n\t\tconst profileInstructionsRaw = this.profile?.opencode?.instructions\n\t\tconst profileInstructions: string[] = Array.isArray(profileInstructionsRaw)\n\t\t\t? profileInstructionsRaw\n\t\t\t: []\n\n\t\treturn [...projectInstructions, ...profileInstructions]\n\t}\n\n\t/**\n\t * Deep merge objects (for opencode config).\n\t * Arrays are replaced (not concatenated), objects are recursively merged, scalars last-wins.\n\t */\n\tprivate deepMerge(\n\t\ttarget: Record<string, unknown>,\n\t\tsource: Record<string, unknown>,\n\t): Record<string, unknown> {\n\t\tconst result = { ...target }\n\n\t\tfor (const key of Object.keys(source)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = result[key]\n\n\t\t\t// If both are plain objects, recurse\n\t\t\tif (this.isPlainObject(sourceValue) && this.isPlainObject(targetValue)) {\n\t\t\t\tresult[key] = this.deepMerge(\n\t\t\t\t\ttargetValue as Record<string, unknown>,\n\t\t\t\t\tsourceValue as Record<string, unknown>,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// Arrays and scalars: source wins (last-write-wins)\n\t\t\t\tresult[key] = sourceValue\n\t\t\t}\n\t\t}\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Check if value is a plain object (not array, not null).\n\t */\n\tprivate isPlainObject(value: unknown): value is Record<string, unknown> {\n\t\treturn typeof value === \"object\" && value !== null && !Array.isArray(value)\n\t}\n\n\t// =========================================================================\n\t// CONVENIENCE GETTERS (for compatibility with existing code)\n\t// =========================================================================\n\n\t/**\n\t * Get registries from the active scope (profile OR local, not merged).\n\t *\n\t * When a profile is active: returns ONLY profile's registries\n\t * When no profile: returns ONLY local registries\n\t */\n\tgetRegistries(): Record<string, RegistryConfig> {\n\t\treturn this.resolve().registries\n\t}\n\n\t/**\n\t * Get the component installation path.\n\t */\n\tgetComponentPath(): string {\n\t\treturn this.resolve().componentPath\n\t}\n\n\t/**\n\t * Get the resolved profile name, or null if no profile.\n\t */\n\tgetProfileName(): string | null {\n\t\treturn this.profileName\n\t}\n\n\t/**\n\t * Get the working directory this resolver was created for.\n\t */\n\tgetCwd(): string {\n\t\treturn this.cwd\n\t}\n\n\t/**\n\t * Get the resolved profile, or null if no profile.\n\t */\n\tgetProfile(): Profile | null {\n\t\treturn this.profile\n\t}\n}\n",
|
|
35
|
-
"import { mkdir, readdir, rm, stat } from \"node:fs/promises\"\nimport { parse } from \"jsonc-parser\"\nimport type { ProfileOcxConfig } from \"../schemas/ocx\"\nimport { profileOcxConfigSchema } from \"../schemas/ocx\"\nimport {\n\tInvalidProfileNameError,\n\tOcxConfigError,\n\tProfileExistsError,\n\tProfileNotFoundError,\n\tProfilesNotInitializedError,\n} from \"../utils/errors\"\nimport { atomicWrite } from \"./atomic\"\nimport {\n\tgetProfileAgents,\n\tgetProfileDir,\n\tgetProfileOcxConfig,\n\tgetProfileOpencodeConfig,\n\tgetProfilesDir,\n} from \"./paths\"\nimport type { Profile } from \"./schema\"\nimport { profileNameSchema } from \"./schema\"\n\n/**\n * Default ocx.jsonc template for new profiles.\n */\nexport const DEFAULT_OCX_CONFIG: ProfileOcxConfig = {\n\t$schema: \"https://ocx.kdco.dev/schemas/ocx.json\",\n\tregistries: {},\n\trenameWindow: true,\n\texclude: [\n\t\t\"**/AGENTS.md\",\n\t\t\"**/CLAUDE.md\",\n\t\t\"**/CONTEXT.md\",\n\t\t\"**/.opencode/**\",\n\t\t\"**/opencode.jsonc\",\n\t\t\"**/opencode.json\",\n\t],\n\tinclude: [],\n}\n\n/**\n * Manages OCX profiles.\n * Uses static factory pattern for consistent construction.\n */\nexport class ProfileManager {\n\tprivate constructor(private readonly profilesDir: string) {}\n\n\t/**\n\t * Create a ProfileManager instance.\n\t * Does not require profiles to be initialized.\n\t */\n\tstatic create(): ProfileManager {\n\t\treturn new ProfileManager(getProfilesDir())\n\t}\n\n\t/**\n\t * Get a ProfileManager instance, throwing if OCX is not initialized.\n\t * Use this in commands that require profiles to exist.\n\t *\n\t * @throws ProfilesNotInitializedError if OCX is not initialized\n\t * @returns ProfileManager instance guaranteed to be initialized\n\t */\n\tstatic async requireInitialized(): Promise<ProfileManager> {\n\t\tconst manager = ProfileManager.create()\n\t\tif (!(await manager.isInitialized())) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\t\treturn manager\n\t}\n\n\t/**\n\t * Check if profiles have been initialized.\n\t */\n\tasync isInitialized(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst stats = await stat(this.profilesDir)\n\t\t\treturn stats.isDirectory()\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Ensure profiles are initialized, throw if not.\n\t */\n\tprivate async ensureInitialized(): Promise<void> {\n\t\tif (!(await this.isInitialized())) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\t}\n\n\t/**\n\t * List all profile names.\n\t * @returns Array of profile names\n\t */\n\tasync list(): Promise<string[]> {\n\t\tawait this.ensureInitialized()\n\t\tconst entries = await readdir(this.profilesDir, { withFileTypes: true })\n\t\treturn entries\n\t\t\t.filter((e) => e.isDirectory() && !e.name.startsWith(\".\"))\n\t\t\t.map((e) => e.name)\n\t\t\t.sort()\n\t}\n\n\t/**\n\t * Check if a profile exists.\n\t * @param name - Profile name\n\t */\n\tasync exists(name: string): Promise<boolean> {\n\t\tconst dir = getProfileDir(name)\n\t\ttry {\n\t\t\tconst stats = await stat(dir)\n\t\t\treturn stats.isDirectory()\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Load a profile by name.\n\t * @param name - Profile name\n\t * @returns Loaded and validated profile\n\t */\n\tasync get(name: string): Promise<Profile> {\n\t\tif (!(await this.exists(name))) {\n\t\t\tthrow new ProfileNotFoundError(name)\n\t\t}\n\n\t\t// Check ocx.jsonc exists with descriptive error\n\t\tconst ocxPath = getProfileOcxConfig(name)\n\t\tconst ocxFile = Bun.file(ocxPath)\n\n\t\tif (!(await ocxFile.exists())) {\n\t\t\tthrow new OcxConfigError(`Profile \"${name}\" is missing ocx.jsonc. Expected at: ${ocxPath}`)\n\t\t}\n\n\t\tconst ocxContent = await ocxFile.text()\n\t\tconst ocxRaw = parse(ocxContent)\n\t\tconst ocx = profileOcxConfigSchema.parse(ocxRaw)\n\n\t\t// Load opencode.jsonc (optional)\n\t\tconst opencodePath = getProfileOpencodeConfig(name)\n\t\tconst opencodeFile = Bun.file(opencodePath)\n\t\tlet opencode: Record<string, unknown> | undefined\n\t\tif (await opencodeFile.exists()) {\n\t\t\tconst opencodeContent = await opencodeFile.text()\n\t\t\topencode = parse(opencodeContent) as Record<string, unknown>\n\t\t}\n\n\t\t// Check for AGENTS.md\n\t\tconst agentsPath = getProfileAgents(name)\n\t\tconst agentsFile = Bun.file(agentsPath)\n\t\tconst hasAgents = await agentsFile.exists()\n\n\t\treturn {\n\t\t\tname,\n\t\t\tocx,\n\t\t\topencode,\n\t\t\thasAgents,\n\t\t}\n\t}\n\n\t/**\n\t * Create a new profile.\n\t * @param name - Profile name (validated)\n\t */\n\tasync add(name: string): Promise<void> {\n\t\t// Validate name\n\t\tconst result = profileNameSchema.safeParse(name)\n\t\tif (!result.success) {\n\t\t\tthrow new InvalidProfileNameError(name, result.error.errors[0]?.message ?? \"Invalid name\")\n\t\t}\n\n\t\t// Check doesn't exist\n\t\tif (await this.exists(name)) {\n\t\t\tthrow new ProfileExistsError(name)\n\t\t}\n\n\t\t// Create directory with secure permissions\n\t\tconst dir = getProfileDir(name)\n\t\tawait mkdir(dir, { recursive: true, mode: 0o700 })\n\n\t\t// Create ocx.jsonc with create-if-missing\n\t\tconst ocxPath = getProfileOcxConfig(name)\n\t\tconst ocxFile = Bun.file(ocxPath)\n\t\tif (!(await ocxFile.exists())) {\n\t\t\tawait atomicWrite(ocxPath, DEFAULT_OCX_CONFIG)\n\t\t}\n\n\t\t// Create opencode.jsonc with create-if-missing\n\t\tconst opencodePath = getProfileOpencodeConfig(name)\n\t\tconst opencodeFile = Bun.file(opencodePath)\n\t\tif (!(await opencodeFile.exists())) {\n\t\t\tawait atomicWrite(opencodePath, {})\n\t\t}\n\n\t\t// Create AGENTS.md with create-if-missing\n\t\tconst agentsPath = getProfileAgents(name)\n\t\tconst agentsFile = Bun.file(agentsPath)\n\t\tif (!(await agentsFile.exists())) {\n\t\t\tconst agentsContent = `# Profile Instructions\n\n<!-- Add your custom instructions for this profile here -->\n<!-- These will be included when running \\`ocx opencode -p ${name}\\` -->\n`\n\t\t\tawait Bun.write(agentsPath, agentsContent, { mode: 0o600 })\n\t\t}\n\t}\n\n\t/**\n\t * Remove a profile.\n\t * @param name - Profile name\n\t */\n\tasync remove(name: string): Promise<void> {\n\t\tif (!(await this.exists(name))) {\n\t\t\tthrow new ProfileNotFoundError(name)\n\t\t}\n\n\t\tconst profiles = await this.list()\n\n\t\tif (profiles.length <= 1) {\n\t\t\tthrow new Error(\"Cannot delete the last profile. At least one profile must exist.\")\n\t\t}\n\n\t\tconst dir = getProfileDir(name)\n\t\tawait rm(dir, { recursive: true })\n\t}\n\n\t/**\n\t * Resolve the profile name to use.\n\t * Priority: override (from -p flag) > OCX_PROFILE env > \"default\"\n\t *\n\t * @param override - Optional override from --profile flag\n\t * @returns Resolved profile name (validated to exist)\n\t * @throws ProfileNotFoundError if resolved profile doesn't exist\n\t */\n\tasync resolveProfile(override?: string): Promise<string> {\n\t\t// Priority 1: Explicit override from -p/--profile flag\n\t\tif (override) {\n\t\t\tif (!(await this.exists(override))) {\n\t\t\t\tthrow new ProfileNotFoundError(override)\n\t\t\t}\n\t\t\treturn override\n\t\t}\n\n\t\t// Priority 2: OCX_PROFILE environment variable\n\t\tconst envProfile = process.env.OCX_PROFILE\n\t\tif (envProfile) {\n\t\t\tif (!(await this.exists(envProfile))) {\n\t\t\t\tthrow new ProfileNotFoundError(envProfile)\n\t\t\t}\n\t\t\treturn envProfile\n\t\t}\n\n\t\t// Priority 3: Fall back to \"default\" profile\n\t\tconst defaultProfile = \"default\"\n\t\tif (!(await this.exists(defaultProfile))) {\n\t\t\tthrow new ProfileNotFoundError(defaultProfile)\n\t\t}\n\t\treturn defaultProfile\n\t}\n\n\t/**\n\t * Initialize profiles with a default profile.\n\t * Called by `ocx init --global`.\n\t */\n\tasync initialize(): Promise<void> {\n\t\t// Create profiles directory\n\t\tawait mkdir(this.profilesDir, { recursive: true, mode: 0o700 })\n\n\t\t// Create default profile\n\t\tawait this.add(\"default\")\n\t}\n}\n",
|
|
36
|
-
"/**\n * OCX Profile Config Schema\n *\n * Schema for ocx.jsonc (within profiles) - the global OCX configuration file\n * stored at ~/.config/opencode/profiles/<name>/ocx.jsonc (XDG-compliant).\n *\n * OCX profiles allow working without project-local config files\n * by storing registries globally.\n */\n\nimport { Glob } from \"bun\"\nimport { z } from \"zod\"\nimport { safeRelativePathSchema } from \"./common\"\nimport { registryConfigSchema } from \"./config\"\n\n/**\n * Validates that a string is a valid glob pattern.\n */\nconst globPatternSchema = z.string().refine(\n\t(pattern) => {\n\t\ttry {\n\t\t\tnew Glob(pattern)\n\t\t\treturn true\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t},\n\t{ message: \"Invalid glob pattern\" },\n)\n\n// =============================================================================\n// PROFILE OCX CONFIG SCHEMA (ocx.jsonc in profiles)\n// =============================================================================\n\n/**\n * OCX profile configuration schema\n *\n * Contains OCX-specific settings (registries, componentPath).\n * OpenCode configuration is stored separately in opencode.jsonc.\n */\nexport const profileOcxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Path to OpenCode binary. Falls back to OPENCODE_BIN env var, then \"opencode\". */\n\tbin: z.string().optional(),\n\n\t/**\n\t * Configured registries for OCX profiles\n\t * Same format as ocx.jsonc registries\n\t */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/**\n\t * Optional default component path for installations\n\t * If not set, uses the standard .opencode directory\n\t * Uses safeRelativePathSchema to prevent path traversal attacks\n\t */\n\tcomponentPath: safeRelativePathSchema.optional(),\n\n\t/**\n\t * Whether to set terminal/tmux window name when launching OpenCode.\n\t * Set to false to preserve your existing terminal title.\n\t */\n\trenameWindow: z\n\t\t.boolean()\n\t\t.default(true)\n\t\t.describe(\"Set terminal/tmux window name when launching OpenCode\"),\n\n\t/**\n\t * Glob patterns for project files to exclude from OpenCode discovery.\n\t * Prevents OCX profiles from loading project-local configuration files.\n\t */\n\texclude: z\n\t\t.array(globPatternSchema)\n\t\t.default([\n\t\t\t\"**/
|
|
36
|
+
"import { mkdir, readdir, rename, rm, stat } from \"node:fs/promises\"\nimport { parse } from \"jsonc-parser\"\nimport type { ProfileOcxConfig } from \"../schemas/ocx\"\nimport { profileOcxConfigSchema } from \"../schemas/ocx\"\nimport {\n\tConflictError,\n\tInvalidProfileNameError,\n\tOcxConfigError,\n\tProfileExistsError,\n\tProfileNotFoundError,\n\tProfilesNotInitializedError,\n} from \"../utils/errors\"\nimport { atomicWrite } from \"./atomic\"\nimport {\n\tgetProfileAgents,\n\tgetProfileDir,\n\tgetProfileOcxConfig,\n\tgetProfileOpencodeConfig,\n\tgetProfilesDir,\n} from \"./paths\"\nimport type { Profile } from \"./schema\"\nimport { profileNameSchema } from \"./schema\"\n\n/**\n * Default ocx.jsonc config for new profiles (programmatic use).\n * Note: AGENTS.md is NOT excluded by default - it's commented out in the template.\n */\nexport const DEFAULT_OCX_CONFIG: ProfileOcxConfig = {\n\t$schema: \"https://ocx.kdco.dev/schemas/ocx.json\",\n\tregistries: {},\n\trenameWindow: true,\n\texclude: [\n\t\t\"**/CLAUDE.md\",\n\t\t\"**/CONTEXT.md\",\n\t\t\"**/.opencode/**\",\n\t\t\"**/opencode.jsonc\",\n\t\t\"**/opencode.json\",\n\t],\n\tinclude: [],\n}\n\n/**\n * Default ocx.jsonc JSONC template for new profiles.\n * Includes commented-out AGENTS.md line so users can easily enable exclusion.\n */\nexport const DEFAULT_OCX_CONFIG_TEMPLATE = `{\n \"$schema\": \"https://ocx.kdco.dev/schemas/ocx.json\",\n \"registries\": {},\n \"renameWindow\": true,\n \"exclude\": [\n // \"**/AGENTS.md\",\n \"**/CLAUDE.md\",\n \"**/CONTEXT.md\",\n \"**/.opencode/**\",\n \"**/opencode.jsonc\",\n \"**/opencode.json\"\n ],\n \"include\": []\n}\n`\n\n/**\n * Manages OCX profiles.\n * Uses static factory pattern for consistent construction.\n */\nexport class ProfileManager {\n\tprivate constructor(private readonly profilesDir: string) {}\n\n\t/**\n\t * Create a ProfileManager instance.\n\t * Does not require profiles to be initialized.\n\t */\n\tstatic create(): ProfileManager {\n\t\treturn new ProfileManager(getProfilesDir())\n\t}\n\n\t/**\n\t * Get a ProfileManager instance, throwing if OCX is not initialized.\n\t * Use this in commands that require profiles to exist.\n\t *\n\t * @throws ProfilesNotInitializedError if OCX is not initialized\n\t * @returns ProfileManager instance guaranteed to be initialized\n\t */\n\tstatic async requireInitialized(): Promise<ProfileManager> {\n\t\tconst manager = ProfileManager.create()\n\t\tif (!(await manager.isInitialized())) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\t\treturn manager\n\t}\n\n\t/**\n\t * Check if profiles have been initialized.\n\t */\n\tasync isInitialized(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst stats = await stat(this.profilesDir)\n\t\t\treturn stats.isDirectory()\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Ensure profiles are initialized, throw if not.\n\t */\n\tprivate async ensureInitialized(): Promise<void> {\n\t\tif (!(await this.isInitialized())) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\t}\n\n\t/**\n\t * List all profile names.\n\t * @returns Array of profile names\n\t */\n\tasync list(): Promise<string[]> {\n\t\tawait this.ensureInitialized()\n\t\tconst entries = await readdir(this.profilesDir, { withFileTypes: true })\n\t\treturn entries\n\t\t\t.filter((e) => e.isDirectory() && !e.name.startsWith(\".\"))\n\t\t\t.map((e) => e.name)\n\t\t\t.sort()\n\t}\n\n\t/**\n\t * Check if a profile exists.\n\t * @param name - Profile name\n\t */\n\tasync exists(name: string): Promise<boolean> {\n\t\tconst dir = getProfileDir(name)\n\t\ttry {\n\t\t\tconst stats = await stat(dir)\n\t\t\treturn stats.isDirectory()\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Load a profile by name.\n\t * @param name - Profile name\n\t * @returns Loaded and validated profile\n\t */\n\tasync get(name: string): Promise<Profile> {\n\t\tif (!(await this.exists(name))) {\n\t\t\tthrow new ProfileNotFoundError(name)\n\t\t}\n\n\t\t// Check ocx.jsonc exists with descriptive error\n\t\tconst ocxPath = getProfileOcxConfig(name)\n\t\tconst ocxFile = Bun.file(ocxPath)\n\n\t\tif (!(await ocxFile.exists())) {\n\t\t\tthrow new OcxConfigError(`Profile \"${name}\" is missing ocx.jsonc. Expected at: ${ocxPath}`)\n\t\t}\n\n\t\tconst ocxContent = await ocxFile.text()\n\t\tconst ocxRaw = parse(ocxContent)\n\t\tconst ocx = profileOcxConfigSchema.parse(ocxRaw)\n\n\t\t// Load opencode.jsonc (optional)\n\t\tconst opencodePath = getProfileOpencodeConfig(name)\n\t\tconst opencodeFile = Bun.file(opencodePath)\n\t\tlet opencode: Record<string, unknown> | undefined\n\t\tif (await opencodeFile.exists()) {\n\t\t\tconst opencodeContent = await opencodeFile.text()\n\t\t\topencode = parse(opencodeContent) as Record<string, unknown>\n\t\t}\n\n\t\t// Check for AGENTS.md\n\t\tconst agentsPath = getProfileAgents(name)\n\t\tconst agentsFile = Bun.file(agentsPath)\n\t\tconst hasAgents = await agentsFile.exists()\n\n\t\treturn {\n\t\t\tname,\n\t\t\tocx,\n\t\t\topencode,\n\t\t\thasAgents,\n\t\t}\n\t}\n\n\t/**\n\t * Create a new profile.\n\t * @param name - Profile name (validated)\n\t */\n\tasync add(name: string): Promise<void> {\n\t\t// Validate name\n\t\tconst result = profileNameSchema.safeParse(name)\n\t\tif (!result.success) {\n\t\t\tthrow new InvalidProfileNameError(name, result.error.errors[0]?.message ?? \"Invalid name\")\n\t\t}\n\n\t\t// Check doesn't exist\n\t\tif (await this.exists(name)) {\n\t\t\tthrow new ProfileExistsError(name)\n\t\t}\n\n\t\t// Create directory with secure permissions\n\t\tconst dir = getProfileDir(name)\n\t\tawait mkdir(dir, { recursive: true, mode: 0o700 })\n\n\t\t// Create ocx.jsonc with create-if-missing (uses JSONC template with commented AGENTS.md)\n\t\tconst ocxPath = getProfileOcxConfig(name)\n\t\tconst ocxFile = Bun.file(ocxPath)\n\t\tif (!(await ocxFile.exists())) {\n\t\t\tawait Bun.write(ocxPath, DEFAULT_OCX_CONFIG_TEMPLATE, { mode: 0o600 })\n\t\t}\n\n\t\t// Create opencode.jsonc with create-if-missing\n\t\tconst opencodePath = getProfileOpencodeConfig(name)\n\t\tconst opencodeFile = Bun.file(opencodePath)\n\t\tif (!(await opencodeFile.exists())) {\n\t\t\tawait atomicWrite(opencodePath, {})\n\t\t}\n\n\t\t// Create AGENTS.md with create-if-missing\n\t\tconst agentsPath = getProfileAgents(name)\n\t\tconst agentsFile = Bun.file(agentsPath)\n\t\tif (!(await agentsFile.exists())) {\n\t\t\tconst agentsContent = `# Profile Instructions\n\n<!-- Add your custom instructions for this profile here -->\n<!-- These will be included when running \\`ocx opencode -p ${name}\\` -->\n`\n\t\t\tawait Bun.write(agentsPath, agentsContent, { mode: 0o600 })\n\t\t}\n\t}\n\n\t/**\n\t * Remove a profile.\n\t * @param name - Profile name\n\t */\n\tasync remove(name: string): Promise<void> {\n\t\tif (!(await this.exists(name))) {\n\t\t\tthrow new ProfileNotFoundError(name)\n\t\t}\n\n\t\tconst profiles = await this.list()\n\n\t\tif (profiles.length <= 1) {\n\t\t\tthrow new Error(\"Cannot delete the last profile. At least one profile must exist.\")\n\t\t}\n\n\t\tconst dir = getProfileDir(name)\n\t\tawait rm(dir, { recursive: true })\n\t}\n\n\t/**\n\t * Move (rename) a profile atomically.\n\t * @param oldName - Current profile name\n\t * @param newName - New profile name\n\t * @returns Object indicating if active profile warning should be shown\n\t */\n\tasync move(oldName: string, newName: string): Promise<{ warnActiveProfile: boolean }> {\n\t\t// 1. Validate oldName format\n\t\tconst oldResult = profileNameSchema.safeParse(oldName)\n\t\tif (!oldResult.success) {\n\t\t\tthrow new InvalidProfileNameError(\n\t\t\t\toldName,\n\t\t\t\toldResult.error.errors[0]?.message ?? \"Invalid name\",\n\t\t\t)\n\t\t}\n\n\t\t// 2. Validate newName format\n\t\tconst newResult = profileNameSchema.safeParse(newName)\n\t\tif (!newResult.success) {\n\t\t\tthrow new InvalidProfileNameError(\n\t\t\t\tnewName,\n\t\t\t\tnewResult.error.errors[0]?.message ?? \"Invalid name\",\n\t\t\t)\n\t\t}\n\n\t\t// 3. Ensure profiles are initialized\n\t\tawait this.ensureInitialized()\n\n\t\t// 4. Check source exists\n\t\tif (!(await this.exists(oldName))) {\n\t\t\tthrow new ProfileNotFoundError(oldName)\n\t\t}\n\n\t\t// 5. Check for self-move (no-op) - safe now that we know source exists\n\t\tif (oldName === newName) {\n\t\t\treturn { warnActiveProfile: false }\n\t\t}\n\n\t\t// 6. Check target doesn't exist\n\t\tif (await this.exists(newName)) {\n\t\t\tthrow new ConflictError(\n\t\t\t\t`Cannot move: profile \"${newName}\" already exists. Remove it first with 'ocx p rm ${newName}'.`,\n\t\t\t)\n\t\t}\n\n\t\t// 7. Check if moving active profile\n\t\tconst warnActiveProfile = process.env.OCX_PROFILE === oldName\n\n\t\t// 8. Atomic rename (with race condition handling)\n\t\tconst oldDir = getProfileDir(oldName)\n\t\tconst newDir = getProfileDir(newName)\n\t\ttry {\n\t\t\tawait rename(oldDir, newDir)\n\t\t} catch (error) {\n\t\t\t// Handle race condition where destination was created between check and rename\n\t\t\tif (error instanceof Error && \"code\" in error) {\n\t\t\t\tconst code = (error as NodeJS.ErrnoException).code\n\t\t\t\tif (code === \"EEXIST\" || code === \"ENOTEMPTY\") {\n\t\t\t\t\tthrow new ConflictError(\n\t\t\t\t\t\t`Cannot move: profile \"${newName}\" already exists. Remove it first with 'ocx p rm ${newName}'.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tif (code === \"ENOENT\") {\n\t\t\t\t\tthrow new ProfileNotFoundError(oldName)\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\n\t\treturn { warnActiveProfile }\n\t}\n\n\t/**\n\t * Resolve the profile name to use.\n\t * Priority: override (from -p flag) > OCX_PROFILE env > \"default\"\n\t *\n\t * @param override - Optional override from --profile flag\n\t * @returns Resolved profile name (validated to exist)\n\t * @throws ProfileNotFoundError if resolved profile doesn't exist\n\t */\n\tasync resolveProfile(override?: string): Promise<string> {\n\t\t// Priority 1: Explicit override from -p/--profile flag\n\t\tif (override) {\n\t\t\tif (!(await this.exists(override))) {\n\t\t\t\tthrow new ProfileNotFoundError(override)\n\t\t\t}\n\t\t\treturn override\n\t\t}\n\n\t\t// Priority 2: OCX_PROFILE environment variable\n\t\tconst envProfile = process.env.OCX_PROFILE\n\t\tif (envProfile) {\n\t\t\tif (!(await this.exists(envProfile))) {\n\t\t\t\tthrow new ProfileNotFoundError(envProfile)\n\t\t\t}\n\t\t\treturn envProfile\n\t\t}\n\n\t\t// Priority 3: Fall back to \"default\" profile\n\t\tconst defaultProfile = \"default\"\n\t\tif (!(await this.exists(defaultProfile))) {\n\t\t\tthrow new ProfileNotFoundError(defaultProfile)\n\t\t}\n\t\treturn defaultProfile\n\t}\n\n\t/**\n\t * Initialize profiles with a default profile.\n\t * Called by `ocx init --global`.\n\t */\n\tasync initialize(): Promise<void> {\n\t\t// Create profiles directory\n\t\tawait mkdir(this.profilesDir, { recursive: true, mode: 0o700 })\n\n\t\t// Create default profile\n\t\tawait this.add(\"default\")\n\t}\n}\n",
|
|
37
|
+
"/**\n * OCX Profile Config Schema\n *\n * Schema for ocx.jsonc (within profiles) - the global OCX configuration file\n * stored at ~/.config/opencode/profiles/<name>/ocx.jsonc (XDG-compliant).\n *\n * OCX profiles allow working without project-local config files\n * by storing registries globally.\n */\n\nimport { Glob } from \"bun\"\nimport { z } from \"zod\"\nimport { safeRelativePathSchema } from \"./common\"\nimport { registryConfigSchema } from \"./config\"\n\n/**\n * Validates that a string is a valid glob pattern.\n */\nconst globPatternSchema = z.string().refine(\n\t(pattern) => {\n\t\ttry {\n\t\t\tnew Glob(pattern)\n\t\t\treturn true\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t},\n\t{ message: \"Invalid glob pattern\" },\n)\n\n// =============================================================================\n// PROFILE OCX CONFIG SCHEMA (ocx.jsonc in profiles)\n// =============================================================================\n\n/**\n * OCX profile configuration schema\n *\n * Contains OCX-specific settings (registries, componentPath).\n * OpenCode configuration is stored separately in opencode.jsonc.\n */\nexport const profileOcxConfigSchema = z.object({\n\t/** Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Path to OpenCode binary. Falls back to OPENCODE_BIN env var, then \"opencode\". */\n\tbin: z.string().optional(),\n\n\t/**\n\t * Configured registries for OCX profiles\n\t * Same format as ocx.jsonc registries\n\t */\n\tregistries: z.record(registryConfigSchema).default({}),\n\n\t/**\n\t * Optional default component path for installations\n\t * If not set, uses the standard .opencode directory\n\t * Uses safeRelativePathSchema to prevent path traversal attacks\n\t */\n\tcomponentPath: safeRelativePathSchema.optional(),\n\n\t/**\n\t * Whether to set terminal/tmux window name when launching OpenCode.\n\t * Set to false to preserve your existing terminal title.\n\t */\n\trenameWindow: z\n\t\t.boolean()\n\t\t.default(true)\n\t\t.describe(\"Set terminal/tmux window name when launching OpenCode\"),\n\n\t/**\n\t * Glob patterns for project files to exclude from OpenCode discovery.\n\t * Prevents OCX profiles from loading project-local configuration files.\n\t * Note: AGENTS.md is NOT excluded by default - uncomment in ocx.jsonc to exclude.\n\t */\n\texclude: z\n\t\t.array(globPatternSchema)\n\t\t.default([\n\t\t\t\"**/CLAUDE.md\",\n\t\t\t\"**/CONTEXT.md\",\n\t\t\t\"**/.opencode/**\",\n\t\t\t\"**/opencode.jsonc\",\n\t\t\t\"**/opencode.json\",\n\t\t])\n\t\t.describe(\"Glob patterns for project files to exclude from OpenCode discovery\"),\n\n\t/**\n\t * Glob patterns for project files to include (overrides exclude).\n\t * Use when you need specific files from otherwise excluded patterns.\n\t */\n\tinclude: z\n\t\t.array(globPatternSchema)\n\t\t.default([])\n\t\t.describe(\"Glob patterns for project files to include (overrides exclude)\"),\n})\n\nexport type ProfileOcxConfig = z.infer<typeof profileOcxConfigSchema>\n",
|
|
37
38
|
"/**\n * Path Helper Utilities\n *\n * Cross-platform path utilities for consistent behavior across\n * macOS, Linux, and Windows.\n */\n\nimport path from \"node:path\"\n\n/**\n * Cross-platform check for absolute paths.\n *\n * Uses both posix and win32 checks because path.isAbsolute() is platform-specific:\n * - On macOS/Linux: path.isAbsolute('\\\\\\\\server\\\\share') returns FALSE\n * - On Windows: returns TRUE\n *\n * By using path.win32.isAbsolute(), we can detect Windows paths on any platform.\n *\n * @see https://github.com/vitejs/vite (uses this pattern)\n */\nexport function isAbsolutePath(p: string): boolean {\n\treturn path.posix.isAbsolute(p) || path.win32.isAbsolute(p)\n}\n",
|
|
38
39
|
"/**\n * Common Schemas\n *\n * Reusable Zod schemas for validation across the codebase.\n * Following Law 2: Parse at boundary - validate once, trust internally.\n */\n\nimport { z } from \"zod\"\nimport { isAbsolutePath } from \"../utils/path-helpers\"\n\n/**\n * Schema for a safe relative path that cannot escape the project root.\n * Layer 1 of path traversal protection (schema validation at parse boundary).\n *\n * Rejects:\n * - Null bytes (security - prevents null byte injection attacks)\n * - Path traversal segments (..)\n * - Absolute paths (Unix and Windows, including UNC paths)\n */\nexport const safeRelativePathSchema = z\n\t.string()\n\t.refine((val) => !val.includes(\"\\0\"), \"Path cannot contain null bytes\")\n\t.refine((val) => !val.split(/[/\\\\]/).some((seg) => seg === \"..\"), \"Path cannot contain '..'\")\n\t.refine((val) => !isAbsolutePath(val), \"Path must be relative, not absolute\")\n",
|
|
39
40
|
"import { rename, symlink, unlink } from \"node:fs/promises\"\n\n/**\n * Atomically write data to a file using temp file + rename pattern.\n * Uses PID in temp filename for concurrent write safety.\n * File is created with 0o600 permissions.\n *\n * Based on CCS profile-registry.ts pattern.\n *\n * @param filePath - Target file path\n * @param data - Data to write (will be JSON stringified)\n */\nexport async function atomicWrite(filePath: string, data: unknown): Promise<void> {\n\tconst tempPath = `${filePath}.tmp.${process.pid}`\n\ttry {\n\t\tawait Bun.write(tempPath, JSON.stringify(data, null, \"\\t\"), { mode: 0o600 })\n\t\tawait rename(tempPath, filePath)\n\t} catch (error) {\n\t\t// Cleanup temp file on failure\n\t\ttry {\n\t\t\tawait unlink(tempPath)\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t\tthrow error\n\t}\n}\n\n/**\n * Atomically swap a symlink to point to a new target.\n * Uses temp symlink + rename pattern (POSIX atomic).\n *\n * @param target - New symlink target (relative or absolute path)\n * @param linkPath - Path where symlink should exist\n */\nexport async function atomicSymlink(target: string, linkPath: string): Promise<void> {\n\tconst tempLink = `${linkPath}.tmp.${process.pid}`\n\ttry {\n\t\tawait symlink(target, tempLink)\n\t\tawait rename(tempLink, linkPath)\n\t} catch (error) {\n\t\t// Cleanup temp symlink on failure\n\t\ttry {\n\t\t\tawait unlink(tempLink)\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t\tthrow error\n\t}\n}\n",
|
|
40
41
|
"import { existsSync, statSync } from \"node:fs\"\nimport { homedir } from \"node:os\"\nimport path from \"node:path\"\n\n// =============================================================================\n// FILE NAME CONSTANTS\n// =============================================================================\n\n/** OCX configuration file name */\nexport const OCX_CONFIG_FILE = \"ocx.jsonc\"\n\n/** OpenCode configuration file name */\nexport const OPENCODE_CONFIG_FILE = \"opencode.jsonc\"\n\n/** Local config directory name */\nexport const LOCAL_CONFIG_DIR = \".opencode\"\n\n// =============================================================================\n// PROFILE PATH HELPERS\n// =============================================================================\n\n/**\n * Get the profiles directory path.\n * Respects XDG_CONFIG_HOME if set.\n * @returns Absolute path to ~/.config/opencode/profiles/\n */\nexport function getProfilesDir(): string {\n\tconst base = process.env.XDG_CONFIG_HOME || path.join(homedir(), \".config\")\n\treturn path.join(base, \"opencode\", \"profiles\")\n}\n\n/**\n * Get a specific profile's directory path.\n * @param name - Profile name\n * @returns Absolute path to the profile directory\n */\nexport function getProfileDir(name: string): string {\n\treturn path.join(getProfilesDir(), name)\n}\n\n/**\n * Get the path to a profile's ocx.jsonc file.\n * @param name - Profile name\n * @returns Absolute path to ocx.jsonc\n */\nexport function getProfileOcxConfig(name: string): string {\n\treturn path.join(getProfileDir(name), \"ocx.jsonc\")\n}\n\n/**\n * Get the path to a profile's opencode.jsonc file.\n * @param name - Profile name\n * @returns Absolute path to opencode.jsonc\n */\nexport function getProfileOpencodeConfig(name: string): string {\n\treturn path.join(getProfileDir(name), \"opencode.jsonc\")\n}\n\n/**\n * Get the path to a profile's AGENTS.md file.\n * @param name - Profile name\n * @returns Absolute path to AGENTS.md\n */\nexport function getProfileAgents(name: string): string {\n\treturn path.join(getProfileDir(name), \"AGENTS.md\")\n}\n\n// =============================================================================\n// LOCAL CONFIG DISCOVERY\n// =============================================================================\n\n/**\n * Find the local config directory by walking up from cwd.\n * Stops at first .opencode/ directory or git root.\n * @param cwd - Starting directory\n * @returns Path to .opencode/ directory, or null if not found\n */\nexport function findLocalConfigDir(cwd: string): string | null {\n\tlet currentDir = cwd\n\n\twhile (true) {\n\t\t// Check for .opencode/ directory at this level\n\t\tconst configDir = path.join(currentDir, LOCAL_CONFIG_DIR)\n\t\tif (existsSync(configDir) && statSync(configDir).isDirectory()) {\n\t\t\treturn configDir\n\t\t}\n\n\t\t// Check if we've hit the git root (.git directory)\n\t\tconst gitDir = path.join(currentDir, \".git\")\n\t\tif (existsSync(gitDir)) {\n\t\t\t// At git root, stop searching\n\t\t\treturn null\n\t\t}\n\n\t\t// Move up one directory\n\t\tconst parentDir = path.dirname(currentDir)\n\t\tif (parentDir === currentDir) {\n\t\t\t// Reached filesystem root\n\t\t\treturn null\n\t\t}\n\t\tcurrentDir = parentDir\n\t}\n}\n\n// =============================================================================\n// GLOBAL CONFIG HELPERS\n// =============================================================================\n\n/**\n * Get the global base ocx.jsonc path.\n * @returns Path to ~/.config/opencode/ocx.jsonc\n */\nexport function getGlobalConfig(): string {\n\tconst base = process.env.XDG_CONFIG_HOME || path.join(homedir(), \".config\")\n\treturn path.join(base, \"opencode\", \"ocx.jsonc\")\n}\n",
|
|
41
42
|
"import { z } from \"zod\"\nimport { profileOcxConfigSchema } from \"../schemas/ocx\"\n\n/**\n * Profile name validation schema.\n * - Must start with a letter\n * - Can contain alphanumeric, dots, underscores, hyphens\n * - 1-32 characters\n * Based on CCS variant-service.ts pattern.\n */\nexport const profileNameSchema = z\n\t.string()\n\t.min(1, \"Profile name is required\")\n\t.max(32, \"Profile name must be 32 characters or less\")\n\t.regex(\n\t\t/^[a-zA-Z][a-zA-Z0-9._-]*$/,\n\t\t\"Profile name must start with a letter and contain only alphanumeric characters, dots, underscores, or hyphens\",\n\t)\n\nexport type ProfileName = z.infer<typeof profileNameSchema>\n\n/**\n * Represents a loaded profile with all its data.\n */\nexport const profileSchema = z.object({\n\t/** Profile name (directory name) */\n\tname: profileNameSchema,\n\t/** OCX configuration from ocx.jsonc */\n\tocx: profileOcxConfigSchema,\n\t/** OpenCode configuration from opencode.jsonc (optional, passthrough) */\n\topencode: z.record(z.unknown()).optional(),\n\t/** Whether AGENTS.md exists in this profile */\n\thasAgents: z.boolean(),\n})\n\nexport type Profile = z.infer<typeof profileSchema>\n",
|
|
42
43
|
"/**\n * OCX URL Constants\n *\n * Centralized URL definitions to avoid hardcoding throughout the codebase.\n */\n\nimport pkg from \"../package.json\" with { type: \"json\" }\n\n// Base domains\nexport const OCX_DOMAIN = \"ocx.kdco.dev\"\nexport const GITHUB_REPO = \"kdcokenny/ocx\"\n\n// OCX URLs\nexport const OCX_SCHEMA_URL = `https://${OCX_DOMAIN}/schemas/ocx.json`\n\n// CLI Version (single source of truth from package.json)\nexport const CLI_VERSION: string = pkg.version\n",
|
|
43
|
-
"/**\n * Registry Fetcher with in-memory caching\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/fetcher.ts\n */\n\nimport type { ComponentManifest, McpServer, RegistryIndex } from \"../schemas/registry\"\nimport { componentManifestSchema, packumentSchema, registryIndexSchema } from \"../schemas/registry\"\nimport { NetworkError, NotFoundError, ValidationError } from \"../utils/errors\"\n\n// In-memory cache for deduplication\nconst cache = new Map<string, Promise<unknown>>()\n\n/**\n * Fetch with caching - deduplicates concurrent requests\n */\nasync function fetchWithCache<T>(url: string, parse: (data: unknown) => T): Promise<T> {\n\tconst cached = cache.get(url)\n\tif (cached) {\n\t\treturn cached as Promise<T>\n\t}\n\n\tconst promise = (async () => {\n\t\
|
|
44
|
+
"/**\n * Registry Fetcher with in-memory caching\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/fetcher.ts\n */\n\nimport type { ComponentManifest, McpServer, RegistryIndex } from \"../schemas/registry\"\nimport { componentManifestSchema, packumentSchema, registryIndexSchema } from \"../schemas/registry\"\nimport { NetworkError, NotFoundError, ValidationError } from \"../utils/errors\"\n\n// In-memory cache for deduplication\nconst cache = new Map<string, Promise<unknown>>()\n\n/**\n * Fetch with caching - deduplicates concurrent requests\n */\nasync function fetchWithCache<T>(url: string, parse: (data: unknown) => T): Promise<T> {\n\tconst cached = cache.get(url)\n\tif (cached) {\n\t\treturn cached as Promise<T>\n\t}\n\n\tconst promise = (async () => {\n\t\tlet response: Response\n\t\ttry {\n\t\t\tresponse = await fetch(url)\n\t\t} catch (error) {\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Network request failed for ${url}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t{ url },\n\t\t\t)\n\t\t}\n\n\t\tif (!response.ok) {\n\t\t\tif (response.status === 404) {\n\t\t\t\tthrow new NotFoundError(`Not found: ${url}`)\n\t\t\t}\n\t\t\tthrow new NetworkError(`Failed to fetch ${url}: ${response.status} ${response.statusText}`, {\n\t\t\t\turl,\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t})\n\t\t}\n\n\t\tlet data: unknown\n\t\ttry {\n\t\t\tdata = await response.json()\n\t\t} catch (error) {\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Invalid JSON response from ${url}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t{ url },\n\t\t\t)\n\t\t}\n\n\t\treturn parse(data)\n\t})()\n\n\tcache.set(url, promise)\n\n\t// Clean up cache on error\n\tpromise.catch(() => cache.delete(url))\n\n\treturn promise\n}\n\n/**\n * Fetch registry index\n */\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/index.json`\n\n\treturn fetchWithCache(url, (data) => {\n\t\tconst result = registryIndexSchema.safeParse(data)\n\t\tif (!result.success) {\n\t\t\tthrow new ValidationError(`Invalid registry format at ${url}: ${result.error.message}`)\n\t\t}\n\t\treturn result.data\n\t})\n}\n\n/**\n * Fetch a component from registry and return the latest manifest\n */\nexport async function fetchComponent(baseUrl: string, name: string): Promise<ComponentManifest> {\n\tconst result = await fetchComponentVersion(baseUrl, name)\n\treturn result.manifest\n}\n\n/**\n * Fetch a component from registry with specific or latest version.\n * Returns both the manifest and the resolved version.\n */\nexport async function fetchComponentVersion(\n\tbaseUrl: string,\n\tname: string,\n\tversion?: string,\n): Promise<{ manifest: ComponentManifest; version: string }> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/components/${name}.json`\n\n\treturn fetchWithCache(`${url}#v=${version ?? \"latest\"}`, (data) => {\n\t\t// 1. Parse as packument\n\t\tconst packumentResult = packumentSchema.safeParse(data)\n\t\tif (!packumentResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid packument format for \"${name}\": ${packumentResult.error.message}`,\n\t\t\t)\n\t\t}\n\n\t\tconst packument = packumentResult.data\n\n\t\t// 2. Resolve version (specific or latest)\n\t\tconst resolvedVersion = version ?? packument[\"dist-tags\"].latest\n\t\tconst manifest = packument.versions[resolvedVersion]\n\n\t\tif (!manifest) {\n\t\t\tif (version) {\n\t\t\t\tconst availableVersions = Object.keys(packument.versions).join(\", \")\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Component \"${name}\" has no version \"${version}\". Available: ${availableVersions}`,\n\t\t\t\t)\n\t\t\t}\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Component \"${name}\" has no manifest for latest version ${resolvedVersion}`,\n\t\t\t)\n\t\t}\n\n\t\t// 3. Validate manifest\n\t\tconst manifestResult = componentManifestSchema.safeParse(manifest)\n\t\tif (!manifestResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": ${manifestResult.error.message}`,\n\t\t\t)\n\t\t}\n\n\t\treturn { manifest: manifestResult.data, version: resolvedVersion }\n\t})\n}\n\n/**\n * Fetch actual file content from registry\n */\nexport async function fetchFileContent(\n\tbaseUrl: string,\n\tcomponentName: string,\n\tfilePath: string,\n): Promise<string> {\n\tconst url = `${baseUrl.replace(/\\/$/, \"\")}/components/${componentName}/${filePath}`\n\n\tlet response: Response\n\ttry {\n\t\tresponse = await fetch(url)\n\t} catch (error) {\n\t\tthrow new NetworkError(\n\t\t\t`Network request failed for ${url}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t{ url },\n\t\t)\n\t}\n\n\tif (!response.ok) {\n\t\tthrow new NetworkError(\n\t\t\t`Failed to fetch file ${filePath} for ${componentName} from ${url}: ${response.status} ${response.statusText}`,\n\t\t\t{ url, status: response.status, statusText: response.statusText },\n\t\t)\n\t}\n\n\treturn response.text()\n}\n\n// Re-export types for convenience\nexport type { ComponentManifest, RegistryIndex, McpServer }\n\n/** @internal Clear cache for testing purposes only */\nexport function _clearFetcherCacheForTests(): void {\n\tcache.clear()\n}\n",
|
|
44
45
|
"function e(e,t,n){let r=n=>e(n,...t);return n===void 0?r:Object.assign(r,{lazy:n,lazyArgs:t})}export{e as t};\n//# sourceMappingURL=lazyDataLastImpl-DtF3cihj.js.map",
|
|
45
46
|
"import{t as e}from\"./lazyDataLastImpl-DtF3cihj.js\";function t(t,n,r){let i=t.length-n.length;if(i===0)return t(...n);if(i===1)return e(t,n,r);throw Error(`Wrong number of arguments`)}export{t};\n//# sourceMappingURL=purry-GjwKKIlp.js.map",
|
|
46
47
|
"function e(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}export{e as isPlainObject};\n//# sourceMappingURL=isPlainObject.js.map",
|
|
47
48
|
"import{t as e}from\"./purry-GjwKKIlp.js\";import{isPlainObject as t}from\"./isPlainObject.js\";function n(...t){return e(r,t)}function r(e,n){let i={...e,...n};for(let a in n){if(!(a in e))continue;let{[a]:o}=e;if(!t(o))continue;let{[a]:s}=n;t(s)&&(i[a]=r(o,s))}return i}export{n as mergeDeep};\n//# sourceMappingURL=mergeDeep.js.map",
|
|
48
49
|
"/**\n * OpenCode Config Merge Utilities\n *\n * Matches OpenCode's mergeConfigWithPlugins behavior:\n * - Deep merge objects using remeda's mergeDeep\n * - Concatenate and deduplicate plugin and instructions arrays\n */\n\nimport { mergeDeep } from \"remeda\"\nimport type { NormalizedOpencodeConfig } from \"../schemas/registry\"\n\n/**\n * Merge two OpenCode config objects with special array handling.\n *\n * Unlike plain mergeDeep which replaces arrays entirely, this function:\n * - Concatenates `plugin` arrays from both configs\n * - Concatenates `instructions` arrays from both configs\n * - Deduplicates entries in both arrays\n *\n * This matches OpenCode's internal mergeConfigWithPlugins behavior.\n *\n * @param target - Base config (accumulated so far)\n * @param source - New config to merge in\n * @returns Merged config with concatenated arrays\n */\nexport function mergeOpencodeConfig(\n\ttarget: NormalizedOpencodeConfig,\n\tsource: NormalizedOpencodeConfig,\n): NormalizedOpencodeConfig {\n\tconst merged = mergeDeep(target, source) as NormalizedOpencodeConfig\n\n\t// Concatenate and deduplicate plugin arrays (matching OpenCode behavior)\n\tif (target.plugin && source.plugin) {\n\t\tmerged.plugin = Array.from(new Set([...target.plugin, ...source.plugin]))\n\t}\n\n\t// Concatenate and deduplicate instructions arrays (matching OpenCode behavior)\n\tif (target.instructions && source.instructions) {\n\t\tmerged.instructions = Array.from(new Set([...target.instructions, ...source.instructions]))\n\t}\n\n\treturn merged\n}\n",
|
|
49
|
-
"/**\n * Dependency Resolver with topological sort\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/resolver.ts\n */\n\nimport type { RegistryConfig } from \"../schemas/config\"\nimport {\n\ttype ComponentManifest,\n\tcreateQualifiedComponent,\n\ttype NormalizedComponentManifest,\n\ttype NormalizedOpencodeConfig,\n\tnormalizeComponentManifest,\n\ttype OpencodeConfig,\n\tparseQualifiedComponent,\n} from \"../schemas/registry\"\nimport {
|
|
50
|
+
"/**\n * Dependency Resolver with topological sort\n * Based on: https://github.com/shadcn-ui/ui/blob/main/packages/shadcn/src/registry/resolver.ts\n */\n\nimport type { RegistryConfig } from \"../schemas/config\"\nimport {\n\ttype ComponentManifest,\n\tcreateQualifiedComponent,\n\ttype NormalizedComponentManifest,\n\ttype NormalizedOpencodeConfig,\n\tnormalizeComponentManifest,\n\ttype OpencodeConfig,\n\tparseQualifiedComponent,\n} from \"../schemas/registry\"\nimport {\n\tConfigError,\n\tNetworkError,\n\tNotFoundError,\n\tOCXError,\n\tValidationError,\n} from \"../utils/errors\"\nimport { fetchComponent } from \"./fetcher\"\nimport { mergeOpencodeConfig } from \"./merge\"\n\n/**\n * Parse a component reference into namespace and component name.\n * - \"kdco/researcher\" -> { namespace: \"kdco\", component: \"researcher\" }\n * - \"researcher\" (with defaultNamespace) -> { namespace: defaultNamespace, component: \"researcher\" }\n * - \"researcher\" (without defaultNamespace) -> throws error\n */\nexport function parseComponentRef(\n\tref: string,\n\tdefaultNamespace?: string,\n): { namespace: string; component: string } {\n\t// Check if it's a qualified reference (contains /)\n\tif (ref.includes(\"/\")) {\n\t\treturn parseQualifiedComponent(ref)\n\t}\n\n\t// Bare name - use default namespace if provided\n\tif (defaultNamespace) {\n\t\treturn { namespace: defaultNamespace, component: ref }\n\t}\n\n\tthrow new ValidationError(`Component '${ref}' must include a namespace (e.g., 'kdco/${ref}')`)\n}\n\nexport interface ResolvedComponent extends NormalizedComponentManifest {\n\t/** The namespace this component belongs to */\n\tnamespace: string\n\t/** The registry name from ocx.jsonc */\n\tregistryName: string\n\tbaseUrl: string\n\t/** Qualified name (namespace/component) */\n\tqualifiedName: string\n}\n\nexport interface ResolvedDependencies {\n\t/** All components in dependency order (dependencies first) */\n\tcomponents: ResolvedComponent[]\n\t/** Install order (component names) */\n\tinstallOrder: string[]\n\t/** Aggregated npm dependencies from all components */\n\tnpmDependencies: string[]\n\t/** Aggregated npm dev dependencies from all components */\n\tnpmDevDependencies: string[]\n\t/** Merged opencode configuration from all components (deep merged) */\n\topencode: OpencodeConfig\n}\n\n/**\n * Resolve all dependencies for a set of components across multiple registries\n * Returns components in topological order (dependencies first)\n */\nexport async function resolveDependencies(\n\tregistries: Record<string, RegistryConfig>,\n\tcomponentNames: string[],\n): Promise<ResolvedDependencies> {\n\tconst resolved = new Map<string, ResolvedComponent>()\n\tconst visiting = new Set<string>()\n\tconst npmDeps = new Set<string>()\n\tconst npmDevDeps = new Set<string>()\n\tlet opencode: NormalizedOpencodeConfig = {}\n\n\tasync function resolve(\n\t\tcomponentNamespace: string,\n\t\tcomponentName: string,\n\t\tpath: string[] = [],\n\t): Promise<void> {\n\t\tconst qualifiedName = createQualifiedComponent(componentNamespace, componentName)\n\n\t\t// Already resolved\n\t\tif (resolved.has(qualifiedName)) {\n\t\t\treturn\n\t\t}\n\n\t\t// Cycle detection\n\t\tif (visiting.has(qualifiedName)) {\n\t\t\tconst cycle = [...path, qualifiedName].join(\" → \")\n\t\t\tthrow new ValidationError(`Circular dependency detected: ${cycle}`)\n\t\t}\n\n\t\tvisiting.add(qualifiedName)\n\n\t\t// Look up the registry for this namespace\n\t\tconst regConfig = registries[componentNamespace]\n\t\tif (!regConfig) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Registry '${componentNamespace}' not configured. Add it to ocx.jsonc registries.`,\n\t\t\t)\n\t\t}\n\n\t\t// Fetch component from the specific registry\n\t\tlet component: ComponentManifest\n\t\ttry {\n\t\t\tcomponent = await fetchComponent(regConfig.url, componentName)\n\t\t} catch (err) {\n\t\t\t// Re-throw network errors as-is (preserves exit code 69)\n\t\t\tif (err instanceof NetworkError) {\n\t\t\t\tthrow err\n\t\t\t}\n\t\t\t// Convert NotFoundError to friendly message\n\t\t\tif (err instanceof NotFoundError) {\n\t\t\t\tthrow new NotFoundError(\n\t\t\t\t\t`Component '${componentName}' not found in registry '${componentNamespace}'.`,\n\t\t\t\t)\n\t\t\t}\n\t\t\t// Re-throw other OCXError subclasses as-is\n\t\t\tif (err instanceof OCXError) {\n\t\t\t\tthrow err\n\t\t\t}\n\t\t\t// Wrap unknown errors as NetworkError (likely connectivity issue)\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Failed to fetch component '${componentName}' from registry '${componentNamespace}': ${err instanceof Error ? err.message : String(err)}`,\n\t\t\t\t{ url: regConfig.url },\n\t\t\t)\n\t\t}\n\n\t\t// Resolve dependencies first (depth-first)\n\t\tfor (const dep of component.dependencies) {\n\t\t\t// Parse dependency: bare name = same namespace, \"foo/bar\" = cross-namespace\n\t\t\tconst depRef = parseComponentRef(dep, componentNamespace)\n\t\t\tawait resolve(depRef.namespace, depRef.component, [...path, qualifiedName])\n\t\t}\n\n\t\t// Normalize the component (expand Cargo-style shorthands)\n\t\tconst normalizedComponent = normalizeComponentManifest(component)\n\n\t\t// Add to resolved (dependencies are already added)\n\t\tresolved.set(qualifiedName, {\n\t\t\t...normalizedComponent,\n\t\t\tnamespace: componentNamespace,\n\t\t\tregistryName: componentNamespace,\n\t\t\tbaseUrl: regConfig.url,\n\t\t\tqualifiedName,\n\t\t})\n\t\tvisiting.delete(qualifiedName)\n\n\t\t// Collect npm dependencies\n\t\tif (component.npmDependencies) {\n\t\t\tfor (const dep of component.npmDependencies) {\n\t\t\t\tnpmDeps.add(dep)\n\t\t\t}\n\t\t}\n\t\tif (component.npmDevDependencies) {\n\t\t\tfor (const dep of component.npmDevDependencies) {\n\t\t\t\tnpmDevDeps.add(dep)\n\t\t\t}\n\t\t}\n\n\t\t// Deep merge opencode config (component takes precedence - ShadCN style)\n\t\t// Use normalizedComponent to ensure MCP servers are converted from string URLs to full objects\n\t\tif (normalizedComponent.opencode) {\n\t\t\topencode = mergeOpencodeConfig(\n\t\t\t\topencode,\n\t\t\t\tnormalizedComponent.opencode as NormalizedOpencodeConfig,\n\t\t\t)\n\t\t}\n\t}\n\n\t// Resolve all requested components\n\tfor (const name of componentNames) {\n\t\t// Parse qualified component name (must include namespace)\n\t\tconst ref = parseComponentRef(name)\n\t\tawait resolve(ref.namespace, ref.component)\n\t}\n\n\t// Convert to array (already in topological order due to depth-first)\n\tconst components = Array.from(resolved.values())\n\tconst installOrder = Array.from(resolved.keys())\n\n\treturn {\n\t\tcomponents,\n\t\tinstallOrder,\n\t\tnpmDependencies: Array.from(npmDeps),\n\t\tnpmDevDependencies: Array.from(npmDevDeps),\n\t\topencode,\n\t}\n}\n",
|
|
50
51
|
"/**\n * OpenCode Config Updater\n *\n * ShadCN-style updater for opencode.json configuration.\n * Component takes precedence - just deep merge, user uses git to review/revert.\n *\n * Key features:\n * - Preserves JSONC comments using jsonc-parser's modify/applyEdits\n * - Direct passthrough of component's opencode block\n * - No \"smart\" merging - component wins, git is your safety net\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport path from \"node:path\"\nimport { applyEdits, type ModificationOptions, modify, parse as parseJsonc } from \"jsonc-parser\"\nimport type { OpencodeConfig } from \"../schemas/registry\"\n\nconst LOCAL_CONFIG_DIR = \".opencode\"\n\n/**\n * Check if cwd is inside the global config directory (or is the directory itself).\n * When true, configs should be at the root (flattened), not in .opencode/\n *\n * This handles:\n * - ~/.config/opencode/ itself\n * - ~/.config/opencode/profiles/<name>/ (profile directories)\n * - Any other subdirectory under ~/.config/opencode/\n */\nfunction isGlobalConfigPath(cwd: string): boolean {\n\tconst base = process.env.XDG_CONFIG_HOME || path.join(homedir(), \".config\")\n\tconst globalConfigDir = path.resolve(base, \"opencode\")\n\tconst resolvedCwd = path.resolve(cwd)\n\n\t// Check if cwd is the global dir itself, or a subdirectory of it\n\tif (resolvedCwd === globalConfigDir) {\n\t\treturn true\n\t}\n\n\tconst relative = path.relative(globalConfigDir, resolvedCwd)\n\t// Inside if: relative path doesn't start with \"..\" and isn't absolute\n\treturn relative !== \"\" && !relative.startsWith(\"..\") && !path.isAbsolute(relative)\n}\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * The structure of opencode.json file.\n * Mirrors OpencodeConfig from registry.ts exactly.\n */\nexport interface OpencodeJsonConfig {\n\t$schema?: string\n\tmcp?: Record<string, unknown>\n\ttools?: Record<string, boolean>\n\tagent?: Record<string, unknown>\n\tplugin?: string[]\n\tinstructions?: string[]\n\tpermission?: unknown\n\t[key: string]: unknown\n}\n\nexport interface UpdateOpencodeJsonConfigResult {\n\t/** Path to the config file */\n\tpath: string\n\t/** Whether the file was created (vs updated) */\n\tcreated: boolean\n\t/** Whether any changes were made */\n\tchanged: boolean\n}\n\n// =============================================================================\n// JSONC MODIFICATION OPTIONS\n// =============================================================================\n\nconst JSONC_OPTIONS: ModificationOptions = {\n\tformattingOptions: {\n\t\ttabSize: 2,\n\t\tinsertSpaces: false,\n\t\teol: \"\\n\",\n\t},\n}\n\n// =============================================================================\n// FILE OPERATIONS\n// =============================================================================\n\n// Minimal template for new opencode.jsonc files\nconst OPENCODE_CONFIG_TEMPLATE = `{\n\t\"$schema\": \"https://opencode.ai/config.json\"\n\t// Add MCP servers, tools, plugins here\n}\n`\n\n/**\n * Find opencode config file path.\n * For global config paths (inside ~/.config/opencode/), configs live at root.\n * For local projects, checks .opencode/ first, then root. Defaults to .opencode/\n * @returns Object with path and whether it exists\n */\nexport function findOpencodeConfig(cwd: string): { path: string; exists: boolean } {\n\t// Global config paths use flattened structure (no .opencode/ subdirectory)\n\tif (isGlobalConfigPath(cwd)) {\n\t\tconst rootJsonc = path.join(cwd, \"opencode.jsonc\")\n\t\tconst rootJson = path.join(cwd, \"opencode.json\")\n\n\t\tif (existsSync(rootJsonc)) {\n\t\t\treturn { path: rootJsonc, exists: true }\n\t\t}\n\t\tif (existsSync(rootJson)) {\n\t\t\treturn { path: rootJson, exists: true }\n\t\t}\n\n\t\t// Default to root for global paths\n\t\treturn { path: rootJsonc, exists: false }\n\t}\n\n\t// Local projects: check .opencode/ first (preferred location)\n\tconst dotOpencodeJsonc = path.join(cwd, LOCAL_CONFIG_DIR, \"opencode.jsonc\")\n\tconst dotOpencodeJson = path.join(cwd, LOCAL_CONFIG_DIR, \"opencode.json\")\n\n\tif (existsSync(dotOpencodeJsonc)) {\n\t\treturn { path: dotOpencodeJsonc, exists: true }\n\t}\n\tif (existsSync(dotOpencodeJson)) {\n\t\treturn { path: dotOpencodeJson, exists: true }\n\t}\n\n\t// Check root (legacy location)\n\tconst rootJsonc = path.join(cwd, \"opencode.jsonc\")\n\tconst rootJson = path.join(cwd, \"opencode.json\")\n\n\tif (existsSync(rootJsonc)) {\n\t\treturn { path: rootJsonc, exists: true }\n\t}\n\tif (existsSync(rootJson)) {\n\t\treturn { path: rootJson, exists: true }\n\t}\n\n\t// Neither exists - default to .opencode/ for new files\n\treturn { path: dotOpencodeJsonc, exists: false }\n}\n\n/**\n * Ensure opencode.jsonc exists, creating a minimal template if not.\n * This is an upsert operation - does nothing if file already exists.\n * @param cwd - Directory to create the config in\n * @returns Object with path and whether it was created\n */\nexport async function ensureOpencodeConfig(\n\tcwd: string,\n): Promise<{ path: string; created: boolean }> {\n\tconst { path: configPath, exists } = findOpencodeConfig(cwd)\n\n\t// Early exit: config already exists\n\tif (exists) {\n\t\treturn { path: configPath, created: false }\n\t}\n\n\t// Ensure directory exists\n\tawait mkdir(path.dirname(configPath), { recursive: true })\n\n\t// Create minimal template\n\tawait Bun.write(configPath, OPENCODE_CONFIG_TEMPLATE)\n\treturn { path: configPath, created: true }\n}\n\n/**\n * Read opencode.json or opencode.jsonc from a directory\n * Returns both parsed config and raw content (for comment preservation)\n */\nexport async function readOpencodeJsonConfig(cwd: string): Promise<{\n\tconfig: OpencodeJsonConfig\n\tcontent: string\n\tpath: string\n} | null> {\n\tconst { path: configPath, exists } = findOpencodeConfig(cwd)\n\n\tif (!exists) {\n\t\treturn null\n\t}\n\n\tconst file = Bun.file(configPath)\n\tconst content = await file.text()\n\treturn {\n\t\tconfig: parseJsonc(content, [], { allowTrailingComma: true }) as OpencodeJsonConfig,\n\t\tcontent,\n\t\tpath: configPath,\n\t}\n}\n\n/**\n * Write config content to file\n */\nasync function writeOpencodeJsonConfig(path: string, content: string): Promise<void> {\n\tawait Bun.write(path, content)\n}\n\n// =============================================================================\n// DEEP MERGE HELPER\n// =============================================================================\n\n/**\n * Get the value at a JSON path from content\n */\nfunction getValueAtPath(content: string, path: (string | number)[]): unknown {\n\tconst parsed = parseJsonc(content, [], { allowTrailingComma: true })\n\tlet current: unknown = parsed\n\tfor (const segment of path) {\n\t\tif (current === null || current === undefined) return undefined\n\t\tif (typeof current !== \"object\") return undefined\n\t\tcurrent = (current as Record<string | number, unknown>)[segment]\n\t}\n\treturn current\n}\n\n/**\n * Apply a value at a JSON path using jsonc-parser (preserves comments).\n * Recursively handles objects and arrays.\n */\nfunction applyValueAtPath(content: string, path: (string | number)[], value: unknown): string {\n\tif (value === null || value === undefined) {\n\t\treturn content\n\t}\n\n\t// For objects, check if we can recursively merge or need to replace entirely\n\tif (typeof value === \"object\" && !Array.isArray(value)) {\n\t\tconst existingValue = getValueAtPath(content, path)\n\n\t\t// If existing value is a primitive (string, number, boolean) but new value is an object,\n\t\t// we must replace the entire value - can't add properties to a primitive\n\t\tif (\n\t\t\texistingValue !== undefined &&\n\t\t\t(existingValue === null || typeof existingValue !== \"object\")\n\t\t) {\n\t\t\tconst edits = modify(content, path, value, JSONC_OPTIONS)\n\t\t\treturn applyEdits(content, edits)\n\t\t}\n\n\t\t// Safe to recursively apply each key\n\t\tlet updatedContent = content\n\t\tfor (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n\t\t\tupdatedContent = applyValueAtPath(updatedContent, [...path, key], val)\n\t\t}\n\t\treturn updatedContent\n\t}\n\n\t// For arrays, set the entire array (component wins)\n\tif (Array.isArray(value)) {\n\t\tconst edits = modify(content, path, value, JSONC_OPTIONS)\n\t\treturn applyEdits(content, edits)\n\t}\n\n\t// For primitives, set directly\n\tconst edits = modify(content, path, value, JSONC_OPTIONS)\n\treturn applyEdits(content, edits)\n}\n\n// =============================================================================\n// MAIN UPDATER\n// =============================================================================\n\n/**\n * Update opencode.json with component's opencode configuration.\n *\n * ShadCN-style: Component takes precedence.\n * - Deep merges the component's opencode block into existing config\n * - Component values win on conflicts\n * - User uses git to review/revert changes\n */\nexport async function updateOpencodeJsonConfig(\n\tcwd: string,\n\topencode: OpencodeConfig,\n): Promise<UpdateOpencodeJsonConfigResult> {\n\tconst existing = await readOpencodeJsonConfig(cwd)\n\n\tlet content: string\n\tlet configPath: string\n\tlet created = false\n\n\tif (existing) {\n\t\tcontent = existing.content\n\t\tconfigPath = existing.path\n\t} else {\n\t\t// Create new config with schema\n\t\tconst config: OpencodeJsonConfig = { $schema: \"https://opencode.ai/config.json\" }\n\t\tcontent = JSON.stringify(config, null, \"\\t\")\n\t\t// Global paths use root, local paths use .opencode/\n\t\tconfigPath = isGlobalConfigPath(cwd)\n\t\t\t? path.join(cwd, \"opencode.jsonc\")\n\t\t\t: path.join(cwd, LOCAL_CONFIG_DIR, \"opencode.jsonc\")\n\t\t// Ensure directory exists for new files\n\t\tawait mkdir(path.dirname(configPath), { recursive: true })\n\t\tcreated = true\n\t}\n\n\tconst originalContent = content\n\n\t// Deep merge each field from the component's opencode block\n\tcontent = applyValueAtPath(content, [], opencode)\n\n\tconst changed = content !== originalContent\n\n\t// Only write if there were changes\n\tif (changed) {\n\t\tawait writeOpencodeJsonConfig(configPath, content)\n\t}\n\n\treturn {\n\t\tpath: configPath,\n\t\tcreated,\n\t\tchanged,\n\t}\n}\n",
|
|
51
52
|
"/**\n * Content comparison utilities for file overwrite detection.\n */\n\n/**\n * Normalize content for comparison by standardizing line endings and trimming.\n */\nfunction normalizeContent(content: string): string {\n\treturn content.replace(/\\r\\n/g, \"\\n\").trim()\n}\n\n/**\n * Compare file content, normalizing line endings.\n * Returns true if content is identical after normalization.\n */\nexport function isContentIdentical(existing: string, incoming: string): boolean {\n\treturn normalizeContent(existing) === normalizeContent(incoming)\n}\n",
|
|
52
53
|
"/**\n * Environment detection utilities\n * Detects CI, TTY, color support for proper output handling\n */\n\n/** Running in CI environment */\nexport const isCI = Boolean(\n\tprocess.env.CI ||\n\t\tprocess.env.GITHUB_ACTIONS ||\n\t\tprocess.env.GITLAB_CI ||\n\t\tprocess.env.CIRCLECI ||\n\t\tprocess.env.JENKINS_URL ||\n\t\tprocess.env.BUILDKITE,\n)\n\n/** Running in interactive terminal */\nexport const isTTY = Boolean(process.stdout.isTTY && !isCI)\n\n/** Terminal supports colors */\nexport const supportsColor = Boolean(\n\tisTTY && process.env.FORCE_COLOR !== \"0\" && process.env.NO_COLOR === undefined,\n)\n\n/**\n * Parse a boolean environment variable with explicit semantics.\n *\n * Truthy: \"true\", \"1\", \"yes\", \"on\" (case-insensitive)\n * Falsy: \"false\", \"0\", \"no\", \"off\" (case-insensitive)\n *\n * @param value - The environment variable value\n * @param defaultValue - Default if value is empty/undefined/invalid\n * @returns Parsed boolean value\n *\n * @example\n * const noUpdateCheck = parseEnvBool(process.env.OCX_NO_UPDATE_CHECK, false)\n */\nexport function parseEnvBool(value: string | undefined, defaultValue: boolean): boolean {\n\t// Guard: empty or undefined returns default\n\tif (value == null || value === \"\") {\n\t\treturn defaultValue\n\t}\n\n\tconst normalized = value.trim().toLowerCase()\n\n\t// Explicit truthy values\n\tif (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\" || normalized === \"on\") {\n\t\treturn true\n\t}\n\n\t// Explicit falsy values\n\tif (normalized === \"false\" || normalized === \"0\" || normalized === \"no\" || normalized === \"off\") {\n\t\treturn false\n\t}\n\n\t// Unknown value: fall back to default\n\treturn defaultValue\n}\n",
|
|
53
54
|
"/**\n * Git repository context detection utilities.\n *\n * Provides typed detection of git repository context while avoiding\n * pollution from inherited GIT_DIR/GIT_WORK_TREE environment variables.\n */\n\nimport { basename, resolve } from \"node:path\"\n\n/**\n * Creates a clean environment without inherited git directory overrides.\n * Prevents git commands from using wrong repository context.\n * @returns A copy of process.env without GIT_DIR and GIT_WORK_TREE\n */\nexport function getGitEnv(): NodeJS.ProcessEnv {\n\tconst { GIT_DIR: _, GIT_WORK_TREE: __, ...cleanEnv } = process.env\n\treturn cleanEnv\n}\n\n/**\n * Represents a valid git repository context with resolved paths.\n */\nexport interface GitContext {\n\t/** Absolute path to the .git directory */\n\tgitDir: string\n\t/** Absolute path to the working tree root */\n\tworkTree: string\n}\n\n/**\n * Detects if cwd is inside a git repository.\n * Clears inherited GIT_DIR/GIT_WORK_TREE to avoid pollution from parent processes.\n *\n * @param cwd - Directory to check for git repository\n * @returns GitContext if in a repo, null otherwise\n *\n * @example\n * ```ts\n * const gitContext = await detectGitRepo(process.cwd())\n * if (!gitContext) {\n * console.log(\"Not in a git repository\")\n * return\n * }\n * console.log(`Git dir: ${gitContext.gitDir}`)\n * ```\n */\nexport async function detectGitRepo(cwd: string): Promise<GitContext | null> {\n\t// Detect git directory\n\tconst gitDirProc = Bun.spawn([\"git\", \"rev-parse\", \"--git-dir\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst gitDirExitCode = await gitDirProc.exited\n\n\t// Early exit: not a git repository\n\tif (gitDirExitCode !== 0) {\n\t\treturn null\n\t}\n\n\tconst gitDirOutput = await new Response(gitDirProc.stdout).text()\n\tconst gitDirRaw = gitDirOutput.trim()\n\n\t// Early exit: empty output means something went wrong\n\tif (!gitDirRaw) {\n\t\treturn null\n\t}\n\n\t// Detect work tree root\n\tconst workTreeProc = Bun.spawn([\"git\", \"rev-parse\", \"--show-toplevel\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst workTreeExitCode = await workTreeProc.exited\n\n\t// Early exit: could not determine work tree (bare repo or error)\n\tif (workTreeExitCode !== 0) {\n\t\treturn null\n\t}\n\n\tconst workTreeOutput = await new Response(workTreeProc.stdout).text()\n\tconst workTree = workTreeOutput.trim()\n\n\t// Early exit: empty work tree\n\tif (!workTree) {\n\t\treturn null\n\t}\n\n\t// Resolve gitDir to absolute path (it may be relative like \".git\")\n\tconst gitDir = resolve(cwd, gitDirRaw)\n\n\treturn { gitDir, workTree }\n}\n\n/**\n * Gets the current git branch name.\n *\n * Resolution order:\n * 1. symbolic-ref (normal branch)\n * 2. describe --tags --exact-match (tagged commit)\n * 3. rev-parse --short (detached HEAD - short commit hash)\n *\n * @param cwd - Directory to check\n * @returns Branch name, tag, or short commit hash; null if not a git repo\n *\n * @example\n * ```ts\n * const branch = await getBranch(process.cwd())\n * if (branch) {\n * console.log(`Current branch: ${branch}`)\n * }\n * ```\n */\nexport async function getBranch(cwd: string): Promise<string | null> {\n\t// Try symbolic-ref first (normal branch)\n\tconst symbolicProc = Bun.spawn([\"git\", \"symbolic-ref\", \"--short\", \"HEAD\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst symbolicExitCode = await symbolicProc.exited\n\n\tif (symbolicExitCode === 0) {\n\t\tconst output = await new Response(symbolicProc.stdout).text()\n\t\tconst branch = output.trim()\n\t\tif (branch) {\n\t\t\treturn branch\n\t\t}\n\t}\n\n\t// Fallback: try exact tag match\n\tconst tagProc = Bun.spawn([\"git\", \"describe\", \"--tags\", \"--exact-match\", \"HEAD\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst tagExitCode = await tagProc.exited\n\n\tif (tagExitCode === 0) {\n\t\tconst output = await new Response(tagProc.stdout).text()\n\t\tconst tag = output.trim()\n\t\tif (tag) {\n\t\t\treturn tag\n\t\t}\n\t}\n\n\t// Fallback: short commit hash (detached HEAD)\n\tconst hashProc = Bun.spawn([\"git\", \"rev-parse\", \"--short\", \"HEAD\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst hashExitCode = await hashProc.exited\n\n\tif (hashExitCode === 0) {\n\t\tconst output = await new Response(hashProc.stdout).text()\n\t\tconst hash = output.trim()\n\t\tif (hash) {\n\t\t\treturn hash\n\t\t}\n\t}\n\n\t// Not a git repo or all methods failed\n\treturn null\n}\n\n/**\n * Gets the repository name from the git root directory.\n *\n * @param cwd - Directory to check\n * @returns Repository name (basename of root), null if not a git repo\n *\n * @example\n * ```ts\n * const repoName = await getRepoName(process.cwd())\n * if (repoName) {\n * console.log(`Repository: ${repoName}`)\n * }\n * ```\n */\nexport async function getRepoName(cwd: string): Promise<string | null> {\n\tconst proc = Bun.spawn([\"git\", \"rev-parse\", \"--show-toplevel\"], {\n\t\tcwd,\n\t\tenv: getGitEnv(),\n\t\tstdout: \"pipe\",\n\t\tstderr: \"pipe\",\n\t})\n\n\tconst exitCode = await proc.exited\n\n\t// Early exit: not a git repository\n\tif (exitCode !== 0) {\n\t\treturn null\n\t}\n\n\tconst output = await new Response(proc.stdout).text()\n\tconst rootPath = output.trim()\n\n\t// Early exit: empty output\n\tif (!rootPath) {\n\t\treturn null\n\t}\n\n\treturn basename(rootPath)\n}\n\n/**\n * Combined git information for repository context.\n */\nexport interface GitInfo {\n\t/** Repository name (basename of git root) */\n\trepoName: string | null\n\t/** Current branch, tag, or short commit hash */\n\tbranch: string | null\n}\n\n/**\n * Gets combined git repository information.\n *\n * @param cwd - Directory to check\n * @returns Object with repoName and branch (both null if not a git repo)\n *\n * @example\n * ```ts\n * const info = await getGitInfo(process.cwd())\n * console.log(`${info.repoName}@${info.branch}`)\n * ```\n */\nexport async function getGitInfo(cwd: string): Promise<GitInfo> {\n\tconst [repoName, branch] = await Promise.all([getRepoName(cwd), getBranch(cwd)])\n\n\treturn { repoName, branch }\n}\n",
|
|
55
|
+
"/**\n * Build Registry Library Function\n *\n * Pure function to build a registry from source.\n * No CLI concerns - just input/output.\n */\n\nimport { mkdir } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { normalizeFile, registrySchema } from \"../schemas/registry\"\n\nexport interface BuildRegistryOptions {\n\t/** Source directory containing registry.jsonc (or registry.json) and files/ */\n\tsource: string\n\t/** Output directory for built registry */\n\tout: string\n}\n\nexport interface BuildRegistryResult {\n\t/** Name of the registry */\n\tname: string\n\t/** Namespace of the registry */\n\tnamespace: string\n\t/** Version of the registry */\n\tversion: string\n\t/** Number of components built */\n\tcomponentsCount: number\n\t/** Absolute path to output directory */\n\toutputPath: string\n}\n\nexport class BuildRegistryError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly errors: string[] = [],\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"BuildRegistryError\"\n\t}\n}\n\n/**\n * Build a registry from source.\n *\n * @param options - Build options\n * @returns Build result with metadata\n * @throws {BuildRegistryError} If validation fails or files are missing\n */\nexport async function buildRegistry(options: BuildRegistryOptions): Promise<BuildRegistryResult> {\n\tconst { source: sourcePath, out: outPath } = options\n\n\t// Read registry file from source (prefer .jsonc over .json)\n\tconst jsoncFile = Bun.file(join(sourcePath, \"registry.jsonc\"))\n\tconst jsonFile = Bun.file(join(sourcePath, \"registry.json\"))\n\tconst jsoncExists = await jsoncFile.exists()\n\tconst jsonExists = await jsonFile.exists()\n\n\tif (!jsoncExists && !jsonExists) {\n\t\tthrow new BuildRegistryError(\"No registry.jsonc or registry.json found in source directory\")\n\t}\n\n\tconst registryFile = jsoncExists ? jsoncFile : jsonFile\n\tconst content = await registryFile.text()\n\tconst registryData = parseJsonc(content, [], { allowTrailingComma: true })\n\n\t// Validate registry schema\n\tconst parseResult = registrySchema.safeParse(registryData)\n\tif (!parseResult.success) {\n\t\tconst errors = parseResult.error.errors.map((e) => `${e.path.join(\".\")}: ${e.message}`)\n\t\tthrow new BuildRegistryError(\"Registry validation failed\", errors)\n\t}\n\n\tconst registry = parseResult.data\n\tconst validationErrors: string[] = []\n\n\t// Create output directory structure\n\tconst componentsDir = join(outPath, \"components\")\n\tawait mkdir(componentsDir, { recursive: true })\n\n\t// Generate packument and copy files for each component\n\tfor (const component of registry.components) {\n\t\tconst packument = {\n\t\t\tname: component.name,\n\t\t\tversions: {\n\t\t\t\t[registry.version]: component,\n\t\t\t},\n\t\t\t\"dist-tags\": {\n\t\t\t\tlatest: registry.version,\n\t\t\t},\n\t\t}\n\n\t\t// Write manifest to components/[name].json\n\t\tconst packumentPath = join(componentsDir, `${component.name}.json`)\n\t\tawait Bun.write(packumentPath, JSON.stringify(packument, null, 2))\n\n\t\t// Copy files to components/[name]/[path]\n\t\tfor (const rawFile of component.files) {\n\t\t\tconst file = normalizeFile(rawFile, component.type)\n\t\t\tconst sourceFilePath = join(sourcePath, \"files\", file.path)\n\t\t\tconst destFilePath = join(componentsDir, component.name, file.path)\n\t\t\tconst destFileDir = dirname(destFilePath)\n\n\t\t\tif (!(await Bun.file(sourceFilePath).exists())) {\n\t\t\t\tvalidationErrors.push(`${component.name}: Source file not found at ${sourceFilePath}`)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tawait mkdir(destFileDir, { recursive: true })\n\t\t\tconst sourceFile = Bun.file(sourceFilePath)\n\t\t\tawait Bun.write(destFilePath, sourceFile)\n\t\t}\n\t}\n\n\t// Fail fast if source files were missing during copy\n\tif (validationErrors.length > 0) {\n\t\tthrow new BuildRegistryError(\n\t\t\t`Build failed with ${validationErrors.length} errors`,\n\t\t\tvalidationErrors,\n\t\t)\n\t}\n\n\t// Generate index.json at the root\n\tconst index = {\n\t\tname: registry.name,\n\t\tnamespace: registry.namespace,\n\t\tversion: registry.version,\n\t\tauthor: registry.author,\n\t\t// Include version requirements for compatibility checking\n\t\t...(registry.opencode && { opencode: registry.opencode }),\n\t\t...(registry.ocx && { ocx: registry.ocx }),\n\t\tcomponents: registry.components.map((c) => ({\n\t\t\tname: c.name,\n\t\t\ttype: c.type,\n\t\t\tdescription: c.description,\n\t\t})),\n\t}\n\n\tawait Bun.write(join(outPath, \"index.json\"), JSON.stringify(index, null, 2))\n\n\t// Generate .well-known/ocx.json for registry discovery\n\tconst wellKnownDir = join(outPath, \".well-known\")\n\tawait mkdir(wellKnownDir, { recursive: true })\n\tconst discovery = { registry: \"/index.json\" }\n\tawait Bun.write(join(wellKnownDir, \"ocx.json\"), JSON.stringify(discovery, null, 2))\n\n\treturn {\n\t\tname: registry.name,\n\t\tnamespace: registry.namespace,\n\t\tversion: registry.version,\n\t\tcomponentsCount: registry.components.length,\n\t\toutputPath: outPath,\n\t}\n}\n",
|
|
54
56
|
"'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n",
|
|
55
57
|
"/**\n * Logger utility with quiet/verbose modes\n * Inspired by ShadCN's logger pattern\n */\n\nimport kleur from \"kleur\"\nimport { supportsColor } from \"./env\"\n\n// Disable colors if not supported\nif (!supportsColor) {\n\tkleur.enabled = false\n}\n\nexport interface LoggerOptions {\n\tquiet?: boolean\n\tverbose?: boolean\n}\n\nlet options: LoggerOptions = {}\n\nexport function setLoggerOptions(opts: LoggerOptions): void {\n\toptions = opts\n}\n\nexport const logger = {\n\tinfo(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(kleur.blue(\"info\"), ...args)\n\t},\n\n\tsuccess(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(kleur.green(\"✓\"), ...args)\n\t},\n\n\twarn(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.warn(kleur.yellow(\"warn\"), ...args)\n\t},\n\n\terror(...args: unknown[]): void {\n\t\t// Errors are always shown\n\t\tconsole.error(kleur.red(\"error\"), ...args)\n\t},\n\n\tdebug(...args: unknown[]): void {\n\t\tif (!options.verbose) return\n\t\tconsole.log(kleur.gray(\"debug\"), ...args)\n\t},\n\n\tlog(...args: unknown[]): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(...args)\n\t},\n\n\t/** Print a blank line */\n\tbreak(): void {\n\t\tif (options.quiet) return\n\t\tconsole.log(\"\")\n\t},\n}\n\n/** Highlight text with color */\nexport const highlight = {\n\tcomponent: (text: string) => kleur.cyan(text),\n\tpath: (text: string) => kleur.green(text),\n\tcommand: (text: string) => kleur.yellow(text),\n\turl: (text: string) => kleur.blue().underline(text),\n\terror: (text: string) => kleur.red(text),\n\tdim: (text: string) => kleur.gray(text),\n\tbold: (text: string) => kleur.bold(text),\n}\n",
|
|
56
|
-
"/**\n * Error handler for CLI commands\n * Converts errors to user-friendly output with proper exit codes\n */\n\nimport { ZodError } from \"zod\"\n\nimport {
|
|
58
|
+
"/**\n * Error handler for CLI commands\n * Converts errors to user-friendly output with proper exit codes\n */\n\nimport { ZodError } from \"zod\"\n\nimport { BuildRegistryError } from \"../lib/build-registry\"\nimport {\n\tEXIT_CODES,\n\tIntegrityError,\n\tInvalidProfileNameError,\n\tNetworkError,\n\tOCXError,\n\tProfileExistsError,\n\tProfileNotFoundError,\n\tRegistryExistsError,\n} from \"./errors\"\nimport { logger } from \"./logger\"\n\nexport interface HandleErrorOptions {\n\tjson?: boolean\n}\n\n/**\n * Handle errors consistently across all commands\n * Fail-fast: exit immediately with appropriate code\n */\nexport function handleError(error: unknown, options: HandleErrorOptions = {}): never {\n\t// JSON mode: structured output\n\tif (options.json) {\n\t\tconst output = formatErrorAsJson(error)\n\t\tconsole.log(JSON.stringify(output, null, 2))\n\t\tprocess.exit(output.exitCode)\n\t}\n\n\t// OCX errors: known errors with codes\n\tif (error instanceof OCXError) {\n\t\tlogger.error(error.message)\n\t\tprocess.exit(error.exitCode)\n\t}\n\n\t// Zod validation errors: format nicely\n\tif (error instanceof ZodError) {\n\t\tlogger.error(\"Validation failed:\")\n\t\tfor (const issue of error.issues) {\n\t\t\tconst path = issue.path.join(\".\")\n\t\t\tlogger.error(` ${path}: ${issue.message}`)\n\t\t}\n\t\tprocess.exit(EXIT_CODES.CONFIG)\n\t}\n\n\t// Unknown errors\n\tif (error instanceof Error) {\n\t\tlogger.error(error.message)\n\t\tif (process.env.DEBUG) {\n\t\t\tconsole.error(error.stack)\n\t\t}\n\t} else {\n\t\tlogger.error(\"An unknown error occurred\")\n\t}\n\n\tprocess.exit(EXIT_CODES.GENERAL)\n}\n\ninterface JsonErrorOutput {\n\tsuccess: false\n\terror: {\n\t\tcode: string\n\t\tmessage: string\n\t\tdetails?: Record<string, unknown>\n\t}\n\texitCode: number\n\tmeta: {\n\t\ttimestamp: string\n\t}\n}\n\n/**\n * Wraps a command action with consistent error handling.\n * Use this to wrap async command handlers in Commander actions.\n *\n * @example\n * program\n * .command(\"add\")\n * .action(wrapAction(async (options) => {\n * // command implementation\n * }))\n */\nexport function wrapAction<T extends unknown[]>(\n\taction: (...args: T) => void | Promise<void>,\n): (...args: T) => Promise<void> {\n\treturn async (...args: T) => {\n\t\ttry {\n\t\t\tawait action(...args)\n\t\t} catch (error) {\n\t\t\thandleError(error)\n\t\t}\n\t}\n}\n\nfunction formatErrorAsJson(error: unknown): JsonErrorOutput {\n\tif (error instanceof RegistryExistsError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\tregistryName: error.registryName,\n\t\t\t\t\texistingUrl: error.existingUrl,\n\t\t\t\t\tnewUrl: error.newUrl,\n\t\t\t\t\t...(error.targetLabel && { targetLabel: error.targetLabel }),\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof IntegrityError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\tcomponent: error.component,\n\t\t\t\t\texpected: error.expected,\n\t\t\t\t\tfound: error.found,\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof NetworkError) {\n\t\tconst details: Record<string, unknown> = {}\n\t\tif (error.url) details.url = error.url\n\t\tif (error.status !== undefined) details.status = error.status\n\t\tif (error.statusText) details.statusText = error.statusText\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\t...(Object.keys(details).length > 0 && { details }),\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof ProfileNotFoundError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\tprofile: error.profile,\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof ProfileExistsError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\tprofile: error.profile,\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof InvalidProfileNameError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\tprofile: error.profile,\n\t\t\t\t\treason: error.reason,\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof BuildRegistryError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: \"BUILD_ERROR\",\n\t\t\t\tmessage: error.message,\n\t\t\t\tdetails: {\n\t\t\t\t\terrors: error.errors,\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: EXIT_CODES.GENERAL,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof OCXError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: error.code,\n\t\t\t\tmessage: error.message,\n\t\t\t},\n\t\t\texitCode: error.exitCode,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\tif (error instanceof ZodError) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: {\n\t\t\t\tcode: \"VALIDATION_ERROR\",\n\t\t\t\tmessage: error.issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\"; \"),\n\t\t\t\tdetails: {\n\t\t\t\t\tissues: error.issues.map((i) => ({\n\t\t\t\t\t\tpath: i.path.join(\".\"),\n\t\t\t\t\t\tmessage: i.message,\n\t\t\t\t\t\tcode: i.code,\n\t\t\t\t\t})),\n\t\t\t\t},\n\t\t\t},\n\t\t\texitCode: EXIT_CODES.CONFIG,\n\t\t\tmeta: {\n\t\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t},\n\t\t}\n\t}\n\n\treturn {\n\t\tsuccess: false,\n\t\terror: {\n\t\t\tcode: \"UNKNOWN_ERROR\",\n\t\t\tmessage: error instanceof Error ? error.message : \"An unknown error occurred\",\n\t\t},\n\t\texitCode: EXIT_CODES.GENERAL,\n\t\tmeta: {\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t},\n\t}\n}\n",
|
|
57
59
|
"/**\n * JSON output utilities for CI/CD integration\n * Following GitHub CLI patterns for consistent --json flag handling\n */\n\nimport type { ErrorCode } from \"./errors\"\n\n// JSON response envelope\nexport interface JsonResponse<T = unknown> {\n\tsuccess: boolean\n\tdata?: T\n\terror?: {\n\t\tcode: ErrorCode\n\t\tmessage: string\n\t}\n\tmeta?: {\n\t\ttimestamp: string\n\t\tversion: string\n\t}\n}\n\n/**\n * Output data as JSON\n */\nexport function outputJson(data: unknown): void {\n\tconsole.log(JSON.stringify(data, null, 2))\n}\n",
|
|
58
60
|
"/**\n * Path Safety Utilities\n *\n * Two-layer protection against path traversal attacks:\n * 1. Schema validation at parse boundary (rejects malicious patterns)\n * 2. Runtime containment before file writes (verifies resolved paths)\n *\n * Following the 5 Laws:\n * - Parse at boundary: safeRelativePathSchema validates input structure\n * - Fail fast: assertPathInside throws immediately on escape attempts\n * - Intentional naming: isPathInside/assertPathInside are self-documenting\n */\n\nimport path from \"node:path\"\nimport { ValidationError } from \"./errors\"\nimport { isAbsolutePath } from \"./path-helpers\"\n\n/**\n * Check if a resolved path is inside the allowed parent directory.\n * Handles symlinks by using path.resolve().\n *\n * Edge case: When childPath resolves to the same directory as parentPath\n * (e.g., childPath=\"\" or childPath=\".\"), we return true because installing\n * to the project root is explicitly within the project directory.\n *\n * @param childPath - The path to check\n * @param parentPath - The allowed parent directory\n * @returns true if childPath is inside or equal to parentPath\n */\nexport function isPathInside(childPath: string, parentPath: string): boolean {\n\tconst resolvedChild = path.resolve(childPath)\n\tconst resolvedParent = path.resolve(parentPath)\n\n\t// Edge case: same directory is considered \"inside\" (root-level installation)\n\t// This handles componentPath=\"\" or \".\" which resolves to the same path\n\tif (resolvedChild === resolvedParent) {\n\t\treturn true\n\t}\n\n\t// Get relative path from parent to child\n\tconst relative = path.relative(resolvedParent, resolvedChild)\n\n\t// Path is inside if:\n\t// 1. relative is not empty (handled above for same-path case)\n\t// 2. relative doesn't start with '..' (not escaping)\n\t// 3. relative is not absolute (edge case on Windows)\n\treturn !!relative && !relative.startsWith(\"..\") && !isAbsolutePath(relative)\n}\n\n/**\n * Assert that a path is inside the allowed parent directory.\n * Throws ValidationError if path escapes.\n *\n * @param childPath - The path to check\n * @param parentPath - The allowed parent directory\n * @throws ValidationError if path is outside parent\n */\nexport function assertPathInside(childPath: string, parentPath: string): void {\n\tif (!isPathInside(childPath, parentPath)) {\n\t\tthrow new ValidationError(`Path \"${childPath}\" is outside allowed directory \"${parentPath}\"`)\n\t}\n}\n",
|
|
59
61
|
"/**\n * Shared CLI Options Factory\n *\n * Reusable option definitions for consistent command interfaces.\n * Use these factories instead of defining options inline to ensure\n * consistency across commands.\n */\n\nimport { Option } from \"commander\"\nimport { InvalidProfileNameError } from \"./errors\"\n\n// =============================================================================\n// OPTION FACTORIES\n// =============================================================================\n\n/**\n * Shared CLI option factories for consistent command interfaces.\n * Use these instead of defining options inline to ensure consistency.\n */\nexport const sharedOptions = {\n\t/** Working directory option */\n\tcwd: () => new Option(\"--cwd <path>\", \"Working directory\").default(process.cwd()),\n\n\t/** Suppress non-essential output */\n\tquiet: () => new Option(\"-q, --quiet\", \"Suppress output\"),\n\n\t/** Output as JSON */\n\tjson: () => new Option(\"--json\", \"Output as JSON\"),\n\n\t/** Target a specific profile's config */\n\tprofile: () => new Option(\"-p, --profile <name>\", \"Target a specific profile's config\"),\n\n\t/** Skip confirmation prompts */\n\tforce: () => new Option(\"-f, --force\", \"Skip confirmation prompts\"),\n\n\t/** Verbose output */\n\tverbose: () => new Option(\"-v, --verbose\", \"Verbose output\"),\n\n\t/** Install to global OpenCode config */\n\tglobal: new Option(\"-g, --global\", \"Install to global OpenCode config (~/.config/opencode)\"),\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Add common options (cwd, quiet, json) to a command.\n *\n * @example\n * ```typescript\n * const cmd = program.command(\"my-command\")\n * addCommonOptions(cmd)\n * .option(\"--custom\", \"Custom option\")\n * .action(handler)\n * ```\n */\nexport function addCommonOptions<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd\n\t\t.addOption(sharedOptions.cwd())\n\t\t.addOption(sharedOptions.quiet())\n\t\t.addOption(sharedOptions.json())\n}\n\n/**\n * Add force option to a command for skipping confirmation prompts.\n *\n * @example\n * ```typescript\n * const cmd = program.command(\"destructive\")\n * addForceOption(cmd)\n * .action(handler)\n * ```\n */\nexport function addForceOption<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd.addOption(sharedOptions.force())\n}\n\n/**\n * Add verbose option to a command.\n *\n * @example\n * ```typescript\n * const cmd = program.command(\"debug\")\n * addVerboseOption(cmd)\n * .action(handler)\n * ```\n */\nexport function addVerboseOption<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd.addOption(sharedOptions.verbose())\n}\n\n/**\n * Add output options (json, quiet) to a command.\n * Use this for commands that don't need --cwd (like profile commands).\n *\n * @example\n * ```typescript\n * const cmd = program.command(\"init\")\n * addOutputOptions(cmd)\n * .action(handler)\n * ```\n */\nexport function addOutputOptions<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd.addOption(sharedOptions.json()).addOption(sharedOptions.quiet())\n}\n\n/**\n * Adds the --global option to a command.\n */\nexport function addGlobalOption<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd.addOption(sharedOptions.global)\n}\n\n/**\n * Adds the --profile option to a command.\n */\nexport function addProfileOption<T extends { addOption: (opt: Option) => T }>(cmd: T): T {\n\treturn cmd.addOption(sharedOptions.profile())\n}\n\n// =============================================================================\n// VALIDATION HELPERS\n// =============================================================================\n\n/**\n * Validates a profile name and throws if invalid.\n * Profile names must:\n * - Be non-empty\n * - Be 32 characters or less\n * - Start with a letter\n * - Contain only letters, numbers, dots, underscores, or hyphens\n *\n * @throws InvalidProfileNameError if validation fails\n */\nexport function validateProfileName(name: string): void {\n\tif (!name || name.length === 0) {\n\t\tthrow new InvalidProfileNameError(name, \"cannot be empty\")\n\t}\n\tif (name.length > 32) {\n\t\tthrow new InvalidProfileNameError(name, \"must be 32 characters or less\")\n\t}\n\tif (!/^[a-zA-Z][a-zA-Z0-9._-]*$/.test(name)) {\n\t\tthrow new InvalidProfileNameError(\n\t\t\tname,\n\t\t\t\"must start with a letter and contain only alphanumeric characters, dots, underscores, or hyphens\",\n\t\t)\n\t}\n}\n",
|
|
@@ -83,7 +85,6 @@
|
|
|
83
85
|
"/**\n * Version Compatibility Utilities\n *\n * Pure functions for checking version compatibility following the 5 Laws:\n * - Law 1 (Early Exit): Check at top of fetch flow\n * - Law 2 (Parse, Don't Validate): Work with typed results\n * - Law 3 (Atomic Predictability): Pure functions, same input = same output\n * - Law 4 (Fail Fast, Fail Loud): Clear warning messages\n * - Law 5 (Intentional Naming): Self-documenting function names\n */\n\nimport kleur from \"kleur\"\nimport { logger } from \"./logger\"\n\n/**\n * Result of a version compatibility check\n */\nexport type CompatResult =\n\t| { compatible: true }\n\t| { compatible: false; required: string; installed: string; type: \"opencode\" | \"ocx\" }\n\n/** Incompatible result from version check */\nexport type IncompatibleResult = Extract<CompatResult, { compatible: false }>\n\n/**\n * Options for collecting compatibility issues\n */\nexport interface CompatCheckOptions {\n\tregistry: { opencode?: string; ocx?: string }\n\tocxVersion: string\n\topencodeVersion?: string\n}\n\n/**\n * Parse a semver string into components.\n * Returns null if invalid (Law 4: explicit failure state).\n *\n * @param v - Version string (e.g., \"1.2.3\" or \"1.2.3-beta.1\")\n * @returns Parsed version or null if invalid\n */\nfunction parseVersion(v: string): { major: number; minor: number; patch: number } | null {\n\tconst [main = \"\"] = v.split(\"-\") // Ignore prerelease for comparison\n\tconst parts = main.split(\".\")\n\tconst major = parseInt(parts[0] ?? \"\", 10)\n\tconst minor = parseInt(parts[1] ?? \"\", 10)\n\tconst patch = parseInt(parts[2] ?? \"\", 10)\n\n\t// Early exit: invalid version components\n\tif (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch)) {\n\t\treturn null\n\t}\n\n\treturn { major, minor, patch }\n}\n\n/**\n * Compare two semver versions.\n * Returns null if either version is invalid (cannot compare).\n *\n * @param a - First version string (e.g., \"1.2.3\")\n * @param b - Second version string (e.g., \"1.0.0\")\n * @returns Negative if a < b, 0 if equal, positive if a > b, null if invalid\n */\nfunction compareSemver(a: string, b: string): number | null {\n\tconst vA = parseVersion(a)\n\tconst vB = parseVersion(b)\n\n\t// Early exit: can't compare invalid versions\n\tif (!vA || !vB) {\n\t\treturn null\n\t}\n\n\tif (vA.major !== vB.major) return vA.major - vB.major\n\tif (vA.minor !== vB.minor) return vA.minor - vB.minor\n\treturn vA.patch - vB.patch\n}\n\n/**\n * Check if installed version meets minimum requirement.\n * Pure function: same input = same output.\n */\nexport function checkCompatibility(\n\trequiredVersion: string | undefined,\n\tinstalledVersion: string,\n\ttype: \"opencode\" | \"ocx\",\n): CompatResult {\n\t// Early exit: no requirement means compatible\n\tif (!requiredVersion) {\n\t\treturn { compatible: true }\n\t}\n\n\t// Compare versions\n\tconst cmp = compareSemver(installedVersion, requiredVersion)\n\n\t// Early exit: can't compare invalid versions, assume compatible (permissive)\n\tif (cmp === null) {\n\t\treturn { compatible: true }\n\t}\n\n\tif (cmp >= 0) {\n\t\treturn { compatible: true }\n\t}\n\n\treturn {\n\t\tcompatible: false,\n\t\trequired: requiredVersion,\n\t\tinstalled: installedVersion,\n\t\ttype,\n\t}\n}\n\n/**\n * Format a compatibility warning message (pnpm-inspired).\n * WHAT happened, WHY, IMPACT, HOW TO FIX.\n */\nexport function formatCompatWarning(\n\tregistryName: string,\n\tresult: Extract<CompatResult, { compatible: false }>,\n): string {\n\tconst typeLabel = result.type === \"opencode\" ? \"OpenCode\" : \"OCX CLI\"\n\tconst updateCmd =\n\t\tresult.type === \"opencode\" ? \"Update OpenCode to the latest version\" : \"bun update -g ocx\"\n\n\treturn `\n${kleur.yellow().bold(\"⚠ WARN\")} ${kleur.yellow(\"Version compatibility notice\")}\n\n Registry ${kleur.cyan(`\"${registryName}\"`)} requires ${typeLabel} ${kleur.green(result.required)}\n You are running ${typeLabel} ${kleur.red(result.installed)}\n\n This may work fine, but if you encounter issues,\n consider updating: ${kleur.dim(updateCmd)}\n\n To silence: ${kleur.dim(\"--skip-compat-check\")} or set ${kleur.dim('\"skipCompatCheck\": true')} in ocx.jsonc\n`\n}\n\n/**\n * Collect compatibility issues for a registry (PURE).\n * Returns array of incompatible results - empty array means all compatible.\n *\n * @param options - Check options with registry requirements and installed versions\n * @returns Array of incompatible results (empty if all compatible)\n */\nexport function collectCompatIssues(options: CompatCheckOptions): IncompatibleResult[] {\n\tconst { registry, ocxVersion, opencodeVersion } = options\n\tconst issues: IncompatibleResult[] = []\n\n\t// Check OCX CLI version\n\tconst ocxResult = checkCompatibility(registry.ocx, ocxVersion, \"ocx\")\n\tif (!ocxResult.compatible) {\n\t\tissues.push(ocxResult)\n\t}\n\n\t// Check OpenCode version (only if we know it)\n\tif (opencodeVersion) {\n\t\tconst opencodeResult = checkCompatibility(registry.opencode, opencodeVersion, \"opencode\")\n\t\tif (!opencodeResult.compatible) {\n\t\t\tissues.push(opencodeResult)\n\t\t}\n\t}\n\n\treturn issues\n}\n\n/**\n * Print compatibility warnings for collected issues (IMPURE - side effect).\n * Separated from pure collectCompatIssues() following Law 3.\n *\n * @param registryName - Name of the registry for display\n * @param issues - Array of compatibility issues to warn about\n */\nexport function warnCompatIssues(registryName: string, issues: IncompatibleResult[]): void {\n\tfor (const issue of issues) {\n\t\tlogger.log(formatCompatWarning(registryName, issue))\n\t}\n}\n",
|
|
84
86
|
"/**\n * npm Registry Utilities\n *\n * Validates and fetches npm package metadata for OpenCode plugin installation.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Guard clauses at top\n * - Parse Don't Validate: Parse specifiers at boundary into typed structures\n * - Fail Fast: Throw immediately on invalid input\n */\n\nimport { NetworkError, NotFoundError, ValidationError } from \"./errors\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Parsed npm specifier from \"npm:package@version\" syntax.\n * Discriminated union type for type-safe handling.\n */\nexport interface NpmSpecifier {\n\ttype: \"npm\"\n\tname: string\n\tversion?: string\n}\n\n/**\n * Minimal npm package metadata from registry.\n * Only includes fields we need.\n */\nexport interface NpmPackageMetadata {\n\tname: string\n\t\"dist-tags\": {\n\t\tlatest: string\n\t}\n\tversions: Record<string, unknown>\n}\n\n/**\n * Version-specific package.json fields from npm registry.\n * Used for plugin validation.\n */\nexport interface NpmPackageVersion {\n\tname: string\n\tversion: string\n\ttype?: string\n\tmain?: string\n\texports?: unknown\n}\n\n/**\n * Result of plugin validation.\n * Contains warnings for soft checks that passed but may indicate issues.\n */\nexport interface PluginValidationResult {\n\tvalid: true\n\twarnings: string[]\n}\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\nconst NPM_REGISTRY_BASE = \"https://registry.npmjs.org\"\nconst NPM_FETCH_TIMEOUT_MS = 30_000\n\n/**\n * npm package name validation rules:\n * - 1-214 characters\n * - Lowercase only\n * - No spaces\n * - Cannot start with . or _\n * - No path traversal sequences\n */\nconst NPM_NAME_REGEX = /^(?:@[a-z0-9][\\w.-]*\\/)?[a-z0-9][\\w.-]*$/\nconst MAX_NAME_LENGTH = 214\n\n// =============================================================================\n// PARSING\n// =============================================================================\n\n/**\n * Sanitize and validate npm package name.\n * @throws ValidationError for invalid names\n */\nfunction validateNpmPackageName(name: string): void {\n\t// Guard: empty name\n\tif (!name) {\n\t\tthrow new ValidationError(\"npm package name cannot be empty\")\n\t}\n\n\t// Guard: too long\n\tif (name.length > MAX_NAME_LENGTH) {\n\t\tthrow new ValidationError(\n\t\t\t`npm package name exceeds maximum length of ${MAX_NAME_LENGTH} characters: \\`${name}\\``,\n\t\t)\n\t}\n\n\t// Guard: path traversal\n\tif (name.includes(\"..\") || name.includes(\"/./\") || name.startsWith(\"./\")) {\n\t\tthrow new ValidationError(`Invalid npm package name - path traversal detected: \\`${name}\\``)\n\t}\n\n\t// Guard: invalid characters (allows scoped packages like @scope/pkg)\n\tif (!NPM_NAME_REGEX.test(name)) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid npm package name: \\`${name}\\`. ` +\n\t\t\t\t\"Must be lowercase, start with alphanumeric, and contain only letters, numbers, hyphens, dots, or underscores.\",\n\t\t)\n\t}\n}\n\n/**\n * Parse an npm specifier string into a typed structure.\n *\n * Supported formats:\n * - \"npm:lodash\" -> { type: \"npm\", name: \"lodash\" }\n * - \"npm:lodash@4.0.0\" -> { type: \"npm\", name: \"lodash\", version: \"4.0.0\" }\n * - \"npm:@scope/pkg\" -> { type: \"npm\", name: \"@scope/pkg\" }\n * - \"npm:@scope/pkg@1.0.0\" -> { type: \"npm\", name: \"@scope/pkg\", version: \"1.0.0\" }\n *\n * @throws ValidationError if specifier format is invalid\n */\nexport function parseNpmSpecifier(specifier: string): NpmSpecifier {\n\t// Guard: empty input\n\tif (!specifier?.trim()) {\n\t\tthrow new ValidationError(\"npm specifier cannot be empty\")\n\t}\n\n\tconst trimmed = specifier.trim()\n\n\t// Guard: must have npm: prefix\n\tif (!trimmed.startsWith(\"npm:\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid npm specifier: \\`${specifier}\\`. Must start with \\`npm:\\` prefix.`,\n\t\t)\n\t}\n\n\t// Strip npm: prefix\n\tconst remainder = trimmed.slice(4)\n\n\t// Guard: empty after prefix\n\tif (!remainder) {\n\t\tthrow new ValidationError(`Invalid npm specifier: \\`${specifier}\\`. Package name is required.`)\n\t}\n\n\t// Parse package@version using same logic as parseNpmDependency in add.ts\n\tconst lastAt = remainder.lastIndexOf(\"@\")\n\n\t// Handle scoped packages: @scope/pkg or @scope/pkg@version\n\t// If lastAt is 0, it's just @scope/pkg (no version)\n\t// If lastAt > 0 and there's a / before it, need to check if it's the scope @ or version @\n\tlet name: string\n\tlet version: string | undefined\n\n\tif (lastAt > 0) {\n\t\t// Check if @ is part of version or scope\n\t\tconst beforeAt = remainder.slice(0, lastAt)\n\t\tconst afterAt = remainder.slice(lastAt + 1)\n\n\t\t// If beforeAt contains a /, it means we have @scope/pkg@version\n\t\t// If beforeAt doesn't start with @, it's just pkg@version\n\t\tif (beforeAt.includes(\"/\") || !beforeAt.startsWith(\"@\")) {\n\t\t\tname = beforeAt\n\t\t\tversion = afterAt || undefined\n\t\t} else {\n\t\t\t// This is @scope@version which is invalid (missing package name)\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid npm specifier: \\`${specifier}\\`. Scoped packages must have format @scope/pkg.`,\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// No version specified, or it's just @scope/pkg\n\t\tname = remainder\n\t}\n\n\t// Validate the extracted package name\n\tvalidateNpmPackageName(name)\n\n\treturn { type: \"npm\", name, version }\n}\n\n/**\n * Check if a string looks like an npm specifier (starts with \"npm:\")\n */\nexport function isNpmSpecifier(input: string): boolean {\n\treturn input.trim().startsWith(\"npm:\")\n}\n\n// =============================================================================\n// REGISTRY INTERACTION\n// =============================================================================\n\n/**\n * Validate that an npm package exists on the registry.\n *\n * @param packageName - The npm package name (may be scoped like @scope/pkg)\n * @param signal - Optional AbortSignal for request cancellation\n * @returns Package metadata from npm registry\n * @throws NotFoundError if package doesn't exist (404)\n * @throws NetworkError for other fetch failures\n */\nexport async function validateNpmPackage(\n\tpackageName: string,\n\tsignal?: AbortSignal,\n): Promise<NpmPackageMetadata> {\n\t// Guard: validate package name first\n\tvalidateNpmPackageName(packageName)\n\n\t// URL encode scoped packages: @scope/pkg -> @scope%2Fpkg\n\tconst encodedName = packageName.startsWith(\"@\")\n\t\t? `@${encodeURIComponent(packageName.slice(1))}`\n\t\t: encodeURIComponent(packageName)\n\n\tconst url = `${NPM_REGISTRY_BASE}/${encodedName}`\n\n\ttry {\n\t\t// Use provided signal or create a timeout signal\n\t\tconst fetchSignal = signal ?? AbortSignal.timeout(NPM_FETCH_TIMEOUT_MS)\n\n\t\tconst response = await fetch(url, {\n\t\t\tsignal: fetchSignal,\n\t\t\theaders: {\n\t\t\t\tAccept: \"application/json\",\n\t\t\t},\n\t\t})\n\n\t\t// Handle 404 specifically\n\t\tif (response.status === 404) {\n\t\t\tthrow new NotFoundError(`npm package \\`${packageName}\\` not found on registry`)\n\t\t}\n\n\t\t// Handle other errors\n\t\tif (!response.ok) {\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Failed to fetch npm package \\`${packageName}\\`: HTTP ${response.status} ${response.statusText}`,\n\t\t\t)\n\t\t}\n\n\t\tconst data = (await response.json()) as NpmPackageMetadata\n\t\treturn data\n\t} catch (error) {\n\t\t// Re-throw our custom errors\n\t\tif (error instanceof NotFoundError || error instanceof NetworkError) {\n\t\t\tthrow error\n\t\t}\n\n\t\t// Handle abort/timeout\n\t\tif (error instanceof Error && (error.name === \"AbortError\" || error.name === \"TimeoutError\")) {\n\t\t\tthrow new NetworkError(`Request to npm registry timed out for package \\`${packageName}\\``)\n\t\t}\n\n\t\t// Wrap other errors\n\t\tconst message = error instanceof Error ? error.message : String(error)\n\t\tthrow new NetworkError(`Failed to fetch npm package \\`${packageName}\\`: ${message}`)\n\t}\n}\n\n/**\n * Format a plugin entry for opencode.json.\n * Returns the typed format: \"package\" or \"package@version\"\n */\nexport function formatPluginEntry(name: string, version?: string): string {\n\treturn version ? `${name}@${version}` : name\n}\n\n// =============================================================================\n// PLUGIN VALIDATION\n// =============================================================================\n\n/**\n * Validate that a package looks like a valid OpenCode plugin.\n *\n * Required checks (throws ValidationError if not met):\n * - ESM module: package.json must have \"type\": \"module\"\n * - Entry point: must have \"main\" or \"exports\" field\n *\n * Soft checks (returns warnings):\n * - Naming convention: warn if package name doesn't contain \"opencode\"\n *\n * @param packageJson - The package.json data from npm registry (version-specific)\n * @returns Validation result with any warnings\n * @throws ValidationError for hard failures\n */\nexport function validateOpenCodePlugin(packageJson: NpmPackageVersion): PluginValidationResult {\n\tconst warnings: string[] = []\n\n\t// Guard: ESM module check - OpenCode uses Bun ESM imports\n\tif (packageJson.type !== \"module\") {\n\t\tthrow new ValidationError(\n\t\t\t`Package \\`${packageJson.name}\\` is not an ESM module (missing \"type\": \"module\" in package.json)`,\n\t\t)\n\t}\n\n\t// Guard: Entry point check - needs to be importable\n\tconst hasMain = Boolean(packageJson.main)\n\tconst hasExports = packageJson.exports !== undefined\n\tif (!hasMain && !hasExports) {\n\t\tthrow new ValidationError(\n\t\t\t`Package \\`${packageJson.name}\\` has no entry point (missing \"main\" or \"exports\")`,\n\t\t)\n\t}\n\n\t// Soft check: Naming convention hint\n\tif (!packageJson.name.includes(\"opencode\")) {\n\t\twarnings.push(\n\t\t\t`Package name \\`${packageJson.name}\\` doesn't contain \"opencode\" - this may not be an OpenCode plugin`,\n\t\t)\n\t}\n\n\treturn { valid: true, warnings }\n}\n\n/**\n * Fetch version-specific package.json from npm registry.\n *\n * @param packageName - The npm package name\n * @param version - The specific version (or \"latest\" to use dist-tags.latest)\n * @param signal - Optional AbortSignal for request cancellation\n * @returns Version-specific package.json fields\n * @throws NotFoundError if package/version doesn't exist\n * @throws NetworkError for fetch failures\n */\nexport async function fetchPackageVersion(\n\tpackageName: string,\n\tversion?: string,\n\tsignal?: AbortSignal,\n): Promise<NpmPackageVersion> {\n\t// First get package metadata to resolve version\n\tconst metadata = await validateNpmPackage(packageName, signal)\n\n\t// Resolve version: use specified or latest\n\tconst resolvedVersion = version ?? metadata[\"dist-tags\"].latest\n\n\t// Get version-specific data\n\tconst versionData = metadata.versions[resolvedVersion] as NpmPackageVersion | undefined\n\tif (!versionData) {\n\t\tthrow new NotFoundError(\n\t\t\t`Version \\`${resolvedVersion}\\` not found for npm package \\`${packageName}\\``,\n\t\t)\n\t}\n\n\treturn versionData\n}\n\n/**\n * Extract package name from a plugin entry string.\n * Handles: \"lodash\", \"lodash@4.0.0\", \"@scope/pkg\", \"@scope/pkg@1.0.0\"\n */\nexport function extractPackageName(pluginEntry: string): string {\n\tconst trimmed = pluginEntry.trim()\n\tconst lastAt = trimmed.lastIndexOf(\"@\")\n\n\t// If @ is at position 0, it's a scoped package without version\n\tif (lastAt <= 0) {\n\t\treturn trimmed\n\t}\n\n\t// Check if this @ is the version separator or part of scope\n\tconst beforeAt = trimmed.slice(0, lastAt)\n\n\t// If beforeAt contains /, it's @scope/pkg@version\n\t// If beforeAt doesn't start with @, it's pkg@version\n\tif (beforeAt.includes(\"/\") || !beforeAt.startsWith(\"@\")) {\n\t\treturn beforeAt\n\t}\n\n\t// Otherwise it's just @scope/pkg with weird format - return as-is\n\treturn trimmed\n}\n",
|
|
85
87
|
"/**\n * Build Command (for Registry Authors)\n *\n * CLI wrapper around the buildRegistry library function.\n */\n\nimport { join, relative } from \"node:path\"\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { BuildRegistryError, buildRegistry } from \"../lib/build-registry\"\nimport { createSpinner, handleError, logger, outputJson } from \"../utils/index\"\n\ninterface BuildOptions {\n\tcwd: string\n\tout: string\n\tjson: boolean\n\tquiet: boolean\n}\n\nexport function registerBuildCommand(program: Command): void {\n\tprogram\n\t\t.command(\"build\")\n\t\t.description(\"Build a registry from source (for registry authors)\")\n\t\t.argument(\"[path]\", \"Registry source directory\", \".\")\n\t\t.option(\"--out <dir>\", \"Output directory\", \"./dist\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"--json\", \"Output as JSON\", false)\n\t\t.option(\"-q, --quiet\", \"Suppress output\", false)\n\t\t.action(async (path: string, options: BuildOptions) => {\n\t\t\ttry {\n\t\t\t\tconst sourcePath = join(options.cwd, path)\n\t\t\t\tconst outPath = join(options.cwd, options.out)\n\n\t\t\t\tconst spinner = createSpinner({\n\t\t\t\t\ttext: \"Building registry...\",\n\t\t\t\t\tquiet: options.quiet || options.json,\n\t\t\t\t})\n\t\t\t\tif (!options.json) spinner.start()\n\n\t\t\t\tconst result = await buildRegistry({\n\t\t\t\t\tsource: sourcePath,\n\t\t\t\t\tout: outPath,\n\t\t\t\t})\n\n\t\t\t\tif (!options.json) {\n\t\t\t\t\tconst msg = `Built ${result.componentsCount} components to ${relative(options.cwd, outPath)}`\n\t\t\t\t\tspinner.succeed(msg)\n\t\t\t\t\tif (process.env.NODE_ENV === \"test\" || !process.stdout.isTTY) {\n\t\t\t\t\t\tlogger.success(`Built ${result.componentsCount} components`)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tname: result.name,\n\t\t\t\t\t\t\tversion: result.version,\n\t\t\t\t\t\t\tcomponents: result.componentsCount,\n\t\t\t\t\t\t\toutput: result.outputPath,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof BuildRegistryError) {\n\t\t\t\t\tif (!options.json) {\n\t\t\t\t\t\tlogger.error(error.message)\n\t\t\t\t\t\tfor (const err of error.errors) {\n\t\t\t\t\t\t\tconsole.log(kleur.red(` ${err}`))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tprocess.exit(1)\n\t\t\t\t}\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n",
|
|
86
|
-
"/**\n * Build Registry Library Function\n *\n * Pure function to build a registry from source.\n * No CLI concerns - just input/output.\n */\n\nimport { mkdir } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { normalizeFile, registrySchema } from \"../schemas/registry\"\n\nexport interface BuildRegistryOptions {\n\t/** Source directory containing registry.jsonc (or registry.json) and files/ */\n\tsource: string\n\t/** Output directory for built registry */\n\tout: string\n}\n\nexport interface BuildRegistryResult {\n\t/** Name of the registry */\n\tname: string\n\t/** Namespace of the registry */\n\tnamespace: string\n\t/** Version of the registry */\n\tversion: string\n\t/** Number of components built */\n\tcomponentsCount: number\n\t/** Absolute path to output directory */\n\toutputPath: string\n}\n\nexport class BuildRegistryError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly errors: string[] = [],\n\t) {\n\t\tsuper(message)\n\t\tthis.name = \"BuildRegistryError\"\n\t}\n}\n\n/**\n * Build a registry from source.\n *\n * @param options - Build options\n * @returns Build result with metadata\n * @throws {BuildRegistryError} If validation fails or files are missing\n */\nexport async function buildRegistry(options: BuildRegistryOptions): Promise<BuildRegistryResult> {\n\tconst { source: sourcePath, out: outPath } = options\n\n\t// Read registry file from source (prefer .jsonc over .json)\n\tconst jsoncFile = Bun.file(join(sourcePath, \"registry.jsonc\"))\n\tconst jsonFile = Bun.file(join(sourcePath, \"registry.json\"))\n\tconst jsoncExists = await jsoncFile.exists()\n\tconst jsonExists = await jsonFile.exists()\n\n\tif (!jsoncExists && !jsonExists) {\n\t\tthrow new BuildRegistryError(\"No registry.jsonc or registry.json found in source directory\")\n\t}\n\n\tconst registryFile = jsoncExists ? jsoncFile : jsonFile\n\tconst content = await registryFile.text()\n\tconst registryData = parseJsonc(content, [], { allowTrailingComma: true })\n\n\t// Validate registry schema\n\tconst parseResult = registrySchema.safeParse(registryData)\n\tif (!parseResult.success) {\n\t\tconst errors = parseResult.error.errors.map((e) => `${e.path.join(\".\")}: ${e.message}`)\n\t\tthrow new BuildRegistryError(\"Registry validation failed\", errors)\n\t}\n\n\tconst registry = parseResult.data\n\tconst validationErrors: string[] = []\n\n\t// Create output directory structure\n\tconst componentsDir = join(outPath, \"components\")\n\tawait mkdir(componentsDir, { recursive: true })\n\n\t// Generate packument and copy files for each component\n\tfor (const component of registry.components) {\n\t\tconst packument = {\n\t\t\tname: component.name,\n\t\t\tversions: {\n\t\t\t\t[registry.version]: component,\n\t\t\t},\n\t\t\t\"dist-tags\": {\n\t\t\t\tlatest: registry.version,\n\t\t\t},\n\t\t}\n\n\t\t// Write manifest to components/[name].json\n\t\tconst packumentPath = join(componentsDir, `${component.name}.json`)\n\t\tawait Bun.write(packumentPath, JSON.stringify(packument, null, 2))\n\n\t\t// Copy files to components/[name]/[path]\n\t\tfor (const rawFile of component.files) {\n\t\t\tconst file = normalizeFile(rawFile, component.type)\n\t\t\tconst sourceFilePath = join(sourcePath, \"files\", file.path)\n\t\t\tconst destFilePath = join(componentsDir, component.name, file.path)\n\t\t\tconst destFileDir = dirname(destFilePath)\n\n\t\t\tif (!(await Bun.file(sourceFilePath).exists())) {\n\t\t\t\tvalidationErrors.push(`${component.name}: Source file not found at ${sourceFilePath}`)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tawait mkdir(destFileDir, { recursive: true })\n\t\t\tconst sourceFile = Bun.file(sourceFilePath)\n\t\t\tawait Bun.write(destFilePath, sourceFile)\n\t\t}\n\t}\n\n\t// Fail fast if source files were missing during copy\n\tif (validationErrors.length > 0) {\n\t\tthrow new BuildRegistryError(\n\t\t\t`Build failed with ${validationErrors.length} errors`,\n\t\t\tvalidationErrors,\n\t\t)\n\t}\n\n\t// Generate index.json at the root\n\tconst index = {\n\t\tname: registry.name,\n\t\tnamespace: registry.namespace,\n\t\tversion: registry.version,\n\t\tauthor: registry.author,\n\t\t// Include version requirements for compatibility checking\n\t\t...(registry.opencode && { opencode: registry.opencode }),\n\t\t...(registry.ocx && { ocx: registry.ocx }),\n\t\tcomponents: registry.components.map((c) => ({\n\t\t\tname: c.name,\n\t\t\ttype: c.type,\n\t\t\tdescription: c.description,\n\t\t})),\n\t}\n\n\tawait Bun.write(join(outPath, \"index.json\"), JSON.stringify(index, null, 2))\n\n\t// Generate .well-known/ocx.json for registry discovery\n\tconst wellKnownDir = join(outPath, \".well-known\")\n\tawait mkdir(wellKnownDir, { recursive: true })\n\tconst discovery = { registry: \"/index.json\" }\n\tawait Bun.write(join(wellKnownDir, \"ocx.json\"), JSON.stringify(discovery, null, 2))\n\n\treturn {\n\t\tname: registry.name,\n\t\tnamespace: registry.namespace,\n\t\tversion: registry.version,\n\t\tcomponentsCount: registry.components.length,\n\t\toutputPath: outPath,\n\t}\n}\n",
|
|
87
88
|
"/**\n * Config Edit Command\n *\n * Open configuration file in the user's preferred editor.\n * --global: edit global ocx.jsonc\n * default: edit local .opencode/ocx.jsonc\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir } from \"node:fs/promises\"\nimport { join } from \"node:path\"\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport {\n\tfindLocalConfigDir,\n\tgetGlobalConfig,\n\tgetProfileOcxConfig,\n\tLOCAL_CONFIG_DIR,\n\tOCX_CONFIG_FILE,\n} from \"../../profile/paths\"\nimport { profileNameSchema } from \"../../profile/schema\"\nimport { ConfigError, ProfileNotFoundError, ValidationError } from \"../../utils/errors\"\nimport { handleError, logger } from \"../../utils/index\"\n\ninterface ConfigEditOptions {\n\tglobal?: boolean\n\tprofile?: string\n}\n\nexport function registerConfigEditCommand(parent: Command): void {\n\tparent\n\t\t.command(\"edit\")\n\t\t.description(\"Open configuration file in editor\")\n\t\t.option(\"-g, --global\", \"Edit global ocx.jsonc\")\n\t\t.option(\"-p, --profile <name>\", \"Edit specific profile's config\")\n\t\t.action(async (options: ConfigEditOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runConfigEdit(options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\nasync function runConfigEdit(options: ConfigEditOptions): Promise<void> {\n\t// Guard: mutual exclusivity\n\tif (options.global && options.profile) {\n\t\tthrow new ValidationError(\"Cannot use both --global and --profile flags\")\n\t}\n\n\tlet configPath: string\n\n\tif (options.profile) {\n\t\t// Validate profile name first (prevents path traversal)\n\t\tconst parseResult = profileNameSchema.safeParse(options.profile)\n\t\tif (!parseResult.success) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid profile name \"${options.profile}\": ${parseResult.error.errors[0]?.message ?? \"Invalid name\"}`,\n\t\t\t)\n\t\t}\n\n\t\t// Check profiles are initialized\n\t\tawait ProfileManager.requireInitialized()\n\n\t\t// Edit profile config\n\t\tconst manager = ProfileManager.create()\n\t\tif (!(await manager.exists(options.profile))) {\n\t\t\tthrow new ProfileNotFoundError(options.profile)\n\t\t}\n\t\tconfigPath = getProfileOcxConfig(options.profile)\n\t} else if (options.global) {\n\t\t// Edit global config\n\t\tconfigPath = getGlobalConfig()\n\t\tif (!existsSync(configPath)) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Global config not found at ${configPath}.\\nRun 'ocx init --global' first.`,\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Edit local config\n\t\tconst localConfigDir = findLocalConfigDir(process.cwd())\n\t\tif (localConfigDir) {\n\t\t\tconfigPath = join(localConfigDir, OCX_CONFIG_FILE)\n\t\t} else {\n\t\t\t// Create .opencode directory if it doesn't exist\n\t\t\tconst newConfigDir = join(process.cwd(), LOCAL_CONFIG_DIR)\n\t\t\tawait mkdir(newConfigDir, { recursive: true })\n\t\t\tconfigPath = join(newConfigDir, OCX_CONFIG_FILE)\n\n\t\t\t// Create empty config file if it doesn't exist\n\t\t\tif (!existsSync(configPath)) {\n\t\t\t\tconst defaultConfig = {\n\t\t\t\t\t$schema: \"https://ocx.kdco.dev/schemas/ocx.json\",\n\t\t\t\t\tregistries: {},\n\t\t\t\t}\n\t\t\t\tawait Bun.write(configPath, JSON.stringify(defaultConfig, null, 2))\n\t\t\t\tlogger.info(`Created ${configPath}`)\n\t\t\t}\n\t\t}\n\t}\n\n\tconst editor = process.env.EDITOR || process.env.VISUAL || \"vi\"\n\n\tconst proc = Bun.spawn([editor, configPath], {\n\t\tstdin: \"inherit\",\n\t\tstdout: \"inherit\",\n\t\tstderr: \"inherit\",\n\t})\n\n\tconst exitCode = await proc.exited\n\tif (exitCode !== 0) {\n\t\tthrow new Error(`Editor exited with code ${exitCode}`)\n\t}\n}\n",
|
|
88
89
|
"/**\n * Config Show Command\n *\n * Display the resolved configuration for the current directory.\n * Uses ConfigResolver with registry isolation (profile OR local, not merged).\n * OpenCode config and instructions are additively merged when not excluded.\n */\n\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { ConfigResolver } from \"../../config/resolver\"\nimport { handleError } from \"../../utils/handle-error\"\nimport { sharedOptions } from \"../../utils/shared-options\"\n\ninterface ConfigShowOptions {\n\tjson?: boolean\n\torigin?: boolean\n\tprofile?: string\n}\n\nexport function registerConfigShowCommand(parent: Command): void {\n\tparent\n\t\t.command(\"show\")\n\t\t.description(\"Display resolved configuration for current directory\")\n\t\t.addOption(sharedOptions.json())\n\t\t.option(\"--origin\", \"Show where each setting came from\")\n\t\t.option(\"-p, --profile <name>\", \"Use specific profile\")\n\t\t.action(async (options: ConfigShowOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runConfigShow(options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runConfigShow(options: ConfigShowOptions): Promise<void> {\n\tconst resolver = await ConfigResolver.create(process.cwd(), { profile: options.profile })\n\n\tif (options.origin) {\n\t\tconst configWithOrigin = resolver.resolveWithOrigin()\n\n\t\tif (options.json) {\n\t\t\t// Convert Map to object for JSON serialization\n\t\t\tconst originsObj: Record<string, { path: string; source: string }> = {}\n\t\t\tfor (const [key, value] of configWithOrigin.origins) {\n\t\t\t\toriginsObj[key] = value\n\t\t\t}\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\t...configWithOrigin,\n\t\t\t\t\t\torigins: originsObj,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t\treturn\n\t\t}\n\n\t\t// Human-readable output with origin annotations\n\t\tconsole.log(kleur.bold(\"Resolved Configuration\"))\n\t\tconsole.log()\n\n\t\tif (configWithOrigin.profileName) {\n\t\t\tconst origin = configWithOrigin.origins.get(\"profileName\")\n\t\t\tconsole.log(`${kleur.cyan(\"Profile:\")} ${configWithOrigin.profileName}`)\n\t\t\tif (origin) {\n\t\t\t\tconsole.log(` ${kleur.dim(`← ${origin.source}`)}`)\n\t\t\t}\n\t\t}\n\n\t\tconsole.log()\n\t\tconsole.log(kleur.cyan(\"Component Path:\"), configWithOrigin.componentPath)\n\t\tconst componentPathOrigin = configWithOrigin.origins.get(\"componentPath\")\n\t\tif (componentPathOrigin) {\n\t\t\tconsole.log(` ${kleur.dim(`← ${componentPathOrigin.source} (${componentPathOrigin.path})`)}`)\n\t\t}\n\n\t\tconsole.log()\n\t\tconsole.log(kleur.cyan(\"Registries:\"))\n\t\tfor (const [name, config] of Object.entries(configWithOrigin.registries)) {\n\t\t\tconsole.log(` ${kleur.green(name)}: ${config.url}`)\n\t\t\tconst regOrigin = configWithOrigin.origins.get(`registries.${name}`)\n\t\t\tif (regOrigin) {\n\t\t\t\tconsole.log(` ${kleur.dim(`← ${regOrigin.source} (${regOrigin.path})`)}`)\n\t\t\t}\n\t\t}\n\n\t\tif (configWithOrigin.instructions.length > 0) {\n\t\t\tconsole.log()\n\t\t\tconsole.log(kleur.cyan(\"Instructions:\"))\n\t\t\tfor (const instruction of configWithOrigin.instructions) {\n\t\t\t\tconsole.log(` ${instruction}`)\n\t\t\t}\n\t\t}\n\n\t\tif (Object.keys(configWithOrigin.opencode).length > 0) {\n\t\t\tconsole.log()\n\t\t\tconsole.log(kleur.cyan(\"OpenCode Config:\"))\n\t\t\tfor (const key of Object.keys(configWithOrigin.opencode)) {\n\t\t\t\tconst keyOrigin = configWithOrigin.origins.get(`opencode.${key}`)\n\t\t\t\tconsole.log(` ${key}:`, JSON.stringify(configWithOrigin.opencode[key]))\n\t\t\t\tif (keyOrigin) {\n\t\t\t\t\tconsole.log(` ${kleur.dim(`← ${keyOrigin.source} (${keyOrigin.path})`)}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\t// Standard output (no origin tracking)\n\tconst config = resolver.resolve()\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(config, null, 2))\n\t\treturn\n\t}\n\n\t// Human-readable output\n\tconsole.log(kleur.bold(\"Resolved Configuration\"))\n\tconsole.log()\n\n\tif (config.profileName) {\n\t\tconsole.log(`${kleur.cyan(\"Profile:\")} ${config.profileName}`)\n\t}\n\n\tconsole.log(`${kleur.cyan(\"Component Path:\")} ${config.componentPath}`)\n\n\tconsole.log()\n\tconsole.log(kleur.cyan(\"Registries:\"))\n\tif (Object.keys(config.registries).length === 0) {\n\t\tconsole.log(\" (none)\")\n\t} else {\n\t\tfor (const [name, regConfig] of Object.entries(config.registries)) {\n\t\t\tconsole.log(` ${kleur.green(name)}: ${regConfig.url}`)\n\t\t}\n\t}\n\n\tif (config.instructions.length > 0) {\n\t\tconsole.log()\n\t\tconsole.log(kleur.cyan(\"Instructions:\"))\n\t\tfor (const instruction of config.instructions) {\n\t\t\tconsole.log(` ${instruction}`)\n\t\t}\n\t}\n}\n",
|
|
89
90
|
"/**\n * Config Command Group\n *\n * Parent command for viewing and editing configuration.\n */\n\nimport type { Command } from \"commander\"\nimport { registerConfigEditCommand } from \"./edit\"\nimport { registerConfigShowCommand } from \"./show\"\n\n/**\n * Register the config command and all subcommands.\n */\nexport function registerConfigCommand(program: Command): void {\n\tconst config = program.command(\"config\").description(\"View and edit configuration\")\n\n\tregisterConfigShowCommand(config)\n\tregisterConfigEditCommand(config)\n}\n",
|
|
@@ -100,30 +101,32 @@
|
|
|
100
101
|
"/**\n * Diff Command\n *\n * Compare installed components with upstream registry versions.\n */\n\nimport type { Command } from \"commander\"\nimport * as Diff from \"diff\"\nimport kleur from \"kleur\"\nimport { fetchComponent, fetchFileContent } from \"../registry/fetcher\"\nimport { readOcxConfig, readOcxLock } from \"../schemas/config\"\nimport { normalizeFile, parseQualifiedComponent } from \"../schemas/registry\"\nimport { handleError, logger, outputJson } from \"../utils/index\"\n\ninterface DiffOptions {\n\tcwd: string\n\tjson: boolean\n\tquiet: boolean\n}\n\nexport function registerDiffCommand(program: Command): void {\n\tprogram\n\t\t.command(\"diff\")\n\t\t.description(\"Compare installed components with upstream\")\n\t\t.argument(\"[component]\", \"Component to diff (optional, diffs all if omitted)\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"--json\", \"Output as JSON\", false)\n\t\t.option(\"-q, --quiet\", \"Suppress output\", false)\n\t\t.action(async (component: string | undefined, options: DiffOptions) => {\n\t\t\ttry {\n\t\t\t\tconst lock = await readOcxLock(options.cwd)\n\t\t\t\tif (!lock) {\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\toutputJson({\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: { code: \"NOT_FOUND\", message: \"No ocx.lock found\" },\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.warn(\"No ocx.lock found. Run 'ocx add' first.\")\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst config = await readOcxConfig(options.cwd)\n\t\t\t\tif (!config) {\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\toutputJson({\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: { code: \"NOT_FOUND\", message: \"No ocx.jsonc found\" },\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.warn(\"No ocx.jsonc found. Run 'ocx init' first.\")\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst componentNames = component ? [component] : Object.keys(lock.installed)\n\n\t\t\t\tif (componentNames.length === 0) {\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\toutputJson({ success: true, data: { diffs: [] } })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.info(\"No components installed.\")\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst results: Array<{ name: string; hasChanges: boolean; diff?: string }> = []\n\n\t\t\t\tfor (const name of componentNames) {\n\t\t\t\t\tconst installed = lock.installed[name]\n\t\t\t\t\tif (!installed) {\n\t\t\t\t\t\tif (component) {\n\t\t\t\t\t\t\tlogger.warn(`Component '${name}' not found in lockfile.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\t// Guard: check if files array exists and has items\n\t\t\t\t\tif (!installed.files || installed.files.length === 0) {\n\t\t\t\t\t\tlogger.warn(`No files recorded for component '${name}'`)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\t// Read local file (use first file from the files array)\n\t\t\t\t\tconst localPath = `${options.cwd}/${installed.files[0]}`\n\t\t\t\t\tconst localFile = Bun.file(localPath)\n\t\t\t\t\tif (!(await localFile.exists())) {\n\t\t\t\t\t\tresults.push({ name, hasChanges: true, diff: \"Local file missing\" })\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tconst localContent = await localFile.text()\n\n\t\t\t\t\t// Fetch upstream\n\t\t\t\t\tconst registryConfig = config.registries[installed.registry]\n\t\t\t\t\tif (!registryConfig) {\n\t\t\t\t\t\tlogger.warn(`Registry '${installed.registry}' not configured for component '${name}'.`)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Parse qualified name to get just the component name for fetching\n\t\t\t\t\t\tconst parsed = parseQualifiedComponent(name)\n\t\t\t\t\t\tconst componentName = parsed.component\n\t\t\t\t\t\tconst upstream = await fetchComponent(registryConfig.url, componentName)\n\n\t\t\t\t\t\t// Assume first file for simplicity in this MVP\n\t\t\t\t\t\t// In a full implementation we'd diff all files in the component\n\t\t\t\t\t\tconst rawUpstreamFile = upstream.files[0]\n\t\t\t\t\t\tif (!rawUpstreamFile) {\n\t\t\t\t\t\t\tresults.push({ name, hasChanges: false })\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst upstreamFile = normalizeFile(rawUpstreamFile)\n\n\t\t\t\t\t\t// Fetch actual content from registry\n\t\t\t\t\t\tconst upstreamContent = await fetchFileContent(\n\t\t\t\t\t\t\tregistryConfig.url,\n\t\t\t\t\t\t\tcomponentName,\n\t\t\t\t\t\t\tupstreamFile.path,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (localContent === upstreamContent) {\n\t\t\t\t\t\t\tresults.push({ name, hasChanges: false })\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst patch = Diff.createPatch(name, upstreamContent, localContent)\n\t\t\t\t\t\t\tresults.push({ name, hasChanges: true, diff: patch })\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.warn(`Could not fetch upstream for ${name}: ${String(err)}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: { diffs: results } })\n\t\t\t\t} else {\n\t\t\t\t\tfor (const res of results) {\n\t\t\t\t\t\tif (res.hasChanges) {\n\t\t\t\t\t\t\tconsole.log(kleur.yellow(`\\nDiff for ${res.name}:`))\n\t\t\t\t\t\t\tconsole.log(res.diff || \"Changes detected (no diff available)\")\n\t\t\t\t\t\t} else if (!options.quiet) {\n\t\t\t\t\t\t\tlogger.success(`${res.name}: No changes`)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n",
|
|
101
102
|
"/**\n * Ghost Migrate Command (TEMPORARY)\n *\n * Migrates legacy ghost mode configs to the unified profile system.\n * Will be removed in the next minor version.\n */\n\nimport {\n\tcopyFileSync,\n\tcpSync,\n\texistsSync,\n\tlstatSync,\n\tmkdirSync,\n\treaddirSync,\n\trenameSync,\n\trmdirSync,\n\trmSync,\n\tunlinkSync,\n} from \"node:fs\"\nimport path from \"node:path\"\nimport type { Command } from \"commander\"\nimport { getProfilesDir, OCX_CONFIG_FILE } from \"../../profile/paths\"\nimport { handleError } from \"../../utils/handle-error\"\n\n/** Legacy ghost config file name */\nconst GHOST_CONFIG_FILE = \"ghost.jsonc\"\n/** Backup file extension */\nconst BACKUP_EXT = \".bak\"\n/** Legacy symlink for stateful profile selection */\nconst CURRENT_SYMLINK = \"current\"\n/** Directories to flatten from .opencode/ to profile root */\nconst FLATTEN_DIRS = [\"plugin\", \"agent\", \"skill\", \"command\"] as const\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Move a file or directory atomically, with cross-device (EXDEV) fallback.\n * On same filesystem: uses fast rename.\n * On cross-device: copies then removes source.\n */\nfunction moveAtomically(source: string, destination: string, isDir: boolean): void {\n\ttry {\n\t\trenameSync(source, destination)\n\t} catch (err: unknown) {\n\t\tif (err instanceof Error && \"code\" in err && err.code === \"EXDEV\") {\n\t\t\t// Cross-device: copy then remove\n\t\t\tif (isDir) {\n\t\t\t\tcpSync(source, destination, { recursive: true })\n\t\t\t\trmSync(source, { recursive: true, force: true })\n\t\t\t} else {\n\t\t\t\tcopyFileSync(source, destination)\n\t\t\t\tunlinkSync(source)\n\t\t\t}\n\t\t} else {\n\t\t\tthrow err\n\t\t}\n\t}\n}\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\ninterface ProfileAction {\n\ttype: \"rename\" | \"move-dir\"\n\tprofileName: string\n\tsource: string\n\tdestination: string\n\tbackup: string\n}\n\ninterface SymlinkAction {\n\ttype: \"delete-symlink\"\n\tpath: string\n}\n\ninterface SkippedProfile {\n\tprofileName: string\n\treason: string\n}\n\ninterface MigrationPlan {\n\tprofiles: ProfileAction[]\n\tskipped: SkippedProfile[]\n\tsymlink: SymlinkAction | null\n\tsymlinkSkipped: { path: string; reason: string } | null\n}\n\n// =============================================================================\n// PLAN PHASE\n// =============================================================================\n\n/**\n * Plan phase: Discover what needs to be migrated without any I/O mutations.\n * Follows Law of Atomic Predictability - pure function with no side effects.\n */\nfunction planMigration(): MigrationPlan {\n\tconst profilesDir = getProfilesDir()\n\tconst plan: MigrationPlan = {\n\t\tprofiles: [],\n\t\tskipped: [],\n\t\tsymlink: null,\n\t\tsymlinkSkipped: null,\n\t}\n\n\t// Early exit: profiles directory doesn't exist\n\tif (!existsSync(profilesDir)) {\n\t\treturn plan\n\t}\n\n\t// Discover profiles with ghost.jsonc\n\tconst entries = readdirSync(profilesDir, { withFileTypes: true })\n\tfor (const entry of entries) {\n\t\t// Skip non-directories and the legacy symlink\n\t\tif (!entry.isDirectory() || entry.name === CURRENT_SYMLINK) continue\n\n\t\tconst profileName = entry.name\n\t\tconst ghostConfig = path.join(profilesDir, profileName, GHOST_CONFIG_FILE)\n\t\tconst ocxConfig = path.join(profilesDir, profileName, OCX_CONFIG_FILE)\n\n\t\t// Skip if no ghost.jsonc exists\n\t\tif (!existsSync(ghostConfig)) continue\n\n\t\t// Check for conflict: ocx.jsonc already exists\n\t\tif (existsSync(ocxConfig)) {\n\t\t\tplan.skipped.push({\n\t\t\t\tprofileName,\n\t\t\t\treason: `${OCX_CONFIG_FILE} already exists`,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\t// Check for conflict: backup file already exists (prevents overwriting pre-existing .bak)\n\t\tconst backupPath = ghostConfig + BACKUP_EXT\n\t\tif (existsSync(backupPath)) {\n\t\t\tplan.skipped.push({\n\t\t\t\tprofileName,\n\t\t\t\treason: `backup file already exists: ${GHOST_CONFIG_FILE}${BACKUP_EXT}`,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\tplan.profiles.push({\n\t\t\ttype: \"rename\",\n\t\t\tprofileName,\n\t\t\tsource: ghostConfig,\n\t\t\tdestination: ocxConfig,\n\t\t\tbackup: backupPath,\n\t\t})\n\t}\n\n\t// Plan .opencode/ flattening for each profile\n\tfor (const entry of entries) {\n\t\tif (!entry.isDirectory() || entry.name === CURRENT_SYMLINK) continue\n\n\t\tconst profileName = entry.name\n\t\tconst profileDir = path.join(profilesDir, profileName)\n\t\tconst dotOpencode = path.join(profileDir, \".opencode\")\n\n\t\t// Skip if no .opencode directory\n\t\tif (!existsSync(dotOpencode)) continue\n\n\t\tfor (const dir of FLATTEN_DIRS) {\n\t\t\tconst source = path.join(dotOpencode, dir)\n\t\t\tconst destination = path.join(profileDir, dir)\n\n\t\t\t// Skip if source doesn't exist\n\t\t\tif (!existsSync(source)) continue\n\n\t\t\t// Verify source is actually a directory\n\t\t\ttry {\n\t\t\t\tconst stat = lstatSync(source)\n\t\t\t\tif (!stat.isDirectory()) {\n\t\t\t\t\tplan.skipped.push({\n\t\t\t\t\t\tprofileName,\n\t\t\t\t\t\treason: `.opencode/${dir} is not a directory`,\n\t\t\t\t\t})\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tcontinue // Can't stat, skip\n\t\t\t}\n\n\t\t\t// Check for conflict: destination already exists\n\t\t\tif (existsSync(destination)) {\n\t\t\t\tplan.skipped.push({\n\t\t\t\t\tprofileName,\n\t\t\t\t\treason: `${dir}/ exists in both .opencode/ and profile root`,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Check for backup conflict\n\t\t\tconst backupPath = source + BACKUP_EXT\n\t\t\tif (existsSync(backupPath)) {\n\t\t\t\tplan.skipped.push({\n\t\t\t\t\tprofileName,\n\t\t\t\t\treason: `backup already exists: .opencode/${dir}${BACKUP_EXT}`,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tplan.profiles.push({\n\t\t\t\ttype: \"move-dir\",\n\t\t\t\tprofileName,\n\t\t\t\tsource,\n\t\t\t\tdestination,\n\t\t\t\tbackup: backupPath,\n\t\t\t})\n\t\t}\n\t}\n\n\t// Check profiles/current symlink\n\tconst currentPath = path.join(profilesDir, CURRENT_SYMLINK)\n\tif (existsSync(currentPath)) {\n\t\ttry {\n\t\t\tconst stat = lstatSync(currentPath)\n\t\t\tif (stat.isSymbolicLink()) {\n\t\t\t\tplan.symlink = { type: \"delete-symlink\", path: currentPath }\n\t\t\t} else if (stat.isDirectory()) {\n\t\t\t\tplan.symlinkSkipped = { path: currentPath, reason: \"is a directory, not a symlink\" }\n\t\t\t} else {\n\t\t\t\tplan.symlinkSkipped = { path: currentPath, reason: \"is a file, not a symlink\" }\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tplan.symlinkSkipped = {\n\t\t\t\tpath: currentPath,\n\t\t\t\treason: `cannot access: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t}\n\t\t}\n\t}\n\n\treturn plan\n}\n\n// =============================================================================\n// EXECUTE PHASE\n// =============================================================================\n\n/**\n * Execute phase: Perform the migration with backup and rollback support.\n * Follows Law of Fail Fast - any failure triggers immediate rollback.\n *\n * Flow:\n * 1. Create backups (ghost.jsonc -> ghost.jsonc.bak)\n * 2. Rename original to destination (ghost.jsonc -> ocx.jsonc)\n * 3. Delete symlink if exists\n * 4. On success: delete backups\n * 5. On failure: rollback everything\n */\nfunction executeMigration(plan: MigrationPlan): void {\n\tconst completedBackups: { path: string; isDir: boolean }[] = []\n\tconst completedRenames: {\n\t\tsource: string\n\t\tdestination: string\n\t\tbackup: string\n\t\tisDir: boolean\n\t}[] = []\n\n\ttry {\n\t\t// Step 1: Create backups first (copy, not move)\n\t\tfor (const action of plan.profiles) {\n\t\t\tif (action.type === \"rename\") {\n\t\t\t\tcopyFileSync(action.source, action.backup)\n\t\t\t} else {\n\t\t\t\t// move-dir: recursive copy for directories\n\t\t\t\tcpSync(action.source, action.backup, { recursive: true })\n\t\t\t}\n\t\t\tcompletedBackups.push({ path: action.backup, isDir: action.type === \"move-dir\" })\n\t\t}\n\n\t\t// Step 2: Move originals to destinations (handles cross-device)\n\t\tfor (const action of plan.profiles) {\n\t\t\tmoveAtomically(action.source, action.destination, action.type === \"move-dir\")\n\t\t\tcompletedRenames.push({\n\t\t\t\tsource: action.source,\n\t\t\t\tdestination: action.destination,\n\t\t\t\tbackup: action.backup,\n\t\t\t\tisDir: action.type === \"move-dir\",\n\t\t\t})\n\t\t}\n\n\t\t// Step 3: Delete symlink (re-verify it's still a symlink to prevent TOCTOU race)\n\t\tif (plan.symlink) {\n\t\t\ttry {\n\t\t\t\tconst stat = lstatSync(plan.symlink.path)\n\t\t\t\tif (stat.isSymbolicLink()) {\n\t\t\t\t\tunlinkSync(plan.symlink.path)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// File no longer exists or can't be accessed, skip\n\t\t\t}\n\t\t}\n\n\t\t// Step 4: Success! Delete backups\n\t\tfor (const backup of completedBackups) {\n\t\t\ttry {\n\t\t\t\tif (backup.isDir) {\n\t\t\t\t\trmSync(backup.path, { recursive: true, force: true })\n\t\t\t\t} else {\n\t\t\t\t\tunlinkSync(backup.path)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup, ignore errors\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\t// Rollback: restore from backups\n\t\tfor (const rename of completedRenames) {\n\t\t\ttry {\n\t\t\t\t// Remove destination if it exists\n\t\t\t\tif (existsSync(rename.destination)) {\n\t\t\t\t\tif (rename.isDir) {\n\t\t\t\t\t\trmSync(rename.destination, { recursive: true, force: true })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunlinkSync(rename.destination)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Ensure parent directory exists before restoring\n\t\t\t\tmkdirSync(path.dirname(rename.source), { recursive: true })\n\t\t\t\t// Restore from backup\n\t\t\t\tif (existsSync(rename.backup)) {\n\t\t\t\t\tif (rename.isDir) {\n\t\t\t\t\t\tcpSync(rename.backup, rename.source, { recursive: true })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcopyFileSync(rename.backup, rename.source)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Best effort rollback\n\t\t\t}\n\t\t}\n\n\t\t// Clean up any remaining backups\n\t\tfor (const backup of completedBackups) {\n\t\t\ttry {\n\t\t\t\tif (existsSync(backup.path)) {\n\t\t\t\t\tif (backup.isDir) {\n\t\t\t\t\t\trmSync(backup.path, { recursive: true, force: true })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunlinkSync(backup.path)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Best effort cleanup\n\t\t\t}\n\t\t}\n\n\t\tthrow error\n\t}\n\n\t// Step 5: Best-effort cleanup of empty .opencode/ directories\n\t// Runs AFTER backups are deleted to avoid triggering rollback on cleanup failure\n\ttry {\n\t\tconst processedProfiles = new Set(\n\t\t\tplan.profiles.filter((a) => a.type === \"move-dir\").map((a) => a.profileName),\n\t\t)\n\t\tfor (const profileName of processedProfiles) {\n\t\t\tconst profileDir = path.join(getProfilesDir(), profileName)\n\t\t\tconst dotOpencode = path.join(profileDir, \".opencode\")\n\n\t\t\tif (existsSync(dotOpencode)) {\n\t\t\t\tconst remaining = readdirSync(dotOpencode)\n\t\t\t\t// Remove only if empty\n\t\t\t\tif (remaining.length === 0) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\trmdirSync(dotOpencode)\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Best effort\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Best effort cleanup - don't fail the migration for cleanup issues\n\t}\n}\n\n// =============================================================================\n// OUTPUT\n// =============================================================================\n\n/**\n * Print the migration plan (for dry-run or after execution).\n */\nfunction printPlan(plan: MigrationPlan, dryRun: boolean): void {\n\tconst prefix = dryRun ? \"[DRY-RUN] \" : \"\"\n\n\t// Early exit: nothing to do\n\tif (\n\t\tplan.profiles.length === 0 &&\n\t\tplan.skipped.length === 0 &&\n\t\t!plan.symlink &&\n\t\t!plan.symlinkSkipped\n\t) {\n\t\tconsole.log(`${prefix}Nothing to migrate.`)\n\t\treturn\n\t}\n\n\tconsole.log(`${prefix}🔄 Migrating from ghost mode...\\n`)\n\n\t// Print profile actions\n\tif (plan.profiles.length > 0 || plan.skipped.length > 0) {\n\t\tconsole.log(\"Profiles:\")\n\t\tfor (const action of plan.profiles) {\n\t\t\tif (action.type === \"rename\") {\n\t\t\t\tconsole.log(` ✓ ${action.profileName}: ${GHOST_CONFIG_FILE} → ${OCX_CONFIG_FILE}`)\n\t\t\t} else {\n\t\t\t\t// move-dir\n\t\t\t\tconst dirName = path.basename(action.source)\n\t\t\t\tconsole.log(` ✓ ${action.profileName}: .opencode/${dirName}/ → ${dirName}/`)\n\t\t\t}\n\t\t}\n\t\tfor (const skipped of plan.skipped) {\n\t\t\tconsole.log(` ⚠ ${skipped.profileName}: skipped (${skipped.reason})`)\n\t\t}\n\t\tconsole.log()\n\t}\n\n\t// Print symlink actions\n\tif (plan.symlink || plan.symlinkSkipped) {\n\t\tconsole.log(\"Symlink:\")\n\t\tif (plan.symlink) {\n\t\t\tconsole.log(` ✓ Removed profiles/${CURRENT_SYMLINK}`)\n\t\t}\n\t\tif (plan.symlinkSkipped) {\n\t\t\tconsole.log(` ⚠ profiles/${CURRENT_SYMLINK}: skipped (${plan.symlinkSkipped.reason})`)\n\t\t}\n\t\tconsole.log()\n\t}\n\n\tif (!dryRun && (plan.profiles.length > 0 || plan.symlink)) {\n\t\tconsole.log(\"✅ Migration complete!\")\n\t}\n}\n\n// =============================================================================\n// COMMAND\n// =============================================================================\n\ninterface MigrateOptions {\n\tdryRun?: boolean\n}\n\n/**\n * The migrate command handler.\n */\nasync function runMigrate(options: MigrateOptions): Promise<void> {\n\tconst plan = planMigration()\n\n\t// Dry-run: just print the plan\n\tif (options.dryRun) {\n\t\tprintPlan(plan, true)\n\t\treturn\n\t}\n\n\t// Early exit: nothing to migrate\n\tif (plan.profiles.length === 0 && !plan.symlink) {\n\t\tprintPlan(plan, false)\n\t\treturn\n\t}\n\n\t// Execute and print results\n\texecuteMigration(plan)\n\tprintPlan(plan, false)\n}\n\n/**\n * Register the ghost migrate command.\n */\nexport function registerGhostMigrateCommand(ghost: Command): void {\n\tghost\n\t\t.command(\"migrate\")\n\t\t.description(\"Migrate from ghost mode to unified profile system\")\n\t\t.option(\"--dry-run\", \"Preview changes without making them\")\n\t\t.action(async (options: MigrateOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runMigrate(options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n",
|
|
102
103
|
"/**\n * Ghost Command Group (TEMPORARY)\n *\n * Migration utilities for transitioning from ghost mode to unified profiles.\n * This entire directory will be removed in the next minor version.\n */\n\nimport type { Command } from \"commander\"\nimport { registerGhostMigrateCommand } from \"./migrate\"\n\n/**\n * Register the ghost command and all subcommands.\n */\nexport function registerGhostCommand(program: Command): void {\n\tconst ghost = program.command(\"ghost\").description(\"[TEMPORARY] Ghost mode migration utilities\")\n\n\tregisterGhostMigrateCommand(ghost)\n}\n",
|
|
103
|
-
"/**\n * OCX CLI - init command\n * Initialize OCX configuration in a project or scaffold a new registry\n */\n\nimport { existsSync } from \"node:fs\"\nimport { cp, mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport type { Command } from \"commander\"\nimport { OCX_SCHEMA_URL } from \"../constants\"\nimport { atomicWrite } from \"../profile/atomic\"\nimport { DEFAULT_OCX_CONFIG } from \"../profile/manager\"\nimport {\n\tgetGlobalConfig,\n\tgetProfileAgents,\n\tgetProfileDir,\n\tgetProfileOcxConfig,\n\tgetProfileOpencodeConfig,\n\tgetProfilesDir,\n} from \"../profile/paths\"\nimport { findOcxConfig, ocxConfigSchema } from \"../schemas/config\"\nimport { ensureOpencodeConfig } from \"../updaters/update-opencode-config\"\nimport { ConflictError, NetworkError, ValidationError } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\n\ndeclare const __VERSION__: string | undefined\n\nexport const TEMPLATE_REPO = \"kdcokenny/ocx\"\nconst TEMPLATE_PATH = \"examples/registry-starter\"\n\ninterface InitOptions {\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n\tregistry?: boolean\n\tnamespace?: string\n\tauthor?: string\n\tcanary?: boolean\n\tlocal?: string\n\tforce?: boolean // Only used for --registry mode\n\tglobal?: boolean\n}\n\nexport function registerInitCommand(program: Command): void {\n\tprogram\n\t\t.command(\"init [directory]\")\n\t\t.description(\"Initialize OCX configuration in your project\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"-v, --verbose\", \"Verbose output\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.option(\"--registry\", \"Scaffold a new OCX registry project\")\n\t\t.option(\"--namespace <name>\", \"Registry namespace (e.g., my-org)\")\n\t\t.option(\"--author <name>\", \"Author name for the registry\")\n\t\t.option(\"--canary\", \"Use canary (main branch) instead of latest release\")\n\t\t.option(\"--local <path>\", \"Use local template directory instead of fetching\")\n\t\t.option(\"-f, --force\", \"Overwrite existing files (registry mode only)\")\n\t\t.option(\"-g, --global\", \"Initialize in global OpenCode config (~/.config/opencode)\")\n\t\t.action(async (directory: string | undefined, options: InitOptions) => {\n\t\t\ttry {\n\t\t\t\tif (options.registry) {\n\t\t\t\t\tawait runInitRegistry(directory, options)\n\t\t\t\t} else if (options.global) {\n\t\t\t\t\tawait runInitGlobal(options)\n\t\t\t\t} else {\n\t\t\t\t\tawait runInit(options)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runInit(options: InitOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\n\t// Check for existing config in either location\n\tconst { path: configPath, exists } = findOcxConfig(cwd)\n\n\t// Check for existing config - error if exists (Law 1: Early Exit)\n\tif (exists) {\n\t\tthrow new ConflictError(\n\t\t\t`ocx.jsonc already exists at ${configPath}\\n\\n` +\n\t\t\t\t`To reset, delete the config and run init again:\\n` +\n\t\t\t\t` rm ${configPath} && ocx init`,\n\t\t)\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Initializing OCX...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Create minimal config - schema will apply defaults\n\t\tconst rawConfig = {\n\t\t\t$schema: OCX_SCHEMA_URL,\n\t\t\tregistries: {},\n\t\t}\n\n\t\t// Validate with schema (applies defaults)\n\t\tconst config = ocxConfigSchema.parse(rawConfig)\n\n\t\t// Ensure .opencode directory exists\n\t\tawait mkdir(dirname(configPath), { recursive: true })\n\n\t\t// Write config file\n\t\tconst content = JSON.stringify(config, null, 2)\n\t\tawait writeFile(configPath, content, \"utf-8\")\n\n\t\t// Ensure opencode.jsonc exists (upsert - creates if not present)\n\t\tconst opencodeResult = await ensureOpencodeConfig(cwd)\n\n\t\tspin?.succeed(\"Initialized OCX configuration\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tpath: configPath,\n\t\t\t\t\topencodePath: opencodeResult.path,\n\t\t\t\t\topencodeCreated: opencodeResult.created,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(`Created ${configPath}`)\n\t\t\tif (opencodeResult.created) {\n\t\t\t\tlogger.info(`Created ${opencodeResult.path}`)\n\t\t\t}\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Next steps:\")\n\t\t\tlogger.info(\" 1. Add a registry: ocx registry add <url>\")\n\t\t\tlogger.info(\" 2. Install components: ocx add <component>\")\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to initialize\")\n\t\tthrow error\n\t}\n}\n\nasync function runInitGlobal(options: InitOptions): Promise<void> {\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Initializing global profiles...\" })\n\tspin?.start()\n\n\ttry {\n\t\tconst created: string[] = []\n\t\tconst existed: string[] = []\n\n\t\t// 1. Create global base config (create-if-missing)\n\t\tconst globalConfigPath = getGlobalConfig()\n\t\tif (existsSync(globalConfigPath)) {\n\t\t\texisted.push(\"globalConfig\")\n\t\t} else {\n\t\t\tawait mkdir(dirname(globalConfigPath), { recursive: true, mode: 0o700 })\n\t\t\tawait atomicWrite(globalConfigPath, {\n\t\t\t\t$schema: OCX_SCHEMA_URL,\n\t\t\t\tregistries: {},\n\t\t\t})\n\t\t\tcreated.push(\"globalConfig\")\n\t\t}\n\n\t\t// 2. Create profiles directory (create-if-missing)\n\t\tconst profilesDir = getProfilesDir()\n\t\tif (!existsSync(profilesDir)) {\n\t\t\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\t// 3. Create default profile directory (create-if-missing)\n\t\tconst profileDir = getProfileDir(\"default\")\n\t\tif (!existsSync(profileDir)) {\n\t\t\tawait mkdir(profileDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\t// 4. Check/create each profile file individually\n\t\tconst ocxPath = getProfileOcxConfig(\"default\")\n\t\tif (existsSync(ocxPath)) {\n\t\t\texisted.push(\"profileOcx\")\n\t\t} else {\n\t\t\tawait atomicWrite(ocxPath, DEFAULT_OCX_CONFIG)\n\t\t\tcreated.push(\"profileOcx\")\n\t\t}\n\n\t\tconst opencodePath = getProfileOpencodeConfig(\"default\")\n\t\tif (existsSync(opencodePath)) {\n\t\t\texisted.push(\"profileOpencode\")\n\t\t} else {\n\t\t\tawait atomicWrite(opencodePath, {})\n\t\t\tcreated.push(\"profileOpencode\")\n\t\t}\n\n\t\tconst agentsPath = getProfileAgents(\"default\")\n\t\tif (existsSync(agentsPath)) {\n\t\t\texisted.push(\"profileAgents\")\n\t\t} else {\n\t\t\tconst agentsContent = `# Profile Instructions\n\n<!-- Add your custom instructions for this profile here -->\n<!-- These will be included when running \\`ocx opencode -p default\\` -->\n`\n\t\t\tawait Bun.write(agentsPath, agentsContent, { mode: 0o600 })\n\t\t\tcreated.push(\"profileAgents\")\n\t\t}\n\n\t\tspin?.succeed(\"Initialized global profiles\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\tglobalConfig: globalConfigPath,\n\t\t\t\t\t\tprofileOcx: ocxPath,\n\t\t\t\t\t\tprofileOpencode: opencodePath,\n\t\t\t\t\t\tprofileAgents: agentsPath,\n\t\t\t\t\t},\n\t\t\t\t\tcreated,\n\t\t\t\t\texisted,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tif (created.length > 0) {\n\t\t\t\tfor (const key of created) {\n\t\t\t\t\tif (key === \"globalConfig\") logger.info(`Created global config: ${globalConfigPath}`)\n\t\t\t\t\tif (key === \"profileOcx\") logger.info(`Created profile config: ${ocxPath}`)\n\t\t\t\t\tif (key === \"profileOpencode\")\n\t\t\t\t\t\tlogger.info(`Created profile opencode config: ${opencodePath}`)\n\t\t\t\t\tif (key === \"profileAgents\") logger.info(`Created profile instructions: ${agentsPath}`)\n\t\t\t\t}\n\t\t\t\tlogger.info(\"\")\n\t\t\t\tlogger.info(\"Next steps:\")\n\t\t\t\tlogger.info(\" 1. Edit your profile config: ocx config edit -p default\")\n\t\t\t\tlogger.info(\" 2. Add registries: ocx registry add <url> --name <name> --global\")\n\t\t\t\tlogger.info(\" 3. Launch OpenCode: ocx opencode\")\n\t\t\t\tlogger.info(\" 4. Create more profiles: ocx profile add <name>\")\n\t\t\t} else {\n\t\t\t\tlogger.info(\"Global profiles already initialized (all files exist)\")\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to initialize\")\n\t\tthrow error\n\t}\n}\n\nasync function runInitRegistry(directory: string | undefined, options: InitOptions): Promise<void> {\n\tconst cwd = directory ?? options.cwd ?? process.cwd()\n\tconst namespace = options.namespace ?? \"my-registry\"\n\tconst author = options.author ?? \"Your Name\"\n\n\t// Validate namespace format (Early Exit)\n\tif (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(namespace)) {\n\t\tthrow new ValidationError(\n\t\t\t\"Invalid namespace format: must start with letter/number, use hyphens only between segments (e.g., 'my-registry')\",\n\t\t)\n\t}\n\n\t// Check if directory is empty (Early Exit)\n\tconst existingFiles = await readdir(cwd).catch(() => [])\n\tconst hasVisibleFiles = existingFiles.some((f) => !f.startsWith(\".\"))\n\n\tif (hasVisibleFiles && !options.force) {\n\t\tthrow new ConflictError(\"Directory is not empty. Use --force to overwrite existing files.\")\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Scaffolding registry...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Fetch and extract template (or copy from local)\n\t\tif (spin) spin.text = options.local ? \"Copying template...\" : \"Fetching template...\"\n\n\t\tif (options.local) {\n\t\t\t// Use local template directory\n\t\t\tawait mkdir(cwd, { recursive: true })\n\t\t\tawait copyDir(options.local, cwd)\n\t\t} else {\n\t\t\t// Fetch from GitHub\n\t\t\tconst version = options.canary ? \"main\" : getReleaseTag()\n\t\t\tawait fetchAndExtractTemplate(cwd, version, options.verbose)\n\t\t}\n\n\t\t// Replace placeholders\n\t\tif (spin) spin.text = \"Configuring project...\"\n\t\tawait replacePlaceholders(cwd, { namespace, author })\n\n\t\tspin?.succeed(`Created registry: ${namespace}`)\n\n\t\tif (options.json) {\n\t\t\tconsole.log(JSON.stringify({ success: true, namespace, path: cwd }))\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Next steps:\")\n\t\t\tlogger.info(\" 1. bun install\")\n\t\t\tlogger.info(\" 2. Edit registry.jsonc with your components\")\n\t\t\tlogger.info(\" 3. bun run build\")\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Deploy to:\")\n\t\t\tlogger.info(\" Cloudflare: bunx wrangler deploy\")\n\t\t\tlogger.info(\" Vercel: vercel\")\n\t\t\tlogger.info(\" Netlify: netlify deploy\")\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to scaffold registry\")\n\t\tthrow error\n\t}\n}\n\n/** Copy directory recursively */\nasync function copyDir(src: string, dest: string): Promise<void> {\n\tawait cp(src, dest, { recursive: true })\n}\n\n/**\n * Returns the release tag for template fetching.\n * Throws in development mode - use --canary flag instead.\n */\nexport function getReleaseTag(): string {\n\tif (typeof __VERSION__ === \"undefined\") {\n\t\tthrow new ValidationError(\n\t\t\t\"Cannot fetch release template in development mode. Run with --canary flag to use the latest development template.\",\n\t\t)\n\t}\n\treturn `v${__VERSION__}`\n}\n\n/**\n * Constructs the GitHub tarball URL for a given version.\n * @param version - Either \"main\" for canary or \"vX.Y.Z\" for release\n */\nexport function getTemplateUrl(version: string): string {\n\tconst ref = version === \"main\" ? \"heads/main\" : `tags/${version}`\n\treturn `https://github.com/${TEMPLATE_REPO}/archive/refs/${ref}.tar.gz`\n}\n\nasync function fetchAndExtractTemplate(\n\tdestDir: string,\n\tversion: string,\n\tverbose?: boolean,\n): Promise<void> {\n\tconst tarballUrl = getTemplateUrl(version)\n\n\tif (verbose) {\n\t\tlogger.info(`Fetching ${tarballUrl}`)\n\t}\n\n\tconst response = await fetch(tarballUrl)\n\tif (!response.ok || !response.body) {\n\t\tthrow new NetworkError(`Failed to fetch template from ${tarballUrl}: ${response.statusText}`)\n\t}\n\n\t// Create temp directory for extraction\n\tconst tempDir = join(destDir, \".ocx-temp\")\n\tawait mkdir(tempDir, { recursive: true })\n\n\ttry {\n\t\t// Download tarball\n\t\tconst tarPath = join(tempDir, \"template.tar.gz\")\n\t\tconst arrayBuffer = await response.arrayBuffer()\n\t\tawait writeFile(tarPath, Buffer.from(arrayBuffer))\n\n\t\t// Extract using tar command (available on all platforms with Bun)\n\t\tconst proc = Bun.spawn([\"tar\", \"-xzf\", tarPath, \"-C\", tempDir], {\n\t\t\tstdout: \"ignore\",\n\t\t\tstderr: \"pipe\",\n\t\t})\n\t\tconst exitCode = await proc.exited\n\t\tif (exitCode !== 0) {\n\t\t\tconst stderr = await new Response(proc.stderr).text()\n\t\t\tthrow new Error(`Failed to extract template: ${stderr}`)\n\t\t}\n\n\t\t// Find the extracted directory (format: ocx-{version}/)\n\t\tconst extractedDirs = await readdir(tempDir)\n\t\tconst extractedDir = extractedDirs.find((d) => d.startsWith(\"ocx-\"))\n\t\tif (!extractedDir) {\n\t\t\tthrow new Error(\"Failed to find extracted template directory\")\n\t\t}\n\n\t\t// Copy template files to destination\n\t\tconst templateDir = join(tempDir, extractedDir, TEMPLATE_PATH)\n\t\tawait copyDir(templateDir, destDir)\n\t} finally {\n\t\t// Cleanup temp directory\n\t\tawait rm(tempDir, { recursive: true, force: true })\n\t}\n}\n\nasync function replacePlaceholders(\n\tdir: string,\n\tvalues: { namespace: string; author: string },\n): Promise<void> {\n\tconst filesToProcess = [\n\t\t\"registry.jsonc\",\n\t\t\"package.json\",\n\t\t\"wrangler.jsonc\",\n\t\t\"README.md\",\n\t\t\"AGENTS.md\",\n\t]\n\n\tfor (const file of filesToProcess) {\n\t\tconst filePath = join(dir, file)\n\t\tif (!existsSync(filePath)) continue\n\n\t\tlet content = await readFile(filePath).then((b) => b.toString())\n\n\t\t// Replace placeholders\n\t\tcontent = content.replace(/my-registry/g, values.namespace)\n\t\tcontent = content.replace(/Your Name/g, values.author)\n\n\t\tawait writeFile(filePath, content)\n\t}\n}\n",
|
|
104
|
+
"/**\n * OCX CLI - init command\n * Initialize OCX configuration in a project or scaffold a new registry\n */\n\nimport { existsSync } from \"node:fs\"\nimport { cp, mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport type { Command } from \"commander\"\nimport { OCX_SCHEMA_URL } from \"../constants\"\nimport { atomicWrite } from \"../profile/atomic\"\nimport { DEFAULT_OCX_CONFIG } from \"../profile/manager\"\nimport {\n\tgetGlobalConfig,\n\tgetProfileAgents,\n\tgetProfileDir,\n\tgetProfileOcxConfig,\n\tgetProfileOpencodeConfig,\n\tgetProfilesDir,\n} from \"../profile/paths\"\nimport { findOcxConfig, ocxConfigSchema } from \"../schemas/config\"\nimport { ensureOpencodeConfig } from \"../updaters/update-opencode-config\"\nimport { ConflictError, NetworkError, ValidationError } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\n\ndeclare const __VERSION__: string | undefined\n\nexport const TEMPLATE_REPO = \"kdcokenny/ocx\"\nconst TEMPLATE_PATH = \"examples/registry-starter\"\n\ninterface InitOptions {\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n\tregistry?: boolean\n\tnamespace?: string\n\tauthor?: string\n\tcanary?: boolean\n\tlocal?: string\n\tforce?: boolean // Only used for --registry mode\n\tglobal?: boolean\n}\n\nexport function registerInitCommand(program: Command): void {\n\tprogram\n\t\t.command(\"init [directory]\")\n\t\t.description(\"Initialize OCX configuration in your project\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"-v, --verbose\", \"Verbose output\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.option(\"--registry\", \"Scaffold a new OCX registry project\")\n\t\t.option(\"--namespace <name>\", \"Registry namespace (e.g., my-org)\")\n\t\t.option(\"--author <name>\", \"Author name for the registry\")\n\t\t.option(\"--canary\", \"Use canary (main branch) instead of latest release\")\n\t\t.option(\"--local <path>\", \"Use local template directory instead of fetching\")\n\t\t.option(\"-f, --force\", \"Overwrite existing files (registry mode only)\")\n\t\t.option(\"-g, --global\", \"Initialize in global OpenCode config (~/.config/opencode)\")\n\t\t.action(async (directory: string | undefined, options: InitOptions) => {\n\t\t\ttry {\n\t\t\t\tif (options.registry) {\n\t\t\t\t\tawait runInitRegistry(directory, options)\n\t\t\t\t} else if (options.global) {\n\t\t\t\t\tawait runInitGlobal(options)\n\t\t\t\t} else {\n\t\t\t\t\tawait runInit(options)\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runInit(options: InitOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\n\t// Check for existing config in either location\n\tconst { path: configPath, exists } = findOcxConfig(cwd)\n\n\t// Check for existing config - error if exists (Law 1: Early Exit)\n\tif (exists) {\n\t\tthrow new ConflictError(\n\t\t\t`ocx.jsonc already exists at ${configPath}\\n\\n` +\n\t\t\t\t`To reset, delete the config and run init again:\\n` +\n\t\t\t\t` rm ${configPath} && ocx init`,\n\t\t)\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Initializing OCX...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Create minimal config - schema will apply defaults\n\t\tconst rawConfig = {\n\t\t\t$schema: OCX_SCHEMA_URL,\n\t\t\tregistries: {},\n\t\t}\n\n\t\t// Validate with schema (applies defaults)\n\t\tconst config = ocxConfigSchema.parse(rawConfig)\n\n\t\t// Ensure .opencode directory exists\n\t\tawait mkdir(dirname(configPath), { recursive: true })\n\n\t\t// Write config file\n\t\tconst content = JSON.stringify(config, null, 2)\n\t\tawait writeFile(configPath, content, \"utf-8\")\n\n\t\t// Ensure opencode.jsonc exists (upsert - creates if not present)\n\t\tconst opencodeResult = await ensureOpencodeConfig(cwd)\n\n\t\tspin?.succeed(\"Initialized OCX configuration\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tpath: configPath,\n\t\t\t\t\topencodePath: opencodeResult.path,\n\t\t\t\t\topencodeCreated: opencodeResult.created,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(`Created ${configPath}`)\n\t\t\tif (opencodeResult.created) {\n\t\t\t\tlogger.info(`Created ${opencodeResult.path}`)\n\t\t\t}\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Next steps:\")\n\t\t\tlogger.info(\" 1. Add a registry: ocx registry add <url>\")\n\t\t\tlogger.info(\" 2. Install components: ocx add <component>\")\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to initialize\")\n\t\tthrow error\n\t}\n}\n\nasync function runInitGlobal(options: InitOptions): Promise<void> {\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Initializing global profiles...\" })\n\tspin?.start()\n\n\ttry {\n\t\tconst created: string[] = []\n\t\tconst existed: string[] = []\n\n\t\t// 1. Create global base config (create-if-missing)\n\t\tconst globalConfigPath = getGlobalConfig()\n\t\tif (existsSync(globalConfigPath)) {\n\t\t\texisted.push(\"globalConfig\")\n\t\t} else {\n\t\t\tawait mkdir(dirname(globalConfigPath), { recursive: true, mode: 0o700 })\n\t\t\tawait atomicWrite(globalConfigPath, {\n\t\t\t\t$schema: OCX_SCHEMA_URL,\n\t\t\t\tregistries: {},\n\t\t\t})\n\t\t\tcreated.push(\"globalConfig\")\n\t\t}\n\n\t\t// 2. Create profiles directory (create-if-missing)\n\t\tconst profilesDir = getProfilesDir()\n\t\tif (!existsSync(profilesDir)) {\n\t\t\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\t// 3. Create default profile directory (create-if-missing)\n\t\tconst profileDir = getProfileDir(\"default\")\n\t\tif (!existsSync(profileDir)) {\n\t\t\tawait mkdir(profileDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\t// 4. Check/create each profile file individually\n\t\tconst ocxPath = getProfileOcxConfig(\"default\")\n\t\tif (existsSync(ocxPath)) {\n\t\t\texisted.push(\"profileOcx\")\n\t\t} else {\n\t\t\tawait atomicWrite(ocxPath, DEFAULT_OCX_CONFIG)\n\t\t\tcreated.push(\"profileOcx\")\n\t\t}\n\n\t\tconst opencodePath = getProfileOpencodeConfig(\"default\")\n\t\tif (existsSync(opencodePath)) {\n\t\t\texisted.push(\"profileOpencode\")\n\t\t} else {\n\t\t\tawait atomicWrite(opencodePath, {})\n\t\t\tcreated.push(\"profileOpencode\")\n\t\t}\n\n\t\tconst agentsPath = getProfileAgents(\"default\")\n\t\tif (existsSync(agentsPath)) {\n\t\t\texisted.push(\"profileAgents\")\n\t\t} else {\n\t\t\tconst agentsContent = `# Profile Instructions\n\n<!-- Add your custom instructions for this profile here -->\n<!-- These will be included when running \\`ocx opencode -p default\\` -->\n`\n\t\t\tawait Bun.write(agentsPath, agentsContent, { mode: 0o600 })\n\t\t\tcreated.push(\"profileAgents\")\n\t\t}\n\n\t\tspin?.succeed(\"Initialized global profiles\")\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tfiles: {\n\t\t\t\t\t\tglobalConfig: globalConfigPath,\n\t\t\t\t\t\tprofileOcx: ocxPath,\n\t\t\t\t\t\tprofileOpencode: opencodePath,\n\t\t\t\t\t\tprofileAgents: agentsPath,\n\t\t\t\t\t},\n\t\t\t\t\tcreated,\n\t\t\t\t\texisted,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tif (created.length > 0) {\n\t\t\t\tfor (const key of created) {\n\t\t\t\t\tif (key === \"globalConfig\") logger.info(`Created global config: ${globalConfigPath}`)\n\t\t\t\t\tif (key === \"profileOcx\") logger.info(`Created profile config: ${ocxPath}`)\n\t\t\t\t\tif (key === \"profileOpencode\")\n\t\t\t\t\t\tlogger.info(`Created profile opencode config: ${opencodePath}`)\n\t\t\t\t\tif (key === \"profileAgents\") logger.info(`Created profile instructions: ${agentsPath}`)\n\t\t\t\t}\n\t\t\t\tlogger.info(\"\")\n\t\t\t\tlogger.info(\"Next steps:\")\n\t\t\t\tlogger.info(\" 1. Edit your profile config: ocx config edit -p default\")\n\t\t\t\tlogger.info(\" 2. Add registries: ocx registry add <url> --name <name> --global\")\n\t\t\t\tlogger.info(\" 3. Launch OpenCode: ocx opencode\")\n\t\t\t\tlogger.info(\" 4. Create more profiles: ocx profile add <name>\")\n\t\t\t} else {\n\t\t\t\tlogger.info(\"Global profiles already initialized (all files exist)\")\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to initialize\")\n\t\tthrow error\n\t}\n}\n\nasync function runInitRegistry(directory: string | undefined, options: InitOptions): Promise<void> {\n\tconst cwd = directory ?? options.cwd ?? process.cwd()\n\tconst namespace = options.namespace ?? \"my-registry\"\n\tconst author = options.author ?? \"Your Name\"\n\n\t// Validate namespace format (Early Exit)\n\tif (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(namespace)) {\n\t\tthrow new ValidationError(\n\t\t\t\"Invalid namespace format: must start with letter/number, use hyphens only between segments (e.g., 'my-registry')\",\n\t\t)\n\t}\n\n\t// Check if directory is empty (Early Exit)\n\tconst existingFiles = await readdir(cwd).catch(() => [])\n\tconst hasVisibleFiles = existingFiles.some((f) => !f.startsWith(\".\"))\n\n\tif (hasVisibleFiles && !options.force) {\n\t\tthrow new ConflictError(\"Directory is not empty. Use --force to overwrite existing files.\")\n\t}\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Scaffolding registry...\" })\n\tspin?.start()\n\n\ttry {\n\t\t// Fetch and extract template (or copy from local)\n\t\tif (spin) spin.text = options.local ? \"Copying template...\" : \"Fetching template...\"\n\n\t\tif (options.local) {\n\t\t\t// Use local template directory\n\t\t\tawait mkdir(cwd, { recursive: true })\n\t\t\tawait copyDir(options.local, cwd)\n\t\t} else {\n\t\t\t// Fetch from GitHub\n\t\t\tconst version = options.canary ? \"main\" : getReleaseTag()\n\t\t\tawait fetchAndExtractTemplate(cwd, version, options.verbose)\n\t\t}\n\n\t\t// Replace placeholders\n\t\tif (spin) spin.text = \"Configuring project...\"\n\t\tawait replacePlaceholders(cwd, { namespace, author })\n\n\t\tspin?.succeed(`Created registry: ${namespace}`)\n\n\t\tif (options.json) {\n\t\t\tconsole.log(JSON.stringify({ success: true, namespace, path: cwd }))\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Next steps:\")\n\t\t\tlogger.info(\" 1. bun install\")\n\t\t\tlogger.info(\" 2. Edit registry.jsonc with your components\")\n\t\t\tlogger.info(\" 3. bun run build\")\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Deploy to:\")\n\t\t\tlogger.info(\" Cloudflare: bunx wrangler deploy\")\n\t\t\tlogger.info(\" Vercel: vercel\")\n\t\t\tlogger.info(\" Netlify: netlify deploy\")\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to scaffold registry\")\n\t\tthrow error\n\t}\n}\n\n/** Copy directory recursively */\nasync function copyDir(src: string, dest: string): Promise<void> {\n\tawait cp(src, dest, { recursive: true })\n}\n\n/**\n * Returns the release tag for template fetching.\n * Throws in development mode - use --canary flag instead.\n */\nexport function getReleaseTag(): string {\n\tif (typeof __VERSION__ === \"undefined\") {\n\t\tthrow new ValidationError(\n\t\t\t\"Cannot fetch release template in development mode. Run with --canary flag to use the latest development template.\",\n\t\t)\n\t}\n\treturn `v${__VERSION__}`\n}\n\n/**\n * Constructs the GitHub tarball URL for a given version.\n * @param version - Either \"main\" for canary or \"vX.Y.Z\" for release\n */\nexport function getTemplateUrl(version: string): string {\n\tconst ref = version === \"main\" ? \"heads/main\" : `tags/${version}`\n\treturn `https://github.com/${TEMPLATE_REPO}/archive/refs/${ref}.tar.gz`\n}\n\nasync function fetchAndExtractTemplate(\n\tdestDir: string,\n\tversion: string,\n\tverbose?: boolean,\n): Promise<void> {\n\tconst tarballUrl = getTemplateUrl(version)\n\n\tif (verbose) {\n\t\tlogger.info(`Fetching ${tarballUrl}`)\n\t}\n\n\tconst response = await fetch(tarballUrl)\n\tif (!response.ok || !response.body) {\n\t\tthrow new NetworkError(`Failed to fetch template from ${tarballUrl}: ${response.statusText}`)\n\t}\n\n\t// Create temp directory for extraction\n\tconst tempDir = join(destDir, \".ocx-temp\")\n\tawait mkdir(tempDir, { recursive: true })\n\n\ttry {\n\t\t// Download tarball\n\t\tconst tarPath = join(tempDir, \"template.tar.gz\")\n\t\tconst arrayBuffer = await response.arrayBuffer()\n\t\tawait writeFile(tarPath, Buffer.from(arrayBuffer))\n\n\t\t// Extract using tar command (available on all platforms with Bun)\n\t\tconst proc = Bun.spawn([\"tar\", \"-xzf\", tarPath, \"-C\", tempDir], {\n\t\t\tstdout: \"ignore\",\n\t\t\tstderr: \"pipe\",\n\t\t})\n\t\tconst exitCode = await proc.exited\n\t\tif (exitCode !== 0) {\n\t\t\tconst stderr = await new Response(proc.stderr).text()\n\t\t\tthrow new Error(`Failed to extract template: ${stderr}`)\n\t\t}\n\n\t\t// Find the extracted directory (format: ocx-{version}/)\n\t\tconst extractedDirs = await readdir(tempDir)\n\t\tconst extractedDir = extractedDirs.find((d) => d.startsWith(\"ocx-\"))\n\t\tif (!extractedDir) {\n\t\t\tthrow new Error(\"Failed to find extracted template directory\")\n\t\t}\n\n\t\t// Copy template files to destination\n\t\tconst templateDir = join(tempDir, extractedDir, TEMPLATE_PATH)\n\t\tawait copyDir(templateDir, destDir)\n\t} finally {\n\t\t// Cleanup temp directory\n\t\tawait rm(tempDir, { recursive: true, force: true })\n\t}\n}\n\n/** Convert string to title case (e.g., \"my-registry\" → \"My Registry\") */\nfunction toTitleCase(str: string): string {\n\treturn str\n\t\t.split(/[-_\\s]+/)\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n\t\t.join(\" \")\n}\n\nasync function replacePlaceholders(\n\tdir: string,\n\tvalues: { namespace: string; author: string },\n): Promise<void> {\n\tconst filesToProcess = [\n\t\t\"registry.jsonc\",\n\t\t\"package.json\",\n\t\t\"wrangler.jsonc\",\n\t\t\"README.md\",\n\t\t\"AGENTS.md\",\n\t]\n\n\tfor (const file of filesToProcess) {\n\t\tconst filePath = join(dir, file)\n\t\tif (!existsSync(filePath)) continue\n\n\t\tlet content = await readFile(filePath).then((b) => b.toString())\n\n\t\t// Replace placeholders\n\t\tcontent = content.replace(/my-registry/g, values.namespace)\n\t\tcontent = content.replace(/My Registry/g, toTitleCase(values.namespace))\n\t\tcontent = content.replace(/Your Name/g, values.author)\n\n\t\tawait writeFile(filePath, content)\n\t}\n}\n",
|
|
104
105
|
"/**\n * OpenCode Command\n *\n * Launch OpenCode with resolved configuration.\n * Uses ConfigResolver with registry isolation (profile OR local, not merged).\n * OpenCode config and instructions are additively merged when not excluded.\n * Spawns OpenCode with the resolved configuration.\n */\n\nimport { resolve } from \"node:path\"\nimport type { Command } from \"commander\"\nimport { ConfigResolver } from \"../config/resolver\"\nimport { ProfileManager } from \"../profile/manager\"\nimport { getProfileDir, getProfileOpencodeConfig } from \"../profile/paths\"\nimport { ProfilesNotInitializedError } from \"../utils/errors\"\nimport { getGitInfo } from \"../utils/git-context\"\nimport { handleError, logger } from \"../utils/index\"\nimport { sharedOptions } from \"../utils/shared-options\"\nimport {\n\tformatTerminalName,\n\trestoreTerminalTitle,\n\tsaveTerminalTitle,\n\tsetTerminalName,\n} from \"../utils/terminal-title\"\n\ninterface OpencodeOptions {\n\tprofile?: string\n\trename?: boolean\n\tquiet?: boolean\n\tjson?: boolean\n}\n\n/**\n * Resolves which opencode binary to use.\n * Priority: configBin > envBin > \"opencode\"\n *\n * Uses nullish coalescing (??) to preserve original behavior:\n * - Empty string \"\" is passed through (will cause spawn error, but that's intentional)\n * - Only undefined/null falls through to the next option\n */\nexport function resolveOpenCodeBinary(opts: { configBin?: string; envBin?: string }): string {\n\treturn opts.configBin ?? opts.envBin ?? \"opencode\"\n}\n\n/**\n * Builds environment variables to pass to the opencode process.\n * Returns a NEW object - does not mutate baseEnv.\n *\n * Behavior:\n * - Preserves all keys from baseEnv\n * - Overwrites OCX_PROFILE, OPENCODE_* keys with new values\n * - OPENCODE_DISABLE_PROJECT_CONFIG always set to \"true\" when disableProjectConfig is true\n */\nexport function buildOpenCodeEnv(opts: {\n\tbaseEnv: Record<string, string | undefined>\n\tprofileDir?: string\n\tprofileName?: string\n\tmergedConfig?: object\n\tdisableProjectConfig: boolean\n}): Record<string, string | undefined> {\n\treturn {\n\t\t...opts.baseEnv,\n\t\t...(opts.disableProjectConfig && { OPENCODE_DISABLE_PROJECT_CONFIG: \"true\" }),\n\t\t...(opts.profileDir && { OPENCODE_CONFIG_DIR: opts.profileDir }),\n\t\t...(opts.mergedConfig && { OPENCODE_CONFIG_CONTENT: JSON.stringify(opts.mergedConfig) }),\n\t\t...(opts.profileName && { OCX_PROFILE: opts.profileName }),\n\t}\n}\n\nexport function registerOpencodeCommand(program: Command): void {\n\tprogram\n\t\t.command(\"opencode [path]\")\n\t\t.alias(\"oc\")\n\t\t.description(\"Launch OpenCode with resolved configuration\")\n\t\t.option(\"-p, --profile <name>\", \"Use specific profile\")\n\t\t.option(\"--no-rename\", \"Disable terminal/tmux window renaming\")\n\t\t.addOption(sharedOptions.quiet())\n\t\t.addOption(sharedOptions.json())\n\t\t.allowUnknownOption()\n\t\t.allowExcessArguments(true)\n\t\t.action(async (path: string | undefined, options: OpencodeOptions, command: Command) => {\n\t\t\ttry {\n\t\t\t\tawait runOpencode(path, command.args, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runOpencode(\n\tpathArg: string | undefined,\n\targs: string[],\n\toptions: OpencodeOptions,\n): Promise<void> {\n\t// Resolve project directory\n\tconst projectDir = pathArg ? resolve(pathArg) : process.cwd()\n\n\t// Create resolver with optional profile override\n\tconst resolver = await ConfigResolver.create(projectDir, { profile: options.profile })\n\tconst config = resolver.resolve()\n\tconst profile = resolver.getProfile()\n\n\t// Guard: If profile is specified but profiles aren't initialized\n\tif (options.profile) {\n\t\tconst manager = ProfileManager.create()\n\t\tif (!(await manager.isInitialized())) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\t}\n\n\t// Print feedback about which profile is being used\n\tif (config.profileName && !options.quiet) {\n\t\tlogger.info(`Using profile: ${config.profileName}`)\n\t}\n\n\t// Determine if terminal should be renamed\n\t// Precedence: CLI flag > config > default(true)\n\tconst ocxConfig = profile?.ocx\n\tconst shouldRename = options.rename !== false && ocxConfig?.renameWindow !== false\n\n\t// Get profile directory if we have a profile\n\tconst profileDir = config.profileName ? getProfileDir(config.profileName) : undefined\n\n\t// Check for profile's opencode.jsonc (optional)\n\tif (config.profileName && !options.quiet) {\n\t\tconst profileOpencodePath = getProfileOpencodeConfig(config.profileName)\n\t\tconst profileOpencodeFile = Bun.file(profileOpencodePath)\n\t\tconst hasOpencodeConfig = await profileOpencodeFile.exists()\n\t\tif (!hasOpencodeConfig) {\n\t\t\tlogger.warn(\n\t\t\t\t`No opencode.jsonc found at ${profileOpencodePath}. Create one to customize OpenCode settings.`,\n\t\t\t)\n\t\t}\n\t}\n\n\t// Build the config to pass to OpenCode\n\tconst configToPass =\n\t\tconfig.instructions.length > 0 || Object.keys(config.opencode).length > 0\n\t\t\t? {\n\t\t\t\t\t...config.opencode,\n\t\t\t\t\tinstructions: config.instructions.length > 0 ? config.instructions : undefined,\n\t\t\t\t}\n\t\t\t: undefined\n\n\t// Setup signal handlers BEFORE spawn to avoid race condition\n\tlet proc: ReturnType<typeof Bun.spawn> | null = null\n\n\tconst sigintHandler = () => proc?.kill(\"SIGINT\")\n\tconst sigtermHandler = () => proc?.kill(\"SIGTERM\")\n\n\tprocess.on(\"SIGINT\", sigintHandler)\n\tprocess.on(\"SIGTERM\", sigtermHandler)\n\n\t// Exit handler for terminal title restoration\n\tconst exitHandler = () => {\n\t\tif (shouldRename) {\n\t\t\trestoreTerminalTitle()\n\t\t}\n\t}\n\tprocess.on(\"exit\", exitHandler)\n\n\t// Set terminal name only if enabled\n\tif (shouldRename) {\n\t\tsaveTerminalTitle()\n\t\tconst gitInfo = await getGitInfo(projectDir)\n\t\tsetTerminalName(formatTerminalName(projectDir, config.profileName ?? \"default\", gitInfo))\n\t}\n\n\t// Determine OpenCode binary\n\tconst bin = resolveOpenCodeBinary({\n\t\tconfigBin: ocxConfig?.bin,\n\t\tenvBin: process.env.OPENCODE_BIN,\n\t})\n\n\t// Spawn OpenCode directly in the project directory with config via environment\n\tproc = Bun.spawn({\n\t\tcmd: [bin, ...args],\n\t\tcwd: projectDir,\n\t\tenv: buildOpenCodeEnv({\n\t\t\tbaseEnv: process.env as Record<string, string | undefined>,\n\t\t\tprofileDir,\n\t\t\tprofileName: config.profileName ?? undefined,\n\t\t\tmergedConfig: configToPass,\n\t\t\tdisableProjectConfig: true,\n\t\t}),\n\t\tstdin: \"inherit\",\n\t\tstdout: \"inherit\",\n\t\tstderr: \"inherit\",\n\t})\n\n\ttry {\n\t\t// Wait for child to exit\n\t\tconst exitCode = await proc.exited\n\n\t\t// Cleanup signal handlers\n\t\tprocess.off(\"SIGINT\", sigintHandler)\n\t\tprocess.off(\"SIGTERM\", sigtermHandler)\n\t\tprocess.off(\"exit\", exitHandler)\n\n\t\t// Restore terminal title if we renamed it\n\t\tif (shouldRename) {\n\t\t\trestoreTerminalTitle()\n\t\t}\n\n\t\tprocess.exit(exitCode)\n\t} catch (error) {\n\t\t// Error during spawn/wait - cleanup handlers\n\t\tprocess.off(\"SIGINT\", sigintHandler)\n\t\tprocess.off(\"SIGTERM\", sigtermHandler)\n\t\tprocess.off(\"exit\", exitHandler)\n\n\t\tif (shouldRename) {\n\t\t\trestoreTerminalTitle()\n\t\t}\n\n\t\tthrow error\n\t}\n}\n",
|
|
105
106
|
"/**\n * Terminal title and tmux window naming utilities.\n *\n * Provides cross-environment terminal identification by setting both\n * the terminal title (via ANSI OSC escape) and tmux window name (if applicable).\n *\n * Terminal renaming can be disabled via profile config (`renameWindow: false`)\n * or the `--no-rename` CLI flag for `ocx opencode`.\n */\n\nimport path from \"node:path\"\nimport { isTTY } from \"./env\"\nimport type { GitInfo } from \"./git-context\"\n\nconst MAX_BRANCH_LENGTH = 20\n\n// ============================================================================\n// Terminal Title Stack (Save/Restore)\n// ============================================================================\n// REQUIREMENT: Profile mode must restore the original terminal title on exit.\n//\n// APPROACH: Uses XTerm's title stack (CSI 22;2t push, CSI 23;2t pop).\n// This follows the pattern used by Vim and Neovim for reliable restoration.\n//\n// COMPATIBILITY: Supported by xterm, iTerm2, Alacritty, VTE/GNOME.\n// Unsupported terminals (kitty, Windows Terminal) safely ignore the sequences\n// per ECMA-48 specification.\n//\n// LIMITATION: SIGKILL cannot be caught, so title won't restore if the process\n// is killed with `kill -9`. This is an industry-accepted limitation.\n// ============================================================================\n\n/** Tracks whether we've pushed to the terminal title stack */\nlet titleSaved = false\n\n/**\n * Checks if the current process is running inside a tmux session.\n *\n * @returns true if inside tmux, false otherwise\n *\n * @example\n * ```ts\n * if (isInsideTmux()) {\n * console.log(\"Running inside tmux\")\n * }\n * ```\n */\nexport function isInsideTmux(): boolean {\n\treturn Boolean(process.env.TMUX)\n}\n\n/**\n * Sets the tmux window name for the current session.\n *\n * This function:\n * 1. Renames the current window to the specified name\n * 2. Disables automatic-rename to prevent tmux from overwriting it\n *\n * @param name - The name to set for the tmux window\n *\n * @example\n * ```ts\n * setTmuxWindowName(\"ocx: my-project\")\n * ```\n */\nexport function setTmuxWindowName(name: string): void {\n\t// Early exit: not inside tmux\n\tif (!isInsideTmux()) {\n\t\treturn\n\t}\n\n\t// Rename the current window\n\tBun.spawnSync([\"tmux\", \"rename-window\", name])\n\n\t// Disable automatic-rename to prevent tmux from overwriting our name\n\tBun.spawnSync([\"tmux\", \"set-window-option\", \"automatic-rename\", \"off\"])\n}\n\n/**\n * Sets the terminal title using ANSI OSC escape sequence.\n *\n * Uses OSC 0 (Operating System Command) which sets both window title\n * and icon name on supported terminals.\n *\n * @param title - The title to set for the terminal window\n *\n * @example\n * ```ts\n * setTerminalTitle(\"ocx: my-project\")\n * ```\n */\nexport function setTerminalTitle(title: string): void {\n\t// Early exit: not a TTY\n\tif (!isTTY) {\n\t\treturn\n\t}\n\n\t// OSC 0: Set window title and icon name\n\t// Format: ESC ] 0 ; <title> BEL\n\tprocess.stdout.write(`\\x1b]0;${title}\\x07`)\n}\n\n/**\n * Sets the terminal name across all supported environments.\n *\n * This is the main export that handles both:\n * - tmux window naming (if inside tmux)\n * - Standard terminal title (via ANSI escape)\n *\n * @param name - The name to set for the terminal\n *\n * @example\n * ```ts\n * // In opencode command\n * setTerminalName(`ocx: ${projectName}`)\n * ```\n */\nexport function setTerminalName(name: string): void {\n\tsetTmuxWindowName(name)\n\tsetTerminalTitle(name)\n}\n\n/**\n * Saves the current terminal title to the terminal's title stack.\n * Uses XTerm CSI 22;2t (push window title only).\n *\n * Safe to call on unsupported terminals - the sequence is ignored per ECMA-48.\n * Uses Neovim's pattern of tracking state to prevent double-push.\n *\n * @example\n * ```ts\n * saveTerminalTitle() // Push current title\n * setTerminalName(\"ocx[default]:repo/main\")\n * // ... later on exit ...\n * restoreTerminalTitle() // Pop to restore original\n * ```\n */\nexport function saveTerminalTitle(): void {\n\t// Guard: Already saved or not a TTY\n\tif (titleSaved || !isTTY) {\n\t\treturn\n\t}\n\n\t// CSI 22;2t - Push window title to stack (;2 = title only, not icon name)\n\tprocess.stdout.write(\"\\x1b[22;2t\")\n\ttitleSaved = true\n}\n\n/**\n * Restores the previous terminal title from the stack.\n * Uses XTerm CSI 23;2t (pop window title).\n * For tmux: re-enables automatic-rename to restore dynamic window naming.\n *\n * Safe to call even if save wasn't called - pop from empty stack is a no-op.\n * Must be called synchronously in exit handlers for guaranteed execution.\n *\n * @example\n * ```ts\n * process.on('exit', () => {\n * restoreTerminalTitle() // Restore original title\n * })\n * ```\n */\nexport function restoreTerminalTitle(): void {\n\t// Guard: Nothing to restore\n\tif (!titleSaved) {\n\t\treturn\n\t}\n\n\t// Restore tmux automatic window naming\n\tif (isInsideTmux()) {\n\t\tBun.spawnSync([\"tmux\", \"set-window-option\", \"automatic-rename\", \"on\"])\n\t}\n\n\t// CSI 23;2t - Pop window title from stack\n\tif (isTTY) {\n\t\tprocess.stdout.write(\"\\x1b[23;2t\")\n\t}\n\n\ttitleSaved = false\n}\n\n/**\n * Formats the terminal name for profile mode sessions.\n *\n * Format: ocx[profileName]:repoName/branch\n *\n * @param cwd - Current working directory\n * @param profileName - Active profile name\n * @param gitInfo - Git repository information\n * @returns Formatted terminal name\n *\n * @example\n * ```ts\n * formatTerminalName(\"/path/to/repo\", \"default\", { repoName: \"ocx\", branch: \"main\" })\n * // Returns: \"ocx[default]:ocx/main\"\n *\n * formatTerminalName(\"/path/to/repo\", \"work\", { repoName: null, branch: null })\n * // Returns: \"ocx[work]:repo\"\n * ```\n */\nexport function formatTerminalName(cwd: string, profileName: string, gitInfo: GitInfo): string {\n\tconst repoName = gitInfo.repoName ?? path.basename(cwd)\n\n\t// Early exit: no branch info\n\tif (!gitInfo.branch) {\n\t\treturn `ocx[${profileName}]:${repoName}`\n\t}\n\n\t// Truncate long branch names to keep terminal title readable\n\tconst branch =\n\t\tgitInfo.branch.length > MAX_BRANCH_LENGTH\n\t\t\t? `${gitInfo.branch.slice(0, MAX_BRANCH_LENGTH - 3)}...`\n\t\t\t: gitInfo.branch\n\n\treturn `ocx[${profileName}]:${repoName}/${branch}`\n}\n",
|
|
106
|
-
"/**\n * Profile Installation from Registry\n *\n * Installs a profile package from a registry, including:\n * - Profile files (ocx.jsonc, opencode.jsonc, AGENTS.md) -> flat in profile dir\n * - Dependencies (agents, skills, etc.) -> profile's .opencode/ subdirectory\n * - Lock file creation for reproducible installs\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rename, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport { getProfileDir, getProfilesDir } from \"../../profile/paths\"\nimport { profileNameSchema } from \"../../profile/schema\"\nimport { fetchComponent, fetchFileContent, fetchRegistryIndex } from \"../../registry/fetcher\"\nimport { resolveDependencies } from \"../../registry/resolver\"\nimport type { RegistryConfig } from \"../../schemas/config\"\nimport { normalizeComponentManifest } from \"../../schemas/registry\"\nimport { ConflictError, NotFoundError, ValidationError } from \"../../utils/errors\"\nimport { createSpinner, logger } from \"../../utils/index\"\nimport { resolveTargetPath } from \"../../utils/paths\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface InstallProfileOptions {\n\t/** Registry namespace (e.g., \"kdco\") */\n\tnamespace: string\n\t/** Component name (e.g., \"minimal\") */\n\tcomponent: string\n\t/** Local profile name (e.g., \"work\") */\n\tprofileName: string\n\t/** Overwrite existing files */\n\tforce?: boolean\n\t/** Resolved registry URL */\n\tregistryUrl: string\n\t/** All configured registries (for dependency resolution) */\n\tregistries: Record<string, RegistryConfig>\n\t/** Suppress output */\n\tquiet?: boolean\n}\n\n/**\n * Profile-specific lock file schema.\n * Tracks what was installed from the registry for reproducibility.\n */\nexport interface ProfileLock {\n\t/** Lock file format version */\n\tversion: 1\n\t/** Source profile component info */\n\tinstalledFrom: {\n\t\tregistry: string\n\t\tcomponent: string\n\t\tversion?: string\n\t\thash: string\n\t\tinstalledAt: string\n\t}\n\t/** Installed dependencies */\n\tinstalled: {\n\t\t[qualifiedName: string]: {\n\t\t\tregistry: string\n\t\t\tversion?: string\n\t\t\thash: string\n\t\t\tfiles: string[]\n\t\t\tinstalledAt: string\n\t\t}\n\t}\n}\n\n// =============================================================================\n// PROFILE FILE TARGETS (flat in profile dir, not in .opencode/)\n// =============================================================================\n\n/** Valid profile file targets (flat, no .opencode/ prefix) */\nconst PROFILE_FILE_TARGETS = new Set([\"ocx.jsonc\", \"opencode.jsonc\", \"AGENTS.md\"])\n\n/**\n * Check if a file target is a profile file (goes flat in profile dir)\n */\nfunction isProfileFile(target: string): boolean {\n\treturn PROFILE_FILE_TARGETS.has(target)\n}\n\n// =============================================================================\n// HASHING UTILITIES\n// =============================================================================\n\nfunction hashContent(content: string | Buffer): string {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\nfunction hashBundle(files: { path: string; content: Buffer }[]): string {\n\t// Sort files for deterministic hashing\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\t// Create a manifest of file hashes\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\t// Hash the manifest itself\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n\n// =============================================================================\n// MAIN INSTALLATION FUNCTION\n// =============================================================================\n\n/**\n * Install a profile from a registry.\n *\n * Flow:\n * 1. Fetch and validate the profile component manifest\n * 2. Fetch all profile files from registry\n * 3. Resolve and fetch dependencies (if any)\n * 4. Create staging directory for atomic install\n * 5. Write profile files (flat in profile dir)\n * 6. Write dependency files (to .opencode/ in profile)\n * 7. Create ocx.lock in profile directory\n * 8. Move staging dir to final profile location\n *\n * @throws ValidationError if component is not type \"ocx:profile\"\n * @throws NotFoundError if component doesn't exist\n * @throws ConflictError if profile exists and force is not set\n */\nexport async function installProfileFromRegistry(options: InstallProfileOptions): Promise<void> {\n\tconst { namespace, component, profileName, force, registryUrl, registries, quiet } = options\n\n\t// ==========================================================================\n\t// Guard: Validate profile name at boundary (Law 2: Parse Don't Validate)\n\t// ==========================================================================\n\n\tconst parseResult = profileNameSchema.safeParse(profileName)\n\tif (!parseResult.success) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid profile name: \"${profileName}\". ` +\n\t\t\t\t`Profile names must start with a letter and contain only alphanumeric characters, dots, underscores, or hyphens.`,\n\t\t)\n\t}\n\n\tconst profileDir = getProfileDir(profileName)\n\tconst qualifiedName = `${namespace}/${component}`\n\tconst profileExists = existsSync(profileDir)\n\n\t// ==========================================================================\n\t// Guard: Profile already exists\n\t// ==========================================================================\n\n\tif (profileExists && !force) {\n\t\tthrow new ConflictError(`Profile \"${profileName}\" already exists.\\nUse --force to overwrite.`)\n\t}\n\n\t// ==========================================================================\n\t// Phase 1: Fetch and validate the profile component\n\t// ==========================================================================\n\n\tconst fetchSpin = quiet ? null : createSpinner({ text: `Fetching ${qualifiedName}...` })\n\tfetchSpin?.start()\n\n\tlet manifest: Awaited<ReturnType<typeof fetchComponent>>\n\ttry {\n\t\tmanifest = await fetchComponent(registryUrl, component)\n\t} catch (error) {\n\t\tfetchSpin?.fail(`Failed to fetch ${qualifiedName}`)\n\t\tif (error instanceof NotFoundError) {\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Profile component \"${qualifiedName}\" not found in registry.\\n\\n` +\n\t\t\t\t\t`Check the component name and ensure the registry is configured.`,\n\t\t\t)\n\t\t}\n\t\tthrow error\n\t}\n\n\t// Guard: Must be a profile type component\n\tif (manifest.type !== \"ocx:profile\") {\n\t\tfetchSpin?.fail(`Invalid component type`)\n\t\tthrow new ValidationError(\n\t\t\t`Component \"${qualifiedName}\" is type \"${manifest.type}\", not \"ocx:profile\".\\n\\n` +\n\t\t\t\t`Only profile components can be installed with 'ocx profile add --from'.`,\n\t\t)\n\t}\n\n\t// Normalize the manifest (expand Cargo-style shorthands)\n\tconst normalized = normalizeComponentManifest(manifest)\n\n\tfetchSpin?.succeed(`Fetched ${qualifiedName}`)\n\n\t// ==========================================================================\n\t// Phase 2: Fetch all profile files\n\t// ==========================================================================\n\n\tconst filesSpin = quiet ? null : createSpinner({ text: \"Downloading profile files...\" })\n\tfilesSpin?.start()\n\n\tconst profileFiles: { path: string; target: string; content: Buffer }[] = []\n\tconst dependencyFiles: { path: string; target: string; content: Buffer }[] = []\n\n\tfor (const file of normalized.files) {\n\t\tconst content = await fetchFileContent(registryUrl, component, file.path)\n\t\tconst fileEntry = {\n\t\t\tpath: file.path,\n\t\t\ttarget: file.target,\n\t\t\tcontent: Buffer.from(content),\n\t\t}\n\n\t\t// Route files: profile files go flat, others go to .opencode/\n\t\tif (isProfileFile(file.target)) {\n\t\t\tprofileFiles.push(fileEntry)\n\t\t} else {\n\t\t\tdependencyFiles.push(fileEntry)\n\t\t}\n\t}\n\n\tfilesSpin?.succeed(`Downloaded ${normalized.files.length} files`)\n\n\t// ==========================================================================\n\t// Phase 3: Resolve and fetch dependencies\n\t// ==========================================================================\n\n\tlet resolvedDeps: Awaited<ReturnType<typeof resolveDependencies>> | null = null\n\tconst dependencyBundles: {\n\t\tqualifiedName: string\n\t\tregistryName: string\n\t\tfiles: { path: string; target: string; content: Buffer }[]\n\t\thash: string\n\t\tversion?: string\n\t}[] = []\n\n\tif (manifest.dependencies.length > 0) {\n\t\tconst depsSpin = quiet ? null : createSpinner({ text: \"Resolving dependencies...\" })\n\t\tdepsSpin?.start()\n\n\t\ttry {\n\t\t\t// Build dependency refs with namespace\n\t\t\tconst depRefs = manifest.dependencies.map((dep) =>\n\t\t\t\tdep.includes(\"/\") ? dep : `${namespace}/${dep}`,\n\t\t\t)\n\n\t\t\tresolvedDeps = await resolveDependencies(registries, depRefs)\n\n\t\t\t// Fetch all dependency files\n\t\t\tfor (const depComponent of resolvedDeps.components) {\n\t\t\t\tconst files: { path: string; target: string; content: Buffer }[] = []\n\n\t\t\t\tfor (const file of depComponent.files) {\n\t\t\t\t\tconst content = await fetchFileContent(depComponent.baseUrl, depComponent.name, file.path)\n\t\t\t\t\t// For dependencies, resolve target for flattened profile mode\n\t\t\t\t\tconst resolvedTarget = resolveTargetPath(file.target, true)\n\t\t\t\t\tfiles.push({\n\t\t\t\t\t\tpath: file.path,\n\t\t\t\t\t\ttarget: resolvedTarget,\n\t\t\t\t\t\tcontent: Buffer.from(content),\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst registryIndex = await fetchRegistryIndex(depComponent.baseUrl)\n\n\t\t\t\tdependencyBundles.push({\n\t\t\t\t\tqualifiedName: depComponent.qualifiedName,\n\t\t\t\t\tregistryName: depComponent.registryName,\n\t\t\t\t\tfiles,\n\t\t\t\t\thash: hashBundle(files),\n\t\t\t\t\tversion: registryIndex.version,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tdepsSpin?.succeed(`Resolved ${resolvedDeps.components.length} dependencies`)\n\t\t} catch (error) {\n\t\t\tdepsSpin?.fail(\"Failed to resolve dependencies\")\n\t\t\tthrow error\n\t\t}\n\t}\n\n\t// ==========================================================================\n\t// Phase 4: Create staging directory\n\t// Use profiles directory as parent to ensure same filesystem (avoids EXDEV on rename)\n\t// ==========================================================================\n\n\tconst profilesDir = getProfilesDir()\n\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\tconst stagingDir = await mkdtemp(join(profilesDir, \".staging-\"))\n\tconst stagingOpencodeDir = join(stagingDir, \".opencode\")\n\n\ttry {\n\t\tawait mkdir(stagingOpencodeDir, { recursive: true, mode: 0o700 })\n\n\t\t// ==========================================================================\n\t\t// Phase 5: Write profile files (flat in staging dir)\n\t\t// ==========================================================================\n\n\t\tconst writeSpin = quiet ? null : createSpinner({ text: \"Writing profile files...\" })\n\t\twriteSpin?.start()\n\n\t\tfor (const file of profileFiles) {\n\t\t\tconst targetPath = join(stagingDir, file.target)\n\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t}\n\n\t\t\tawait writeFile(targetPath, file.content)\n\t\t}\n\n\t\t// Also write any embedded dependency files from the profile manifest\n\t\tfor (const file of dependencyFiles) {\n\t\t\t// Embedded files go to .opencode/ in profile\n\t\t\t// Strip .opencode/ prefix if present to prevent double-nesting\n\t\t\tconst target = file.target.startsWith(\".opencode/\")\n\t\t\t\t? file.target.slice(\".opencode/\".length)\n\t\t\t\t: file.target\n\t\t\tconst targetPath = join(stagingOpencodeDir, target)\n\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t}\n\n\t\t\tawait writeFile(targetPath, file.content)\n\t\t}\n\n\t\twriteSpin?.succeed(`Wrote ${profileFiles.length + dependencyFiles.length} profile files`)\n\n\t\t// ==========================================================================\n\t\t// Phase 6: Write dependency component files (to .opencode/ in staging)\n\t\t// ==========================================================================\n\n\t\tif (dependencyBundles.length > 0) {\n\t\t\tconst depWriteSpin = quiet ? null : createSpinner({ text: \"Writing dependency files...\" })\n\t\t\tdepWriteSpin?.start()\n\n\t\t\tlet depFileCount = 0\n\t\t\tfor (const bundle of dependencyBundles) {\n\t\t\t\tfor (const file of bundle.files) {\n\t\t\t\t\tconst targetPath = join(stagingOpencodeDir, file.target)\n\t\t\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t\t\t}\n\n\t\t\t\t\tawait writeFile(targetPath, file.content)\n\t\t\t\t\tdepFileCount++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdepWriteSpin?.succeed(`Wrote ${depFileCount} dependency files`)\n\t\t}\n\n\t\t// ==========================================================================\n\t\t// Phase 7: Create ocx.lock in staging directory\n\t\t// ==========================================================================\n\n\t\tconst profileHash = hashBundle(profileFiles.map((f) => ({ path: f.path, content: f.content })))\n\n\t\t// Get registry version for the lock file\n\t\tconst registryIndex = await fetchRegistryIndex(registryUrl)\n\n\t\tconst lock: ProfileLock = {\n\t\t\tversion: 1,\n\t\t\tinstalledFrom: {\n\t\t\t\tregistry: namespace,\n\t\t\t\tcomponent,\n\t\t\t\tversion: registryIndex.version,\n\t\t\t\thash: profileHash,\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tinstalled: {},\n\t\t}\n\n\t\t// Add dependency entries\n\t\tfor (const bundle of dependencyBundles) {\n\t\t\tlock.installed[bundle.qualifiedName] = {\n\t\t\t\tregistry: bundle.registryName,\n\t\t\t\tversion: bundle.version,\n\t\t\t\thash: bundle.hash,\n\t\t\t\tfiles: bundle.files.map((f) => f.target),\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tawait writeFile(join(stagingDir, \"ocx.lock\"), JSON.stringify(lock, null, \"\\t\"))\n\n\t\t// ==========================================================================\n\t\t// Phase 8: Move staging dir to final profile location (atomic swap)\n\t\t// ==========================================================================\n\n\t\tconst moveSpin = quiet ? null : createSpinner({ text: \"Finalizing installation...\" })\n\t\tmoveSpin?.start()\n\n\t\t// Ensure parent directory exists\n\t\tconst profilesDir = dirname(profileDir)\n\t\tif (!existsSync(profilesDir)) {\n\t\t\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\t// Atomic swap with rollback for force mode\n\t\tif (profileExists && force) {\n\t\t\tconst backupDir = `${profileDir}.backup-${Date.now()}`\n\t\t\tawait rename(profileDir, backupDir)\n\t\t\ttry {\n\t\t\t\tawait rename(stagingDir, profileDir)\n\t\t\t} catch (err) {\n\t\t\t\t// Rollback: restore backup\n\t\t\t\tawait rename(backupDir, profileDir)\n\t\t\t\tthrow err\n\t\t\t}\n\t\t\t// Cleanup backup after successful install (outside try block)\n\t\t\t// Failure here shouldn't trigger rollback since install succeeded\n\t\t\tawait rm(backupDir, { recursive: true, force: true })\n\t\t} else {\n\t\t\t// No existing profile: simple rename\n\t\t\tawait rename(stagingDir, profileDir)\n\t\t}\n\n\t\tmoveSpin?.succeed(\"Installation complete\")\n\n\t\t// ==========================================================================\n\t\t// Summary\n\t\t// ==========================================================================\n\n\t\tif (!quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Installed profile \"${profileName}\" from ${qualifiedName}`)\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Profile contents:\")\n\t\t\tfor (const file of profileFiles) {\n\t\t\t\tlogger.info(` ${file.target}`)\n\t\t\t}\n\t\t\tif (dependencyBundles.length > 0) {\n\t\t\t\tlogger.info(\"\")\n\t\t\t\tlogger.info(\"Dependencies:\")\n\t\t\t\tfor (const bundle of dependencyBundles) {\n\t\t\t\t\tlogger.info(` ${bundle.qualifiedName}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\t// Cleanup staging directory on failure\n\t\ttry {\n\t\t\tif (existsSync(stagingDir)) {\n\t\t\t\tawait rm(stagingDir, { recursive: true })\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t\tthrow error\n\t}\n}\n",
|
|
107
|
-
"/**\n * Profile Add Command\n *\n * Create a new global profile.\n * Optionally clone settings from an existing profile or install from registry.\n */\n\nimport type { Command } from \"commander\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { atomicWrite } from \"../../profile/atomic\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { getGlobalConfig, getProfileOcxConfig } from \"../../profile/paths\"\nimport type { ProfileOcxConfig } from \"../../schemas/ocx\"\nimport { profileOcxConfigSchema } from \"../../schemas/ocx\"\nimport { ConfigError, ProfileExistsError, ValidationError } from \"../../utils/errors\"\nimport { handleError, logger } from \"../../utils/index\"\nimport { installProfileFromRegistry } from \"./install-from-registry\"\n\n// =============================================================================\n// FROM INPUT TYPES (Discriminated Union)\n// =============================================================================\n\n/**\n * Parsed --from input - discriminated union for type-safe routing.\n * Parsed at the boundary (Law 2: Parse Don't Validate).\n */\nexport type FromInput =\n\t| { type: \"local-profile\"; name: string }\n\t| { type: \"
|
|
107
|
+
"/**\n * Profile Installation from Registry\n *\n * Installs a profile package from a registry, including:\n * - Profile files (ocx.jsonc, opencode.jsonc, AGENTS.md) -> flat in profile dir\n * - Dependencies (agents, skills, etc.) -> profile's .opencode/ subdirectory\n * - Lock file creation for reproducible installs\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rename, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\nimport type { ConfigProvider } from \"../../config/provider\"\nimport { getProfileDir, getProfilesDir } from \"../../profile/paths\"\nimport { profileNameSchema } from \"../../profile/schema\"\nimport { fetchComponent, fetchFileContent, fetchRegistryIndex } from \"../../registry/fetcher\"\nimport type { RegistryConfig } from \"../../schemas/config\"\nimport { type OcxLock, writeOcxLock } from \"../../schemas/config\"\nimport { normalizeComponentManifest } from \"../../schemas/registry\"\nimport { ConflictError, NotFoundError, ValidationError } from \"../../utils/errors\"\nimport { createSpinner, logger } from \"../../utils/index\"\nimport { runAddCore } from \"../add\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface InstallProfileOptions {\n\t/** Registry namespace (e.g., \"kdco\") */\n\tnamespace: string\n\t/** Component name (e.g., \"minimal\") */\n\tcomponent: string\n\t/** Local profile name (e.g., \"work\") */\n\tprofileName: string\n\t/** Resolved registry URL */\n\tregistryUrl: string\n\t/** All configured registries (for dependency resolution) */\n\tregistries: Record<string, RegistryConfig>\n\t/** Suppress output */\n\tquiet?: boolean\n}\n\n// =============================================================================\n// HASHING UTILITIES\n// =============================================================================\n\nfunction hashContent(content: string | Buffer): string {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\nfunction hashBundle(files: { path: string; content: Buffer }[]): string {\n\t// Sort files for deterministic hashing\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\t// Create a manifest of file hashes\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\t// Hash the manifest itself\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n\n// =============================================================================\n// MAIN INSTALLATION FUNCTION\n// =============================================================================\n\n/**\n * Install a profile from a registry.\n *\n * Flow:\n * 1. Fetch and validate the profile component manifest\n * 2. Fetch all profile files from registry\n * 3. Create staging directory for atomic install\n * 4. Write profile files (flat in profile dir)\n * 5. Create ocx.lock with installedFrom metadata\n * 6. Move staging dir to final profile location\n * 7. Install dependencies via runAddCore (if any)\n *\n * @throws ValidationError if component is not type \"ocx:profile\"\n * @throws NotFoundError if component doesn't exist\n * @throws ConflictError if profile exists and force is not set\n */\nexport async function installProfileFromRegistry(options: InstallProfileOptions): Promise<void> {\n\tconst { namespace, component, profileName, registryUrl, registries, quiet } = options\n\n\t// ==========================================================================\n\t// Guard: Validate profile name at boundary (Law 2: Parse Don't Validate)\n\t// ==========================================================================\n\n\tconst parseResult = profileNameSchema.safeParse(profileName)\n\tif (!parseResult.success) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid profile name: \"${profileName}\". ` +\n\t\t\t\t`Profile names must start with a letter and contain only alphanumeric characters, dots, underscores, or hyphens.`,\n\t\t)\n\t}\n\n\tconst profileDir = getProfileDir(profileName)\n\tconst qualifiedName = `${namespace}/${component}`\n\tconst profileExists = existsSync(profileDir)\n\n\t// ==========================================================================\n\t// Guard: Profile already exists\n\t// ==========================================================================\n\n\tif (profileExists) {\n\t\tthrow new ConflictError(\n\t\t\t`Profile \"${profileName}\" already exists. Remove it first with 'ocx profile rm ${profileName}'.`,\n\t\t)\n\t}\n\n\t// ==========================================================================\n\t// Phase 1: Fetch and validate the profile component\n\t// ==========================================================================\n\n\tconst fetchSpin = quiet ? null : createSpinner({ text: `Fetching ${qualifiedName}...` })\n\tfetchSpin?.start()\n\n\tlet manifest: Awaited<ReturnType<typeof fetchComponent>>\n\ttry {\n\t\tmanifest = await fetchComponent(registryUrl, component)\n\t} catch (error) {\n\t\tfetchSpin?.fail(`Failed to fetch ${qualifiedName}`)\n\t\tif (error instanceof NotFoundError) {\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Profile component \"${qualifiedName}\" not found in registry.\\n\\n` +\n\t\t\t\t\t`Check the component name and ensure the registry is configured.`,\n\t\t\t)\n\t\t}\n\t\tthrow error\n\t}\n\n\t// Guard: Must be a profile type component\n\tif (manifest.type !== \"ocx:profile\") {\n\t\tfetchSpin?.fail(`Invalid component type`)\n\t\tthrow new ValidationError(\n\t\t\t`Component \"${qualifiedName}\" is type \"${manifest.type}\", not \"ocx:profile\".\\n\\n` +\n\t\t\t\t`Only profile components can be installed with 'ocx profile add --from'.`,\n\t\t)\n\t}\n\n\t// Normalize the manifest (expand Cargo-style shorthands)\n\tconst normalized = normalizeComponentManifest(manifest)\n\n\tfetchSpin?.succeed(`Fetched ${qualifiedName}`)\n\n\t// ==========================================================================\n\t// Phase 2: Fetch all profile files\n\t// ==========================================================================\n\n\tconst filesSpin = quiet ? null : createSpinner({ text: \"Downloading profile files...\" })\n\tfilesSpin?.start()\n\n\tconst profileFiles: { path: string; target: string; content: Buffer }[] = []\n\tconst embeddedFiles: { path: string; target: string; content: Buffer }[] = []\n\n\tfor (const file of normalized.files) {\n\t\tconst content = await fetchFileContent(registryUrl, component, file.path)\n\t\tconst fileEntry = {\n\t\t\tpath: file.path,\n\t\t\ttarget: file.target,\n\t\t\tcontent: Buffer.from(content),\n\t\t}\n\n\t\t// Route files: .opencode/ prefix goes to subdir, everything else goes flat\n\t\tif (file.target.startsWith(\".opencode/\")) {\n\t\t\tembeddedFiles.push(fileEntry)\n\t\t} else {\n\t\t\tprofileFiles.push(fileEntry)\n\t\t}\n\t}\n\n\tfilesSpin?.succeed(`Downloaded ${normalized.files.length} files`)\n\n\t// ==========================================================================\n\t// Phase 3: Create staging directory\n\t// Use profiles directory as parent to ensure same filesystem (avoids EXDEV on rename)\n\t// ==========================================================================\n\n\tconst profilesDir = getProfilesDir()\n\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\tconst stagingDir = await mkdtemp(join(profilesDir, \".staging-\"))\n\n\ttry {\n\t\t// ==========================================================================\n\t\t// Phase 4: Write profile files (flat in staging dir)\n\t\t// ==========================================================================\n\n\t\tconst writeSpin = quiet ? null : createSpinner({ text: \"Writing profile files...\" })\n\t\twriteSpin?.start()\n\n\t\tfor (const file of profileFiles) {\n\t\t\tconst targetPath = join(stagingDir, file.target)\n\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t}\n\n\t\t\tawait writeFile(targetPath, file.content)\n\t\t}\n\n\t\t// Write embedded files flat (strip .opencode/ prefix for profile mode)\n\t\tfor (const file of embeddedFiles) {\n\t\t\t// Strip .opencode/ prefix since profiles are flat\n\t\t\tconst target = file.target.startsWith(\".opencode/\")\n\t\t\t\t? file.target.slice(\".opencode/\".length)\n\t\t\t\t: file.target\n\t\t\tconst targetPath = join(stagingDir, target)\n\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t}\n\n\t\t\tawait writeFile(targetPath, file.content)\n\t\t}\n\n\t\twriteSpin?.succeed(`Wrote ${profileFiles.length + embeddedFiles.length} profile files`)\n\n\t\t// ==========================================================================\n\t\t// Phase 5: Create ocx.lock in staging directory\n\t\t// ==========================================================================\n\n\t\tconst profileHash = hashBundle(profileFiles.map((f) => ({ path: f.path, content: f.content })))\n\n\t\t// Get registry version for the lock file\n\t\tconst registryIndex = await fetchRegistryIndex(registryUrl)\n\n\t\tconst lock: OcxLock = {\n\t\t\tlockVersion: 1,\n\t\t\tinstalledFrom: {\n\t\t\t\tregistry: namespace,\n\t\t\t\tcomponent,\n\t\t\t\tversion: registryIndex.version,\n\t\t\t\thash: profileHash,\n\t\t\t\tinstalledAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tinstalled: {},\n\t\t}\n\n\t\tawait writeOcxLock(stagingDir, lock, join(stagingDir, \"ocx.lock\"))\n\n\t\t// ==========================================================================\n\t\t// Phase 6: Move staging to final profile directory\n\t\t// ==========================================================================\n\n\t\tconst renameSpin = quiet ? null : createSpinner({ text: \"Moving to profile directory...\" })\n\t\trenameSpin?.start()\n\n\t\t// Ensure parent directory exists\n\t\tconst profilesDir = dirname(profileDir)\n\t\tif (!existsSync(profilesDir)) {\n\t\t\tawait mkdir(profilesDir, { recursive: true, mode: 0o700 })\n\t\t}\n\n\t\tawait rename(stagingDir, profileDir)\n\t\trenameSpin?.succeed(\"Profile installed\")\n\n\t\t// ==========================================================================\n\t\t// Phase 7: Install dependencies via runAddCore\n\t\t// ==========================================================================\n\n\t\tif (manifest.dependencies.length > 0) {\n\t\t\tconst depsSpin = quiet ? null : createSpinner({ text: \"Installing dependencies...\" })\n\t\t\tdepsSpin?.start()\n\n\t\t\ttry {\n\t\t\t\tconst depRefs = manifest.dependencies.map((dep) =>\n\t\t\t\t\tdep.includes(\"/\") ? dep : `${namespace}/${dep}`,\n\t\t\t\t)\n\n\t\t\t\t// Create provider for the installed profile (same pattern as GlobalConfigProvider)\n\t\t\t\tconst provider: ConfigProvider = {\n\t\t\t\t\tcwd: profileDir,\n\t\t\t\t\tgetRegistries: () => registries,\n\t\t\t\t\tgetComponentPath: () => \"\", // Flat install - no .opencode/ prefix\n\t\t\t\t}\n\n\t\t\t\tawait runAddCore(depRefs, { profile: profileName }, provider)\n\t\t\t\tdepsSpin?.succeed(`Installed ${manifest.dependencies.length} dependencies`)\n\t\t\t} catch (error) {\n\t\t\t\tdepsSpin?.fail(\"Failed to install dependencies\")\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\t// ==========================================================================\n\t\t// Summary\n\t\t// ==========================================================================\n\n\t\tif (!quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Installed profile \"${profileName}\" from ${qualifiedName}`)\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Profile contents:\")\n\t\t\tfor (const file of profileFiles) {\n\t\t\t\tlogger.info(` ${file.target}`)\n\t\t\t}\n\t\t\tfor (const file of embeddedFiles) {\n\t\t\t\tconst target = file.target.startsWith(\".opencode/\")\n\t\t\t\t\t? file.target.slice(\".opencode/\".length)\n\t\t\t\t\t: file.target\n\t\t\t\tlogger.info(` ${target}`)\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\t// Cleanup staging directory on failure\n\t\ttry {\n\t\t\tif (existsSync(stagingDir)) {\n\t\t\t\tawait rm(stagingDir, { recursive: true })\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t\tthrow error\n\t}\n}\n",
|
|
108
|
+
"/**\n * Profile Add Command\n *\n * Create a new global profile.\n * Optionally clone settings from an existing profile or install from registry.\n */\n\nimport type { Command } from \"commander\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { atomicWrite } from \"../../profile/atomic\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { getGlobalConfig, getProfileOcxConfig } from \"../../profile/paths\"\nimport type { ProfileOcxConfig } from \"../../schemas/ocx\"\nimport { profileOcxConfigSchema } from \"../../schemas/ocx\"\nimport { ConfigError, ProfileExistsError, ValidationError } from \"../../utils/errors\"\nimport { handleError, logger } from \"../../utils/index\"\nimport { installProfileFromRegistry } from \"./install-from-registry\"\n\n// =============================================================================\n// FROM INPUT TYPES (Discriminated Union)\n// =============================================================================\n\n/**\n * Parsed --from input - discriminated union for type-safe routing.\n * Parsed at the boundary (Law 2: Parse Don't Validate).\n */\nexport type FromInput =\n\t| { type: \"local-profile\"; name: string }\n\t| { type: \"registry\"; namespace: string; component: string }\n\n/**\n * Parse the --from option value to determine input type.\n *\n * Routing logic:\n * - Contains exactly one / → registry ref (namespace/component)\n * - No / → existing local profile name\n *\n * @param from - The --from option value\n * @returns Parsed FromInput with discriminated type\n */\nexport function parseFromOption(from: string): FromInput {\n\t// Guard: empty input\n\tif (!from?.trim()) {\n\t\tthrow new ValidationError(\"--from value cannot be empty\")\n\t}\n\n\tconst trimmed = from.trim()\n\n\t// Route registry references: contains exactly one /\n\tconst slashCount = (trimmed.match(/\\//g) || []).length\n\tif (slashCount === 1) {\n\t\tconst [namespace, component] = trimmed.split(\"/\").map((s) => s.trim())\n\t\tif (!namespace || !component) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid registry reference: \"${from}\". Expected format: namespace/component`,\n\t\t\t)\n\t\t}\n\t\treturn { type: \"registry\", namespace, component }\n\t}\n\n\t// No slash → local profile name\n\treturn { type: \"local-profile\", name: trimmed }\n}\n\n// =============================================================================\n// COMMAND OPTIONS\n// =============================================================================\n\ninterface ProfileAddOptions {\n\tfrom?: string\n}\n\n// =============================================================================\n// GLOBAL CONFIG HELPERS\n// =============================================================================\n\n/**\n * Read and parse the global ocx.jsonc configuration.\n * Returns null if file doesn't exist.\n *\n * @throws ConfigError if file exists but is invalid\n */\nasync function readGlobalOcxConfig() {\n\tconst configPath = getGlobalConfig()\n\tconst file = Bun.file(configPath)\n\n\tif (!(await file.exists())) {\n\t\treturn null\n\t}\n\n\ttry {\n\t\tconst content = await file.text()\n\t\tconst json = parseJsonc(content, [], { allowTrailingComma: true })\n\t\treturn profileOcxConfigSchema.parse(json)\n\t} catch (error) {\n\t\t// Guard: Wrap parse errors with helpful context (Law 4: Fail Fast, Fail Loud)\n\t\tif (error instanceof Error) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Failed to parse global config at \"${configPath}\": ${error.message}\\n\\n` +\n\t\t\t\t\t`Check the file for syntax errors or run: ocx config edit --global`,\n\t\t\t)\n\t\t}\n\t\tthrow error\n\t}\n}\n\n/**\n * Get the global config with a specific registry, throwing if not configured.\n *\n * @param namespace - Registry namespace to require\n * @returns Global config and the registry URL\n * @throws ConfigError if registry is not configured globally\n */\nasync function requireGlobalRegistry(\n\tnamespace: string,\n): Promise<{ config: ProfileOcxConfig; registryUrl: string }> {\n\tconst globalConfig = await readGlobalOcxConfig()\n\n\t// Guard: no global config\n\tif (!globalConfig) {\n\t\tthrow new ConfigError(\n\t\t\t`Registry \"${namespace}\" is not configured globally.\\n\\n` +\n\t\t\t\t`Profile installation requires global registry configuration.\\n` +\n\t\t\t\t`Run: ocx registry add <url> --name ${namespace} --global`,\n\t\t)\n\t}\n\n\t// Guard: registry not in global config\n\tconst registry = globalConfig.registries[namespace]\n\tif (!registry) {\n\t\tthrow new ConfigError(\n\t\t\t`Registry \"${namespace}\" is not configured globally.\\n\\n` +\n\t\t\t\t`Profile installation requires global registry configuration.\\n` +\n\t\t\t\t`Run: ocx registry add <url> --name ${namespace} --global`,\n\t\t)\n\t}\n\n\treturn { config: globalConfig, registryUrl: registry.url }\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\nexport function registerProfileAddCommand(parent: Command): void {\n\tparent\n\t\t.command(\"add <name>\")\n\t\t.description(\"Create a new profile, clone from existing, or install from registry\")\n\t\t.option(\n\t\t\t\"--from <source>\",\n\t\t\t\"Clone from existing profile or install from registry (e.g., kdco/minimal)\",\n\t\t)\n\t\t.addHelpText(\n\t\t\t\"after\",\n\t\t\t`\nExamples:\n $ ocx profile add work # Create empty profile\n $ ocx profile add work --from dev # Clone from existing profile\n $ ocx profile add work --from kdco/minimal # Install from registry\n`,\n\t\t)\n\t\t.action(async (name: string, options: ProfileAddOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runProfileAdd(name, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\n// =============================================================================\n// COMMAND IMPLEMENTATION\n// =============================================================================\n\nasync function runProfileAdd(name: string, options: ProfileAddOptions): Promise<void> {\n\tconst manager = await ProfileManager.requireInitialized()\n\n\t// Route based on --from input type\n\tif (!options.from) {\n\t\t// No --from: create empty profile\n\t\tawait createEmptyProfile(manager, name)\n\t\treturn\n\t}\n\n\tconst fromInput = parseFromOption(options.from)\n\n\tswitch (fromInput.type) {\n\t\tcase \"local-profile\":\n\t\t\tawait cloneFromLocalProfile(manager, name, fromInput.name)\n\t\t\tbreak\n\n\t\tcase \"registry\": {\n\t\t\t// Validate registry is configured globally and get URL\n\t\t\tconst { config: globalConfig, registryUrl } = await requireGlobalRegistry(fromInput.namespace)\n\n\t\t\t// Build registries map for dependency resolution\n\t\t\tconst registries: Record<string, { url: string }> = {}\n\t\t\tfor (const [ns, reg] of Object.entries(globalConfig.registries)) {\n\t\t\t\tregistries[ns] = { url: reg.url }\n\t\t\t}\n\n\t\t\t// Install profile from registry\n\t\t\tawait installProfileFromRegistry({\n\t\t\t\tnamespace: fromInput.namespace,\n\t\t\t\tcomponent: fromInput.component,\n\t\t\t\tprofileName: name,\n\t\t\t\tregistryUrl,\n\t\t\t\tregistries,\n\t\t\t})\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n/**\n * Create an empty profile with default configuration.\n */\nasync function createEmptyProfile(manager: ProfileManager, name: string): Promise<void> {\n\tconst exists = await manager.exists(name)\n\tif (exists) {\n\t\tthrow new ProfileExistsError(name, `Remove it first with 'ocx profile rm ${name}'.`)\n\t}\n\tawait manager.add(name)\n\tlogger.success(`Created profile \"${name}\"`)\n}\n\n/**\n * Clone settings from an existing local profile.\n */\nasync function cloneFromLocalProfile(\n\tmanager: ProfileManager,\n\tname: string,\n\tsourceName: string,\n): Promise<void> {\n\t// Guard: check if target profile already exists (Fail Fast)\n\tconst exists = await manager.exists(name)\n\tif (exists) {\n\t\tthrow new ProfileExistsError(name, `Remove it first with 'ocx profile rm ${name}'.`)\n\t}\n\n\t// Load source profile (fail fast if not found)\n\tconst source = await manager.get(sourceName)\n\n\tawait manager.add(name)\n\n\t// Copy OCX config from source\n\tawait atomicWrite(getProfileOcxConfig(name), source.ocx)\n\n\tlogger.success(`Created profile \"${name}\" (cloned from \"${sourceName}\")`)\n}\n",
|
|
108
109
|
"/**\n * Profile List Command\n *\n * List all available global profiles.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { handleError } from \"../../utils/handle-error\"\nimport { sharedOptions } from \"../../utils/shared-options\"\n\ninterface ProfileListOptions {\n\tjson?: boolean\n}\n\nexport function registerProfileListCommand(parent: Command): void {\n\tparent\n\t\t.command(\"list\")\n\t\t.alias(\"ls\")\n\t\t.description(\"List all global profiles\")\n\t\t.addOption(sharedOptions.json())\n\t\t.action(async (options: ProfileListOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runProfileList(options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runProfileList(options: ProfileListOptions): Promise<void> {\n\tconst manager = await ProfileManager.requireInitialized()\n\n\tconst profiles = await manager.list()\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify({ profiles, initialized: true }, null, 2))\n\t\treturn\n\t}\n\n\t// Guard: Handle empty profiles list\n\tif (profiles.length === 0) {\n\t\tconsole.log(\"No profiles found. Run 'ocx profile add <name>' to create one.\")\n\t\treturn\n\t}\n\n\t// Display profiles\n\tconsole.log(\"Global profiles:\")\n\tfor (const name of profiles) {\n\t\tconsole.log(` ${name}`)\n\t}\n}\n",
|
|
110
|
+
"/**\n * Profile Move Command\n *\n * Move (rename) a global profile atomically.\n * Uses Cargo-style CLI pattern: no interactive confirmation.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { handleError, logger } from \"../../utils/index\"\n\nexport function registerProfileMoveCommand(parent: Command): void {\n\tparent\n\t\t.command(\"move <old-name> <new-name>\")\n\t\t.alias(\"mv\")\n\t\t.description(\"Move (rename) a profile\")\n\t\t.action(async (oldName: string, newName: string) => {\n\t\t\ttry {\n\t\t\t\tawait runProfileMove(oldName, newName)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\nasync function runProfileMove(oldName: string, newName: string): Promise<void> {\n\tconst manager = await ProfileManager.requireInitialized()\n\n\tconst { warnActiveProfile } = await manager.move(oldName, newName)\n\n\tif (warnActiveProfile) {\n\t\tlogger.warn(`Moving active profile. Update OCX_PROFILE env var to \"${newName}\".`)\n\t}\n\n\tlogger.success(`Moved profile \"${oldName}\" → \"${newName}\"`)\n}\n",
|
|
109
111
|
"/**\n * Profile Remove Command\n *\n * Delete a global profile.\n * Uses Cargo-style CLI pattern: no interactive confirmation.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { ProfileNotFoundError } from \"../../utils/errors\"\nimport { handleError, logger } from \"../../utils/index\"\n\nexport function registerProfileRemoveCommand(parent: Command): void {\n\tparent\n\t\t.command(\"remove <name>\")\n\t\t.alias(\"rm\")\n\t\t.description(\"Delete a global profile\")\n\t\t.action(async (name: string) => {\n\t\t\ttry {\n\t\t\t\tawait runProfileRemove(name)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\nasync function runProfileRemove(name: string): Promise<void> {\n\tconst manager = await ProfileManager.requireInitialized()\n\n\t// Verify profile exists first (fail fast)\n\tif (!(await manager.exists(name))) {\n\t\tthrow new ProfileNotFoundError(name)\n\t}\n\n\tawait manager.remove(name)\n\tlogger.success(`Deleted profile \"${name}\"`)\n}\n",
|
|
110
112
|
"/**\n * Profile Show Command\n *\n * Display detailed information about a profile.\n * Shows the profile name, file paths, and OCX config contents.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport {\n\tgetProfileAgents,\n\tgetProfileOcxConfig,\n\tgetProfileOpencodeConfig,\n} from \"../../profile/paths\"\nimport { handleError } from \"../../utils/handle-error\"\nimport { sharedOptions } from \"../../utils/shared-options\"\n\ninterface ProfileShowOptions {\n\tjson?: boolean\n}\n\nexport function registerProfileShowCommand(parent: Command): void {\n\tparent\n\t\t.command(\"show [name]\")\n\t\t.description(\"Display profile contents\")\n\t\t.addOption(sharedOptions.json())\n\t\t.action(async (name: string | undefined, options: ProfileShowOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runProfileShow(name, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\nasync function runProfileShow(\n\tname: string | undefined,\n\toptions: ProfileShowOptions,\n): Promise<void> {\n\tconst manager = await ProfileManager.requireInitialized()\n\n\t// Use provided name or resolve profile (flag > env > default)\n\tconst profileName = name ?? (await manager.resolveProfile())\n\tconst profile = await manager.get(profileName)\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(profile, null, 2))\n\t\treturn\n\t}\n\n\t// Human-readable output\n\tconsole.log(`Profile: ${profile.name}`)\n\tconsole.log(`\\nFiles:`)\n\tconsole.log(` ocx.jsonc: ${getProfileOcxConfig(profileName)}`)\n\n\tif (profile.opencode) {\n\t\tconsole.log(` opencode.jsonc: ${getProfileOpencodeConfig(profileName)}`)\n\t}\n\n\tif (profile.hasAgents) {\n\t\tconsole.log(` AGENTS.md: ${getProfileAgents(profileName)}`)\n\t}\n\n\tconsole.log(`\\nOCX Config:`)\n\tconsole.log(JSON.stringify(profile.ocx, null, 2))\n}\n",
|
|
111
|
-
"/**\n * Profile Command Group\n *\n * Parent command for managing global profiles.\n * Profiles allow multiple named configurations for different contexts.\n *\n * Alias: `ocx p` (shorthand for `ocx profile`)\n */\n\nimport type { Command } from \"commander\"\nimport { registerProfileAddCommand } from \"./add\"\nimport { registerProfileListCommand } from \"./list\"\nimport { registerProfileRemoveCommand } from \"./remove\"\nimport { registerProfileShowCommand } from \"./show\"\n\n/**\n * Register the profile command and all subcommands.\n */\nexport function registerProfileCommand(program: Command): void {\n\tconst profile = program.command(\"profile\").alias(\"p\").description(\"Manage global profiles\")\n\n\tregisterProfileListCommand(profile)\n\tregisterProfileAddCommand(profile)\n\tregisterProfileRemoveCommand(profile)\n\tregisterProfileShowCommand(profile)\n}\n",
|
|
113
|
+
"/**\n * Profile Command Group\n *\n * Parent command for managing global profiles.\n * Profiles allow multiple named configurations for different contexts.\n *\n * Alias: `ocx p` (shorthand for `ocx profile`)\n */\n\nimport type { Command } from \"commander\"\nimport { registerProfileAddCommand } from \"./add\"\nimport { registerProfileListCommand } from \"./list\"\nimport { registerProfileMoveCommand } from \"./move\"\nimport { registerProfileRemoveCommand } from \"./remove\"\nimport { registerProfileShowCommand } from \"./show\"\n\n/**\n * Register the profile command and all subcommands.\n */\nexport function registerProfileCommand(program: Command): void {\n\tconst profile = program.command(\"profile\").alias(\"p\").description(\"Manage global profiles\")\n\n\tregisterProfileListCommand(profile)\n\tregisterProfileAddCommand(profile)\n\tregisterProfileRemoveCommand(profile)\n\tregisterProfileMoveCommand(profile)\n\tregisterProfileShowCommand(profile)\n}\n",
|
|
112
114
|
"/**\n * Registry Command\n *\n * Manage configured registries.\n */\n\nimport { existsSync } from \"node:fs\"\nimport { dirname, join } from \"node:path\"\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { ProfileManager } from \"../profile/manager\"\nimport { getProfileOcxConfig } from \"../profile/paths\"\nimport type { RegistryConfig } from \"../schemas/config\"\nimport { findOcxConfig, readOcxConfig, writeOcxConfig } from \"../schemas/config\"\nimport {\n\tOcxConfigError,\n\tProfileNotFoundError,\n\tRegistryExistsError,\n\tValidationError,\n} from \"../utils/errors\"\nimport { handleError, logger, outputJson } from \"../utils/index\"\nimport { getGlobalConfigPath } from \"../utils/paths\"\nimport {\n\taddCommonOptions,\n\taddGlobalOption,\n\taddProfileOption,\n\tvalidateProfileName,\n} from \"../utils/shared-options\"\n\nexport interface RegistryOptions {\n\tcwd: string\n\tjson?: boolean\n\tquiet?: boolean\n\tglobal?: boolean\n\tprofile?: string\n}\n\nexport interface RegistryAddOptions extends RegistryOptions {\n\tname?: string\n\tversion?: string\n\tforce?: boolean\n}\n\n// =============================================================================\n// CORE FUNCTIONS (used by both standard and profile commands)\n// =============================================================================\n\n/**\n * Core logic for adding a registry.\n * @param url Registry URL\n * @param options Options including optional name, version\n * @param callbacks Callbacks for reading/writing config\n */\nexport async function runRegistryAddCore(\n\turl: string,\n\toptions: RegistryAddOptions,\n\tcallbacks: {\n\t\tgetRegistries: () => Record<string, RegistryConfig>\n\t\tisLocked?: () => boolean\n\t\tsetRegistry: (name: string, config: RegistryConfig) => Promise<void>\n\t},\n): Promise<{ name: string; url: string; updated: boolean }> {\n\t// Guard: Check registries aren't locked\n\tif (callbacks.isLocked?.()) {\n\t\tthrow new Error(\"Registries are locked. Cannot add.\")\n\t}\n\n\t// Validate and parse URL\n\tconst trimmedUrl = url.trim()\n\tif (!trimmedUrl) {\n\t\tthrow new ValidationError(\"Registry URL is required\")\n\t}\n\tlet derivedName: string\n\ttry {\n\t\tconst parsed = new URL(trimmedUrl)\n\t\tif (![\"http:\", \"https:\"].includes(parsed.protocol)) {\n\t\t\tthrow new ValidationError(`Invalid registry URL: ${trimmedUrl} (must use http or https)`)\n\t\t}\n\t\tderivedName = options.name || parsed.hostname.replace(/\\./g, \"-\")\n\t} catch (error) {\n\t\tif (error instanceof ValidationError) throw error\n\t\tthrow new ValidationError(`Invalid registry URL: ${trimmedUrl}`)\n\t}\n\n\tconst name = derivedName\n\tconst registries = callbacks.getRegistries()\n\tconst existingRegistry = registries[name]\n\tif (existingRegistry && !options.force) {\n\t\tthrow new RegistryExistsError(name, existingRegistry.url, trimmedUrl)\n\t}\n\tconst isUpdate = name in registries\n\n\tawait callbacks.setRegistry(name, {\n\t\turl: trimmedUrl,\n\t\tversion: options.version,\n\t})\n\n\treturn { name, url: trimmedUrl, updated: isUpdate }\n}\n\n/**\n * Core logic for removing a registry.\n * @param name Registry name to remove\n * @param callbacks Callbacks for reading/writing config\n */\nexport async function runRegistryRemoveCore(\n\tname: string,\n\tcallbacks: {\n\t\tgetRegistries: () => Record<string, RegistryConfig>\n\t\tisLocked?: () => boolean\n\t\tremoveRegistry: (name: string) => Promise<void>\n\t},\n): Promise<{ removed: string }> {\n\t// Guard: Check registries aren't locked\n\tif (callbacks.isLocked?.()) {\n\t\tthrow new Error(\"Registries are locked. Cannot remove.\")\n\t}\n\n\tconst registries = callbacks.getRegistries()\n\tif (!(name in registries)) {\n\t\tthrow new Error(`Registry '${name}' not found.`)\n\t}\n\n\tawait callbacks.removeRegistry(name)\n\treturn { removed: name }\n}\n\n/**\n * Core logic for listing registries.\n * @param callbacks Callbacks for reading config\n */\nexport function runRegistryListCore(callbacks: {\n\tgetRegistries: () => Record<string, RegistryConfig>\n\tisLocked?: () => boolean\n}): { registries: Array<{ name: string; url: string; version: string }>; locked: boolean } {\n\tconst registries = callbacks.getRegistries()\n\tconst locked = callbacks.isLocked?.() ?? false\n\n\tconst list = Object.entries(registries).map(([name, cfg]) => ({\n\t\tname,\n\t\turl: cfg.url,\n\t\tversion: cfg.version || \"latest\",\n\t}))\n\n\treturn { registries: list, locked }\n}\n\n// =============================================================================\n// REGISTRY TARGET RESOLUTION\n// =============================================================================\n\ninterface RegistryTarget {\n\tscope: \"profile\" | \"global\" | \"local\"\n\tconfigPath: string\n\tconfigDir: string\n\ttargetLabel: string\n}\n\n/**\n * Resolves the target config location for registry operations.\n * Handles mutual exclusivity checks and profile/global/local scope selection.\n */\nasync function resolveRegistryTarget(\n\toptions: RegistryOptions,\n\tcommand: Command,\n\tcwd: string,\n): Promise<RegistryTarget> {\n\tconst cwdExplicitlyProvided = command.getOptionValueSource(\"cwd\") === \"cli\"\n\n\t// Mutual exclusivity checks\n\tif (options.global && options.profile) {\n\t\tthrow new ValidationError(\"Cannot use both --global and --profile flags\")\n\t}\n\tif (cwdExplicitlyProvided && options.profile) {\n\t\tthrow new ValidationError(\"Cannot use both --cwd and --profile flags\")\n\t}\n\tif (options.global && cwdExplicitlyProvided) {\n\t\tthrow new ValidationError(\"Cannot use both --global and --cwd flags\")\n\t}\n\n\t// Profile scope\n\tif (options.profile) {\n\t\tvalidateProfileName(options.profile)\n\n\t\tconst manager = await ProfileManager.requireInitialized()\n\t\tif (!(await manager.exists(options.profile))) {\n\t\t\tthrow new ProfileNotFoundError(options.profile)\n\t\t}\n\n\t\tconst configPath = getProfileOcxConfig(options.profile)\n\t\tif (!existsSync(configPath)) {\n\t\t\tthrow new OcxConfigError(\n\t\t\t\t`Profile '${options.profile}' has no ocx.jsonc. Run 'ocx profile config ${options.profile}' to create it.`,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tscope: \"profile\",\n\t\t\tconfigPath,\n\t\t\tconfigDir: dirname(configPath),\n\t\t\ttargetLabel: `profile '${options.profile}' config`,\n\t\t}\n\t}\n\n\t// Global scope\n\tif (options.global) {\n\t\tconst configDir = getGlobalConfigPath()\n\t\treturn {\n\t\t\tscope: \"global\",\n\t\t\tconfigPath: join(configDir, \"ocx.jsonc\"),\n\t\t\tconfigDir,\n\t\t\ttargetLabel: \"global config\",\n\t\t}\n\t}\n\n\t// Local scope (default)\n\tconst found = findOcxConfig(cwd)\n\treturn {\n\t\tscope: \"local\",\n\t\tconfigPath: found.path,\n\t\tconfigDir: found.exists ? dirname(found.path) : join(cwd, \".opencode\"),\n\t\ttargetLabel: \"local config\",\n\t}\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\nexport function registerRegistryCommand(program: Command): void {\n\tconst registry = program.command(\"registry\").description(\"Manage registries\")\n\n\t// registry add <url> [--name <name>]\n\tconst addCmd = registry\n\t\t.command(\"add\")\n\t\t.description(\"Add a registry\")\n\t\t.argument(\"<url>\", \"Registry URL\")\n\t\t.option(\"--name <name>\", \"Registry alias (defaults to hostname)\")\n\t\t.option(\"--version <version>\", \"Pin to specific version\")\n\t\t.option(\"-f, --force\", \"Overwrite existing registry\")\n\n\taddGlobalOption(addCmd)\n\taddProfileOption(addCmd)\n\taddCommonOptions(addCmd)\n\n\taddCmd.action(async (url: string, options: RegistryAddOptions, command: Command) => {\n\t\tlet target: RegistryTarget | undefined\n\t\ttry {\n\t\t\tconst cwd = options.cwd ?? process.cwd()\n\t\t\ttarget = await resolveRegistryTarget(options, command, cwd)\n\t\t\tconst { configDir, configPath } = target\n\n\t\t\t// Read config from resolved path\n\t\t\tconst config = await readOcxConfig(configDir)\n\t\t\tif (!config) {\n\t\t\t\tconst initHint =\n\t\t\t\t\ttarget.scope === \"global\"\n\t\t\t\t\t\t? \"Run 'ocx init --global' first.\"\n\t\t\t\t\t\t: target.scope === \"profile\"\n\t\t\t\t\t\t\t? `Run 'ocx profile config ${options.profile}' to create it.`\n\t\t\t\t\t\t\t: \"Run 'ocx init' first.\"\n\t\t\t\tlogger.error(`${target.targetLabel} not found. ${initHint}`)\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\n\t\t\tconst result = await runRegistryAddCore(url, options, {\n\t\t\t\tgetRegistries: () => config.registries,\n\t\t\t\tisLocked: () => config.lockRegistries ?? false,\n\t\t\t\tsetRegistry: async (name, regConfig) => {\n\t\t\t\t\tconfig.registries[name] = regConfig\n\t\t\t\t\tawait writeOcxConfig(configDir, config, configPath)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (options.json) {\n\t\t\t\toutputJson({ success: true, data: result })\n\t\t\t} else if (!options.quiet) {\n\t\t\t\tif (result.updated) {\n\t\t\t\t\tlogger.success(\n\t\t\t\t\t\t`Updated registry in ${target.targetLabel}: ${result.name} -> ${result.url}`,\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tlogger.success(`Added registry to ${target.targetLabel}: ${result.name} -> ${result.url}`)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof RegistryExistsError && !error.targetLabel) {\n\t\t\t\tconst enrichedError = new RegistryExistsError(\n\t\t\t\t\terror.registryName,\n\t\t\t\t\terror.existingUrl,\n\t\t\t\t\terror.newUrl,\n\t\t\t\t\ttarget?.targetLabel ?? \"config\",\n\t\t\t\t)\n\t\t\t\thandleError(enrichedError, { json: options.json })\n\t\t\t}\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n\n\t// registry remove <name>\n\tconst removeCmd = registry\n\t\t.command(\"remove\")\n\t\t.description(\"Remove a registry\")\n\t\t.argument(\"<name>\", \"Registry name\")\n\n\taddGlobalOption(removeCmd)\n\taddProfileOption(removeCmd)\n\taddCommonOptions(removeCmd)\n\n\tremoveCmd.action(async (name: string, options: RegistryOptions, command: Command) => {\n\t\ttry {\n\t\t\tconst cwd = options.cwd ?? process.cwd()\n\t\t\tconst target = await resolveRegistryTarget(options, command, cwd)\n\n\t\t\t// Read config from resolved path\n\t\t\tconst config = await readOcxConfig(target.configDir)\n\t\t\tif (!config) {\n\t\t\t\tconst initHint =\n\t\t\t\t\ttarget.scope === \"global\"\n\t\t\t\t\t\t? \"Run 'ocx init --global' first.\"\n\t\t\t\t\t\t: target.scope === \"profile\"\n\t\t\t\t\t\t\t? `Run 'ocx profile config ${options.profile}' to create it.`\n\t\t\t\t\t\t\t: \"Run 'ocx init' first.\"\n\t\t\t\tlogger.error(`${target.targetLabel} not found. ${initHint}`)\n\t\t\t\tprocess.exit(1)\n\t\t\t}\n\n\t\t\tconst result = await runRegistryRemoveCore(name, {\n\t\t\t\tgetRegistries: () => config.registries,\n\t\t\t\tisLocked: () => config.lockRegistries ?? false,\n\t\t\t\tremoveRegistry: async (regName) => {\n\t\t\t\t\tdelete config.registries[regName]\n\t\t\t\t\tawait writeOcxConfig(target.configDir, config, target.configPath)\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tif (options.json) {\n\t\t\t\toutputJson({ success: true, data: result })\n\t\t\t} else if (!options.quiet) {\n\t\t\t\tlogger.success(`Removed registry from ${target.targetLabel}: ${result.removed}`)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n\n\t// registry list\n\tconst listCmd = registry.command(\"list\").description(\"List configured registries\")\n\n\taddGlobalOption(listCmd)\n\taddProfileOption(listCmd)\n\taddCommonOptions(listCmd)\n\n\tlistCmd.action(async (options: RegistryOptions, command: Command) => {\n\t\ttry {\n\t\t\tconst cwd = options.cwd ?? process.cwd()\n\t\t\tconst target = await resolveRegistryTarget(options, command, cwd)\n\n\t\t\t// Read config from resolved path\n\t\t\tconst config = await readOcxConfig(target.configDir)\n\t\t\tif (!config) {\n\t\t\t\tconst initHint =\n\t\t\t\t\ttarget.scope === \"global\"\n\t\t\t\t\t\t? \"Run 'ocx init --global' first.\"\n\t\t\t\t\t\t: target.scope === \"profile\"\n\t\t\t\t\t\t\t? `Run 'ocx profile config ${options.profile}' to create it.`\n\t\t\t\t\t\t\t: \"Run 'ocx init' first.\"\n\t\t\t\tlogger.warn(`${target.targetLabel} not found. ${initHint}`)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst result = runRegistryListCore({\n\t\t\t\tgetRegistries: () => config.registries,\n\t\t\t\tisLocked: () => config.lockRegistries ?? false,\n\t\t\t})\n\n\t\t\tif (options.json) {\n\t\t\t\toutputJson({ success: true, data: result })\n\t\t\t} else if (!options.quiet) {\n\t\t\t\tif (result.registries.length === 0) {\n\t\t\t\t\tlogger.info(\"No registries configured.\")\n\t\t\t\t} else {\n\t\t\t\t\tconst scopeLabel =\n\t\t\t\t\t\ttarget.scope === \"global\"\n\t\t\t\t\t\t\t? \" (global)\"\n\t\t\t\t\t\t\t: target.scope === \"profile\"\n\t\t\t\t\t\t\t\t? ` (profile '${options.profile}')`\n\t\t\t\t\t\t\t\t: \"\"\n\t\t\t\t\tlogger.info(\n\t\t\t\t\t\t`Configured registries${scopeLabel}${result.locked ? kleur.yellow(\" (locked)\") : \"\"}:`,\n\t\t\t\t\t)\n\t\t\t\t\tfor (const reg of result.registries) {\n\t\t\t\t\t\tconsole.log(` ${kleur.cyan(reg.name)}: ${reg.url} ${kleur.dim(`(${reg.version})`)}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n}\n",
|
|
113
115
|
"/**\n * Search/List Command\n *\n * Search for components across registries or list installed.\n */\n\nimport type { Command } from \"commander\"\nimport { InvalidArgumentError, Option } from \"commander\"\nimport fuzzysort from \"fuzzysort\"\nimport kleur from \"kleur\"\nimport type { ConfigProvider } from \"../config/provider\"\nimport { LocalConfigProvider } from \"../config/provider\"\nimport { ConfigResolver } from \"../config/resolver\"\nimport { fetchRegistryIndex } from \"../registry/fetcher\"\nimport { readOcxLock } from \"../schemas/config\"\nimport { createSpinner, handleError, logger, outputJson } from \"../utils/index\"\nimport { addCommonOptions, addVerboseOption } from \"../utils/shared-options\"\n\nexport interface SearchOptions {\n\tcwd: string\n\tjson: boolean\n\tquiet: boolean\n\tverbose: boolean\n\tinstalled: boolean\n\tlimit: number\n\tprofile?: string\n}\n\n/**\n * Parses and validates a positive integer from CLI input.\n * @param value - The string value from CLI\n * @returns The parsed positive integer\n * @throws InvalidArgumentError if value is not a positive integer\n */\nfunction parsePositiveInt(value: string): number {\n\tconst parsed = parseInt(value, 10)\n\tif (Number.isNaN(parsed) || parsed <= 0) {\n\t\tthrow new InvalidArgumentError(\"Must be a positive integer\")\n\t}\n\treturn parsed\n}\n\nexport function registerSearchCommand(program: Command): void {\n\tconst cmd = program\n\t\t.command(\"search\")\n\t\t.alias(\"list\")\n\t\t.description(\"Search for components across registries or list installed\")\n\t\t.argument(\"[query]\", \"Search query\")\n\t\t.option(\"-i, --installed\", \"List installed components only\", false)\n\t\t.option(\"-p, --profile <name>\", \"Use specific profile\")\n\t\t.addOption(\n\t\t\tnew Option(\"-l, --limit <n>\", \"Limit results\").default(20).argParser(parsePositiveInt),\n\t\t)\n\n\taddCommonOptions(cmd)\n\taddVerboseOption(cmd)\n\n\tcmd.action(async (query: string | undefined, options: SearchOptions) => {\n\t\ttry {\n\t\t\t// List installed only\n\t\t\tif (options.installed) {\n\t\t\t\tconst lock = await readOcxLock(options.cwd)\n\t\t\t\tif (!lock) {\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\toutputJson({ success: true, data: { components: [] } })\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.info(\"No components installed.\")\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst installed = Object.entries(lock.installed).map(([name, info]) => ({\n\t\t\t\t\tname,\n\t\t\t\t\tregistry: info.registry,\n\t\t\t\t\tversion: info.version,\n\t\t\t\t\tinstalledAt: info.installedAt,\n\t\t\t\t}))\n\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: { components: installed } })\n\t\t\t\t} else {\n\t\t\t\t\tlogger.info(`Installed components (${installed.length}):`)\n\t\t\t\t\tfor (const comp of installed) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t` ${kleur.cyan(comp.name)} ${kleur.dim(`v${comp.version}`)} from ${comp.registry}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Search using ConfigResolver (supports --profile) or LocalConfigProvider\n\t\t\tlet provider: ConfigProvider\n\n\t\t\tif (options.profile) {\n\t\t\t\t// Use ConfigResolver with profile\n\t\t\t\tconst resolver = await ConfigResolver.create(options.cwd, { profile: options.profile })\n\t\t\t\tprovider = {\n\t\t\t\t\tcwd: resolver.getCwd(),\n\t\t\t\t\tgetRegistries: () => resolver.getRegistries(),\n\t\t\t\t\tgetComponentPath: () => resolver.getComponentPath(),\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprovider = await LocalConfigProvider.requireInitialized(options.cwd)\n\t\t\t}\n\n\t\t\tawait runSearchCore(query, options, provider)\n\t\t} catch (error) {\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n}\n\n/**\n * Core search logic that accepts a ConfigProvider.\n * This enables reuse across both standard and profile modes.\n */\nexport async function runSearchCore(\n\tquery: string | undefined,\n\toptions: { limit: number; json?: boolean; quiet?: boolean; verbose?: boolean },\n\tprovider: ConfigProvider,\n): Promise<void> {\n\tconst registries = provider.getRegistries()\n\n\tif (options.verbose) {\n\t\tlogger.info(`Searching in ${Object.keys(registries).length} registries...`)\n\t}\n\n\tconst allComponents: Array<{\n\t\tname: string\n\t\tdescription: string\n\t\ttype: string\n\t\tregistry: string\n\t}> = []\n\n\tconst spinner = createSpinner({\n\t\ttext: \"Searching registries...\",\n\t\tquiet: options.quiet || options.verbose,\n\t})\n\n\tif (!options.json && !options.verbose) {\n\t\tspinner.start()\n\t}\n\n\tfor (const [registryName, registryConfig] of Object.entries(registries)) {\n\t\ttry {\n\t\t\tif (options.verbose) {\n\t\t\t\tlogger.info(`Fetching index from ${registryName} (${registryConfig.url})...`)\n\t\t\t}\n\t\t\tconst index = await fetchRegistryIndex(registryConfig.url)\n\t\t\tif (options.verbose) {\n\t\t\t\tlogger.info(`Found ${index.components.length} components in ${registryName}`)\n\t\t\t}\n\t\t\tfor (const comp of index.components) {\n\t\t\t\tallComponents.push({\n\t\t\t\t\tname: `${index.namespace}/${comp.name}`,\n\t\t\t\t\tdescription: comp.description,\n\t\t\t\t\ttype: comp.type,\n\t\t\t\t\tregistry: registryName,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (options.verbose) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`Failed to fetch registry ${registryName}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t)\n\t\t\t}\n\t\t\t// Skip failed registries\n\t\t}\n\t}\n\n\tif (!options.json && !options.verbose) {\n\t\tspinner.stop()\n\t}\n\n\t// Filter by query if provided\n\tlet results = allComponents\n\tif (query) {\n\t\tconst fuzzyResults = fuzzysort.go(query, allComponents, {\n\t\t\tkeys: [\"name\", \"description\"],\n\t\t\tlimit: options.limit,\n\t\t})\n\t\tresults = fuzzyResults.map((r) => r.obj)\n\t} else {\n\t\tresults = results.slice(0, options.limit)\n\t}\n\n\tif (options.json) {\n\t\toutputJson({ success: true, data: { components: results } })\n\t} else {\n\t\tif (results.length === 0) {\n\t\t\tlogger.info(\"No components found.\")\n\t\t} else {\n\t\t\tlogger.info(`Found ${results.length} components:`)\n\t\t\tfor (const comp of results) {\n\t\t\t\tconsole.log(\n\t\t\t\t\t` ${kleur.cyan(comp.name)} ${kleur.dim(`(${comp.type})`)} - ${comp.description}`,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n",
|
|
116
|
+
"/**\n * Self Uninstall Command\n *\n * Safely removes OCX global configuration files and binary.\n * Follows the rustup uninstall model for a clean removal experience.\n *\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Guard clauses for safety checks at top of functions\n * - Parse Don't Validate: Path/target types are structured from the start\n * - Atomic Predictability: Each removal operation is independent and pure\n * - Fail Fast: Safety violations exit immediately with descriptive errors\n * - Intentional Naming: tildify, isLexicallyInside, classifyTargetSafety\n */\n\nimport { existsSync, lstatSync, readdirSync, realpathSync, rmSync, unlinkSync } from \"node:fs\"\nimport { homedir } from \"node:os\"\nimport path from \"node:path\"\nimport type { Command } from \"commander\"\nimport { getGlobalConfig, getProfilesDir } from \"../../profile/paths\"\nimport {\n\tdetectInstallMethod,\n\tgetExecutablePath,\n\ttype InstallMethod,\n} from \"../../self-update/detect-method\"\nimport { wrapAction } from \"../../utils/handle-error\"\nimport { highlight, logger } from \"../../utils/logger\"\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\n/** Exit codes specific to uninstall operations */\nexport const UNINSTALL_EXIT_CODES = {\n\tSUCCESS: 0,\n\tERROR: 1, // Permission denied, package-managed install\n\tSAFETY_ERROR: 2, // Containment violation, symlink root\n} as const\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/** Represents a target for removal with safety classification */\ninterface UninstallTarget {\n\trootPath: string\n\trelativePath: string\n\tabsolutePath: string\n\tdisplayPath: string // tildified\n\t// Note: \"junction\" omitted - Node's lstat doesn't reliably detect Windows junctions\n\tkind: \"file\" | \"directory\" | \"symlink\" | \"missing\"\n\tdeleteIfEmpty: boolean\n\tsafetyStatus: \"safe\" | \"forbidden\" | \"error\"\n}\n\n/** Result of validating the root directory */\ninterface RootValidationResult {\n\tvalid: boolean\n\treason?: \"symlink\" | \"not-directory\" | \"not-found\" | \"permission\"\n}\n\n/** Result of checking realpath containment */\ninterface RealpathContainmentResult {\n\tcontained: boolean\n\terror?: \"permission\" | \"io\"\n}\n\n/** Result of attempting to delete a target */\ninterface DeletionResult {\n\ttarget: UninstallTarget\n\tsuccess: boolean\n\tskipped: boolean\n\treason?: \"not found\" | \"not empty\" | \"permission denied\" | \"containment violation\"\n\terror?: Error\n}\n\n/** Command options for uninstall */\ninterface UninstallOptions {\n\tdryRun?: boolean\n}\n\n// =============================================================================\n// PATH HELPERS (Law 5: Intentional Naming)\n// =============================================================================\n\n/**\n * Type guard to check if an error is a Node.js errno exception.\n * @param err - The error to check\n * @returns True if the error has a code property\n */\nfunction isNodeError(err: unknown): err is NodeJS.ErrnoException {\n\treturn err instanceof Error && \"code\" in err\n}\n\n/**\n * Convert absolute path to ~/relative format for display.\n * @param absolutePath - The absolute path to tildify\n * @returns Path with home directory replaced by ~\n */\nfunction tildify(absolutePath: string): string {\n\tconst home = homedir()\n\tif (!home) return absolutePath\n\n\t// Exact match or proper child path\n\tif (absolutePath === home) return \"~\"\n\tif (absolutePath.startsWith(home + path.sep)) {\n\t\treturn `~${absolutePath.slice(home.length)}`\n\t}\n\treturn absolutePath\n}\n\n/**\n * Get the relative path from parent to child if child is contained within parent.\n * Returns null if child would escape parent (e.g., via ..).\n * @param parent - The parent directory\n * @param child - The potential child path\n * @returns Relative path if contained, null otherwise\n */\nfunction getRelativePathIfContained(parent: string, child: string): string | null {\n\tconst normalizedParent = path.normalize(parent)\n\tconst normalizedChild = path.normalize(child)\n\n\t// Get relative path\n\tconst relative = path.relative(normalizedParent, normalizedChild)\n\n\t// Check for escape: starts with .. or is absolute\n\tif (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n\t\treturn null\n\t}\n\n\treturn relative\n}\n\n/**\n * Check if target is lexically inside root (no symlink resolution).\n * Safe for symlink containment checks.\n * @param root - The root directory\n * @param target - The target path to check\n * @returns True if target is lexically inside root\n */\nfunction isLexicallyInside(root: string, target: string): boolean {\n\treturn getRelativePathIfContained(root, target) !== null\n}\n\n/**\n * Check if target's realpath is inside root's realpath.\n * Used for file/directory containment checks.\n * @param root - The root directory (must exist)\n * @param target - The target path to check\n * @returns Result object with containment status and any error\n */\nfunction isRealpathInside(root: string, target: string): RealpathContainmentResult {\n\t// Early exit: if target doesn't exist, can't resolve realpath\n\tif (!existsSync(target)) {\n\t\treturn { contained: true } // Missing targets are safe to \"delete\"\n\t}\n\n\ttry {\n\t\tconst realRoot = realpathSync(root)\n\t\tconst realTarget = realpathSync(target)\n\t\treturn { contained: getRelativePathIfContained(realRoot, realTarget) !== null }\n\t} catch (err) {\n\t\t// Distinguish permission errors from other IO errors\n\t\tif (isNodeError(err) && (err.code === \"EACCES\" || err.code === \"EPERM\")) {\n\t\t\treturn { contained: false, error: \"permission\" }\n\t\t}\n\t\treturn { contained: false, error: \"io\" }\n\t}\n}\n\n/**\n * Validate that root directory exists, is a directory, and is not a symlink.\n * @param rootPath - The root path to validate\n * @returns Validation result with reason if invalid\n */\nfunction validateRootDirectory(rootPath: string): RootValidationResult {\n\ttry {\n\t\tconst stats = lstatSync(rootPath)\n\t\tif (stats.isSymbolicLink()) {\n\t\t\treturn { valid: false, reason: \"symlink\" }\n\t\t}\n\t\tif (!stats.isDirectory()) {\n\t\t\treturn { valid: false, reason: \"not-directory\" }\n\t\t}\n\t\treturn { valid: true }\n\t} catch (err) {\n\t\tif (isNodeError(err)) {\n\t\t\tif (err.code === \"ENOENT\") {\n\t\t\t\treturn { valid: false, reason: \"not-found\" }\n\t\t\t}\n\t\t\tif (err.code === \"EACCES\" || err.code === \"EPERM\") {\n\t\t\t\treturn { valid: false, reason: \"permission\" }\n\t\t\t}\n\t\t}\n\t\t// Default to permission error for unknown failures (operational error)\n\t\treturn { valid: false, reason: \"permission\" }\n\t}\n}\n\n/**\n * Determine the kind of filesystem entry at path.\n * @param targetPath - The path to check\n * @returns The kind of entry\n */\nfunction getPathKind(targetPath: string): UninstallTarget[\"kind\"] {\n\tif (!existsSync(targetPath)) {\n\t\treturn \"missing\"\n\t}\n\n\ttry {\n\t\tconst stats = lstatSync(targetPath)\n\t\tif (stats.isSymbolicLink()) {\n\t\t\treturn \"symlink\"\n\t\t}\n\t\tif (stats.isDirectory()) {\n\t\t\treturn \"directory\"\n\t\t}\n\t\treturn \"file\"\n\t} catch {\n\t\treturn \"missing\"\n\t}\n}\n\n/**\n * Check if a directory is empty.\n * @param dirPath - Path to the directory\n * @returns True if empty, false if not empty or not a directory\n */\nfunction isDirectoryEmpty(dirPath: string): boolean {\n\tif (!existsSync(dirPath)) {\n\t\treturn true\n\t}\n\n\ttry {\n\t\tconst entries = readdirSync(dirPath)\n\t\treturn entries.length === 0\n\t} catch {\n\t\treturn false\n\t}\n}\n\n/**\n * Classify the safety status of a target.\n * @param target - Partial target with path info\n * @returns Safety status: \"safe\", \"forbidden\", or \"error\" (for operational failures)\n */\nfunction classifyTargetSafety(\n\ttarget: Pick<UninstallTarget, \"rootPath\" | \"absolutePath\" | \"kind\">,\n): \"safe\" | \"forbidden\" | \"error\" {\n\t// Missing targets are always safe\n\tif (target.kind === \"missing\") {\n\t\treturn \"safe\"\n\t}\n\n\t// Symlinks use lexical containment only (don't follow)\n\tif (target.kind === \"symlink\") {\n\t\treturn isLexicallyInside(target.rootPath, target.absolutePath) ? \"safe\" : \"forbidden\"\n\t}\n\n\t// Files/directories use realpath containment\n\tconst result = isRealpathInside(target.rootPath, target.absolutePath)\n\tif (result.error) {\n\t\treturn \"error\" // Operational failure (permission/IO)\n\t}\n\treturn result.contained ? \"safe\" : \"forbidden\"\n}\n\n// =============================================================================\n// BINARY DETECTION (Law 1: Early Exit for edge cases)\n// =============================================================================\n\n/**\n * Check if install method is package-managed.\n * @param method - The install method\n * @returns True if managed by npm/pnpm/bun/yarn\n */\nfunction isPackageManaged(method: InstallMethod): boolean {\n\treturn method === \"npm\" || method === \"pnpm\" || method === \"bun\" || method === \"yarn\"\n}\n\n/**\n * Get the uninstall command for a package manager.\n * @param method - The package manager\n * @returns The command string to run\n */\nfunction getPackageManagerCommand(method: InstallMethod): string {\n\tswitch (method) {\n\t\tcase \"npm\":\n\t\t\treturn \"npm uninstall -g ocx\"\n\t\tcase \"pnpm\":\n\t\t\treturn \"pnpm remove -g ocx\"\n\t\tcase \"bun\":\n\t\t\treturn \"bun remove -g ocx\"\n\t\tcase \"yarn\":\n\t\t\treturn \"yarn global remove ocx\"\n\t\tdefault:\n\t\t\treturn \"npm uninstall -g ocx\"\n\t}\n}\n\n// =============================================================================\n// TARGET BUILDING (Law 2: Parse Don't Validate)\n// =============================================================================\n\n/**\n * Get the OCX global config root directory.\n * @returns Path to ~/.config/opencode/\n */\nfunction getGlobalConfigRoot(): string {\n\tconst base = process.env.XDG_CONFIG_HOME || path.join(homedir(), \".config\")\n\treturn path.join(base, \"opencode\")\n}\n\n/**\n * Build targets for config removal.\n * @returns Array of config targets\n */\nfunction buildConfigTargets(): UninstallTarget[] {\n\tconst rootPath = getGlobalConfigRoot()\n\tconst targets: UninstallTarget[] = []\n\n\t// Profiles directory\n\tconst profilesDir = getProfilesDir()\n\tconst profilesRelative = getRelativePathIfContained(rootPath, profilesDir)\n\tif (profilesRelative) {\n\t\tconst kind = getPathKind(profilesDir)\n\t\ttargets.push({\n\t\t\trootPath,\n\t\t\trelativePath: profilesRelative,\n\t\t\tabsolutePath: profilesDir,\n\t\t\tdisplayPath: tildify(profilesDir),\n\t\t\tkind,\n\t\t\tdeleteIfEmpty: false,\n\t\t\tsafetyStatus: classifyTargetSafety({ rootPath, absolutePath: profilesDir, kind }),\n\t\t})\n\t}\n\n\t// ocx.jsonc file\n\tconst globalConfig = getGlobalConfig()\n\tconst configRelative = getRelativePathIfContained(rootPath, globalConfig)\n\tif (configRelative) {\n\t\tconst kind = getPathKind(globalConfig)\n\t\ttargets.push({\n\t\t\trootPath,\n\t\t\trelativePath: configRelative,\n\t\t\tabsolutePath: globalConfig,\n\t\t\tdisplayPath: tildify(globalConfig),\n\t\t\tkind,\n\t\t\tdeleteIfEmpty: false,\n\t\t\tsafetyStatus: classifyTargetSafety({ rootPath, absolutePath: globalConfig, kind }),\n\t\t})\n\t}\n\n\t// Root directory (only delete if empty after other removals)\n\tconst rootKind = getPathKind(rootPath)\n\ttargets.push({\n\t\trootPath,\n\t\trelativePath: \".\",\n\t\tabsolutePath: rootPath,\n\t\tdisplayPath: tildify(rootPath),\n\t\tkind: rootKind,\n\t\tdeleteIfEmpty: true,\n\t\tsafetyStatus: rootKind === \"missing\" ? \"safe\" : \"safe\", // Root is always safe if it exists\n\t})\n\n\treturn targets\n}\n\n/**\n * Build target for binary removal.\n * @returns Binary target or null if package-managed\n */\nfunction buildBinaryTarget(): UninstallTarget | null {\n\tconst method = detectInstallMethod()\n\n\t// Package-managed installs should use their own uninstall\n\tif (isPackageManaged(method)) {\n\t\treturn null\n\t}\n\n\t// For curl installs, get the executable path\n\tif (method === \"curl\") {\n\t\tconst binaryPath = getExecutablePath()\n\t\tconst kind = getPathKind(binaryPath)\n\t\tconst parentDir = path.dirname(binaryPath)\n\n\t\treturn {\n\t\t\trootPath: parentDir,\n\t\t\trelativePath: path.basename(binaryPath),\n\t\t\tabsolutePath: binaryPath,\n\t\t\tdisplayPath: tildify(binaryPath),\n\t\t\tkind,\n\t\t\tdeleteIfEmpty: false,\n\t\t\tsafetyStatus: kind === \"missing\" ? \"safe\" : \"safe\", // Binary path is trusted\n\t\t}\n\t}\n\n\t// Unknown method - can't determine binary location\n\treturn null\n}\n\n// =============================================================================\n// DELETION EXECUTION (Law 3: Atomic Predictability)\n// =============================================================================\n\n/**\n * Execute removal of a single target.\n * @param target - The target to remove\n * @returns Result of the deletion attempt\n */\nfunction executeRemoval(target: UninstallTarget): DeletionResult {\n\t// Early exit: missing targets are already \"deleted\"\n\tif (target.kind === \"missing\") {\n\t\treturn { target, success: true, skipped: true, reason: \"not found\" }\n\t}\n\n\t// Early exit: forbidden targets are skipped with containment violation\n\tif (target.safetyStatus === \"forbidden\") {\n\t\treturn {\n\t\t\ttarget,\n\t\t\tsuccess: false,\n\t\t\tskipped: true,\n\t\t\treason: \"containment violation\",\n\t\t\terror: new Error(\"Target escapes containment boundary\"),\n\t\t}\n\t}\n\n\t// Handle deleteIfEmpty directories\n\tif (target.deleteIfEmpty && target.kind === \"directory\") {\n\t\tif (!isDirectoryEmpty(target.absolutePath)) {\n\t\t\treturn { target, success: true, skipped: true, reason: \"not empty\" }\n\t\t}\n\t}\n\n\ttry {\n\t\tif (target.kind === \"directory\") {\n\t\t\trmSync(target.absolutePath, { recursive: true, force: true })\n\t\t} else {\n\t\t\tunlinkSync(target.absolutePath)\n\t\t}\n\t\treturn { target, success: true, skipped: false }\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err))\n\t\tconst reason =\n\t\t\tisNodeError(err) && (err.code === \"EACCES\" || err.code === \"EPERM\")\n\t\t\t\t? \"permission denied\"\n\t\t\t\t: undefined\n\t\treturn { target, success: false, skipped: false, reason, error }\n\t}\n}\n\n/**\n * Execute removal of all targets.\n * @param targets - Array of targets to remove\n * @returns Array of results\n */\nfunction executeRemovals(targets: UninstallTarget[]): DeletionResult[] {\n\treturn targets.map(executeRemoval)\n}\n\n/**\n * Remove binary file (platform-specific).\n * @param binaryPath - Path to the binary\n * @returns Deletion result\n */\nfunction removeBinary(binaryPath: string): DeletionResult {\n\tconst target: UninstallTarget = {\n\t\trootPath: path.dirname(binaryPath),\n\t\trelativePath: path.basename(binaryPath),\n\t\tabsolutePath: binaryPath,\n\t\tdisplayPath: tildify(binaryPath),\n\t\tkind: getPathKind(binaryPath),\n\t\tdeleteIfEmpty: false,\n\t\tsafetyStatus: \"safe\",\n\t}\n\n\t// Early exit: missing binary\n\tif (target.kind === \"missing\") {\n\t\treturn { target, success: true, skipped: true, reason: \"not found\" }\n\t}\n\n\t// On Windows, print instructions for v1 (binary may be locked)\n\tif (process.platform === \"win32\") {\n\t\tlogger.info(`To complete uninstall, manually delete: ${target.displayPath}`)\n\t\treturn { target, success: true, skipped: true }\n\t}\n\n\ttry {\n\t\tunlinkSync(binaryPath)\n\t\treturn { target, success: true, skipped: false }\n\t} catch (error) {\n\t\tconst err = error instanceof Error ? error : new Error(String(error))\n\t\treturn { target, success: false, skipped: false, reason: \"permission denied\", error: err }\n\t}\n}\n\n// =============================================================================\n// OUTPUT HELPERS (Law 5: Intentional Naming)\n// =============================================================================\n\n/**\n * Print what would be removed in dry-run mode.\n * @param configTargets - Config targets\n * @param binaryTarget - Binary target (null if package-managed)\n * @param installMethod - Detected install method\n */\nfunction printDryRun(\n\tconfigTargets: UninstallTarget[],\n\tbinaryTarget: UninstallTarget | null,\n\tinstallMethod: InstallMethod,\n): void {\n\tlogger.info(\"Dry run - the following would be removed:\\n\")\n\n\tconst existingConfigTargets = configTargets.filter((t) => t.kind !== \"missing\")\n\tfor (const target of existingConfigTargets) {\n\t\tconst kindLabel = target.kind === \"directory\" ? \"[dir] \" : \"[file]\"\n\t\tconst emptyNote = target.deleteIfEmpty ? \" (if empty)\" : \"\"\n\t\tlogger.log(` ${kindLabel} ${highlight.path(target.displayPath)}${emptyNote}`)\n\t}\n\n\tif (binaryTarget && binaryTarget.kind !== \"missing\") {\n\t\tlogger.log(` [bin] ${highlight.path(binaryTarget.displayPath)}`)\n\t}\n\n\tif (isPackageManaged(installMethod)) {\n\t\tlogger.log(\"\")\n\t\tlogger.info(`Binary managed by ${installMethod}. Run:`)\n\t\tlogger.log(` ${highlight.command(getPackageManagerCommand(installMethod))}`)\n\t}\n\n\tif (existingConfigTargets.length === 0 && (!binaryTarget || binaryTarget.kind === \"missing\")) {\n\t\tlogger.info(\"Nothing to remove.\")\n\t}\n}\n\n/**\n * Print the removal plan before execution.\n * @param configTargets - Config targets\n * @param binaryTarget - Binary target\n */\nfunction printRemovalPlan(\n\tconfigTargets: UninstallTarget[],\n\tbinaryTarget: UninstallTarget | null,\n): void {\n\tconst existingConfigTargets = configTargets.filter((t) => t.kind !== \"missing\")\n\n\tif (existingConfigTargets.length > 0 || (binaryTarget && binaryTarget.kind !== \"missing\")) {\n\t\tlogger.info(\"Removing OCX files...\")\n\t}\n}\n\n/**\n * Print results of removal operations.\n * @param results - Deletion results\n * @param binaryResult - Binary deletion result\n * @param installMethod - Install method for package manager message\n */\nfunction printResults(\n\tresults: DeletionResult[],\n\tbinaryResult: DeletionResult | null,\n\tinstallMethod: InstallMethod,\n): void {\n\tlogger.break()\n\n\t// Print config results\n\tfor (const result of results) {\n\t\tif (result.skipped) {\n\t\t\tif (result.reason === \"not found\") {\n\t\t\t\t// Skip silent - already gone\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (result.reason === \"not empty\") {\n\t\t\t\tlogger.info(`Kept ${highlight.path(result.target.displayPath)} (not empty)`)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (result.reason === \"permission denied\") {\n\t\t\t\tlogger.warn(`Skipped ${highlight.path(result.target.displayPath)} (permission denied)`)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (result.reason === \"containment violation\") {\n\t\t\t\tlogger.warn(`Skipped ${highlight.path(result.target.displayPath)} (containment violation)`)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif (result.success) {\n\t\t\tlogger.success(`Removed ${highlight.path(result.target.displayPath)}`)\n\t\t} else {\n\t\t\tlogger.error(`Failed to remove ${result.target.displayPath}: ${result.error?.message}`)\n\t\t}\n\t}\n\n\t// Print binary result\n\tif (binaryResult) {\n\t\tif (binaryResult.skipped && binaryResult.reason === \"not found\") {\n\t\t\t// Skip silent\n\t\t} else if (binaryResult.success && !binaryResult.skipped) {\n\t\t\tlogger.success(`Removed binary ${highlight.path(binaryResult.target.displayPath)}`)\n\t\t} else if (!binaryResult.success) {\n\t\t\tlogger.error(\n\t\t\t\t`Failed to remove binary ${binaryResult.target.displayPath}: ${binaryResult.error?.message}`,\n\t\t\t)\n\t\t}\n\t}\n\n\t// Package manager message\n\tif (isPackageManaged(installMethod)) {\n\t\tlogger.break()\n\t\tlogger.info(`Binary is managed by ${installMethod}. To complete uninstall, run:`)\n\t\tlogger.log(` ${highlight.command(getPackageManagerCommand(installMethod))}`)\n\t}\n}\n\n/**\n * Print message when nothing to remove.\n */\nfunction printNothingToRemove(): void {\n\tlogger.info(\"Nothing to remove. OCX is not installed globally.\")\n}\n\n// =============================================================================\n// MAIN LOGIC (Law 1: Early Exit for all edge cases at top)\n// =============================================================================\n\n/**\n * Run the uninstall command.\n * @param options - Command options\n */\nexport async function runUninstall(options: UninstallOptions): Promise<void> {\n\tconst rootPath = getGlobalConfigRoot()\n\n\t// 1. Validate root directory\n\tconst rootValidation = validateRootDirectory(rootPath)\n\tif (!rootValidation.valid) {\n\t\tswitch (rootValidation.reason) {\n\t\t\tcase \"not-found\":\n\t\t\t\t// Non-existent root is valid - nothing to delete, check binary\n\t\t\t\tbreak\n\t\t\tcase \"symlink\":\n\t\t\t\tlogger.error(\"Safety error: Global config root is a symlink. Aborting.\")\n\t\t\t\tprocess.exit(UNINSTALL_EXIT_CODES.SAFETY_ERROR)\n\t\t\t\tbreak\n\t\t\tcase \"not-directory\":\n\t\t\t\tlogger.error(\"Safety error: Global config root is not a directory. Aborting.\")\n\t\t\t\tprocess.exit(UNINSTALL_EXIT_CODES.SAFETY_ERROR)\n\t\t\t\tbreak\n\t\t\tcase \"permission\":\n\t\t\t\tlogger.error(\"Error: Cannot access global config root (permission denied).\")\n\t\t\t\tprocess.exit(UNINSTALL_EXIT_CODES.ERROR)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t// 2. Build config targets\n\tconst configTargets = buildConfigTargets()\n\n\t// 3. Check for containment violations and operational errors (Law 4: Fail Fast)\n\tconst forbiddenTargets = configTargets.filter((t) => t.safetyStatus === \"forbidden\")\n\tif (forbiddenTargets.length > 0) {\n\t\tlogger.error(\"Safety error: Target escapes containment boundary:\")\n\t\tfor (const target of forbiddenTargets) {\n\t\t\tlogger.error(` ${target.displayPath}`)\n\t\t}\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.SAFETY_ERROR)\n\t}\n\n\tconst errorTargets = configTargets.filter((t) => t.safetyStatus === \"error\")\n\tif (errorTargets.length > 0) {\n\t\tlogger.error(\"Error: Cannot verify containment for targets (permission/IO error):\")\n\t\tfor (const target of errorTargets) {\n\t\t\tlogger.error(` ${target.displayPath}`)\n\t\t}\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.ERROR)\n\t}\n\n\t// 4. Detect install method, build binary target\n\tconst installMethod = detectInstallMethod()\n\tconst binaryTarget = buildBinaryTarget()\n\n\t// 5. Check if nothing to remove\n\tconst existingConfigTargets = configTargets.filter((t) => t.kind !== \"missing\")\n\tconst hasBinary = binaryTarget && binaryTarget.kind !== \"missing\"\n\tconst hasPackageManager = isPackageManaged(installMethod)\n\n\tif (existingConfigTargets.length === 0 && !hasBinary && !hasPackageManager) {\n\t\tprintNothingToRemove()\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.SUCCESS)\n\t}\n\n\t// 6. Dry-run mode: show what would be removed\n\tif (options.dryRun) {\n\t\tprintDryRun(configTargets, binaryTarget, installMethod)\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.SUCCESS)\n\t}\n\n\t// 7. Print removal plan\n\tprintRemovalPlan(configTargets, binaryTarget)\n\n\t// 8. Execute config removals (order matters: children before parents)\n\tconst configResults = executeRemovals(configTargets)\n\n\t// 9. Execute binary removal OR print package manager command\n\tlet binaryResult: DeletionResult | null = null\n\tif (binaryTarget) {\n\t\tbinaryResult = removeBinary(binaryTarget.absolutePath)\n\t}\n\n\t// 10. Print results\n\tprintResults(configResults, binaryResult, installMethod)\n\n\t// 11. Determine exit code\n\tconst hasFailures = configResults.some((r) => !r.success && !r.skipped)\n\tconst binaryFailed = binaryResult && !binaryResult.success && !binaryResult.skipped\n\n\tif (hasFailures || binaryFailed) {\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.ERROR)\n\t}\n\n\t// Package-managed installs exit with 1 to indicate manual step needed\n\tif (isPackageManaged(installMethod)) {\n\t\tprocess.exit(UNINSTALL_EXIT_CODES.ERROR)\n\t}\n\n\tprocess.exit(UNINSTALL_EXIT_CODES.SUCCESS)\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\n/**\n * Register the self uninstall command.\n * @param parent - Parent command (self)\n */\nexport function registerSelfUninstallCommand(parent: Command): void {\n\tparent\n\t\t.command(\"uninstall\")\n\t\t.description(\"Remove OCX global configuration and binary\")\n\t\t.option(\"--dry-run\", \"Preview what would be removed\")\n\t\t.action(\n\t\t\twrapAction(async (options: UninstallOptions) => {\n\t\t\t\tawait runUninstall(options)\n\t\t\t}),\n\t\t)\n}\n",
|
|
117
|
+
"/**\n * Installation Method Detection\n *\n * Detects how OCX was installed to determine the appropriate update mechanism.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Check compiled binary first (most common case)\n * - Parse Don't Validate: Returns typed InstallMethod union\n * - Atomic Predictability: Pure functions based only on process state\n * - Fail Fast: N/A (always returns a valid method)\n * - Intentional Naming: Self-documenting function names\n */\n\nimport { SelfUpdateError } from \"../utils/errors\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Possible installation methods for OCX.\n * - \"curl\": Standalone compiled binary (installed via curl script)\n * - \"npm\": Installed globally via `npm install -g`\n * - \"yarn\": Installed globally via `yarn global add`\n * - \"pnpm\": Installed globally via `pnpm add -g`\n * - \"bun\": Installed globally via `bun add -g`\n * - \"unknown\": Unable to determine installation method\n */\nexport type InstallMethod = \"curl\" | \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" | \"unknown\"\n\n// =============================================================================\n// PARSING (Law 2: Parse, Don't Validate)\n// =============================================================================\n\n/**\n * Parse and validate an install method string.\n * @param input - The method string to parse\n * @returns A valid InstallMethod\n * @throws SelfUpdateError if input is invalid\n */\nexport function parseInstallMethod(input: string): InstallMethod {\n\tconst VALID_METHODS = [\"curl\", \"npm\", \"yarn\", \"pnpm\", \"bun\"] as const\n\tconst method = VALID_METHODS.find((m) => m === input)\n\tif (!method) {\n\t\tthrow new SelfUpdateError(\n\t\t\t`Invalid install method: \"${input}\"\\nValid methods: ${VALID_METHODS.join(\", \")}`,\n\t\t)\n\t}\n\treturn method\n}\n\n// =============================================================================\n// DETECTION PREDICATES (Law 5: Intentional Naming)\n// Most specific patterns first to avoid false positives\n// =============================================================================\n\n/** Check if running as compiled binary (Bun single-file executable) */\nconst isCompiledBinary = () => Bun.main.startsWith(\"/$bunfs/\")\n\n/** Check if running via npx/bunx/pnpx temp execution (not a persistent install) */\nconst isTempExecution = (path: string) =>\n\tpath.includes(\"/_npx/\") || path.includes(\"/.cache/bunx/\") || path.includes(\"/.pnpm/_temp/\")\n\n/** Check if installed via Yarn global */\nconst isYarnGlobalInstall = (path: string) =>\n\tpath.includes(\"/.yarn/global\") || path.includes(\"/.config/yarn/global\")\n\n/** Check if installed via pnpm global */\nconst isPnpmGlobalInstall = (path: string) =>\n\tpath.includes(\"/.pnpm/\") || path.includes(\"/pnpm/global\")\n\n/** Check if installed via Bun global */\nconst isBunGlobalInstall = (path: string) =>\n\tpath.includes(\"/.bun/bin\") || path.includes(\"/.bun/install/global\")\n\n/** Check if installed via npm global (generic node_modules - least specific) */\nconst isNpmGlobalInstall = (path: string) =>\n\tpath.includes(\"/.npm/\") || path.includes(\"/node_modules/\")\n\n// =============================================================================\n// INSTALLATION DETECTION\n// =============================================================================\n\n/**\n * Detect how OCX was installed by analyzing paths.\n * Uses O(1) path analysis instead of slow shell commands.\n *\n * Detection priority (MOST SPECIFIC FIRST):\n * 1. Compiled binary: Bun.main starts with `/$bunfs/` (bun's virtual filesystem)\n * 2. Temp execution: npx/bunx/pnpx temp paths (not a persistent install)\n * 3. Yarn global: `/.yarn/global` or `/.config/yarn/global` paths\n * 4. pnpm global: `/.pnpm/` or `/pnpm/global` paths\n * 5. Bun global: `/.bun/bin` or `/.bun/install/global` paths\n * 6. npm global: Generic `/node_modules/` (least specific, checked last)\n * 7. npm_config_user_agent: Fallback for package manager invocations\n * 8. Default: \"unknown\" if no patterns match\n *\n * @returns The detected installation method\n */\nexport function detectInstallMethod(): InstallMethod {\n\t// Compiled binary detection (curl install)\n\tif (isCompiledBinary()) {\n\t\treturn \"curl\"\n\t}\n\n\tconst scriptPath = process.argv[1] ?? \"\"\n\n\t// Package manager detection - MOST SPECIFIC FIRST\n\t// Temp execution paths (npx/bunx/pnpx) - not a persistent install\n\tif (isTempExecution(scriptPath)) return \"unknown\"\n\n\t// Yarn global - must check before generic node_modules\n\tif (isYarnGlobalInstall(scriptPath)) return \"yarn\"\n\n\t// pnpm global - specific pnpm paths\n\tif (isPnpmGlobalInstall(scriptPath)) return \"pnpm\"\n\n\t// Bun global - specific bun paths\n\tif (isBunGlobalInstall(scriptPath)) return \"bun\"\n\n\t// npm global - generic node_modules (LEAST SPECIFIC, checked last)\n\tif (isNpmGlobalInstall(scriptPath)) return \"npm\"\n\n\t// Fallback: check npm_config_user_agent\n\tconst userAgent = process.env.npm_config_user_agent ?? \"\"\n\tif (userAgent.includes(\"yarn\")) return \"yarn\"\n\tif (userAgent.includes(\"pnpm\")) return \"pnpm\"\n\tif (userAgent.includes(\"bun\")) return \"bun\"\n\tif (userAgent.includes(\"npm\")) return \"npm\"\n\n\t// Unknown - will show helpful message to user\n\treturn \"unknown\"\n}\n\n// =============================================================================\n// EXECUTABLE PATH UTILITIES\n// =============================================================================\n\n/**\n * Get the path to the current OCX executable.\n *\n * For compiled binaries, returns `process.execPath` (the binary itself).\n * For npm/bun installs, returns `process.argv[1]` (the script path).\n *\n * @returns Absolute path to the OCX executable or script\n */\nexport function getExecutablePath(): string {\n\t// For compiled binaries, use process.execPath\n\t// For npm/bun, process.execPath returns the node/bun binary, not ocx\n\tif (typeof Bun !== \"undefined\" && Bun.main.startsWith(\"/$bunfs/\")) {\n\t\treturn process.execPath\n\t}\n\n\t// Script path for non-compiled (npm/bun global installs)\n\treturn process.argv[1] ?? process.execPath\n}\n",
|
|
114
118
|
"/**\n * Build-Time Version Provider\n *\n * Provides version from build-time constant for production use.\n * @module\n */\n\nimport type { VersionProvider } from \"./types\"\n\n// =============================================================================\n// BUILD-TIME VERSION\n// =============================================================================\n\n/** Version injected at build time by bundler */\ndeclare const __VERSION__: string | undefined\n\n/**\n * Provides version from build-time constant.\n * Falls back to empty string if not defined (development mode).\n */\nexport class BuildTimeVersionProvider implements VersionProvider {\n\treadonly version = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"\"\n}\n\n/** Default version provider instance for production use */\nexport const defaultVersionProvider = new BuildTimeVersionProvider()\n",
|
|
115
119
|
"/**\n * Check for available updates to the OCX CLI.\n * Returns a discriminated union: { ok: true, ... } for success,\n * { ok: false, reason: '...' } for failure with typed reason.\n *\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Return failure reason immediately on error\n * - Parse Don't Validate: Use typed CheckResult discriminated union\n * - Atomic Predictability: Pure comparison logic\n * - Fail Fast: Abort on timeout, don't block UX\n * - Intentional Naming: Self-documenting function names\n */\n\nimport { NetworkError } from \"../utils/errors\"\nimport { fetchPackageVersion } from \"../utils/npm-registry\"\nimport type { VersionProvider } from \"./types\"\nimport { defaultVersionProvider } from \"./version-provider\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Result of checking for available updates.\n * Contains current version, latest version, and whether an update is available.\n */\nexport interface VersionCheckResult {\n\tcurrent: string\n\tlatest: string\n\tupdateAvailable: boolean\n}\n\n/**\n * Result of checking for available updates.\n * Discriminated union: ok=true for success, ok=false with reason for failure.\n */\nexport type CheckResult =\n\t| { ok: true; current: string; latest: string; updateAvailable: boolean }\n\t| { ok: false; reason: \"dev-version\" | \"timeout\" | \"network-error\" | \"invalid-response\" }\n\n/** Extract failure type for error message mapping */\nexport type CheckFailure = Extract<CheckResult, { ok: false }>\n\n// Re-export for convenience\nexport type { VersionProvider } from \"./types\"\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\n/** Timeout for version check - non-blocking UX is priority */\nconst VERSION_CHECK_TIMEOUT_MS = 200\n\n/** Timeout for explicit update commands (user is willing to wait) */\nexport const EXPLICIT_UPDATE_TIMEOUT_MS = 10_000\n\n/** Package name on npm registry */\nconst PACKAGE_NAME = \"ocx\"\n\n// =============================================================================\n// VERSION UTILITIES\n// =============================================================================\n\n/**\n * Parse a semver string into components.\n * Returns null if invalid.\n *\n * @param v - Version string (e.g., \"1.2.3\" or \"1.2.3-beta.1\")\n * @returns Parsed version or null if invalid\n */\nfunction parseVersion(v: string): { major: number; minor: number; patch: number } | null {\n\tconst [main = \"\"] = v.split(\"-\") // Ignore prerelease for comparison\n\tconst parts = main.split(\".\")\n\tconst major = parseInt(parts[0] ?? \"\", 10)\n\tconst minor = parseInt(parts[1] ?? \"\", 10)\n\tconst patch = parseInt(parts[2] ?? \"\", 10)\n\n\t// Early exit: invalid version components\n\tif (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch)) {\n\t\treturn null\n\t}\n\n\treturn { major, minor, patch }\n}\n\n/**\n * Compare two semver versions.\n * Returns null if either version is invalid (cannot compare).\n *\n * @param a - First version string (e.g., \"1.2.3\")\n * @param b - Second version string (e.g., \"1.0.0\")\n * @returns Negative if a < b, 0 if equal, positive if a > b, null if invalid\n */\nfunction compareSemver(a: string, b: string): number | null {\n\tconst vA = parseVersion(a)\n\tconst vB = parseVersion(b)\n\n\t// Early exit: can't compare invalid versions\n\tif (!vA || !vB) {\n\t\treturn null\n\t}\n\n\tif (vA.major !== vB.major) return vA.major - vB.major\n\tif (vA.minor !== vB.minor) return vA.minor - vB.minor\n\treturn vA.patch - vB.patch\n}\n\n// =============================================================================\n// VERSION CHECK\n// =============================================================================\n\n/**\n * Check if a newer version of OCX is available.\n *\n * Uses npm registry with configurable timeout for different contexts:\n * - Background checks: 200ms (non-blocking UX priority)\n * - Explicit update command: 10s (user is willing to wait)\n *\n * Returns discriminated union: ok=true for success, ok=false with reason for failure.\n *\n * @param versionProvider - Optional version provider for dependency injection (testing)\n * @param timeoutMs - Timeout in milliseconds (default: 200ms for background checks)\n * @returns CheckResult with success data or failure reason\n */\nexport async function checkForUpdate(\n\tversionProvider?: VersionProvider,\n\ttimeoutMs: number = VERSION_CHECK_TIMEOUT_MS,\n): Promise<CheckResult> {\n\tconst provider = versionProvider ?? defaultVersionProvider\n\tconst current = provider.version || \"0.0.0-dev\"\n\n\t// Early exit: dev version, don't check\n\tif (current === \"0.0.0-dev\") {\n\t\treturn { ok: false, reason: \"dev-version\" }\n\t}\n\n\ttry {\n\t\t// Fetch with timeout signal - aborts the actual HTTP request on timeout\n\t\tconst result = await fetchPackageVersion(\n\t\t\tPACKAGE_NAME,\n\t\t\tundefined,\n\t\t\tAbortSignal.timeout(timeoutMs),\n\t\t)\n\n\t\tconst latest = result.version\n\n\t\t// Compare versions\n\t\tconst comparison = compareSemver(latest, current)\n\n\t\t// Early exit: can't compare (invalid versions)\n\t\tif (comparison === null) {\n\t\t\treturn { ok: false, reason: \"invalid-response\" }\n\t\t}\n\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcurrent,\n\t\t\tlatest,\n\t\t\tupdateAvailable: comparison > 0,\n\t\t}\n\t} catch (error) {\n\t\t// Categorize the failure reason for caller to handle appropriately\n\t\tif (error instanceof Error) {\n\t\t\t// Timeout/AbortError - request was aborted\n\t\t\tif (error.name === \"AbortError\" || error.name === \"TimeoutError\") {\n\t\t\t\treturn { ok: false, reason: \"timeout\" }\n\t\t\t}\n\n\t\t\t// Network-level failures\n\t\t\tif (error instanceof NetworkError || error.name === \"NetworkError\") {\n\t\t\t\treturn { ok: false, reason: \"network-error\" }\n\t\t\t}\n\t\t}\n\n\t\t// Parse errors or unexpected response shapes\n\t\treturn { ok: false, reason: \"invalid-response\" }\n\t}\n}\n",
|
|
116
|
-
"/**\n * Installation Method Detection\n *\n * Detects how OCX was installed to determine the appropriate update mechanism.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Check compiled binary first (most common case)\n * - Parse Don't Validate: Returns typed InstallMethod union\n * - Atomic Predictability: Pure functions based only on process state\n * - Fail Fast: N/A (always returns a valid method)\n * - Intentional Naming: Self-documenting function names\n */\n\nimport { SelfUpdateError } from \"../utils/errors\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Possible installation methods for OCX.\n * - \"curl\": Standalone compiled binary (installed via curl script)\n * - \"npm\": Installed globally via `npm install -g`\n * - \"yarn\": Installed globally via `yarn global add`\n * - \"pnpm\": Installed globally via `pnpm add -g`\n * - \"bun\": Installed globally via `bun add -g`\n * - \"unknown\": Unable to determine installation method\n */\nexport type InstallMethod = \"curl\" | \"npm\" | \"yarn\" | \"pnpm\" | \"bun\" | \"unknown\"\n\n// =============================================================================\n// PARSING (Law 2: Parse, Don't Validate)\n// =============================================================================\n\n/**\n * Parse and validate an install method string.\n * @param input - The method string to parse\n * @returns A valid InstallMethod\n * @throws SelfUpdateError if input is invalid\n */\nexport function parseInstallMethod(input: string): InstallMethod {\n\tconst VALID_METHODS = [\"curl\", \"npm\", \"yarn\", \"pnpm\", \"bun\"] as const\n\tconst method = VALID_METHODS.find((m) => m === input)\n\tif (!method) {\n\t\tthrow new SelfUpdateError(\n\t\t\t`Invalid install method: \"${input}\"\\nValid methods: ${VALID_METHODS.join(\", \")}`,\n\t\t)\n\t}\n\treturn method\n}\n\n// =============================================================================\n// DETECTION PREDICATES (Law 5: Intentional Naming)\n// Most specific patterns first to avoid false positives\n// =============================================================================\n\n/** Check if running as compiled binary (Bun single-file executable) */\nconst isCompiledBinary = () => Bun.main.startsWith(\"/$bunfs/\")\n\n/** Check if running via npx/bunx/pnpx temp execution (not a persistent install) */\nconst isTempExecution = (path: string) =>\n\tpath.includes(\"/_npx/\") || path.includes(\"/.cache/bunx/\") || path.includes(\"/.pnpm/_temp/\")\n\n/** Check if installed via Yarn global */\nconst isYarnGlobalInstall = (path: string) =>\n\tpath.includes(\"/.yarn/global\") || path.includes(\"/.config/yarn/global\")\n\n/** Check if installed via pnpm global */\nconst isPnpmGlobalInstall = (path: string) =>\n\tpath.includes(\"/.pnpm/\") || path.includes(\"/pnpm/global\")\n\n/** Check if installed via Bun global */\nconst isBunGlobalInstall = (path: string) =>\n\tpath.includes(\"/.bun/bin\") || path.includes(\"/.bun/install/global\")\n\n/** Check if installed via npm global (generic node_modules - least specific) */\nconst isNpmGlobalInstall = (path: string) =>\n\tpath.includes(\"/.npm/\") || path.includes(\"/node_modules/\")\n\n// =============================================================================\n// INSTALLATION DETECTION\n// =============================================================================\n\n/**\n * Detect how OCX was installed by analyzing paths.\n * Uses O(1) path analysis instead of slow shell commands.\n *\n * Detection priority (MOST SPECIFIC FIRST):\n * 1. Compiled binary: Bun.main starts with `/$bunfs/` (bun's virtual filesystem)\n * 2. Temp execution: npx/bunx/pnpx temp paths (not a persistent install)\n * 3. Yarn global: `/.yarn/global` or `/.config/yarn/global` paths\n * 4. pnpm global: `/.pnpm/` or `/pnpm/global` paths\n * 5. Bun global: `/.bun/bin` or `/.bun/install/global` paths\n * 6. npm global: Generic `/node_modules/` (least specific, checked last)\n * 7. npm_config_user_agent: Fallback for package manager invocations\n * 8. Default: \"unknown\" if no patterns match\n *\n * @returns The detected installation method\n */\nexport function detectInstallMethod(): InstallMethod {\n\t// Compiled binary detection (curl install)\n\tif (isCompiledBinary()) {\n\t\treturn \"curl\"\n\t}\n\n\tconst scriptPath = process.argv[1] ?? \"\"\n\n\t// Package manager detection - MOST SPECIFIC FIRST\n\t// Temp execution paths (npx/bunx/pnpx) - not a persistent install\n\tif (isTempExecution(scriptPath)) return \"unknown\"\n\n\t// Yarn global - must check before generic node_modules\n\tif (isYarnGlobalInstall(scriptPath)) return \"yarn\"\n\n\t// pnpm global - specific pnpm paths\n\tif (isPnpmGlobalInstall(scriptPath)) return \"pnpm\"\n\n\t// Bun global - specific bun paths\n\tif (isBunGlobalInstall(scriptPath)) return \"bun\"\n\n\t// npm global - generic node_modules (LEAST SPECIFIC, checked last)\n\tif (isNpmGlobalInstall(scriptPath)) return \"npm\"\n\n\t// Fallback: check npm_config_user_agent\n\tconst userAgent = process.env.npm_config_user_agent ?? \"\"\n\tif (userAgent.includes(\"yarn\")) return \"yarn\"\n\tif (userAgent.includes(\"pnpm\")) return \"pnpm\"\n\tif (userAgent.includes(\"bun\")) return \"bun\"\n\tif (userAgent.includes(\"npm\")) return \"npm\"\n\n\t// Unknown - will show helpful message to user\n\treturn \"unknown\"\n}\n\n// =============================================================================\n// EXECUTABLE PATH UTILITIES\n// =============================================================================\n\n/**\n * Get the path to the current OCX executable.\n *\n * For compiled binaries, returns `process.execPath` (the binary itself).\n * For npm/bun installs, returns `process.argv[1]` (the script path).\n *\n * @returns Absolute path to the OCX executable or script\n */\nexport function getExecutablePath(): string {\n\t// For compiled binaries, use process.execPath\n\t// For npm/bun, process.execPath returns the node/bun binary, not ocx\n\tif (typeof Bun !== \"undefined\" && Bun.main.startsWith(\"/$bunfs/\")) {\n\t\treturn process.execPath\n\t}\n\n\t// Script path for non-compiled (npm/bun global installs)\n\treturn process.argv[1] ?? process.execPath\n}\n",
|
|
117
120
|
"/**\n * Self-Update Binary Download\n *\n * Downloads and replaces the OCX binary with atomic swap and rollback.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Guard clauses for unsupported platforms\n * - Parse Don't Validate: Platform resolved to typed download URL\n * - Atomic Predictability: Temp file -> backup -> swap pattern\n * - Fail Fast: Throw SelfUpdateError on any failure\n * - Intentional Naming: downloadWithProgress, downloadAndReplace\n */\n\nimport { chmodSync, existsSync, renameSync, unlinkSync } from \"node:fs\"\nimport { SelfUpdateError } from \"../utils/errors\"\nimport { createSpinner } from \"../utils/spinner\"\nimport { getExecutablePath } from \"./detect-method\"\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\n/** GitHub repository for OCX releases */\nconst GITHUB_REPO = \"kdcokenny/ocx\"\n\n/** Default base URL for downloading OCX releases from GitHub */\nconst DEFAULT_DOWNLOAD_BASE_URL = `https://github.com/${GITHUB_REPO}/releases/download`\n\n/**\n * Platform map matching build-binary.ts targets.\n * Maps `${process.arch}-${process.platform}` to binary filename.\n *\n * Note: Baseline and musl variants are not auto-detected.\n * Users on those platforms should use the curl installer with explicit target.\n */\nconst PLATFORM_MAP: Record<string, string> = {\n\t// macOS\n\t\"arm64-darwin\": \"ocx-darwin-arm64\",\n\t\"x64-darwin\": \"ocx-darwin-x64\",\n\t// Linux (glibc - standard)\n\t\"arm64-linux\": \"ocx-linux-arm64\",\n\t\"x64-linux\": \"ocx-linux-x64\",\n\t// Windows\n\t\"x64-win32\": \"ocx-windows-x64.exe\",\n} as const\n\n// =============================================================================\n// URL GENERATION\n// =============================================================================\n\n/**\n * Get the base URL for downloading OCX releases.\n * Supports OCX_DOWNLOAD_URL for enterprise/air-gapped environments.\n *\n * @returns Base URL for release downloads (without trailing slash)\n */\nexport function getDownloadBaseUrl(): string {\n\tconst envUrl = process.env.OCX_DOWNLOAD_URL\n\n\tif (envUrl) {\n\t\t// Normalize: remove trailing slash(es)\n\t\treturn envUrl.replace(/\\/+$/, \"\")\n\t}\n\n\treturn DEFAULT_DOWNLOAD_BASE_URL\n}\n\n/**\n * Get download URL for a specific version.\n *\n * @param version - Version to download (without 'v' prefix)\n * @returns Release download URL (from GitHub or OCX_DOWNLOAD_URL override)\n * @throws SelfUpdateError if platform is unsupported\n */\nexport function getDownloadUrl(version: string): string {\n\tconst platform = `${process.arch}-${process.platform}`\n\tconst target = PLATFORM_MAP[platform]\n\n\t// Early exit: unsupported platform\n\tif (!target) {\n\t\tconst supported = Object.keys(PLATFORM_MAP).join(\", \")\n\t\tthrow new SelfUpdateError(\n\t\t\t`Unsupported platform: ${platform}\\n` + `Supported platforms: ${supported}`,\n\t\t)\n\t}\n\n\tconst baseUrl = getDownloadBaseUrl()\n\treturn `${baseUrl}/v${version}/${target}`\n}\n\n// =============================================================================\n// DOWNLOAD\n// =============================================================================\n\n/**\n * Download binary with progress indicator.\n *\n * @param url - URL to download from\n * @param dest - Destination path for the downloaded file\n * @throws SelfUpdateError if download fails\n */\nasync function downloadWithProgress(url: string, dest: string): Promise<void> {\n\tconst spin = createSpinner({ text: \"Downloading update...\" })\n\tspin.start()\n\n\tlet response: Response\n\ttry {\n\t\tresponse = await fetch(url, { redirect: \"follow\" })\n\t} catch (error) {\n\t\tspin.fail(\"Download failed\")\n\t\tthrow new SelfUpdateError(\n\t\t\t`Network error: ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n\n\t// Early exit: HTTP error\n\tif (!response.ok) {\n\t\tspin.fail(\"Download failed\")\n\t\tthrow new SelfUpdateError(`Failed to download: HTTP ${response.status} ${response.statusText}`)\n\t}\n\n\t// Early exit: no response body\n\tif (!response.body) {\n\t\tspin.fail(\"Download failed\")\n\t\tthrow new SelfUpdateError(\"Download failed: Empty response body\")\n\t}\n\n\tconst reader = response.body.getReader()\n\tconst writer = Bun.file(dest).writer()\n\tconst total = Number(response.headers.get(\"content-length\") || 0)\n\tlet received = 0\n\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read()\n\t\t\tif (done) break\n\t\t\tawait writer.write(value)\n\t\t\treceived += value.length\n\n\t\t\t// Update progress if we know total size\n\t\t\tif (total > 0) {\n\t\t\t\tconst pct = Math.round((received / total) * 100)\n\t\t\t\tspin.text = `Downloading... ${pct}%`\n\t\t\t}\n\t\t}\n\t\tawait writer.end()\n\t\tspin.succeed(\"Download complete\")\n\t} catch (error) {\n\t\tspin.fail(\"Download failed\")\n\t\tawait writer.end()\n\t\tthrow new SelfUpdateError(\n\t\t\t`Download interrupted: ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n}\n\n// =============================================================================\n// ATOMIC REPLACEMENT\n// =============================================================================\n\n/**\n * Result of downloading binary to temp location.\n * Contains paths needed for verification and atomic swap.\n */\nexport interface DownloadResult {\n\t/** Path to the downloaded temp file */\n\ttempPath: string\n\t/** Path to current executable (swap target) */\n\texecPath: string\n}\n\n/**\n * Download binary to a temp file for verification before replacement.\n *\n * Strategy:\n * 1. Download to temp file (execPath.new.{timestamp})\n * 2. Set executable permissions\n * 3. Return paths for caller to verify before swap\n *\n * @param version - Version to download (without 'v' prefix)\n * @returns Paths for temp file and executable\n * @throws SelfUpdateError if download fails\n */\nexport async function downloadToTemp(version: string): Promise<DownloadResult> {\n\tconst execPath = getExecutablePath()\n\tconst tempPath = `${execPath}.new.${Date.now()}`\n\n\tconst url = getDownloadUrl(version)\n\n\t// 1. Download to temp file\n\tawait downloadWithProgress(url, tempPath)\n\n\t// 2. Set executable permissions (rwxr-xr-x)\n\ttry {\n\t\tchmodSync(tempPath, 0o755)\n\t} catch (error) {\n\t\t// Clean up temp file\n\t\tif (existsSync(tempPath)) {\n\t\t\tunlinkSync(tempPath)\n\t\t}\n\t\tthrow new SelfUpdateError(\n\t\t\t`Failed to set permissions: ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n\n\treturn { tempPath, execPath }\n}\n\n/**\n * Atomically replace the current binary with a verified temp file.\n *\n * Strategy:\n * 1. Backup current binary (execPath.backup)\n * 2. Atomic rename temp -> execPath\n * 3. Remove backup on success\n * 4. Rollback from backup on failure\n *\n * SECURITY: Only call this AFTER verifying the temp file's checksum.\n *\n * @param tempPath - Path to the verified temp binary\n * @param execPath - Path to the current executable\n * @throws SelfUpdateError if replacement fails\n */\nexport function atomicReplace(tempPath: string, execPath: string): void {\n\tconst backupPath = `${execPath}.backup`\n\n\ttry {\n\t\t// Backup existing binary\n\t\tif (existsSync(execPath)) {\n\t\t\trenameSync(execPath, backupPath)\n\t\t}\n\n\t\t// Move new binary into place\n\t\trenameSync(tempPath, execPath)\n\n\t\t// Success - remove backup\n\t\tif (existsSync(backupPath)) {\n\t\t\tunlinkSync(backupPath)\n\t\t}\n\t} catch (error) {\n\t\t// Rollback: restore backup if it exists and execPath is missing\n\t\tif (existsSync(backupPath) && !existsSync(execPath)) {\n\t\t\ttry {\n\t\t\t\trenameSync(backupPath, execPath)\n\t\t\t} catch {\n\t\t\t\t// Rollback failed - leave backup in place for manual recovery\n\t\t\t}\n\t\t}\n\n\t\t// Clean up temp file if it still exists\n\t\tif (existsSync(tempPath)) {\n\t\t\ttry {\n\t\t\t\tunlinkSync(tempPath)\n\t\t\t} catch {\n\t\t\t\t// Ignore cleanup errors\n\t\t\t}\n\t\t}\n\n\t\tthrow new SelfUpdateError(\n\t\t\t`Update failed: ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n}\n\n/**\n * Clean up a temp file after verification failure.\n *\n * @param tempPath - Path to the temp file to remove\n */\nexport function cleanupTempFile(tempPath: string): void {\n\tif (existsSync(tempPath)) {\n\t\ttry {\n\t\t\tunlinkSync(tempPath)\n\t\t} catch {\n\t\t\t// Ignore cleanup errors\n\t\t}\n\t}\n}\n",
|
|
118
121
|
"// Copyright 2024-2026 the OCX authors. MIT license.\n\n/**\n * Self-update notification display for terminal output.\n *\n * Provides Rustup-style update notifications with terminal-aware formatting.\n * Follows the 5 Laws of Elegant Defense:\n *\n * - **Early Exit**: TTY check before output\n * - **Intentional Naming**: {@linkcode notifyUpdate}, {@linkcode notifyUpdated}, {@linkcode notifyUpToDate}\n *\n * @example\n * ```ts\n * import { notifyUpdate } from \"./notify\"\n *\n * notifyUpdate(\"1.0.0\", \"1.1.0\")\n * // Prints: \"info: update available - 1.1.0 (current: 1.0.0)\"\n * ```\n *\n * @module\n */\n\nimport kleur from \"kleur\"\n\n/**\n * Display update notification in Rustup style.\n * Only displays if stdout is a TTY.\n *\n * Output format:\n * info: update available - 1.3.0 (current: 1.2.2)\n * run `ocx self update` to upgrade\n */\nexport function notifyUpdate(current: string, latest: string): void {\n\tif (!process.stdout.isTTY) return\n\n\tconsole.error(\n\t\t`${kleur.cyan(\"info\")}: update available - ${kleur.green(latest)} (current: ${kleur.dim(current)})`,\n\t)\n\tconsole.error(` run ${kleur.cyan(\"`ocx self update`\")} to upgrade`)\n}\n\n/**\n * Display \"already up to date\" message.\n *\n * Output format:\n * info: ocx unchanged - 1.2.2\n */\nexport function notifyUpToDate(version: string): void {\n\tconsole.error(`${kleur.cyan(\"info\")}: ocx unchanged - ${kleur.dim(version)}`)\n}\n\n/**\n * Display successful update message.\n *\n * Output format:\n * ocx updated - 1.3.0 (from 1.2.2)\n */\nexport function notifyUpdated(from: string, to: string): void {\n\tconsole.error(` ${kleur.green(\"ocx updated\")} - ${to} (from ${from})`)\n}\n",
|
|
119
122
|
"/**\n * SHA256 verification for self-update downloads.\n *\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Guard clauses in parseSha256Sums for empty/invalid lines\n * - Parse Don't Validate: Checksums parsed into Map at boundary\n * - Atomic Predictability: Pure hash functions with no side effects\n * - Fail Fast: IntegrityError thrown immediately on mismatch\n * - Intentional Naming: parseSha256Sums, hashContent, verifyChecksum\n */\n\nimport { createHash } from \"node:crypto\"\nimport { IntegrityError, SelfUpdateError } from \"../utils/errors\"\n\nconst GITHUB_REPO = \"kdcokenny/ocx\"\n\n// =============================================================================\n// CHECKSUM PARSING\n// =============================================================================\n\n/**\n * Parse SHA256SUMS.txt content into a Map.\n * Supports GNU format: \"<hash> <filename>\" (two spaces)\n * Supports BSD format: \"<hash> *<filename>\" (asterisk prefix)\n *\n * @param content - Raw content of SHA256SUMS.txt\n * @returns Map of filename to lowercase hash\n */\nexport function parseSha256Sums(content: string): Map<string, string> {\n\tconst checksums = new Map<string, string>()\n\tfor (const line of content.split(\"\\n\")) {\n\t\tconst match = line.match(/^([a-fA-F0-9]{64})\\s+\\*?(.+)$/)\n\t\tif (match?.[1] && match[2]) {\n\t\t\tchecksums.set(match[2].trim(), match[1].toLowerCase())\n\t\t}\n\t}\n\treturn checksums\n}\n\n// =============================================================================\n// HASHING\n// =============================================================================\n\n/**\n * Hash content using SHA256.\n *\n * @param content - Buffer or string to hash\n * @returns Lowercase hex-encoded SHA256 hash\n */\nexport function hashContent(content: Buffer | string): string {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\n// =============================================================================\n// CHECKSUM FETCHING\n// =============================================================================\n\n/**\n * Download and parse SHA256SUMS.txt for a version.\n *\n * @param version - Version string (without 'v' prefix)\n * @returns Map of filename to expected hash\n * @throws SelfUpdateError if checksums cannot be fetched\n */\nexport async function fetchChecksums(version: string): Promise<Map<string, string>> {\n\tconst url = `https://github.com/${GITHUB_REPO}/releases/download/v${version}/SHA256SUMS.txt`\n\tconst response = await fetch(url)\n\tif (!response.ok) {\n\t\tthrow new SelfUpdateError(`Failed to fetch checksums: ${response.status}`)\n\t}\n\tconst content = await response.text()\n\treturn parseSha256Sums(content)\n}\n\n// =============================================================================\n// VERIFICATION\n// =============================================================================\n\n/**\n * Verify a downloaded file against expected checksum.\n *\n * @param filePath - Path to file to verify\n * @param expectedHash - Expected SHA256 hash (lowercase hex)\n * @param filename - Display name for error messages\n * @throws IntegrityError if checksum does not match\n */\nexport async function verifyChecksum(\n\tfilePath: string,\n\texpectedHash: string,\n\tfilename: string,\n): Promise<void> {\n\tconst file = Bun.file(filePath)\n\tconst content = await file.arrayBuffer()\n\tconst actualHash = hashContent(Buffer.from(content))\n\n\tif (actualHash !== expectedHash) {\n\t\tthrow new IntegrityError(filename, expectedHash, actualHash)\n\t}\n}\n",
|
|
120
123
|
"/**\n * Self Update Command\n *\n * Updates OCX to the latest version using the appropriate method:\n * - curl: Download binary directly and replace\n * - npm: Run `npm install -g ocx@version`\n * - pnpm: Run `pnpm install -g ocx@version`\n * - bun: Run `bun install -g ocx@version`\n *\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Return early if already up to date (unless --force)\n * - Parse Don't Validate: Version check returns typed VersionCheckResult\n * - Atomic Predictability: Each install method is a focused switch case\n * - Fail Fast: Throw SelfUpdateError on any failure\n * - Intentional Naming: updateCommand, notifyUpdated, detectInstallMethod\n */\n\nimport type { Command } from \"commander\"\nimport {\n\ttype CheckFailure,\n\tcheckForUpdate,\n\tEXPLICIT_UPDATE_TIMEOUT_MS,\n} from \"../../self-update/check\"\nimport {\n\tdetectInstallMethod,\n\ttype InstallMethod,\n\tparseInstallMethod,\n} from \"../../self-update/detect-method\"\nimport {\n\tatomicReplace,\n\tcleanupTempFile,\n\tdownloadToTemp,\n\tgetDownloadUrl,\n} from \"../../self-update/download\"\nimport { notifyUpdated, notifyUpToDate } from \"../../self-update/notify\"\nimport { fetchChecksums, verifyChecksum } from \"../../self-update/verify\"\nimport { SelfUpdateError } from \"../../utils/errors\"\nimport { wrapAction } from \"../../utils/handle-error\"\nimport { createSpinner } from \"../../utils/spinner\"\n\n// =============================================================================\n// CONSTANTS\n// =============================================================================\n\n/** Semver pattern to validate version format before package manager invocation */\nconst SEMVER_PATTERN = /^\\d+\\.\\d+\\.\\d+(-[\\w.]+)?$/\n\n/** Error messages for each failure reason (Law 5: Intentional Naming) */\nconst UPDATE_ERROR_MESSAGES: Record<CheckFailure[\"reason\"], string> = {\n\t\"dev-version\":\n\t\t\"Cannot check for updates in development mode. Install via npm for update support.\",\n\ttimeout: \"Update check timed out after 10s. Try again or check your network.\",\n\t\"network-error\": \"Cannot reach npm registry. Verify your internet connection.\",\n\t\"invalid-response\": \"Received invalid response from npm registry. Try again later.\",\n}\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\ninterface UpdateOptions {\n\tforce?: boolean\n\tmethod?: string\n}\n\n// =============================================================================\n// COMMAND IMPLEMENTATION\n// =============================================================================\n\n/**\n * Execute the self-update command.\n *\n * @param options - Command options (--force, --method)\n */\nasync function updateCommand(options: UpdateOptions): Promise<void> {\n\tconst method = options.method ? parseInstallMethod(options.method) : detectInstallMethod()\n\n\t// Check current version with explicit timeout (user is willing to wait)\n\tconst result = await checkForUpdate(undefined, EXPLICIT_UPDATE_TIMEOUT_MS)\n\n\t// Law 1: Early exit for failure\n\tif (!result.ok) {\n\t\tthrow new SelfUpdateError(UPDATE_ERROR_MESSAGES[result.reason])\n\t}\n\n\t// Law 2: After guard, result is typed as success\n\tconst { current, latest, updateAvailable } = result\n\n\t// Early exit: already up to date (unless forced)\n\tif (!updateAvailable && !options.force) {\n\t\tnotifyUpToDate(current)\n\t\treturn\n\t}\n\n\tconst targetVersion = latest\n\n\tswitch (method) {\n\t\tcase \"curl\": {\n\t\t\tawait updateViaCurl(current, targetVersion)\n\t\t\tbreak\n\t\t}\n\n\t\tcase \"npm\":\n\t\tcase \"pnpm\":\n\t\tcase \"bun\":\n\t\tcase \"yarn\":\n\t\tcase \"unknown\": {\n\t\t\tawait updateViaPackageManager(method, current, targetVersion)\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// =============================================================================\n// UPDATE STRATEGIES\n// =============================================================================\n\n/**\n * Update via direct binary download (curl install method).\n *\n * SECURITY: Verifies checksum BEFORE replacing the binary.\n * Flow: Download -> Verify -> Swap (atomic)\n */\nasync function updateViaCurl(current: string, targetVersion: string): Promise<void> {\n\t// Get platform target name for checksum lookup\n\tconst url = getDownloadUrl(targetVersion)\n\tconst filename = url.split(\"/\").pop()\n\n\t// Early exit: invalid URL (shouldn't happen, but guard)\n\tif (!filename) {\n\t\tthrow new SelfUpdateError(\"Failed to determine binary filename from download URL\")\n\t}\n\n\t// Fetch checksums for verification\n\tconst checksums = await fetchChecksums(targetVersion)\n\n\t// SECURITY: Fail loudly if no checksum available\n\tconst expectedHash = checksums.get(filename)\n\tif (!expectedHash) {\n\t\tthrow new SelfUpdateError(`Security error: No checksum found for ${filename}. Update aborted.`)\n\t}\n\n\t// Download to temp file (does NOT replace binary yet)\n\tconst { tempPath, execPath } = await downloadToTemp(targetVersion)\n\n\t// SECURITY: Verify checksum BEFORE replacing the binary\n\ttry {\n\t\tawait verifyChecksum(tempPath, expectedHash, filename)\n\t} catch (error) {\n\t\t// Checksum failed - clean up temp file and abort\n\t\tcleanupTempFile(tempPath)\n\t\tthrow error\n\t}\n\n\t// Checksum verified - now safe to atomically swap\n\tatomicReplace(tempPath, execPath)\n\n\tnotifyUpdated(current, targetVersion)\n}\n\n/**\n * Run a package manager command using Bun.spawn.\n * Throws SelfUpdateError on failure.\n */\nasync function runPackageManager(cmd: string[]): Promise<void> {\n\tconst proc = Bun.spawn(cmd, { stdout: \"pipe\", stderr: \"pipe\" })\n\tconst exitCode = await proc.exited\n\tif (exitCode !== 0) {\n\t\tconst stderr = await new Response(proc.stderr).text()\n\t\tthrow new SelfUpdateError(`Package manager command failed: ${stderr.trim()}`)\n\t}\n}\n\n/**\n * Update via package manager.\n * Shells out to the package manager's global install command.\n *\n * SECURITY: Validates version format before invoking package manager.\n */\nasync function updateViaPackageManager(\n\tmethod: Exclude<InstallMethod, \"curl\">,\n\tcurrent: string,\n\ttargetVersion: string,\n): Promise<void> {\n\t// SECURITY: Validate version format to prevent command injection\n\tif (!SEMVER_PATTERN.test(targetVersion)) {\n\t\tthrow new SelfUpdateError(`Invalid version format: ${targetVersion}`)\n\t}\n\n\tconst spin = createSpinner({ text: `Updating via ${method}...` })\n\tspin.start()\n\n\ttry {\n\t\tswitch (method) {\n\t\t\tcase \"npm\": {\n\t\t\t\tawait runPackageManager([\"npm\", \"install\", \"-g\", `ocx@${targetVersion}`])\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase \"yarn\": {\n\t\t\t\tawait runPackageManager([\"yarn\", \"global\", \"add\", `ocx@${targetVersion}`])\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase \"pnpm\": {\n\t\t\t\tawait runPackageManager([\"pnpm\", \"install\", \"-g\", `ocx@${targetVersion}`])\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase \"bun\": {\n\t\t\t\tawait runPackageManager([\"bun\", \"install\", \"-g\", `ocx@${targetVersion}`])\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase \"unknown\": {\n\t\t\t\tthrow new SelfUpdateError(\n\t\t\t\t\t\"Could not detect install method. Update manually with one of:\\n\" +\n\t\t\t\t\t\t\" npm install -g ocx@latest\\n\" +\n\t\t\t\t\t\t\" pnpm install -g ocx@latest\\n\" +\n\t\t\t\t\t\t\" bun install -g ocx@latest\",\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tspin.succeed(`Updated via ${method}`)\n\t\tnotifyUpdated(current, targetVersion)\n\t} catch (error) {\n\t\t// Re-throw SelfUpdateError as-is\n\t\tif (error instanceof SelfUpdateError) {\n\t\t\tspin.fail(`Update failed`)\n\t\t\tthrow error\n\t\t}\n\n\t\tspin.fail(`Update failed`)\n\t\tthrow new SelfUpdateError(\n\t\t\t`Failed to run ${method}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\n/**\n * Register the self update command.\n *\n * @param parent - Parent command (self)\n */\nexport function registerSelfUpdateCommand(parent: Command): void {\n\tparent\n\t\t.command(\"update\")\n\t\t.description(\"Update OCX to the latest version\")\n\t\t.option(\"-f, --force\", \"Reinstall even if already up to date\")\n\t\t.option(\"-m, --method <method>\", \"Override install method detection (curl|npm|pnpm|bun)\")\n\t\t.action(\n\t\t\twrapAction(async (options: UpdateOptions) => {\n\t\t\t\tawait updateCommand(options)\n\t\t\t}),\n\t\t)\n}\n",
|
|
121
|
-
"/**\n * Self Command Group\n *\n * Parent command for OCX CLI self-management operations.\n * Provides commands for updating and managing the CLI itself.\n */\n\nimport type { Command } from \"commander\"\nimport { registerSelfUpdateCommand } from \"./update\"\n\nexport function registerSelfCommand(program: Command): void {\n\tconst self = program.command(\"self\").description(\"Manage the OCX CLI\")\n\n\t// Register subcommands\n\tregisterSelfUpdateCommand(self)\n}\n",
|
|
124
|
+
"/**\n * Self Command Group\n *\n * Parent command for OCX CLI self-management operations.\n * Provides commands for updating and managing the CLI itself.\n */\n\nimport type { Command } from \"commander\"\nimport { registerSelfUninstallCommand } from \"./uninstall\"\nimport { registerSelfUpdateCommand } from \"./update\"\n\nexport function registerSelfCommand(program: Command): void {\n\tconst self = program.command(\"self\").description(\"Manage the OCX CLI\")\n\n\t// Register subcommands\n\tregisterSelfUninstallCommand(self)\n\tregisterSelfUpdateCommand(self)\n}\n",
|
|
122
125
|
"/**\n * OCX CLI - update command\n * Update installed components from registries\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\n\nimport type { Command } from \"commander\"\nimport { type ConfigProvider, LocalConfigProvider } from \"../config/provider\"\nimport { fetchComponentVersion, fetchFileContent } from \"../registry/fetcher\"\nimport { findOcxLock, type OcxLock, readOcxLock, writeOcxLock } from \"../schemas/config\"\nimport {\n\ttype ComponentFileObject,\n\tnormalizeComponentManifest,\n\tparseQualifiedComponent,\n} from \"../schemas/registry\"\nimport { ConfigError, NotFoundError, ValidationError } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UpdateOptions {\n\tall?: boolean\n\tregistry?: string\n\tdryRun?: boolean\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n}\n\ninterface ComponentSpec {\n\tcomponent: string\n\tversion?: string\n}\n\ninterface UpdateResult {\n\tqualifiedName: string\n\toldVersion: string\n\tnewVersion: string\n\tstatus: \"updated\" | \"up-to-date\" | \"would-update\"\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\nexport function registerUpdateCommand(program: Command): void {\n\tprogram\n\t\t.command(\"update [components...]\")\n\t\t.description(\n\t\t\t\"Update installed components (use @version suffix to pin, e.g., kdco/agents@1.2.0)\",\n\t\t)\n\t\t.option(\"--all\", \"Update all installed components\")\n\t\t.option(\"--registry <name>\", \"Update all components from a specific registry\")\n\t\t.option(\"--dry-run\", \"Preview changes without applying\")\n\t\t.option(\"--cwd <path>\", \"Working directory\", process.cwd())\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"-v, --verbose\", \"Verbose output\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (components: string[], options: UpdateOptions) => {\n\t\t\ttry {\n\t\t\t\tawait runUpdate(components, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\n// =============================================================================\n// MAIN UPDATE LOGIC\n// =============================================================================\n\nasync function runUpdate(componentNames: string[], options: UpdateOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\tconst provider = await LocalConfigProvider.requireInitialized(cwd)\n\tawait runUpdateCore(componentNames, options, provider)\n}\n\n/**\n * Core update logic shared between local and profile modes.\n * Accepts a ConfigProvider to abstract config source.\n */\nexport async function runUpdateCore(\n\tcomponentNames: string[],\n\toptions: UpdateOptions,\n\tprovider: ConfigProvider,\n): Promise<void> {\n\tconst { path: lockPath } = findOcxLock(provider.cwd)\n\tconst registries = provider.getRegistries()\n\n\t// -------------------------------------------------------------------------\n\t// Guard clauses (Law 1: Early Exit)\n\t// -------------------------------------------------------------------------\n\n\t// Guard: No lock file (nothing installed yet)\n\tconst lock = await readOcxLock(provider.cwd)\n\tif (!lock || Object.keys(lock.installed).length === 0) {\n\t\tthrow new ValidationError(\"Nothing installed yet. Run 'ocx add <component>' first.\")\n\t}\n\n\t// Guard: No args and no flags\n\tconst hasComponents = componentNames.length > 0\n\tconst hasAll = options.all === true\n\tconst hasRegistry = options.registry !== undefined\n\tif (!hasComponents && !hasAll && !hasRegistry) {\n\t\tthrow new ValidationError(\n\t\t\t\"Specify components, use --all, or use --registry <name>.\\n\\n\" +\n\t\t\t\t\"Examples:\\n\" +\n\t\t\t\t\" ocx update kdco/agents # Update specific component\\n\" +\n\t\t\t\t\" ocx update --all # Update all installed components\\n\" +\n\t\t\t\t\" ocx update --registry kdco # Update all from a registry\",\n\t\t)\n\t}\n\n\t// Guard: --all with components\n\tif (hasAll && hasComponents) {\n\t\tthrow new ValidationError(\n\t\t\t\"Cannot specify components with --all.\\n\" +\n\t\t\t\t\"Use either 'ocx update --all' or 'ocx update <components>'.\",\n\t\t)\n\t}\n\n\t// Guard: --registry with components\n\tif (hasRegistry && hasComponents) {\n\t\tthrow new ValidationError(\n\t\t\t\"Cannot specify components with --registry.\\n\" +\n\t\t\t\t\"Use either 'ocx update --registry <name>' or 'ocx update <components>'.\",\n\t\t)\n\t}\n\n\t// Guard: --all with --registry\n\tif (hasAll && hasRegistry) {\n\t\tthrow new ValidationError(\n\t\t\t\"Cannot use --all with --registry.\\n\" +\n\t\t\t\t\"Use either 'ocx update --all' or 'ocx update --registry <name>'.\",\n\t\t)\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Parse component specs and validate versions\n\t// -------------------------------------------------------------------------\n\n\tconst parsedComponents = componentNames.map(parseComponentSpec)\n\n\t// Guard: Invalid version specifier (e.g., kdco/agents@ or kdco/agents@@1.2.0)\n\tfor (const spec of parsedComponents) {\n\t\tif (spec.version !== undefined && spec.version === \"\") {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid version specifier in '${spec.component}@'.` +\n\t\t\t\t\t\"\\nVersion cannot be empty. Use 'kdco/agents@1.2.0' or omit the version for latest.\",\n\t\t\t)\n\t\t}\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Determine which components to update\n\t// -------------------------------------------------------------------------\n\n\tconst componentsToUpdate = resolveComponentsToUpdate(lock, parsedComponents, options)\n\n\t// Guard: No matching components\n\tif (componentsToUpdate.length === 0) {\n\t\tif (hasRegistry) {\n\t\t\tthrow new NotFoundError(`No installed components from registry '${options.registry}'.`)\n\t\t}\n\t\tthrow new NotFoundError(\"No matching components found to update.\")\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Fetch and compare\n\t// -------------------------------------------------------------------------\n\n\tconst spin = options.quiet ? null : createSpinner({ text: \"Checking for updates...\" })\n\tspin?.start()\n\n\tconst results: UpdateResult[] = []\n\tconst updates: {\n\t\tqualifiedName: string\n\t\tcomponent: ReturnType<typeof normalizeComponentManifest>\n\t\tfiles: { path: string; content: Buffer }[]\n\t\tnewHash: string\n\t\tnewVersion: string\n\t\tbaseUrl: string\n\t}[] = []\n\n\ttry {\n\t\tfor (const spec of componentsToUpdate) {\n\t\t\tconst qualifiedName = spec.component\n\t\t\tconst lockEntry = lock.installed[qualifiedName]\n\t\t\t// Guard: component must exist in lock (already validated in resolveComponentsToUpdate)\n\t\t\tif (!lockEntry) {\n\t\t\t\tthrow new NotFoundError(`Component '${qualifiedName}' not found in lock file.`)\n\t\t\t}\n\n\t\t\tconst { namespace, component: componentName } = parseQualifiedComponent(qualifiedName)\n\n\t\t\t// Get registry config\n\t\t\tconst regConfig = registries[namespace]\n\t\t\tif (!regConfig) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`Registry '${namespace}' not configured. Component '${qualifiedName}' cannot be updated.`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// Fetch component (specific version or latest)\n\t\t\tconst fetchResult = await fetchComponentVersion(regConfig.url, componentName, spec.version)\n\t\t\tconst manifest = fetchResult.manifest\n\t\t\tconst version = fetchResult.version\n\n\t\t\tconst normalizedManifest = normalizeComponentManifest(manifest)\n\n\t\t\t// Fetch all files and compute hash\n\t\t\tconst files: { path: string; content: Buffer }[] = []\n\t\t\tfor (const file of normalizedManifest.files) {\n\t\t\t\tconst content = await fetchFileContent(regConfig.url, componentName, file.path)\n\t\t\t\tfiles.push({ path: file.path, content: Buffer.from(content) })\n\t\t\t}\n\n\t\t\tconst newHash = await hashBundle(files)\n\n\t\t\t// Compare hashes\n\t\t\tif (newHash === lockEntry.hash) {\n\t\t\t\tresults.push({\n\t\t\t\t\tqualifiedName,\n\t\t\t\t\toldVersion: lockEntry.version,\n\t\t\t\t\tnewVersion: version,\n\t\t\t\t\tstatus: \"up-to-date\",\n\t\t\t\t})\n\t\t\t} else if (options.dryRun) {\n\t\t\t\tresults.push({\n\t\t\t\t\tqualifiedName,\n\t\t\t\t\toldVersion: lockEntry.version,\n\t\t\t\t\tnewVersion: version,\n\t\t\t\t\tstatus: \"would-update\",\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tresults.push({\n\t\t\t\t\tqualifiedName,\n\t\t\t\t\toldVersion: lockEntry.version,\n\t\t\t\t\tnewVersion: version,\n\t\t\t\t\tstatus: \"updated\",\n\t\t\t\t})\n\t\t\t\tupdates.push({\n\t\t\t\t\tqualifiedName,\n\t\t\t\t\tcomponent: normalizedManifest,\n\t\t\t\t\tfiles,\n\t\t\t\t\tnewHash,\n\t\t\t\t\tnewVersion: version,\n\t\t\t\t\tbaseUrl: regConfig.url,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tspin?.succeed(`Checked ${componentsToUpdate.length} component(s)`)\n\n\t\t// -------------------------------------------------------------------------\n\t\t// Dry-run output\n\t\t// -------------------------------------------------------------------------\n\n\t\tif (options.dryRun) {\n\t\t\toutputDryRun(results, options)\n\t\t\treturn\n\t\t}\n\n\t\t// -------------------------------------------------------------------------\n\t\t// Apply updates\n\t\t// -------------------------------------------------------------------------\n\n\t\tif (updates.length === 0) {\n\t\t\tif (!options.quiet && !options.json) {\n\t\t\t\tlogger.info(\"\")\n\t\t\t\tlogger.success(\"All components are up to date.\")\n\t\t\t}\n\t\t\tif (options.json) {\n\t\t\t\tconsole.log(JSON.stringify({ success: true, updated: [], upToDate: results }, null, 2))\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst installSpin = options.quiet ? null : createSpinner({ text: \"Updating components...\" })\n\t\tinstallSpin?.start()\n\n\t\tfor (const update of updates) {\n\t\t\t// Write files\n\t\t\tfor (const file of update.files) {\n\t\t\t\tconst fileObj = update.component.files.find(\n\t\t\t\t\t(f: ComponentFileObject) => f.path === file.path,\n\t\t\t\t)\n\t\t\t\tif (!fileObj) continue\n\n\t\t\t\tconst targetPath = join(provider.cwd, fileObj.target)\n\t\t\t\tconst targetDir = dirname(targetPath)\n\n\t\t\t\tif (!existsSync(targetDir)) {\n\t\t\t\t\tawait mkdir(targetDir, { recursive: true })\n\t\t\t\t}\n\n\t\t\t\tawait writeFile(targetPath, file.content)\n\n\t\t\t\tif (options.verbose) {\n\t\t\t\t\tlogger.info(` ✓ Updated ${fileObj.target}`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update lock entry - we know it exists because we validated in resolveComponentsToUpdate\n\t\t\tconst existingEntry = lock.installed[update.qualifiedName]\n\t\t\tif (!existingEntry) {\n\t\t\t\tthrow new NotFoundError(`Component '${update.qualifiedName}' not found in lock file.`)\n\t\t\t}\n\t\t\tlock.installed[update.qualifiedName] = {\n\t\t\t\tregistry: existingEntry.registry,\n\t\t\t\tversion: update.newVersion,\n\t\t\t\thash: update.newHash,\n\t\t\t\tfiles: existingEntry.files,\n\t\t\t\tinstalledAt: existingEntry.installedAt,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t}\n\t\t}\n\n\t\tinstallSpin?.succeed(`Updated ${updates.length} component(s)`)\n\n\t\t// Save lock file\n\t\tawait writeOcxLock(provider.cwd, lock, lockPath)\n\n\t\t// -------------------------------------------------------------------------\n\t\t// Output results\n\t\t// -------------------------------------------------------------------------\n\n\t\tif (options.json) {\n\t\t\tconsole.log(\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tupdated: results.filter((r) => r.status === \"updated\"),\n\t\t\t\t\t\tupToDate: results.filter((r) => r.status === \"up-to-date\"),\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2,\n\t\t\t\t),\n\t\t\t)\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tfor (const result of results) {\n\t\t\t\tif (result.status === \"updated\") {\n\t\t\t\t\tlogger.info(` ✓ ${result.qualifiedName} (${result.oldVersion} → ${result.newVersion})`)\n\t\t\t\t} else if (result.status === \"up-to-date\" && options.verbose) {\n\t\t\t\t\tlogger.info(` ○ ${result.qualifiedName} (already up to date)`)\n\t\t\t\t}\n\t\t\t}\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.success(`Done! Updated ${updates.length} component(s).`)\n\t\t}\n\t} catch (error) {\n\t\tspin?.fail(\"Failed to check for updates\")\n\t\tthrow error\n\t}\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Parse a component specifier into component name and optional version.\n * Uses lastIndexOf to handle edge cases like kdco@agents@1.2.0.\n * Law 2: Parse at boundary, trust internally.\n *\n * @example\n * parseComponentSpec(\"kdco/agents@1.2.0\") // { component: \"kdco/agents\", version: \"1.2.0\" }\n * parseComponentSpec(\"kdco/agents\") // { component: \"kdco/agents\" }\n */\nfunction parseComponentSpec(spec: string): ComponentSpec {\n\tconst atIndex = spec.lastIndexOf(\"@\")\n\t// @ at start or not found means no version\n\tif (atIndex <= 0) {\n\t\treturn { component: spec }\n\t}\n\treturn {\n\t\tcomponent: spec.slice(0, atIndex),\n\t\tversion: spec.slice(atIndex + 1),\n\t}\n}\n\n/**\n * Resolve which components to update based on args and flags.\n * Law 4: Fail fast if component not found in lock.\n */\nfunction resolveComponentsToUpdate(\n\tlock: OcxLock,\n\tparsedComponents: ComponentSpec[],\n\toptions: UpdateOptions,\n): ComponentSpec[] {\n\tconst installedComponents = Object.keys(lock.installed)\n\n\t// --all: update all installed components (no version override)\n\tif (options.all) {\n\t\treturn installedComponents.map((c) => ({ component: c }))\n\t}\n\n\t// --registry: filter by registry namespace (no version override)\n\tif (options.registry) {\n\t\treturn installedComponents\n\t\t\t.filter((name) => {\n\t\t\t\tconst entry = lock.installed[name]\n\t\t\t\treturn entry?.registry === options.registry\n\t\t\t})\n\t\t\t.map((c) => ({ component: c }))\n\t}\n\n\t// Specific components: validate they exist\n\tconst result: ComponentSpec[] = []\n\tfor (const spec of parsedComponents) {\n\t\tconst name = spec.component\n\t\t// Validate format (must be qualified)\n\t\tif (!name.includes(\"/\")) {\n\t\t\tconst suggestions = installedComponents.filter((installed) => installed.endsWith(`/${name}`))\n\t\t\tif (suggestions.length === 1) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Ambiguous component '${name}'. Did you mean '${suggestions[0]}'?`,\n\t\t\t\t)\n\t\t\t}\n\t\t\tif (suggestions.length > 1) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Ambiguous component '${name}'. Found in multiple registries:\\n` +\n\t\t\t\t\t\tsuggestions.map((s) => ` - ${s}`).join(\"\\n\") +\n\t\t\t\t\t\t\"\\n\\nPlease use a fully qualified name (registry/component).\",\n\t\t\t\t)\n\t\t\t}\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Component '${name}' must include a registry prefix (e.g., 'kdco/${name}').`,\n\t\t\t)\n\t\t}\n\n\t\t// Check if installed\n\t\tif (!lock.installed[name]) {\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Component '${name}' is not installed.\\nRun 'ocx add ${name}' to install it first.`,\n\t\t\t)\n\t\t}\n\n\t\tresult.push(spec)\n\t}\n\n\treturn result\n}\n\n/**\n * Output dry-run results.\n */\nfunction outputDryRun(results: UpdateResult[], options: UpdateOptions): void {\n\tconst wouldUpdate = results.filter((r) => r.status === \"would-update\")\n\tconst upToDate = results.filter((r) => r.status === \"up-to-date\")\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify({ dryRun: true, wouldUpdate, upToDate }, null, 2))\n\t\treturn\n\t}\n\n\tif (!options.quiet) {\n\t\tlogger.info(\"\")\n\n\t\tif (wouldUpdate.length > 0) {\n\t\t\tlogger.info(\"Would update:\")\n\t\t\tfor (const result of wouldUpdate) {\n\t\t\t\tlogger.info(` ${result.qualifiedName} (${result.oldVersion} → ${result.newVersion})`)\n\t\t\t}\n\t\t}\n\n\t\tif (upToDate.length > 0 && options.verbose) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Already up to date:\")\n\t\t\tfor (const result of upToDate) {\n\t\t\t\tlogger.info(` ${result.qualifiedName}`)\n\t\t\t}\n\t\t}\n\n\t\tif (wouldUpdate.length > 0) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.info(\"Run without --dry-run to apply changes.\")\n\t\t} else {\n\t\t\tlogger.info(\"All components are up to date.\")\n\t\t}\n\t}\n}\n\n/**\n * Compute SHA-256 hash of file content.\n */\nasync function hashContent(content: string | Buffer): Promise<string> {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\n/**\n * Compute deterministic hash for a bundle of files.\n * Files are sorted by path for consistent hashing.\n */\nasync function hashBundle(files: { path: string; content: Buffer }[]): Promise<string> {\n\tconst sorted = [...files].sort((a, b) => a.path.localeCompare(b.path))\n\n\tconst manifestParts: string[] = []\n\tfor (const file of sorted) {\n\t\tconst hash = await hashContent(file.content)\n\t\tmanifestParts.push(`${file.path}:${hash}`)\n\t}\n\n\treturn hashContent(manifestParts.join(\"\\n\"))\n}\n",
|
|
123
|
-
"/**\n * Self-Update Hook Integration\n *\n * Registers a post-action hook to check for updates after CLI commands.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Multiple guard clauses for skip conditions\n * - Parse Don't Validate: Uses typed VersionCheckResult from check module\n * - Atomic Predictability: Pure shouldCheckForUpdate function\n * - Fail Fast: Silent failure on any error (non-blocking UX)\n * - Intentional Naming: Self-documenting function names\n */\n\nimport type { Command } from \"commander\"\nimport { parseEnvBool } from \"../utils/env\"\nimport { checkForUpdate } from \"./check\"\nimport { notifyUpdate } from \"./notify\"\n\n// =============================================================================\n// UPDATE CHECK CONDITIONS\n// =============================================================================\n\n/**\n * Check environment conditions for running update check.\n * Returns false if any condition indicates we should skip.\n */\nfunction shouldCheckForUpdate(): boolean {\n\t// Skip if explicitly disabled via env\n\tif (process.env.OCX_SELF_UPDATE === \"off\") return false\n\tif (parseEnvBool(process.env.OCX_NO_UPDATE_CHECK, false)) return false\n\n\t// Skip in CI environments\n\tif (process.env.CI) return false\n\n\t// Skip if not a TTY (can't display notification anyway)\n\tif (!process.stdout.isTTY) return false\n\n\treturn true\n}\n\n// =============================================================================\n// HOOK REGISTRATION\n// =============================================================================\n\n/**\n * Register post-action hook for update checks.\n * Call this on the root program to check after every command.\n *\n * The hook runs after each command completes and silently checks for updates.\n * If a newer version is available, it displays a notification to stderr.\n *\n * @param program - The root Commander program instance\n */\nexport function registerUpdateCheckHook(program: Command): void {\n\tprogram.hook(\"postAction\", async (
|
|
126
|
+
"/**\n * Self-Update Hook Integration\n *\n * Registers a post-action hook to check for updates after CLI commands.\n * Follows the 5 Laws of Elegant Defense:\n * - Early Exit: Multiple guard clauses for skip conditions\n * - Parse Don't Validate: Uses typed VersionCheckResult from check module\n * - Atomic Predictability: Pure shouldCheckForUpdate function\n * - Fail Fast: Silent failure on any error (non-blocking UX)\n * - Intentional Naming: Self-documenting function names\n */\n\nimport type { Command } from \"commander\"\nimport { parseEnvBool } from \"../utils/env\"\nimport { checkForUpdate } from \"./check\"\nimport { notifyUpdate } from \"./notify\"\n\n// =============================================================================\n// UPDATE CHECK CONDITIONS\n// =============================================================================\n\n/**\n * Check environment conditions for running update check.\n * Returns false if any condition indicates we should skip.\n */\nfunction shouldCheckForUpdate(): boolean {\n\t// Skip if explicitly disabled via env\n\tif (process.env.OCX_SELF_UPDATE === \"off\") return false\n\tif (parseEnvBool(process.env.OCX_NO_UPDATE_CHECK, false)) return false\n\n\t// Skip in CI environments\n\tif (process.env.CI) return false\n\n\t// Skip if not a TTY (can't display notification anyway)\n\tif (!process.stdout.isTTY) return false\n\n\treturn true\n}\n\n// =============================================================================\n// HOOK REGISTRATION\n// =============================================================================\n\n/**\n * Register post-action hook for update checks.\n * Call this on the root program to check after every command.\n *\n * The hook runs after each command completes and silently checks for updates.\n * If a newer version is available, it displays a notification to stderr.\n *\n * @param program - The root Commander program instance\n */\nexport function registerUpdateCheckHook(program: Command): void {\n\tprogram.hook(\"postAction\", async (_thisCommand, actionCommand) => {\n\t\t// Skip if running self update command itself\n\t\tif (actionCommand.name() === \"update\" && actionCommand.parent?.name() === \"self\") {\n\t\t\treturn\n\t\t}\n\n\t\t// Check environment conditions\n\t\tif (!shouldCheckForUpdate()) return\n\n\t\t// Non-blocking check with silent failure\n\t\ttry {\n\t\t\tconst result = await checkForUpdate()\n\t\t\tif (result.ok && result.updateAvailable) {\n\t\t\t\tnotifyUpdate(result.current, result.latest)\n\t\t\t}\n\t\t} catch {\n\t\t\t// Silent failure - never interrupt user workflow\n\t\t}\n\t})\n}\n\n// =============================================================================\n// RE-EXPORTS\n// =============================================================================\n\nexport type { CheckFailure, CheckResult, VersionCheckResult, VersionProvider } from \"./check\"\nexport { checkForUpdate, EXPLICIT_UPDATE_TIMEOUT_MS } from \"./check\"\nexport { getDownloadBaseUrl, getDownloadUrl } from \"./download\"\nexport { notifyUpdate, notifyUpdated, notifyUpToDate } from \"./notify\"\nexport type { VersionProvider as IVersionProvider } from \"./types\"\nexport { BuildTimeVersionProvider, defaultVersionProvider } from \"./version-provider\"\n",
|
|
124
127
|
"#!/usr/bin/env bun\n/**\n * OCX CLI - OpenCode Extensions\n *\n * A ShadCN-style CLI for installing agents, skills, plugins, and commands\n * into OpenCode projects.\n */\n\nimport { Command } from \"commander\"\nimport { registerAddCommand } from \"./commands/add\"\nimport { registerBuildCommand } from \"./commands/build\"\nimport { registerConfigCommand } from \"./commands/config/index\"\nimport { registerDiffCommand } from \"./commands/diff\"\nimport { registerGhostCommand } from \"./commands/ghost/index\"\nimport { registerInitCommand } from \"./commands/init\"\nimport { registerOpencodeCommand } from \"./commands/opencode\"\nimport { registerProfileCommand } from \"./commands/profile/index\"\nimport { registerRegistryCommand } from \"./commands/registry\"\nimport { registerSearchCommand } from \"./commands/search\"\nimport { registerSelfCommand } from \"./commands/self/index\"\nimport { registerUpdateCommand } from \"./commands/update\"\nimport { registerUpdateCheckHook } from \"./self-update/index\"\nimport { handleError } from \"./utils/index\"\n\n// Version injected at build time\ndeclare const __VERSION__: string\nconst version = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\"\n\nasync function main() {\n\tconst program = new Command()\n\t\t.name(\"ocx\")\n\t\t.description(\"OpenCode Extensions - Install agents, skills, plugins, and commands\")\n\t\t.version(version)\n\n\t// Register all commands using the registration pattern\n\tregisterInitCommand(program)\n\tregisterAddCommand(program)\n\tregisterUpdateCommand(program)\n\tregisterDiffCommand(program)\n\tregisterSearchCommand(program)\n\tregisterRegistryCommand(program)\n\tregisterBuildCommand(program)\n\tregisterSelfCommand(program)\n\n\t// New top-level commands (Phase 5)\n\tregisterProfileCommand(program)\n\tregisterConfigCommand(program)\n\tregisterOpencodeCommand(program)\n\n\t// Migration command (temporary - remove in next minor version)\n\tregisterGhostCommand(program)\n\n\t// Register update check hook (runs after each command)\n\tregisterUpdateCheckHook(program)\n\n\t// Parse and handle errors\n\tawait program.parseAsync(process.argv)\n}\n\n// Only run CLI when executed directly, not when imported as a library\nif (import.meta.main) {\n\tmain().catch((err) => {\n\t\thandleError(err)\n\t})\n}\n\n// Library exports - for programmatic use\nexport { type BuildRegistryOptions, type BuildRegistryResult, buildRegistry } from \"./lib/index\"\n\n// Schema exports - for validation\nexport {\n\ttype ComponentManifest,\n\tcomponentManifestSchema,\n\ttype OcxConfig,\n\ttype OcxLock,\n\t// Config schemas\n\tocxConfigSchema,\n\tocxLockSchema,\n\ttype Packument,\n\tpackumentSchema,\n\ttype Registry,\n\t// Registry schemas\n\tregistrySchema,\n} from \"./schemas/index\"\n"
|
|
125
128
|
],
|
|
126
|
-
"mappings": "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AAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,cAAc,MAAM;AAA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AM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AAAA;AAGzB,SAAS,MAAM,CAAC,GAAG;AAAA,EAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACr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",
|
|
127
|
-
"debugId": "
|
|
129
|
+
"mappings": "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AAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,OAAO;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,cAAc,MAA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AAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAG;AAAA,EACvB,OAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AAAA;AAGzB,SAAS,MAAM,CAAC,GAAG;AAAA,EAClB,OAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,SACrB,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,M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",
|
|
130
|
+
"debugId": "C29AE4337E16008A64756E2164756E21",
|
|
128
131
|
"names": []
|
|
129
132
|
}
|