ocx 2.0.0 → 2.0.2
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 +1494 -172
- package/dist/index.js.map +18 -13
- 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/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", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/index.js", "../src/utils/url.ts", "../src/constants.ts", "../src/utils/errors.ts", "../src/utils/path-security.ts", "../src/schemas/registry.ts", "../src/utils/type-guards.ts", "../src/registry/fetcher.ts", "../../../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", "../src/config/provider.ts", "../src/utils/paths.ts", "../src/utils/component-root-resolution.ts", "../src/config/resolver.ts", "../src/profile/manager.ts", "../src/schemas/ocx.ts", "../src/schemas/common.ts", "../src/utils/path-helpers.ts", "../src/profile/atomic.ts", "../src/profile/paths.ts", "../src/profile/schema.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/utils/git-root.ts", "../src/utils/instruction-paths.ts", "../src/registry/resolver.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/content.ts", "../src/utils/dep-invalidation.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/env.ts", "../src/utils/logger.ts", "../src/utils/dry-run.ts", "../src/utils/index.ts", "../src/utils/git-context.ts", "../src/utils/handle-error.ts", "../src/lib/build-registry.ts", "../src/utils/json-output.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/utils/planned-writes.ts", "../src/utils/receipt.ts", "../src/commands/build.ts", "../src/commands/config/edit.ts", "../src/commands/config/show.ts", "../src/commands/config/index.ts", "../src/commands/init.ts", "../src/commands/migrate/index.ts", "../src/commands/migrate/transform.ts", "../src/utils/terminal-title.ts", "../src/commands/opencode.ts", "../src/commands/profile/add.ts", "../src/commands/profile/install-from-registry.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/remove.ts", "../src/utils/component-ref-resolver.ts", "../src/commands/search.ts", "../src/schemas/index.ts", "../src/commands/self/uninstall.ts", "../src/self-update/detect-method.ts", "../src/self-update/check.ts", "../src/self-update/version-provider.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/commands/verify.ts", "../src/self-update/index.ts", "../src/index.ts"],
|
|
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/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", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.bun/zod@3.25.76/node_modules/zod/index.js", "../src/utils/url.ts", "../src/constants.ts", "../src/utils/errors.ts", "../src/utils/path-security.ts", "../src/schemas/registry.ts", "../src/utils/type-guards.ts", "../src/registry/fetcher.ts", "../../../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", "../src/config/provider.ts", "../src/utils/paths.ts", "../src/utils/component-root-resolution.ts", "../src/config/resolver.ts", "../src/profile/manager.ts", "../src/schemas/ocx.ts", "../src/schemas/common.ts", "../src/utils/path-helpers.ts", "../src/profile/atomic.ts", "../src/profile/paths.ts", "../src/profile/schema.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/utils/git-root.ts", "../src/utils/instruction-paths.ts", "../src/registry/resolver.ts", "../src/updaters/update-opencode-config.ts", "../src/utils/content.ts", "../src/utils/dep-invalidation.ts", "../../../node_modules/.bun/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/utils/env.ts", "../src/utils/logger.ts", "../src/utils/dry-run.ts", "../src/utils/index.ts", "../src/utils/git-context.ts", "../src/utils/handle-error.ts", "../src/lib/build-registry.ts", "../src/utils/json-output.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/utils/planned-writes.ts", "../src/utils/receipt.ts", "../src/commands/build.ts", "../src/lib/validators.ts", "../src/lib/validation-runner.ts", "../src/utils/validation-errors.ts", "../src/commands/config/edit.ts", "../src/commands/config/show.ts", "../src/commands/config/index.ts", "../src/commands/init.ts", "../src/commands/migrate/index.ts", "../src/commands/migrate/transform.ts", "../src/commands/opencode.ts", "../src/utils/terminal-title.ts", "../src/commands/opencode-overlay.ts", "../src/commands/profile/add.ts", "../src/commands/profile/install-from-registry.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/remove.ts", "../src/utils/component-ref-resolver.ts", "../src/commands/search.ts", "../src/schemas/index.ts", "../src/commands/self/uninstall.ts", "../src/self-update/detect-method.ts", "../src/self-update/check.ts", "../src/self-update/version-provider.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/commands/validate.ts", "../src/commands/verify.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",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"import * as z from \"./v3/external.js\";\nexport * from \"./v3/external.js\";\nexport { z };\nexport default z;\n",
|
|
21
21
|
"/**\n * Normalize a registry URL by removing trailing slashes.\n * Ensures consistent URL comparison and prevents double-slash issues.\n */\nexport function normalizeRegistryUrl(url: string): string {\n\treturn url.trim().replace(/\\/+$/, \"\")\n}\n",
|
|
22
22
|
"/**\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`\nexport const REGISTRY_SCHEMA_UNVERSIONED_URL = `https://${OCX_DOMAIN}/schemas/registry.json`\nexport const REGISTRY_SCHEMA_LATEST_MAJOR = 2\n\nexport function getRegistrySchemaUrl(major: number): string {\n\treturn `https://${OCX_DOMAIN}/schemas/v${major}/registry.json`\n}\n\nexport const REGISTRY_SCHEMA_LATEST_URL = getRegistrySchemaUrl(REGISTRY_SCHEMA_LATEST_MAJOR)\n\n// CLI Version (single source of truth from package.json)\nexport const CLI_VERSION: string = pkg.version\n",
|
|
23
|
-
"/**\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\t| \"REGISTRY_COMPAT_ERROR\"\n\n/**\n * Exit codes for OCX CLI errors\n * @property {0} SUCCESS - Command completed successfully\n * @property {1} GENERAL - Unspecified error\n * @property {6} CONFLICT - Resource already exists\n * @property {65} INTEGRITY - Component hash mismatch (data format error)\n * @property {66} NOT_FOUND - Resource not found\n * @property {69} NETWORK - Network/connectivity error\n * @property {78} CONFIG - Configuration error\n */\nexport const EXIT_CODES = {\n\tSUCCESS: 0,\n\tGENERAL: 1,\n\tNOT_FOUND: 66,\n\tNETWORK: 69,\n\tCONFIG: 78,\n\tINTEGRITY: 65,\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\
|
|
23
|
+
"/**\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| \"VALIDATION_FAILED\"\n\t| \"CONFLICT\"\n\t| \"PERMISSION_ERROR\"\n\t| \"INTEGRITY_ERROR\"\n\t| \"UPDATE_ERROR\"\n\t| \"REGISTRY_COMPAT_ERROR\"\n\n/**\n * Exit codes for OCX CLI errors\n * @property {0} SUCCESS - Command completed successfully\n * @property {1} GENERAL - Unspecified error\n * @property {6} CONFLICT - Resource already exists\n * @property {65} INTEGRITY - Component hash mismatch (data format error)\n * @property {66} NOT_FOUND - Resource not found\n * @property {69} NETWORK - Network/connectivity error\n * @property {78} CONFIG - Configuration error\n */\nexport const EXIT_CODES = {\n\tSUCCESS: 0,\n\tGENERAL: 1,\n\tNOT_FOUND: 66,\n\tNETWORK: 69,\n\tCONFIG: 78,\n\tINTEGRITY: 65,\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 type RegistryNetworkContext = \"source\" | \"dependency\"\n\nexport interface NetworkErrorOptions {\n\turl?: string\n\tstatus?: number\n\tstatusText?: string\n\tphase?: string\n\tqualifiedName?: string\n\tregistryContext?: RegistryNetworkContext\n\tregistryName?: string\n}\n\nexport class NetworkError extends OCXError {\n\tpublic readonly url?: string\n\tpublic readonly status?: number\n\tpublic readonly statusText?: string\n\tpublic readonly phase?: string\n\tpublic readonly qualifiedName?: string\n\tpublic readonly registryContext?: RegistryNetworkContext\n\tpublic readonly registryName?: string\n\n\tconstructor(message: string, options?: NetworkErrorOptions) {\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\tthis.phase = options?.phase\n\t\tthis.qualifiedName = options?.qualifiedName\n\t\tthis.registryContext = options?.registryContext\n\t\tthis.registryName = options?.registryName\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 interface ValidationFailureDetails {\n\tvalid: false\n\terrors: string[]\n\tsummary: {\n\t\tvalid: false\n\t\ttotalErrors: number\n\t\tschemaErrors: number\n\t\tsourceFileErrors: number\n\t\tcircularDependencyErrors: number\n\t\tduplicateTargetErrors: number\n\t\totherErrors: number\n\t}\n}\n\nexport class ValidationFailedError extends OCXError {\n\tconstructor(public readonly details: ValidationFailureDetails) {\n\t\tsuper(\"Registry validation failed\", \"VALIDATION_FAILED\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"ValidationFailedError\"\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\n// =============================================================================\n// REGISTRY COMPATIBILITY ERRORS\n// =============================================================================\n\n/**\n * Issue types for registry format incompatibility.\n * - `legacy-schema-v1`: missing/unversioned schema URL (legacy v1)\n * - `invalid-schema-url`: malformed/non-canonical schema URL\n * - `unsupported-schema-version`: versioned schema URL with unsupported major\n * - `invalid-format`: payload shape is invalid for supported schema\n */\nexport type RegistryCompatIssue =\n\t| \"legacy-schema-v1\"\n\t| \"invalid-schema-url\"\n\t| \"unsupported-schema-version\"\n\t| \"invalid-format\"\n\n/**\n * Error for registry format/compatibility issues.\n * Thrown when a registry index cannot be parsed because it uses\n * an incompatible or legacy format.\n *\n * Includes structured details for JSON output: url, issue, and remediation.\n */\nexport class RegistryCompatibilityError extends OCXError {\n\tpublic readonly url: string\n\tpublic readonly issue: RegistryCompatIssue\n\tpublic readonly remediation: string\n\tpublic readonly schemaUrl?: string\n\tpublic readonly supportedMajor?: number\n\tpublic readonly detectedMajor?: number\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions: {\n\t\t\turl: string\n\t\t\tissue: RegistryCompatIssue\n\t\t\tremediation: string\n\t\t\tschemaUrl?: string\n\t\t\tsupportedMajor?: number\n\t\t\tdetectedMajor?: number\n\t\t},\n\t) {\n\t\tsuper(message, \"REGISTRY_COMPAT_ERROR\", EXIT_CODES.CONFIG)\n\t\tthis.name = \"RegistryCompatibilityError\"\n\t\tthis.url = options.url\n\t\tthis.issue = options.issue\n\t\tthis.remediation = options.remediation\n\t\tthis.schemaUrl = options.schemaUrl\n\t\tthis.supportedMajor = options.supportedMajor\n\t\tthis.detectedMajor = options.detectedMajor\n\t}\n}\n\n// =============================================================================\n// PROFILE ERRORS\n// =============================================================================\n\nexport class ProfileNotFoundError extends OCXError {\n\tconstructor(\n\t\tpublic readonly profile: string,\n\t\thint?: string,\n\t) {\n\t\tconst message = hint ?? `Profile \"${profile}\" not found`\n\t\tsuper(message, \"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\tpublic readonly conflictType: \"name\" | \"url\"\n\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\t/**\n\t\t * When conflictType is \"url\", this holds the existing registry name\n\t\t * that already maps to the conflicting URL.\n\t\t */\n\t\tpublic readonly existingName?: string,\n\t) {\n\t\tconst target = targetLabel ? ` in ${targetLabel}` : \"\"\n\t\tconst isUrlConflict = existingName !== undefined && existingName !== registryName\n\n\t\tconst message = isUrlConflict\n\t\t\t? `Registry URL already registered under name \"${existingName}\"${target}.\\n` +\n\t\t\t\t` URL: ${existingUrl}\\n` +\n\t\t\t\t` Existing name: ${existingName}\\n` +\n\t\t\t\t` Requested name: ${registryName}\\n\\n` +\n\t\t\t\t`Run 'ocx registry remove ${existingName}' first, then re-add with the new name.`\n\t\t\t: `Registry \"${registryName}\" already exists${target}.\\n` +\n\t\t\t\t` Current: ${existingUrl}\\n` +\n\t\t\t\t` New: ${newUrl}\\n\\n` +\n\t\t\t\t`Run 'ocx registry remove ${registryName}' first, then re-add with the new URL.`\n\n\t\tsuper(message, \"CONFLICT\", EXIT_CODES.CONFLICT)\n\t\tthis.name = \"RegistryExistsError\"\n\t\tthis.conflictType = isUrlConflict ? \"url\" : \"name\"\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\nexport class LocalProfileUnsupportedError extends OCXError {\n\tconstructor(\n\t\tpublic readonly profile: string,\n\t\tpublic readonly localDir: string,\n\t) {\n\t\tsuper(\n\t\t\t`Local profile directory unsupported: \"${localDir}\"\\n\\n` +\n\t\t\t\t`Local profiles are not supported. Profiles must be global only.\\n` +\n\t\t\t\t`Remove the local profile directory and use global profiles instead:\\n` +\n\t\t\t\t` rm -rf \"${localDir}\"\\n` +\n\t\t\t\t` ocx profile show ${profile} --global`,\n\t\t\t\"CONFIG_ERROR\",\n\t\t\tEXIT_CODES.CONFIG,\n\t\t)\n\t\tthis.name = \"LocalProfileUnsupportedError\"\n\t}\n}\n",
|
|
24
24
|
"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",
|
|
25
25
|
"/**\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 {\n\tOCX_DOMAIN,\n\tREGISTRY_SCHEMA_LATEST_MAJOR,\n\tREGISTRY_SCHEMA_LATEST_URL,\n\tREGISTRY_SCHEMA_UNVERSIONED_URL,\n} from \"../constants\"\nimport type { RegistryCompatIssue } from \"../utils/errors\"\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 * Alias schema — validates a user-chosen registry alias token.\n * An alias is the left-hand side of an `alias/component` qualified reference\n * (e.g. \"kdco\" in \"kdco/researcher\"). Same naming rules as openCodeNameSchema.\n */\nexport const aliasSchema = openCodeNameSchema\n\n/** @deprecated Use `aliasSchema` instead. Kept for backward compatibility. */\nexport const namespaceSchema = aliasSchema\n\n/**\n * Qualified component reference: alias/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 \"alias/component\" (e.g., \"kdco/researcher\"). Both parts must be lowercase alphanumeric with hyphens.',\n\t})\n\n/**\n * Parse a qualified component reference into its alias and component tokens.\n *\n * The returned `namespace` field is the user-chosen registry **alias** token\n * from the `alias/component` syntax — it is NOT a registry index authority.\n * The alias is resolved to a concrete registry URL at install time via ocx.jsonc.\n *\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: alias/component`)\n\t}\n\tconst parts = ref.split(\"/\")\n\tif (parts.length > 2) {\n\t\tthrow new Error(\n\t\t\t`Invalid component reference: \"${ref}\". Too many \"/\" separators. Use format: alias/component`,\n\t\t)\n\t}\n\tconst [namespace, component] = parts\n\tif (!namespace || !component) {\n\t\tthrow new Error(`Invalid component reference: \"${ref}\". Both alias and component are required.`)\n\t}\n\treturn { namespace, component }\n}\n\n/**\n * Create a qualified component reference from alias and component name.\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 registry alias (implicit)\n * - Qualified: \"acme/utils\" -> cross-registry (explicit)\n */\nexport const dependencyRefSchema = z.string().refine(\n\t(dep) => {\n\t\t// Either a bare component name or a qualified alias/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\"agent\",\n\t\"skill\",\n\t\"plugin\",\n\t\"command\",\n\t\"tool\",\n\t\"bundle\",\n\t\"profile\",\n])\n\nexport type ComponentType = z.infer<typeof componentTypeSchema>\n\n/** Reserved targets (installer-owned files) */\nconst RESERVED_TARGETS = new Set([\".ocx\", \"ocx.lock\"])\n\n/**\n * Paths that registry components cannot target.\n * These are either OCX-managed files or dangerous paths.\n */\nconst BLOCKED_PATHS = [\n\t// OCX-managed files\n\t\".ocx/\", // Receipt, state (covers receipt.jsonc)\n\t\"ocx.jsonc\", // OCX config\n\t\"package.json\", // We generate this in .opencode/\n\n\t// Dangerous paths\n\t\".git/\", // Git internals\n\t\".env\", // Secrets\n\t\"node_modules/\", // Dependencies\n] as const\n\n/**\n * V2: Target paths are root-relative (no .opencode/ prefix).\n * Blocks protected paths that could compromise security or OCX functionality.\n * Validates path safety using schema-level checks.\n */\nexport const targetPathSchema = z\n\t.string()\n\t.min(1, \"Target path cannot be empty\")\n\t.refine(\n\t\t(path) => {\n\t\t\t// No absolute paths\n\t\t\tif (path.startsWith(\"/\") || /^[a-zA-Z]:/.test(path)) return false\n\t\t\t// No null bytes\n\t\t\tif (path.includes(\"\\0\")) return false\n\t\t\treturn true\n\t\t},\n\t\t{\n\t\t\tmessage: \"Target path must be relative and safe (no absolute paths or null bytes)\",\n\t\t},\n\t)\n\t.refine(\n\t\t(path) => {\n\t\t\t// Check if path is blocked\n\t\t\treturn !BLOCKED_PATHS.some((blocked) => path === blocked || path.startsWith(blocked))\n\t\t},\n\t\t{\n\t\t\tmessage: \"Target path is protected and cannot be overwritten by registry components\",\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.\n * Target validation is deferred to normalizeFile() where component type is known.\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., \"plugins/foo.ts\" -> \"plugins/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 alias 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: \"plugins/foo.ts\" -> auto-infers target as \"plugins/foo.ts\"\n\t * - Object: { path: \"...\", target: \"...\" } for explicit control\n\t * - Optional: bundles (deps-only) may have no files\n\t */\n\tfiles: z.array(componentFileSchema).default([]),\n\n\t/**\n\t * Dependencies on other components (Cargo-style)\n\t * - Bare string: \"utils\" -> same registry alias (implicit)\n\t * - Qualified: \"acme/utils\" -> cross-registry (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 * V2: Infer target path from source path (root-relative, no prefix).\n * The path is used as-is since targets are now root-relative.\n * e.g., \"plugins/foo.ts\" -> \"plugins/foo.ts\"\n */\nexport function inferTargetPath(sourcePath: string): string {\n\treturn sourcePath\n}\n\n/**\n * V2: Validate a file target path.\n * Checks for reserved paths, blocked paths, and uses runtime containment validation.\n * Component type is inferred from target path (behavior-based, not explicit).\n * @param target - The target path to validate\n * @param componentType - Optional type hint for additional validation context\n * @throws ValidationError if target is invalid\n */\nexport function validateFileTarget(target: string, componentType?: ComponentType): void {\n\t// Check reserved targets\n\tif (RESERVED_TARGETS.has(target)) {\n\t\tthrow new ValidationError(`Target \"${target}\" is reserved for installer use`)\n\t}\n\n\t// Validate path safety using battle-tested validation\n\ttry {\n\t\tvalidatePath(\"/dummy/base\", target) // Just validates the path structure\n\t} catch (error) {\n\t\tif (error instanceof PathValidationError) {\n\t\t\tthrow new ValidationError(`Invalid target \"${target}\": ${error.message}`)\n\t\t}\n\t\tthrow error\n\t}\n\n\t// Check blocked paths (except for profiles, which install to their own directory)\n\tconst isProfile = componentType === \"profile\"\n\tif (!isProfile) {\n\t\t// Normalize the target path to evaluate the cleaned/resolved segments\n\t\t// This prevents bypass via paths like \"foo/../.git/config\"\n\t\tconst normalized = normalize(target)\n\n\t\t// After normalization, check if path lands in blocked prefixes\n\t\tconst isBlocked = BLOCKED_PATHS.some(\n\t\t\t(blocked) => normalized === blocked || normalized.startsWith(blocked),\n\t\t)\n\t\tif (isBlocked) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Target path '${target}' is protected and cannot be overwritten by registry components`,\n\t\t\t)\n\t\t}\n\t}\n}\n\n/**\n * V2: Normalize a file entry from string shorthand to full object.\n * All targets are root-relative (no .opencode/ prefix logic).\n * @param file - The file entry to normalize\n * @param componentType - Optional component type for validation context\n */\nexport function normalizeFile(\n\tfile: ComponentFile,\n\tcomponentType?: ComponentType,\n): ComponentFileObject {\n\tif (typeof file === \"string\") {\n\t\tvalidateSafePath(file)\n\t\tconst target = 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\nconst REGISTRY_SCHEMA_VERSIONED_URL_REGEX = new RegExp(\n\t`^https://${OCX_DOMAIN.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}/schemas/v([1-9]\\\\d*)/registry\\\\.json$`,\n)\n\nexport interface RegistrySchemaUrlIssue {\n\tissue: Exclude<RegistryCompatIssue, \"invalid-format\">\n\tremediation: string\n\tschemaUrl?: string\n\tsupportedMajor: number\n\tdetectedMajor?: number\n}\n\n/**\n * Classify registry schema URL compatibility.\n * Single source of truth for local manifests and remote index payloads.\n */\nexport function classifyRegistrySchemaIssue(document: unknown): RegistrySchemaUrlIssue | null {\n\tif (document === null || document === undefined || typeof document !== \"object\") {\n\t\treturn null\n\t}\n\n\tconst documentRecord = document as Record<string, unknown>\n\tconst hasSchemaField = Object.hasOwn(documentRecord, \"$schema\")\n\tif (!hasSchemaField) {\n\t\treturn {\n\t\t\tissue: \"legacy-schema-v1\",\n\t\t\tremediation:\n\t\t\t\t`This registry uses legacy schema v1 (missing $schema). ` +\n\t\t\t\t`Set \"$schema\" to \"${REGISTRY_SCHEMA_LATEST_URL}\".`,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tconst schemaUrl = documentRecord.$schema\n\n\tif (typeof schemaUrl !== \"string\") {\n\t\treturn {\n\t\t\tissue: \"invalid-schema-url\",\n\t\t\tremediation: `Registry $schema must be a canonical URL like \"${REGISTRY_SCHEMA_LATEST_URL}\".`,\n\t\t\tschemaUrl: String(schemaUrl),\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tif (!schemaUrl) {\n\t\treturn {\n\t\t\tissue: \"invalid-schema-url\",\n\t\t\tremediation: `Registry $schema must be a canonical URL like \"${REGISTRY_SCHEMA_LATEST_URL}\".`,\n\t\t\tschemaUrl,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tif (schemaUrl === REGISTRY_SCHEMA_UNVERSIONED_URL) {\n\t\treturn {\n\t\t\tissue: \"legacy-schema-v1\",\n\t\t\tremediation:\n\t\t\t\t`Schema URL \"${REGISTRY_SCHEMA_UNVERSIONED_URL}\" is legacy v1. ` +\n\t\t\t\t`Use \"${REGISTRY_SCHEMA_LATEST_URL}\" instead.`,\n\t\t\tschemaUrl,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tconst versionMatch = schemaUrl.match(REGISTRY_SCHEMA_VERSIONED_URL_REGEX)\n\tif (!versionMatch) {\n\t\treturn {\n\t\t\tissue: \"invalid-schema-url\",\n\t\t\tremediation: `Registry $schema must be a canonical URL like \"${REGISTRY_SCHEMA_LATEST_URL}\".`,\n\t\t\tschemaUrl,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tconst majorToken = versionMatch[1]\n\tif (!majorToken) {\n\t\treturn {\n\t\t\tissue: \"invalid-schema-url\",\n\t\t\tremediation: `Registry $schema must be a canonical URL like \"${REGISTRY_SCHEMA_LATEST_URL}\".`,\n\t\t\tschemaUrl,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t}\n\t}\n\n\tconst major = Number.parseInt(majorToken, 10)\n\tif (major !== REGISTRY_SCHEMA_LATEST_MAJOR) {\n\t\treturn {\n\t\t\tissue: \"unsupported-schema-version\",\n\t\t\tremediation:\n\t\t\t\t`Schema major v${major} is unsupported. ` +\n\t\t\t\t`Use \"${REGISTRY_SCHEMA_LATEST_URL}\" (v${REGISTRY_SCHEMA_LATEST_MAJOR}).`,\n\t\t\tschemaUrl,\n\t\t\tsupportedMajor: REGISTRY_SCHEMA_LATEST_MAJOR,\n\t\t\tdetectedMajor: major,\n\t\t}\n\t}\n\n\treturn null\n}\n\n/**\n * Semver regex for version validation\n */\nconst semverRegex = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/\n\n/**\n * Registry manifest schema.\n *\n * `name`, `version`, and `author` are **required** metadata.\n * This is intentional — every published registry must be identifiable and\n * versioned so that OCX can resolve, cache, and diff registries reliably.\n * Omitting `name` or `version` is a validation error at parse time\n * (Law 4: Fail Fast, Fail Loud).\n */\nexport const registrySchema = z\n\t.object({\n\t\t/** JSON Schema URL for IDE support */\n\t\t$schema: z.string().optional(),\n\n\t\t/** Registry display name (required — identifies the registry to users and tooling) */\n\t\tname: z.string().min(1, \"Registry name cannot be empty\"),\n\n\t\t/** Registry version, semver (required — enables deterministic resolution and caching) */\n\t\tversion: z.string().regex(semverRegex, { message: \"Version must be valid semver\" }),\n\n\t\t/** Registry author (required) */\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-registry 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-registry) 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-registry 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/** JSON Schema URL for IDE support */\n\t$schema: z.string().optional(),\n\n\t/** Registry author */\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",
|
|
26
26
|
"/**\n * Type guard to check if a value is a plain object.\n * Returns true only for plain objects (not arrays, not null, not primitives).\n *\n * @param value - Value to check\n * @returns true if value is a plain object\n *\n * @example\n * isPlainObject({}) // true\n * isPlainObject([]) // false\n * isPlainObject(null) // false\n */\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t!Array.isArray(value) &&\n\t\tObject.getPrototypeOf(value) === Object.prototype\n\t)\n}\n",
|
|
27
|
-
"/**\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 { posix as posixPath } from \"node:path\"\nimport { z } from \"zod\"\nimport type { ComponentManifest, McpServer, RegistryIndex } from \"../schemas/registry\"\nimport {\n\tclassifyRegistrySchemaIssue,\n\tcomponentManifestSchema,\n\tcomponentTypeSchema,\n\tpackumentSchema,\n\tregistryIndexSchema,\n} from \"../schemas/registry\"\nimport {\n\tNetworkError,\n\tNotFoundError,\n\ttype RegistryCompatIssue,\n\tRegistryCompatibilityError,\n\tValidationError,\n} from \"../utils/errors\"\nimport { isPlainObject } from \"../utils/type-guards\"\nimport { normalizeRegistryUrl } from \"../utils/url\"\n\n// In-memory cache for deduplication\nconst cache = new Map<string, Promise<unknown>>()\ntype RegistrySchemaMode = \"legacy-v1\" | \"v2\"\nconst registrySchemaModeCache = new Map<string, RegistrySchemaMode>()\n\nconst LEGACY_COMPONENT_TYPE_ALIAS_MAP = {\n\t\"ocx:agent\": \"agent\",\n\t\"ocx:skill\": \"skill\",\n\t\"ocx:plugin\": \"plugin\",\n\t\"ocx:command\": \"command\",\n\t\"ocx:tool\": \"tool\",\n\t\"ocx:bundle\": \"bundle\",\n\t\"ocx:profile\": \"profile\",\n} as const\n\nconst LEGACY_TARGET_KIND_MAP = {\n\tagent: \"agents\",\n\tskill: \"skills\",\n\tplugin: \"plugins\",\n\tcommand: \"commands\",\n\ttool: \"tools\",\n\tbundle: \"bundles\",\n\tprofile: \"profiles\",\n\tphilosophy: \"tools\",\n} as const\n\nconst packumentEnvelopeSchema = packumentSchema.extend({\n\tversions: z.record(z.unknown()),\n})\n\nfunction createCompatibilityError(\n\turl: string,\n\tclassification: {\n\t\tissue: RegistryCompatIssue\n\t\tremediation: string\n\t\tschemaUrl?: string\n\t\tsupportedMajor?: number\n\t\tdetectedMajor?: number\n\t},\n): RegistryCompatibilityError {\n\treturn new RegistryCompatibilityError(\n\t\t`Registry at ${url} uses an incompatible format (${classification.issue}). ${classification.remediation}`,\n\t\t{\n\t\t\turl,\n\t\t\tissue: classification.issue,\n\t\t\tremediation: classification.remediation,\n\t\t\t...(classification.schemaUrl !== undefined && {\n\t\t\t\tschemaUrl: classification.schemaUrl,\n\t\t\t}),\n\t\t\t...(classification.supportedMajor !== undefined && {\n\t\t\t\tsupportedMajor: classification.supportedMajor,\n\t\t\t}),\n\t\t\t...(classification.detectedMajor !== undefined && {\n\t\t\t\tdetectedMajor: classification.detectedMajor,\n\t\t\t}),\n\t\t},\n\t)\n}\n\nfunction mapLegacyComponentType(type: unknown, context: string): string {\n\tif (typeof type !== \"string\") {\n\t\tthrow new ValidationError(`Invalid ${context}: expected string, got ${typeof type}`)\n\t}\n\n\tconst mappedType =\n\t\tLEGACY_COMPONENT_TYPE_ALIAS_MAP[type as keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP] ?? type\n\tconst parsedType = componentTypeSchema.safeParse(mappedType)\n\tif (!parsedType.success) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsupported component type \"${type}\" in ${context}. ` +\n\t\t\t\t`Expected one of: ${componentTypeSchema.options.join(\", \")}`,\n\t\t)\n\t}\n\n\treturn parsedType.data\n}\n\nfunction isLegacyV2TypeAlias(type: unknown): type is keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP {\n\treturn typeof type === \"string\" && Object.hasOwn(LEGACY_COMPONENT_TYPE_ALIAS_MAP, type)\n}\n\nfunction hasLegacyManifestTargetPrefix(target: string): boolean {\n\treturn target.startsWith(\".opencode/\") || target.startsWith(\".opencode\\\\\")\n}\n\nfunction collectLegacyManifestTargetIssues(\n\tmanifest: unknown,\n): Array<{ path: string; target: string }> {\n\tif (!isPlainObject(manifest) || !Array.isArray(manifest.files)) {\n\t\treturn []\n\t}\n\n\tconst issues: Array<{ path: string; target: string }> = []\n\n\tfor (const [index, file] of manifest.files.entries()) {\n\t\tif (typeof file === \"string\") {\n\t\t\tif (!hasLegacyManifestTargetPrefix(file)) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tissues.push({\n\t\t\t\tpath: `files[${index}]`,\n\t\t\t\ttarget: file,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!isPlainObject(file) || typeof file.target !== \"string\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!hasLegacyManifestTargetPrefix(file.target)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tissues.push({\n\t\t\tpath: `files[${index}].target`,\n\t\t\ttarget: file.target,\n\t\t})\n\t}\n\n\treturn issues\n}\n\nfunction collectLegacyV2TypeIssues(data: unknown): Array<{\n\tpath: string\n\ttype: keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP\n}> {\n\tif (!isPlainObject(data)) {\n\t\treturn []\n\t}\n\n\tconst components = data.components\n\tif (!Array.isArray(components)) {\n\t\treturn []\n\t}\n\n\tconst issues: Array<{\n\t\tpath: string\n\t\ttype: keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP\n\t}> = []\n\n\tfor (const [index, component] of components.entries()) {\n\t\tif (!isPlainObject(component)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst type = component.type\n\t\tif (!isLegacyV2TypeAlias(type)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tissues.push({ path: `components[${index}].type`, type })\n\t}\n\n\treturn issues\n}\n\nfunction hasLegacySignalsInManifest(manifest: unknown): boolean {\n\tif (!isPlainObject(manifest)) {\n\t\treturn false\n\t}\n\n\tif (typeof manifest.type === \"string\" && manifest.type.startsWith(\"ocx:\")) {\n\t\treturn true\n\t}\n\n\treturn collectLegacyManifestTargetIssues(manifest).length > 0\n}\n\nasync function resolveRegistrySchemaMode(baseUrl: string): Promise<RegistrySchemaMode | null> {\n\tconst normalizedBaseUrl = normalizeRegistryUrl(baseUrl)\n\tconst cachedMode = registrySchemaModeCache.get(normalizedBaseUrl)\n\tif (cachedMode) {\n\t\treturn cachedMode\n\t}\n\n\ttry {\n\t\tawait fetchRegistryIndex(normalizedBaseUrl)\n\t} catch (error) {\n\t\tif (error instanceof NetworkError || error instanceof NotFoundError) {\n\t\t\treturn null\n\t\t}\n\n\t\tthrow error\n\t}\n\n\tif (!registrySchemaModeCache.has(normalizedBaseUrl)) {\n\t\treturn null\n\t}\n\n\tconst schemaMode = registrySchemaModeCache.get(normalizedBaseUrl)\n\tif (!schemaMode) {\n\t\tthrow new Error(`Missing registry schema mode cache entry for ${normalizedBaseUrl}`)\n\t}\n\n\treturn schemaMode\n}\n\nfunction canonicalizeLegacyTargetPath(rawTarget: string, context: string): string {\n\tif (rawTarget.includes(\"\\0\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: null bytes are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.includes(\"%\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: encoded paths are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.includes(\"\\\\\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: Windows separators are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.startsWith(\"/\") || rawTarget.startsWith(\"//\") || /^[a-zA-Z]:/.test(rawTarget)) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: absolute paths are not allowed`,\n\t\t)\n\t}\n\n\tconst withoutPrefix = rawTarget.startsWith(\".opencode/\")\n\t\t? rawTarget.slice(\".opencode/\".length)\n\t\t: rawTarget\n\n\tif (!withoutPrefix) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: missing path after .opencode/`,\n\t\t)\n\t}\n\n\tconst segments = withoutPrefix.split(\"/\")\n\tif (segments.some((segment) => segment.length === 0)) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: empty path segments are not allowed`,\n\t\t)\n\t}\n\n\tif (segments.some((segment) => segment === \".\" || segment === \"..\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: traversal segments are not allowed`,\n\t\t)\n\t}\n\n\tconst [firstSegment, ...restSegments] = segments\n\tif (!firstSegment) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: missing path root segment`,\n\t\t)\n\t}\n\n\tconst mappedRoot = LEGACY_TARGET_KIND_MAP[firstSegment as keyof typeof LEGACY_TARGET_KIND_MAP]\n\tconst rewrittenTarget = [mappedRoot ?? firstSegment, ...restSegments].join(\"/\")\n\n\tconst normalized = posixPath.normalize(rewrittenTarget)\n\tif (normalized !== rewrittenTarget) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: path normalization is ambiguous`,\n\t\t)\n\t}\n\n\tif (normalized === \".\" || normalized === \"..\" || normalized.startsWith(\"../\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: target escapes project root`,\n\t\t)\n\t}\n\n\treturn normalized\n}\n\nfunction adaptLegacyComponentManifest(manifest: unknown, context: string): unknown {\n\tif (!isPlainObject(manifest)) return manifest\n\n\tconst adaptedManifest: Record<string, unknown> = { ...manifest }\n\n\tif (Object.hasOwn(adaptedManifest, \"type\")) {\n\t\tadaptedManifest.type = mapLegacyComponentType(adaptedManifest.type, `${context}.type`)\n\t}\n\n\tif (Array.isArray(adaptedManifest.files)) {\n\t\tadaptedManifest.files = adaptedManifest.files.map((file, index) => {\n\t\t\tif (typeof file === \"string\") {\n\t\t\t\tif (!hasLegacyManifestTargetPrefix(file)) {\n\t\t\t\t\treturn file\n\t\t\t\t}\n\n\t\t\t\treturn canonicalizeLegacyTargetPath(file, `${context}.files[${index}]`)\n\t\t\t}\n\n\t\t\tif (!isPlainObject(file)) return file\n\n\t\t\tconst target = file.target\n\t\t\tif (typeof target !== \"string\") return file\n\n\t\t\tconst isLegacyTarget = hasLegacyManifestTargetPrefix(target)\n\t\t\tif (!isLegacyTarget) return file\n\n\t\t\treturn {\n\t\t\t\t...file,\n\t\t\t\ttarget: canonicalizeLegacyTargetPath(target, `${context}.files[${index}].target`),\n\t\t\t}\n\t\t})\n\t}\n\n\treturn adaptedManifest\n}\n\nfunction adaptLegacyRegistryIndex(data: unknown, url: string): unknown {\n\tif (!isPlainObject(data)) {\n\t\tthrow new RegistryCompatibilityError(\n\t\t\t`Registry at ${url} uses legacy schema v1 but does not expose an object index payload.`,\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\tissue: \"legacy-schema-v1\",\n\t\t\t\tremediation:\n\t\t\t\t\t\"Publish an object index with author/components fields, or upgrade to schema v2.\",\n\t\t\t},\n\t\t)\n\t}\n\n\tconst components = data.components\n\tif (!Array.isArray(components)) {\n\t\tthrow new RegistryCompatibilityError(\n\t\t\t`Registry at ${url} uses legacy schema v1 but the components field is missing or invalid.`,\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\tissue: \"legacy-schema-v1\",\n\t\t\t\tremediation: \"Ensure the legacy index has a components array, or upgrade to schema v2.\",\n\t\t\t},\n\t\t)\n\t}\n\n\tconst adaptedComponents = components.map((component, index) => {\n\t\tif (!isPlainObject(component)) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid index component at components[${index}]: expected object, got ${typeof component}`,\n\t\t\t)\n\t\t}\n\n\t\tconst name = component.name\n\t\tconst description = component.description\n\t\tif (typeof name !== \"string\") {\n\t\t\tthrow new ValidationError(`Invalid index component name at components[${index}].name`)\n\t\t}\n\t\tif (typeof description !== \"string\") {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid index component description at components[${index}].description`,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\ttype: mapLegacyComponentType(component.type, `components[${index}].type`),\n\t\t\tdescription,\n\t\t}\n\t})\n\n\treturn {\n\t\t...data,\n\t\tcomponents: adaptedComponents,\n\t}\n}\n\n/**\n * Fetch with caching - deduplicates concurrent requests\n */\nasync function fetchWithCache<T>(\n\turl: string,\n\tparse: (data: unknown) => T | Promise<T>,\n): 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 await 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 * Classify registry index schema compatibility from parsed JSON data.\n * Returns null when the schema URL is compatible.\n */\nexport function classifyRegistryIndexIssue(data: unknown): {\n\tissue: RegistryCompatIssue\n\tremediation: string\n\tschemaUrl?: string\n\tsupportedMajor?: number\n\tdetectedMajor?: number\n} | null {\n\tconst issue = classifyRegistrySchemaIssue(data)\n\tif (!issue) return null\n\n\treturn {\n\t\tissue: issue.issue,\n\t\tremediation: issue.remediation,\n\t\tschemaUrl: issue.schemaUrl,\n\t\tsupportedMajor: issue.supportedMajor,\n\t\tdetectedMajor: issue.detectedMajor,\n\t}\n}\n\n/**\n * Fetch registry index\n */\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n\tconst normalizedBaseUrl = normalizeRegistryUrl(baseUrl)\n\tconst url = `${normalizedBaseUrl}/index.json`\n\n\treturn fetchWithCache(url, (data) => {\n\t\t// Pre-schema classification: detect known incompatible formats\n\t\tconst classification = classifyRegistryIndexIssue(data)\n\n\t\tif (classification && classification.issue !== \"legacy-schema-v1\") {\n\t\t\tthrow createCompatibilityError(url, classification)\n\t\t}\n\n\t\tlet candidateData = data\n\t\tlet schemaMode: RegistrySchemaMode = \"v2\"\n\t\tif (classification?.issue === \"legacy-schema-v1\") {\n\t\t\tschemaMode = \"legacy-v1\"\n\t\t\ttry {\n\t\t\t\tcandidateData = adaptLegacyRegistryIndex(data, url)\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof RegistryCompatibilityError) {\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\n\t\t\t\tconst reason = error instanceof Error ? error.message : String(error)\n\t\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t\t`Registry at ${url} uses legacy schema v1 but cannot be adapted safely. ${reason}`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\t\tremediation:\n\t\t\t\t\t\t\t\"Fix the legacy payload shape (types/descriptions/components) or upgrade the registry to v2.\",\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tconst legacyTypeIssues = collectLegacyV2TypeIssues(candidateData)\n\t\t\tif (legacyTypeIssues.length > 0) {\n\t\t\t\tconst firstIssue = legacyTypeIssues[0]\n\t\t\t\tif (!firstIssue) {\n\t\t\t\t\tthrow new Error(\"Unexpected missing legacy type issue\")\n\t\t\t\t}\n\n\t\t\t\tconst canonicalType = LEGACY_COMPONENT_TYPE_ALIAS_MAP[firstIssue.type]\n\t\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t\t`Registry at ${url} uses legacy component type \"${firstIssue.type}\" in ${firstIssue.path}. Use \"${canonicalType}\" for v2 registries.`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\t\tremediation: `Replace legacy type \"${firstIssue.type}\" with canonical \"${canonicalType}\" in v2 manifests.`,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst result = registryIndexSchema.safeParse(candidateData)\n\t\tif (!result.success) {\n\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t`Registry at ${url} returned an unrecognized index format. Ensure it follows the OCX registry specification. Schema error: ${result.error.message}`,\n\t\t\t\t{\n\t\t\t\t\turl,\n\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\tremediation:\n\t\t\t\t\t\t\"Ensure the registry index follows the OCX registry specification. \" +\n\t\t\t\t\t\t`Schema error: ${result.error.message}`,\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\tregistrySchemaModeCache.set(normalizedBaseUrl, schemaMode)\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 = `${normalizeRegistryUrl(baseUrl)}/components/${name}.json`\n\n\treturn fetchWithCache(`${url}#v=${version ?? \"latest\"}`, async (data) => {\n\t\t// 1. Parse as packument\n\t\tconst packumentResult = packumentEnvelopeSchema.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 (legacy adaptation is version-gated)\n\t\tconst context = `component \"${name}@${resolvedVersion}\"`\n\t\tlet candidateManifest: unknown = manifest\n\n\t\tif (hasLegacySignalsInManifest(manifest)) {\n\t\t\tconst schemaMode = await resolveRegistrySchemaMode(baseUrl)\n\n\t\t\tif (schemaMode !== \"v2\") {\n\t\t\t\tcandidateManifest = adaptLegacyComponentManifest(manifest, context)\n\t\t\t} else {\n\t\t\t\tconst legacyTargetIssues = collectLegacyManifestTargetIssues(manifest)\n\t\t\t\tconst firstLegacyTargetIssue = legacyTargetIssues[0]\n\t\t\t\tif (firstLegacyTargetIssue) {\n\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": target \"${firstLegacyTargetIssue.target}\" at ${firstLegacyTargetIssue.path} uses a legacy .opencode/ prefix. ` +\n\t\t\t\t\t\t\t`For v2 registries, use canonical root-relative targets like \"plugins/...\", \"profiles/...\", \"agents/...\", \"skills/...\", or \"commands/...\" (without .opencode/).`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tif (isPlainObject(manifest) && isLegacyV2TypeAlias(manifest.type)) {\n\t\t\t\t\tconst canonicalType = LEGACY_COMPONENT_TYPE_ALIAS_MAP[manifest.type]\n\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": type \"${manifest.type}\" is a legacy v1 alias. Use \"${canonicalType}\" for v2 registries.`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst manifestResult = componentManifestSchema.safeParse(candidateManifest)\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 = `${normalizeRegistryUrl(baseUrl)}/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\tregistrySchemaModeCache.clear()\n}\n",
|
|
27
|
+
"/**\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 { posix as posixPath } from \"node:path\"\nimport { z } from \"zod\"\nimport type { ComponentManifest, McpServer, RegistryIndex } from \"../schemas/registry\"\nimport {\n\tclassifyRegistrySchemaIssue,\n\tcomponentManifestSchema,\n\tcomponentTypeSchema,\n\tpackumentSchema,\n\tregistryIndexSchema,\n} from \"../schemas/registry\"\nimport {\n\tNetworkError,\n\tNotFoundError,\n\ttype RegistryCompatIssue,\n\tRegistryCompatibilityError,\n\tValidationError,\n} from \"../utils/errors\"\nimport { isPlainObject } from \"../utils/type-guards\"\nimport { normalizeRegistryUrl } from \"../utils/url\"\n\n// In-memory cache for deduplication\nconst cache = new Map<string, Promise<unknown>>()\ntype RegistrySchemaMode = \"legacy-v1\" | \"v2\"\nconst registrySchemaModeCache = new Map<string, RegistrySchemaMode>()\n\nconst LEGACY_COMPONENT_TYPE_ALIAS_MAP = {\n\t\"ocx:agent\": \"agent\",\n\t\"ocx:skill\": \"skill\",\n\t\"ocx:plugin\": \"plugin\",\n\t\"ocx:command\": \"command\",\n\t\"ocx:tool\": \"tool\",\n\t\"ocx:bundle\": \"bundle\",\n\t\"ocx:profile\": \"profile\",\n} as const\n\nconst LEGACY_TARGET_KIND_MAP = {\n\tagent: \"agents\",\n\tskill: \"skills\",\n\tplugin: \"plugins\",\n\tcommand: \"commands\",\n\ttool: \"tools\",\n\tbundle: \"bundles\",\n\tprofile: \"profiles\",\n\tphilosophy: \"tools\",\n} as const\n\nconst packumentEnvelopeSchema = packumentSchema.extend({\n\tversions: z.record(z.unknown()),\n})\n\nfunction createCompatibilityError(\n\turl: string,\n\tclassification: {\n\t\tissue: RegistryCompatIssue\n\t\tremediation: string\n\t\tschemaUrl?: string\n\t\tsupportedMajor?: number\n\t\tdetectedMajor?: number\n\t},\n): RegistryCompatibilityError {\n\treturn new RegistryCompatibilityError(\n\t\t`Registry at ${url} uses an incompatible format (${classification.issue}). ${classification.remediation}`,\n\t\t{\n\t\t\turl,\n\t\t\tissue: classification.issue,\n\t\t\tremediation: classification.remediation,\n\t\t\t...(classification.schemaUrl !== undefined && {\n\t\t\t\tschemaUrl: classification.schemaUrl,\n\t\t\t}),\n\t\t\t...(classification.supportedMajor !== undefined && {\n\t\t\t\tsupportedMajor: classification.supportedMajor,\n\t\t\t}),\n\t\t\t...(classification.detectedMajor !== undefined && {\n\t\t\t\tdetectedMajor: classification.detectedMajor,\n\t\t\t}),\n\t\t},\n\t)\n}\n\nfunction mapLegacyComponentType(type: unknown, context: string): string {\n\tif (typeof type !== \"string\") {\n\t\tthrow new ValidationError(`Invalid ${context}: expected string, got ${typeof type}`)\n\t}\n\n\tconst mappedType =\n\t\tLEGACY_COMPONENT_TYPE_ALIAS_MAP[type as keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP] ?? type\n\tconst parsedType = componentTypeSchema.safeParse(mappedType)\n\tif (!parsedType.success) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsupported component type \"${type}\" in ${context}. ` +\n\t\t\t\t`Expected one of: ${componentTypeSchema.options.join(\", \")}`,\n\t\t)\n\t}\n\n\treturn parsedType.data\n}\n\nfunction isLegacyV2TypeAlias(type: unknown): type is keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP {\n\treturn typeof type === \"string\" && Object.hasOwn(LEGACY_COMPONENT_TYPE_ALIAS_MAP, type)\n}\n\nfunction hasLegacyManifestTargetPrefix(target: string): boolean {\n\treturn target.startsWith(\".opencode/\") || target.startsWith(\".opencode\\\\\")\n}\n\nfunction collectLegacyManifestTargetIssues(\n\tmanifest: unknown,\n): Array<{ path: string; target: string }> {\n\tif (!isPlainObject(manifest) || !Array.isArray(manifest.files)) {\n\t\treturn []\n\t}\n\n\tconst issues: Array<{ path: string; target: string }> = []\n\n\tfor (const [index, file] of manifest.files.entries()) {\n\t\tif (typeof file === \"string\") {\n\t\t\tif (!hasLegacyManifestTargetPrefix(file)) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tissues.push({\n\t\t\t\tpath: `files[${index}]`,\n\t\t\t\ttarget: file,\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!isPlainObject(file) || typeof file.target !== \"string\") {\n\t\t\tcontinue\n\t\t}\n\n\t\tif (!hasLegacyManifestTargetPrefix(file.target)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tissues.push({\n\t\t\tpath: `files[${index}].target`,\n\t\t\ttarget: file.target,\n\t\t})\n\t}\n\n\treturn issues\n}\n\nfunction collectLegacyV2TypeIssues(data: unknown): Array<{\n\tpath: string\n\ttype: keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP\n}> {\n\tif (!isPlainObject(data)) {\n\t\treturn []\n\t}\n\n\tconst components = data.components\n\tif (!Array.isArray(components)) {\n\t\treturn []\n\t}\n\n\tconst issues: Array<{\n\t\tpath: string\n\t\ttype: keyof typeof LEGACY_COMPONENT_TYPE_ALIAS_MAP\n\t}> = []\n\n\tfor (const [index, component] of components.entries()) {\n\t\tif (!isPlainObject(component)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst type = component.type\n\t\tif (!isLegacyV2TypeAlias(type)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tissues.push({ path: `components[${index}].type`, type })\n\t}\n\n\treturn issues\n}\n\nfunction hasLegacySignalsInManifest(manifest: unknown): boolean {\n\tif (!isPlainObject(manifest)) {\n\t\treturn false\n\t}\n\n\tif (typeof manifest.type === \"string\" && manifest.type.startsWith(\"ocx:\")) {\n\t\treturn true\n\t}\n\n\treturn collectLegacyManifestTargetIssues(manifest).length > 0\n}\n\nasync function resolveRegistrySchemaMode(baseUrl: string): Promise<RegistrySchemaMode | null> {\n\tconst normalizedBaseUrl = normalizeRegistryUrl(baseUrl)\n\tconst cachedMode = registrySchemaModeCache.get(normalizedBaseUrl)\n\tif (cachedMode) {\n\t\treturn cachedMode\n\t}\n\n\ttry {\n\t\tawait fetchRegistryIndex(normalizedBaseUrl)\n\t} catch (error) {\n\t\tif (error instanceof NetworkError || error instanceof NotFoundError) {\n\t\t\treturn null\n\t\t}\n\n\t\tthrow error\n\t}\n\n\tif (!registrySchemaModeCache.has(normalizedBaseUrl)) {\n\t\treturn null\n\t}\n\n\tconst schemaMode = registrySchemaModeCache.get(normalizedBaseUrl)\n\tif (!schemaMode) {\n\t\tthrow new Error(`Missing registry schema mode cache entry for ${normalizedBaseUrl}`)\n\t}\n\n\treturn schemaMode\n}\n\nfunction canonicalizeLegacyTargetPath(rawTarget: string, context: string): string {\n\tif (rawTarget.includes(\"\\0\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: null bytes are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.includes(\"%\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: encoded paths are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.includes(\"\\\\\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: Windows separators are not allowed`,\n\t\t)\n\t}\n\n\tif (rawTarget.startsWith(\"/\") || rawTarget.startsWith(\"//\") || /^[a-zA-Z]:/.test(rawTarget)) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: absolute paths are not allowed`,\n\t\t)\n\t}\n\n\tconst withoutPrefix = rawTarget.startsWith(\".opencode/\")\n\t\t? rawTarget.slice(\".opencode/\".length)\n\t\t: rawTarget\n\n\tif (!withoutPrefix) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: missing path after .opencode/`,\n\t\t)\n\t}\n\n\tconst segments = withoutPrefix.split(\"/\")\n\tif (segments.some((segment) => segment.length === 0)) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: empty path segments are not allowed`,\n\t\t)\n\t}\n\n\tif (segments.some((segment) => segment === \".\" || segment === \"..\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: traversal segments are not allowed`,\n\t\t)\n\t}\n\n\tconst [firstSegment, ...restSegments] = segments\n\tif (!firstSegment) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: missing path root segment`,\n\t\t)\n\t}\n\n\tconst mappedRoot = LEGACY_TARGET_KIND_MAP[firstSegment as keyof typeof LEGACY_TARGET_KIND_MAP]\n\tconst rewrittenTarget = [mappedRoot ?? firstSegment, ...restSegments].join(\"/\")\n\n\tconst normalized = posixPath.normalize(rewrittenTarget)\n\tif (normalized !== rewrittenTarget) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: path normalization is ambiguous`,\n\t\t)\n\t}\n\n\tif (normalized === \".\" || normalized === \"..\" || normalized.startsWith(\"../\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Unsafe target \"${rawTarget}\" in ${context}: target escapes project root`,\n\t\t)\n\t}\n\n\treturn normalized\n}\n\nfunction adaptLegacyComponentManifest(manifest: unknown, context: string): unknown {\n\tif (!isPlainObject(manifest)) return manifest\n\n\tconst adaptedManifest: Record<string, unknown> = { ...manifest }\n\n\tif (Object.hasOwn(adaptedManifest, \"type\")) {\n\t\tadaptedManifest.type = mapLegacyComponentType(adaptedManifest.type, `${context}.type`)\n\t}\n\n\tif (Array.isArray(adaptedManifest.files)) {\n\t\tadaptedManifest.files = adaptedManifest.files.map((file, index) => {\n\t\t\tif (typeof file === \"string\") {\n\t\t\t\tif (!hasLegacyManifestTargetPrefix(file)) {\n\t\t\t\t\treturn file\n\t\t\t\t}\n\n\t\t\t\treturn canonicalizeLegacyTargetPath(file, `${context}.files[${index}]`)\n\t\t\t}\n\n\t\t\tif (!isPlainObject(file)) return file\n\n\t\t\tconst target = file.target\n\t\t\tif (typeof target !== \"string\") return file\n\n\t\t\tconst isLegacyTarget = hasLegacyManifestTargetPrefix(target)\n\t\t\tif (!isLegacyTarget) return file\n\n\t\t\treturn {\n\t\t\t\t...file,\n\t\t\t\ttarget: canonicalizeLegacyTargetPath(target, `${context}.files[${index}].target`),\n\t\t\t}\n\t\t})\n\t}\n\n\treturn adaptedManifest\n}\n\nfunction adaptLegacyRegistryIndex(data: unknown, url: string): unknown {\n\tif (!isPlainObject(data)) {\n\t\tthrow new RegistryCompatibilityError(\n\t\t\t`Registry at ${url} uses legacy schema v1 but does not expose an object index payload.`,\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\tissue: \"legacy-schema-v1\",\n\t\t\t\tremediation:\n\t\t\t\t\t\"Publish an object index with author/components fields, or upgrade to schema v2.\",\n\t\t\t},\n\t\t)\n\t}\n\n\tconst components = data.components\n\tif (!Array.isArray(components)) {\n\t\tthrow new RegistryCompatibilityError(\n\t\t\t`Registry at ${url} uses legacy schema v1 but the components field is missing or invalid.`,\n\t\t\t{\n\t\t\t\turl,\n\t\t\t\tissue: \"legacy-schema-v1\",\n\t\t\t\tremediation: \"Ensure the legacy index has a components array, or upgrade to schema v2.\",\n\t\t\t},\n\t\t)\n\t}\n\n\tconst adaptedComponents = components.map((component, index) => {\n\t\tif (!isPlainObject(component)) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid index component at components[${index}]: expected object, got ${typeof component}`,\n\t\t\t)\n\t\t}\n\n\t\tconst name = component.name\n\t\tconst description = component.description\n\t\tif (typeof name !== \"string\") {\n\t\t\tthrow new ValidationError(`Invalid index component name at components[${index}].name`)\n\t\t}\n\t\tif (typeof description !== \"string\") {\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid index component description at components[${index}].description`,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\ttype: mapLegacyComponentType(component.type, `components[${index}].type`),\n\t\t\tdescription,\n\t\t}\n\t})\n\n\treturn {\n\t\t...data,\n\t\tcomponents: adaptedComponents,\n\t}\n}\n\n/**\n * Fetch with caching - deduplicates concurrent requests\n */\nasync function fetchWithCache<T>(\n\tcacheKey: string,\n\tparse: (data: unknown) => T | Promise<T>,\n\toptions: {\n\t\tphase?: string\n\t\trequestUrl?: string\n\t} = {},\n): Promise<T> {\n\tconst cached = cache.get(cacheKey)\n\tif (cached) {\n\t\treturn cached as Promise<T>\n\t}\n\n\tconst requestUrl = options.requestUrl ?? cacheKey\n\n\tconst promise = (async () => {\n\t\tconst networkErrorContext = {\n\t\t\turl: requestUrl,\n\t\t\tphase: options.phase,\n\t\t}\n\n\t\tlet response: Response\n\t\ttry {\n\t\t\tresponse = await fetch(requestUrl)\n\t\t} catch (error) {\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Network request failed for ${requestUrl}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\tnetworkErrorContext,\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: ${requestUrl}`)\n\t\t\t}\n\t\t\tthrow new NetworkError(\n\t\t\t\t`Failed to fetch ${requestUrl}: ${response.status} ${response.statusText}`,\n\t\t\t\t{\n\t\t\t\t\t...networkErrorContext,\n\t\t\t\t\tstatus: response.status,\n\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t},\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 ${requestUrl}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\tnetworkErrorContext,\n\t\t\t)\n\t\t}\n\n\t\treturn await parse(data)\n\t})()\n\n\tcache.set(cacheKey, promise)\n\n\t// Clean up cache on error\n\tpromise.catch(() => cache.delete(cacheKey))\n\n\treturn promise\n}\n\n/**\n * Classify registry index schema compatibility from parsed JSON data.\n * Returns null when the schema URL is compatible.\n */\nexport function classifyRegistryIndexIssue(data: unknown): {\n\tissue: RegistryCompatIssue\n\tremediation: string\n\tschemaUrl?: string\n\tsupportedMajor?: number\n\tdetectedMajor?: number\n} | null {\n\tconst issue = classifyRegistrySchemaIssue(data)\n\tif (!issue) return null\n\n\treturn {\n\t\tissue: issue.issue,\n\t\tremediation: issue.remediation,\n\t\tschemaUrl: issue.schemaUrl,\n\t\tsupportedMajor: issue.supportedMajor,\n\t\tdetectedMajor: issue.detectedMajor,\n\t}\n}\n\n/**\n * Fetch registry index\n */\nexport async function fetchRegistryIndex(baseUrl: string): Promise<RegistryIndex> {\n\tconst normalizedBaseUrl = normalizeRegistryUrl(baseUrl)\n\tconst url = `${normalizedBaseUrl}/index.json`\n\n\treturn fetchWithCache(\n\t\turl,\n\t\t(data) => {\n\t\t\t// Pre-schema classification: detect known incompatible formats\n\t\t\tconst classification = classifyRegistryIndexIssue(data)\n\n\t\t\tif (classification && classification.issue !== \"legacy-schema-v1\") {\n\t\t\t\tthrow createCompatibilityError(url, classification)\n\t\t\t}\n\n\t\t\tlet candidateData = data\n\t\t\tlet schemaMode: RegistrySchemaMode = \"v2\"\n\t\t\tif (classification?.issue === \"legacy-schema-v1\") {\n\t\t\t\tschemaMode = \"legacy-v1\"\n\t\t\t\ttry {\n\t\t\t\t\tcandidateData = adaptLegacyRegistryIndex(data, url)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof RegistryCompatibilityError) {\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reason = error instanceof Error ? error.message : String(error)\n\t\t\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t\t\t`Registry at ${url} uses legacy schema v1 but cannot be adapted safely. ${reason}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\t\t\tremediation:\n\t\t\t\t\t\t\t\t\"Fix the legacy payload shape (types/descriptions/components) or upgrade the registry to v2.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst legacyTypeIssues = collectLegacyV2TypeIssues(candidateData)\n\t\t\t\tif (legacyTypeIssues.length > 0) {\n\t\t\t\t\tconst firstIssue = legacyTypeIssues[0]\n\t\t\t\t\tif (!firstIssue) {\n\t\t\t\t\t\tthrow new Error(\"Unexpected missing legacy type issue\")\n\t\t\t\t\t}\n\n\t\t\t\t\tconst canonicalType = LEGACY_COMPONENT_TYPE_ALIAS_MAP[firstIssue.type]\n\t\t\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t\t\t`Registry at ${url} uses legacy component type \"${firstIssue.type}\" in ${firstIssue.path}. Use \"${canonicalType}\" for v2 registries.`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\t\t\tremediation: `Replace legacy type \"${firstIssue.type}\" with canonical \"${canonicalType}\" in v2 manifests.`,\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\tconst result = registryIndexSchema.safeParse(candidateData)\n\t\t\tif (!result.success) {\n\t\t\t\tthrow new RegistryCompatibilityError(\n\t\t\t\t\t`Registry at ${url} returned an unrecognized index format. Ensure it follows the OCX registry specification. Schema error: ${result.error.message}`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tissue: \"invalid-format\",\n\t\t\t\t\t\tremediation:\n\t\t\t\t\t\t\t\"Ensure the registry index follows the OCX registry specification. \" +\n\t\t\t\t\t\t\t`Schema error: ${result.error.message}`,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tregistrySchemaModeCache.set(normalizedBaseUrl, schemaMode)\n\t\t\treturn result.data\n\t\t},\n\t\t{ phase: \"registry-index-fetch\" },\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 = `${normalizeRegistryUrl(baseUrl)}/components/${name}.json`\n\n\treturn fetchWithCache(\n\t\t`${url}#v=${version ?? \"latest\"}`,\n\t\tasync (data) => {\n\t\t\t// 1. Parse as packument\n\t\t\tconst packumentResult = packumentEnvelopeSchema.safeParse(data)\n\t\t\tif (!packumentResult.success) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Invalid packument format for \"${name}\": ${packumentResult.error.message}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tconst packument = packumentResult.data\n\n\t\t\t// 2. Resolve version (specific or latest)\n\t\t\tconst resolvedVersion = version ?? packument[\"dist-tags\"].latest\n\t\t\tconst manifest = packument.versions[resolvedVersion]\n\n\t\t\tif (!manifest) {\n\t\t\t\tif (version) {\n\t\t\t\t\tconst availableVersions = Object.keys(packument.versions).join(\", \")\n\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t`Component \"${name}\" has no version \"${version}\". Available: ${availableVersions}`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Component \"${name}\" has no manifest for latest version ${resolvedVersion}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// 3. Validate manifest (legacy adaptation is version-gated)\n\t\t\tconst context = `component \"${name}@${resolvedVersion}\"`\n\t\t\tlet candidateManifest: unknown = manifest\n\n\t\t\tif (hasLegacySignalsInManifest(manifest)) {\n\t\t\t\tconst schemaMode = await resolveRegistrySchemaMode(baseUrl)\n\n\t\t\t\tif (schemaMode !== \"v2\") {\n\t\t\t\t\tcandidateManifest = adaptLegacyComponentManifest(manifest, context)\n\t\t\t\t} else {\n\t\t\t\t\tconst legacyTargetIssues = collectLegacyManifestTargetIssues(manifest)\n\t\t\t\t\tconst firstLegacyTargetIssue = legacyTargetIssues[0]\n\t\t\t\t\tif (firstLegacyTargetIssue) {\n\t\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": target \"${firstLegacyTargetIssue.target}\" at ${firstLegacyTargetIssue.path} uses a legacy .opencode/ prefix. ` +\n\t\t\t\t\t\t\t\t`For v2 registries, use canonical root-relative targets like \"plugins/...\", \"profiles/...\", \"agents/...\", \"skills/...\", or \"commands/...\" (without .opencode/).`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isPlainObject(manifest) && isLegacyV2TypeAlias(manifest.type)) {\n\t\t\t\t\t\tconst canonicalType = LEGACY_COMPONENT_TYPE_ALIAS_MAP[manifest.type]\n\t\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": type \"${manifest.type}\" is a legacy v1 alias. Use \"${canonicalType}\" for v2 registries.`,\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\tconst manifestResult = componentManifestSchema.safeParse(candidateManifest)\n\t\t\tif (!manifestResult.success) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Invalid component manifest for \"${name}@${resolvedVersion}\": ${manifestResult.error.message}`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn { manifest: manifestResult.data, version: resolvedVersion }\n\t\t},\n\t\t{ phase: \"packument-fetch\", requestUrl: url },\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 = `${normalizeRegistryUrl(baseUrl)}/components/${componentName}/${filePath}`\n\tconst networkErrorContext = {\n\t\turl,\n\t\tphase: \"file-content-fetch\",\n\t\tqualifiedName: componentName,\n\t} as const\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\tnetworkErrorContext,\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{\n\t\t\t\t...networkErrorContext,\n\t\t\t\tstatus: response.status,\n\t\t\t\tstatusText: response.statusText,\n\t\t\t},\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\tregistrySchemaModeCache.clear()\n}\n",
|
|
28
28
|
"'use strict';\n\nconst spinners = Object.assign({}, require('./spinners.json')); // eslint-disable-line import/extensions\n\nconst spinnersList = Object.keys(spinners);\n\nObject.defineProperty(spinners, 'random', {\n\tget() {\n\t\tconst randomIndex = Math.floor(Math.random() * spinnersList.length);\n\t\tconst spinnerName = spinnersList[randomIndex];\n\t\treturn spinners[spinnerName];\n\t}\n});\n\nmodule.exports = spinners;\n",
|
|
29
29
|
"// 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",
|
|
30
30
|
"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",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"/*---------------------------------------------------------------------------------------------\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';\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n const segments = []; // strings or numbers\n const earlyReturnException = new Object();\n let previousNode = undefined;\n const previousNodeInst = {\n value: {},\n offset: 0,\n length: 0,\n type: 'object',\n parent: undefined\n };\n let isAtPropertyKey = false;\n function setPreviousNode(value, offset, length, type) {\n previousNodeInst.value = value;\n previousNodeInst.offset = offset;\n previousNodeInst.length = length;\n previousNodeInst.type = type;\n previousNodeInst.colonOffset = undefined;\n previousNode = previousNodeInst;\n }\n try {\n visit(text, {\n onObjectBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n isAtPropertyKey = position > offset;\n segments.push(''); // push a placeholder (will be replaced)\n },\n onObjectProperty: (name, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(name, offset, length, 'property');\n segments[segments.length - 1] = name;\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onObjectEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onArrayBegin: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.push(0);\n },\n onArrayEnd: (offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onLiteralValue: (value, offset, length) => {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(value, offset, length, getNodeType(value));\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onSeparator: (sep, offset, length) => {\n if (position <= offset) {\n throw earlyReturnException;\n }\n if (sep === ':' && previousNode && previousNode.type === 'property') {\n previousNode.colonOffset = offset;\n isAtPropertyKey = false;\n previousNode = undefined;\n }\n else if (sep === ',') {\n const last = segments[segments.length - 1];\n if (typeof last === 'number') {\n segments[segments.length - 1] = last + 1;\n }\n else {\n isAtPropertyKey = true;\n segments[segments.length - 1] = '';\n }\n previousNode = undefined;\n }\n }\n });\n }\n catch (e) {\n if (e !== earlyReturnException) {\n throw e;\n }\n }\n return {\n path: segments,\n previousNode,\n isAtPropertyKey,\n matches: (pattern) => {\n let k = 0;\n for (let i = 0; k < pattern.length && i < segments.length; i++) {\n if (pattern[k] === segments[i] || pattern[k] === '*') {\n k++;\n }\n else if (pattern[k] !== '**') {\n return false;\n }\n }\n return k === pattern.length;\n }\n };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentProperty = null;\n let currentParent = [];\n const previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n const visitor = {\n onObjectBegin: () => {\n const object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: (name) => {\n currentProperty = name;\n },\n onObjectEnd: () => {\n currentParent = previousParents.pop();\n },\n onArrayBegin: () => {\n const array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: () => {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n function ensurePropertyComplete(endOffset) {\n if (currentParent.type === 'property') {\n currentParent.length = endOffset - currentParent.offset;\n currentParent = currentParent.parent;\n }\n }\n function onValue(valueNode) {\n currentParent.children.push(valueNode);\n return valueNode;\n }\n const visitor = {\n onObjectBegin: (offset) => {\n currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });\n },\n onObjectProperty: (name, offset, length) => {\n currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });\n currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });\n },\n onObjectEnd: (offset, length) => {\n ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onArrayBegin: (offset, length) => {\n currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });\n },\n onArrayEnd: (offset, length) => {\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onLiteralValue: (value, offset, length) => {\n onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });\n ensurePropertyComplete(offset + length);\n },\n onSeparator: (sep, offset, length) => {\n if (currentParent.type === 'property') {\n if (sep === ':') {\n currentParent.colonOffset = offset;\n }\n else if (sep === ',') {\n ensurePropertyComplete(offset);\n }\n }\n },\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n const result = currentParent.children[0];\n if (result) {\n delete result.parent;\n }\n return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n if (!root) {\n return undefined;\n }\n let node = root;\n for (let segment of path) {\n if (typeof segment === 'string') {\n if (node.type !== 'object' || !Array.isArray(node.children)) {\n return undefined;\n }\n let found = false;\n for (const propertyNode of node.children) {\n if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {\n node = propertyNode.children[1];\n found = true;\n break;\n }\n }\n if (!found) {\n return undefined;\n }\n }\n else {\n const index = segment;\n if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n return undefined;\n }\n node = node.children[index];\n }\n }\n return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n const path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n const key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n const index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n const obj = Object.create(null);\n for (let prop of node.children) {\n const valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nexport function contains(node, offset, includeRightBound = false) {\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound = false) {\n if (contains(node, offset, includeRightBound)) {\n const children = node.children;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options = ParseOptions.DEFAULT) {\n const _scanner = createScanner(text, false);\n // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n // to not affect visitor functions which stored a reference to a previous JSONPath\n const _jsonPath = [];\n // Depth of onXXXBegin() callbacks suppressed. onXXXEnd() decrements this if it isn't 0 already.\n // Callbacks are only called when this value is 0.\n let suppressedCallbacks = 0;\n function toNoArgVisit(visitFunction) {\n return visitFunction ? () => suppressedCallbacks === 0 && visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisitWithPath(visitFunction) {\n return visitFunction ? (arg) => suppressedCallbacks === 0 && visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n function toBeginVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks++;\n }\n else {\n let cbReturn = visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice());\n if (cbReturn === false) {\n suppressedCallbacks = 1;\n }\n }\n }\n : () => true;\n }\n function toEndVisit(visitFunction) {\n return visitFunction ?\n () => {\n if (suppressedCallbacks > 0) {\n suppressedCallbacks--;\n }\n if (suppressedCallbacks === 0) {\n visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter());\n }\n }\n : () => true;\n }\n const onObjectBegin = toBeginVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toEndVisit(visitor.onObjectEnd), onArrayBegin = toBeginVisit(visitor.onArrayBegin), onArrayEnd = toEndVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n const disallowComments = options && options.disallowComments;\n const allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n const token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* ScanError.InvalidUnicode */:\n handleError(14 /* ParseErrorCode.InvalidUnicode */);\n break;\n case 5 /* ScanError.InvalidEscapeCharacter */:\n handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n break;\n case 3 /* ScanError.UnexpectedEndOfNumber */:\n handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n break;\n case 1 /* ScanError.UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n }\n break;\n case 2 /* ScanError.UnexpectedEndOfString */:\n handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n break;\n case 6 /* ScanError.InvalidCharacter */:\n handleError(16 /* ParseErrorCode.InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n handleError(1 /* ParseErrorCode.InvalidSymbol */);\n break;\n case 15 /* SyntaxKind.Trivia */:\n case 14 /* SyntaxKind.LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter = [], skipUntil = []) {\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = _scanner.getToken();\n while (token !== 17 /* SyntaxKind.EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n const value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n // add property name afterwards\n _jsonPath.push(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* SyntaxKind.NumericLiteral */:\n const tokenValue = _scanner.getTokenValue();\n let value = Number(tokenValue);\n if (isNaN(value)) {\n handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n value = 0;\n }\n onLiteralValue(value);\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* SyntaxKind.TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* SyntaxKind.FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n }\n else {\n handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n _jsonPath.pop(); // remove processed property name\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n let needsComma = false;\n while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n let isFirstElement = true;\n let needsComma = false;\n while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (isFirstElement) {\n _jsonPath.push(0);\n isFirstElement = false;\n }\n else {\n _jsonPath[_jsonPath.length - 1]++;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (!isFirstElement) {\n _jsonPath.pop(); // remove array index\n }\n if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n return parseArray();\n case 1 /* SyntaxKind.OpenBraceToken */:\n return parseObject();\n case 10 /* SyntaxKind.StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n }\n return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n do {\n pos = _scanner.getPosition();\n kind = _scanner.scan();\n switch (kind) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n case 17 /* SyntaxKind.EOF */:\n if (offset !== pos) {\n parts.push(text.substring(offset, pos));\n }\n if (replaceCh !== undefined) {\n parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n }\n offset = _scanner.getPosition();\n break;\n }\n } while (kind !== 17 /* SyntaxKind.EOF */);\n return parts.join('');\n}\nexport function getNodeType(value) {\n switch (typeof value) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'object': {\n if (!value) {\n return 'null';\n }\n else if (Array.isArray(value)) {\n return 'array';\n }\n return 'object';\n }\n default: return 'null';\n }\n}\n",
|
|
37
37
|
"/*---------------------------------------------------------------------------------------------\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 { format, isEOL } from './format';\nimport { parseTree, findNodeAtLocation } from './parser';\nexport function removeProperty(text, path, options) {\n return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n const path = originalPath.slice();\n const errors = [];\n const root = parseTree(text, errors);\n let parent = void 0;\n let lastSegment = void 0;\n while (path.length > 0) {\n lastSegment = path.pop();\n parent = findNodeAtLocation(root, path);\n if (parent === void 0 && value !== void 0) {\n if (typeof lastSegment === 'string') {\n value = { [lastSegment]: value };\n }\n else {\n value = [value];\n }\n }\n else {\n break;\n }\n }\n if (!parent) {\n // empty document\n if (value === void 0) { // delete\n throw new Error('Can not delete in empty document');\n }\n return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n }\n else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n const existing = findNodeAtLocation(parent, [lastSegment]);\n if (existing !== void 0) {\n if (value === void 0) { // delete\n if (!existing.parent) {\n throw new Error('Malformed AST');\n }\n const propertyIndex = parent.children.indexOf(existing.parent);\n let removeBegin;\n let removeEnd = existing.parent.offset + existing.parent.length;\n if (propertyIndex > 0) {\n // remove the comma of the previous node\n let previous = parent.children[propertyIndex - 1];\n removeBegin = previous.offset + previous.length;\n }\n else {\n removeBegin = parent.offset + 1;\n if (parent.children.length > 1) {\n // remove the comma of the next node\n let next = parent.children[1];\n removeEnd = next.offset;\n }\n }\n return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n }\n else {\n // set value of existing property\n return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n }\n }\n else {\n if (value === void 0) { // delete\n return []; // property does not exist, nothing to do\n }\n const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;\n const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;\n let edit;\n if (index > 0) {\n let previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n else if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n }\n return withFormatting(text, edit, options);\n }\n }\n else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n const insertIndex = lastSegment;\n if (insertIndex === -1) {\n // Insert\n const newProperty = `${JSON.stringify(value)}`;\n let edit;\n if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n const previous = parent.children[parent.children.length - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else if (value === void 0 && parent.children.length >= 0) {\n // Removal\n const removalIndex = lastSegment;\n const toRemove = parent.children[removalIndex];\n let edit;\n if (parent.children.length === 1) {\n // only item\n edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n }\n else if (parent.children.length - 1 === removalIndex) {\n // last item\n let previous = parent.children[removalIndex - 1];\n let offset = previous.offset + previous.length;\n let parentEndOffset = parent.offset + parent.length;\n edit = { offset, length: parentEndOffset - 2 - offset, content: '' };\n }\n else {\n edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n }\n return withFormatting(text, edit, options);\n }\n else if (value !== void 0) {\n let edit;\n const newProperty = `${JSON.stringify(value)}`;\n if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n const toModify = parent.children[lastSegment];\n edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n }\n else if (parent.children.length === 0 || lastSegment === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n }\n else {\n const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n const previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else {\n throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);\n }\n }\n else {\n throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);\n }\n}\nfunction withFormatting(text, edit, options) {\n if (!options.formattingOptions) {\n return [edit];\n }\n // apply the edit\n let newText = applyEdit(text, edit);\n // format the new text\n let begin = edit.offset;\n let end = edit.offset + edit.content.length;\n if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n while (begin > 0 && !isEOL(newText, begin - 1)) {\n begin--;\n }\n while (end < newText.length && !isEOL(newText, end)) {\n end++;\n }\n }\n const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });\n // apply the formatting edits and track the begin and end offsets of the changes\n for (let i = edits.length - 1; i >= 0; i--) {\n const edit = edits[i];\n newText = applyEdit(newText, edit);\n begin = Math.min(begin, edit.offset);\n end = Math.max(end, edit.offset + edit.length);\n end += edit.content.length - edit.length;\n }\n // create a single edit with all changes\n const editLength = text.length - (newText.length - end) - begin;\n return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n",
|
|
38
38
|
"/*---------------------------------------------------------------------------------------------\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 * as formatter from './impl/format';\nimport * as edit from './impl/edit';\nimport * as scanner from './impl/scanner';\nimport * as parser from './impl/parser';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport const createScanner = scanner.createScanner;\nexport var ScanError;\n(function (ScanError) {\n ScanError[ScanError[\"None\"] = 0] = \"None\";\n ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nexport var SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport const getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport const parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport const parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport const findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport const findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport const getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport const getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport const visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport const stripComments = parser.stripComments;\nexport var ParseErrorCode;\n(function (ParseErrorCode) {\n ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\nexport function printParseErrorCode(code) {\n switch (code) {\n case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';\n case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';\n case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';\n case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';\n case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';\n case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';\n case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';\n case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';\n case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';\n case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';\n case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';\n case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';\n }\n return '<unknown ParseErrorCode>';\n}\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function format(documentText, range, options) {\n return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edit operations needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nexport function modify(text, path, value, options) {\n return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to an input string.\n * @param text The input text\n * @param edits Edit operations following the format described in {@linkcode EditResult}.\n * @returns The text with the applied edits.\n * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.\n */\nexport function applyEdits(text, edits) {\n let sortedEdits = edits.slice(0).sort((a, b) => {\n const diff = a.offset - b.offset;\n if (diff === 0) {\n return a.length - b.length;\n }\n return diff;\n });\n let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n let e = sortedEdits[i];\n if (e.offset + e.length <= lastModifiedOffset) {\n text = edit.applyEdit(text, e);\n }\n else {\n throw new Error('Overlapping edit');\n }\n lastModifiedOffset = e.offset;\n }\n return text;\n}\n",
|
|
39
|
-
"/**\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\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",
|
|
39
|
+
"/**\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\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\t\tif (!config) {\n\t\t\tthrow new ConfigError(\"Global config not found. Run 'ocx init --global' first.\")\n\t\t}\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",
|
|
40
40
|
"import { stat } from \"node:fs/promises\"\nimport { homedir } from \"node:os\"\nimport { isAbsolute, join, relative, resolve } from \"node:path\"\nimport { resolveComponentTargetRoot } from \"./component-root-resolution\"\nimport { ValidationError } from \"./errors\"\nimport { PathValidationError, validatePath } from \"./path-security\"\n\nconst LOCAL_CONFIG_ROOT = \".opencode\"\nconst LOCAL_CONFIG_PREFIX = `${LOCAL_CONFIG_ROOT}/`\n\n/**\n * Strip a single leading .opencode/ prefix so local targets can be\n * normalized and re-anchored without duplicating the directory.\n */\nfunction stripLocalPrefix(target: string): string {\n\tconst unifiedSeparators = target.replace(/\\\\/g, \"/\")\n\n\tif (unifiedSeparators === LOCAL_CONFIG_ROOT) {\n\t\treturn \".\"\n\t}\n\n\tif (unifiedSeparators.startsWith(LOCAL_CONFIG_PREFIX)) {\n\t\treturn unifiedSeparators.slice(LOCAL_CONFIG_PREFIX.length)\n\t}\n\n\treturn target\n}\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 install location.\n *\n * Targets in registries are root-relative (e.g., \"plugins/foo.ts\").\n * - Flattened modes (global/profile) install at root-relative paths.\n * - Local mode installs under .opencode/.\n *\n * @param target - Root-relative target path from registry (e.g., \"plugins/foo.ts\")\n * @param isFlattened - Whether install mode is flattened (global/profile)\n * @param installRoot - Absolute install root for adaptive root resolution\n * @returns Resolved install path for the active mode\n */\nexport function resolveTargetPath(\n\ttarget: string,\n\tisFlattened: boolean,\n\tinstallRoot?: string,\n): string {\n\tif (isFlattened) {\n\t\tif (!installRoot) {\n\t\t\treturn target\n\t\t}\n\n\t\treturn resolveComponentTargetRoot(target, installRoot)\n\t}\n\n\tconst localRelativeTarget = stripLocalPrefix(target)\n\tconst installRootAbsolute = installRoot ? resolve(installRoot) : process.cwd()\n\tconst localRootAbsolute = resolve(installRootAbsolute, LOCAL_CONFIG_ROOT)\n\n\tlet safeAbsoluteTarget: string\n\ttry {\n\t\tsafeAbsoluteTarget = validatePath(localRootAbsolute, localRelativeTarget)\n\t} catch (error) {\n\t\tif (error instanceof PathValidationError) {\n\t\t\tthrow new ValidationError(`Invalid local target \"${target}\": ${error.message}`)\n\t\t}\n\t\tthrow error\n\t}\n\n\tconst normalizedRelativeTarget = relative(localRootAbsolute, safeAbsoluteTarget).replace(\n\t\t/\\\\/g,\n\t\t\"/\",\n\t)\n\n\tif (normalizedRelativeTarget === \".\" || normalizedRelativeTarget === \"\") {\n\t\treturn LOCAL_CONFIG_ROOT\n\t}\n\n\tconst adaptiveLocalTarget = installRoot\n\t\t? resolveComponentTargetRoot(normalizedRelativeTarget, localRootAbsolute)\n\t\t: normalizedRelativeTarget\n\n\treturn `${LOCAL_CONFIG_PREFIX}${adaptiveLocalTarget}`\n}\n",
|
|
41
41
|
"import { existsSync, statSync } from \"node:fs\"\nimport { join } from \"node:path\"\nimport { ConflictError, ValidationError } from \"./errors\"\n\nconst ROOT_PAIRS = {\n\tagent: \"agents\",\n\tcommand: \"commands\",\n\tplugin: \"plugins\",\n\tskill: \"skills\",\n\ttool: \"tools\",\n\tbundle: \"bundles\",\n\tprofile: \"profiles\",\n} as const\n\ntype SingularRoot = keyof typeof ROOT_PAIRS\ntype PluralRoot = (typeof ROOT_PAIRS)[SingularRoot]\n\ntype RootPair = {\n\tsingular: SingularRoot\n\tplural: PluralRoot\n}\n\nconst ROOT_LOOKUP = new Map<string, RootPair>(\n\tObject.entries(ROOT_PAIRS).flatMap(([singular, plural]) => {\n\t\tconst pair = {\n\t\t\tsingular: singular as SingularRoot,\n\t\t\tplural,\n\t\t}\n\n\t\treturn [\n\t\t\t[singular, pair],\n\t\t\t[plural, pair],\n\t\t]\n\t}),\n)\n\nfunction readRootState(installRoot: string, rootSegment: string): \"missing\" | \"directory\" {\n\tconst candidatePath = join(installRoot, rootSegment)\n\n\tif (!existsSync(candidatePath)) {\n\t\treturn \"missing\"\n\t}\n\n\tconst stats = statSync(candidatePath)\n\tif (!stats.isDirectory()) {\n\t\tthrow new ValidationError(\n\t\t\t`Component root \"${rootSegment}\" exists at \"${candidatePath}\" but is not a directory.`,\n\t\t)\n\t}\n\n\treturn \"directory\"\n}\n\nfunction resolvePreferredRoot(installRoot: string, pair: RootPair): SingularRoot | PluralRoot {\n\tconst singularState = readRootState(installRoot, pair.singular)\n\tconst pluralState = readRootState(installRoot, pair.plural)\n\n\tif (singularState === \"directory\" && pluralState === \"directory\") {\n\t\treturn pair.plural\n\t}\n\n\tif (singularState === \"directory\") {\n\t\treturn pair.singular\n\t}\n\n\tif (pluralState === \"directory\") {\n\t\treturn pair.plural\n\t}\n\n\treturn pair.plural\n}\n\nfunction assertNoCrossRootCollision(\n\tinstallRoot: string,\n\toriginalTarget: string,\n\tselectedRoot: SingularRoot | PluralRoot,\n\tpair: RootPair,\n\tsuffix: string,\n): void {\n\tif (!suffix) {\n\t\treturn\n\t}\n\n\tconst alternateRoot = selectedRoot === pair.plural ? pair.singular : pair.plural\n\tconst alternateRelativePath = `${alternateRoot}/${suffix}`\n\tconst alternateAbsolutePath = join(installRoot, alternateRelativePath)\n\n\tif (!existsSync(alternateAbsolutePath)) {\n\t\treturn\n\t}\n\n\tthrow new ConflictError(\n\t\t`Cross-root logical collision for \"${originalTarget}\": selected root \"${selectedRoot}\" but \"${alternateRelativePath}\" already exists.`,\n\t)\n}\n\n/**\n * Resolve singular/plural component root segments for installation targets.\n * Preserves all nested path segments exactly.\n */\nexport function resolveComponentTargetRoot(targetPath: string, installRoot: string): string {\n\tconst [firstSegment, ...remainingSegments] = targetPath.split(\"/\")\n\tif (!firstSegment) {\n\t\treturn targetPath\n\t}\n\n\tconst pair = ROOT_LOOKUP.get(firstSegment)\n\tif (!pair) {\n\t\treturn targetPath\n\t}\n\n\tconst preferredRoot = resolvePreferredRoot(installRoot, pair)\n\tconst suffix = remainingSegments.join(\"/\")\n\n\tassertNoCrossRootCollision(installRoot, targetPath, preferredRoot, pair, suffix)\n\n\tif (!suffix) {\n\t\treturn preferredRoot\n\t}\n\n\treturn `${preferredRoot}/${suffix}`\n}\n",
|
|
42
42
|
"/**\n * ConfigResolver - Global Profile Resolution\n *\n * Profile selection via `.opencode/ocx.jsonc` field: `{ \"profile\": \"work\" }`\n * Profiles are global-only (~/.config/opencode/profiles/). Local profiles are\n * unsupported and produce a hard error via ProfileManager.getLayered().\n *\n * Visibility controlled by profile `ocx.jsonc` include/exclude patterns.\n * OCX configs (ocx.jsonc) remain ISOLATED per scope - they do NOT merge.\n * OpenCode configs (opencode.jsonc) ALWAYS merge: profile → local.\n * Local opencode.jsonc always participates regardless of exclude/include\n * patterns, matching OpenCode's native layering semantics.\n *\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, readFileSync, statSync } from \"node:fs\"\nimport { homedir } from \"node:os\"\nimport { join, relative } from \"node:path\"\nimport { Glob } from \"bun\"\nimport { type ParseError, parse as parseJsonc, printParseErrorCode } from \"jsonc-parser\"\nimport { ProfileManager } from \"../profile/manager\"\nimport {\n\tfindLocalConfigDir,\n\tgetProfileDir,\n\tLOCAL_CONFIG_DIR,\n\tOCX_CONFIG_FILE,\n\tOPENCODE_CONFIG_FILE,\n} from \"../profile/paths\"\nimport type { Profile } from \"../profile/schema\"\nimport { mergeOpencodeConfig } from \"../registry/merge\"\nimport type { OcxConfig, RegistryConfig } from \"../schemas/config\"\nimport { ocxConfigSchema, readReceipt } from \"../schemas/config\"\nimport type { NormalizedOpencodeConfig } from \"../schemas/registry\"\nimport { ConfigError, ProfileNotFoundError, ProfilesNotInitializedError } from \"../utils/errors\"\nimport { resolveGitRootSync } from \"../utils/git-root\"\nimport { resolveRegistryInstructionPaths } from \"../utils/instruction-paths\"\nimport { getGlobalConfigPath } from \"../utils/paths\"\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\ntype ProfileResolutionSource = \"none\" | \"local-config\" | \"cli\" | \"env\" | \"default\"\n\nfunction isExplicitProfileSource(source: ProfileResolutionSource): boolean {\n\treturn source === \"local-config\" || source === \"cli\" || source === \"env\"\n}\n\nfunction requireNonEmptyExplicitProfile(profileName: string, sourceDescription: string): string {\n\tif (profileName.trim().length === 0) {\n\t\tthrow new ConfigError(\n\t\t\t`Invalid profile from ${sourceDescription}: value cannot be empty or whitespace`,\n\t\t)\n\t}\n\n\treturn profileName\n}\n\nfunction formatJsoncParseError(parseErrors: ParseError[]): string {\n\tif (parseErrors.length === 0) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\tconst firstError = parseErrors[0]\n\tif (!firstError) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\treturn `${printParseErrorCode(firstError.error)} at offset ${firstError.offset}`\n}\n\nfunction parseLocalOcxConfig(configPath: string): OcxConfig {\n\tlet text: string\n\ttry {\n\t\ttext = readFileSync(configPath, \"utf8\")\n\t} catch (error) {\n\t\tconst reason = error instanceof Error ? error.message : \"Unknown read error\"\n\t\tthrow new ConfigError(`Failed to read local config at ${configPath}: ${reason}`)\n\t}\n\n\tconst parseErrors: ParseError[] = []\n\tconst parsed = parseJsonc(text, parseErrors, { allowTrailingComma: true })\n\tif (parseErrors.length > 0) {\n\t\tconst errorDetail = formatJsoncParseError(parseErrors)\n\t\tthrow new ConfigError(`Invalid JSONC in local config at ${configPath}: ${errorDetail}`)\n\t}\n\n\tconst validationResult = ocxConfigSchema.safeParse(parsed)\n\tif (!validationResult.success) {\n\t\tconst firstIssue = validationResult.error.issues[0]\n\t\tconst issuePath = firstIssue?.path.length ? firstIssue.path.join(\".\") : \"root\"\n\t\tconst issueMessage = firstIssue?.message ?? \"Invalid OCX config\"\n\t\tthrow new ConfigError(`Invalid local config at ${configPath}: ${issuePath} ${issueMessage}`)\n\t}\n\n\treturn validationResult.data\n}\n\nfunction parseLocalOpencodeConfig(configPath: string): Record<string, unknown> {\n\tlet text: string\n\ttry {\n\t\ttext = readFileSync(configPath, \"utf8\")\n\t} catch (error) {\n\t\tconst reason = error instanceof Error ? error.message : \"Unknown read error\"\n\t\tthrow new ConfigError(`Failed to read local OpenCode config at ${configPath}: ${reason}`)\n\t}\n\n\tconst parseErrors: ParseError[] = []\n\tconst parsed = parseJsonc(text, parseErrors, { allowTrailingComma: true })\n\tif (parseErrors.length > 0) {\n\t\tconst errorDetail = formatJsoncParseError(parseErrors)\n\t\tthrow new ConfigError(`Invalid JSONC in local OpenCode config at ${configPath}: ${errorDetail}`)\n\t}\n\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new ConfigError(`Invalid local OpenCode config at ${configPath}: root must be an object`)\n\t}\n\n\treturn parsed as Record<string, unknown>\n}\n\n// =============================================================================\n// INSTRUCTION FILE DISCOVERY\n// =============================================================================\n\n/**\n * Instruction file types to search for, in priority order.\n * OpenCode uses \"first type wins\" pattern - if ANY files of the first type\n * are found, only those are used (remaining types are not checked).\n *\n * Reference: https://github.com/sst/opencode/blob/dev/packages/opencode/src/session/instruction.ts#L75-L84\n */\nconst INSTRUCTION_FILES = [\n\t\"AGENTS.md\",\n\t\"CLAUDE.md\",\n\t\"CONTEXT.md\", // Deprecated - kept for OpenCode compatibility\n] as const\n\n/**\n * Find instruction files of a specific type by walking UP from projectDir to gitRoot.\n * Returns repo-relative paths in deepest-first order.\n */\nfunction findInstructionsByType(filename: string, projectDir: string, gitRoot: string): string[] {\n\tconst discovered: string[] = []\n\tlet currentDir = projectDir\n\n\t// Walk up from projectDir to root\n\twhile (true) {\n\t\tconst filePath = join(currentDir, filename)\n\t\tif (existsSync(filePath) && statSync(filePath).isFile()) {\n\t\t\t// Store as relative to root\n\t\t\tconst relativePath = relative(gitRoot, filePath)\n\t\t\tdiscovered.push(relativePath)\n\t\t}\n\n\t\t// Stop if we've reached the root\n\t\tif (currentDir === gitRoot) 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\treturn discovered\n}\n\n/**\n * Discover instruction files by walking UP from projectDir to gitRoot.\n * Implements OpenCode's \"first type wins\" pattern - searches for AGENTS.md first,\n * only checks CLAUDE.md if no AGENTS.md found, and CONTEXT.md only if neither found.\n *\n * Returns repo-relative paths, deepest first.\n *\n * Reference: https://github.com/sst/opencode/blob/dev/packages/opencode/src/session/instruction.ts#L75-L84\n */\nfunction discoverInstructionFiles(projectDir: string, gitRoot: string): string[] {\n\t// First type wins - check each type in priority order\n\tfor (const filename of INSTRUCTION_FILES) {\n\t\tconst matches = findInstructionsByType(filename, projectDir, gitRoot)\n\t\tif (matches.length > 0) {\n\t\t\treturn matches // Return immediately - first type wins\n\t\t}\n\t}\n\n\treturn []\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// REGISTRY INSTRUCTION LOADING\n// =============================================================================\n\n/**\n * Load and resolve registry-provided instruction paths from installed components.\n * Reads the receipt and resolves install-root-relative paths to absolute paths.\n *\n * @param installRoot - The install root directory (absolute)\n * @returns Array of absolute instruction paths (deduplicated)\n */\nasync function loadRegistryInstructionsFromReceipt(installRoot: string): Promise<string[]> {\n\tconst receipt = await readReceipt(installRoot)\n\n\t// Early exit: no receipt or no installed components\n\tif (!receipt || Object.keys(receipt.installed).length === 0) {\n\t\treturn []\n\t}\n\n\tconst allInstructions: string[] = []\n\n\t// Collect all instruction paths from all installed components\n\tfor (const [canonicalId, entry] of Object.entries(receipt.installed)) {\n\t\t// Guard: Skip components without opencode config\n\t\tif (!entry.opencode?.instructions) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst instructions = entry.opencode.instructions\n\t\t// Guard: Skip if not an array\n\t\tif (!Array.isArray(instructions)) {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Source description for error messages\n\t\tconst source = `${entry.registryName}/${entry.name} (${canonicalId})`\n\n\t\t// Resolve each instruction path (validates and expands globs)\n\t\tconst resolved = resolveRegistryInstructionPaths(instructions, installRoot, source)\n\t\tallInstructions.push(...resolved)\n\t}\n\n\t// Deduplicate (already done in resolveRegistryInstructionPaths, but safe to repeat)\n\treturn Array.from(new Set(allInstructions))\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 are 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\tprivate readonly registryInstructions: string[]\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\tregistryInstructions: string[],\n\t) {\n\t\tthis.cwd = cwd\n\t\tthis.profileName = profileName\n\t\tthis.profile = profile\n\t\tthis.localConfigDir = localConfigDir\n\t\tthis.registryInstructions = registryInstructions\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 * Profile Resolution:\n\t * 1. Check local `.opencode/ocx.jsonc` for `profile` field\n\t * 2. Fall back to options.profile\n\t * 3. Fall back to OCX_PROFILE env var\n\t * 4. Fall back to \"default\" profile (if it exists)\n\t * 5. No profile (base configs only)\n\t *\n\t * Explicit sources (local config, CLI, env) fail fast when invalid.\n\t * Only implicit/default resolution can fall back to base config.\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(cwd)\n\n\t\t// Resolve profile intent with explicit precedence:\n\t\t// local config > CLI option > environment > implicit default\n\t\tlet profileName: string | null = null\n\t\tlet profileSource: ProfileResolutionSource = \"none\"\n\t\tconst localConfigDir = findLocalConfigDir(cwd)\n\t\tif (localConfigDir) {\n\t\t\tconst localOcxPath = join(localConfigDir, OCX_CONFIG_FILE)\n\t\t\tif (existsSync(localOcxPath)) {\n\t\t\t\tconst localConfig = parseLocalOcxConfig(localOcxPath)\n\t\t\t\tif (localConfig.profile !== undefined) {\n\t\t\t\t\tprofileName = requireNonEmptyExplicitProfile(\n\t\t\t\t\t\tlocalConfig.profile,\n\t\t\t\t\t\t`local config at ${localOcxPath}`,\n\t\t\t\t\t)\n\t\t\t\t\tprofileSource = \"local-config\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Preserve short-circuit precedence:\n\t\t// once a higher-priority source is selected, lower-priority sources are ignored.\n\t\tif (profileName === null) {\n\t\t\tif (options?.profile !== undefined) {\n\t\t\t\tprofileName = requireNonEmptyExplicitProfile(options.profile, \"CLI option --profile\")\n\t\t\t\tprofileSource = \"cli\"\n\t\t\t} else if (process.env.OCX_PROFILE !== undefined) {\n\t\t\t\tprofileName = requireNonEmptyExplicitProfile(\n\t\t\t\t\tprocess.env.OCX_PROFILE,\n\t\t\t\t\t\"environment variable OCX_PROFILE\",\n\t\t\t\t)\n\t\t\t\tprofileSource = \"env\"\n\t\t\t}\n\t\t}\n\n\t\tconst isInitialized = await manager.isInitialized()\n\t\tif (isExplicitProfileSource(profileSource) && !isInitialized) {\n\t\t\tthrow new ProfilesNotInitializedError()\n\t\t}\n\n\t\tlet profile: Profile | null = null\n\n\t\tif (isInitialized) {\n\t\t\t// Explicit sources must fail fast: no fallback to default/base config.\n\t\t\tif (profileName !== null) {\n\t\t\t\tprofile = await manager.getLayered(profileName, cwd)\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\t// Implicit resolution can still fall back to base config.\n\t\t\t\t\tprofileName = await manager.resolveProfile()\n\t\t\t\t\tprofile = await manager.getLayered(profileName, cwd)\n\t\t\t\t\tprofileSource = \"default\"\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!(error instanceof ProfileNotFoundError) || error.profile !== \"default\") {\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\n\t\t\t\t\tprofileName = null\n\t\t\t\t\tprofile = null\n\t\t\t\t\tprofileSource = \"none\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Load registry-provided instructions from receipt\n\t\t// Install root selection:\n\t\t// - Profile active → profile directory\n\t\t// - Local config exists → project root (parent of .opencode)\n\t\t// - Otherwise → global config directory\n\t\tlet installRoot: string\n\t\tif (profile) {\n\t\t\t// Use resolved profile object, not profileName\n\t\t\t// profileName could be set but profile failed to load\n\t\t\tinstallRoot = getProfileDir(profileName as string)\n\t\t} else if (localConfigDir) {\n\t\t\t// Project root is parent of .opencode directory\n\t\t\tinstallRoot = join(localConfigDir, \"..\")\n\t\t} else {\n\t\t\tinstallRoot = getGlobalConfigPath()\n\t\t}\n\n\t\tconst registryInstructions = await loadRegistryInstructionsFromReceipt(installRoot)\n\n\t\treturn new ConfigResolver(cwd, profileName, profile, localConfigDir, registryInstructions)\n\t}\n\n\t/**\n\t * Resolve configuration with global profile support.\n\t *\n\t * - Registries: Profile OR local (isolated, not merged)\n\t * - OpenCode config: Always merged (profile + local) to match OpenCode layering.\n\t * Local opencode.jsonc always participates in merge regardless of exclude/include\n\t * patterns, because exclude/include controls instruction file discovery, not config merging.\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.mergeOpencode(opencode, this.profile.opencode)\n\t\t\t}\n\t\t}\n\n\t\t// 3. Check exclude/include patterns (for instruction files and OCX registries only)\n\t\tconst shouldLoadLocalOcx = this.shouldLoadLocalConfig()\n\n\t\t// 4. Apply local OCX registries ONLY when no profile active (isolation)\n\t\tif (!this.profile && shouldLoadLocalOcx && 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 (ALWAYS merges with profile)\n\t\t// Local opencode.jsonc always participates in merge regardless of exclude/include\n\t\t// patterns to match OpenCode's layering semantics.\n\t\tif (this.localConfigDir) {\n\t\t\tconst localOpencodeConfig = this.loadLocalOpencodeConfig()\n\t\t\tif (localOpencodeConfig) {\n\t\t\t\topencode = this.mergeOpencode(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.mergeOpencode(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 (for instruction files and OCX registries only)\n\t\tconst shouldLoadLocalOcx = this.shouldLoadLocalConfig()\n\n\t\t// 4. Apply local OCX registries ONLY when no profile active (isolation)\n\t\tif (!this.profile && shouldLoadLocalOcx && 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 (ALWAYS merges with profile)\n\t\t// Local opencode.jsonc always participates in merge regardless of exclude/include\n\t\t// patterns to match OpenCode's layering semantics.\n\t\tif (this.localConfigDir) {\n\t\t\tconst localOpencodeConfig = this.loadLocalOpencodeConfig()\n\t\t\tif (localOpencodeConfig) {\n\t\t\t\topencode = this.mergeOpencode(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 (supports worktrees)\n\t\tconst gitRoot = resolveGitRootSync(this.cwd)\n\t\tconst root = gitRoot\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.\n\t * Throws ConfigError if the file exists but is invalid.\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\tconst parsed = parseLocalOcxConfig(configPath)\n\t\treturn {\n\t\t\tregistries: parsed.registries,\n\t\t}\n\t}\n\n\t/**\n\t * Load local opencode.jsonc configuration.\n\t * Returns null if file doesn't exist.\n\t * Throws ConfigError if the file exists but is invalid.\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\treturn parseLocalOpencodeConfig(configPath)\n\t}\n\n\t/**\n\t * Discover instruction files matching OpenCode's exact behavior.\n\t *\n\t * Discovery order (top to bottom in merged file):\n\t * 1. Global AGENTS.md (or CLAUDE.md fallback for Claude Code compat)\n\t * 2. Global Profile AGENTS.md (when profile active)\n\t * 3. Registry-provided instructions (from installed components - resolved to absolute)\n\t * 4. Local (Project) files - first file type wins (AGENTS.md > CLAUDE.md > CONTEXT.md)\n\t *\n\t * exclude/include patterns apply ONLY to LOCAL (project) files.\n\t *\n\t * References:\n\t * - Global discovery: https://github.com/sst/opencode/blob/dev/packages/opencode/src/session/instruction.ts#L19-L29\n\t * - Project discovery: https://github.com/sst/opencode/blob/dev/packages/opencode/src/session/instruction.ts#L75-L84\n\t */\n\tprivate discoverInstructions(): string[] {\n\t\tconst instructions: string[] = []\n\n\t\t// 1. Global AGENTS.md (always first - lowest priority)\n\t\tconst globalConfigDir = getGlobalConfigPath()\n\t\tconst globalAgents = join(globalConfigDir, \"AGENTS.md\")\n\t\tif (existsSync(globalAgents)) {\n\t\t\tinstructions.push(globalAgents)\n\t\t} else if (!process.env.OPENCODE_DISABLE_CLAUDE_CODE_PROMPT) {\n\t\t\t// Claude Code fallback - check ~/.claude/CLAUDE.md\n\t\t\tconst claudeGlobal = join(homedir(), \".claude\", \"CLAUDE.md\")\n\t\t\tif (existsSync(claudeGlobal)) {\n\t\t\t\tinstructions.push(claudeGlobal)\n\t\t\t}\n\t\t}\n\n\t\t// 2. Global Profile AGENTS.md (when profile active)\n\t\tif (this.profile && this.profileName) {\n\t\t\tconst globalProfileAgents = join(getProfileDir(this.profileName), \"AGENTS.md\")\n\t\t\tif (existsSync(globalProfileAgents)) {\n\t\t\t\tinstructions.push(globalProfileAgents)\n\t\t\t}\n\t\t}\n\n\t\t// 3. Registry-provided instructions (from installed components)\n\t\t// Load from receipt and resolve install-root-relative paths to absolute\n\t\tconst registryInstructions = this.loadRegistryInstructions()\n\t\tinstructions.push(...registryInstructions)\n\n\t\t// 4. Local (Project) files - first file type wins, filtered by exclude/include\n\t\tconst gitRoot = resolveGitRootSync(this.cwd)\n\t\tconst discoveredFiles = discoverInstructionFiles(this.cwd, gitRoot)\n\n\t\t// Apply profile exclude/include patterns to LOCAL files only\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 projectInstructions = filteredFiles.map((f) => join(gitRoot, f))\n\t\tinstructions.push(...projectInstructions)\n\n\t\treturn instructions\n\t}\n\n\t/**\n\t * Load registry-provided instruction paths from installed components.\n\t * Returns cached data loaded during create().\n\t *\n\t * @returns Array of absolute instruction paths from registry components\n\t */\n\tprivate loadRegistryInstructions(): string[] {\n\t\treturn this.registryInstructions\n\t}\n\n\t/**\n\t * Wrapper for OpenCode config merging with type conversions.\n\t *\n\t * Casts between Record<string, unknown> and NormalizedOpencodeConfig.\n\t * Safe because inputs are validated at config loading boundary.\n\t * Uses the shared mergeOpencodeConfig utility which correctly handles:\n\t * - plugin array: concatenate + dedupe by canonical name (last wins)\n\t * - instructions array: concatenate + dedupe by exact string\n\t * - All other arrays: source replaces target (mergeDeep default)\n\t */\n\tprivate mergeOpencode(\n\t\ttarget: Record<string, unknown>,\n\t\tsource: Record<string, unknown>,\n\t): Record<string, unknown> {\n\t\treturn mergeOpencodeConfig(\n\t\t\ttarget as NormalizedOpencodeConfig,\n\t\t\tsource as NormalizedOpencodeConfig,\n\t\t) as Record<string, unknown>\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",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"/**\n * Shared dry-run utilities for consistent --dry-run output across commands\n */\n\nimport { highlight, logger } from \"./logger\"\n\n/** Individual action that would be performed */\nexport interface DryRunAction {\n\taction: \"add\" | \"remove\" | \"update\" | \"create\" | \"delete\" | \"modify\"\n\ttarget: string // e.g., \"shadcn/button\", \"registry:kit\", \"file:button.tsx\"\n\tdetails?: Record<string, unknown>\n}\n\n/** Validation result - REQUIRED, not optional */\nexport interface DryRunValidation {\n\tpassed: boolean\n\terrors?: string[] // Fatal issues that would cause failure\n\twarnings?: string[] // Non-fatal issues (e.g., modified files without --force)\n}\n\n/** Base result that all commands return */\nexport interface DryRunResult {\n\tdryRun: true\n\tcommand: string\n\twouldPerform: DryRunAction[]\n\tvalidation: DryRunValidation // Required, not optional\n\tsummary?: string\n}\n\n/** Output options */\nexport interface DryRunOutputOptions {\n\tjson?: boolean\n\tquiet?: boolean\n\thints?: string[] // Command-specific hints to show after output\n}\n\n/**\n * Output dry-run results with consistent formatting\n * @param result - The dry-run result to display\n * @param options - Output options (json, quiet, hints)\n */\nexport function outputDryRun(result: DryRunResult, options: DryRunOutputOptions = {}): void {\n\t// Guard: JSON output takes priority\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(result, null, 2))\n\t\treturn\n\t}\n\n\t// Guard: Quiet mode suppresses all output\n\tif (options.quiet) {\n\t\treturn\n\t}\n\n\t// Format text output\n\tlogger.info(highlight.dim(\"🔍 DRY RUN: No changes will be made\"))\n\tlogger.break()\n\n\t// Show what would be performed\n\tconst actionCount = result.wouldPerform.length\n\tif (actionCount === 0) {\n\t\tlogger.info(\"No actions would be performed.\")\n\t} else {\n\t\t// Group actions by type for cleaner output\n\t\tconst grouped = groupActionsByType(result.wouldPerform)\n\n\t\tfor (const [actionType, actions] of Object.entries(grouped)) {\n\t\t\tconst verb = getActionVerb(actionType)\n\t\t\tlogger.info(`Would ${verb} ${actions.length} item(s):`)\n\n\t\t\tfor (const action of actions) {\n\t\t\t\tconst detailsText = formatDetails(action.details)\n\t\t\t\tlogger.info(` • ${highlight.component(action.target)}${detailsText}`)\n\t\t\t}\n\n\t\t\tlogger.break()\n\t\t}\n\t}\n\n\t// Show summary if provided\n\tif (result.summary) {\n\t\tlogger.info(result.summary)\n\t\tlogger.break()\n\t}\n\n\t// Show validation errors\n\tif (result.validation.errors && result.validation.errors.length > 0) {\n\t\tlogger.error(\"Would fail with errors:\")\n\t\tfor (const error of result.validation.errors) {\n\t\t\tlogger.error(` • ${error}`)\n\t\t}\n\t\tlogger.break()\n\t}\n\n\t// Show validation warnings\n\tif (result.validation.warnings && result.validation.warnings.length > 0) {\n\t\tlogger.warn(\"Warnings:\")\n\t\tfor (const warning of result.validation.warnings) {\n\t\t\tlogger.warn(` • ${warning}`)\n\t\t}\n\t\tlogger.break()\n\t}\n\n\t// Show command-specific hints\n\tif (options.hints && options.hints.length > 0) {\n\t\tfor (const hint of options.hints) {\n\t\t\tlogger.info(highlight.dim(hint))\n\t\t}\n\t\tlogger.break()\n\t}\n\n\t// Final instruction\n\tlogger.info(highlight.dim(\"Run without --dry-run to apply changes.\"))\n}\n\n/**\n * Group actions by their type for organized output\n */\nfunction groupActionsByType(actions: DryRunAction[]): Record<string, DryRunAction[]> {\n\tconst grouped: Record<string, DryRunAction[]> = {}\n\n\tfor (const action of actions) {\n\t\tif (!grouped[action.action]) {\n\t\t\tgrouped[action.action] = []\n\t\t}\n\t\tgrouped[action.action]?.push(action)\n\t}\n\n\treturn grouped\n}\n\n/**\n * Convert action type to human-readable verb\n */\nfunction getActionVerb(actionType: string): string {\n\tconst verbs: Record<string, string> = {\n\t\tadd: \"add\",\n\t\tremove: \"remove\",\n\t\tdelete: \"delete\",\n\t\tupdate: \"update\",\n\t\tcreate: \"create\",\n\t\tmodify: \"modify\",\n\t}\n\n\treturn verbs[actionType] ?? actionType\n}\n\n/**\n * Format action details into readable text\n */\nfunction formatDetails(details?: Record<string, unknown>): string {\n\tif (!details || Object.keys(details).length === 0) {\n\t\treturn \"\"\n\t}\n\n\tconst pairs: string[] = []\n\tfor (const [key, value] of Object.entries(details ?? {})) {\n\t\tif (value !== undefined && value !== null) {\n\t\t\tpairs.push(`${key}: ${highlight.dim(String(value))}`)\n\t\t}\n\t}\n\n\treturn pairs.length > 0 ? ` (${pairs.join(\", \")})` : \"\"\n}\n",
|
|
65
65
|
"/**\n * Core utilities for OCX CLI\n */\n\nexport * from \"./content\"\nexport * from \"./env\"\nexport * from \"./errors\"\nexport * from \"./git-context\"\nexport * from \"./handle-error\"\nexport * from \"./instruction-paths\"\nexport * from \"./json-output\"\nexport * from \"./logger\"\nexport * from \"./path-helpers\"\nexport * from \"./shared-options\"\nexport * from \"./spinner\"\nexport * from \"./url\"\nexport * from \"./version-compat\"\n",
|
|
66
66
|
"/**\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",
|
|
67
|
-
"/**\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\tRegistryCompatibilityError,\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\tconflictType: error.conflictType,\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\t...(error.existingName && { existingName: error.existingName }),\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 RegistryCompatibilityError) {\n\t\tconst details: Record<string, unknown> = {\n\t\t\turl: error.url,\n\t\t\tissue: error.issue,\n\t\t\tremediation: error.remediation,\n\t\t}\n\t\tif (error.schemaUrl !== undefined) details.schemaUrl = error.schemaUrl\n\t\tif (error.supportedMajor !== undefined) details.supportedMajor = error.supportedMajor\n\t\tif (error.detectedMajor !== undefined) details.detectedMajor = error.detectedMajor\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\tdetails,\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 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",
|
|
67
|
+
"/**\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\tRegistryCompatibilityError,\n\tRegistryExistsError,\n\tValidationFailedError,\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\tconflictType: error.conflictType,\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\t...(error.existingName && { existingName: error.existingName }),\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\t\tif (error.phase) details.phase = error.phase\n\t\tif (error.qualifiedName) details.qualifiedName = error.qualifiedName\n\t\tif (error.registryContext) details.registryContext = error.registryContext\n\t\tif (error.registryName) details.registryName = error.registryName\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 RegistryCompatibilityError) {\n\t\tconst details: Record<string, unknown> = {\n\t\t\turl: error.url,\n\t\t\tissue: error.issue,\n\t\t\tremediation: error.remediation,\n\t\t}\n\t\tif (error.schemaUrl !== undefined) details.schemaUrl = error.schemaUrl\n\t\tif (error.supportedMajor !== undefined) details.supportedMajor = error.supportedMajor\n\t\tif (error.detectedMajor !== undefined) details.detectedMajor = error.detectedMajor\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\tdetails,\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 ValidationFailedError) {\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: error.details as unknown as Record<string, unknown>,\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 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",
|
|
68
68
|
"/**\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 { classifyRegistrySchemaIssue, normalizeFile, registrySchema } from \"../schemas/registry\"\nimport type { DryRunResult } from \"../utils/dry-run\"\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\t/** Dry-run mode: validate and show what would be built */\n\tdryRun?: boolean\n}\n\nexport interface BuildRegistryResult {\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 or DryRunResult\n * @throws {BuildRegistryError} If validation fails or files are missing\n */\nexport async function buildRegistry(\n\toptions: BuildRegistryOptions,\n): Promise<BuildRegistryResult | DryRunResult> {\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\tconst schemaIssue = classifyRegistrySchemaIssue(registryData)\n\tif (schemaIssue) {\n\t\tthrow new BuildRegistryError(`Registry schema compatibility failed (${schemaIssue.issue})`, [\n\t\t\tschemaIssue.remediation,\n\t\t\t...(schemaIssue.schemaUrl !== undefined ? [`Invalid $schema: ${schemaIssue.schemaUrl}`] : []),\n\t\t])\n\t}\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// Dry-run: Calculate what would be built without creating files\n\tif (options.dryRun) {\n\t\tconst actions = []\n\n\t\t// Check for missing source files\n\t\tfor (const component of registry.components) {\n\t\t\t// Would create packument file\n\t\t\tactions.push({\n\t\t\t\taction: \"create\" as const,\n\t\t\t\ttarget: `file:components/${component.name}.json`,\n\t\t\t\tdetails: { type: \"packument\" },\n\t\t\t})\n\n\t\t\t// Check source files exist\n\t\t\tfor (const rawFile of component.files) {\n\t\t\t\tconst file = normalizeFile(rawFile, component.type)\n\t\t\t\tconst sourceFilePath = join(sourcePath, \"files\", file.path)\n\n\t\t\t\tif (!(await Bun.file(sourceFilePath).exists())) {\n\t\t\t\t\tvalidationErrors.push(`${component.name}: Source file not found at ${sourceFilePath}`)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Would copy file\n\t\t\t\tactions.push({\n\t\t\t\t\taction: \"create\" as const,\n\t\t\t\t\ttarget: `file:components/${component.name}/${file.path}`,\n\t\t\t\t\tdetails: { source: sourceFilePath },\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Would create index.json\n\t\tactions.push({\n\t\t\taction: \"create\" as const,\n\t\t\ttarget: \"file:index.json\",\n\t\t\tdetails: { type: \"registry index\" },\n\t\t})\n\n\t\t// Would create .well-known/ocx.json\n\t\tactions.push({\n\t\t\taction: \"create\" as const,\n\t\t\ttarget: \"file:.well-known/ocx.json\",\n\t\t\tdetails: { type: \"discovery file\" },\n\t\t})\n\n\t\t// Calculate total files\n\t\tconst totalFiles = actions.filter((a) => a.action === \"create\").length\n\n\t\treturn {\n\t\t\tdryRun: true,\n\t\t\tcommand: \"build\",\n\t\t\twouldPerform: actions,\n\t\t\tvalidation: {\n\t\t\t\tpassed: validationErrors.length === 0,\n\t\t\t\terrors: validationErrors.length > 0 ? validationErrors : undefined,\n\t\t\t},\n\t\t\tsummary: `Would build ${registry.components.length} components, ${totalFiles} files to ${outPath}`,\n\t\t}\n\t}\n\n\t// Normal mode: Create output directory structure\n\tconst componentsDir = join(outPath, \"components\")\n\tawait mkdir(componentsDir, { recursive: true })\n\n\t// V2: Generate packument and copy files for each component\n\t// Use component-level versioning (default to 1.0.0)\n\tconst DEFAULT_COMPONENT_VERSION = \"1.0.0\"\n\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[DEFAULT_COMPONENT_VERSION]: component,\n\t\t\t},\n\t\t\t\"dist-tags\": {\n\t\t\t\tlatest: DEFAULT_COMPONENT_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 (if any - bundles may have no files, only dependencies)\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// V2: Generate index.json at the root (no registry version field)\n\tconst index = {\n\t\t$schema: registry.$schema,\n\t\tname: registry.name,\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\tcomponentsCount: registry.components.length,\n\t\toutputPath: outPath,\n\t}\n}\n",
|
|
69
69
|
"/**\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",
|
|
70
70
|
"/**\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/** 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 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 * 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",
|
|
@@ -95,17 +95,21 @@
|
|
|
95
95
|
"/**\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",
|
|
96
96
|
"import { ConflictError } from \"./errors\"\n\nexport interface PlannedWrite {\n\tabsolutePath: string\n\trelativePath: string\n\tcontent: Buffer\n\tsource: string\n}\n\n/**\n * Registers an in-flight write target and fails loud on duplicates.\n * Policy: duplicate targets are always rejected, even for identical content.\n */\nexport function registerPlannedWriteOrThrow(\n\tplannedWrites: Map<string, PlannedWrite>,\n\tcandidate: PlannedWrite,\n): void {\n\tconst existing = plannedWrites.get(candidate.absolutePath)\n\tif (!existing) {\n\t\tplannedWrites.set(candidate.absolutePath, candidate)\n\t\treturn\n\t}\n\n\tconst contentRelation = existing.content.equals(candidate.content)\n\t\t? \"identical content\"\n\t\t: \"different content\"\n\n\tthrow new ConflictError(\n\t\t`Intra-batch target collision at \"${candidate.relativePath}\". ` +\n\t\t\t`Both \"${existing.source}\" and \"${candidate.source}\" resolve to this path with ${contentRelation}. ` +\n\t\t\t\"Rename one manifest target so each component writes to a unique path.\",\n\t)\n}\n",
|
|
97
97
|
"/**\n * Receipt utilities for V2 component tracking\n *\n * Handles file integrity checking, manual edit detection, and receipt operations.\n */\n\nimport { createHash } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { join } from \"node:path\"\nimport type { InstalledComponent } from \"../schemas/config\"\nimport { createCanonicalId, parseCanonicalId } from \"../schemas/config\"\n\n/**\n * Hash file content using SHA-256.\n * Reuses existing hash infrastructure from add.ts and update.ts.\n *\n * @param content - Buffer or string to hash\n * @returns Lowercase hex-encoded SHA256 hash\n */\nexport function hashContent(content: string | Buffer): string {\n\treturn createHash(\"sha256\").update(content).digest(\"hex\")\n}\n\n/**\n * Hash a bundle of files deterministically.\n * Files are sorted by path for consistent hashing.\n *\n * @param files - Array of file objects with path and content\n * @returns SHA-256 hash of the entire bundle\n */\nexport async 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 = 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 * Check if files in a component have been manually edited.\n * Compares current file hashes against receipt baselines.\n *\n * @param installRoot - Install root directory\n * @param entry - Installed component entry from receipt\n * @returns Object with overall status and per-file details\n */\nexport async function checkFileIntegrity(\n\tinstallRoot: string,\n\tentry: InstalledComponent,\n): Promise<{\n\tintact: boolean\n\tmodified: string[]\n\tmissing: string[]\n\tdetails: Array<{ path: string; status: \"intact\" | \"modified\" | \"missing\" }>\n}> {\n\tconst modified: string[] = []\n\tconst missing: string[] = []\n\tconst details: Array<{ path: string; status: \"intact\" | \"modified\" | \"missing\" }> = []\n\n\tfor (const fileEntry of entry.files) {\n\t\tconst filePath = join(installRoot, fileEntry.path)\n\n\t\tif (!existsSync(filePath)) {\n\t\t\tmissing.push(fileEntry.path)\n\t\t\tdetails.push({ path: fileEntry.path, status: \"missing\" })\n\t\t\tcontinue\n\t\t}\n\n\t\tconst currentContent = await Bun.file(filePath).text()\n\t\tconst currentHash = hashContent(currentContent)\n\n\t\tif (currentHash !== fileEntry.hash) {\n\t\t\tmodified.push(fileEntry.path)\n\t\t\tdetails.push({ path: fileEntry.path, status: \"modified\" })\n\t\t} else {\n\t\t\tdetails.push({ path: fileEntry.path, status: \"intact\" })\n\t\t}\n\t}\n\n\treturn {\n\t\tintact: modified.length === 0 && missing.length === 0,\n\t\tmodified,\n\t\tmissing,\n\t\tdetails,\n\t}\n}\n\nexport { createCanonicalId, parseCanonicalId }\n",
|
|
98
|
-
"/**\n * Build Command (for Registry Authors)\n *\n * CLI wrapper around the buildRegistry library function.\n */\n\nimport { relative, resolve } from \"node:path\"\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { BuildRegistryError, type BuildRegistryResult, buildRegistry } from \"../lib/build-registry\"\nimport { outputDryRun } from \"../utils/dry-run\"\nimport { createSpinner, handleError, logger, outputJson } from \"../utils/index\"\n\ninterface BuildOptions {\n\tcwd: string\n\tout: string\n\tjson: boolean\n\tquiet: boolean\n\tdryRun?: 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.option(\"--dry-run\", \"Validate and show what would be built\")\n\t\t.action(async (path: string, options: BuildOptions) => {\n\t\t\ttry {\n\t\t\t\tconst sourcePath = resolve(options.cwd, path)\n\t\t\t\tconst outPath = resolve(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\tdryRun: options.dryRun,\n\t\t\t\t})\n\n\t\t\t\t// Handle dry-run result\n\t\t\t\tif (\"dryRun\" in result && result.dryRun) {\n\t\t\t\t\tif (!options.json) spinner.stop()\n\t\t\t\t\toutputDryRun(result, { json: options.json, quiet: options.quiet })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Type narrowing: result is now BuildRegistryResult\n\t\t\t\tconst buildResult = result as BuildRegistryResult\n\n\t\t\t\tif (!options.json) {\n\t\t\t\t\tconst msg = `Built ${buildResult.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 ${buildResult.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\tcomponents: buildResult.componentsCount,\n\t\t\t\t\t\t\toutput: buildResult.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 (
|
|
98
|
+
"/**\n * Build Command (for Registry Authors)\n *\n * CLI wrapper around the buildRegistry library function.\n */\n\nimport { relative, resolve } from \"node:path\"\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { BuildRegistryError, type BuildRegistryResult, buildRegistry } from \"../lib/build-registry\"\nimport { runCompleteValidation } from \"../lib/validation-runner\"\nimport type { LoadRegistryErrorKind } from \"../lib/validators\"\nimport { outputDryRun } from \"../utils/dry-run\"\nimport {\n\tEXIT_CODES,\n\tNotFoundError,\n\tOCXError,\n\tValidationFailedError,\n\ttype ValidationFailureDetails,\n} from \"../utils/errors\"\nimport { createSpinner, handleError, logger, outputJson } from \"../utils/index\"\nimport { categorizeValidationErrors, summarizeValidationErrors } from \"../utils/validation-errors\"\n\ninterface BuildOptions {\n\tcwd: string\n\tout: string\n\tjson: boolean\n\tquiet: boolean\n\tdryRun?: boolean\n\tshowValidation: boolean\n}\n\nfunction createLoadValidationError(message: string, errorKind?: LoadRegistryErrorKind): Error {\n\tif (errorKind === \"not_found\") {\n\t\treturn new NotFoundError(message)\n\t}\n\n\tif (errorKind === \"parse_error\") {\n\t\treturn new OCXError(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t}\n\n\treturn new OCXError(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n}\n\nfunction createValidationFailureError(\n\terrors: string[],\n\tfailureType: \"schema\" | \"rules\",\n): ValidationFailedError {\n\tconst summary = summarizeValidationErrors(errors, {\n\t\tschemaErrors: failureType === \"schema\" ? errors.length : 0,\n\t})\n\n\tconst details: ValidationFailureDetails = {\n\t\tvalid: false,\n\t\terrors,\n\t\tsummary: {\n\t\t\tvalid: false,\n\t\t\ttotalErrors: summary.totalErrors,\n\t\t\tschemaErrors: summary.schemaErrors,\n\t\t\tsourceFileErrors: summary.sourceFileErrors,\n\t\t\tcircularDependencyErrors: summary.circularDependencyErrors,\n\t\t\tduplicateTargetErrors: summary.duplicateTargetErrors,\n\t\t\totherErrors: summary.otherErrors,\n\t\t},\n\t}\n\n\treturn new ValidationFailedError(details)\n}\n\nfunction outputValidationFailures(errors: string[], failureType: \"schema\" | \"rules\"): void {\n\tif (failureType === \"schema\") {\n\t\tlogger.error(\"✗ Registry schema\")\n\t\tfor (const error of errors) {\n\t\t\tconsole.log(kleur.red(` ${error}`))\n\t\t}\n\t\treturn\n\t}\n\n\tconst categorized = categorizeValidationErrors(errors)\n\n\tif (categorized.file.length > 0) {\n\t\tlogger.error(\"✗ Source files\")\n\t\tfor (const error of categorized.file) {\n\t\t\tconsole.log(kleur.red(` ${error}`))\n\t\t}\n\t}\n\n\tif (categorized.circular.length > 0) {\n\t\tlogger.error(\"✗ Circular dependencies\")\n\t\tfor (const error of categorized.circular) {\n\t\t\tconsole.log(kleur.red(` ${error}`))\n\t\t}\n\t}\n\n\tif (categorized.duplicate.length > 0) {\n\t\tlogger.error(\"✗ Duplicate targets\")\n\t\tfor (const error of categorized.duplicate) {\n\t\t\tconsole.log(kleur.red(` ${error}`))\n\t\t}\n\t}\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.option(\"--dry-run\", \"Validate and show what would be built\")\n\t\t.option(\"--show-validation\", \"Display validation results before building\", false)\n\t\t.action(async (path: string, options: BuildOptions) => {\n\t\t\ttry {\n\t\t\t\tconst sourcePath = resolve(options.cwd, path)\n\t\t\t\tconst outPath = resolve(options.cwd, options.out)\n\n\t\t\t\tif (options.showValidation) {\n\t\t\t\t\tconst shouldDisplayValidation = !options.json && !options.quiet\n\t\t\t\t\tif (shouldDisplayValidation) {\n\t\t\t\t\t\tlogger.info(\"Running validation checks...\")\n\t\t\t\t\t}\n\n\t\t\t\t\tconst validationResult = await runCompleteValidation(sourcePath, {\n\t\t\t\t\t\tskipDuplicateTargets: false,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (!validationResult.success) {\n\t\t\t\t\t\tconst [firstError = \"Registry validation failed\"] = validationResult.errors\n\n\t\t\t\t\t\tif (validationResult.failureType === \"load\") {\n\t\t\t\t\t\t\tthrow createLoadValidationError(firstError, validationResult.loadErrorKind)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst failureType = validationResult.failureType === \"schema\" ? \"schema\" : \"rules\"\n\t\t\t\t\t\tconst validationError = createValidationFailureError(\n\t\t\t\t\t\t\tvalidationResult.errors,\n\t\t\t\t\t\t\tfailureType,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\t\tthrow validationError\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!options.quiet) {\n\t\t\t\t\t\t\toutputValidationFailures(validationResult.errors, failureType)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tprocess.exit(validationError.exitCode)\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shouldDisplayValidation) {\n\t\t\t\t\t\tlogger.success(\"✓ Schema compatibility and structure\")\n\t\t\t\t\t\tlogger.success(\"✓ Source files\")\n\t\t\t\t\t\tlogger.success(\"✓ No circular dependencies\")\n\t\t\t\t\t\tlogger.success(\"✓ No duplicate targets\")\n\t\t\t\t\t\tconsole.log(\"\")\n\t\t\t\t\t}\n\t\t\t\t}\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\tdryRun: options.dryRun,\n\t\t\t\t})\n\n\t\t\t\t// Handle dry-run result\n\t\t\t\tif (\"dryRun\" in result && result.dryRun) {\n\t\t\t\t\tif (!options.json) spinner.stop()\n\t\t\t\t\toutputDryRun(result, { json: options.json, quiet: options.quiet })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Type narrowing: result is now BuildRegistryResult\n\t\t\t\tconst buildResult = result as BuildRegistryResult\n\n\t\t\t\tif (!options.json) {\n\t\t\t\t\tconst msg = `Built ${buildResult.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 ${buildResult.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\tcomponents: buildResult.componentsCount,\n\t\t\t\t\t\t\toutput: buildResult.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\thandleError(error, { json: true })\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!options.quiet) {\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",
|
|
99
|
+
"/**\n * Registry Validation Library\n *\n * Pure validation functions for registry source validation.\n * Shared by both validate command and build command.\n */\n\nimport { join, posix } from \"node:path\"\nimport { type ParseError, parse as parseJsonc, printParseErrorCode } from \"jsonc-parser\"\nimport type { Registry } from \"../schemas/registry\"\nimport { classifyRegistrySchemaIssue, normalizeFile, registrySchema } from \"../schemas/registry\"\n\nexport interface ValidationResult<T = unknown> {\n\tvalid: boolean\n\terrors: string[]\n\twarnings?: string[]\n\tdata?: T\n}\n\nexport type LoadRegistryErrorKind = \"not_found\" | \"parse_error\"\n\nexport interface LoadRegistryResult {\n\tsuccess: boolean\n\tdata?: unknown\n\terror?: string\n\terrorKind?: LoadRegistryErrorKind\n}\n\n/**\n * Format JSONC parse errors into a readable error message.\n */\nfunction formatJsoncParseError(parseErrors: ParseError[]): string {\n\tif (parseErrors.length === 0) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\tconst firstError = parseErrors[0]\n\tif (!firstError) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\treturn `${printParseErrorCode(firstError.error)} at offset ${firstError.offset}`\n}\n\n/**\n * Load and parse a registry source file from a directory.\n *\n * Looks for registry.jsonc first, then registry.json.\n * Supports JSONC format with comments and trailing commas.\n *\n * @param sourcePath - Path to the directory containing the registry file\n * @returns Result with parsed data or error message\n */\nexport async function loadRegistrySource(sourcePath: string): Promise<LoadRegistryResult> {\n\tconst jsoncFile = Bun.file(`${sourcePath}/registry.jsonc`)\n\tconst jsonFile = Bun.file(`${sourcePath}/registry.json`)\n\tconst jsoncExists = await jsoncFile.exists()\n\tconst jsonExists = await jsonFile.exists()\n\n\tif (!jsoncExists && !jsonExists) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: \"No registry.jsonc or registry.json found in source directory\",\n\t\t\terrorKind: \"not_found\",\n\t\t}\n\t}\n\n\tconst registryFile = jsoncExists ? jsoncFile : jsonFile\n\tconst fileName = jsoncExists ? \"registry.jsonc\" : \"registry.json\"\n\tconst content = await registryFile.text()\n\n\tconst parseErrors: ParseError[] = []\n\tconst data = parseJsonc(content, parseErrors, { allowTrailingComma: true })\n\n\tif (parseErrors.length > 0) {\n\t\tconst errorDetail = formatJsoncParseError(parseErrors)\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: `Invalid JSONC in ${fileName}: ${errorDetail}`,\n\t\t\terrorKind: \"parse_error\",\n\t\t}\n\t}\n\n\treturn {\n\t\tsuccess: true,\n\t\tdata,\n\t}\n}\n\n/**\n * Validate a registry's schema compatibility and structure.\n *\n * This combines schema compatibility check (v1 vs v2) with schema validation.\n * It's a higher-level function that includes both checks.\n *\n * @param registryData - The parsed registry object\n * @param sourcePath - Path to the registry source (for error messages)\n * @returns Validation result with parsed data\n */\nexport function validateRegistrySchema(\n\tregistryData: unknown,\n\tsourcePath: string,\n): ValidationResult<Registry> {\n\t// Check schema compatibility first\n\tconst schemaIssue = classifyRegistrySchemaIssue(registryData)\n\tif (schemaIssue) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: [`Schema compatibility issue: ${schemaIssue.issue} - ${schemaIssue.remediation}`],\n\t\t}\n\t}\n\n\t// Then validate against the schema\n\treturn validateRegistrySource(registryData, sourcePath)\n}\n\n/**\n * Validate a registry source object against the schema.\n *\n * @param registryData - The parsed registry object\n * @param sourcePath - Path to the registry source (for error messages)\n * @returns Validation result with parsed data\n */\nexport function validateRegistrySource(\n\tregistryData: unknown,\n\t_sourcePath: string,\n): ValidationResult<Registry> {\n\tconst parseResult = registrySchema.safeParse(registryData)\n\n\tif (!parseResult.success) {\n\t\tconst errors = parseResult.error.errors.map((e) => `${e.path.join(\".\")}: ${e.message}`)\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors,\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: true,\n\t\terrors: [],\n\t\tdata: parseResult.data,\n\t}\n}\n\n/**\n * Validate that all source files referenced in the registry exist.\n *\n * @param registry - The validated registry object\n * @param sourcePath - Path to the registry source directory\n * @returns Validation result with file existence errors\n */\nexport async function validateSourceFiles(\n\tregistry: Registry,\n\tsourcePath: string,\n): Promise<ValidationResult> {\n\tconst errors: string[] = []\n\n\tfor (const component of registry.components) {\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\n\t\t\tif (!(await Bun.file(sourceFilePath).exists())) {\n\t\t\t\terrors.push(`${component.name}: Source file not found at ${file.path}`)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: errors.length === 0,\n\t\terrors,\n\t}\n}\n\n/**\n * Validate that there are no circular dependencies in the registry.\n *\n * Uses depth-first search to detect cycles in the component dependency graph.\n * Only validates same-registry dependencies (bare names without \"/\").\n *\n * @param registry - The validated registry object\n * @returns Validation result with circular dependency errors\n */\nexport function validateCircularDependencies(registry: Registry): ValidationResult {\n\tconst errors: string[] = []\n\tconst componentMap = new Map(registry.components.map((c) => [c.name, c]))\n\n\tfunction detectCycle(\n\t\tcomponentName: string,\n\t\tvisiting: Set<string>,\n\t\tvisited: Set<string>,\n\t\tpath: string[],\n\t): string | null {\n\t\t// If we're currently visiting this node, we found a cycle\n\t\tif (visiting.has(componentName)) {\n\t\t\treturn [...path, componentName].join(\" -> \")\n\t\t}\n\n\t\t// If already fully visited, no cycle from this path\n\t\tif (visited.has(componentName)) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst component = componentMap.get(componentName)\n\t\tif (!component) {\n\t\t\treturn null\n\t\t}\n\n\t\t// Mark as currently visiting\n\t\tvisiting.add(componentName)\n\t\tpath.push(componentName)\n\n\t\t// Check all dependencies\n\t\tfor (const dep of component.dependencies) {\n\t\t\t// Only check same-registry deps (bare names without \"/\")\n\t\t\tif (dep.includes(\"/\")) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst cycle = detectCycle(dep, visiting, visited, path)\n\t\t\tif (cycle) {\n\t\t\t\treturn cycle\n\t\t\t}\n\t\t}\n\n\t\t// Done visiting this node\n\t\tvisiting.delete(componentName)\n\t\tvisited.add(componentName)\n\t\tpath.pop()\n\n\t\treturn null\n\t}\n\n\tconst globalVisited = new Set<string>()\n\n\tfor (const component of registry.components) {\n\t\tif (globalVisited.has(component.name)) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst cycle = detectCycle(component.name, new Set(), globalVisited, [])\n\t\tif (cycle) {\n\t\t\terrors.push(`Circular dependency detected: ${cycle}`)\n\t\t\t// Only report the first cycle found\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: errors.length === 0,\n\t\terrors,\n\t}\n}\n\n/**\n * Validate that there are no duplicate target paths across components.\n *\n * @param registry - The validated registry object\n * @returns Validation result with duplicate target errors\n */\nexport function validateDuplicateTargets(registry: Registry): ValidationResult {\n\tconst errors: string[] = []\n\tconst targetMap = new Map<string, { componentName: string }>()\n\n\tconst canonicalizeTargetForComparison = (target: string): string => {\n\t\tconst normalizedUnicode = target.normalize(\"NFC\")\n\t\tconst unifiedSeparators = normalizedUnicode.replace(/\\\\/g, \"/\")\n\t\tconst normalizedTarget = posix.normalize(unifiedSeparators)\n\t\treturn normalizedTarget.replace(/^\\.\\//, \"\")\n\t}\n\n\tfor (const component of registry.components) {\n\t\tfor (const rawFile of component.files) {\n\t\t\tconst file = normalizeFile(rawFile, component.type)\n\t\t\tconst canonicalTarget = canonicalizeTargetForComparison(file.target)\n\t\t\tconst existing = targetMap.get(canonicalTarget)\n\n\t\t\tif (existing) {\n\t\t\t\terrors.push(\n\t\t\t\t\t`Duplicate target \"${canonicalTarget}\" in components \"${existing.componentName}\" and \"${component.name}\"`,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\ttargetMap.set(canonicalTarget, {\n\t\t\t\t\tcomponentName: component.name,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: errors.length === 0,\n\t\terrors,\n\t}\n}\n\nexport interface ValidateRegistryOptions {\n\tskipDuplicateTargets?: boolean\n}\n\n/**\n * Validate a registry's structure using a generator that yields errors.\n *\n * This generator runs all validators in order and yields each error as it's found.\n * This eliminates duplication of calling all validators in the correct order.\n *\n * @param registry - The validated registry object\n * @param sourcePath - Path to the registry source directory\n * @param options - Validation options\n * @yields Individual validation error messages\n */\nexport async function* validateRegistryWithOptions(\n\tregistry: Registry,\n\tsourcePath: string,\n\toptions: ValidateRegistryOptions = {},\n): AsyncGenerator<string, void, undefined> {\n\t// Validate source files exist\n\tconst filesResult = await validateSourceFiles(registry, sourcePath)\n\tfor (const error of filesResult.errors) {\n\t\tyield error\n\t}\n\n\t// Validate no circular dependencies\n\tconst circularResult = validateCircularDependencies(registry)\n\tfor (const error of circularResult.errors) {\n\t\tyield error\n\t}\n\n\t// Validate no duplicate targets (unless skipped)\n\tif (!options.skipDuplicateTargets) {\n\t\tconst duplicateTargetsResult = validateDuplicateTargets(registry)\n\t\tfor (const error of duplicateTargetsResult.errors) {\n\t\t\tyield error\n\t\t}\n\t}\n}\n",
|
|
100
|
+
"/**\n * Validation Runner\n *\n * Shared validation workflow for both build and validate commands.\n */\n\nimport type { Registry } from \"../schemas/registry\"\nimport {\n\ttype LoadRegistryErrorKind,\n\tloadRegistrySource,\n\ttype ValidateRegistryOptions,\n\tvalidateRegistrySchema,\n\tvalidateRegistryWithOptions,\n} from \"./validators\"\n\nexport type ValidationFailureType = \"load\" | \"schema\" | \"rules\"\n\nexport interface CompleteValidationResult {\n\tsuccess: boolean\n\terrors: string[]\n\tregistry?: Registry\n\tfailureType?: ValidationFailureType\n\tloadErrorKind?: LoadRegistryErrorKind\n}\n\n/**\n * Run complete validation workflow: load, validate schema, and run all validators.\n *\n * @param sourcePath - Path to the registry source directory\n * @param options - Validation options\n * @returns Validation result with registry data if successful\n */\nexport async function runCompleteValidation(\n\tsourcePath: string,\n\toptions: ValidateRegistryOptions = {},\n): Promise<CompleteValidationResult> {\n\t// Load registry file\n\tconst loadResult = await loadRegistrySource(sourcePath)\n\tif (!loadResult.success) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terrors: [loadResult.error || \"Failed to load registry\"],\n\t\t\tfailureType: \"load\",\n\t\t\tloadErrorKind: loadResult.errorKind,\n\t\t}\n\t}\n\n\t// Validate schema (compatibility + structure)\n\tconst schemaResult = validateRegistrySchema(loadResult.data, sourcePath)\n\tif (!schemaResult.valid) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terrors: schemaResult.errors,\n\t\t\tfailureType: \"schema\",\n\t\t}\n\t}\n\n\t// Use the parsed and validated registry data\n\tconst registry = schemaResult.data\n\tif (!registry) {\n\t\tthrow new Error(\"Registry validation succeeded but returned no parsed data\")\n\t}\n\n\t// Collect all validation errors\n\tconst validationErrors: string[] = []\n\tfor await (const error of validateRegistryWithOptions(registry, sourcePath, options)) {\n\t\tvalidationErrors.push(error)\n\t}\n\n\tif (validationErrors.length > 0) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terrors: validationErrors,\n\t\t\tfailureType: \"rules\",\n\t\t}\n\t}\n\n\treturn {\n\t\tsuccess: true,\n\t\terrors: [],\n\t\tregistry,\n\t}\n}\n",
|
|
101
|
+
"/**\n * Validation Error Utilities\n *\n * Shared utilities for categorizing and displaying validation errors.\n */\n\nexport interface CategorizedErrors {\n\tfile: string[]\n\tcircular: string[]\n\tduplicate: string[]\n}\n\nexport interface ValidationErrorSummary {\n\tvalid: boolean\n\ttotalErrors: number\n\tschemaErrors: number\n\tsourceFileErrors: number\n\tcircularDependencyErrors: number\n\tduplicateTargetErrors: number\n\totherErrors: number\n}\n\n/**\n * Categorize validation errors by type.\n *\n * @param errors - Array of validation error messages\n * @returns Object with categorized errors\n */\nexport function categorizeValidationErrors(errors: string[]): CategorizedErrors {\n\treturn {\n\t\tfile: errors.filter((e) => e.includes(\"Source file not found\")),\n\t\tcircular: errors.filter((e) => e.includes(\"Circular dependency\")),\n\t\tduplicate: errors.filter((e) => e.includes(\"Duplicate target\")),\n\t}\n}\n\n/**\n * Display categorized validation errors with headings.\n *\n * @param categorized - Categorized errors object\n * @param logFn - Function to output messages (defaults to console.log)\n */\nexport function displayCategorizedErrors(\n\tcategorized: CategorizedErrors,\n\tlogFn: (msg: string) => void = console.log,\n): void {\n\tif (categorized.file.length > 0) {\n\t\tlogFn(\"✗ Source files\")\n\t\tfor (const error of categorized.file) {\n\t\t\tlogFn(` ${error}`)\n\t\t}\n\t}\n\n\tif (categorized.circular.length > 0) {\n\t\tlogFn(\"✗ Circular dependencies\")\n\t\tfor (const error of categorized.circular) {\n\t\t\tlogFn(` ${error}`)\n\t\t}\n\t}\n\n\tif (categorized.duplicate.length > 0) {\n\t\tlogFn(\"✗ Duplicate targets\")\n\t\tfor (const error of categorized.duplicate) {\n\t\t\tlogFn(` ${error}`)\n\t\t}\n\t}\n}\n\n/**\n * Build a stable summary object for validation results.\n *\n * @param errors - Validation error messages\n * @param options - Optional overrides for explicit schema errors\n */\nexport function summarizeValidationErrors(\n\terrors: string[],\n\toptions: { schemaErrors?: number } = {},\n): ValidationErrorSummary {\n\tconst categorized = categorizeValidationErrors(errors)\n\tconst schemaErrors = options.schemaErrors ?? 0\n\tconst totalErrors = errors.length\n\tconst otherErrors = Math.max(\n\t\t0,\n\t\ttotalErrors -\n\t\t\tschemaErrors -\n\t\t\tcategorized.file.length -\n\t\t\tcategorized.circular.length -\n\t\t\tcategorized.duplicate.length,\n\t)\n\n\treturn {\n\t\tvalid: totalErrors === 0,\n\t\ttotalErrors,\n\t\tschemaErrors,\n\t\tsourceFileErrors: categorized.file.length,\n\t\tcircularDependencyErrors: categorized.circular.length,\n\t\tduplicateTargetErrors: categorized.duplicate.length,\n\t\totherErrors,\n\t}\n}\n",
|
|
99
102
|
"/**\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",
|
|
100
103
|
"/**\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",
|
|
101
104
|
"/**\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",
|
|
102
105
|
"/**\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, REGISTRY_SCHEMA_LATEST_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\"\nimport { addCommonOptions, addGlobalOption, addVerboseOption } from \"../utils/shared-options\"\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?: string\n\tnamespace?: string\n\tauthor?: string\n\tcanary?: boolean\n\tlocal?: string\n\tglobal?: boolean\n}\n\nexport function registerInitCommand(program: Command): void {\n\tconst cmd = program.command(\"init\").description(\"Initialize OCX configuration in your project\")\n\n\taddCommonOptions(cmd)\n\taddVerboseOption(cmd)\n\taddGlobalOption(cmd)\n\n\tcmd\n\t\t.option(\"--registry <path>\", \"Scaffold a new OCX registry project at path\")\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.action(async (options: InitOptions) => {\n\t\t\ttry {\n\t\t\t\tif (options.registry) {\n\t\t\t\t\tawait runInitRegistry(options.registry, 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> --global\")\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(registryPath: string, options: InitOptions): Promise<void> {\n\tconst cwd = registryPath\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) {\n\t\tthrow new ConflictError(\n\t\t\t\"Directory is not empty. Remove existing files or choose a different directory.\",\n\t\t)\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\tif (file === \"registry.jsonc\") {\n\t\t\tif (/\"\\$schema\"\\s*:/.test(content)) {\n\t\t\t\tcontent = content.replace(\n\t\t\t\t\t/(\"\\$schema\"\\s*:\\s*\")[^\"]*(\")/,\n\t\t\t\t\t`$1${REGISTRY_SCHEMA_LATEST_URL}$2`,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tcontent = content.replace(/{/, `{\\n\\t\"$schema\": \"${REGISTRY_SCHEMA_LATEST_URL}\",`)\n\t\t\t}\n\t\t}\n\n\t\tawait writeFile(filePath, content)\n\t}\n}\n",
|
|
103
106
|
"/**\n * OCX CLI - migrate command\n *\n * Converts legacy ocx.lock state to .ocx/receipt.jsonc format and\n * normalizes deprecated registry config fields.\n *\n * Default: preview/dry-run (no writes). Use --apply to perform migration.\n * Default scope: local (cwd). Use --global for global config path + profiles.\n *\n * --global processes:\n * 1) Global root (~/.config/opencode / getGlobalConfigPath())\n * 2) All global profiles under <globalRoot>/profiles/*\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\"\nimport { rename, writeFile } from \"node:fs/promises\"\nimport { join } from \"node:path\"\n\nimport type { Command } from \"commander\"\nimport { applyEdits, type ModificationOptions, modify, parse as parseJsonc } from \"jsonc-parser\"\nimport {\n\tfindOcxConfig,\n\tfindOcxLock,\n\tfindReceipt,\n\treadOcxConfig,\n\treadOcxLock,\n\twriteReceipt,\n} from \"../../schemas/config\"\nimport { ConfigError, handleError, logger, ValidationError } from \"../../utils/index\"\nimport { getGlobalConfigPath } from \"../../utils/paths\"\nimport {\n\tbuildReceiptFromLock,\n\ttype ConfigNormalizationAction,\n\tdetectConfigNormalization,\n\ttype MigrateBlocker,\n\ttype MigrateLifecycleStatus,\n\ttype MigrateResult,\n\ttype MigrateScope,\n\ttype TargetResult,\n} from \"./transform\"\n\nexport interface MigrateOptions {\n\tcwd?: string\n\tglobal?: boolean\n\tapply?: boolean\n\tjson?: boolean\n\tquiet?: boolean\n}\n\nconst MIGRATE_SCHEMA_VERSION = 1 as const\n\nexport function registerMigrateCommand(program: Command): void {\n\tprogram\n\t\t.command(\"migrate\")\n\t\t.description(\"Migrate legacy ocx.lock to receipt format (.ocx/receipt.jsonc)\")\n\t\t.option(\"--global\", \"Migrate global config scope (includes profiles)\")\n\t\t.option(\"--apply\", \"Apply migration (default is dry-run preview)\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.option(\"-q, --quiet\", \"Suppress output\")\n\t\t.option(\"--cwd <path>\", \"Working directory\")\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, { json: options.json })\n\t\t\t}\n\t\t})\n}\n\n// =============================================================================\n// CORE LOGIC\n// =============================================================================\n\nasync function runMigrate(options: MigrateOptions): Promise<void> {\n\tif (options.global) {\n\t\tawait runGlobalMigrate(options)\n\t\treturn\n\t}\n\n\tawait runSingleTargetMigrate(options, \"local\", resolveRoot(options), false)\n}\n\n// =============================================================================\n// GLOBAL MULTI-TARGET MIGRATION\n// =============================================================================\n\n/**\n * Run migration across global root and all global profiles.\n *\n * Ordering: root first, then profiles sorted by name.\n * On apply: continues after target failure, exits non-zero with summary.\n */\nasync function runGlobalMigrate(options: MigrateOptions): Promise<void> {\n\tconst globalRoot = options.cwd ?? getGlobalConfigPath()\n\tconst targets = discoverGlobalTargets(globalRoot)\n\n\t// Preview mode: collect results from all targets, no writes\n\tif (!options.apply) {\n\t\tconst targetResults: TargetResult[] = []\n\t\tconst staleLockCleanupPendingTargets = new Set<string>()\n\n\t\tfor (const { label, path: targetPath } of targets) {\n\t\t\tconst receipt = findReceipt(targetPath)\n\t\t\tconst lockInfo = findOcxLock(targetPath, { isFlattened: true })\n\t\t\tif (receipt.exists && lockInfo.exists) {\n\t\t\t\tstaleLockCleanupPendingTargets.add(label)\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst result = await analyzeTarget(targetPath, true, {\n\t\t\t\t\temitWarnings: !options.json && !options.quiet,\n\t\t\t\t})\n\t\t\t\ttargetResults.push({ ...result, target: label })\n\t\t\t} catch (error) {\n\t\t\t\tconst targetErrorResult = createErrorTargetResult(label, error)\n\t\t\t\ttargetResults.push(targetErrorResult)\n\n\t\t\t\tif (!options.json && !options.quiet) {\n\t\t\t\t\tlogger.error(`[global:${label}] Preview failed: ${targetErrorResult.error}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst aggregated = aggregateResults(targetResults, \"global\", false)\n\t\tconst previewBlocked = hasPreviewBlockers(aggregated)\n\n\t\tif (options.json) {\n\t\t\temitMigrateJson(aggregated, false)\n\t\t\tif (previewBlocked) process.exit(1)\n\t\t\treturn\n\t\t}\n\n\t\tif (!options.quiet) {\n\t\t\tlogGlobalPreview(targetResults, aggregated, staleLockCleanupPendingTargets)\n\t\t}\n\n\t\tif (previewBlocked) process.exit(1)\n\t\treturn\n\t}\n\n\t// Apply mode: migrate each target, continue on failure\n\tconst targetResults: TargetResult[] = []\n\tlet hasFailure = false\n\n\tfor (const { label, path: targetPath } of targets) {\n\t\ttry {\n\t\t\tconst result = await applyTarget(targetPath, true)\n\t\t\ttargetResults.push({ ...result, target: label })\n\t\t} catch (error) {\n\t\t\thasFailure = true\n\t\t\tconst targetErrorResult = createErrorTargetResult(label, error)\n\t\t\ttargetResults.push(targetErrorResult)\n\n\t\t\tif (!options.json && !options.quiet) {\n\t\t\t\tlogger.error(`[global:${label}] Migration failed: ${targetErrorResult.error}`)\n\t\t\t}\n\t\t}\n\t}\n\n\tconst aggregated = aggregateResults(targetResults, \"global\", true)\n\n\tif (options.json) {\n\t\temitMigrateJson(aggregated, true)\n\t\tif (hasFailure) process.exit(1)\n\t\treturn\n\t}\n\n\tif (!options.quiet) {\n\t\tlogGlobalApplySummary(targetResults, hasFailure)\n\t}\n\n\tif (hasFailure) process.exit(1)\n}\n\n/**\n * Discover all global migration targets: root + profile directories.\n * Returns root first, then profiles sorted alphabetically.\n */\nfunction discoverGlobalTargets(globalRoot: string): Array<{ label: string; path: string }> {\n\tconst targets: Array<{ label: string; path: string }> = []\n\n\t// Root target\n\ttargets.push({ label: \"root\", path: globalRoot })\n\n\t// Profile targets\n\tconst profilesDir = join(globalRoot, \"profiles\")\n\tif (existsSync(profilesDir) && statSync(profilesDir).isDirectory()) {\n\t\tconst entries = readdirSync(profilesDir, { withFileTypes: true })\n\t\tconst profileNames = 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\n\t\tfor (const name of profileNames) {\n\t\t\ttargets.push({ label: `profile:${name}`, path: join(profilesDir, name) })\n\t\t}\n\t}\n\n\treturn targets\n}\n\n/**\n * Analyze a single target for migration state (no writes).\n * Parses lock files to provide accurate component counts in preview.\n */\nasync function analyzeTarget(\n\troot: string,\n\tisFlattened: boolean,\n\toptions?: { emitWarnings?: boolean },\n): Promise<Omit<TargetResult, \"target\">> {\n\tconst shouldEmitWarnings = options?.emitWarnings ?? true\n\tconst configActions = detectConfigActionsForScope(root)\n\tconst receipt = findReceipt(root)\n\tconst lockInfo = findOcxLock(root, { isFlattened })\n\tconst shouldArchiveStaleLock = receipt.exists && lockInfo.exists\n\n\t// Already migrated and no config normalization needed\n\tif (receipt.exists && configActions.length === 0 && !shouldArchiveStaleLock) {\n\t\treturn { status: \"already_v2\", count: 0, components: [], configActions: [] }\n\t}\n\n\t// No lock, no receipt, no config actions → nothing to do\n\tif (!lockInfo.exists && !receipt.exists && configActions.length === 0) {\n\t\treturn { status: \"nothing_to_migrate\", count: 0, components: [], configActions: [] }\n\t}\n\n\t// Parse lock to get accurate component count for preview\n\tlet components: TargetResult[\"components\"] = []\n\tif (lockInfo.exists && !receipt.exists) {\n\t\ttry {\n\t\t\tconst lock = await readOcxLock(root, { isFlattened })\n\t\t\tconst config = await readOcxConfig(root, {\n\t\t\t\temitParseDiagnostics: shouldEmitWarnings,\n\t\t\t})\n\t\t\tif (lock && config) {\n\t\t\t\tconst built = buildReceiptFromLock(lock, config, root)\n\t\t\t\tcomponents = built.components\n\t\t\t}\n\t\t} catch {\n\t\t\t// Preview can still proceed with count=0 if parsing fails\n\t\t\tif (shouldEmitWarnings) {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`[preview] Could not parse lock/config at \"${root}\"; component count may be incomplete.`,\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { status: \"preview\", count: components.length, components, configActions }\n}\n\n/**\n * Apply migration to a single target. Returns the result.\n * Throws on error (caller handles continue-on-failure).\n */\nasync function applyTarget(\n\troot: string,\n\tisFlattened: boolean,\n): Promise<Omit<TargetResult, \"target\">> {\n\tconst configActions = detectConfigActionsForScope(root)\n\tconst receipt = findReceipt(root)\n\tconst lockInfo = findOcxLock(root, { isFlattened })\n\tconst shouldArchiveStaleLock = receipt.exists && lockInfo.exists\n\n\t// Already migrated and no config normalization needed\n\tif (receipt.exists && configActions.length === 0 && !shouldArchiveStaleLock) {\n\t\treturn { status: \"already_v2\", count: 0, components: [], configActions: [] }\n\t}\n\n\t// No lock, no receipt, no config actions → nothing to do\n\tif (!lockInfo.exists && !receipt.exists && configActions.length === 0) {\n\t\treturn { status: \"nothing_to_migrate\", count: 0, components: [], configActions: [] }\n\t}\n\n\t// Build lock migration plan (if lock exists and receipt doesn't)\n\tlet lockMigrationPlan: {\n\t\tnewReceipt: import(\"../../schemas/config\").Receipt\n\t\tcomponents: TargetResult[\"components\"]\n\t} | null = null\n\n\tif (lockInfo.exists && !receipt.exists) {\n\t\tconst lock = await readOcxLock(root, { isFlattened })\n\t\tif (!lock) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t\"Failed to parse ocx.lock. The lock file exists but could not be read or contains invalid data.\",\n\t\t\t)\n\t\t}\n\n\t\tconst config = await readOcxConfig(root)\n\t\tif (!config) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t\"No ocx.jsonc found. The config is required to resolve registry URLs during migration.\",\n\t\t\t)\n\t\t}\n\n\t\tconst { receipt: newReceipt, components } = buildReceiptFromLock(lock, config, root)\n\t\tlockMigrationPlan = { newReceipt, components }\n\t}\n\n\tconst components = lockMigrationPlan?.components ?? []\n\tconst count = components.length\n\n\t// Write receipt and rename lock\n\tif (lockMigrationPlan) {\n\t\tawait writeReceipt(root, lockMigrationPlan.newReceipt)\n\t\tconst bakPath = resolveBackupPath(lockInfo.path)\n\t\tawait rename(lockInfo.path, bakPath)\n\t}\n\n\tif (shouldArchiveStaleLock) {\n\t\tconst bakPath = resolveBackupPath(lockInfo.path)\n\t\tawait rename(lockInfo.path, bakPath)\n\t}\n\n\t// Apply config normalization\n\tif (configActions.length > 0) {\n\t\tawait applyConfigNormalizationToFile(root, configActions)\n\t}\n\n\tconst didWrite = lockMigrationPlan !== null || shouldArchiveStaleLock || configActions.length > 0\n\treturn {\n\t\tstatus: didWrite ? \"migrated\" : \"already_v2\",\n\t\tcount,\n\t\tcomponents,\n\t\tconfigActions,\n\t}\n}\n\n/**\n * Aggregate per-target results into a single MigrateResult.\n * Preserves top-level keys for compatibility.\n */\nfunction aggregateResults(\n\ttargetResults: TargetResult[],\n\tscope: MigrateScope,\n\tisApply: boolean,\n): MigrateResult {\n\tconst hasError = targetResults.some((t) => t.status === \"error\")\n\tconst hasMigrated = targetResults.some((t) => t.status === \"migrated\" || t.status === \"preview\")\n\tconst allAlready = targetResults.every(\n\t\t(t) => t.status === \"already_v2\" || t.status === \"nothing_to_migrate\",\n\t)\n\n\tconst totalCount = targetResults.reduce((sum, t) => sum + t.count, 0)\n\tconst allComponents = targetResults.flatMap((t) => t.components)\n\tconst allConfigActions = targetResults.flatMap((t) => t.configActions)\n\n\tlet overallStatus: MigrateResult[\"status\"]\n\tif (hasError) {\n\t\toverallStatus = isApply ? \"partial_failure\" : \"preview_with_errors\"\n\t} else if (allAlready) {\n\t\t// Distinguish between \"all already_v2\" vs \"all nothing_to_migrate\"\n\t\tconst allNothing = targetResults.every((t) => t.status === \"nothing_to_migrate\")\n\t\toverallStatus = allNothing ? \"nothing_to_migrate\" : \"already_v2\"\n\t} else if (isApply) {\n\t\toverallStatus = hasMigrated ? \"migrated\" : \"already_v2\"\n\t} else {\n\t\toverallStatus = hasMigrated ? \"preview\" : \"already_v2\"\n\t}\n\n\treturn {\n\t\tsuccess: !hasError,\n\t\tstatus: overallStatus,\n\t\tscope,\n\t\tcount: totalCount,\n\t\tcomponents: allComponents,\n\t\tconfigActions: allConfigActions,\n\t\ttargets: targetResults,\n\t}\n}\n\nfunction hasPreviewBlockers(result: MigrateResult): boolean {\n\treturn result.status === \"preview_with_errors\"\n}\n\nfunction emitMigrateJson(result: MigrateResult, isApply: boolean): void {\n\tconst payload = withMigrateContract(result, isApply)\n\tconsole.log(JSON.stringify(payload, null, 2))\n}\n\nfunction withMigrateContract(result: MigrateResult, isApply: boolean): MigrateResult {\n\tconst targets = normalizeTargets(result)\n\tconst blockers = targets.flatMap((target) => target.blockers ?? [])\n\n\treturn {\n\t\t...result,\n\t\tlifecycle_status: mapLifecycleStatus(result.status, isApply),\n\t\tschema_version: MIGRATE_SCHEMA_VERSION,\n\t\tblockers,\n\t\ttargets,\n\t}\n}\n\nfunction normalizeTargets(result: MigrateResult): TargetResult[] {\n\tconst rawTargets =\n\t\tresult.targets && result.targets.length > 0 ? result.targets : [synthesizeTarget(result)]\n\treturn rawTargets.map((target) => normalizeTargetResult(target))\n}\n\nfunction synthesizeTarget(result: MigrateResult): TargetResult {\n\treturn {\n\t\ttarget: result.scope,\n\t\tstatus: result.status,\n\t\tcount: result.count,\n\t\tcomponents: result.components,\n\t\tconfigActions: result.configActions,\n\t\tblockers: result.blockers ?? [],\n\t}\n}\n\nfunction normalizeTargetResult(target: TargetResult): TargetResult {\n\tconst blockers =\n\t\ttarget.blockers ??\n\t\t(target.status === \"error\"\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: \"MIGRATE_BLOCKER\",\n\t\t\t\t\t\tmessage: target.error ?? \"Migration blocked\",\n\t\t\t\t\t\tpath: target.target,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t: [])\n\n\treturn {\n\t\t...target,\n\t\tscope: target.scope ?? target.target,\n\t\tresult: target.result ?? target.status,\n\t\tblockers,\n\t}\n}\n\nfunction mapLifecycleStatus(\n\tstatus: MigrateResult[\"status\"],\n\tisApply: boolean,\n): MigrateLifecycleStatus {\n\tif (isApply) {\n\t\treturn status === \"partial_failure\" ? \"apply_failed\" : \"apply_ok\"\n\t}\n\n\treturn status === \"preview_with_errors\" ? \"preview_blocked\" : \"preview_ok\"\n}\n\nfunction createErrorTargetResult(target: string, error: unknown): TargetResult {\n\tconst blocker = toBlocker(error, target)\n\n\treturn {\n\t\ttarget,\n\t\tstatus: \"error\",\n\t\tcount: 0,\n\t\tcomponents: [],\n\t\tconfigActions: [],\n\t\terror: blocker.message,\n\t\tblockers: [blocker],\n\t}\n}\n\nfunction toBlocker(error: unknown, path: string): MigrateBlocker {\n\tconst message = error instanceof Error ? error.message : String(error)\n\treturn {\n\t\tcode: resolveBlockerCode(error, message),\n\t\tmessage,\n\t\tpath,\n\t}\n}\n\nfunction resolveBlockerCode(error: unknown, message: string): string {\n\tif (typeof error === \"object\" && error !== null && \"code\" in error) {\n\t\tconst code = (error as { code?: unknown }).code\n\t\tif (typeof code === \"string\" && code.length > 0) return code\n\t}\n\n\tconst lowerMessage = message.toLowerCase()\n\tif (lowerMessage.includes(\"ocx.jsonc\") || lowerMessage.includes(\"registry\")) {\n\t\treturn \"CONFIG_ERROR\"\n\t}\n\n\tif (lowerMessage.includes(\"parse\") || lowerMessage.includes(\"invalid\")) {\n\t\treturn \"VALIDATION_ERROR\"\n\t}\n\n\treturn \"MIGRATE_BLOCKER\"\n}\n\n// =============================================================================\n// SINGLE TARGET MIGRATION (preserves existing local behavior)\n// =============================================================================\n\nasync function runSingleTargetMigrate(\n\toptions: MigrateOptions,\n\tscope: MigrateScope,\n\troot: string,\n\tisFlattened: boolean,\n): Promise<void> {\n\t// Detect config normalization needs (pre-Zod raw parse)\n\tconst configActions = detectConfigActionsForScope(root)\n\n\t// Detect state: receipt exists?\n\tconst receipt = findReceipt(root)\n\tconst lockInfo = findOcxLock(root, { isFlattened })\n\tconst shouldArchiveStaleLock = receipt.exists && lockInfo.exists\n\n\t// Guard: already migrated (receipt exists) and no config normalization needed → safe no-op\n\tif (receipt.exists && configActions.length === 0 && !shouldArchiveStaleLock) {\n\t\tconst result: MigrateResult = {\n\t\t\tsuccess: true,\n\t\t\tstatus: \"already_v2\",\n\t\t\tscope,\n\t\t\tcount: 0,\n\t\t\tcomponents: [],\n\t\t\tconfigActions: [],\n\t\t}\n\n\t\tif (options.json) {\n\t\t\temitMigrateJson(result, Boolean(options.apply))\n\t\t\treturn\n\t\t}\n\n\t\tif (!options.quiet) {\n\t\t\tlogger.success(`[${scope}] Already migrated to receipt format (.ocx/receipt.jsonc).`)\n\t\t}\n\t\treturn\n\t}\n\n\t// Guard: no lock, no receipt, no config actions → nothing to do\n\tif (!lockInfo.exists && !receipt.exists && configActions.length === 0) {\n\t\tconst result: MigrateResult = {\n\t\t\tsuccess: true,\n\t\t\tstatus: \"nothing_to_migrate\",\n\t\t\tscope,\n\t\t\tcount: 0,\n\t\t\tcomponents: [],\n\t\t\tconfigActions: [],\n\t\t}\n\n\t\tif (options.json) {\n\t\t\temitMigrateJson(result, Boolean(options.apply))\n\t\t\treturn\n\t\t}\n\n\t\tif (!options.quiet) {\n\t\t\tlogger.info(`[${scope}] Nothing to migrate. No legacy ocx.lock found.`)\n\t\t}\n\t\treturn\n\t}\n\n\t// Build lock migration plan (if lock exists and receipt doesn't)\n\tlet lockMigrationPlan: {\n\t\tnewReceipt: import(\"../../schemas/config\").Receipt\n\t\tcomponents: MigrateResult[\"components\"]\n\t} | null = null\n\n\tif (lockInfo.exists && !receipt.exists) {\n\t\t// Parse legacy lock and config\n\t\tconst lock = await readOcxLock(root, { isFlattened })\n\t\tif (!lock) {\n\t\t\tthrow new ValidationError(\n\t\t\t\t\"Failed to parse ocx.lock. The lock file exists but could not be read or contains invalid data.\",\n\t\t\t)\n\t\t}\n\n\t\tconst config = await readOcxConfig(root)\n\t\tif (!config) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t\"No ocx.jsonc found. The config is required to resolve registry URLs during migration.\",\n\t\t\t)\n\t\t}\n\n\t\tconst { receipt: newReceipt, components } = buildReceiptFromLock(lock, config, root)\n\t\tlockMigrationPlan = { newReceipt, components }\n\t}\n\n\tconst components = lockMigrationPlan?.components ?? []\n\tconst count = components.length\n\n\t// Preview mode (default): show plan, no writes\n\tif (!options.apply) {\n\t\tconst result: MigrateResult = {\n\t\t\tsuccess: true,\n\t\t\tstatus: \"preview\",\n\t\t\tscope,\n\t\t\tcount,\n\t\t\tcomponents,\n\t\t\tconfigActions,\n\t\t}\n\n\t\tif (options.json) {\n\t\t\temitMigrateJson(result, false)\n\t\t\treturn\n\t\t}\n\n\t\tif (!options.quiet) {\n\t\t\tif (count > 0) {\n\t\t\t\tlogger.info(`[${scope}] Migration preview: ${count} component(s) would be migrated.`)\n\t\t\t\tlogger.break()\n\n\t\t\t\tfor (const comp of components) {\n\t\t\t\t\tlogger.info(` ${comp.legacyKey} → ${comp.canonicalId}`)\n\t\t\t\t}\n\t\t\t\tlogger.break()\n\t\t\t}\n\n\t\t\tif (shouldArchiveStaleLock) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`[${scope}] Legacy ocx.lock would be backed up and removed (receipt already exists).`,\n\t\t\t\t)\n\t\t\t\tlogger.break()\n\t\t\t}\n\n\t\t\tif (configActions.length > 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`[${scope}] Config normalization: ${configActions.length} deprecated field(s) would be removed.`,\n\t\t\t\t)\n\t\t\t\tfor (const action of configActions) {\n\t\t\t\t\tlogger.info(` registries.${action.registry}.${action.field} → remove`)\n\t\t\t\t}\n\t\t\t\tlogger.break()\n\t\t\t}\n\n\t\t\tif (count === 0 && configActions.length === 0 && !shouldArchiveStaleLock) {\n\t\t\t\tlogger.info(`[${scope}] Nothing to migrate.`)\n\t\t\t} else {\n\t\t\t\tlogger.info(\"No changes made. Run with --apply to perform migration.\")\n\t\t\t}\n\t\t}\n\t\treturn\n\t}\n\n\t// Apply mode: write receipt, rename lock → .bak, normalize config\n\tif (lockMigrationPlan) {\n\t\tawait writeReceipt(root, lockMigrationPlan.newReceipt)\n\n\t\tconst bakPath = resolveBackupPath(lockInfo.path)\n\t\tawait rename(lockInfo.path, bakPath)\n\n\t\tif (!options.json && !options.quiet) {\n\t\t\tlogger.success(\n\t\t\t\t`[${scope}] Migrated ${count} component(s) to receipt format (.ocx/receipt.jsonc).`,\n\t\t\t)\n\t\t\tlogger.break()\n\n\t\t\tfor (const comp of components) {\n\t\t\t\tlogger.success(` ✓ ${comp.legacyKey} → ${comp.canonicalId}`)\n\t\t\t}\n\n\t\t\tlogger.break()\n\t\t\tlogger.info(`Legacy lock backed up to: ${bakPath}`)\n\t\t}\n\t}\n\n\tif (shouldArchiveStaleLock) {\n\t\tconst bakPath = resolveBackupPath(lockInfo.path)\n\t\tawait rename(lockInfo.path, bakPath)\n\n\t\tif (!options.json && !options.quiet) {\n\t\t\tlogger.success(`[${scope}] Removed stale legacy lock (receipt already exists).`)\n\t\t\tlogger.info(`Legacy lock backed up to: ${bakPath}`)\n\t\t}\n\t}\n\n\t// Apply config normalization\n\tif (configActions.length > 0) {\n\t\tawait applyConfigNormalizationToFile(root, configActions)\n\n\t\tif (!options.json && !options.quiet) {\n\t\t\tif (lockMigrationPlan) logger.break()\n\t\t\tlogger.success(`[${scope}] Normalized ${configActions.length} deprecated config field(s).`)\n\t\t\tfor (const action of configActions) {\n\t\t\t\tlogger.success(` ✓ registries.${action.registry}.${action.field} removed`)\n\t\t\t}\n\t\t}\n\t}\n\n\tconst didWrite = lockMigrationPlan !== null || shouldArchiveStaleLock || configActions.length > 0\n\tconst result: MigrateResult = {\n\t\tsuccess: true,\n\t\tstatus: didWrite ? \"migrated\" : \"already_v2\",\n\t\tscope,\n\t\tcount,\n\t\tcomponents,\n\t\tconfigActions,\n\t}\n\n\tif (options.json) {\n\t\temitMigrateJson(result, true)\n\t\treturn\n\t}\n\n\t// If no lock migration and only config actions, summarize\n\tif (!lockMigrationPlan && configActions.length > 0 && !options.quiet) {\n\t\tlogger.break()\n\t\tlogger.success(`[${scope}] Config normalization complete.`)\n\t}\n}\n\n// =============================================================================\n// GLOBAL OUTPUT HELPERS\n// =============================================================================\n\nfunction logGlobalPreview(\n\ttargetResults: TargetResult[],\n\taggregated: MigrateResult,\n\tstaleLockCleanupPendingTargets: Set<string>,\n): void {\n\tif (aggregated.status === \"nothing_to_migrate\") {\n\t\tlogger.info(\"[global] Nothing to migrate across all targets.\")\n\t\treturn\n\t}\n\n\tif (aggregated.status === \"already_v2\") {\n\t\tlogger.success(\"[global] All targets already migrated.\")\n\t\treturn\n\t}\n\n\tlogger.info(`[global] Migration preview across ${targetResults.length} target(s):`)\n\tlogger.break()\n\n\tfor (const t of targetResults) {\n\t\tconst shouldIncludeStaleLockCleanup = staleLockCleanupPendingTargets.has(t.target)\n\t\tconst actionsSummary = describeTargetActions(t, shouldIncludeStaleLockCleanup)\n\t\tlogger.info(` ${t.target}: ${actionsSummary}`)\n\t}\n\n\tlogger.break()\n\n\tif (aggregated.status === \"preview_with_errors\") {\n\t\tlogger.warn(\"[global] Preview completed with errors on some targets. See above for details.\")\n\t\tlogger.info(\"No changes made. Run with --apply to perform migration.\")\n\t} else {\n\t\tlogger.info(\"No changes made. Run with --apply to perform migration.\")\n\t}\n}\n\nfunction logGlobalApplySummary(targetResults: TargetResult[], hasFailure: boolean): void {\n\tlogger.break()\n\n\tconst migrated = targetResults.filter((t) => t.status === \"migrated\")\n\tconst already = targetResults.filter(\n\t\t(t) => t.status === \"already_v2\" || t.status === \"nothing_to_migrate\",\n\t)\n\tconst failed = targetResults.filter((t) => t.status === \"error\")\n\n\tif (migrated.length > 0) {\n\t\tlogger.success(`[global] Migrated ${migrated.length} target(s):`)\n\t\tfor (const t of migrated) {\n\t\t\tlogger.success(` ✓ ${t.target}`)\n\t\t}\n\t}\n\n\tif (already.length > 0) {\n\t\tlogger.info(`[global] ${already.length} target(s) already up to date.`)\n\t}\n\n\tif (failed.length > 0) {\n\t\tlogger.error(`[global] ${failed.length} target(s) failed:`)\n\t\tfor (const t of failed) {\n\t\t\tlogger.error(` ✗ ${t.target}: ${t.error}`)\n\t\t}\n\t}\n\n\tif (hasFailure) {\n\t\tlogger.break()\n\t\tlogger.error(\"[global] Migration completed with errors. See above for details.\")\n\t}\n}\n\nfunction describeTargetActions(t: TargetResult, shouldIncludeStaleLockCleanup: boolean): string {\n\tif (t.status === \"error\") return \"error\"\n\tif (t.status === \"already_v2\") return \"already migrated\"\n\tif (t.status === \"nothing_to_migrate\") return \"nothing to migrate\"\n\n\tconst parts: string[] = []\n\tif (t.count > 0) {\n\t\tparts.push(`${t.count} component(s) to migrate`)\n\t}\n\tif (t.configActions.length > 0) {\n\t\tparts.push(`${t.configActions.length} config field(s) to normalize`)\n\t}\n\tif (shouldIncludeStaleLockCleanup) {\n\t\tparts.push(\"legacy lock cleanup pending\")\n\t}\n\tif (parts.length === 0) return \"nothing to migrate\"\n\treturn parts.join(\", \")\n}\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\n/**\n * Resolve the migration root directory.\n *\n * - Local mode: uses --cwd or process.cwd()\n * - Global mode: uses --cwd if explicit, otherwise getGlobalConfigPath()\n *\n * This allows tests to override the global path via --cwd.\n */\nfunction resolveRoot(options: MigrateOptions): string {\n\tif (options.global) {\n\t\treturn options.cwd ?? getGlobalConfigPath()\n\t}\n\treturn options.cwd ?? process.cwd()\n}\n\n/**\n * Resolve a non-colliding backup path for the lock file.\n * Tries `.bak`, then `.bak.1`, `.bak.2`, etc.\n */\nfunction resolveBackupPath(lockPath: string): string {\n\tconst base = `${lockPath}.bak`\n\tif (!existsSync(base)) return base\n\n\tfor (let i = 1; i <= 100; i++) {\n\t\tconst candidate = `${base}.${i}`\n\t\tif (!existsSync(candidate)) return candidate\n\t}\n\n\t// Fallback: timestamp-based (effectively unreachable)\n\treturn `${base}.${Date.now()}`\n}\n\n/**\n * Read raw config (pre-Zod) to detect deprecated fields.\n * Returns empty actions if no config file is found.\n */\nfunction detectConfigActionsForScope(root: string): ConfigNormalizationAction[] {\n\tconst configInfo = findOcxConfig(root)\n\tif (!configInfo.exists) return []\n\n\ttry {\n\t\tconst raw = readFileSync(configInfo.path, \"utf-8\")\n\t\tconst parsed = parseJsonc(raw, [], { allowTrailingComma: true })\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) return []\n\n\t\treturn detectConfigNormalization(parsed as Record<string, unknown>)\n\t} catch {\n\t\treturn []\n\t}\n}\n\n/**\n * Formatting options for jsonc-parser edits during config normalization.\n * Matches the project's standard 2-space tab convention for JSON configs.\n */\nconst JSONC_EDIT_OPTIONS: ModificationOptions = {\n\tformattingOptions: {\n\t\ttabSize: 2,\n\t\tinsertSpaces: true,\n\t\teol: \"\\n\",\n\t},\n}\n\n/**\n * Apply config normalization by removing deprecated fields in-place.\n * Uses jsonc-parser's modify/applyEdits to preserve JSONC comments and formatting.\n * Deterministic and idempotent: each action maps to a single property removal.\n */\nasync function applyConfigNormalizationToFile(\n\troot: string,\n\tactions: ConfigNormalizationAction[],\n): Promise<void> {\n\tif (actions.length === 0) return\n\n\tconst configInfo = findOcxConfig(root)\n\tif (!configInfo.exists) return\n\n\tlet content = readFileSync(configInfo.path, \"utf-8\")\n\n\tfor (const action of actions) {\n\t\tconst edits = modify(\n\t\t\tcontent,\n\t\t\t[\"registries\", action.registry, action.field],\n\t\t\tundefined,\n\t\t\tJSONC_EDIT_OPTIONS,\n\t\t)\n\t\tcontent = applyEdits(content, edits)\n\t}\n\n\tawait writeFile(configInfo.path, content)\n}\n",
|
|
104
107
|
"/**\n * Migration module: Legacy ocx.lock → V2 .ocx/receipt.jsonc\n *\n * Isolated transform logic for converting v1.4.6 lock entries into\n * canonical receipt entries, plus registry config normalization.\n * No side effects — pure data transform.\n */\n\nimport type { InstalledComponent, OcxConfig, OcxLock, Receipt } from \"../../schemas/config\"\nimport { createCanonicalId } from \"../../schemas/config\"\nimport { ConfigError } from \"../../utils/errors\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type MigrateScope = \"local\" | \"global\"\n\nexport type MigrateStatus =\n\t| \"nothing_to_migrate\"\n\t| \"already_v2\"\n\t| \"preview\"\n\t| \"preview_with_errors\"\n\t| \"migrated\"\n\t| \"partial_failure\"\n\nexport type MigrateLifecycleStatus = \"preview_ok\" | \"preview_blocked\" | \"apply_ok\" | \"apply_failed\"\n\nexport interface MigrateBlocker {\n\tcode: string\n\tmessage: string\n\tpath: string\n}\n\n/** Describes a single registry config normalization action */\nexport interface ConfigNormalizationAction {\n\tregistry: string\n\tfield: string\n\taction: \"remove_deprecated\"\n}\n\nexport interface MigrateResult {\n\tsuccess: boolean\n\tstatus: MigrateStatus\n\t/** Additive status field for the migrate contract */\n\tlifecycle_status?: MigrateLifecycleStatus\n\t/** Additive schema version field for the migrate contract */\n\tschema_version?: 1\n\t/** Additive aggregate blockers for the migrate contract */\n\tblockers?: MigrateBlocker[]\n\tscope: MigrateScope\n\tcount: number\n\tcomponents: Array<{\n\t\tlegacyKey: string\n\t\tcanonicalId: string\n\t\tname: string\n\t\tregistryName: string\n\t}>\n\tconfigActions: ConfigNormalizationAction[]\n\t/** Per-target results when --global processes root + profiles */\n\ttargets?: TargetResult[]\n}\n\n/** Result for a single migration target (global root or profile) */\nexport interface TargetResult {\n\ttarget: string\n\t/** Additive target identity field for the migrate contract */\n\tscope?: string\n\tstatus: MigrateStatus | \"error\"\n\t/** Additive target result field for the migrate contract */\n\tresult?: MigrateStatus | \"error\"\n\t/** Additive target blockers field for the migrate contract */\n\tblockers?: MigrateBlocker[]\n\tcount: number\n\tcomponents: MigrateResult[\"components\"]\n\tconfigActions: ConfigNormalizationAction[]\n\terror?: string\n}\n\n// =============================================================================\n// TRANSFORM (Pure, deterministic)\n// =============================================================================\n\n/**\n * Transform a single legacy lock entry into a V2 installed component.\n *\n * Legacy format:\n * key = \"alias/component\"\n * entry = { registry, version, hash, files: string[], installedAt, updatedAt? }\n *\n * V2 format:\n * key = canonical ID (\"registryUrl::registryName/component@revision\")\n * entry = { registryUrl, registryName, name, revision, hash, files: {path,hash}[], ... }\n *\n * @param legacyKey - Legacy qualified key (e.g., \"kdco/researcher\")\n * @param entry - Legacy installed component entry\n * @param registryUrl - Resolved registry URL from ocx.jsonc config\n * @returns Tuple of [canonicalId, InstalledComponent]\n */\nexport function transformLegacyEntry(\n\tlegacyKey: string,\n\tentry: OcxLock[\"installed\"][string],\n\tregistryUrl: string,\n): [string, InstalledComponent] {\n\t// Guard: key must contain slash\n\tconst slashIndex = legacyKey.indexOf(\"/\")\n\tif (slashIndex === -1) {\n\t\tthrow new Error(`Invalid legacy key: \"${legacyKey}\". Expected format: alias/component`)\n\t}\n\n\tconst registryName = legacyKey.slice(0, slashIndex)\n\tconst name = legacyKey.slice(slashIndex + 1)\n\n\t// Guard: both parts must be non-empty\n\tif (!registryName || !name) {\n\t\tthrow new Error(`Invalid legacy key: \"${legacyKey}\". Both alias and component are required.`)\n\t}\n\n\tconst canonicalId = createCanonicalId(registryUrl, registryName, name, entry.version)\n\n\tconst component: InstalledComponent = {\n\t\tregistryUrl,\n\t\tregistryName,\n\t\tname,\n\t\trevision: entry.version,\n\t\thash: entry.hash,\n\t\tfiles: entry.files.map((filePath) => ({\n\t\t\tpath: filePath,\n\t\t\t// Legacy lock doesn't store per-file hashes — use empty string as sentinel\n\t\t\thash: \"\",\n\t\t})),\n\t\tinstalledAt: entry.installedAt,\n\t\t...(entry.updatedAt && { updatedAt: entry.updatedAt }),\n\t\towner: { type: \"user\" },\n\t}\n\n\treturn [canonicalId, component]\n}\n\n/**\n * Build a complete V2 receipt from a legacy lock and config.\n *\n * Deterministic: same inputs always produce same output.\n * Entries are sorted by canonical ID for stable JSON output.\n *\n * @param lock - Parsed legacy ocx.lock\n * @param config - Parsed ocx.jsonc with registry URLs\n * @param root - Install root path to record in receipt (optional)\n * @returns Receipt and migration metadata\n */\nexport function buildReceiptFromLock(\n\tlock: OcxLock,\n\tconfig: OcxConfig,\n\troot?: string,\n): { receipt: Receipt; components: MigrateResult[\"components\"] } {\n\tconst installed: Record<string, InstalledComponent> = {}\n\tconst components: MigrateResult[\"components\"] = []\n\n\t// Sort legacy keys for deterministic output\n\tconst sortedKeys = Object.keys(lock.installed).sort()\n\n\tfor (const legacyKey of sortedKeys) {\n\t\tconst entry = lock.installed[legacyKey]\n\t\tif (!entry) continue\n\n\t\t// Resolve registry URL from config\n\t\tconst registryConfig = config.registries[entry.registry]\n\t\tif (!registryConfig) {\n\t\t\tthrow new ConfigError(\n\t\t\t\t`Registry \"${entry.registry}\" referenced in lock key \"${legacyKey}\" ` +\n\t\t\t\t\t`is not configured in ocx.jsonc. Add it before migrating.`,\n\t\t\t)\n\t\t}\n\n\t\tconst [canonicalId, component] = transformLegacyEntry(legacyKey, entry, registryConfig.url)\n\n\t\tinstalled[canonicalId] = component\n\t\tcomponents.push({\n\t\t\tlegacyKey,\n\t\t\tcanonicalId,\n\t\t\tname: component.name,\n\t\t\tregistryName: component.registryName,\n\t\t})\n\t}\n\n\tconst receipt: Receipt = {\n\t\tversion: 1,\n\t\t...(root && { root }),\n\t\tinstalled,\n\t}\n\n\treturn { receipt, components }\n}\n\n// =============================================================================\n// REGISTRY CONFIG NORMALIZATION (Pure, deterministic)\n// =============================================================================\n\n/** Known deprecated fields from legacy v1.4.6 registry config */\nconst DEPRECATED_REGISTRY_FIELDS = [\"version\"] as const\n\n/**\n * Detect deprecated `version` fields in registry config entries.\n *\n * Legacy v1.4.6 allowed `registries.<alias>.version` for pinning.\n * Current schema only allows `url` and `headers`. This function\n * inspects raw config data (pre-Zod-parse) to find deprecated keys.\n *\n * Pure function: returns planned actions, never mutates.\n *\n * @param rawConfig - Raw config object (may contain extra keys stripped by Zod)\n * @returns Array of normalization actions to apply\n */\nexport function detectConfigNormalization(\n\trawConfig: Record<string, unknown>,\n): ConfigNormalizationAction[] {\n\tconst registries = rawConfig.registries\n\tif (!registries || typeof registries !== \"object\" || Array.isArray(registries)) {\n\t\treturn []\n\t}\n\n\tconst actions: ConfigNormalizationAction[] = []\n\tconst registryMap = registries as Record<string, unknown>\n\n\tfor (const alias of Object.keys(registryMap).sort()) {\n\t\tconst entry = registryMap[alias]\n\t\tif (!entry || typeof entry !== \"object\" || Array.isArray(entry)) continue\n\n\t\tconst entryRecord = entry as Record<string, unknown>\n\t\tfor (const field of DEPRECATED_REGISTRY_FIELDS) {\n\t\t\tif (field in entryRecord) {\n\t\t\t\tactions.push({\n\t\t\t\t\tregistry: alias,\n\t\t\t\t\tfield,\n\t\t\t\t\taction: \"remove_deprecated\",\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\treturn actions\n}\n",
|
|
108
|
+
"/**\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 * as path from \"node:path\"\nimport type { Command } from \"commander\"\nimport { ConfigResolver } from \"../config/resolver\"\nimport { getProfileDir, getProfileOpencodeConfig } from \"../profile/paths\"\nimport { getGitInfo } from \"../utils/git-context\"\nimport { handleError, logger } from \"../utils/index\"\nimport { getGlobalConfigPath } from \"../utils/paths\"\nimport {\n\tformatTerminalName,\n\trestoreTerminalTitle,\n\tsaveTerminalTitle,\n\tsetTerminalName,\n} from \"../utils/terminal-title\"\nimport {\n\tcreateOpencodeOcError,\n\ttype PreparedMergedConfigDir,\n\tprepareMergedConfigDirForProfile,\n} from \"./opencode-overlay\"\n\ninterface OpencodeOptions {\n\tprofile?: string\n\trename?: boolean\n}\n\n/**\n * Deduplicates an array while preserving last occurrence.\n * Last-wins behavior: if duplicates exist, keeps the LAST occurrence.\n *\n * Example: [\"a\", \"b\", \"a\", \"c\"] -> [\"b\", \"a\", \"c\"]\n * (first \"a\" is removed, last \"a\" is kept)\n *\n * @internal - Exported for testing\n */\nexport function dedupeLastWins<T>(items: T[]): T[] {\n\tconst seen = new Set<T>()\n\tconst result: T[] = []\n\n\t// Iterate backwards to find last occurrences\n\tfor (let i = items.length - 1; i >= 0; i--) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: index i is guaranteed valid within bounds\n\t\tconst item = items[i]!\n\t\tif (!seen.has(item)) {\n\t\t\tseen.add(item)\n\t\t\tresult.unshift(item) // Prepend to maintain order\n\t\t}\n\t}\n\n\treturn result\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\nfunction isPathLikeLauncherToken(token: string): boolean {\n\treturn token.includes(\"/\") || token.includes(\"\\\\\")\n}\n\n/**\n * Resolve launcher token to a cwd-stable executable path.\n *\n * - Path-like tokens (absolute/relative) are normalized to absolute paths.\n * - Bare command names are resolved through PATH via Bun.which.\n * - Throws when PATH lookup fails, because OCX context requires a stable launcher path.\n */\nexport function resolveStableOpenCodeLauncherPath(opts: {\n\tconfiguredBin: string\n\tcwd: string\n\tresolveExecutable?: (command: string) => string | null | undefined\n}): string {\n\tconst { configuredBin, cwd } = opts\n\tconst resolveExecutable = opts.resolveExecutable ?? ((command: string) => Bun.which(command))\n\n\tif (!configuredBin.trim()) {\n\t\tthrow new Error(\"OpenCode launcher is empty and cannot be resolved to a stable path\")\n\t}\n\n\tif (isPathLikeLauncherToken(configuredBin)) {\n\t\treturn path.isAbsolute(configuredBin) ? configuredBin : path.resolve(cwd, configuredBin)\n\t}\n\n\tconst resolvedFromPath = resolveExecutable(configuredBin)\n\tif (!resolvedFromPath) {\n\t\tthrow new Error(\n\t\t\t`OpenCode launcher \"${configuredBin}\" is not available in PATH and cannot be used as OPENCODE_BIN`,\n\t\t)\n\t}\n\n\treturn path.isAbsolute(resolvedFromPath) ? resolvedFromPath : path.resolve(cwd, resolvedFromPath)\n}\n\nexport function resolveStableOcxExecutablePath(opts: {\n\tcwd: string\n\tinheritedOcxBin?: string\n\targv?: string[]\n\texecPath?: string\n\tresolveExecutable?: (command: string) => string | null | undefined\n\tisCompiledBinary?: boolean\n}): string {\n\tconst resolveExecutable = opts.resolveExecutable ?? ((command: string) => Bun.which(command))\n\tconst argv = opts.argv ?? process.argv\n\tconst execPath = opts.execPath ?? process.execPath\n\tconst isCompiledBinary =\n\t\topts.isCompiledBinary ??\n\t\t(typeof Bun !== \"undefined\" && typeof Bun.main === \"string\" && Bun.main.startsWith(\"/$bunfs/\"))\n\tconst inheritedOcxBin = opts.inheritedOcxBin?.trim()\n\tconst runtimeExecutable = isCompiledBinary ? execPath : argv[1]\n\n\tconst candidate =\n\t\tinheritedOcxBin && inheritedOcxBin.length > 0 ? inheritedOcxBin : runtimeExecutable\n\n\tif (!candidate?.trim()) {\n\t\tthrow new Error(\"OCX executable path is empty and cannot be resolved from the current process\")\n\t}\n\n\tif (isPathLikeLauncherToken(candidate)) {\n\t\treturn path.isAbsolute(candidate) ? candidate : path.resolve(opts.cwd, candidate)\n\t}\n\n\tconst resolvedFromPath = resolveExecutable(candidate)\n\tif (!resolvedFromPath) {\n\t\tthrow new Error(\n\t\t\t`OCX executable \"${candidate}\" is not available in PATH and cannot be persisted as OCX_BIN`,\n\t\t)\n\t}\n\n\treturn path.isAbsolute(resolvedFromPath)\n\t\t? resolvedFromPath\n\t\t: path.resolve(opts.cwd, resolvedFromPath)\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 * - Exports OCX_CONTEXT/OCX_BIN only when a profile launch context is active\n * - OPENCODE_DISABLE_PROJECT_CONFIG: set to \"true\" ONLY when a profile is active\n * (profileName is provided). When no profile, project config is NOT disabled.\n * - OPENCODE_CONFIG_DIR: when configDir is provided → use it;\n * otherwise profile active → profile-specific dir; no profile → global config dir\n * - configContent is a pre-serialized JSON string; upstream OpenCode handles\n * {env:...} / {file:...} token resolution in OPENCODE_CONFIG_CONTENT\n */\nexport function buildOpenCodeEnv(opts: {\n\tbaseEnv: Record<string, string | undefined>\n\tprofileName?: string\n\tocxBin?: string\n\topencodeBin?: string\n\tconfigDir?: string\n\tconfigContent?: string\n}): Record<string, string | undefined> {\n\t// Profile presence gates both OPENCODE_DISABLE_PROJECT_CONFIG and OPENCODE_CONFIG_DIR\n\tconst hasProfile = Boolean(opts.profileName)\n\t// Never leak stale inherited disable flag into no-profile launches.\n\tconst {\n\t\tOPENCODE_DISABLE_PROJECT_CONFIG: _inheritedDisableProjectConfig,\n\t\tOPENCODE_BIN: _inheritedOpencodeBin,\n\t\tOCX_CONTEXT: _inheritedOcxContext,\n\t\tOCX_BIN: _inheritedOcxBin,\n\t\tOCX_PROFILE: _inheritedOcxProfile,\n\t\t...baseEnvWithoutDisableProjectConfig\n\t} = opts.baseEnv\n\n\treturn {\n\t\t...baseEnvWithoutDisableProjectConfig,\n\t\t...(opts.opencodeBin !== undefined && { OPENCODE_BIN: opts.opencodeBin }),\n\t\t...(hasProfile && { OPENCODE_DISABLE_PROJECT_CONFIG: \"true\" }),\n\t\tOPENCODE_CONFIG_DIR:\n\t\t\topts.configDir ??\n\t\t\t(hasProfile ? getProfileDir(opts.profileName as string) : getGlobalConfigPath()),\n\t\t...(opts.configContent && { OPENCODE_CONFIG_CONTENT: opts.configContent }),\n\t\t...(hasProfile && { OCX_CONTEXT: \"1\" }),\n\t\t...(hasProfile && opts.ocxBin && { OCX_BIN: opts.ocxBin }),\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(\"oc\")\n\t\t.alias(\"opencode\")\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.allowUnknownOption()\n\t\t.allowExcessArguments(true)\n\t\t.action(async (options: OpencodeOptions, command: Command) => {\n\t\t\ttry {\n\t\t\t\tawait runOpencode(command.args, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\nasync function runOpencode(args: string[], options: OpencodeOptions): Promise<void> {\n\t// Resolve project directory\n\tconst projectDir = 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// Print feedback about which profile is being used\n\tif (config.profileName) {\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// Check for profile's opencode.jsonc (optional)\n\tif (config.profileName) {\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\t// Merge discovered instructions with user-configured instructions\n\t// Order: discovered/global/profile/registry/project first, then user config instructions last (highest priority)\n\tconst userInstructions = Array.isArray(config.opencode.instructions)\n\t\t? config.opencode.instructions\n\t\t: []\n\tconst allInstructions = [...config.instructions, ...userInstructions]\n\t// Deduplicate while preserving last occurrence (last-wins)\n\tconst dedupedInstructions = dedupeLastWins(allInstructions)\n\n\tconst configToPass =\n\t\tdedupedInstructions.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: dedupedInstructions.length > 0 ? dedupedInstructions : 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\tlet mergedConfig: PreparedMergedConfigDir | null = null\n\tlet primaryFailure: Error | null = null\n\tlet childExitCode: number | null = null\n\tlet preSpawnSignalExitCode: number | null = null\n\n\tconst sigintHandler = () => {\n\t\tif (proc) {\n\t\t\tproc.kill(\"SIGINT\")\n\t\t} else {\n\t\t\tpreSpawnSignalExitCode = 130\n\t\t}\n\t}\n\n\tconst sigtermHandler = () => {\n\t\tif (proc) {\n\t\t\tproc.kill(\"SIGTERM\")\n\t\t} else {\n\t\t\tpreSpawnSignalExitCode = 143\n\t\t}\n\t}\n\n\tconst exitHandler = () => {\n\t\tif (shouldRename) {\n\t\t\trestoreTerminalTitle()\n\t\t}\n\t}\n\n\ttry {\n\t\tprocess.on(\"SIGINT\", sigintHandler)\n\t\tprocess.on(\"SIGTERM\", sigtermHandler)\n\t\tprocess.on(\"exit\", exitHandler)\n\n\t\tif (preSpawnSignalExitCode !== null) {\n\t\t\tchildExitCode = preSpawnSignalExitCode\n\t\t\treturn\n\t\t}\n\n\t\tif (config.profileName) {\n\t\t\tmergedConfig = await prepareMergedConfigDirForProfile({\n\t\t\t\tprojectDir,\n\t\t\t\tprofileDir: getProfileDir(config.profileName),\n\t\t\t})\n\t\t}\n\n\t\tif (preSpawnSignalExitCode !== null) {\n\t\t\tchildExitCode = preSpawnSignalExitCode\n\t\t\treturn\n\t\t}\n\n\t\t// Set terminal name only if enabled\n\t\tif (shouldRename) {\n\t\t\tsaveTerminalTitle()\n\t\t\tconst gitInfo = await getGitInfo(projectDir)\n\t\t\tif (preSpawnSignalExitCode !== null) {\n\t\t\t\tchildExitCode = preSpawnSignalExitCode\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tsetTerminalName(formatTerminalName(projectDir, config.profileName ?? \"default\", gitInfo))\n\t\t}\n\n\t\tif (preSpawnSignalExitCode !== null) {\n\t\t\tchildExitCode = preSpawnSignalExitCode\n\t\t\treturn\n\t\t}\n\n\t\t// Determine OpenCode binary\n\t\tconst configuredBin = resolveOpenCodeBinary({\n\t\t\tconfigBin: ocxConfig?.bin,\n\t\t\tenvBin: process.env.OPENCODE_BIN,\n\t\t})\n\n\t\tconst hasProfileLaunchContext = Boolean(config.profileName)\n\t\tconst resolvedOpenCodeLaunchBin = hasProfileLaunchContext\n\t\t\t? resolveStableOpenCodeLauncherPath({\n\t\t\t\t\tconfiguredBin,\n\t\t\t\t\tcwd: projectDir,\n\t\t\t\t})\n\t\t\t: configuredBin\n\t\tconst resolvedOcxBin = hasProfileLaunchContext\n\t\t\t? resolveStableOcxExecutablePath({\n\t\t\t\t\tcwd: projectDir,\n\t\t\t\t\tinheritedOcxBin: process.env.OCX_BIN,\n\t\t\t\t})\n\t\t\t: undefined\n\n\t\t// Spawn OpenCode directly in the project directory with config via environment\n\t\tconst configContent = configToPass ? JSON.stringify(configToPass) : undefined\n\n\t\ttry {\n\t\t\tproc = Bun.spawn({\n\t\t\t\tcmd: [resolvedOpenCodeLaunchBin, ...args],\n\t\t\t\tcwd: projectDir,\n\t\t\t\tenv: buildOpenCodeEnv({\n\t\t\t\t\tbaseEnv: process.env as Record<string, string | undefined>,\n\t\t\t\t\tprofileName: config.profileName ?? undefined,\n\t\t\t\t\tocxBin: resolvedOcxBin,\n\t\t\t\t\topencodeBin: resolvedOpenCodeLaunchBin,\n\t\t\t\t\tconfigDir: mergedConfig?.path,\n\t\t\t\t\tconfigContent,\n\t\t\t\t}),\n\t\t\t\tstdin: \"inherit\",\n\t\t\t\tstdout: \"inherit\",\n\t\t\t\tstderr: \"inherit\",\n\t\t\t})\n\t\t} catch (error: unknown) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"spawn\",\n\t\t\t\t`Failed to launch OpenCode binary \"${configuredBin}\": ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t)\n\t\t}\n\n\t\t// Wait for child to exit\n\t\tchildExitCode = await proc.exited\n\t} catch (error: unknown) {\n\t\tprimaryFailure =\n\t\t\terror instanceof Error\n\t\t\t\t? error\n\t\t\t\t: createOpencodeOcError(\"spawn\", `OpenCode process failed: ${String(error)}`)\n\t} finally {\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\tif (shouldRename) {\n\t\t\trestoreTerminalTitle()\n\t\t}\n\n\t\tif (mergedConfig) {\n\t\t\ttry {\n\t\t\t\tawait mergedConfig.cleanup()\n\t\t\t} catch (cleanupError: unknown) {\n\t\t\t\tconst hasPrimaryFailure =\n\t\t\t\t\tprimaryFailure !== null ||\n\t\t\t\t\tpreSpawnSignalExitCode !== null ||\n\t\t\t\t\t(childExitCode !== null && childExitCode !== 0)\n\n\t\t\t\tif (hasPrimaryFailure) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t`Cleanup warning: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}`,\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tconst cleanupFailure: Error =\n\t\t\t\t\t\tcleanupError instanceof Error\n\t\t\t\t\t\t\t? cleanupError\n\t\t\t\t\t\t\t: createOpencodeOcError(\n\t\t\t\t\t\t\t\t\t\"cleanup\",\n\t\t\t\t\t\t\t\t\t`Failed to remove temporary merged config directory: ${String(cleanupError)}`,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\tprimaryFailure = cleanupFailure\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (primaryFailure) {\n\t\tthrow primaryFailure\n\t}\n\n\tif (childExitCode !== null) {\n\t\tprocess.exit(childExitCode)\n\t}\n}\n",
|
|
105
109
|
"/**\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 * 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 type { Command } from \"commander\"\nimport { ConfigResolver } from \"../config/resolver\"\nimport { getProfileDir, getProfileOpencodeConfig } from \"../profile/paths\"\nimport { getGitInfo } from \"../utils/git-context\"\nimport { handleError, logger } from \"../utils/index\"\nimport { getGlobalConfigPath } from \"../utils/paths\"\nimport {\n\tformatTerminalName,\n\trestoreTerminalTitle,\n\tsaveTerminalTitle,\n\tsetTerminalName,\n} from \"../utils/terminal-title\"\n\ninterface OpencodeOptions {\n\tprofile?: string\n\trename?: boolean\n}\n\n/**\n * Deduplicates an array while preserving last occurrence.\n * Last-wins behavior: if duplicates exist, keeps the LAST occurrence.\n *\n * Example: [\"a\", \"b\", \"a\", \"c\"] -> [\"b\", \"a\", \"c\"]\n * (first \"a\" is removed, last \"a\" is kept)\n *\n * @internal - Exported for testing\n */\nexport function dedupeLastWins<T>(items: T[]): T[] {\n\tconst seen = new Set<T>()\n\tconst result: T[] = []\n\n\t// Iterate backwards to find last occurrences\n\tfor (let i = items.length - 1; i >= 0; i--) {\n\t\t// biome-ignore lint/style/noNonNullAssertion: index i is guaranteed valid within bounds\n\t\tconst item = items[i]!\n\t\tif (!seen.has(item)) {\n\t\t\tseen.add(item)\n\t\t\tresult.unshift(item) // Prepend to maintain order\n\t\t}\n\t}\n\n\treturn result\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: set to \"true\" ONLY when a profile is active\n * (profileName is provided). When no profile, project config is NOT disabled.\n * - OPENCODE_CONFIG_DIR: when profile active → profile-specific dir;\n * when no profile → global config dir (XDG-aware)\n * - configContent is a pre-serialized JSON string; upstream OpenCode handles\n * {env:...} / {file:...} token resolution in OPENCODE_CONFIG_CONTENT\n */\nexport function buildOpenCodeEnv(opts: {\n\tbaseEnv: Record<string, string | undefined>\n\tprofileName?: string\n\tconfigContent?: string\n}): Record<string, string | undefined> {\n\t// Profile presence gates both OPENCODE_DISABLE_PROJECT_CONFIG and OPENCODE_CONFIG_DIR\n\tconst hasProfile = Boolean(opts.profileName)\n\n\treturn {\n\t\t...opts.baseEnv,\n\t\t...(hasProfile && { OPENCODE_DISABLE_PROJECT_CONFIG: \"true\" }),\n\t\tOPENCODE_CONFIG_DIR: hasProfile\n\t\t\t? getProfileDir(opts.profileName as string)\n\t\t\t: getGlobalConfigPath(),\n\t\t...(opts.configContent && { OPENCODE_CONFIG_CONTENT: opts.configContent }),\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(\"oc\")\n\t\t.alias(\"opencode\")\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.allowUnknownOption()\n\t\t.allowExcessArguments(true)\n\t\t.action(async (options: OpencodeOptions, command: Command) => {\n\t\t\ttry {\n\t\t\t\tawait runOpencode(command.args, options)\n\t\t\t} catch (error) {\n\t\t\t\thandleError(error)\n\t\t\t}\n\t\t})\n}\n\nasync function runOpencode(args: string[], options: OpencodeOptions): Promise<void> {\n\t// Resolve project directory\n\tconst projectDir = 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// Print feedback about which profile is being used\n\tif (config.profileName) {\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// Check for profile's opencode.jsonc (optional)\n\tif (config.profileName) {\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\t// Merge discovered instructions with user-configured instructions\n\t// Order: discovered/global/profile/registry/project first, then user config instructions last (highest priority)\n\tconst userInstructions = Array.isArray(config.opencode.instructions)\n\t\t? config.opencode.instructions\n\t\t: []\n\tconst allInstructions = [...config.instructions, ...userInstructions]\n\t// Deduplicate while preserving last occurrence (last-wins)\n\tconst dedupedInstructions = dedupeLastWins(allInstructions)\n\n\tconst configToPass =\n\t\tdedupedInstructions.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: dedupedInstructions.length > 0 ? dedupedInstructions : 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 = () => {\n\t\tif (proc) {\n\t\t\tproc.kill(\"SIGINT\")\n\t\t} else {\n\t\t\t// No child yet - restore terminal and exit with standard SIGINT code\n\t\t\tif (shouldRename) {\n\t\t\t\trestoreTerminalTitle()\n\t\t\t}\n\t\t\tprocess.exit(130)\n\t\t}\n\t}\n\n\tconst sigtermHandler = () => {\n\t\tif (proc) {\n\t\t\tproc.kill(\"SIGTERM\")\n\t\t} else {\n\t\t\t// No child yet - restore terminal and exit with standard SIGTERM code\n\t\t\tif (shouldRename) {\n\t\t\t\trestoreTerminalTitle()\n\t\t\t}\n\t\t\tprocess.exit(143)\n\t\t}\n\t}\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\tconst configContent = configToPass ? JSON.stringify(configToPass) : undefined\n\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\tprofileName: config.profileName ?? undefined,\n\t\t\tconfigContent,\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",
|
|
110
|
+
"import { randomUUID } from \"node:crypto\"\nimport {\n\tcopyFile,\n\tcp,\n\tlstat,\n\tmkdir,\n\tmkdtemp,\n\treaddir,\n\treadFile,\n\trealpath,\n\trename,\n\trm,\n\tunlink,\n} from \"node:fs/promises\"\nimport { tmpdir } from \"node:os\"\nimport { basename, dirname, isAbsolute, join, relative } from \"node:path\"\nimport { Glob } from \"bun\"\nimport { type ParseError, parse as parseJsonc, printParseErrorCode } from \"jsonc-parser\"\nimport { z } from \"zod\"\nimport { findLocalConfigDir, OCX_CONFIG_FILE } from \"../profile/paths\"\nimport { ConfigError } from \"../utils/errors\"\nimport { validatePath } from \"../utils/path-security\"\n\nexport const OPENCODE_OVERLAY_SOURCE_SCOPES = [\"agent\", \"agents\", \"skill\", \"skills\"] as const\nexport const OPENCODE_MERGED_DIR_PREFIX = \"ocx-oc-merged-\"\nexport const OVERLAY_TRANSACTION_MANIFEST_VERSION = 1\n\nconst OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE =\n\t\"Full TOCTOU/symlink-swap hardening requires an fd-based native helper transaction.\"\n\nexport type OpencodeOcErrorClass = \"read\" | \"parse\" | \"validate\" | \"copy\" | \"spawn\" | \"cleanup\"\ntype Awaitable<T> = T | Promise<T>\n\ntype OverlayEntryType = \"file\" | \"directory\" | \"symlink\" | \"other\"\n\nexport interface OverlayManifestSourceSnapshot {\n\tentryType: OverlayEntryType\n\tdevice: string\n\tinode: string\n\tmode: string\n\tsize: string\n\tmtimeMs: string\n}\n\nexport interface OverlayTransactionManifestOperation {\n\tsourceRelativePath: string\n\tdestinationRelativePath: string\n\tsourceSnapshot: OverlayManifestSourceSnapshot\n}\n\nexport interface OverlayTransactionManifest {\n\tversion: typeof OVERLAY_TRANSACTION_MANIFEST_VERSION\n\tprojectConfigDir: string\n\toperations: OverlayTransactionManifestOperation[]\n}\n\nexport type OverlayHardeningMode = \"best-effort-js\" | \"native-fd-required\"\nexport type OverlayHardeningLevel = \"best-effort-js\" | \"native-fd\"\n\nexport interface OverlayNativeTransactionHelper {\n\treadonly name: string\n\tapplyManifest(manifest: OverlayTransactionManifest, mergedConfigDir: string): Promise<void>\n}\n\nexport function createOpencodeOcError(\n\terrorClass: OpencodeOcErrorClass,\n\tdetail: string,\n): ConfigError {\n\treturn new ConfigError(`ocx oc ${errorClass} error: ${detail}`)\n}\n\nfunction formatUnknownError(error: unknown): string {\n\tif (error instanceof Error) {\n\t\treturn error.message\n\t}\n\n\treturn String(error)\n}\n\nfunction formatJsoncParseError(parseErrors: ParseError[]): string {\n\tif (parseErrors.length === 0) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\tconst firstError = parseErrors[0]\n\tif (!firstError) {\n\t\treturn \"Unknown parse error\"\n\t}\n\n\treturn `${printParseErrorCode(firstError.error)} at offset ${firstError.offset}`\n}\n\nfunction toPosixPath(pathValue: string): string {\n\treturn pathValue.replaceAll(\"\\\\\", \"/\")\n}\n\nfunction normalizeGlobPattern(pattern: string): string {\n\treturn pattern.startsWith(\"./\") ? pattern.slice(2) : pattern\n}\n\nfunction isPathWithin(parentPath: string, childPath: string): boolean {\n\tconst relativePath = relative(parentPath, childPath)\n\tif (relativePath.length === 0) {\n\t\treturn true\n\t}\n\n\treturn !relativePath.startsWith(\"..\") && !isAbsolute(relativePath)\n}\n\nfunction getOverlayEntryType(stats: Awaited<ReturnType<typeof lstat>>): OverlayEntryType {\n\tif (stats.isFile()) {\n\t\treturn \"file\"\n\t}\n\n\tif (stats.isDirectory()) {\n\t\treturn \"directory\"\n\t}\n\n\tif (stats.isSymbolicLink()) {\n\t\treturn \"symlink\"\n\t}\n\n\treturn \"other\"\n}\n\nfunction captureOverlaySnapshot(\n\tstats: Awaited<ReturnType<typeof lstat>>,\n): OverlayManifestSourceSnapshot {\n\treturn {\n\t\tentryType: getOverlayEntryType(stats),\n\t\tdevice: String(stats.dev),\n\t\tinode: String(stats.ino),\n\t\tmode: String(stats.mode),\n\t\tsize: String(stats.size),\n\t\tmtimeMs: String(stats.mtimeMs),\n\t}\n}\n\nfunction overlaySnapshotIdentityMatches(\n\texpected: OverlayManifestSourceSnapshot,\n\tactual: OverlayManifestSourceSnapshot,\n): boolean {\n\treturn (\n\t\texpected.entryType === actual.entryType &&\n\t\texpected.device === actual.device &&\n\t\texpected.inode === actual.inode &&\n\t\texpected.mode === actual.mode\n\t)\n}\n\nfunction overlaySnapshotContentMatches(\n\texpected: OverlayManifestSourceSnapshot,\n\tactual: OverlayManifestSourceSnapshot,\n): boolean {\n\treturn expected.size === actual.size && expected.mtimeMs === actual.mtimeMs\n}\n\nasync function assertPathSnapshotUnchanged(options: {\n\tabsolutePath: string\n\toverlayRelativePath: string\n\texpectedSnapshot: OverlayManifestSourceSnapshot\n\tphase: string\n\tmustRemainDirectory?: boolean\n\tmustRemainFile?: boolean\n\tcompareContent?: boolean\n}): Promise<void> {\n\tlet currentStats: Awaited<ReturnType<typeof lstat>>\n\ttry {\n\t\tcurrentStats = await lstat(options.absolutePath)\n\t} catch {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay path changed during ${options.phase}: ${options.overlayRelativePath}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n\n\tif (options.mustRemainDirectory && !currentStats.isDirectory()) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay path changed during ${options.phase}: ${options.overlayRelativePath}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n\n\tif (options.mustRemainFile && !currentStats.isFile()) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay path changed during ${options.phase}: ${options.overlayRelativePath}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n\n\tconst currentSnapshot = captureOverlaySnapshot(currentStats)\n\tconst identityMatches = overlaySnapshotIdentityMatches(options.expectedSnapshot, currentSnapshot)\n\tconst shouldCompareContent = options.compareContent ?? true\n\tconst contentMatches = !shouldCompareContent\n\t\t? true\n\t\t: overlaySnapshotContentMatches(options.expectedSnapshot, currentSnapshot)\n\n\tif (!identityMatches || !contentMatches) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay path changed during ${options.phase}: ${options.overlayRelativePath}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n}\n\nexport interface ProjectOverlayPolicy {\n\tinclude: string[]\n\texclude: string[]\n}\n\nexport interface OverlayCandidate {\n\tsourcePath: string\n\toverlayRelativePath: string\n\tsourceSnapshot?: OverlayManifestSourceSnapshot\n}\n\nexport interface OverlayCopyOperation {\n\tsourcePath: string\n\tdestinationRelativePath: string\n\tsourceSnapshot?: OverlayManifestSourceSnapshot\n}\n\nexport interface OverlayCollectionSeams {\n\tbeforeScopeInspect?: (context: {\n\t\tscope: (typeof OPENCODE_OVERLAY_SOURCE_SCOPES)[number]\n\t\tscopeAbsolutePath: string\n\t\tprojectConfigDir: string\n\t}) => Awaitable<void>\n\tbeforeDirectoryRead?: (context: {\n\t\tabsolutePath: string\n\t\toverlayRelativePath: string\n\t}) => Awaitable<void>\n}\n\nasync function assertSafeOverlayDestinationPath(\n\tmergedConfigDir: string,\n\tdestinationPath: string,\n\tdestinationRelativePath: string,\n): Promise<void> {\n\tconst relativeDestinationPath = toPosixPath(relative(mergedConfigDir, destinationPath))\n\tconst pathComponents = relativeDestinationPath\n\t\t.split(\"/\")\n\t\t.filter((component) => component.length > 0)\n\n\tlet currentPath = mergedConfigDir\n\tfor (const component of pathComponents) {\n\t\tcurrentPath = join(currentPath, component)\n\n\t\tlet currentStats: Awaited<ReturnType<typeof lstat>>\n\t\ttry {\n\t\t\tcurrentStats = await lstat(currentPath)\n\t\t} catch (error) {\n\t\t\tconst errorCode = (error as NodeJS.ErrnoException).code\n\t\t\tif (errorCode === \"ENOENT\") {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Failed to inspect overlay destination path (${destinationRelativePath}): ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tif (currentStats.isSymbolicLink()) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Overlay destination path contains existing symlink (${destinationRelativePath})`,\n\t\t\t)\n\t\t}\n\t}\n}\n\nconst projectOverlayPolicySchema = z\n\t.object({\n\t\tinclude: z.array(z.string()).optional(),\n\t\texclude: z.array(z.string()).optional(),\n\t})\n\t.passthrough()\n\nfunction validatePolicyPatterns(\n\tpolicyPath: string,\n\tfield: \"include\" | \"exclude\",\n\tpatterns: string[],\n): void {\n\tfor (const pattern of patterns) {\n\t\ttry {\n\t\t\tnew Glob(normalizeGlobPattern(pattern))\n\t\t} catch {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Invalid project overlay policy at ${policyPath}: ${field} contains invalid glob pattern \"${pattern}\"`,\n\t\t\t)\n\t\t}\n\t}\n}\n\nexport async function loadProjectOverlayPolicy(\n\tlocalConfigDir: string | null,\n): Promise<ProjectOverlayPolicy> {\n\tif (!localConfigDir) {\n\t\treturn { include: [], exclude: [] }\n\t}\n\n\tconst policyPath = join(localConfigDir, OCX_CONFIG_FILE)\n\tconst policyReadPath = await resolveProjectOverlayPolicyReadPath(localConfigDir, policyPath)\n\tif (!policyReadPath) {\n\t\treturn { include: [], exclude: [] }\n\t}\n\n\tlet policyText: string\n\ttry {\n\t\tpolicyText = await readFile(policyReadPath, \"utf8\")\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"read\",\n\t\t\t`Failed to read project overlay policy at ${policyPath}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tconst parseErrors: ParseError[] = []\n\tconst parsedPolicy = parseJsonc(policyText, parseErrors, { allowTrailingComma: true })\n\tif (parseErrors.length > 0) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"parse\",\n\t\t\t`Failed to parse project overlay policy at ${policyPath}: ${formatJsoncParseError(parseErrors)}`,\n\t\t)\n\t}\n\n\tif (!parsedPolicy || typeof parsedPolicy !== \"object\" || Array.isArray(parsedPolicy)) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Invalid project overlay policy at ${policyPath}: root must be an object`,\n\t\t)\n\t}\n\n\tconst parsedResult = projectOverlayPolicySchema.safeParse(parsedPolicy)\n\tif (!parsedResult.success) {\n\t\tconst firstIssue = parsedResult.error.issues[0]\n\t\tconst issuePath = firstIssue?.path.length ? firstIssue.path.join(\".\") : \"root\"\n\t\tconst issueMessage = firstIssue?.message ?? \"Invalid project overlay policy\"\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Invalid project overlay policy at ${policyPath}: ${issuePath} ${issueMessage}`,\n\t\t)\n\t}\n\n\tconst include = parsedResult.data.include ?? []\n\tconst exclude = parsedResult.data.exclude ?? []\n\n\tvalidatePolicyPatterns(policyPath, \"include\", include)\n\tvalidatePolicyPatterns(policyPath, \"exclude\", exclude)\n\n\treturn { include, exclude }\n}\n\nasync function resolveProjectOverlayPolicyReadPath(\n\tlocalConfigDir: string,\n\tpolicyPath: string,\n): Promise<string | null> {\n\tlet policyStats: Awaited<ReturnType<typeof lstat>>\n\ttry {\n\t\tpolicyStats = await lstat(policyPath)\n\t} catch (error) {\n\t\tconst errorCode = (error as NodeJS.ErrnoException).code\n\t\tif (errorCode === \"ENOENT\" || errorCode === \"ENOTDIR\") {\n\t\t\treturn null\n\t\t}\n\n\t\tthrow createOpencodeOcError(\n\t\t\t\"read\",\n\t\t\t`Failed to inspect project overlay policy at ${policyPath}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!policyStats.isSymbolicLink()) {\n\t\treturn policyPath\n\t}\n\n\tlet projectConfigRealPath: string\n\ttry {\n\t\tprojectConfigRealPath = await realpath(localConfigDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to resolve project config directory ${localConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tlet policyTargetRealPath: string\n\ttry {\n\t\tpolicyTargetRealPath = await realpath(policyPath)\n\t} catch (error) {\n\t\tconst errorCode = (error as NodeJS.ErrnoException).code\n\t\tif (errorCode === \"ENOENT\" || errorCode === \"ENOTDIR\") {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Broken symlink in project overlay policy: ${policyPath}`,\n\t\t\t)\n\t\t}\n\n\t\tthrow createOpencodeOcError(\n\t\t\t\"read\",\n\t\t\t`Failed to inspect project overlay policy symlink at ${policyPath}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!isPathWithin(projectConfigRealPath, policyTargetRealPath)) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Symlink escapes project overlay policy scope: ${policyPath}`,\n\t\t)\n\t}\n\n\treturn policyTargetRealPath\n}\n\nexport function shouldIncludeOverlayPath(pathValue: string, policy: ProjectOverlayPolicy): boolean {\n\tfor (const pattern of policy.include) {\n\t\tconst glob = new Glob(normalizeGlobPattern(pattern))\n\t\tif (glob.match(pathValue)) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tfor (const pattern of policy.exclude) {\n\t\tconst glob = new Glob(normalizeGlobPattern(pattern))\n\t\tif (glob.match(pathValue)) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nexport function planOverlayCopyOperations(\n\tcandidates: readonly OverlayCandidate[],\n\tpolicy: ProjectOverlayPolicy,\n): OverlayCopyOperation[] {\n\treturn candidates\n\t\t.filter((candidate) => shouldIncludeOverlayPath(candidate.overlayRelativePath, policy))\n\t\t.map((candidate) => ({\n\t\t\tsourcePath: candidate.sourcePath,\n\t\t\tdestinationRelativePath: candidate.overlayRelativePath,\n\t\t\tsourceSnapshot: candidate.sourceSnapshot,\n\t\t}))\n}\n\nasync function rejectSymlinkEntry(\n\tprojectConfigRealPath: string,\n\tabsolutePath: string,\n\toverlayRelativePath: string,\n): Promise<never> {\n\tlet targetRealPath: string\n\ttry {\n\t\ttargetRealPath = await realpath(absolutePath)\n\t} catch (error) {\n\t\tconst errorCode = (error as NodeJS.ErrnoException).code\n\t\tif (errorCode === \"ENOENT\" || errorCode === \"ENOTDIR\") {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Broken symlink in project overlay scope: ${overlayRelativePath}`,\n\t\t\t)\n\t\t}\n\n\t\tthrow createOpencodeOcError(\n\t\t\t\"read\",\n\t\t\t`Failed to inspect symlink at ${overlayRelativePath}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!isPathWithin(projectConfigRealPath, targetRealPath)) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Symlink escapes project overlay scope: ${overlayRelativePath}`,\n\t\t)\n\t}\n\n\tthrow createOpencodeOcError(\n\t\t\"validate\",\n\t\t`Symlink entries are not supported in project overlay scope: ${overlayRelativePath}`,\n\t)\n}\n\nasync function collectOverlayCandidatesFromPath(\n\tprojectConfigRealPath: string,\n\tabsPath: string,\n\toverlayRelativePath: string,\n\tcollector: OverlayCandidate[],\n\tseams: OverlayCollectionSeams,\n): Promise<void> {\n\tlet stats: Awaited<ReturnType<typeof lstat>>\n\ttry {\n\t\tstats = await lstat(absPath)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"read\",\n\t\t\t`Failed to inspect project overlay path ${overlayRelativePath}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (stats.isSymbolicLink()) {\n\t\tawait rejectSymlinkEntry(projectConfigRealPath, absPath, overlayRelativePath)\n\t}\n\n\tconst discoveredSnapshot = captureOverlaySnapshot(stats)\n\n\tif (stats.isDirectory()) {\n\t\tawait seams.beforeDirectoryRead?.({\n\t\t\tabsolutePath: absPath,\n\t\t\toverlayRelativePath,\n\t\t})\n\n\t\tlet children: string[]\n\t\ttry {\n\t\t\tchildren = await readdir(absPath)\n\t\t} catch (error) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"read\",\n\t\t\t\t`Failed to read project overlay directory ${overlayRelativePath}: ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tchildren.sort((left, right) => left.localeCompare(right))\n\t\tfor (const childName of children) {\n\t\t\tconst childAbsolutePath = join(absPath, childName)\n\t\t\tconst childRelativePath = toPosixPath(join(overlayRelativePath, childName))\n\t\t\tawait collectOverlayCandidatesFromPath(\n\t\t\t\tprojectConfigRealPath,\n\t\t\t\tchildAbsolutePath,\n\t\t\t\tchildRelativePath,\n\t\t\t\tcollector,\n\t\t\t\tseams,\n\t\t\t)\n\t\t}\n\n\t\tawait assertPathSnapshotUnchanged({\n\t\t\tabsolutePath: absPath,\n\t\t\toverlayRelativePath,\n\t\t\texpectedSnapshot: discoveredSnapshot,\n\t\t\tphase: \"overlay discovery\",\n\t\t\tmustRemainDirectory: true,\n\t\t})\n\t\treturn\n\t}\n\n\tif (!stats.isFile()) {\n\t\treturn\n\t}\n\n\tcollector.push({\n\t\tsourcePath: absPath,\n\t\toverlayRelativePath: toPosixPath(overlayRelativePath),\n\t\tsourceSnapshot: discoveredSnapshot,\n\t})\n}\n\nasync function collectOverlayCandidates(\n\tprojectConfigDir: string,\n\tseams: OverlayCollectionSeams = {},\n): Promise<OverlayCandidate[]> {\n\tlet projectConfigRealPath: string\n\ttry {\n\t\tprojectConfigRealPath = await realpath(projectConfigDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to resolve project config directory ${projectConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tlet projectConfigRootStats: Awaited<ReturnType<typeof lstat>>\n\ttry {\n\t\tprojectConfigRootStats = await lstat(projectConfigDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to inspect project overlay root ${projectConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!projectConfigRootStats.isDirectory()) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Project overlay root changed before discovery: ${projectConfigDir}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n\n\tconst projectConfigRootSnapshot = captureOverlaySnapshot(projectConfigRootStats)\n\n\tconst candidates: OverlayCandidate[] = []\n\tfor (const scope of OPENCODE_OVERLAY_SOURCE_SCOPES) {\n\t\tconst scopeAbsolutePath = join(projectConfigDir, scope)\n\n\t\tawait seams.beforeScopeInspect?.({\n\t\t\tscope,\n\t\t\tscopeAbsolutePath,\n\t\t\tprojectConfigDir,\n\t\t})\n\n\t\tawait assertPathSnapshotUnchanged({\n\t\t\tabsolutePath: projectConfigDir,\n\t\t\toverlayRelativePath: \".opencode\",\n\t\t\texpectedSnapshot: projectConfigRootSnapshot,\n\t\t\tphase: \"overlay discovery\",\n\t\t\tmustRemainDirectory: true,\n\t\t})\n\n\t\tlet scopeStats: Awaited<ReturnType<typeof lstat>>\n\t\ttry {\n\t\t\tscopeStats = await lstat(scopeAbsolutePath)\n\t\t} catch (error) {\n\t\t\tconst errorCode = (error as NodeJS.ErrnoException).code\n\t\t\tif (errorCode === \"ENOENT\" || errorCode === \"ENOTDIR\") {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"read\",\n\t\t\t\t`Failed to inspect project overlay scope ${scope}: ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tif (scopeStats.isSymbolicLink()) {\n\t\t\tawait rejectSymlinkEntry(projectConfigRealPath, scopeAbsolutePath, scope)\n\t\t}\n\n\t\tawait collectOverlayCandidatesFromPath(\n\t\t\tprojectConfigRealPath,\n\t\t\tscopeAbsolutePath,\n\t\t\tscope,\n\t\t\tcandidates,\n\t\t\tseams,\n\t\t)\n\t}\n\n\tcandidates.sort((left, right) =>\n\t\tleft.overlayRelativePath.localeCompare(right.overlayRelativePath),\n\t)\n\treturn candidates\n}\n\nexport type OverlayAtomicPublisher = (sourcePath: string, destinationPath: string) => Promise<void>\n\nexport interface OverlayCopyOperationSeams {\n\tpublishAtomically?: OverlayAtomicPublisher\n\tbeforeSourceVerification?: (operation: OverlayCopyOperation) => Awaitable<void>\n\tbeforeDestinationParentCreate?: (context: {\n\t\toperation: OverlayCopyOperation\n\t\tdestinationPath: string\n\t\tdestinationParentPath: string\n\t}) => Awaitable<void>\n\tbeforeDestinationPublish?: (context: {\n\t\toperation: OverlayCopyOperation\n\t\tdestinationPath: string\n\t\tdestinationParentPath: string\n\t}) => Awaitable<void>\n}\n\nfunction buildOverlayTempPublicationPath(destinationPath: string): string {\n\tconst destinationDirPath = dirname(destinationPath)\n\tconst destinationBaseName = basename(destinationPath)\n\tconst atomicSuffix = `${process.pid}-${randomUUID()}`\n\treturn join(destinationDirPath, `.${destinationBaseName}.ocx-tmp-${atomicSuffix}`)\n}\n\nasync function publishOverlayFileAtomically(\n\tsourcePath: string,\n\tdestinationPath: string,\n): Promise<void> {\n\tconst tempPublicationPath = buildOverlayTempPublicationPath(destinationPath)\n\n\ttry {\n\t\tawait copyFile(sourcePath, tempPublicationPath)\n\t\tawait rename(tempPublicationPath, destinationPath)\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait unlink(tempPublicationPath)\n\t\t} catch {\n\t\t\t// Ignore temp cleanup failures and preserve primary error.\n\t\t}\n\n\t\tthrow error\n\t}\n}\n\nexport async function applyOverlayCopyOperations(\n\toperations: readonly OverlayCopyOperation[],\n\tmergedConfigDir: string,\n\tseams: OverlayCopyOperationSeams = {},\n): Promise<void> {\n\tconst publishAtomically = seams.publishAtomically ?? publishOverlayFileAtomically\n\n\tlet mergedRootStats: Awaited<ReturnType<typeof lstat>>\n\ttry {\n\t\tmergedRootStats = await lstat(mergedConfigDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to inspect merged overlay root ${mergedConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!mergedRootStats.isDirectory()) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Merged overlay root is not a directory: ${mergedConfigDir}`,\n\t\t)\n\t}\n\n\tconst mergedRootSnapshot = captureOverlaySnapshot(mergedRootStats)\n\n\tfor (const operation of operations) {\n\t\tawait seams.beforeSourceVerification?.(operation)\n\n\t\tif (operation.sourceSnapshot) {\n\t\t\tawait assertPathSnapshotUnchanged({\n\t\t\t\tabsolutePath: operation.sourcePath,\n\t\t\t\toverlayRelativePath: operation.destinationRelativePath,\n\t\t\t\texpectedSnapshot: operation.sourceSnapshot,\n\t\t\t\tphase: \"overlay source verification\",\n\t\t\t\tmustRemainFile: true,\n\t\t\t})\n\t\t}\n\n\t\tawait assertPathSnapshotUnchanged({\n\t\t\tabsolutePath: mergedConfigDir,\n\t\t\toverlayRelativePath: \".merged\",\n\t\t\texpectedSnapshot: mergedRootSnapshot,\n\t\t\tphase: \"overlay destination verification\",\n\t\t\tmustRemainDirectory: true,\n\t\t\tcompareContent: false,\n\t\t})\n\n\t\tlet destinationPath: string\n\t\ttry {\n\t\t\tdestinationPath = validatePath(mergedConfigDir, operation.destinationRelativePath)\n\t\t} catch (error) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Overlay destination path is invalid (${operation.destinationRelativePath}): ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tawait assertSafeOverlayDestinationPath(\n\t\t\tmergedConfigDir,\n\t\t\tdestinationPath,\n\t\t\toperation.destinationRelativePath,\n\t\t)\n\n\t\tconst destinationParentPath = dirname(destinationPath)\n\n\t\tawait seams.beforeDestinationParentCreate?.({\n\t\t\toperation,\n\t\t\tdestinationPath,\n\t\t\tdestinationParentPath,\n\t\t})\n\n\t\tawait assertSafeOverlayDestinationPath(\n\t\t\tmergedConfigDir,\n\t\t\tdestinationPath,\n\t\t\toperation.destinationRelativePath,\n\t\t)\n\n\t\ttry {\n\t\t\tawait mkdir(destinationParentPath, { recursive: true })\n\t\t} catch (error) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"copy\",\n\t\t\t\t`Failed to copy overlay file ${operation.destinationRelativePath}: ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tawait assertSafeOverlayDestinationPath(\n\t\t\tmergedConfigDir,\n\t\t\tdestinationPath,\n\t\t\toperation.destinationRelativePath,\n\t\t)\n\n\t\tlet destinationParentStats: Awaited<ReturnType<typeof lstat>>\n\t\ttry {\n\t\t\tdestinationParentStats = await lstat(destinationParentPath)\n\t\t} catch (error) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Failed to inspect overlay destination parent (${operation.destinationRelativePath}): ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\n\t\tif (!destinationParentStats.isDirectory()) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Overlay destination parent changed before publish (${operation.destinationRelativePath}). ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t\t)\n\t\t}\n\n\t\tconst destinationParentSnapshot = captureOverlaySnapshot(destinationParentStats)\n\n\t\tawait seams.beforeDestinationPublish?.({\n\t\t\toperation,\n\t\t\tdestinationPath,\n\t\t\tdestinationParentPath,\n\t\t})\n\n\t\tawait assertPathSnapshotUnchanged({\n\t\t\tabsolutePath: mergedConfigDir,\n\t\t\toverlayRelativePath: \".merged\",\n\t\t\texpectedSnapshot: mergedRootSnapshot,\n\t\t\tphase: \"overlay destination publish\",\n\t\t\tmustRemainDirectory: true,\n\t\t\tcompareContent: false,\n\t\t})\n\n\t\tawait assertPathSnapshotUnchanged({\n\t\t\tabsolutePath: destinationParentPath,\n\t\t\toverlayRelativePath: operation.destinationRelativePath,\n\t\t\texpectedSnapshot: destinationParentSnapshot,\n\t\t\tphase: \"overlay destination publish\",\n\t\t\tmustRemainDirectory: true,\n\t\t\tcompareContent: false,\n\t\t})\n\n\t\tawait assertSafeOverlayDestinationPath(\n\t\t\tmergedConfigDir,\n\t\t\tdestinationPath,\n\t\t\toperation.destinationRelativePath,\n\t\t)\n\n\t\ttry {\n\t\t\tawait publishAtomically(operation.sourcePath, destinationPath)\n\t\t} catch (error) {\n\t\t\tif (error instanceof ConfigError) {\n\t\t\t\tthrow error\n\t\t\t}\n\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"copy\",\n\t\t\t\t`Failed to copy overlay file ${operation.destinationRelativePath}: ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\t}\n}\n\nasync function copyProfileBaseToMergedDir(\n\tprofileDir: string,\n\tmergedConfigDir: string,\n): Promise<void> {\n\tlet profileEntries: string[]\n\ttry {\n\t\tprofileEntries = await readdir(profileDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"copy\",\n\t\t\t`Failed to read profile directory ${profileDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tfor (const entryName of profileEntries) {\n\t\tconst sourcePath = join(profileDir, entryName)\n\t\tconst destinationPath = join(mergedConfigDir, entryName)\n\n\t\ttry {\n\t\t\tawait cp(sourcePath, destinationPath, { recursive: true, force: true, errorOnExist: false })\n\t\t} catch (error) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"copy\",\n\t\t\t\t`Failed to copy profile base file ${entryName}: ${formatUnknownError(error)}`,\n\t\t\t)\n\t\t}\n\t}\n}\n\nexport async function cleanupMergedConfigDir(mergedConfigDir: string): Promise<void> {\n\ttry {\n\t\tawait rm(mergedConfigDir, { recursive: true, force: true })\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"cleanup\",\n\t\t\t`Failed to remove temporary merged config directory ${mergedConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n}\n\nfunction toOverlaySourceRelativePath(projectConfigDir: string, sourcePath: string): string {\n\tconst relativeSourcePath = toPosixPath(relative(projectConfigDir, sourcePath))\n\tif (!relativeSourcePath || relativeSourcePath === \".\") {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay source path failed relative parsing: ${sourcePath}`,\n\t\t)\n\t}\n\n\tif (\n\t\trelativeSourcePath === \"..\" ||\n\t\trelativeSourcePath.startsWith(\"../\") ||\n\t\tisAbsolute(relativeSourcePath)\n\t) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Overlay source path escapes project overlay scope: ${sourcePath}`,\n\t\t)\n\t}\n\n\treturn relativeSourcePath\n}\n\nfunction buildOverlayTransactionManifest(\n\tprojectConfigDir: string,\n\toperations: readonly OverlayCopyOperation[],\n): OverlayTransactionManifest {\n\tconst parsedOperations = operations.map((operation) => {\n\t\tif (!operation.sourceSnapshot) {\n\t\t\tthrow createOpencodeOcError(\n\t\t\t\t\"validate\",\n\t\t\t\t`Overlay source snapshot missing for ${operation.destinationRelativePath}. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tsourceRelativePath: toOverlaySourceRelativePath(projectConfigDir, operation.sourcePath),\n\t\t\tdestinationRelativePath: operation.destinationRelativePath,\n\t\t\tsourceSnapshot: operation.sourceSnapshot,\n\t\t}\n\t})\n\n\treturn {\n\t\tversion: OVERLAY_TRANSACTION_MANIFEST_VERSION,\n\t\tprojectConfigDir,\n\t\toperations: parsedOperations,\n\t}\n}\n\nfunction resolveOverlayNativeTransactionHelper(): OverlayNativeTransactionHelper | null {\n\treturn null\n}\n\nasync function applyOverlayTransactionManifestWithJs(options: {\n\tmanifest: OverlayTransactionManifest\n\tmergedConfigDir: string\n\tcopySeams?: OverlayCopyOperationSeams\n}): Promise<void> {\n\tconst operations: OverlayCopyOperation[] = options.manifest.operations.map((operation) => ({\n\t\tsourcePath: validatePath(options.manifest.projectConfigDir, operation.sourceRelativePath),\n\t\tdestinationRelativePath: operation.destinationRelativePath,\n\t\tsourceSnapshot: operation.sourceSnapshot,\n\t}))\n\n\tawait applyOverlayCopyOperations(operations, options.mergedConfigDir, options.copySeams)\n}\n\nasync function executeOverlayMergeTransaction(options: {\n\tmanifest: OverlayTransactionManifest\n\tmergedConfigDir: string\n\thardeningMode: OverlayHardeningMode\n\tcopySeams?: OverlayCopyOperationSeams\n\tnativeHelper?: OverlayNativeTransactionHelper | null\n}): Promise<OverlayHardeningLevel> {\n\tif (options.manifest.operations.length === 0) {\n\t\treturn \"best-effort-js\"\n\t}\n\n\tconst nativeHelper = options.nativeHelper ?? resolveOverlayNativeTransactionHelper()\n\tif (nativeHelper) {\n\t\tawait nativeHelper.applyManifest(options.manifest, options.mergedConfigDir)\n\t\treturn \"native-fd\"\n\t}\n\n\tif (options.hardeningMode === \"native-fd-required\") {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Native fd helper required for overlay merge, but none is available in this Bun/Node runtime. ${OVERLAY_NATIVE_HELPER_REQUIRED_MESSAGE}`,\n\t\t)\n\t}\n\n\tawait applyOverlayTransactionManifestWithJs({\n\t\tmanifest: options.manifest,\n\t\tmergedConfigDir: options.mergedConfigDir,\n\t\tcopySeams: options.copySeams,\n\t})\n\n\treturn \"best-effort-js\"\n}\n\nexport interface OverlayPrepareSeams {\n\tcollection?: OverlayCollectionSeams\n\tcopy?: OverlayCopyOperationSeams\n\tnativeHelper?: OverlayNativeTransactionHelper | null\n}\n\ninterface PrepareMergedConfigDirOptions {\n\tprojectDir: string\n\tprofileDir: string\n\thardeningMode?: OverlayHardeningMode\n\tseams?: OverlayPrepareSeams\n}\n\nasync function resolveProjectOverlayConfigDir(localConfigDir: string): Promise<string> {\n\tconst projectRootDir = dirname(localConfigDir)\n\n\tlet projectRealPath: string\n\ttry {\n\t\tprojectRealPath = await realpath(projectRootDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to resolve project directory ${projectRootDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tlet localConfigRealPath: string\n\ttry {\n\t\tlocalConfigRealPath = await realpath(localConfigDir)\n\t} catch (error) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Unable to resolve project config directory ${localConfigDir}: ${formatUnknownError(error)}`,\n\t\t)\n\t}\n\n\tif (!isPathWithin(projectRealPath, localConfigRealPath)) {\n\t\tthrow createOpencodeOcError(\n\t\t\t\"validate\",\n\t\t\t`Project .opencode root resolves outside project directory: ${localConfigDir}`,\n\t\t)\n\t}\n\n\treturn localConfigRealPath\n}\n\nexport interface PreparedMergedConfigDir {\n\tpath: string\n\tcleanup: () => Promise<void>\n\thardeningLevel: OverlayHardeningLevel\n}\n\nfunction toPrimaryPrepareError(error: unknown): ConfigError {\n\tif (error instanceof ConfigError) {\n\t\treturn error\n\t}\n\n\treturn createOpencodeOcError(\n\t\t\"copy\",\n\t\t`Failed to prepare temporary merged config directory: ${formatUnknownError(error)}`,\n\t)\n}\n\nexport async function prepareMergedConfigDirForProfile(\n\toptions: PrepareMergedConfigDirOptions,\n): Promise<PreparedMergedConfigDir> {\n\tconst localConfigDir = findLocalConfigDir(options.projectDir)\n\tconst hardeningMode = options.hardeningMode ?? \"best-effort-js\"\n\tlet mergedConfigDir: string | null = null\n\n\ttry {\n\t\tmergedConfigDir = await mkdtemp(join(tmpdir(), OPENCODE_MERGED_DIR_PREFIX))\n\n\t\tawait copyProfileBaseToMergedDir(options.profileDir, mergedConfigDir)\n\n\t\tlet hardeningLevel: OverlayHardeningLevel = \"best-effort-js\"\n\n\t\tif (localConfigDir) {\n\t\t\tconst projectOverlayConfigDir = await resolveProjectOverlayConfigDir(localConfigDir)\n\t\t\tconst policy = await loadProjectOverlayPolicy(projectOverlayConfigDir)\n\t\t\tconst candidates = await collectOverlayCandidates(\n\t\t\t\tprojectOverlayConfigDir,\n\t\t\t\toptions.seams?.collection,\n\t\t\t)\n\t\t\tconst copyPlan = planOverlayCopyOperations(candidates, policy)\n\t\t\tconst manifest = buildOverlayTransactionManifest(projectOverlayConfigDir, copyPlan)\n\t\t\thardeningLevel = await executeOverlayMergeTransaction({\n\t\t\t\tmanifest,\n\t\t\t\tmergedConfigDir,\n\t\t\t\thardeningMode,\n\t\t\t\tcopySeams: options.seams?.copy,\n\t\t\t\tnativeHelper: options.seams?.nativeHelper,\n\t\t\t})\n\t\t}\n\n\t\tconst preparedPath = mergedConfigDir\n\t\treturn {\n\t\t\tpath: preparedPath,\n\t\t\tcleanup: () => cleanupMergedConfigDir(preparedPath),\n\t\t\thardeningLevel,\n\t\t}\n\t} catch (error) {\n\t\tconst primaryError = toPrimaryPrepareError(error)\n\n\t\tif (mergedConfigDir) {\n\t\t\ttry {\n\t\t\t\tawait cleanupMergedConfigDir(mergedConfigDir)\n\t\t\t} catch (cleanupError) {\n\t\t\t\tprimaryError.message = `${primaryError.message}\\nCleanup warning: ${formatUnknownError(cleanupError)}`\n\t\t\t}\n\t\t}\n\n\t\tthrow primaryError\n\t}\n}\n",
|
|
107
111
|
"/**\n * Profile Add Command\n *\n * Create a new profile (global only — local profiles are unsupported).\n * Optionally clone settings from an existing profile or install from registry.\n *\n * Contract:\n * - Empty profile: `ocx profile add <name> --global`\n * - Clone profile: `ocx profile add <name> --clone <profile-name> --global`\n * - Install from configured registry: `ocx profile add <name> --source <namespace/component> --global`\n * - Install from ephemeral registry: `ocx profile add <name> --source <namespace/component> --from <registry-url> --global`\n */\n\nimport type { Command } from \"commander\"\nimport { parse as parseJsonc } from \"jsonc-parser\"\nimport { atomicCopy } 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 {\n\tConfigError,\n\tOCXError,\n\tProfileExistsError,\n\tProfileNotFoundError,\n\tValidationError,\n} from \"../../utils/errors\"\nimport { handleError, logger, normalizeRegistryUrl, outputJson } from \"../../utils/index\"\nimport { installProfileFromRegistry } from \"./install-from-registry\"\n\n// =============================================================================\n// SOURCE INPUT TYPES (Parsed at boundary)\n// =============================================================================\n\n/**\n * Parsed --source input - namespace/component format only.\n * Parsed at the boundary (Law 2: Parse Don't Validate).\n */\nexport interface SourceInput {\n\tnamespace: string\n\tcomponent: string\n}\n\n/**\n * Parse the --source option value to extract namespace and component.\n *\n * @param source - The --source option value (must be namespace/component format)\n * @returns Parsed SourceInput with namespace and component\n * @throws ValidationError if format is invalid\n */\nexport function parseSourceOption(source: string): SourceInput {\n\t// Guard: empty input\n\tif (!source?.trim()) {\n\t\tthrow new ValidationError(\"--source value cannot be empty\")\n\t}\n\n\tconst trimmed = source.trim()\n\n\t// Must contain exactly one /\n\tconst slashCount = (trimmed.match(/\\//g) || []).length\n\tif (slashCount !== 1) {\n\t\tthrow new ValidationError(`Invalid --source format: \"${source}\". Expected: namespace/component`)\n\t}\n\n\tconst [namespace, component] = trimmed.split(\"/\").map((s) => s.trim())\n\tif (!namespace || !component) {\n\t\tthrow new ValidationError(`Invalid --source format: \"${source}\". Expected: namespace/component`)\n\t}\n\n\treturn { namespace, component }\n}\n\n// =============================================================================\n// COMMAND OPTIONS\n// =============================================================================\n\ninterface ProfileAddOptions {\n\tclone?: string\n\tsource?: string\n\tfrom?: string\n\tglobal?: boolean\n\tjson?: boolean\n}\n\ninterface ProfileAddResult {\n\tname: string\n\tscope: \"local\" | \"global\"\n\tmode: \"empty\" | \"clone\" | \"registry\"\n\tcloneFrom?: string\n\tregistry?: {\n\t\tnamespace: string\n\t\tcomponent: string\n\t\turl: string\n\t\tephemeral: boolean\n\t}\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(\n\t\t\t\"Create a new profile (--global required), clone from existing, or install from registry\",\n\t\t)\n\t\t.option(\"--clone <profile>\", \"Clone from existing global profile\")\n\t\t.option(\"--source <namespace/component>\", \"Install from registry (requires --global)\")\n\t\t.option(\"--from <url>\", \"Ephemeral registry URL for --source (does not persist)\")\n\t\t.option(\"-g, --global\", \"Create global profile (required — local profiles are unsupported)\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.addHelpText(\n\t\t\t\"after\",\n\t\t\t`\nExamples:\n $ ocx profile add work --global # Create global profile (~/.config/opencode/profiles/work/)\n $ ocx profile add work --clone dev --global # Clone from existing global profile\n $ ocx profile add work --source kdco/minimal --global # Install from configured registry\n $ ocx profile add work --source kdco/minimal --from http://r.com --global # Install from ephemeral registry\n`,\n\t\t)\n\t\t.action(async (name: string, options: ProfileAddOptions) => {\n\t\t\ttry {\n\t\t\t\tconst result = await runProfileAdd(name, options)\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: result })\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\n// =============================================================================\n// COMMAND IMPLEMENTATION\n// =============================================================================\n\nasync function runProfileAdd(name: string, options: ProfileAddOptions): Promise<ProfileAddResult> {\n\tconst quiet = options.json === true\n\n\t// ==========================================================================\n\t// Guard: Validate option combinations (Law 1: Early Exit, Law 4: Fail Fast)\n\t// These fire before the --global guard so their specific messages are preserved.\n\t// ==========================================================================\n\n\t// Guard: --clone cannot be used with --source or --from\n\tif (options.clone && (options.source || options.from)) {\n\t\tthrow new ValidationError(\n\t\t\t\"--clone cannot be used with --source or --from.\\n\\n\" +\n\t\t\t\t\"Use one of:\\n\" +\n\t\t\t\t\" ocx profile add <name> --clone <profile> --global # Clone existing profile\\n\" +\n\t\t\t\t\" ocx profile add <name> --source <ns/comp> --global # Install from registry\",\n\t\t)\n\t}\n\n\t// Guard: --from requires --source\n\tif (options.from && !options.source) {\n\t\t// Detect legacy usage pattern and provide migration hint\n\t\tconst fromValue = options.from.trim()\n\t\tconst isUrl = fromValue.startsWith(\"http://\") || fromValue.startsWith(\"https://\")\n\t\tconst isRegistryRef = (fromValue.match(/\\//g) || []).length === 1 && !isUrl\n\n\t\tif (isRegistryRef) {\n\t\t\t// Legacy: --from namespace/component\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid option: --from requires --source.\\n\\n` +\n\t\t\t\t\t`Migration: The --from option now only accepts registry URLs.\\n` +\n\t\t\t\t\t`Use --source for namespace/component references:\\n\\n` +\n\t\t\t\t\t` ocx profile add ${name} --source ${fromValue} --global`,\n\t\t\t)\n\t\t}\n\n\t\tif (isUrl) {\n\t\t\t// Legacy: --from <url> with component in path\n\t\t\t// Attempt to extract base URL safely for a helpful hint\n\t\t\tlet migrationHint: string\n\t\t\ttry {\n\t\t\t\tconst parsed = new URL(fromValue)\n\t\t\t\t// Check if path has component-like segments (namespace/component)\n\t\t\t\tconst pathSegments = parsed.pathname.split(\"/\").filter(Boolean)\n\t\t\t\tif (pathSegments.length >= 2) {\n\t\t\t\t\t// Extract namespace/component from path and provide base URL\n\t\t\t\t\tconst component = pathSegments.slice(-2).join(\"/\")\n\t\t\t\t\tparsed.pathname = pathSegments.slice(0, -2).join(\"/\") || \"/\"\n\t\t\t\t\tconst baseUrl = parsed.toString().replace(/\\/$/, \"\")\n\t\t\t\t\tmigrationHint =\n\t\t\t\t\t\t`Migration: Separate the registry URL and component:\\n\\n` +\n\t\t\t\t\t\t` ocx profile add ${name} --source ${component} --from ${baseUrl} --global`\n\t\t\t\t} else {\n\t\t\t\t\t// Path doesn't look like namespace/component - use generic template\n\t\t\t\t\tmigrationHint =\n\t\t\t\t\t\t`Migration: Separate the registry URL and component:\\n\\n` +\n\t\t\t\t\t\t` ocx profile add ${name} --source <namespace/component> --from <registry-url> --global`\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// URL parsing failed - use generic template\n\t\t\t\tmigrationHint =\n\t\t\t\t\t`Migration: Separate the registry URL and component:\\n\\n` +\n\t\t\t\t\t` ocx profile add ${name} --source <namespace/component> --from <registry-url> --global`\n\t\t\t}\n\t\t\tthrow new ValidationError(`Invalid option: --from requires --source.\\n\\n${migrationHint}`)\n\t\t}\n\n\t\t// Plain profile name - suggest --clone instead\n\t\tthrow new ValidationError(\n\t\t\t`Invalid option: --from requires --source.\\n\\n` +\n\t\t\t\t`Did you mean to clone a profile?\\n\\n` +\n\t\t\t\t` ocx profile add ${name} --clone ${fromValue} --global`,\n\t\t)\n\t}\n\n\t// Guard: --source requires --global\n\tif (options.source && !options.global) {\n\t\tthrow new ValidationError(\n\t\t\t\"--source requires --global flag.\\n\\n\" +\n\t\t\t\t\"Profile installation from registries is only supported for global profiles:\\n\\n\" +\n\t\t\t\t` ocx profile add ${name} --source ${options.source} --global`,\n\t\t)\n\t}\n\n\t// Guard: Validate --from is a well-formed URL when provided with --source (Law 2: Parse at boundary)\n\tif (options.from) {\n\t\tconst fromValue = options.from.trim()\n\t\ttry {\n\t\t\tconst parsed = new URL(fromValue)\n\t\t\t// Require http/https protocol\n\t\t\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Invalid --from value: \"${options.from}\".\\n\\n` +\n\t\t\t\t\t\t\"--from must be a registry URL with http:// or https:// protocol.\\n\" +\n\t\t\t\t\t\t\"For profile cloning, use --clone instead.\",\n\t\t\t\t)\n\t\t\t}\n\t\t\t// Require valid hostname (catches http:// or https:///)\n\t\t\tif (!parsed.hostname) {\n\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t`Invalid --from value: \"${options.from}\".\\n\\n` +\n\t\t\t\t\t\t\"--from must be a valid registry URL with a hostname.\\n\" +\n\t\t\t\t\t\t\"Example: --from https://registry.example.com\",\n\t\t\t\t)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// URL constructor throws TypeError for malformed URLs\n\t\t\tif (error instanceof ValidationError) {\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tthrow new ValidationError(\n\t\t\t\t`Invalid --from value: \"${options.from}\".\\n\\n` +\n\t\t\t\t\t\"--from must be a valid registry URL (http:// or https://).\\n\" +\n\t\t\t\t\t\"Example: --from https://registry.example.com\",\n\t\t\t)\n\t\t}\n\t}\n\n\t// ==========================================================================\n\t// Guard: Local profiles are unsupported (catch-all after specific guards)\n\t// ==========================================================================\n\tif (!options.global) {\n\t\tthrow new ConfigError(\n\t\t\t\"Local profiles are unsupported. Use --global to create a global profile.\\n\\n\" +\n\t\t\t\t` ocx profile add ${name} --global`,\n\t\t)\n\t}\n\n\tconst scope = \"global\" as const\n\n\t// ==========================================================================\n\t// Route to appropriate handler\n\t// ==========================================================================\n\n\tconst manager = await ProfileManager.requireInitialized()\n\n\t// Route: --clone (profile cloning)\n\tif (options.clone) {\n\t\tawait cloneFromGlobalProfile(manager, name, options.clone, quiet)\n\t\treturn {\n\t\t\tname,\n\t\t\tscope,\n\t\t\tmode: \"clone\",\n\t\t\tcloneFrom: options.clone,\n\t\t}\n\t}\n\n\t// Route: --source (registry installation)\n\tif (options.source) {\n\t\tconst { namespace, component } = parseSourceOption(options.source)\n\t\tlet registryUrl: string\n\n\t\tif (options.from) {\n\t\t\t// Ephemeral registry URL\n\t\t\tregistryUrl = normalizeRegistryUrl(options.from.trim())\n\t\t\tawait installProfileFromRegistry({\n\t\t\t\tnamespace,\n\t\t\t\tcomponent,\n\t\t\t\tprofileName: name,\n\t\t\t\tregistryUrl,\n\t\t\t\tquiet,\n\t\t\t})\n\t\t} else {\n\t\t\t// Configured registry\n\t\t\tconst globalRegistry = await requireGlobalRegistry(namespace)\n\t\t\tregistryUrl = globalRegistry.registryUrl\n\t\t\tawait installProfileFromRegistry({\n\t\t\t\tnamespace,\n\t\t\t\tcomponent,\n\t\t\t\tprofileName: name,\n\t\t\t\tregistryUrl,\n\t\t\t\tquiet,\n\t\t\t})\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\tscope,\n\t\t\tmode: \"registry\",\n\t\t\tregistry: {\n\t\t\t\tnamespace,\n\t\t\t\tcomponent,\n\t\t\t\turl: registryUrl,\n\t\t\t\tephemeral: Boolean(options.from),\n\t\t\t},\n\t\t}\n\t}\n\n\t// Route: No options (empty profile creation)\n\tawait createEmptyProfile(manager, name, quiet)\n\n\treturn {\n\t\tname,\n\t\tscope,\n\t\tmode: \"empty\",\n\t}\n}\n\n/**\n * Create an empty profile with default configuration.\n */\nasync function createEmptyProfile(\n\tmanager: ProfileManager,\n\tname: string,\n\tquiet: boolean,\n): 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} --global'.`)\n\t}\n\tawait manager.add(name)\n\tif (!quiet) {\n\t\tlogger.success(`Created global profile \"${name}\"`)\n\t}\n}\n\n/**\n * Clone settings from an existing global profile.\n */\nasync function cloneFromGlobalProfile(\n\tmanager: ProfileManager,\n\tname: string,\n\tsourceName: string,\n\tquiet: boolean,\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} --global'.`)\n\t}\n\n\t// Load source from global scope\n\ttry {\n\t\tawait manager.get(sourceName)\n\t} catch (error) {\n\t\t// Re-throw known errors with enhanced scope context\n\t\tif (error instanceof ProfileNotFoundError) {\n\t\t\tthrow new ProfileNotFoundError(\n\t\t\t\tsourceName,\n\t\t\t\t`Profile '${sourceName}' not found in global scope.`,\n\t\t\t)\n\t\t}\n\t\tif (error instanceof OCXError) {\n\t\t\tthrow error\n\t\t}\n\t\t// Wrap unknown errors with context\n\t\tthrow new ValidationError(\n\t\t\t`Failed to load profile '${sourceName}': ${error instanceof Error ? error.message : String(error)}`,\n\t\t)\n\t}\n\n\tawait manager.add(name)\n\n\t// Copy OCX config from source (byte-for-byte)\n\tconst sourceOcxPath = getProfileOcxConfig(sourceName)\n\tconst targetOcxPath = getProfileOcxConfig(name)\n\tawait atomicCopy(sourceOcxPath, targetOcxPath)\n\n\tif (!quiet) {\n\t\tlogger.success(`Created global profile \"${name}\" (cloned from \"${sourceName}\")`)\n\t}\n}\n",
|
|
108
|
-
"/**\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.) via runAddCore in flat profile root\n * - V2 receipt initialization (.ocx/receipt.jsonc)\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rename, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join, relative } from \"node:path\"\nimport { parse } from \"jsonc-parser\"\nimport type { ConfigProvider } from \"../../config/provider\"\nimport { getProfileDir, getProfilesDir } from \"../../profile/paths\"\nimport { profileNameSchema } from \"../../profile/schema\"\nimport { fetchComponent, fetchFileContent } from \"../../registry/fetcher\"\nimport type { RegistryConfig } from \"../../schemas/config\"\nimport { writeReceipt } from \"../../schemas/config\"\nimport { profileOcxConfigSchema } from \"../../schemas/ocx\"\nimport { normalizeComponentManifest } from \"../../schemas/registry\"\nimport { resolveComponentTargetRoot } from \"../../utils/component-root-resolution\"\nimport { ConfigError, ConflictError, NotFoundError, ValidationError } from \"../../utils/errors\"\nimport { createSpinner, logger } from \"../../utils/index\"\nimport { PathValidationError, validatePath } from \"../../utils/path-security\"\nimport { registerPlannedWriteOrThrow } from \"../../utils/planned-writes\"\nimport { isPlainObject } from \"../../utils/type-guards\"\nimport { runAddCore } from \"../add\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface InstallProfileOptions {\n\t/** Registry name (configured alias, e.g., \"kdco\"). Required for identity resolution. */\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/** Suppress output */\n\tquiet?: boolean\n}\n\nfunction formatProfileRollbackCleanupWarning(\n\taction: string,\n\ttargetPath: string,\n\terror: unknown,\n): string {\n\tconst errorMessage = error instanceof Error ? error.message : String(error)\n\treturn `${action} \"${targetPath}\" (${errorMessage})`\n}\n\n/**\n * Resolve an embedded .opencode/* profile target to a safe staging-relative path.\n * Re-validates containment after stripping the legacy prefix.\n */\nexport function resolveEmbeddedProfileTarget(rawTarget: string, stagingDir: string): string {\n\tif (!rawTarget.startsWith(\".opencode/\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": expected .opencode/ prefix for embedded profile files.`,\n\t\t)\n\t}\n\n\tconst strippedTarget = rawTarget.slice(\".opencode/\".length)\n\tif (!strippedTarget) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": missing path after .opencode/ prefix.`,\n\t\t)\n\t}\n\n\tlet safeAbsolutePath: string\n\ttry {\n\t\tsafeAbsolutePath = validatePath(stagingDir, strippedTarget)\n\t} catch (error) {\n\t\tif (error instanceof PathValidationError) {\n\t\t\tthrow new ValidationError(`Invalid embedded target \"${rawTarget}\": ${error.message}`)\n\t\t}\n\t\tthrow error\n\t}\n\n\tconst safeRelativeTarget = relative(stagingDir, safeAbsolutePath).replace(/\\\\/g, \"/\")\n\tif (safeRelativeTarget === \".\" || safeRelativeTarget === \"\") {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": target must resolve to a file path.`,\n\t\t)\n\t}\n\n\treturn safeRelativeTarget\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. Initialize V2 receipt (.ocx/receipt.jsonc)\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 \"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: providedNamespace, component, profileName, registryUrl, 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\t// ==========================================================================\n\t// Phase 0: Resolve registry name (required — cannot derive from index)\n\t// ==========================================================================\n\n\tlet namespace: string\n\tif (providedNamespace) {\n\t\tnamespace = providedNamespace\n\t} else {\n\t\t// Cannot derive from index — registry name must be provided by caller\n\t\tthrow new ValidationError(\n\t\t\t`Registry name is required for URL-based profile installs.\\n\\n` +\n\t\t\t\t`Use a qualified component reference (e.g., 'my-registry/${component}') ` +\n\t\t\t\t`or specify --name to provide a registry alias.`,\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} --global'.`,\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 canonical profile type component\n\tif (manifest.type !== \"profile\") {\n\t\tfetchSpin?.fail(`Invalid component type`)\n\t\tthrow new ValidationError(\n\t\t\t`Component \"${qualifiedName}\" is type \"${manifest.type}\", not \"profile\".\\n\\n` +\n\t\t\t\t`Only profile components can be installed with 'ocx profile add --source <ns/comp> --global'.`,\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 marks embedded files for profile flattening\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\tlet profilePromoted = false\n\tlet installCommitted = false\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\tconst plannedWrites = new Map<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tabsolutePath: string\n\t\t\t\trelativePath: string\n\t\t\t\tcontent: Buffer\n\t\t\t\tsource: string\n\t\t\t}\n\t\t>()\n\n\t\tfor (const file of profileFiles) {\n\t\t\tconst resolvedTarget = resolveComponentTargetRoot(file.target, stagingDir)\n\t\t\tconst targetPath = join(stagingDir, resolvedTarget)\n\n\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\tabsolutePath: targetPath,\n\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\tcontent: file.content,\n\t\t\t\tsource: `${component}:${file.path}`,\n\t\t\t})\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\tconst target = resolveEmbeddedProfileTarget(file.target, stagingDir)\n\t\t\tconst resolvedTarget = resolveComponentTargetRoot(target, stagingDir)\n\t\t\tconst targetPath = join(stagingDir, resolvedTarget)\n\n\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\tabsolutePath: targetPath,\n\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\tcontent: file.content,\n\t\t\t\tsource: `${component}:${file.path}`,\n\t\t\t})\n\t\t}\n\n\t\tfor (const plannedWrite of plannedWrites.values()) {\n\t\t\tconst targetPath = plannedWrite.absolutePath\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, plannedWrite.content)\n\t\t}\n\n\t\twriteSpin?.succeed(`Wrote ${plannedWrites.size} profile files`)\n\n\t\t// ==========================================================================\n\t\t// Phase 5: Initialize V2 receipt in staging directory\n\t\t// ==========================================================================\n\n\t\tawait writeReceipt(stagingDir, {\n\t\t\tversion: 1,\n\t\t\troot: profileDir,\n\t\t\tinstalled: {},\n\t\t})\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\tprofilePromoted = true\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// ========================================================================\n\t\t\t\t// Law 2: Parse Don't Validate - Extract and validate profile's registries\n\t\t\t\t// ========================================================================\n\n\t\t\t\t// 1. Parse the profile's ocx.jsonc to get its registry declarations\n\t\t\t\tconst profileOcxConfigPath = join(profileDir, \"ocx.jsonc\")\n\t\t\t\tlet profileRegistries: Record<string, RegistryConfig> = {}\n\n\t\t\t\tif (existsSync(profileOcxConfigPath)) {\n\t\t\t\t\tconst profileOcxFile = Bun.file(profileOcxConfigPath)\n\t\t\t\t\tconst profileOcxContent = await profileOcxFile.text()\n\t\t\t\t\tconst profileOcxRaw = parse(profileOcxContent)\n\n\t\t\t\t\t// Validate registries with Zod\n\t\t\t\t\tconst parseResult = profileOcxConfigSchema.safeParse(profileOcxRaw)\n\t\t\t\t\tif (parseResult.success) {\n\t\t\t\t\t\tprofileRegistries = parseResult.data.registries ?? {}\n\t\t\t\t\t} else if (isPlainObject(profileOcxRaw) && \"registries\" in profileOcxRaw) {\n\t\t\t\t\t\t// registries field exists but is invalid - fail loud (Law 4)\n\t\t\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t\t\t`Invalid registries in profile \"${profileName}\": ${parseResult.error.message}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\t// If parse fails and no registries field, just use empty {} (already initialized)\n\t\t\t\t}\n\n\t\t\t\t// Create provider with FULL profile registries\n\t\t\t\t// Pass all registries from the profile's ocx.jsonc to support transitive dependencies.\n\t\t\t\t// The profile's ocx.jsonc should declare all registries needed (including transitive).\n\t\t\t\tconst provider: ConfigProvider = {\n\t\t\t\t\tcwd: profileDir,\n\t\t\t\t\tgetRegistries: () => profileRegistries,\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, quiet }, 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\tinstallCommitted = true\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 = resolveEmbeddedProfileTarget(file.target, profileDir)\n\t\t\t\tlogger.info(` ${target}`)\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconst cleanupWarnings: string[] = []\n\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 (cleanupError) {\n\t\t\tcleanupWarnings.push(\n\t\t\t\tformatProfileRollbackCleanupWarning(\n\t\t\t\t\t\"Profile add rollback cleanup warning: failed to remove staging directory\",\n\t\t\t\t\tstagingDir,\n\t\t\t\t\tcleanupError,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\n\t\t// Roll back promoted profile when dependency install (or later commit work) fails.\n\t\t// This keeps failure deterministic: command failure leaves no blocking partial profile.\n\t\tif (profilePromoted && !installCommitted) {\n\t\t\ttry {\n\t\t\t\tif (existsSync(profileDir)) {\n\t\t\t\t\tawait rm(profileDir, { recursive: true, force: true })\n\t\t\t\t}\n\t\t\t} catch (cleanupError) {\n\t\t\t\tcleanupWarnings.push(\n\t\t\t\t\tformatProfileRollbackCleanupWarning(\n\t\t\t\t\t\t\"Profile add rollback cleanup warning: failed to remove promoted profile\",\n\t\t\t\t\t\tprofileDir,\n\t\t\t\t\t\tcleanupError,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tif (!quiet) {\n\t\t\tfor (const warning of cleanupWarnings) {\n\t\t\t\tlogger.warn(warning)\n\t\t\t}\n\t\t}\n\t\tthrow error\n\t}\n}\n",
|
|
112
|
+
"/**\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.) via runAddCore in flat profile root\n * - V2 receipt initialization (.ocx/receipt.jsonc)\n */\n\nimport { existsSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rename, rm, writeFile } from \"node:fs/promises\"\nimport { dirname, join, relative } from \"node:path\"\nimport { parse } from \"jsonc-parser\"\nimport type { ConfigProvider } from \"../../config/provider\"\nimport { getProfileDir, getProfilesDir } from \"../../profile/paths\"\nimport { profileNameSchema } from \"../../profile/schema\"\nimport { fetchComponent, fetchFileContent } from \"../../registry/fetcher\"\nimport type { RegistryConfig } from \"../../schemas/config\"\nimport { writeReceipt } from \"../../schemas/config\"\nimport { profileOcxConfigSchema } from \"../../schemas/ocx\"\nimport { normalizeComponentManifest } from \"../../schemas/registry\"\nimport { resolveComponentTargetRoot } from \"../../utils/component-root-resolution\"\nimport {\n\tConfigError,\n\tConflictError,\n\tNetworkError,\n\tNotFoundError,\n\tValidationError,\n} from \"../../utils/errors\"\nimport { createSpinner, logger, normalizeRegistryUrl } from \"../../utils/index\"\nimport { PathValidationError, validatePath } from \"../../utils/path-security\"\nimport { registerPlannedWriteOrThrow } from \"../../utils/planned-writes\"\nimport { isPlainObject } from \"../../utils/type-guards\"\nimport { runAddCore } from \"../add\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface InstallProfileOptions {\n\t/** Registry name (configured alias, e.g., \"kdco\"). Required for identity resolution. */\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/** Suppress output */\n\tquiet?: boolean\n}\n\nfunction formatProfileRollbackCleanupWarning(\n\taction: string,\n\ttargetPath: string,\n\terror: unknown,\n): string {\n\tconst errorMessage = error instanceof Error ? error.message : String(error)\n\treturn `${action} \"${targetPath}\" (${errorMessage})`\n}\n\ninterface RegistryDiagnosticsContext {\n\tregistryContext: \"source\" | \"dependency\"\n\tregistryName: string\n\tqualifiedName: string\n\tfallbackPhase: string\n\tfallbackUrl?: string\n}\n\ninterface ResolvedDependencyDiagnosticsContext {\n\tregistryName: string\n\tqualifiedName: string\n\tfallbackUrl?: string\n}\n\nfunction buildPackumentUrl(registryUrl: string, qualifiedName: string): string | undefined {\n\tconst [registryName, componentName] = qualifiedName.split(\"/\")\n\tif (!registryName || !componentName) {\n\t\treturn undefined\n\t}\n\n\treturn `${normalizeRegistryUrl(registryUrl)}/components/${componentName}.json`\n}\n\nfunction parseQualifiedNameParts(\n\tqualifiedName: string | undefined,\n): { registryName: string; componentName: string } | null {\n\tif (!qualifiedName) return null\n\n\tconst [registryName, componentName, ...extraParts] = qualifiedName.split(\"/\")\n\tif (!registryName || !componentName || extraParts.length > 0) {\n\t\treturn null\n\t}\n\n\treturn { registryName, componentName }\n}\n\nfunction inferDependencyFromErrorUrl(\n\terrorUrl: string | undefined,\n\tregistries: Record<string, RegistryConfig>,\n): { registryName?: string; componentName?: string } {\n\tif (!errorUrl) {\n\t\treturn {}\n\t}\n\n\tlet componentName: string | undefined\n\ttry {\n\t\tconst parsedErrorUrl = new URL(errorUrl)\n\t\tconst packumentMatch = parsedErrorUrl.pathname.match(/(?:^|\\/)components\\/([^/]+)\\.json$/)\n\t\tif (packumentMatch?.[1]) {\n\t\t\tcomponentName = decodeURIComponent(packumentMatch[1])\n\t\t} else {\n\t\t\tconst fileContentMatch = parsedErrorUrl.pathname.match(/(?:^|\\/)components\\/([^/]+)\\/.+$/)\n\t\t\tif (fileContentMatch?.[1]) {\n\t\t\t\tcomponentName = decodeURIComponent(fileContentMatch[1])\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Keep diagnostics best-effort; unresolved URL falls back to other context.\n\t}\n\n\tconst normalizedErrorUrl = normalizeRegistryUrl(errorUrl)\n\tlet registryName: string | undefined\n\tlet matchedPrefixLength = -1\n\n\tfor (const [candidateRegistryName, registryConfig] of Object.entries(registries)) {\n\t\tconst normalizedRegistryUrl = normalizeRegistryUrl(registryConfig.url)\n\t\tconst isMatch =\n\t\t\tnormalizedErrorUrl === normalizedRegistryUrl ||\n\t\t\tnormalizedErrorUrl.startsWith(`${normalizedRegistryUrl}/`)\n\n\t\tif (!isMatch || normalizedRegistryUrl.length <= matchedPrefixLength) {\n\t\t\tcontinue\n\t\t}\n\n\t\tregistryName = candidateRegistryName\n\t\tmatchedPrefixLength = normalizedRegistryUrl.length\n\t}\n\n\treturn { registryName, componentName }\n}\n\nfunction resolveDependencyDiagnosticsContext(options: {\n\terror: NetworkError\n\tdepRefs: string[]\n\tnamespace: string\n\tcomponent: string\n\tregistryUrl: string\n\tprofileRegistries: Record<string, RegistryConfig>\n}): ResolvedDependencyDiagnosticsContext {\n\tconst fallbackQualifiedName = options.depRefs[0] ?? `${options.namespace}/${options.component}`\n\tconst knownRegistries: Record<string, RegistryConfig> = {\n\t\t...options.profileRegistries,\n\t\t...(options.profileRegistries[options.namespace]\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\t[options.namespace]: {\n\t\t\t\t\t\turl: options.registryUrl,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t}\n\n\tlet registryName = options.error.registryName\n\tlet qualifiedName = options.error.qualifiedName\n\n\tconst qualifiedNameParts = parseQualifiedNameParts(qualifiedName)\n\tif (!registryName && qualifiedNameParts) {\n\t\tregistryName = qualifiedNameParts.registryName\n\t}\n\n\tconst qualifiedComponentName = qualifiedNameParts?.componentName\n\tconst bareComponentNameFromError =\n\t\tqualifiedName && !qualifiedNameParts && !qualifiedName.includes(\"/\") ? qualifiedName : undefined\n\n\tconst inferred = inferDependencyFromErrorUrl(options.error.url, knownRegistries)\n\tif (!registryName && inferred.registryName) {\n\t\tregistryName = inferred.registryName\n\t}\n\n\tconst resolvedComponentName =\n\t\tqualifiedComponentName ?? bareComponentNameFromError ?? inferred.componentName\n\tif ((!qualifiedName || !qualifiedNameParts) && registryName && resolvedComponentName) {\n\t\tqualifiedName = `${registryName}/${resolvedComponentName}`\n\t}\n\n\tif (!qualifiedName) {\n\t\tqualifiedName = fallbackQualifiedName\n\t}\n\n\tif (!registryName) {\n\t\tregistryName = parseQualifiedNameParts(qualifiedName)?.registryName ?? options.namespace\n\t}\n\n\tconst fallbackRegistryUrl =\n\t\tknownRegistries[registryName]?.url ||\n\t\t(registryName === options.namespace ? options.registryUrl : undefined)\n\n\treturn {\n\t\tregistryName,\n\t\tqualifiedName,\n\t\tfallbackUrl:\n\t\t\toptions.error.url ||\n\t\t\t(fallbackRegistryUrl ? buildPackumentUrl(fallbackRegistryUrl, qualifiedName) : undefined),\n\t}\n}\n\nfunction withRegistryDiagnostics(\n\terror: NetworkError,\n\tcontext: RegistryDiagnosticsContext,\n): NetworkError {\n\tconst phase = error.phase ?? context.fallbackPhase\n\tconst url = error.url ?? context.fallbackUrl\n\n\tconst diagnostics = [\n\t\t`phase: ${phase}`,\n\t\t`qualifiedName: ${context.qualifiedName}`,\n\t\t`registryContext: ${context.registryContext}`,\n\t\t`registryName: ${context.registryName}`,\n\t\t...(url ? [`url: ${url}`] : []),\n\t]\n\n\treturn new NetworkError(`${error.message} (${diagnostics.join(\", \")})`, {\n\t\turl,\n\t\tstatus: error.status,\n\t\tstatusText: error.statusText,\n\t\tphase,\n\t\tqualifiedName: context.qualifiedName,\n\t\tregistryContext: context.registryContext,\n\t\tregistryName: context.registryName,\n\t})\n}\n\n/**\n * Resolve an embedded .opencode/* profile target to a safe staging-relative path.\n * Re-validates containment after stripping the legacy prefix.\n */\nexport function resolveEmbeddedProfileTarget(rawTarget: string, stagingDir: string): string {\n\tif (!rawTarget.startsWith(\".opencode/\")) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": expected .opencode/ prefix for embedded profile files.`,\n\t\t)\n\t}\n\n\tconst strippedTarget = rawTarget.slice(\".opencode/\".length)\n\tif (!strippedTarget) {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": missing path after .opencode/ prefix.`,\n\t\t)\n\t}\n\n\tlet safeAbsolutePath: string\n\ttry {\n\t\tsafeAbsolutePath = validatePath(stagingDir, strippedTarget)\n\t} catch (error) {\n\t\tif (error instanceof PathValidationError) {\n\t\t\tthrow new ValidationError(`Invalid embedded target \"${rawTarget}\": ${error.message}`)\n\t\t}\n\t\tthrow error\n\t}\n\n\tconst safeRelativeTarget = relative(stagingDir, safeAbsolutePath).replace(/\\\\/g, \"/\")\n\tif (safeRelativeTarget === \".\" || safeRelativeTarget === \"\") {\n\t\tthrow new ValidationError(\n\t\t\t`Invalid embedded target \"${rawTarget}\": target must resolve to a file path.`,\n\t\t)\n\t}\n\n\treturn safeRelativeTarget\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. Initialize V2 receipt (.ocx/receipt.jsonc)\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 \"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: providedNamespace, component, profileName, registryUrl, 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\t// ==========================================================================\n\t// Phase 0: Resolve registry name (required — cannot derive from index)\n\t// ==========================================================================\n\n\tlet namespace: string\n\tif (providedNamespace) {\n\t\tnamespace = providedNamespace\n\t} else {\n\t\t// Cannot derive from index — registry name must be provided by caller\n\t\tthrow new ValidationError(\n\t\t\t`Registry name is required for URL-based profile installs.\\n\\n` +\n\t\t\t\t`Use a qualified component reference (e.g., 'my-registry/${component}') ` +\n\t\t\t\t`or specify --name to provide a registry alias.`,\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} --global'.`,\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 NetworkError) {\n\t\t\tthrow withRegistryDiagnostics(error, {\n\t\t\t\tregistryContext: \"source\",\n\t\t\t\tregistryName: namespace,\n\t\t\t\tqualifiedName,\n\t\t\t\tfallbackPhase: \"packument-fetch\",\n\t\t\t\tfallbackUrl: buildPackumentUrl(registryUrl, qualifiedName),\n\t\t\t})\n\t\t}\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 canonical profile type component\n\tif (manifest.type !== \"profile\") {\n\t\tfetchSpin?.fail(`Invalid component type`)\n\t\tthrow new ValidationError(\n\t\t\t`Component \"${qualifiedName}\" is type \"${manifest.type}\", not \"profile\".\\n\\n` +\n\t\t\t\t`Only profile components can be installed with 'ocx profile add --source <ns/comp> --global'.`,\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 marks embedded files for profile flattening\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\tlet profilePromoted = false\n\tlet installCommitted = false\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\tconst plannedWrites = new Map<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tabsolutePath: string\n\t\t\t\trelativePath: string\n\t\t\t\tcontent: Buffer\n\t\t\t\tsource: string\n\t\t\t}\n\t\t>()\n\n\t\tfor (const file of profileFiles) {\n\t\t\tconst resolvedTarget = resolveComponentTargetRoot(file.target, stagingDir)\n\t\t\tconst targetPath = join(stagingDir, resolvedTarget)\n\n\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\tabsolutePath: targetPath,\n\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\tcontent: file.content,\n\t\t\t\tsource: `${component}:${file.path}`,\n\t\t\t})\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\tconst target = resolveEmbeddedProfileTarget(file.target, stagingDir)\n\t\t\tconst resolvedTarget = resolveComponentTargetRoot(target, stagingDir)\n\t\t\tconst targetPath = join(stagingDir, resolvedTarget)\n\n\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\tabsolutePath: targetPath,\n\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\tcontent: file.content,\n\t\t\t\tsource: `${component}:${file.path}`,\n\t\t\t})\n\t\t}\n\n\t\tfor (const plannedWrite of plannedWrites.values()) {\n\t\t\tconst targetPath = plannedWrite.absolutePath\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, plannedWrite.content)\n\t\t}\n\n\t\twriteSpin?.succeed(`Wrote ${plannedWrites.size} profile files`)\n\n\t\t// ==========================================================================\n\t\t// Phase 5: Initialize V2 receipt in staging directory\n\t\t// ==========================================================================\n\n\t\tawait writeReceipt(stagingDir, {\n\t\t\tversion: 1,\n\t\t\troot: profileDir,\n\t\t\tinstalled: {},\n\t\t})\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\tprofilePromoted = true\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\t\t\tconst depRefs = manifest.dependencies.map((dep) =>\n\t\t\t\tdep.includes(\"/\") ? dep : `${namespace}/${dep}`,\n\t\t\t)\n\t\t\tlet profileRegistries: Record<string, RegistryConfig> = {}\n\n\t\t\ttry {\n\t\t\t\t// ========================================================================\n\t\t\t\t// Law 2: Parse Don't Validate - Extract and validate profile's registries\n\t\t\t\t// ========================================================================\n\n\t\t\t\t// 1. Parse the profile's ocx.jsonc to get its registry declarations\n\t\t\t\tconst profileOcxConfigPath = join(profileDir, \"ocx.jsonc\")\n\n\t\t\t\tif (existsSync(profileOcxConfigPath)) {\n\t\t\t\t\tconst profileOcxFile = Bun.file(profileOcxConfigPath)\n\t\t\t\t\tconst profileOcxContent = await profileOcxFile.text()\n\t\t\t\t\tconst profileOcxRaw = parse(profileOcxContent)\n\n\t\t\t\t\t// Validate registries with Zod\n\t\t\t\t\tconst parseResult = profileOcxConfigSchema.safeParse(profileOcxRaw)\n\t\t\t\t\tif (parseResult.success) {\n\t\t\t\t\t\tprofileRegistries = parseResult.data.registries ?? {}\n\t\t\t\t\t} else if (isPlainObject(profileOcxRaw) && \"registries\" in profileOcxRaw) {\n\t\t\t\t\t\t// registries field exists but is invalid - fail loud (Law 4)\n\t\t\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t\t\t`Invalid registries in profile \"${profileName}\": ${parseResult.error.message}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\t// If parse fails and no registries field, just use empty {} (already initialized)\n\t\t\t\t}\n\n\t\t\t\t// Create provider with FULL profile registries\n\t\t\t\t// Pass all registries from the profile's ocx.jsonc to support transitive dependencies.\n\t\t\t\t// The profile's ocx.jsonc should declare all registries needed (including transitive).\n\t\t\t\tconst provider: ConfigProvider = {\n\t\t\t\t\tcwd: profileDir,\n\t\t\t\t\tgetRegistries: () => profileRegistries,\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, quiet }, 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\tif (error instanceof NetworkError) {\n\t\t\t\t\tconst dependencyDiagnosticsContext = resolveDependencyDiagnosticsContext({\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tdepRefs,\n\t\t\t\t\t\tnamespace,\n\t\t\t\t\t\tcomponent,\n\t\t\t\t\t\tregistryUrl,\n\t\t\t\t\t\tprofileRegistries,\n\t\t\t\t\t})\n\n\t\t\t\t\tthrow withRegistryDiagnostics(error, {\n\t\t\t\t\t\tregistryContext: \"dependency\",\n\t\t\t\t\t\tregistryName: dependencyDiagnosticsContext.registryName,\n\t\t\t\t\t\tqualifiedName: dependencyDiagnosticsContext.qualifiedName,\n\t\t\t\t\t\tfallbackPhase: \"packument-fetch\",\n\t\t\t\t\t\tfallbackUrl: dependencyDiagnosticsContext.fallbackUrl,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\n\t\tinstallCommitted = true\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 = resolveEmbeddedProfileTarget(file.target, profileDir)\n\t\t\t\tlogger.info(` ${target}`)\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconst cleanupWarnings: string[] = []\n\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 (cleanupError) {\n\t\t\tcleanupWarnings.push(\n\t\t\t\tformatProfileRollbackCleanupWarning(\n\t\t\t\t\t\"Profile add rollback cleanup warning: failed to remove staging directory\",\n\t\t\t\t\tstagingDir,\n\t\t\t\t\tcleanupError,\n\t\t\t\t),\n\t\t\t)\n\t\t}\n\n\t\t// Roll back promoted profile when dependency install (or later commit work) fails.\n\t\t// This keeps failure deterministic: command failure leaves no blocking partial profile.\n\t\tif (profilePromoted && !installCommitted) {\n\t\t\ttry {\n\t\t\t\tif (existsSync(profileDir)) {\n\t\t\t\t\tawait rm(profileDir, { recursive: true, force: true })\n\t\t\t\t}\n\t\t\t} catch (cleanupError) {\n\t\t\t\tcleanupWarnings.push(\n\t\t\t\t\tformatProfileRollbackCleanupWarning(\n\t\t\t\t\t\t\"Profile add rollback cleanup warning: failed to remove promoted profile\",\n\t\t\t\t\t\tprofileDir,\n\t\t\t\t\t\tcleanupError,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tif (!quiet) {\n\t\t\tfor (const warning of cleanupWarnings) {\n\t\t\t\tlogger.warn(warning)\n\t\t\t}\n\t\t}\n\t\tthrow error\n\t}\n}\n",
|
|
109
113
|
"/**\n * Profile List Command\n *\n * List all available profiles.\n * Profiles are global-only; local scope is unsupported and produces a hard error.\n * Use --global (required) to list global profiles (~/.config/opencode/profiles/).\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { ConfigError } from \"../../utils/errors\"\nimport { handleError } from \"../../utils/handle-error\"\nimport { sharedOptions } from \"../../utils/shared-options\"\n\ninterface ProfileListOptions {\n\tglobal?: boolean\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 profiles (use --global; local profiles are unsupported)\")\n\t\t.option(\"-g, --global\", \"List global profiles (required — local profiles are unsupported)\")\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\t// Guard: local scope is unsupported (Law 1: Early Exit, Law 4: Fail Fast)\n\tif (!options.global) {\n\t\tthrow new ConfigError(\n\t\t\t\"Local profiles are unsupported. Use --global to list global profiles.\\n\\n\" +\n\t\t\t\t\" ocx profile list --global\",\n\t\t)\n\t}\n\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\tconst heading = \"Global profiles:\"\n\tconst createHint =\n\t\t\"No global profiles found. Run 'ocx profile add <name> --global' to create one.\"\n\n\t// Guard: Handle empty profiles list\n\tif (profiles.length === 0) {\n\t\tconsole.log(createHint)\n\t\treturn\n\t}\n\n\t// Display profiles\n\tconsole.log(heading)\n\tfor (const name of profiles) {\n\t\tconsole.log(` ${name}`)\n\t}\n}\n",
|
|
110
114
|
"/**\n * Profile Move Command\n *\n * Move (rename) a profile atomically.\n * Profiles are global-only; local scope is unsupported and produces a hard error.\n * Uses Cargo-style CLI pattern: no interactive confirmation.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { ConfigError } from \"../../utils/errors\"\nimport { handleError, logger, outputJson } from \"../../utils/index\"\n\ninterface MoveOptions {\n\tglobal?: boolean\n\tjson?: boolean\n}\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 (use --global; local profiles are unsupported)\")\n\t\t.option(\"-g, --global\", \"Move global profile (required — local profiles are unsupported)\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (oldName: string, newName: string, options: MoveOptions) => {\n\t\t\ttry {\n\t\t\t\tconst result = await runProfileMove(oldName, newName, options)\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: result })\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 runProfileMove(\n\toldName: string,\n\tnewName: string,\n\toptions: MoveOptions,\n): Promise<{ from: string; to: string; scope: \"global\"; warnActiveProfile: boolean }> {\n\t// Guard: local scope is unsupported (Law 1: Early Exit, Law 4: Fail Fast)\n\tif (!options.global) {\n\t\tthrow new ConfigError(\n\t\t\t\"Local profiles are unsupported. Use --global to move a global profile.\\n\\n\" +\n\t\t\t\t` ocx profile move ${oldName} ${newName} --global`,\n\t\t)\n\t}\n\n\tconst manager = await ProfileManager.requireInitialized()\n\n\tconst { warnActiveProfile } = await manager.move(oldName, newName)\n\n\tif (warnActiveProfile && !options.json) {\n\t\tlogger.warn(`Moving active profile. Update OCX_PROFILE env var to \"${newName}\".`)\n\t}\n\n\tif (!options.json) {\n\t\tlogger.success(`Moved global profile \"${oldName}\" → \"${newName}\"`)\n\t}\n\n\treturn { from: oldName, to: newName, scope: \"global\", warnActiveProfile }\n}\n",
|
|
111
115
|
"/**\n * Profile Remove Command\n *\n * Delete a profile.\n * Profiles are global-only; local scope is unsupported and produces a hard error.\n * Uses Cargo-style CLI pattern: no interactive confirmation.\n */\n\nimport type { Command } from \"commander\"\nimport { ProfileManager } from \"../../profile/manager\"\nimport { ConfigError, ProfileNotFoundError } from \"../../utils/errors\"\nimport { handleError, logger, outputJson } from \"../../utils/index\"\n\ninterface RemoveOptions {\n\tglobal?: boolean\n\tjson?: boolean\n}\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 profile (use --global; local profiles are unsupported)\")\n\t\t.option(\"-g, --global\", \"Remove global profile (required — local profiles are unsupported)\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (name: string, options: RemoveOptions) => {\n\t\t\ttry {\n\t\t\t\tconst result = await runProfileRemove(name, options)\n\t\t\t\tif (options.json) {\n\t\t\t\t\toutputJson({ success: true, data: result })\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 runProfileRemove(\n\tname: string,\n\toptions: RemoveOptions,\n): Promise<{ name: string; scope: \"global\" }> {\n\t// Guard: local scope is unsupported (Law 1: Early Exit, Law 4: Fail Fast)\n\tif (!options.global) {\n\t\tthrow new ConfigError(\n\t\t\t\"Local profiles are unsupported. Use --global to remove a global profile.\\n\\n\" +\n\t\t\t\t\" ocx profile remove <name> --global\",\n\t\t)\n\t}\n\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\tif (!options.json) {\n\t\tlogger.success(`Deleted global profile \"${name}\"`)\n\t}\n\n\treturn { name, scope: \"global\" }\n}\n",
|
|
@@ -125,12 +129,13 @@
|
|
|
125
129
|
"/**\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",
|
|
126
130
|
"/**\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 { handleError } from \"../../utils/handle-error\"\nimport { outputJson } from \"../../utils/json-output\"\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\tjson?: boolean\n}\n\ninterface SelfUpdateResult {\n\tcurrent: string\n\tlatest: string\n\tmethod: InstallMethod\n\tupdated: boolean\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\tconst jsonOutput = options.json === true\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\tif (jsonOutput) {\n\t\t\toutputJson({\n\t\t\t\tsuccess: true,\n\t\t\t\tdata: {\n\t\t\t\t\tcurrent,\n\t\t\t\t\tlatest,\n\t\t\t\t\tmethod,\n\t\t\t\t\tupdated: false,\n\t\t\t\t} satisfies SelfUpdateResult,\n\t\t\t})\n\t\t} else {\n\t\t\tnotifyUpToDate(current)\n\t\t}\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, jsonOutput)\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, jsonOutput)\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (jsonOutput) {\n\t\toutputJson({\n\t\t\tsuccess: true,\n\t\t\tdata: {\n\t\t\t\tcurrent,\n\t\t\t\tlatest: targetVersion,\n\t\t\t\tmethod,\n\t\t\t\tupdated: true,\n\t\t\t} satisfies SelfUpdateResult,\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(\n\tcurrent: string,\n\ttargetVersion: string,\n\tjsonOutput: boolean,\n): 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, { quiet: jsonOutput })\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\tif (!jsonOutput) {\n\t\tnotifyUpdated(current, targetVersion)\n\t}\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\tjsonOutput: boolean,\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 = jsonOutput ? null : 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\tif (!jsonOutput) {\n\t\t\tnotifyUpdated(current, targetVersion)\n\t\t}\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(\"--method <method>\", \"Override install method detection (curl|npm|pnpm|bun)\")\n\t\t.option(\"--json\", \"Output as JSON\")\n\t\t.action(async (options: UpdateOptions) => {\n\t\t\ttry {\n\t\t\t\tawait updateCommand(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",
|
|
127
131
|
"/**\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",
|
|
128
|
-
"/**\n * OCX CLI - update command\n * Update installed components from registries\n */\n\nimport { randomUUID } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, rename, rm, stat, 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 { parseCanonicalId, type Receipt, readReceipt, writeReceipt } from \"../schemas/config\"\nimport {\n\ttype ComponentFileObject,\n\tnormalizeComponentManifest,\n\tparseQualifiedComponent,\n} from \"../schemas/registry\"\nimport { type DryRunAction, type DryRunResult, outputDryRun } from \"../utils/dry-run\"\nimport { ConfigError, NotFoundError, ValidationError } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\nimport { resolveTargetPath } from \"../utils/paths\"\nimport { registerPlannedWriteOrThrow } from \"../utils/planned-writes\"\nimport { hashBundle, hashContent } from \"../utils/receipt\"\nimport { addCommonOptions, addVerboseOption } from \"../utils/shared-options\"\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}\n\ninterface UpdateResult {\n\tqualifiedName: string\n\toldVersion: string\n\tnewVersion: string\n\tstatus: \"updated\" | \"up-to-date\" | \"would-update\"\n}\n\ninterface PreparedUpdateFile {\n\tresolvedTarget: string\n\ttargetPath: string\n\tcontent: Buffer\n}\n\ninterface PendingUpdate {\n\tcanonicalId: string\n\tcomponent: ReturnType<typeof normalizeComponentManifest>\n\tfiles: { path: string; content: Buffer }[]\n\tnewHash: string\n\tnewVersion: string\n\tbaseUrl: string\n\tregistryName: string\n\tname: string\n}\n\ninterface PreparedUpdate {\n\tupdate: PendingUpdate\n\tpreparedFiles: PreparedUpdateFile[]\n}\n\ninterface AppliedWrite {\n\ttargetPath: string\n\tbackupPath: string | null\n}\n\ninterface AppliedWriteTransaction {\n\tcommit: () => Promise<void>\n\trollback: () => Promise<void>\n}\n\ninterface UpdateFileOps {\n\trename?: (oldPath: string, newPath: string) => Promise<void>\n}\n\ntype UpdateFailurePhase = \"check\" | \"apply\"\n\nexport function resolveUpdateFailureMessage(phase: UpdateFailurePhase): string {\n\treturn phase === \"apply\" ? \"Failed to update components\" : \"Failed to check for updates\"\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\nexport function registerUpdateCommand(program: Command): void {\n\tconst cmd = program.command(\"update [components...]\").description(\"Update installed components\")\n\n\taddCommonOptions(cmd)\n\taddVerboseOption(cmd)\n\n\tcmd\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.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\tfileOps?: UpdateFileOps,\n): Promise<void> {\n\tconst registries = provider.getRegistries()\n\tconst componentPath = provider.getComponentPath()\n\tconst isFlattened = componentPath === \"\" || componentPath === \".\"\n\n\t// -------------------------------------------------------------------------\n\t// Parse component specs (Law 2: Parse at boundary before any logic)\n\t// -------------------------------------------------------------------------\n\n\tconst parsedComponents = componentNames.map(parseComponentSpec)\n\n\t// -------------------------------------------------------------------------\n\t// Guard clauses (Law 1: Early Exit)\n\t// -------------------------------------------------------------------------\n\n\t// Guard: No receipt file (nothing installed yet)\n\tconst receipt = await readReceipt(provider.cwd)\n\tif (!receipt || Object.keys(receipt.installed).length === 0) {\n\t\t// If user specified components, give specific error\n\t\tif (componentNames.length > 0) {\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Component '${componentNames[0]}' is not installed. Run 'ocx add ${componentNames[0]}' first.`,\n\t\t\t)\n\t\t}\n\t\t// Generic case for --all or --registry\n\t\tthrow new NotFoundError(\"No components installed. 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 alias/component # 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 my-alias # 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// Determine which components to update\n\t// -------------------------------------------------------------------------\n\n\tconst componentsToUpdate = resolveComponentsToUpdate(receipt, 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\tlet installSpin: ReturnType<typeof createSpinner> | null = null\n\tlet failurePhase: UpdateFailurePhase = \"check\"\n\tlet appliedWriteTransaction: AppliedWriteTransaction | null = null\n\n\tconst results: UpdateResult[] = []\n\tconst updates: PendingUpdate[] = []\n\n\ttry {\n\t\tfor (const spec of componentsToUpdate) {\n\t\t\tconst canonicalId = spec.component\n\t\t\tconst entry = receipt.installed[canonicalId]\n\t\t\t// Guard: component must exist in receipt (already validated in resolveComponentsToUpdate)\n\t\t\tif (!entry) {\n\t\t\t\tthrow new NotFoundError(`Component '${canonicalId}' not found in receipt.`)\n\t\t\t}\n\n\t\t\tconst registryName = entry.registryName\n\t\t\tconst componentName = entry.name\n\n\t\t\t// Get registry config by alias\n\t\t\tconst regConfig = registries[registryName]\n\t\t\tif (!regConfig) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`Registry alias '${registryName}' not configured. Component '${canonicalId}' cannot be updated.`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// Fetch component (latest version)\n\t\t\tconst fetchResult = await fetchComponentVersion(regConfig.url, componentName, undefined)\n\t\t\tconst manifest = fetchResult.manifest\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\t\t\tconst newVersion = `sha256:${newHash}` // Use hash as version/revision\n\n\t\t\t// Compare hashes\n\t\t\tif (newHash === entry.hash) {\n\t\t\t\tresults.push({\n\t\t\t\t\tqualifiedName: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\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: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\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: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\n\t\t\t\t\tstatus: \"updated\",\n\t\t\t\t})\n\t\t\t\tupdates.push({\n\t\t\t\t\tcanonicalId,\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: newVersion,\n\t\t\t\t\tbaseUrl: regConfig.url,\n\t\t\t\t\tregistryName,\n\t\t\t\t\tname: componentName,\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\toutputUpdateDryRun(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\tfailurePhase = \"apply\"\n\t\tinstallSpin = options.quiet ? null : createSpinner({ text: \"Updating components...\" })\n\t\tinstallSpin?.start()\n\n\t\tconst plannedWrites = new Map<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tabsolutePath: string\n\t\t\t\trelativePath: string\n\t\t\t\tcontent: Buffer\n\t\t\t\tsource: string\n\t\t\t}\n\t\t>()\n\n\t\tconst preparedUpdates: PreparedUpdate[] = []\n\n\t\tfor (const update of updates) {\n\t\t\tconst preparedFiles: PreparedUpdateFile[] = []\n\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) {\n\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t`File \"${file.path}\" not found in component manifest for \"${update.registryName}/${update.name}\".`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tconst resolvedTarget = resolveTargetPath(fileObj.target, isFlattened, provider.cwd)\n\t\t\t\tconst targetPath = join(provider.cwd, resolvedTarget)\n\n\t\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\t\tabsolutePath: targetPath,\n\t\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\t\tcontent: file.content,\n\t\t\t\t\tsource: `${update.registryName}/${update.name}:${fileObj.path}`,\n\t\t\t\t})\n\n\t\t\t\tpreparedFiles.push({\n\t\t\t\t\tresolvedTarget,\n\t\t\t\t\ttargetPath,\n\t\t\t\t\tcontent: file.content,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tpreparedUpdates.push({ update, preparedFiles })\n\t\t}\n\n\t\tappliedWriteTransaction = await applyPreparedUpdatesAtomically(preparedUpdates, {\n\t\t\tverbose: options.verbose,\n\t\t\tquiet: options.quiet,\n\t\t\tfileOps,\n\t\t})\n\n\t\tfor (const prepared of preparedUpdates) {\n\t\t\tconst { update, preparedFiles } = prepared\n\n\t\t\t// Update receipt entry - we know it exists because we validated in resolveComponentsToUpdate\n\t\t\tconst existingEntry = receipt.installed[update.canonicalId]\n\t\t\tif (!existingEntry) {\n\t\t\t\tthrow new NotFoundError(`Component '${update.canonicalId}' not found in receipt.`)\n\t\t\t}\n\n\t\t\t// Compute individual file hashes\n\t\t\tconst fileHashes: Array<{ path: string; hash: string }> = []\n\t\t\tfor (const preparedFile of preparedFiles) {\n\t\t\t\tfileHashes.push({\n\t\t\t\t\tpath: preparedFile.resolvedTarget,\n\t\t\t\t\thash: hashContent(preparedFile.content),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treceipt.installed[update.canonicalId] = {\n\t\t\t\tregistryUrl: existingEntry.registryUrl,\n\t\t\t\tregistryName: existingEntry.registryName,\n\t\t\t\tname: existingEntry.name,\n\t\t\t\trevision: update.newVersion,\n\t\t\t\thash: update.newHash,\n\t\t\t\tfiles: fileHashes,\n\t\t\t\tinstalledAt: existingEntry.installedAt,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t\t// Update opencode config if component provides it\n\t\t\t\t...(update.component.opencode && {\n\t\t\t\t\topencode: update.component.opencode as Record<string, unknown>,\n\t\t\t\t}),\n\t\t\t}\n\t\t}\n\n\t\t// Save receipt file\n\t\tawait writeReceipt(provider.cwd, receipt)\n\t\tif (!appliedWriteTransaction) {\n\t\t\tthrow new Error(\"Internal error: missing applied write transaction after update apply phase.\")\n\t\t}\n\t\tawait appliedWriteTransaction.commit()\n\t\tappliedWriteTransaction = null\n\n\t\tinstallSpin?.succeed(`Updated ${updates.length} component(s)`)\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\tif (failurePhase === \"apply\") {\n\t\t\tif (appliedWriteTransaction) {\n\t\t\t\tawait appliedWriteTransaction.rollback()\n\t\t\t\tappliedWriteTransaction = null\n\t\t\t}\n\t\t\tinstallSpin?.fail(resolveUpdateFailureMessage(\"apply\"))\n\t\t} else {\n\t\t\tspin?.fail(resolveUpdateFailureMessage(\"check\"))\n\t\t}\n\t\tthrow error\n\t}\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\nasync function applyPreparedUpdatesAtomically(\n\tpreparedUpdates: PreparedUpdate[],\n\toptions: { verbose?: boolean; quiet?: boolean; fileOps?: UpdateFileOps },\n): Promise<AppliedWriteTransaction> {\n\tconst appliedWrites: AppliedWrite[] = []\n\tconst tempPaths = new Set<string>()\n\tlet finalized = false\n\tconst renameFile = options.fileOps?.rename ?? rename\n\n\tconst rollback = async (): Promise<void> => {\n\t\tif (finalized) {\n\t\t\treturn\n\t\t}\n\n\t\tfinalized = true\n\n\t\tfor (const tempPath of tempPaths) {\n\t\t\ttry {\n\t\t\t\tawait rm(tempPath, { force: true })\n\t\t\t} catch {\n\t\t\t\t// best-effort cleanup\n\t\t\t}\n\t\t}\n\n\t\tfor (const appliedWrite of [...appliedWrites].reverse()) {\n\t\t\ttry {\n\t\t\t\tif (appliedWrite.backupPath) {\n\t\t\t\t\tif (existsSync(appliedWrite.targetPath)) {\n\t\t\t\t\t\tawait rm(appliedWrite.targetPath, { force: true, recursive: true })\n\t\t\t\t\t}\n\t\t\t\t\tif (existsSync(appliedWrite.backupPath)) {\n\t\t\t\t\t\tawait renameFile(appliedWrite.backupPath, appliedWrite.targetPath)\n\t\t\t\t\t}\n\t\t\t\t} else if (existsSync(appliedWrite.targetPath)) {\n\t\t\t\t\tawait rm(appliedWrite.targetPath, { force: true, recursive: true })\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\t}\n\n\tconst commit = async (): Promise<void> => {\n\t\tif (finalized) {\n\t\t\treturn\n\t\t}\n\n\t\tfinalized = true\n\n\t\tfor (const appliedWrite of appliedWrites) {\n\t\t\tif (!appliedWrite.backupPath) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (existsSync(appliedWrite.backupPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tawait rm(appliedWrite.backupPath, { force: true })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!options.quiet) {\n\t\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error)\n\t\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\t`Post-update cleanup warning: failed to remove backup \"${appliedWrite.backupPath}\" (${errorMessage})`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttry {\n\t\tfor (const prepared of preparedUpdates) {\n\t\t\tfor (const preparedFile of prepared.preparedFiles) {\n\t\t\t\tconst targetDir = dirname(preparedFile.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\tif (existsSync(preparedFile.targetPath)) {\n\t\t\t\t\tconst currentTargetStats = await stat(preparedFile.targetPath)\n\t\t\t\t\tif (currentTargetStats.isDirectory()) {\n\t\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t\t`Cannot update \"${preparedFile.resolvedTarget}\": target path is a directory.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst tempPath = `${preparedFile.targetPath}.ocx-update-tmp-${randomUUID()}`\n\t\t\t\tawait writeFile(tempPath, preparedFile.content)\n\t\t\t\ttempPaths.add(tempPath)\n\n\t\t\t\tlet backupPath: string | null = null\n\t\t\t\tif (existsSync(preparedFile.targetPath)) {\n\t\t\t\t\tbackupPath = `${preparedFile.targetPath}.ocx-update-backup-${randomUUID()}`\n\t\t\t\t\tawait renameFile(preparedFile.targetPath, backupPath)\n\t\t\t\t\tappliedWrites.push({\n\t\t\t\t\t\ttargetPath: preparedFile.targetPath,\n\t\t\t\t\t\tbackupPath,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tawait renameFile(tempPath, preparedFile.targetPath)\n\t\t\t\ttempPaths.delete(tempPath)\n\n\t\t\t\tif (!backupPath) {\n\t\t\t\t\tappliedWrites.push({\n\t\t\t\t\t\ttargetPath: preparedFile.targetPath,\n\t\t\t\t\t\tbackupPath: null,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (options.verbose) {\n\t\t\t\t\tlogger.info(` ✓ Updated ${preparedFile.resolvedTarget}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { commit, rollback }\n\t} catch (error) {\n\t\tawait rollback()\n\t\tthrow error\n\t}\n}\n\n/**\n * Parse and validate a component specifier.\n * Law 2: Parse at boundary, trust internally.\n * Law 4: Fail fast on malformed specifiers before receipt lookup.\n *\n * Rejects trailing `@` (empty version) since update always fetches latest.\n *\n * @example\n * parseComponentSpec(\"kdco/agents\") // { component: \"kdco/agents\" }\n * parseComponentSpec(\"kdco/agents@\") // throws ConfigError\n */\nfunction parseComponentSpec(spec: string): ComponentSpec {\n\tif (spec.endsWith(\"@\")) {\n\t\tthrow new ConfigError(\n\t\t\t`Invalid version specifier '${spec}'. The trailing '@' has no version.\\n` +\n\t\t\t\t`Use '${spec.slice(0, -1)}' to update to the latest version.`,\n\t\t)\n\t}\n\n\treturn { component: spec }\n}\n\n/**\n * Resolve which components to update based on args and flags.\n * Law 4: Fail fast if component not found in receipt.\n */\nfunction resolveComponentsToUpdate(\n\treceipt: Receipt,\n\tparsedComponents: ComponentSpec[],\n\toptions: UpdateOptions,\n): ComponentSpec[] {\n\tconst installedComponents = Object.keys(receipt.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 alias (no version override)\n\tif (options.registry) {\n\t\treturn installedComponents\n\t\t\t.filter((canonicalId) => {\n\t\t\t\tconst entry = receipt.installed[canonicalId]\n\t\t\t\treturn entry?.registryName === 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\t// User provides qualified names like \"alias/component\"\n\t// We need to find the matching canonical ID in the receipt\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\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst parsed = parseCanonicalId(id)\n\t\t\t\t\treturn `${parsed.registryName}/${parsed.name}`\n\t\t\t\t})\n\t\t\t\t.filter((qualified) => qualified.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 (alias/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 alias (e.g., 'kdco/${name}').`,\n\t\t\t)\n\t\t}\n\n\t\t// Find matching canonical ID\n\t\tconst { namespace: prefix, component } = parseQualifiedComponent(name)\n\t\tconst matchingIds = installedComponents.filter((id) => {\n\t\t\tconst parsed = parseCanonicalId(id)\n\t\t\treturn parsed.registryName === prefix && parsed.name === component\n\t\t})\n\n\t\tif (matchingIds.length === 0) {\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\t// Use the first matching canonical ID (there should only be one per alias/name pair)\n\t\tconst canonicalId = matchingIds[0]\n\t\tif (!canonicalId) {\n\t\t\tthrow new Error(`Unexpected: matchingIds has length but first element is undefined`)\n\t\t}\n\t\tresult.push({ component: canonicalId })\n\t}\n\n\treturn result\n}\n\n/**\n * Output dry-run results using shared utility.\n */\nfunction outputUpdateDryRun(results: UpdateResult[], options: UpdateOptions): void {\n\tconst wouldUpdate = results.filter((r) => r.status === \"would-update\")\n\n\tconst actions: DryRunAction[] = wouldUpdate.map((result) => ({\n\t\taction: \"update\",\n\t\ttarget: result.qualifiedName,\n\t\tdetails: { from: result.oldVersion, to: result.newVersion },\n\t}))\n\n\tconst dryRunResult: DryRunResult = {\n\t\tdryRun: true,\n\t\tcommand: \"update\",\n\t\twouldPerform: actions,\n\t\tvalidation: { passed: true },\n\t\tsummary:\n\t\t\twouldUpdate.length > 0\n\t\t\t\t? `Would update ${wouldUpdate.length} component(s)`\n\t\t\t\t: \"All components are up to date\",\n\t}\n\n\toutputDryRun(dryRunResult, { json: options.json, quiet: options.quiet })\n}\n",
|
|
132
|
+
"/**\n * OCX CLI - update command\n * Update installed components from registries\n */\n\nimport { randomUUID } from \"node:crypto\"\nimport { existsSync } from \"node:fs\"\nimport { mkdir, rename, rm, stat, writeFile } from \"node:fs/promises\"\nimport { dirname, join } from \"node:path\"\n\nimport type { Command } from \"commander\"\nimport { type ConfigProvider, GlobalConfigProvider, LocalConfigProvider } from \"../config/provider\"\nimport { fetchComponentVersion, fetchFileContent } from \"../registry/fetcher\"\nimport { parseCanonicalId, type Receipt, readReceipt, writeReceipt } from \"../schemas/config\"\nimport {\n\ttype ComponentFileObject,\n\tnormalizeComponentManifest,\n\tparseQualifiedComponent,\n} from \"../schemas/registry\"\nimport { type DryRunAction, type DryRunResult, outputDryRun } from \"../utils/dry-run\"\nimport { ConfigError, NotFoundError, ValidationError } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\nimport { resolveTargetPath } from \"../utils/paths\"\nimport { registerPlannedWriteOrThrow } from \"../utils/planned-writes\"\nimport { hashBundle, hashContent } from \"../utils/receipt\"\nimport { addCommonOptions, addGlobalOption, addVerboseOption } from \"../utils/shared-options\"\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface UpdateOptions {\n\tall?: boolean\n\tregistry?: string\n\tdryRun?: boolean\n\tglobal?: boolean\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n}\n\ninterface ComponentSpec {\n\tcomponent: string\n}\n\ninterface UpdateResult {\n\tqualifiedName: string\n\toldVersion: string\n\tnewVersion: string\n\tstatus: \"updated\" | \"up-to-date\" | \"would-update\"\n}\n\ninterface PreparedUpdateFile {\n\tresolvedTarget: string\n\ttargetPath: string\n\tcontent: Buffer\n}\n\ninterface PendingUpdate {\n\tcanonicalId: string\n\tcomponent: ReturnType<typeof normalizeComponentManifest>\n\tfiles: { path: string; content: Buffer }[]\n\tnewHash: string\n\tnewVersion: string\n\tbaseUrl: string\n\tregistryName: string\n\tname: string\n}\n\ninterface PreparedUpdate {\n\tupdate: PendingUpdate\n\tpreparedFiles: PreparedUpdateFile[]\n}\n\ninterface AppliedWrite {\n\ttargetPath: string\n\tbackupPath: string | null\n}\n\ninterface AppliedWriteTransaction {\n\tcommit: () => Promise<void>\n\trollback: () => Promise<void>\n}\n\ninterface UpdateFileOps {\n\trename?: (oldPath: string, newPath: string) => Promise<void>\n}\n\ntype UpdateFailurePhase = \"check\" | \"apply\"\n\nfunction formatAddCommandHint(component: string, options: UpdateOptions): string {\n\treturn `ocx add${options.global ? \" --global\" : \"\"} ${component}`\n}\n\nexport function resolveUpdateFailureMessage(phase: UpdateFailurePhase): string {\n\treturn phase === \"apply\" ? \"Failed to update components\" : \"Failed to check for updates\"\n}\n\n// =============================================================================\n// COMMAND REGISTRATION\n// =============================================================================\n\nexport function registerUpdateCommand(program: Command): void {\n\tconst cmd = program.command(\"update [components...]\").description(\"Update installed components\")\n\n\taddCommonOptions(cmd)\n\taddVerboseOption(cmd)\n\taddGlobalOption(cmd)\n\n\tcmd\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.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 = options.global\n\t\t? await GlobalConfigProvider.requireInitialized()\n\t\t: 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\tfileOps?: UpdateFileOps,\n): Promise<void> {\n\tconst registries = provider.getRegistries()\n\tconst componentPath = provider.getComponentPath()\n\tconst isFlattened = componentPath === \"\" || componentPath === \".\"\n\n\t// -------------------------------------------------------------------------\n\t// Parse component specs (Law 2: Parse at boundary before any logic)\n\t// -------------------------------------------------------------------------\n\n\tconst parsedComponents = componentNames.map(parseComponentSpec)\n\n\t// -------------------------------------------------------------------------\n\t// Guard clauses (Law 1: Early Exit)\n\t// -------------------------------------------------------------------------\n\n\t// Guard: No receipt file (nothing installed yet)\n\tconst receipt = await readReceipt(provider.cwd)\n\tif (!receipt || Object.keys(receipt.installed).length === 0) {\n\t\t// If user specified components, give specific error\n\t\tif (componentNames.length > 0) {\n\t\t\tconst requestedComponent = componentNames[0]\n\t\t\tif (!requestedComponent) {\n\t\t\t\tthrow new Error(\"Unexpected: component name missing despite non-empty componentNames\")\n\t\t\t}\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Component '${requestedComponent}' is not installed. Run '${formatAddCommandHint(requestedComponent, options)}' first.`,\n\t\t\t)\n\t\t}\n\t\t// Generic case for --all or --registry\n\t\tthrow new NotFoundError(\n\t\t\t`No components installed. Run '${formatAddCommandHint(\"<component>\", options)}' first.`,\n\t\t)\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 alias/component # 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 my-alias # 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// Determine which components to update\n\t// -------------------------------------------------------------------------\n\n\tconst componentsToUpdate = resolveComponentsToUpdate(receipt, 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\tlet installSpin: ReturnType<typeof createSpinner> | null = null\n\tlet failurePhase: UpdateFailurePhase = \"check\"\n\tlet appliedWriteTransaction: AppliedWriteTransaction | null = null\n\n\tconst results: UpdateResult[] = []\n\tconst updates: PendingUpdate[] = []\n\n\ttry {\n\t\tfor (const spec of componentsToUpdate) {\n\t\t\tconst canonicalId = spec.component\n\t\t\tconst entry = receipt.installed[canonicalId]\n\t\t\t// Guard: component must exist in receipt (already validated in resolveComponentsToUpdate)\n\t\t\tif (!entry) {\n\t\t\t\tthrow new NotFoundError(`Component '${canonicalId}' not found in receipt.`)\n\t\t\t}\n\n\t\t\tconst registryName = entry.registryName\n\t\t\tconst componentName = entry.name\n\n\t\t\t// Get registry config by alias\n\t\t\tconst regConfig = registries[registryName]\n\t\t\tif (!regConfig) {\n\t\t\t\tthrow new ConfigError(\n\t\t\t\t\t`Registry alias '${registryName}' not configured. Component '${canonicalId}' cannot be updated.`,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t// Fetch component (latest version)\n\t\t\tconst fetchResult = await fetchComponentVersion(regConfig.url, componentName, undefined)\n\t\t\tconst manifest = fetchResult.manifest\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\t\t\tconst newVersion = `sha256:${newHash}` // Use hash as version/revision\n\n\t\t\t// Compare hashes\n\t\t\tif (newHash === entry.hash) {\n\t\t\t\tresults.push({\n\t\t\t\t\tqualifiedName: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\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: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\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: canonicalId,\n\t\t\t\t\toldVersion: entry.revision,\n\t\t\t\t\tnewVersion: newVersion,\n\t\t\t\t\tstatus: \"updated\",\n\t\t\t\t})\n\t\t\t\tupdates.push({\n\t\t\t\t\tcanonicalId,\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: newVersion,\n\t\t\t\t\tbaseUrl: regConfig.url,\n\t\t\t\t\tregistryName,\n\t\t\t\t\tname: componentName,\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\toutputUpdateDryRun(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\tfailurePhase = \"apply\"\n\t\tinstallSpin = options.quiet ? null : createSpinner({ text: \"Updating components...\" })\n\t\tinstallSpin?.start()\n\n\t\tconst plannedWrites = new Map<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tabsolutePath: string\n\t\t\t\trelativePath: string\n\t\t\t\tcontent: Buffer\n\t\t\t\tsource: string\n\t\t\t}\n\t\t>()\n\n\t\tconst preparedUpdates: PreparedUpdate[] = []\n\n\t\tfor (const update of updates) {\n\t\t\tconst preparedFiles: PreparedUpdateFile[] = []\n\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) {\n\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t`File \"${file.path}\" not found in component manifest for \"${update.registryName}/${update.name}\".`,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tconst resolvedTarget = resolveTargetPath(fileObj.target, isFlattened, provider.cwd)\n\t\t\t\tconst targetPath = join(provider.cwd, resolvedTarget)\n\n\t\t\t\tregisterPlannedWriteOrThrow(plannedWrites, {\n\t\t\t\t\tabsolutePath: targetPath,\n\t\t\t\t\trelativePath: resolvedTarget,\n\t\t\t\t\tcontent: file.content,\n\t\t\t\t\tsource: `${update.registryName}/${update.name}:${fileObj.path}`,\n\t\t\t\t})\n\n\t\t\t\tpreparedFiles.push({\n\t\t\t\t\tresolvedTarget,\n\t\t\t\t\ttargetPath,\n\t\t\t\t\tcontent: file.content,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tpreparedUpdates.push({ update, preparedFiles })\n\t\t}\n\n\t\tappliedWriteTransaction = await applyPreparedUpdatesAtomically(preparedUpdates, {\n\t\t\tverbose: options.verbose,\n\t\t\tquiet: options.quiet,\n\t\t\tfileOps,\n\t\t})\n\n\t\tfor (const prepared of preparedUpdates) {\n\t\t\tconst { update, preparedFiles } = prepared\n\n\t\t\t// Update receipt entry - we know it exists because we validated in resolveComponentsToUpdate\n\t\t\tconst existingEntry = receipt.installed[update.canonicalId]\n\t\t\tif (!existingEntry) {\n\t\t\t\tthrow new NotFoundError(`Component '${update.canonicalId}' not found in receipt.`)\n\t\t\t}\n\n\t\t\t// Compute individual file hashes\n\t\t\tconst fileHashes: Array<{ path: string; hash: string }> = []\n\t\t\tfor (const preparedFile of preparedFiles) {\n\t\t\t\tfileHashes.push({\n\t\t\t\t\tpath: preparedFile.resolvedTarget,\n\t\t\t\t\thash: hashContent(preparedFile.content),\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treceipt.installed[update.canonicalId] = {\n\t\t\t\tregistryUrl: existingEntry.registryUrl,\n\t\t\t\tregistryName: existingEntry.registryName,\n\t\t\t\tname: existingEntry.name,\n\t\t\t\trevision: update.newVersion,\n\t\t\t\thash: update.newHash,\n\t\t\t\tfiles: fileHashes,\n\t\t\t\tinstalledAt: existingEntry.installedAt,\n\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t\t// Update opencode config if component provides it\n\t\t\t\t...(update.component.opencode && {\n\t\t\t\t\topencode: update.component.opencode as Record<string, unknown>,\n\t\t\t\t}),\n\t\t\t}\n\t\t}\n\n\t\t// Save receipt file\n\t\tawait writeReceipt(provider.cwd, receipt)\n\t\tif (!appliedWriteTransaction) {\n\t\t\tthrow new Error(\"Internal error: missing applied write transaction after update apply phase.\")\n\t\t}\n\t\tawait appliedWriteTransaction.commit()\n\t\tappliedWriteTransaction = null\n\n\t\tinstallSpin?.succeed(`Updated ${updates.length} component(s)`)\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\tif (failurePhase === \"apply\") {\n\t\t\tif (appliedWriteTransaction) {\n\t\t\t\tawait appliedWriteTransaction.rollback()\n\t\t\t\tappliedWriteTransaction = null\n\t\t\t}\n\t\t\tinstallSpin?.fail(resolveUpdateFailureMessage(\"apply\"))\n\t\t} else {\n\t\t\tspin?.fail(resolveUpdateFailureMessage(\"check\"))\n\t\t}\n\t\tthrow error\n\t}\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\nasync function applyPreparedUpdatesAtomically(\n\tpreparedUpdates: PreparedUpdate[],\n\toptions: { verbose?: boolean; quiet?: boolean; fileOps?: UpdateFileOps },\n): Promise<AppliedWriteTransaction> {\n\tconst appliedWrites: AppliedWrite[] = []\n\tconst tempPaths = new Set<string>()\n\tlet finalized = false\n\tconst renameFile = options.fileOps?.rename ?? rename\n\n\tconst rollback = async (): Promise<void> => {\n\t\tif (finalized) {\n\t\t\treturn\n\t\t}\n\n\t\tfinalized = true\n\n\t\tfor (const tempPath of tempPaths) {\n\t\t\ttry {\n\t\t\t\tawait rm(tempPath, { force: true })\n\t\t\t} catch {\n\t\t\t\t// best-effort cleanup\n\t\t\t}\n\t\t}\n\n\t\tfor (const appliedWrite of [...appliedWrites].reverse()) {\n\t\t\ttry {\n\t\t\t\tif (appliedWrite.backupPath) {\n\t\t\t\t\tif (existsSync(appliedWrite.targetPath)) {\n\t\t\t\t\t\tawait rm(appliedWrite.targetPath, { force: true, recursive: true })\n\t\t\t\t\t}\n\t\t\t\t\tif (existsSync(appliedWrite.backupPath)) {\n\t\t\t\t\t\tawait renameFile(appliedWrite.backupPath, appliedWrite.targetPath)\n\t\t\t\t\t}\n\t\t\t\t} else if (existsSync(appliedWrite.targetPath)) {\n\t\t\t\t\tawait rm(appliedWrite.targetPath, { force: true, recursive: true })\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\t}\n\n\tconst commit = async (): Promise<void> => {\n\t\tif (finalized) {\n\t\t\treturn\n\t\t}\n\n\t\tfinalized = true\n\n\t\tfor (const appliedWrite of appliedWrites) {\n\t\t\tif (!appliedWrite.backupPath) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (existsSync(appliedWrite.backupPath)) {\n\t\t\t\ttry {\n\t\t\t\t\tawait rm(appliedWrite.backupPath, { force: true })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (!options.quiet) {\n\t\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error)\n\t\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t\t`Post-update cleanup warning: failed to remove backup \"${appliedWrite.backupPath}\" (${errorMessage})`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttry {\n\t\tfor (const prepared of preparedUpdates) {\n\t\t\tfor (const preparedFile of prepared.preparedFiles) {\n\t\t\t\tconst targetDir = dirname(preparedFile.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\tif (existsSync(preparedFile.targetPath)) {\n\t\t\t\t\tconst currentTargetStats = await stat(preparedFile.targetPath)\n\t\t\t\t\tif (currentTargetStats.isDirectory()) {\n\t\t\t\t\t\tthrow new ValidationError(\n\t\t\t\t\t\t\t`Cannot update \"${preparedFile.resolvedTarget}\": target path is a directory.`,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst tempPath = `${preparedFile.targetPath}.ocx-update-tmp-${randomUUID()}`\n\t\t\t\tawait writeFile(tempPath, preparedFile.content)\n\t\t\t\ttempPaths.add(tempPath)\n\n\t\t\t\tlet backupPath: string | null = null\n\t\t\t\tif (existsSync(preparedFile.targetPath)) {\n\t\t\t\t\tbackupPath = `${preparedFile.targetPath}.ocx-update-backup-${randomUUID()}`\n\t\t\t\t\tawait renameFile(preparedFile.targetPath, backupPath)\n\t\t\t\t\tappliedWrites.push({\n\t\t\t\t\t\ttargetPath: preparedFile.targetPath,\n\t\t\t\t\t\tbackupPath,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tawait renameFile(tempPath, preparedFile.targetPath)\n\t\t\t\ttempPaths.delete(tempPath)\n\n\t\t\t\tif (!backupPath) {\n\t\t\t\t\tappliedWrites.push({\n\t\t\t\t\t\ttargetPath: preparedFile.targetPath,\n\t\t\t\t\t\tbackupPath: null,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (options.verbose) {\n\t\t\t\t\tlogger.info(` ✓ Updated ${preparedFile.resolvedTarget}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { commit, rollback }\n\t} catch (error) {\n\t\tawait rollback()\n\t\tthrow error\n\t}\n}\n\n/**\n * Parse and validate a component specifier.\n * Law 2: Parse at boundary, trust internally.\n * Law 4: Fail fast on malformed specifiers before receipt lookup.\n *\n * Rejects trailing `@` (empty version) since update always fetches latest.\n *\n * @example\n * parseComponentSpec(\"kdco/agents\") // { component: \"kdco/agents\" }\n * parseComponentSpec(\"kdco/agents@\") // throws ConfigError\n */\nfunction parseComponentSpec(spec: string): ComponentSpec {\n\tif (spec.endsWith(\"@\")) {\n\t\tthrow new ConfigError(\n\t\t\t`Invalid version specifier '${spec}'. The trailing '@' has no version.\\n` +\n\t\t\t\t`Use '${spec.slice(0, -1)}' to update to the latest version.`,\n\t\t)\n\t}\n\n\treturn { component: spec }\n}\n\n/**\n * Resolve which components to update based on args and flags.\n * Law 4: Fail fast if component not found in receipt.\n */\nfunction resolveComponentsToUpdate(\n\treceipt: Receipt,\n\tparsedComponents: ComponentSpec[],\n\toptions: UpdateOptions,\n): ComponentSpec[] {\n\tconst installedComponents = Object.keys(receipt.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 alias (no version override)\n\tif (options.registry) {\n\t\treturn installedComponents\n\t\t\t.filter((canonicalId) => {\n\t\t\t\tconst entry = receipt.installed[canonicalId]\n\t\t\t\treturn entry?.registryName === 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\t// User provides qualified names like \"alias/component\"\n\t// We need to find the matching canonical ID in the receipt\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\n\t\t\t\t.map((id) => {\n\t\t\t\t\tconst parsed = parseCanonicalId(id)\n\t\t\t\t\treturn `${parsed.registryName}/${parsed.name}`\n\t\t\t\t})\n\t\t\t\t.filter((qualified) => qualified.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 (alias/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 alias (e.g., 'kdco/${name}').`,\n\t\t\t)\n\t\t}\n\n\t\t// Find matching canonical ID\n\t\tconst { namespace: prefix, component } = parseQualifiedComponent(name)\n\t\tconst matchingIds = installedComponents.filter((id) => {\n\t\t\tconst parsed = parseCanonicalId(id)\n\t\t\treturn parsed.registryName === prefix && parsed.name === component\n\t\t})\n\n\t\tif (matchingIds.length === 0) {\n\t\t\tthrow new NotFoundError(\n\t\t\t\t`Component '${name}' is not installed.\\nRun '${formatAddCommandHint(name, options)}' to install it first.`,\n\t\t\t)\n\t\t}\n\n\t\t// Use the first matching canonical ID (there should only be one per alias/name pair)\n\t\tconst canonicalId = matchingIds[0]\n\t\tif (!canonicalId) {\n\t\t\tthrow new Error(`Unexpected: matchingIds has length but first element is undefined`)\n\t\t}\n\t\tresult.push({ component: canonicalId })\n\t}\n\n\treturn result\n}\n\n/**\n * Output dry-run results using shared utility.\n */\nfunction outputUpdateDryRun(results: UpdateResult[], options: UpdateOptions): void {\n\tconst wouldUpdate = results.filter((r) => r.status === \"would-update\")\n\n\tconst actions: DryRunAction[] = wouldUpdate.map((result) => ({\n\t\taction: \"update\",\n\t\ttarget: result.qualifiedName,\n\t\tdetails: { from: result.oldVersion, to: result.newVersion },\n\t}))\n\n\tconst dryRunResult: DryRunResult = {\n\t\tdryRun: true,\n\t\tcommand: \"update\",\n\t\twouldPerform: actions,\n\t\tvalidation: { passed: true },\n\t\tsummary:\n\t\t\twouldUpdate.length > 0\n\t\t\t\t? `Would update ${wouldUpdate.length} component(s)`\n\t\t\t\t: \"All components are up to date\",\n\t}\n\n\toutputDryRun(dryRunResult, { json: options.json, quiet: options.quiet })\n}\n",
|
|
133
|
+
"/**\n * Validate Command (for Registry Authors)\n *\n * Validates a registry source without building it.\n */\n\nimport { resolve } from \"node:path\"\nimport type { Command } from \"commander\"\nimport kleur from \"kleur\"\nimport { runCompleteValidation } from \"../lib/validation-runner\"\nimport type { LoadRegistryErrorKind } from \"../lib/validators\"\nimport {\n\tEXIT_CODES,\n\tNotFoundError,\n\tOCXError,\n\tValidationFailedError,\n\ttype ValidationFailureDetails,\n} from \"../utils/errors\"\nimport { handleError, logger, outputJson } from \"../utils/index\"\nimport { summarizeValidationErrors } from \"../utils/validation-errors\"\n\ninterface ValidateOptions {\n\tcwd: string\n\tjson: boolean\n\tquiet: boolean\n\tduplicateTargets: boolean\n}\n\nfunction createLoadValidationError(message: string, errorKind?: LoadRegistryErrorKind): Error {\n\tif (errorKind === \"not_found\") {\n\t\treturn new NotFoundError(message)\n\t}\n\n\tif (errorKind === \"parse_error\") {\n\t\treturn new OCXError(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n\t}\n\n\treturn new OCXError(message, \"CONFIG_ERROR\", EXIT_CODES.CONFIG)\n}\n\nfunction createValidationFailureError(\n\terrors: string[],\n\tfailureType: \"schema\" | \"rules\",\n): ValidationFailedError {\n\tconst summary = summarizeValidationErrors(errors, {\n\t\tschemaErrors: failureType === \"schema\" ? errors.length : 0,\n\t})\n\n\tconst details: ValidationFailureDetails = {\n\t\tvalid: false,\n\t\terrors,\n\t\tsummary: {\n\t\t\tvalid: false,\n\t\t\ttotalErrors: summary.totalErrors,\n\t\t\tschemaErrors: summary.schemaErrors,\n\t\t\tsourceFileErrors: summary.sourceFileErrors,\n\t\t\tcircularDependencyErrors: summary.circularDependencyErrors,\n\t\t\tduplicateTargetErrors: summary.duplicateTargetErrors,\n\t\t\totherErrors: summary.otherErrors,\n\t\t},\n\t}\n\n\treturn new ValidationFailedError(details)\n}\n\nfunction outputValidationErrors(errors: string[]): void {\n\tfor (const error of errors) {\n\t\tconsole.log(kleur.red(` ${error}`))\n\t}\n}\n\nexport function registerValidateCommand(program: Command): void {\n\tprogram\n\t\t.command(\"validate\")\n\t\t.description(\"Validate a registry source (for registry authors)\")\n\t\t.argument(\"[path]\", \"Registry source directory\", \".\")\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.option(\"--no-duplicate-targets\", \"Skip duplicate target validation\")\n\t\t.action(async (path: string, options: ValidateOptions) => {\n\t\t\ttry {\n\t\t\t\tconst sourcePath = resolve(options.cwd, path)\n\n\t\t\t\tconst validationResult = await runCompleteValidation(sourcePath, {\n\t\t\t\t\tskipDuplicateTargets: options.duplicateTargets === false,\n\t\t\t\t})\n\n\t\t\t\tif (!validationResult.success) {\n\t\t\t\t\tconst [firstError = \"Registry validation failed\"] = validationResult.errors\n\n\t\t\t\t\tif (validationResult.failureType === \"load\") {\n\t\t\t\t\t\tconst loadError = createLoadValidationError(firstError, validationResult.loadErrorKind)\n\t\t\t\t\t\tif (!options.json && options.quiet) {\n\t\t\t\t\t\t\tconst exitCode =\n\t\t\t\t\t\t\t\tloadError instanceof OCXError ? loadError.exitCode : EXIT_CODES.GENERAL\n\t\t\t\t\t\t\tprocess.exit(exitCode)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow loadError\n\t\t\t\t\t}\n\n\t\t\t\t\tconst validationError = createValidationFailureError(\n\t\t\t\t\t\tvalidationResult.errors,\n\t\t\t\t\t\tvalidationResult.failureType === \"schema\" ? \"schema\" : \"rules\",\n\t\t\t\t\t)\n\n\t\t\t\t\tif (options.json) {\n\t\t\t\t\t\tthrow validationError\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!options.quiet) {\n\t\t\t\t\t\tlogger.error(validationError.message)\n\t\t\t\t\t\toutputValidationErrors(validationResult.errors)\n\t\t\t\t\t}\n\n\t\t\t\t\tprocess.exit(validationError.exitCode)\n\t\t\t\t}\n\n\t\t\t\t// All validations passed\n\t\t\t\tif (!options.quiet && !options.json) {\n\t\t\t\t\tlogger.success(\"✓ Registry source is valid\")\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\tvalid: true,\n\t\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\t\tsummary: summarizeValidationErrors([]),\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 (!options.json && options.quiet) {\n\t\t\t\t\tconst exitCode = error instanceof OCXError ? error.exitCode : EXIT_CODES.GENERAL\n\t\t\t\t\tprocess.exit(exitCode)\n\t\t\t\t}\n\n\t\t\t\thandleError(error, { json: options.json })\n\t\t\t}\n\t\t})\n}\n",
|
|
129
134
|
"/**\n * OCX CLI - verify command\n * Verify file integrity of installed components\n */\n\nimport type { Command } from \"commander\"\nimport { LocalConfigProvider } from \"../config/provider\"\nimport { readReceipt } from \"../schemas/config\"\nimport { resolveInstalledComponentRefs } from \"../utils/component-ref-resolver\"\nimport { ConflictError, EXIT_CODES } from \"../utils/errors\"\nimport { createSpinner, handleError, logger } from \"../utils/index\"\nimport { checkFileIntegrity } from \"../utils/receipt\"\nimport { addCommonOptions, addVerboseOption } from \"../utils/shared-options\"\n\nexport interface VerifyOptions {\n\tcwd?: string\n\tquiet?: boolean\n\tverbose?: boolean\n\tjson?: boolean\n}\n\nexport function registerVerifyCommand(program: Command): void {\n\tconst cmd = program\n\t\t.command(\"verify\")\n\t\t.description(\"Verify integrity of installed components\")\n\t\t.argument(\"[components...]\", \"Components to verify (optional, verifies all if omitted)\")\n\n\taddCommonOptions(cmd)\n\taddVerboseOption(cmd)\n\n\tcmd.action(async (components: string[], options: VerifyOptions) => {\n\t\ttry {\n\t\t\tawait runVerify(components, options)\n\t\t} catch (error) {\n\t\t\thandleError(error, { json: options.json })\n\t\t}\n\t})\n}\n\nasync function runVerify(componentNames: string[], options: VerifyOptions): Promise<void> {\n\tconst cwd = options.cwd ?? process.cwd()\n\tconst provider = await LocalConfigProvider.requireInitialized(cwd)\n\n\t// V1: Read receipt\n\tconst receipt = await readReceipt(provider.cwd)\n\tif (!receipt || Object.keys(receipt.installed).length === 0) {\n\t\tif (options.json) {\n\t\t\tconsole.log(JSON.stringify({ success: true, verified: [], errors: [] }, null, 2))\n\t\t} else if (!options.quiet) {\n\t\t\tlogger.info(\"No components installed.\")\n\t\t}\n\t\treturn\n\t}\n\n\t// Determine which components to verify\n\t// Resolve shorthand refs (e.g., \"kdco/researcher\") to canonical receipt IDs\n\tlet toVerify: string[]\n\tif (componentNames.length > 0) {\n\t\ttoVerify = resolveInstalledComponentRefs(componentNames, receipt)\n\t} else {\n\t\ttoVerify = Object.keys(receipt.installed)\n\t}\n\n\tconst spin =\n\t\toptions.quiet || options.json ? null : createSpinner({ text: \"Verifying components...\" })\n\tspin?.start()\n\n\tconst results: Array<{\n\t\tcanonicalId: string\n\t\tintact: boolean\n\t\tmodified: string[]\n\t\tmissing: string[]\n\t}> = []\n\n\tlet hasIssues = false\n\n\tfor (const canonicalId of toVerify) {\n\t\tconst entry = receipt.installed[canonicalId]\n\t\tif (!entry) {\n\t\t\t// Should not reach here after resolution, but guard defensively\n\t\t\tif (componentNames.length > 0) {\n\t\t\t\tlogger.warn(`Component '${canonicalId}' not found in receipt.`)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tconst integrity = await checkFileIntegrity(provider.cwd, entry)\n\n\t\tif (!integrity.intact) {\n\t\t\thasIssues = true\n\t\t}\n\n\t\tresults.push({\n\t\t\tcanonicalId,\n\t\t\tintact: integrity.intact,\n\t\t\tmodified: integrity.modified,\n\t\t\tmissing: integrity.missing,\n\t\t})\n\t}\n\n\tspin?.succeed(`Verified ${results.length} component(s)`)\n\n\t// Output results\n\tif (options.json) {\n\t\tconsole.log(\n\t\t\tJSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tsuccess: !hasIssues,\n\t\t\t\t\tverified: results.filter((r) => r.intact),\n\t\t\t\t\terrors: results.filter((r) => !r.intact),\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t)\n\t\t// Exit with non-zero if there are issues (consistent with non-JSON mode)\n\t\tif (hasIssues) {\n\t\t\tprocess.exit(EXIT_CODES.CONFLICT)\n\t\t}\n\t\treturn\n\t}\n\n\tif (!options.quiet) {\n\t\tlogger.info(\"\")\n\t\tfor (const result of results) {\n\t\t\tif (result.intact) {\n\t\t\t\tif (options.verbose) {\n\t\t\t\t\tlogger.success(`✓ ${result.canonicalId} - all files intact`)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlogger.error(`✗ ${result.canonicalId} - integrity check failed`)\n\t\t\t\tfor (const path of result.modified) {\n\t\t\t\t\tlogger.error(` Modified: ${path}`)\n\t\t\t\t}\n\t\t\t\tfor (const path of result.missing) {\n\t\t\t\t\tlogger.error(` Missing: ${path}`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasIssues) {\n\t\tif (!options.quiet) {\n\t\t\tlogger.info(\"\")\n\t\t\tlogger.warn(\n\t\t\t\t\"Some files have been modified or are missing. \" +\n\t\t\t\t\t\"Review local changes with git, then run 'ocx update <alias/component>' or 'ocx update --all' to restore.\",\n\t\t\t)\n\t\t}\n\n\t\tthrow new ConflictError(\"File integrity check failed for one or more components.\")\n\t}\n\n\tif (!options.quiet) {\n\t\tlogger.info(\"\")\n\t\tlogger.success(\"All components verified successfully.\")\n\t}\n}\n",
|
|
130
|
-
"/**\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// Skip for JSON-mode commands (strict
|
|
131
|
-
"#!/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 { registerInitCommand } from \"./commands/init\"\nimport { registerMigrateCommand } from \"./commands/migrate/index\"\nimport { registerOpencodeCommand } from \"./commands/opencode\"\nimport { registerProfileCommand } from \"./commands/profile/index\"\nimport { registerRegistryCommand } from \"./commands/registry\"\nimport { registerRemoveCommand } from \"./commands/remove\"\nimport { registerSearchCommand } from \"./commands/search\"\nimport { registerSelfCommand } from \"./commands/self/index\"\nimport { registerUpdateCommand } from \"./commands/update\"\nimport { registerVerifyCommand } from \"./commands/verify\"\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\tregisterSearchCommand(program)\n\tregisterRegistryCommand(program)\n\tregisterBuildCommand(program)\n\tregisterSelfCommand(program)\n\n\t// V2: Receipt-based component management\n\tregisterVerifyCommand(program)\n\tregisterRemoveCommand(program)\n\n\t// Migration\n\tregisterMigrateCommand(program)\n\n\t// New top-level commands (Phase 5)\n\tregisterProfileCommand(program)\n\tregisterConfigCommand(program)\n\tregisterOpencodeCommand(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"
|
|
135
|
+
"/**\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// Skip for JSON-mode and quiet-mode commands (strict output contract)\n\t\tconst actionOptions = actionCommand.opts<{ json?: boolean; quiet?: boolean }>()\n\t\tif (actionOptions.json || actionOptions.quiet) {\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",
|
|
136
|
+
"#!/usr/bin/env -S bun --no-env-file\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 { registerInitCommand } from \"./commands/init\"\nimport { registerMigrateCommand } from \"./commands/migrate/index\"\nimport { registerOpencodeCommand } from \"./commands/opencode\"\nimport { registerProfileCommand } from \"./commands/profile/index\"\nimport { registerRegistryCommand } from \"./commands/registry\"\nimport { registerRemoveCommand } from \"./commands/remove\"\nimport { registerSearchCommand } from \"./commands/search\"\nimport { registerSelfCommand } from \"./commands/self/index\"\nimport { registerUpdateCommand } from \"./commands/update\"\nimport { registerValidateCommand } from \"./commands/validate\"\nimport { registerVerifyCommand } from \"./commands/verify\"\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\tregisterSearchCommand(program)\n\tregisterRegistryCommand(program)\n\tregisterBuildCommand(program)\n\tregisterValidateCommand(program)\n\tregisterSelfCommand(program)\n\n\t// V2: Receipt-based component management\n\tregisterVerifyCommand(program)\n\tregisterRemoveCommand(program)\n\n\t// Migration\n\tregisterMigrateCommand(program)\n\n\t// New top-level commands (Phase 5)\n\tregisterProfileCommand(program)\n\tregisterConfigCommand(program)\n\tregisterOpencodeCommand(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"
|
|
132
137
|
],
|
|
133
|
-
"mappings": "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AAO;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,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,EAC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K,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,MAAM,QACN,KAAK,QAAS,KAAK,QACnB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,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,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,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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",
|
|
134
|
-
"debugId": "
|
|
138
|
+
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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AA,EAC5C,gBAAe,gBAAe,QAAQ,MAAM;AAAA,EAC5C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,gBAAe,gBAAe,OAAO,MAAM;AAAA,EAC3C,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,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,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,gBA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CN,KAAK,QAAU,KAAK,QACpB,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,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,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,Q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",
|
|
139
|
+
"debugId": "F324B1CA6BEB983B64756E2164756E21",
|
|
135
140
|
"names": []
|
|
136
141
|
}
|