openplanr 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/cli/commands/spec.d.ts +2 -1
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +45 -5
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/index-B_96uzCl.js +572 -0
- package/dist/dashboard/assets/index-B_96uzCl.js.map +1 -0
- package/dist/dashboard/dashboard-manifest.json +10 -10
- package/dist/dashboard/index.html +1 -1
- package/dist/services/claude-plugin-service.d.ts +5 -0
- package/dist/services/claude-plugin-service.d.ts.map +1 -1
- package/dist/services/claude-plugin-service.js +18 -2
- package/dist/services/claude-plugin-service.js.map +1 -1
- package/dist/services/codex-plugin-service.d.ts.map +1 -1
- package/dist/services/codex-plugin-service.js +11 -3
- package/dist/services/codex-plugin-service.js.map +1 -1
- package/dist/services/runtime-manager/codex-discovery.d.ts +1 -3
- package/dist/services/runtime-manager/codex-discovery.d.ts.map +1 -1
- package/dist/services/runtime-manager/codex-discovery.js +3 -16
- package/dist/services/runtime-manager/codex-discovery.js.map +1 -1
- package/dist/services/runtime-manager/doctor.d.ts +25 -0
- package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
- package/dist/services/runtime-manager/doctor.js +480 -0
- package/dist/services/runtime-manager/doctor.js.map +1 -1
- package/dist/services/runtime-manager/errors.d.ts +12 -0
- package/dist/services/runtime-manager/errors.d.ts.map +1 -0
- package/dist/services/runtime-manager/errors.js +14 -0
- package/dist/services/runtime-manager/errors.js.map +1 -0
- package/dist/services/runtime-manager/global-state.d.ts +7 -0
- package/dist/services/runtime-manager/global-state.d.ts.map +1 -1
- package/dist/services/runtime-manager/global-state.js +116 -0
- package/dist/services/runtime-manager/global-state.js.map +1 -1
- package/dist/services/runtime-manager/host-version-probe.d.ts +8 -0
- package/dist/services/runtime-manager/host-version-probe.d.ts.map +1 -0
- package/dist/services/runtime-manager/host-version-probe.js +14 -0
- package/dist/services/runtime-manager/host-version-probe.js.map +1 -0
- package/dist/services/runtime-manager/install-plan.d.ts +25 -0
- package/dist/services/runtime-manager/install-plan.d.ts.map +1 -1
- package/dist/services/runtime-manager/install-plan.js +305 -0
- package/dist/services/runtime-manager/install-plan.js.map +1 -1
- package/dist/services/runtime-manager/inventory.d.ts +6 -0
- package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
- package/dist/services/runtime-manager/inventory.js +16 -1
- package/dist/services/runtime-manager/inventory.js.map +1 -1
- package/dist/services/runtime-manager/legacy-adapters.d.ts +9 -0
- package/dist/services/runtime-manager/legacy-adapters.d.ts.map +1 -0
- package/dist/services/runtime-manager/legacy-adapters.js +187 -0
- package/dist/services/runtime-manager/legacy-adapters.js.map +1 -0
- package/dist/services/runtime-manager/paths.d.ts +18 -0
- package/dist/services/runtime-manager/paths.d.ts.map +1 -0
- package/dist/services/runtime-manager/paths.js +83 -0
- package/dist/services/runtime-manager/paths.js.map +1 -0
- package/dist/services/runtime-manager/runtime-package.d.ts +21 -0
- package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
- package/dist/services/runtime-manager/runtime-package.js +77 -0
- package/dist/services/runtime-manager/runtime-package.js.map +1 -1
- package/dist/services/runtime-manager/storage.d.ts +47 -0
- package/dist/services/runtime-manager/storage.d.ts.map +1 -0
- package/dist/services/runtime-manager/storage.js +604 -0
- package/dist/services/runtime-manager/storage.js.map +1 -0
- package/dist/services/runtime-manager-service.d.ts +7 -17
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +32 -1695
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/ship-checks/contract.d.ts +13 -1
- package/dist/services/ship-checks/contract.d.ts.map +1 -1
- package/dist/services/ship-checks/contract.js +1 -1
- package/dist/services/ship-checks/contract.js.map +1 -1
- package/dist/services/ship-checks/coverage.d.ts +4 -0
- package/dist/services/ship-checks/coverage.d.ts.map +1 -0
- package/dist/services/ship-checks/coverage.js +113 -0
- package/dist/services/ship-checks/coverage.js.map +1 -0
- package/dist/services/ship-checks/discover.d.ts.map +1 -1
- package/dist/services/ship-checks/discover.js +3 -0
- package/dist/services/ship-checks/discover.js.map +1 -1
- package/dist/services/spec-service.d.ts +18 -0
- package/dist/services/spec-service.d.ts.map +1 -1
- package/dist/services/spec-service.js +174 -9
- package/dist/services/spec-service.js.map +1 -1
- package/dist/templates/spec/spec-shaped.md.hbs +1 -1
- package/dist/templates/spec/spec.md.hbs +2 -2
- package/docs/CLI.md +49 -2
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +3 -3
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +50 -46
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/agents/planr-qa.md +5 -3
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +87 -2
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +271 -28
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +30 -2
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +17 -2
- package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +60 -2
- package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +11 -1
- package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +17 -2
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +60 -2
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +11 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +17 -2
- package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +60 -2
- package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +11 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +21 -11
- package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +31 -10
- package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +6 -0
- package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +3 -1
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +48 -44
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +17 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +60 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +11 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +17 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +60 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +11 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +17 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +60 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +11 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +21 -11
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +31 -10
- package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +3 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +6 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +87 -2
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +271 -28
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/{openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +30 -2
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +54 -50
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +87 -2
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +271 -28
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/{claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +30 -2
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
- package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +17 -2
- package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +60 -2
- package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +11 -1
- package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +17 -2
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +60 -2
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +11 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +17 -2
- package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +60 -2
- package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +11 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +1 -1
- package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +21 -11
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +31 -10
- package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +1 -1
- package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +6 -0
- package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +3 -1
- package/lib/json-schema.mjs +4 -0
- package/package.json +12 -12
- package/dist/dashboard/assets/index-L8qtwqv6.js +0 -572
- package/dist/dashboard/assets/index-L8qtwqv6.js.map +0 -1
- /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
- /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
- /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
|
@@ -1,6 +1,21 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
1
2
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
3
|
import path from 'node:path';
|
|
4
|
+
import { CLI_NODE_REMEDIATION, cliNodeVersionMessage, supportsCliNodeVersion, } from '../../../lib/node-runtime.mjs';
|
|
3
5
|
import { CLI_COMMAND, PLANNING_FOLDER } from '../../utils/constants.js';
|
|
6
|
+
import { duplicateClaudePluginDiagnostic, inspectBundledClaudePluginIntegration, } from '../claude-plugin-service.js';
|
|
7
|
+
import { inspectCodexPluginIntegration } from '../codex-plugin-service.js';
|
|
8
|
+
import { resolvePipelinePackage } from '../pipeline-package-service.js';
|
|
9
|
+
import { readOpenPlanrVersion } from '../provenance-service.js';
|
|
10
|
+
import { inspectCodexSkillDiscovery } from './codex-discovery.js';
|
|
11
|
+
import { RuntimeManagerError } from './errors.js';
|
|
12
|
+
import { inferRuntimeScope, loadState, previewHomeProjectCleanup, projectUsesUserRuntime, } from './global-state.js';
|
|
13
|
+
import { runtimeLockManifestDigest, validateRuntimeLockContract, } from './install-plan.js';
|
|
14
|
+
import { detectInstalledRuntimes as detectRuntimes, listInstalledRuntimeAdapters as listRuntimeAdapters, readRegistry, } from './inventory.js';
|
|
15
|
+
import { RETIRED_CLAUDE_AGENT_HASHES, RETIRED_CURSOR_AGENT_RULES, RETIRED_CURSOR_WORKFLOW_RULES, } from './legacy-adapters.js';
|
|
16
|
+
import { codexSkillsRoot, pathIsWithin, planrHome, projectKey, statePath } from './paths.js';
|
|
17
|
+
import { bundledHostRoot, bundledSkillAssets, inspectRuntimeLocator, inspectThinRule, } from './runtime-package.js';
|
|
18
|
+
import { managedBlockBytes, ownershipHash } from './storage.js';
|
|
4
19
|
const SETUP_RUNTIMES = {
|
|
5
20
|
'claude-code': 'claude',
|
|
6
21
|
codex: 'codex',
|
|
@@ -118,4 +133,469 @@ export function diagnoseRetiredCommandSkills(documents, commandRoots, managedBlo
|
|
|
118
133
|
: `Rerun \`${CLI_COMMAND} setup\`, then restart the agent.`,
|
|
119
134
|
};
|
|
120
135
|
}
|
|
136
|
+
export async function runtimeDoctor(projectDir, options = {}) {
|
|
137
|
+
const diagnostics = [];
|
|
138
|
+
const repairs = [];
|
|
139
|
+
let lockedAdapters;
|
|
140
|
+
const supportedNode = supportsCliNodeVersion(process.versions.node);
|
|
141
|
+
diagnostics.push({
|
|
142
|
+
code: 'node-version',
|
|
143
|
+
status: supportedNode ? 'pass' : 'fail',
|
|
144
|
+
message: supportedNode
|
|
145
|
+
? `Node.js ${process.versions.node}`
|
|
146
|
+
: cliNodeVersionMessage(process.versions.node),
|
|
147
|
+
...(!supportedNode ? { fix: CLI_NODE_REMEDIATION } : {}),
|
|
148
|
+
});
|
|
149
|
+
const state = await loadState();
|
|
150
|
+
const installed = state.projects[projectKey(projectDir)];
|
|
151
|
+
const detectedRuntimes = detectRuntimes();
|
|
152
|
+
for (const result of detectedRuntimes) {
|
|
153
|
+
const configured = installed?.runtimes.includes(result.runtime) ?? false;
|
|
154
|
+
diagnostics.push({
|
|
155
|
+
code: `runtime-${result.runtime}`,
|
|
156
|
+
status: result.installed || !configured ? 'pass' : 'warn',
|
|
157
|
+
message: result.installed
|
|
158
|
+
? `${result.runtime} detected`
|
|
159
|
+
: configured
|
|
160
|
+
? `${result.runtime} is configured but not detected`
|
|
161
|
+
: `${result.runtime} is not installed or configured`,
|
|
162
|
+
...(!result.installed && configured
|
|
163
|
+
? { fix: `Install ${result.command} only if you intend to use this adapter.` }
|
|
164
|
+
: {}),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
for (const [runtime, candidates] of [
|
|
168
|
+
[
|
|
169
|
+
'claude',
|
|
170
|
+
Object.keys(RETIRED_CLAUDE_AGENT_HASHES).map((name) => path.join(projectDir, '.claude', 'agents', name)),
|
|
171
|
+
],
|
|
172
|
+
[
|
|
173
|
+
'cursor',
|
|
174
|
+
[
|
|
175
|
+
...RETIRED_CURSOR_WORKFLOW_RULES.map((name) => path.join(projectDir, '.cursor', 'rules', name)),
|
|
176
|
+
...RETIRED_CURSOR_AGENT_RULES.map((name) => path.join(projectDir, '.cursor', 'rules', 'agents', name)),
|
|
177
|
+
],
|
|
178
|
+
],
|
|
179
|
+
]) {
|
|
180
|
+
const leftovers = candidates.filter((target) => existsSync(target));
|
|
181
|
+
if (leftovers.length === 0)
|
|
182
|
+
continue;
|
|
183
|
+
diagnostics.push({
|
|
184
|
+
code: `runtime-${runtime}-legacy-agents`,
|
|
185
|
+
status: 'warn',
|
|
186
|
+
message: `Potential legacy ${runtime} adapter paths remain: ${leftovers.join(', ')}`,
|
|
187
|
+
fix: `Run \`${CLI_COMMAND} setup --runtime ${runtime} --scope project --dry-run\`, then rerun without --dry-run to back up and retire recognized generated files. Modified or unknown files are preserved; review those manually.`,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const pipeline = resolvePipelinePackage(false);
|
|
191
|
+
diagnostics.push({
|
|
192
|
+
code: 'pipeline-package',
|
|
193
|
+
status: pipeline ? 'pass' : 'warn',
|
|
194
|
+
message: pipeline
|
|
195
|
+
? `Optional deterministic pipeline utilities ${pipeline.version}`
|
|
196
|
+
: 'Optional deterministic pipeline utilities are not installed',
|
|
197
|
+
...(!pipeline
|
|
198
|
+
? { fix: 'Install optional dependencies only if you need pipeline utilities.' }
|
|
199
|
+
: {}),
|
|
200
|
+
});
|
|
201
|
+
const registry = listRuntimeAdapters();
|
|
202
|
+
for (const adapter of registry) {
|
|
203
|
+
const detected = detectedRuntimes.find((entry) => entry.runtime === adapter.id)?.installed;
|
|
204
|
+
const configured = installed?.runtimes.includes(adapter.id) ?? false;
|
|
205
|
+
if (!detected && !configured)
|
|
206
|
+
continue;
|
|
207
|
+
const mode = adapter.capabilities?.interactiveQuestions;
|
|
208
|
+
diagnostics.push({
|
|
209
|
+
code: `runtime-interaction-${adapter.id}`,
|
|
210
|
+
status: mode ? 'pass' : 'fail',
|
|
211
|
+
message: mode
|
|
212
|
+
? `${adapter.id} uses ${mode} host-native questions`
|
|
213
|
+
: `${adapter.id} does not declare a host-native question capability`,
|
|
214
|
+
...(!mode ? { fix: 'Reinstall the OpenPlanr utility CLI host package.' } : {}),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const counts = {
|
|
219
|
+
claude: new Set(bundledSkillAssets('claude-code').map(({ skillId }) => skillId)).size,
|
|
220
|
+
codex: new Set(bundledSkillAssets('codex').map(({ skillId }) => skillId)).size,
|
|
221
|
+
cursor: new Set(bundledSkillAssets('cursor').map(({ skillId }) => skillId)).size,
|
|
222
|
+
};
|
|
223
|
+
const uniqueCounts = new Set(Object.values(counts));
|
|
224
|
+
const current = uniqueCounts.size === 1 && counts.claude > 0;
|
|
225
|
+
diagnostics.push({
|
|
226
|
+
code: 'host-skill-packages',
|
|
227
|
+
status: current ? 'pass' : 'fail',
|
|
228
|
+
message: current
|
|
229
|
+
? `Claude Code, Codex, and Cursor each expose all ${counts.claude} host-native skills`
|
|
230
|
+
: `Host skill package membership drifted (${JSON.stringify(counts)})`,
|
|
231
|
+
...(!current ? { fix: 'Reinstall the CLI or regenerate its host packages.' } : {}),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
catch (cause) {
|
|
235
|
+
diagnostics.push({
|
|
236
|
+
code: 'host-skill-packages',
|
|
237
|
+
status: 'fail',
|
|
238
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
239
|
+
fix: 'Reinstall the CLI or regenerate its host packages.',
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
const claudeManagedAtUserScope = Object.values(state.projects).some((project) => project.runtimes.includes('claude-code') &&
|
|
243
|
+
['user', 'both'].includes(project.runtimeScopes?.['claude-code'] ??
|
|
244
|
+
inferRuntimeScope(project.ownedFiles, 'claude-code')));
|
|
245
|
+
const pluginSkillDocuments = [];
|
|
246
|
+
const claudeDetected = Boolean(options.claudeCommandRunner) ||
|
|
247
|
+
(detectedRuntimes.find((runtime) => runtime.runtime === 'claude-code')?.installed ?? false);
|
|
248
|
+
if (claudeDetected && claudeManagedAtUserScope) {
|
|
249
|
+
const inspection = inspectBundledClaudePluginIntegration(bundledHostRoot('claude'), options.claudeCommandRunner);
|
|
250
|
+
if (inspection.error) {
|
|
251
|
+
diagnostics.push({
|
|
252
|
+
code: 'runtime-claude-plugins',
|
|
253
|
+
status: 'fail',
|
|
254
|
+
message: `Claude plugin state could not be inspected: ${inspection.error}`,
|
|
255
|
+
fix: `Update Claude Code, then run \`${CLI_COMMAND} runtime update claude --scope user\`.`,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
for (const root of [
|
|
260
|
+
...inspection.plugins.flatMap((plugin) => plugin.installPath ?? []),
|
|
261
|
+
...inspection.duplicatePluginPaths,
|
|
262
|
+
]) {
|
|
263
|
+
pluginSkillDocuments.push(...pluginDocuments('claude-code', root));
|
|
264
|
+
}
|
|
265
|
+
const drift = inspection.plugins.filter((plugin) => !plugin.installed ||
|
|
266
|
+
!plugin.enabled ||
|
|
267
|
+
!plugin.identityValid ||
|
|
268
|
+
plugin.installedVersion !== plugin.expectedVersion);
|
|
269
|
+
diagnostics.push({
|
|
270
|
+
code: 'runtime-claude-plugins',
|
|
271
|
+
status: inspection.ready ? 'pass' : 'fail',
|
|
272
|
+
message: inspection.ready
|
|
273
|
+
? `Claude plugins match compatibility versions (${inspection.plugins
|
|
274
|
+
.map((plugin) => `${plugin.name} ${plugin.expectedVersion}`)
|
|
275
|
+
.join(', ')})`
|
|
276
|
+
: `Claude plugin drift detected: ${drift
|
|
277
|
+
.map((plugin) => `${plugin.id} ${plugin.installedVersion ?? 'missing'} → ${plugin.expectedVersion}${!plugin.identityValid ? ' (invalid identity)' : ''}`)
|
|
278
|
+
.join(', ')}`,
|
|
279
|
+
...(!inspection.ready
|
|
280
|
+
? {
|
|
281
|
+
fix: `Run \`${CLI_COMMAND} runtime update claude --scope user\` and restart Claude Code.`,
|
|
282
|
+
}
|
|
283
|
+
: {}),
|
|
284
|
+
});
|
|
285
|
+
if (inspection.staleMarketplacePath) {
|
|
286
|
+
diagnostics.push({
|
|
287
|
+
code: 'runtime-claude-marketplace-path',
|
|
288
|
+
status: 'fail',
|
|
289
|
+
message: `The local OpenPlanr Claude marketplace points to another install: ${inspection.staleMarketplacePath}, not ${bundledHostRoot('claude')}`,
|
|
290
|
+
fix: `Run \`${CLI_COMMAND} setup --runtime claude --scope user\` to point it at this install.`,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
if (inspection.legacyPluginIds.length > 0) {
|
|
294
|
+
diagnostics.push({
|
|
295
|
+
code: 'runtime-claude-legacy-plugin',
|
|
296
|
+
status: 'warn',
|
|
297
|
+
message: `Legacy Claude plugin installation detected: ${inspection.legacyPluginIds.join(', ')}`,
|
|
298
|
+
fix: 'Verify `planr@openplanr-local`, then remove the legacy plugin from Claude Code.',
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
if (inspection.duplicatePluginIds.length > 0) {
|
|
302
|
+
diagnostics.push({
|
|
303
|
+
code: 'runtime-claude-duplicate-plugin',
|
|
304
|
+
status: 'warn',
|
|
305
|
+
...duplicateClaudePluginDiagnostic(inspection),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const expectsProjectLock = installed?.ownedFiles.some((file) => file.scope === 'project') ?? false;
|
|
311
|
+
const lock = path.join(projectDir, PLANNING_FOLDER, 'runtime-lock.json');
|
|
312
|
+
if (!existsSync(lock)) {
|
|
313
|
+
// User-scope setup is recorded under the directory it ran in but serves every project.
|
|
314
|
+
const managed = Boolean(installed) ||
|
|
315
|
+
Object.values(state.projects).some((project) => project.runtimes.some((runtime) => projectUsesUserRuntime(project, runtime)));
|
|
316
|
+
const lockStatus = expectsProjectLock ? 'warn' : managed ? 'pass' : 'warn';
|
|
317
|
+
diagnostics.push({
|
|
318
|
+
code: 'runtime-lock',
|
|
319
|
+
status: lockStatus,
|
|
320
|
+
message: expectsProjectLock
|
|
321
|
+
? 'Project runtime lock missing'
|
|
322
|
+
: managed
|
|
323
|
+
? 'User-scope setup does not require a project runtime lock'
|
|
324
|
+
: 'No managed runtime setup found for this directory',
|
|
325
|
+
...(expectsProjectLock
|
|
326
|
+
? { fix: `Run \`${CLI_COMMAND} setup --scope project\`.` }
|
|
327
|
+
: !managed
|
|
328
|
+
? { fix: `Run \`${CLI_COMMAND} setup\`.` }
|
|
329
|
+
: {}),
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
try {
|
|
334
|
+
const value = JSON.parse(readFileSync(lock, 'utf8'));
|
|
335
|
+
const errors = validateRuntimeLockContract(value);
|
|
336
|
+
if (errors.length) {
|
|
337
|
+
throw new RuntimeManagerError('E_RUNTIME_LOCK_INVALID', 'Project runtime lock does not match the supported contract.');
|
|
338
|
+
}
|
|
339
|
+
lockedAdapters = value.adapters;
|
|
340
|
+
const cliVersion = readOpenPlanrVersion();
|
|
341
|
+
const cliDrift = value.components?.cli !== cliVersion;
|
|
342
|
+
const componentDrift = cliDrift ||
|
|
343
|
+
(pipeline && value.components?.pipeline !== pipeline.version) ||
|
|
344
|
+
value.components?.skills !== readRegistry().pluginVersion;
|
|
345
|
+
const expectedDigest = runtimeLockManifestDigest({
|
|
346
|
+
protocolVersion: value.protocolVersion,
|
|
347
|
+
pipelineVersion: value.components?.pipeline,
|
|
348
|
+
adapters: value.adapters,
|
|
349
|
+
skillModes: value.skillModes,
|
|
350
|
+
});
|
|
351
|
+
const digestDrift = value.manifestDigest !== expectedDigest;
|
|
352
|
+
const registry = listRuntimeAdapters();
|
|
353
|
+
const adapterDrift = (value.adapters ?? []).some((locked) => {
|
|
354
|
+
const current = registry.find((adapter) => adapter.id === locked.runtime);
|
|
355
|
+
return (!current ||
|
|
356
|
+
current.version !== locked.version ||
|
|
357
|
+
current.capabilityLevel !== locked.capabilityLevel);
|
|
358
|
+
});
|
|
359
|
+
// An OpenPlanr upgrade advances the CLI version the lock recorded.
|
|
360
|
+
// When the CLI component trails the installed build and nothing that
|
|
361
|
+
// governs runtime dispatch (runtime adapters, manifest digest)
|
|
362
|
+
// diverged, the lock is simply behind an expected upgrade — surface it as
|
|
363
|
+
// an informational `warn`, not a `fail` implying the board is broken. A
|
|
364
|
+
// digest/adapter drift, or a component drift that does not include the CLI
|
|
365
|
+
// (for example a pinned obsolete skill bundle), remains a genuine `fail`.
|
|
366
|
+
// The warn/fail derivation lives in the single `classifyComponentDrift`
|
|
367
|
+
// helper so `openplanr upgrade status` reuses this exact distinction rather
|
|
368
|
+
// than re-deriving it; a digest/adapter drift is doctor's
|
|
369
|
+
// flavour of an incompatible tuple.
|
|
370
|
+
const { drift, genuineDrift, upgradeOnlyDrift, status } = classifyComponentDrift({
|
|
371
|
+
cliDrift,
|
|
372
|
+
componentDrift: Boolean(componentDrift),
|
|
373
|
+
incompatibleDrift: digestDrift || adapterDrift,
|
|
374
|
+
});
|
|
375
|
+
diagnostics.push({
|
|
376
|
+
code: drift ? 'lock-drift' : 'runtime-lock',
|
|
377
|
+
status,
|
|
378
|
+
message: genuineDrift
|
|
379
|
+
? `Runtime lock drift detected (components: ${componentDrift}, digest: ${digestDrift}, adapters: ${adapterDrift})`
|
|
380
|
+
: upgradeOnlyDrift
|
|
381
|
+
? `Runtime lock component versions trail an OpenPlanr upgrade (components: ${componentDrift}); this is expected after upgrading and does not affect runtime execution`
|
|
382
|
+
: drift
|
|
383
|
+
? `Runtime lock drift detected (components: ${componentDrift}, digest: ${digestDrift}, adapters: ${adapterDrift})`
|
|
384
|
+
: 'Project runtime lock matches installed component versions',
|
|
385
|
+
...(drift
|
|
386
|
+
? {
|
|
387
|
+
fix: upgradeOnlyDrift
|
|
388
|
+
? `Run \`${CLI_COMMAND} runtime update all --scope project\` to refresh the lock to the upgraded component versions.`
|
|
389
|
+
: `Run \`${CLI_COMMAND} runtime update all --scope project\`.`,
|
|
390
|
+
}
|
|
391
|
+
: {}),
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
diagnostics.push({
|
|
396
|
+
code: 'runtime-lock-invalid',
|
|
397
|
+
status: 'fail',
|
|
398
|
+
message: 'Project runtime lock is not valid JSON or does not match the supported contract',
|
|
399
|
+
fix: `Run \`${CLI_COMMAND} setup --scope project\` after reviewing the existing lock.`,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (installed) {
|
|
404
|
+
if (lockedAdapters) {
|
|
405
|
+
const lockedState = lockedAdapters
|
|
406
|
+
.map((adapter) => `${adapter.runtime}:${adapter.installScope}`)
|
|
407
|
+
.sort();
|
|
408
|
+
const installedState = installed.runtimes
|
|
409
|
+
.map((runtime) => `${runtime}:${installed.runtimeScopes?.[runtime] ?? inferRuntimeScope(installed.ownedFiles, runtime)}`)
|
|
410
|
+
.sort();
|
|
411
|
+
const stateDrift = JSON.stringify(lockedState) !== JSON.stringify(installedState);
|
|
412
|
+
diagnostics.push({
|
|
413
|
+
code: stateDrift ? 'lock-state-drift' : 'lock-state',
|
|
414
|
+
status: stateDrift ? 'fail' : 'pass',
|
|
415
|
+
message: stateDrift
|
|
416
|
+
? 'Runtime lock adapters do not match the managed installation state'
|
|
417
|
+
: 'Runtime lock adapters match the managed installation state',
|
|
418
|
+
...(stateDrift
|
|
419
|
+
? { fix: `Run \`${CLI_COMMAND} setup --dry-run\`, then approve the repair.` }
|
|
420
|
+
: {}),
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
else if (lockedAdapters?.length) {
|
|
425
|
+
diagnostics.push({
|
|
426
|
+
code: 'runtime-state-missing',
|
|
427
|
+
status: 'warn',
|
|
428
|
+
message: 'The project has a runtime lock but this machine has no managed adapter state',
|
|
429
|
+
fix: `Run \`${CLI_COMMAND} setup\` to install the locked runtime adapters on this machine.`,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
const globallyOwned = Object.values(state.userBundles ?? {}).flatMap((bundle) => bundle?.ownedFiles ?? []);
|
|
433
|
+
const managedFiles = [
|
|
434
|
+
...(installed?.ownedFiles ?? []),
|
|
435
|
+
...globallyOwned.filter((file, index, files) => files.findIndex((candidate) => candidate.target === file.target) === index),
|
|
436
|
+
];
|
|
437
|
+
const managedFileDiagnostic = diagnoseManagedRuntimeFiles(managedFiles, ownershipHash);
|
|
438
|
+
if (managedFileDiagnostic)
|
|
439
|
+
diagnostics.push(managedFileDiagnostic);
|
|
440
|
+
const commandDiagnostic = diagnoseRetiredCommandSkills([...managedFiles, ...pluginSkillDocuments], options.commandRoots ?? [], managedBlockBytes);
|
|
441
|
+
if (commandDiagnostic)
|
|
442
|
+
diagnostics.push(commandDiagnostic);
|
|
443
|
+
const verifiedPackages = new Map();
|
|
444
|
+
const closureFailures = [];
|
|
445
|
+
for (const file of managedFiles) {
|
|
446
|
+
try {
|
|
447
|
+
if (path.basename(file.target) === 'openplanr.install.json')
|
|
448
|
+
inspectRuntimeLocator(path.dirname(file.target), verifiedPackages);
|
|
449
|
+
else if (file.runtime === 'cursor' && file.target.endsWith('.mdc'))
|
|
450
|
+
inspectThinRule(file.target, verifiedPackages);
|
|
451
|
+
}
|
|
452
|
+
catch (cause) {
|
|
453
|
+
closureFailures.push(`${file.target}: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
if (verifiedPackages.size || closureFailures.length)
|
|
457
|
+
diagnostics.push({
|
|
458
|
+
code: 'runtime-package-custody',
|
|
459
|
+
status: closureFailures.length ? 'fail' : 'pass',
|
|
460
|
+
message: closureFailures.length
|
|
461
|
+
? `Pinned runtime package verification failed: ${closureFailures.join('; ')}`
|
|
462
|
+
: 'Pinned runtime packages match their complete content inventories',
|
|
463
|
+
...(closureFailures.length
|
|
464
|
+
? {
|
|
465
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview the repair; changed package files are backed up before anything is replaced.`,
|
|
466
|
+
}
|
|
467
|
+
: {}),
|
|
468
|
+
});
|
|
469
|
+
let codexDiscovery;
|
|
470
|
+
const codexBundle = state.userBundles?.codex;
|
|
471
|
+
if (options.codexCommandRunner ||
|
|
472
|
+
detectedRuntimes.some((runtime) => runtime.runtime === 'codex' && runtime.installed)) {
|
|
473
|
+
const configuredMode = codexBundle?.installMode ?? installed?.skillModes?.codex ?? 'direct';
|
|
474
|
+
const inspection = inspectCodexPluginIntegration(bundledHostRoot('openai'), configuredMode, configuredMode, options.codexCommandRunner);
|
|
475
|
+
codexDiscovery = inspectCodexSkillDiscovery({
|
|
476
|
+
hostPackageRoot: bundledHostRoot('openai'),
|
|
477
|
+
projectDir,
|
|
478
|
+
mode: configuredMode,
|
|
479
|
+
packageVersion: readOpenPlanrVersion(),
|
|
480
|
+
ownershipStatePath: statePath(),
|
|
481
|
+
activePlugin: inspection.installed
|
|
482
|
+
? { id: inspection.pluginId, version: inspection.installedVersion }
|
|
483
|
+
: undefined,
|
|
484
|
+
});
|
|
485
|
+
diagnostics.push({
|
|
486
|
+
code: 'runtime-codex-profile',
|
|
487
|
+
status: 'pass',
|
|
488
|
+
message: `Effective Codex profile: ${codexDiscovery.effectiveHome}; ownership: ${statePath()}`,
|
|
489
|
+
});
|
|
490
|
+
const stale = codexDiscovery.skills.filter((skill) => skill.resolution === 'stale');
|
|
491
|
+
const ambiguous = codexDiscovery.skills.filter((skill) => skill.resolution === 'ambiguous');
|
|
492
|
+
const missing = codexDiscovery.skills.filter((skill) => skill.resolution === 'missing');
|
|
493
|
+
const unreadable = codexDiscovery.skills.filter((skill) => skill.resolution === 'unreadable');
|
|
494
|
+
const oldCaches = codexDiscovery.skills.filter((skill) => skill.copies.some((copy) => copy.kind === 'plugin-cache' && !copy.current && copy.enabled !== true));
|
|
495
|
+
if (stale.length ||
|
|
496
|
+
ambiguous.length ||
|
|
497
|
+
missing.length ||
|
|
498
|
+
unreadable.length ||
|
|
499
|
+
codexDiscovery.issues.length) {
|
|
500
|
+
diagnostics.push({
|
|
501
|
+
code: 'runtime-codex-skill-resolution',
|
|
502
|
+
status: 'warn',
|
|
503
|
+
message: `${stale.length} stale skill(s), ${missing.length} missing skill(s), ${unreadable.length} unreadable skill(s), ${ambiguous.length} multiple discovery path(s), ${oldCaches.length} skill(s) with inactive cached copies. CLI package ${codexDiscovery.packageVersion}; per-skill and Protocol versions, paths and closure hashes are in doctor --json. An already-open session may retain earlier skills.`,
|
|
504
|
+
fix: `Run \`${CLI_COMMAND} setup --runtime codex --dry-run\` in this profile, review the installer repair, then restart Codex. Do not delete plugin caches by hand.`,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
if (oldCaches.length > 0) {
|
|
508
|
+
diagnostics.push({
|
|
509
|
+
code: 'runtime-codex-cache-history',
|
|
510
|
+
status: 'pass',
|
|
511
|
+
message: `${oldCaches.length} skill(s) have inactive cached copies. These do not imply enabled duplicates; restart Codex if an open session still shows earlier skills.`,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
const directSkillFiles = codexBundle?.ownedFiles.filter((file) => pathIsWithin(file.target, codexSkillsRoot()))
|
|
515
|
+
.length ?? 0;
|
|
516
|
+
if (inspection.error) {
|
|
517
|
+
diagnostics.push({
|
|
518
|
+
code: 'runtime-codex-plugin',
|
|
519
|
+
status: 'warn',
|
|
520
|
+
message: `Codex plugin state could not be inspected: ${inspection.error}`,
|
|
521
|
+
fix: `Run \`${CLI_COMMAND} setup --runtime codex --dry-run\` for an exact repair preview.`,
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
else {
|
|
525
|
+
diagnostics.push({
|
|
526
|
+
code: 'runtime-codex-install-mode',
|
|
527
|
+
status: inspection.ready ? 'pass' : 'warn',
|
|
528
|
+
message: inspection.ready
|
|
529
|
+
? `Codex ${configuredMode} discovery is current`
|
|
530
|
+
: inspection.operations.length > 0
|
|
531
|
+
? `Codex ${configuredMode} discovery needs repair: ${inspection.operations.map((operation) => operation.description).join('; ')}`
|
|
532
|
+
: `Codex ${configuredMode} discovery has conflicting enabled registrations: ${inspection.duplicates.join(', ')}`,
|
|
533
|
+
...(inspection.ready
|
|
534
|
+
? {}
|
|
535
|
+
: {
|
|
536
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview repairs while preserving your saved discovery choice.`,
|
|
537
|
+
}),
|
|
538
|
+
});
|
|
539
|
+
if ((directSkillFiles > 0 && inspection.installed) || inspection.duplicates.length > 0) {
|
|
540
|
+
diagnostics.push({
|
|
541
|
+
code: 'runtime-codex-duplicate-discovery',
|
|
542
|
+
status: 'warn',
|
|
543
|
+
message: `Codex has duplicate OpenPlanr discovery ownership${inspection.duplicates.length ? `: ${inspection.duplicates.join(', ')}` : ' across direct skills and the unified plugin'}`,
|
|
544
|
+
fix: 'Choose direct or unified-plugin mode, preview setup, and use --replace-managed only for manifest-owned content.',
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
const accidentalHomeFiles = await previewHomeProjectCleanup();
|
|
550
|
+
if (accidentalHomeFiles.length > 0) {
|
|
551
|
+
diagnostics.push({
|
|
552
|
+
code: 'home-project-install',
|
|
553
|
+
status: 'warn',
|
|
554
|
+
message: `${accidentalHomeFiles.length} project-scoped managed file(s) were installed in the home directory`,
|
|
555
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview and remove only recorded OpenPlanr-owned project content.`,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
const provenanceDiagnostic = diagnoseRuntimeProvenance(projectDir);
|
|
559
|
+
if (provenanceDiagnostic)
|
|
560
|
+
diagnostics.push(provenanceDiagnostic);
|
|
561
|
+
if (pipeline) {
|
|
562
|
+
// The child gets the resolved home only, so it does not repeat the OPENPLANR_HOME warning.
|
|
563
|
+
const { OPENPLANR_HOME: _deprecatedHome, ...inheritedEnvironment } = process.env;
|
|
564
|
+
const result = spawnSync(process.execPath, [
|
|
565
|
+
path.join(pipeline.root, 'scripts', 'doctor.mjs'),
|
|
566
|
+
'--json',
|
|
567
|
+
...(options.pipelineRepair === 'preview' ? ['--repair-preview'] : []),
|
|
568
|
+
...(options.pipelineRepair === 'apply' ? ['--fix'] : []),
|
|
569
|
+
], {
|
|
570
|
+
cwd: projectDir,
|
|
571
|
+
encoding: 'utf8',
|
|
572
|
+
windowsHide: true,
|
|
573
|
+
env: { ...inheritedEnvironment, PLANR_HOME: planrHome() },
|
|
574
|
+
});
|
|
575
|
+
try {
|
|
576
|
+
const report = JSON.parse(result.stdout);
|
|
577
|
+
repairs.push(...(report.repairs ?? []));
|
|
578
|
+
for (const check of report.checks ?? []) {
|
|
579
|
+
if (check.status === 'ok')
|
|
580
|
+
continue;
|
|
581
|
+
diagnostics.push({
|
|
582
|
+
code: `pipeline-${check.id}`,
|
|
583
|
+
status: check.status,
|
|
584
|
+
message: check.message,
|
|
585
|
+
...(check.fix ? { fix: check.fix } : {}),
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
catch {
|
|
590
|
+
diagnostics.push({
|
|
591
|
+
code: 'pipeline-doctor-unavailable',
|
|
592
|
+
status: 'warn',
|
|
593
|
+
message: 'The pipeline doctor did not return valid JSON',
|
|
594
|
+
fix: `Run \`${CLI_COMMAND} doctor\` for direct diagnostics.`,
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const fail = diagnostics.some((item) => item.status === 'fail');
|
|
599
|
+
return { ok: !fail, diagnostics, repairs, ...(codexDiscovery ? { codexDiscovery } : {}) };
|
|
600
|
+
}
|
|
121
601
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/runtime-manager/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/runtime-manager/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class RuntimeManagerError extends Error {
|
|
2
|
+
code: string;
|
|
3
|
+
recovery?: string | undefined;
|
|
4
|
+
constructor(code: string, message: string, recovery?: string | undefined);
|
|
5
|
+
toJSON(): {
|
|
6
|
+
ok: boolean;
|
|
7
|
+
code: string;
|
|
8
|
+
problem: string;
|
|
9
|
+
recovery: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-manager/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;IAEnC,IAAI,EAAE,MAAM;IAEZ,QAAQ,CAAC,EAAE,MAAM;gBAFjB,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,QAAQ,CAAC,EAAE,MAAM,YAAA;IAM1B,MAAM;;;;;;CAGP"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export class RuntimeManagerError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
recovery;
|
|
4
|
+
constructor(code, message, recovery) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.recovery = recovery;
|
|
8
|
+
this.name = 'RuntimeManagerError';
|
|
9
|
+
}
|
|
10
|
+
toJSON() {
|
|
11
|
+
return { ok: false, code: this.code, problem: this.message, recovery: this.recovery };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/services/runtime-manager/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAEnC;IAEA;IAHT,YACS,IAAY,EACnB,OAAe,EACR,QAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QAEZ,aAAQ,GAAR,QAAQ,CAAS;QAGxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -49,5 +49,12 @@ export declare function migrateLegacyGlobalRuntimeState(state: RuntimeState, dep
|
|
|
49
49
|
projectKey: (projectDir: string) => string;
|
|
50
50
|
conflict: StateConflict;
|
|
51
51
|
}): RuntimeState;
|
|
52
|
+
export declare function projectUsesUserRuntime(project: RuntimeState['projects'][string], runtime: RuntimeId, nativeHome?: string): boolean;
|
|
53
|
+
export declare function inferRuntimeScope(files: OwnedFile[], runtime: RuntimeId, nativeHome?: string): InstallScope;
|
|
54
|
+
/** One shared ownership file and setup lock serialize all native profiles. */
|
|
55
|
+
export declare function runtimeStateBytes(state: RuntimeState): Buffer;
|
|
56
|
+
export declare function decodeStoredRuntimeState(value: unknown, allowLegacyProjectKeys?: boolean): RuntimeState;
|
|
57
|
+
export declare function loadState(): Promise<RuntimeState>;
|
|
58
|
+
export declare function previewHomeProjectCleanup(): Promise<string[]>;
|
|
52
59
|
export {};
|
|
53
60
|
//# sourceMappingURL=global-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-state.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-manager/global-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"global-state.d.ts","sourceRoot":"","sources":["../../../src/services/runtime-manager/global-state.ts"],"names":[],"mappings":"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"}
|