@unbrained/pm-cli 2026.5.29 → 2026.5.30

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.
Files changed (100) hide show
  1. package/CHANGELOG.md +29 -12
  2. package/dist/cli/bootstrap-args.d.ts +1 -1
  3. package/dist/cli/bootstrap-args.js +59 -9
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commands/activity.js +4 -4
  6. package/dist/cli/commands/activity.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +4 -4
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close.js +4 -4
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +4 -4
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/create.js +18 -5
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/deps.js +4 -4
  16. package/dist/cli/commands/deps.js.map +1 -1
  17. package/dist/cli/commands/extension/install-sources.d.ts +1 -0
  18. package/dist/cli/commands/extension/install-sources.js +20 -2
  19. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  20. package/dist/cli/commands/extension.js +26 -5
  21. package/dist/cli/commands/extension.js.map +1 -1
  22. package/dist/cli/commands/get.js +6 -3
  23. package/dist/cli/commands/get.js.map +1 -1
  24. package/dist/cli/commands/list.js +25 -6
  25. package/dist/cli/commands/list.js.map +1 -1
  26. package/dist/cli/commands/search.js +3 -3
  27. package/dist/cli/commands/search.js.map +1 -1
  28. package/dist/cli/commands/stats.js +4 -4
  29. package/dist/cli/commands/stats.js.map +1 -1
  30. package/dist/cli/commands/test-all.js +4 -4
  31. package/dist/cli/commands/test-all.js.map +1 -1
  32. package/dist/cli/main.d.ts +2 -0
  33. package/dist/cli/main.js +39 -11
  34. package/dist/cli/main.js.map +1 -1
  35. package/dist/cli/register-list-query.js +3 -3
  36. package/dist/cli/register-list-query.js.map +1 -1
  37. package/dist/cli/register-setup.js +3 -3
  38. package/dist/cli/register-setup.js.map +1 -1
  39. package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js +164 -0
  40. package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js.map +7 -0
  41. package/dist/cli-bundle/chunks/chunk-RJONRNXN.js +682 -0
  42. package/dist/cli-bundle/chunks/chunk-RJONRNXN.js.map +7 -0
  43. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js +13864 -0
  44. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js.map +7 -0
  45. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js +24225 -0
  46. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js.map +7 -0
  47. package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js +223 -0
  48. package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js.map +7 -0
  49. package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js +702 -0
  50. package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js.map +7 -0
  51. package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js +355 -0
  52. package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js.map +7 -0
  53. package/dist/cli-bundle/chunks/register-setup-OZOKSMPJ.js +237 -0
  54. package/dist/cli-bundle/chunks/register-setup-OZOKSMPJ.js.map +7 -0
  55. package/dist/cli-bundle/main.js +6896 -0
  56. package/dist/cli-bundle/main.js.map +7 -0
  57. package/dist/cli.js +1 -1
  58. package/dist/core/config/nested-settings.d.ts +2 -0
  59. package/dist/core/config/nested-settings.js +17 -2
  60. package/dist/core/config/nested-settings.js.map +1 -1
  61. package/dist/core/item/type-synonyms.d.ts +20 -0
  62. package/dist/core/item/type-synonyms.js +42 -0
  63. package/dist/core/item/type-synonyms.js.map +1 -0
  64. package/dist/core/search/cache.js +46 -4
  65. package/dist/core/search/cache.js.map +1 -1
  66. package/dist/core/search/semantic-defaults.js +73 -32
  67. package/dist/core/search/semantic-defaults.js.map +1 -1
  68. package/dist/core/sentry/helpers.d.ts +1 -1
  69. package/dist/core/sentry/helpers.js +4 -4
  70. package/dist/core/sentry/helpers.js.map +1 -1
  71. package/dist/core/shared/constants.js +3 -2
  72. package/dist/core/shared/constants.js.map +1 -1
  73. package/dist/core/shared/html-entity-decode.d.ts +2 -1
  74. package/dist/core/shared/html-entity-decode.js +14 -9
  75. package/dist/core/shared/html-entity-decode.js.map +1 -1
  76. package/dist/core/shared/time.js +52 -2
  77. package/dist/core/shared/time.js.map +1 -1
  78. package/dist/core/store/front-matter-cache.d.ts +24 -0
  79. package/dist/core/store/front-matter-cache.js +119 -8
  80. package/dist/core/store/front-matter-cache.js.map +1 -1
  81. package/dist/core/store/item-store.d.ts +7 -0
  82. package/dist/core/store/item-store.js +13 -3
  83. package/dist/core/store/item-store.js.map +1 -1
  84. package/dist/core/store/settings-validator.d.ts +1 -0
  85. package/dist/core/store/settings-validator.js +3 -2
  86. package/dist/core/store/settings-validator.js.map +1 -1
  87. package/dist/core/store/settings.js +19 -3
  88. package/dist/core/store/settings.js.map +1 -1
  89. package/dist/mcp/server.js +3 -3
  90. package/dist/mcp/server.js.map +1 -1
  91. package/dist/sdk/cli-contracts.js +5 -5
  92. package/dist/sdk/cli-contracts.js.map +1 -1
  93. package/dist/types.d.ts +2 -0
  94. package/dist/types.js +2 -2
  95. package/dist/types.js.map +1 -1
  96. package/docs/CONFIGURATION.md +11 -0
  97. package/package.json +7 -4
  98. package/packages/pm-calendar/extensions/calendar/index.js +27 -2
  99. package/packages/pm-calendar/extensions/calendar/index.ts +28 -2
  100. package/scripts/bundle-cli.mjs +39 -0
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["import { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\nexport type ExtensionScope = \"project\" | \"global\";\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n fields?: string;\n vocabulary?: \"extension\" | \"package\";\n}\n\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n}\n\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"]): {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\n allowed_extensions: string[];\n blocked_extensions: string[];\n allowed_capabilities: string[];\n blocked_capabilities: string[];\n allowed_surfaces: string[];\n blocked_surfaces: string[];\n allowed_commands: string[];\n blocked_commands: string[];\n allowed_actions: string[];\n blocked_actions: string[];\n allowed_services: string[];\n blocked_services: string[];\n extension_overrides: Array<{\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\n allowed_capabilities?: string[];\n blocked_capabilities?: string[];\n allowed_surfaces?: string[];\n blocked_surfaces?: string[];\n allowed_commands?: string[];\n blocked_commands?: string[];\n allowed_actions?: string[];\n blocked_actions?: string[];\n allowed_services?: string[];\n blocked_services?: string[];\n }>;\n} {\n const overrides = (policy.extension_overrides ?? [])\n .map((override) => ({\n name: override.name.trim(),\n disabled: override.disabled === true ? true : undefined,\n require_trusted: override.require_trusted === true ? true : undefined,\n require_provenance: override.require_provenance === true ? true : undefined,\n sandbox_profile: override.sandbox_profile,\n allowed_capabilities: normalizeStringList(override.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(override.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(override.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(override.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(override.allowed_commands ?? []),\n blocked_commands: normalizeStringList(override.blocked_commands ?? []),\n allowed_actions: normalizeStringList(override.allowed_actions ?? []),\n blocked_actions: normalizeStringList(override.blocked_actions ?? []),\n allowed_services: normalizeStringList(override.allowed_services ?? []),\n blocked_services: normalizeStringList(override.blocked_services ?? []),\n }))\n .filter((override) => override.name.length > 0)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: policy.mode,\n trust_mode: policy.trust_mode,\n require_provenance: policy.require_provenance === true,\n trusted_extensions: normalizeStringList(policy.trusted_extensions ?? []),\n default_sandbox_profile: policy.default_sandbox_profile ?? \"none\",\n allowed_extensions: normalizeStringList(policy.allowed_extensions ?? []),\n blocked_extensions: normalizeStringList(policy.blocked_extensions ?? []),\n allowed_capabilities: normalizeStringList(policy.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(policy.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(policy.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(policy.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(policy.allowed_commands ?? []),\n blocked_commands: normalizeStringList(policy.blocked_commands ?? []),\n allowed_actions: normalizeStringList(policy.allowed_actions ?? []),\n blocked_actions: normalizeStringList(policy.blocked_actions ?? []),\n allowed_services: normalizeStringList(policy.allowed_services ?? []),\n blocked_services: normalizeStringList(policy.blocked_services ?? []),\n extension_overrides: overrides.map((override) => ({\n name: override.name,\n ...(override.disabled === true ? { disabled: true } : {}),\n ...(override.require_trusted === true ? { require_trusted: true } : {}),\n ...(override.require_provenance === true ? { require_provenance: true } : {}),\n ...(override.sandbox_profile ? { sandbox_profile: override.sandbox_profile } : {}),\n ...(override.allowed_capabilities.length > 0 ? { allowed_capabilities: override.allowed_capabilities } : {}),\n ...(override.blocked_capabilities.length > 0 ? { blocked_capabilities: override.blocked_capabilities } : {}),\n ...(override.allowed_surfaces.length > 0 ? { allowed_surfaces: override.allowed_surfaces } : {}),\n ...(override.blocked_surfaces.length > 0 ? { blocked_surfaces: override.blocked_surfaces } : {}),\n ...(override.allowed_commands.length > 0 ? { allowed_commands: override.allowed_commands } : {}),\n ...(override.blocked_commands.length > 0 ? { blocked_commands: override.blocked_commands } : {}),\n ...(override.allowed_actions.length > 0 ? { allowed_actions: override.allowed_actions } : {}),\n ...(override.blocked_actions.length > 0 ? { blocked_actions: override.blocked_actions } : {}),\n ...(override.allowed_services.length > 0 ? { allowed_services: override.allowed_services } : {}),\n ...(override.blocked_services.length > 0 ? { blocked_services: override.blocked_services } : {}),\n })),\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n let lastError: unknown = null;\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n lastError = error;\n }\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n\n let acquired = false;\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_LOCK_ATTEMPTS; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n const stat = await fs.stat(lockPath).catch(() => null);\n if (stat && Date.now() - stat.mtimeMs > EXTENSION_INSTALL_LOCK_STALE_MS) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [...new Set([\n options.install ? \"install\" : null,\n options.uninstall ? \"uninstall\" : null,\n options.explore ? \"explore\" : null,\n options.manage ? \"manage\" : null,\n options.reload ? \"reload\" : null,\n options.doctor ? \"doctor\" : null,\n options.catalog ? \"catalog\" : null,\n options.init ? \"init\" : null,\n options.scaffold ? \"init\" : null,\n options.adopt ? \"adopt\" : null,\n options.adoptAll ? \"adopt-all\" : null,\n options.activate ? \"activate\" : null,\n options.deactivate ? \"deactivate\" : null,\n ].filter((value): value is ExtensionCommandAction => value !== null))];\n if (selected.length === 0) {\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"doctor\") {\n return \"doctor\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"reload\") {\n return \"reload\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"catalog\") {\n return \"catalog\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"init\" || target.trim().toLowerCase() === \"scaffold\")) {\n return \"init\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"explore\") {\n return \"explore\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"manage\") {\n return \"manage\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"list\" || target.trim() === \"\")) {\n return \"explore\";\n }\n if (target === undefined) {\n return \"explore\";\n }\n throw new PmCliError(\n \"One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.\",\n EXIT_CODE.USAGE,\n );\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false;\n summaries.push({\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = isExtensionEnabled(settings, manifest.name);\n summaries.push({\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\n\nasync function checkGithubUpdate(source: ManagedExtensionSource): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await runGitCommand([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(`Action \"${action}\" requires an extension name or source target argument.`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n if ((options.strictExit === true || options.failOnWarn === true) && action !== \"doctor\") {\n throw new PmCliError(\"--strict-exit and --fail-on-warn are only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.trace === true && action !== \"doctor\") {\n throw new PmCliError(\"--trace is only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.watch === true && action !== \"reload\") {\n throw new PmCliError(\"--watch is only valid with --reload.\", EXIT_CODE.USAGE);\n }\n if (options.runtimeProbe === true && action !== \"manage\") {\n throw new PmCliError(\"--runtime-probe is only valid with --manage.\", EXIT_CODE.USAGE);\n }\n if (options.fixManagedState === true && action !== \"manage\" && action !== \"doctor\") {\n throw new PmCliError(\"--fix-managed-state is only valid with --manage or --doctor.\", EXIT_CODE.USAGE);\n }\n const normalizedTarget = (() => {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n })();\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => ({\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n });\n\n if (action === \"init\") {\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action);\n const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? \"extension\");\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n }\n\n if (action === \"reload\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n }\n\n if (action === \"catalog\") {\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n }\n\n if (action === \"install\") {\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n warnings: entry.result.warnings,\n })),\n });\n }\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, async () => {\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n\n const sourceRecord: ManagedExtensionSource =\n bundledAliasName\n ? {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n }\n : installSource.kind === \"local\"\n ? {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n }\n : installSource.kind === \"npm\"\n ? {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n }\n : {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n });\n });\n } finally {\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n }\n }\n\n if (action === \"adopt-all\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n }\n\n if (action === \"adopt\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n }\n\n if (action === \"uninstall\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n }\n\n if (action === \"activate\" || action === \"deactivate\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n }\n\n if (action === \"doctor\") {\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const remediation = [\n ...new Set(\n [\n ...triage.remediation,\n ...(loadResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n }\n\n if (action === \"explore\" || action === \"manage\") {\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n }\n\n throw new PmCliError(`Unsupported extension action \"${action}\".`, EXIT_CODE.USAGE);\n}\n"],"names":[],"mappings":"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","debugId":"bec21924-aaa9-50f0-83ba-af92671813ea"}
1
+ {"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["import { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\nexport type ExtensionScope = \"project\" | \"global\";\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n fields?: string;\n vocabulary?: \"extension\" | \"package\";\n}\n\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n}\n\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"]): {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\n allowed_extensions: string[];\n blocked_extensions: string[];\n allowed_capabilities: string[];\n blocked_capabilities: string[];\n allowed_surfaces: string[];\n blocked_surfaces: string[];\n allowed_commands: string[];\n blocked_commands: string[];\n allowed_actions: string[];\n blocked_actions: string[];\n allowed_services: string[];\n blocked_services: string[];\n extension_overrides: Array<{\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\n allowed_capabilities?: string[];\n blocked_capabilities?: string[];\n allowed_surfaces?: string[];\n blocked_surfaces?: string[];\n allowed_commands?: string[];\n blocked_commands?: string[];\n allowed_actions?: string[];\n blocked_actions?: string[];\n allowed_services?: string[];\n blocked_services?: string[];\n }>;\n} {\n const overrides = (policy.extension_overrides ?? [])\n .map((override) => ({\n name: override.name.trim(),\n disabled: override.disabled === true ? true : undefined,\n require_trusted: override.require_trusted === true ? true : undefined,\n require_provenance: override.require_provenance === true ? true : undefined,\n sandbox_profile: override.sandbox_profile,\n allowed_capabilities: normalizeStringList(override.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(override.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(override.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(override.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(override.allowed_commands ?? []),\n blocked_commands: normalizeStringList(override.blocked_commands ?? []),\n allowed_actions: normalizeStringList(override.allowed_actions ?? []),\n blocked_actions: normalizeStringList(override.blocked_actions ?? []),\n allowed_services: normalizeStringList(override.allowed_services ?? []),\n blocked_services: normalizeStringList(override.blocked_services ?? []),\n }))\n .filter((override) => override.name.length > 0)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: policy.mode,\n trust_mode: policy.trust_mode,\n require_provenance: policy.require_provenance === true,\n trusted_extensions: normalizeStringList(policy.trusted_extensions ?? []),\n default_sandbox_profile: policy.default_sandbox_profile ?? \"none\",\n allowed_extensions: normalizeStringList(policy.allowed_extensions ?? []),\n blocked_extensions: normalizeStringList(policy.blocked_extensions ?? []),\n allowed_capabilities: normalizeStringList(policy.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(policy.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(policy.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(policy.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(policy.allowed_commands ?? []),\n blocked_commands: normalizeStringList(policy.blocked_commands ?? []),\n allowed_actions: normalizeStringList(policy.allowed_actions ?? []),\n blocked_actions: normalizeStringList(policy.blocked_actions ?? []),\n allowed_services: normalizeStringList(policy.allowed_services ?? []),\n blocked_services: normalizeStringList(policy.blocked_services ?? []),\n extension_overrides: overrides.map((override) => ({\n name: override.name,\n ...(override.disabled === true ? { disabled: true } : {}),\n ...(override.require_trusted === true ? { require_trusted: true } : {}),\n ...(override.require_provenance === true ? { require_provenance: true } : {}),\n ...(override.sandbox_profile ? { sandbox_profile: override.sandbox_profile } : {}),\n ...(override.allowed_capabilities.length > 0 ? { allowed_capabilities: override.allowed_capabilities } : {}),\n ...(override.blocked_capabilities.length > 0 ? { blocked_capabilities: override.blocked_capabilities } : {}),\n ...(override.allowed_surfaces.length > 0 ? { allowed_surfaces: override.allowed_surfaces } : {}),\n ...(override.blocked_surfaces.length > 0 ? { blocked_surfaces: override.blocked_surfaces } : {}),\n ...(override.allowed_commands.length > 0 ? { allowed_commands: override.allowed_commands } : {}),\n ...(override.blocked_commands.length > 0 ? { blocked_commands: override.blocked_commands } : {}),\n ...(override.allowed_actions.length > 0 ? { allowed_actions: override.allowed_actions } : {}),\n ...(override.blocked_actions.length > 0 ? { blocked_actions: override.blocked_actions } : {}),\n ...(override.allowed_services.length > 0 ? { allowed_services: override.allowed_services } : {}),\n ...(override.blocked_services.length > 0 ? { blocked_services: override.blocked_services } : {}),\n })),\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n}\n\nasync function copyExtensionDirectoryWithoutSelfNesting(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp,\n): Promise<void> {\n const resolvedSource = path.resolve(sourceDirectory);\n const resolvedDestination = path.resolve(destinationDirectory);\n if (resolvedSource === resolvedDestination) {\n return;\n }\n if (!isPathWithinDirectory(resolvedSource, resolvedDestination)) {\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n }\n\n const stagingRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pm-extension-copy-\"));\n const stagedDirectory = path.join(stagingRoot, \"extension\");\n try {\n await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });\n await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });\n } finally {\n await fs.rm(stagingRoot, { recursive: true, force: true });\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n\n let acquired = false;\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_LOCK_ATTEMPTS; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n const stat = await fs.stat(lockPath).catch(() => null);\n if (stat && Date.now() - stat.mtimeMs > EXTENSION_INSTALL_LOCK_STALE_MS) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [...new Set([\n options.install ? \"install\" : null,\n options.uninstall ? \"uninstall\" : null,\n options.explore ? \"explore\" : null,\n options.manage ? \"manage\" : null,\n options.reload ? \"reload\" : null,\n options.doctor ? \"doctor\" : null,\n options.catalog ? \"catalog\" : null,\n options.init ? \"init\" : null,\n options.scaffold ? \"init\" : null,\n options.adopt ? \"adopt\" : null,\n options.adoptAll ? \"adopt-all\" : null,\n options.activate ? \"activate\" : null,\n options.deactivate ? \"deactivate\" : null,\n ].filter((value): value is ExtensionCommandAction => value !== null))];\n if (selected.length === 0) {\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"doctor\") {\n return \"doctor\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"reload\") {\n return \"reload\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"catalog\") {\n return \"catalog\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"init\" || target.trim().toLowerCase() === \"scaffold\")) {\n return \"init\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"explore\") {\n return \"explore\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"manage\") {\n return \"manage\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"list\" || target.trim() === \"\")) {\n return \"explore\";\n }\n if (target === undefined) {\n return \"explore\";\n }\n throw new PmCliError(\n \"One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.\",\n EXIT_CODE.USAGE,\n );\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false;\n summaries.push({\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = isExtensionEnabled(settings, manifest.name);\n summaries.push({\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\n\nasync function checkGithubUpdate(source: ManagedExtensionSource): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await runGitCommand([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(`Action \"${action}\" requires an extension name or source target argument.`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n if ((options.strictExit === true || options.failOnWarn === true) && action !== \"doctor\") {\n throw new PmCliError(\"--strict-exit and --fail-on-warn are only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.trace === true && action !== \"doctor\") {\n throw new PmCliError(\"--trace is only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.watch === true && action !== \"reload\") {\n throw new PmCliError(\"--watch is only valid with --reload.\", EXIT_CODE.USAGE);\n }\n if (options.runtimeProbe === true && action !== \"manage\") {\n throw new PmCliError(\"--runtime-probe is only valid with --manage.\", EXIT_CODE.USAGE);\n }\n if (options.fixManagedState === true && action !== \"manage\" && action !== \"doctor\") {\n throw new PmCliError(\"--fix-managed-state is only valid with --manage or --doctor.\", EXIT_CODE.USAGE);\n }\n const normalizedTarget = (() => {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n })();\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => ({\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n });\n\n if (action === \"init\") {\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action);\n const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? \"extension\");\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n }\n\n if (action === \"reload\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n }\n\n if (action === \"catalog\") {\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n }\n\n if (action === \"install\") {\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n warnings: entry.result.warnings,\n })),\n });\n }\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, async () => {\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n\n const sourceRecord: ManagedExtensionSource =\n bundledAliasName\n ? {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n }\n : installSource.kind === \"local\"\n ? {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n }\n : installSource.kind === \"npm\"\n ? {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n }\n : {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n });\n });\n } finally {\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n }\n }\n\n if (action === \"adopt-all\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n }\n\n if (action === \"adopt\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n }\n\n if (action === \"uninstall\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n }\n\n if (action === \"activate\" || action === \"deactivate\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n }\n\n if (action === \"doctor\") {\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const remediation = [\n ...new Set(\n [\n ...triage.remediation,\n ...(loadResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n }\n\n if (action === \"explore\" || action === \"manage\") {\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n }\n\n throw new PmCliError(`Unsupported extension action \"${action}\".`, EXIT_CODE.USAGE);\n}\n"],"names":[],"mappings":"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","debugId":"dc0411c0-3d3c-5495-9be5-d221c8a9498d"}