openplanr 2.2641.0 → 2.2641.1
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 +13 -0
- package/README.md +14 -14
- package/bin/openplanr.js +13 -0
- package/bin/planr.js +5 -11
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +5 -4
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/checklist.d.ts.map +1 -1
- package/dist/cli/commands/checklist.js +4 -3
- package/dist/cli/commands/checklist.js.map +1 -1
- package/dist/cli/commands/company.d.ts.map +1 -1
- package/dist/cli/commands/company.js +3 -2
- package/dist/cli/commands/company.js.map +1 -1
- package/dist/cli/commands/context.d.ts +1 -1
- package/dist/cli/commands/context.js +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +11 -5
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/export.d.ts +1 -1
- package/dist/cli/commands/export.js +1 -1
- package/dist/cli/commands/github.d.ts +1 -1
- package/dist/cli/commands/github.d.ts.map +1 -1
- package/dist/cli/commands/github.js +9 -8
- package/dist/cli/commands/github.js.map +1 -1
- package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
- package/dist/cli/commands/init-deterministic.js +2 -1
- package/dist/cli/commands/init-deterministic.js.map +1 -1
- package/dist/cli/commands/linear.d.ts +2 -2
- package/dist/cli/commands/linear.d.ts.map +1 -1
- package/dist/cli/commands/linear.js +28 -27
- package/dist/cli/commands/linear.js.map +1 -1
- package/dist/cli/commands/operate/registrars/index.d.ts +1 -1
- package/dist/cli/commands/operate/registrars/index.d.ts.map +1 -1
- package/dist/cli/commands/operate/registrars/index.js +1 -1
- package/dist/cli/commands/operate/registrars/index.js.map +1 -1
- package/dist/cli/commands/operate/render.d.ts.map +1 -1
- package/dist/cli/commands/operate/render.js +2 -1
- package/dist/cli/commands/operate/render.js.map +1 -1
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +2 -1
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
- package/dist/cli/commands/planning-artifacts.js +2 -1
- package/dist/cli/commands/planning-artifacts.js.map +1 -1
- package/dist/cli/commands/quick/interaction.d.ts +1 -1
- package/dist/cli/commands/quick/interaction.d.ts.map +1 -1
- package/dist/cli/commands/quick/interaction.js +1 -1
- package/dist/cli/commands/quick/interaction.js.map +1 -1
- package/dist/cli/commands/quick/project.d.ts +1 -1
- package/dist/cli/commands/quick/project.d.ts.map +1 -1
- package/dist/cli/commands/quick/project.js +1 -1
- package/dist/cli/commands/quick/project.js.map +1 -1
- package/dist/cli/commands/report-linter.d.ts +1 -1
- package/dist/cli/commands/report-linter.js +1 -1
- package/dist/cli/commands/report.d.ts +1 -1
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +5 -4
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +5 -4
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +11 -11
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +34 -33
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/cli/commands/sprint-refinement.d.ts.map +1 -1
- package/dist/cli/commands/sprint-refinement.js +2 -1
- package/dist/cli/commands/sprint-refinement.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +2 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/story/interaction.d.ts +1 -1
- package/dist/cli/commands/story/interaction.d.ts.map +1 -1
- package/dist/cli/commands/story/interaction.js +1 -1
- package/dist/cli/commands/story/interaction.js.map +1 -1
- package/dist/cli/commands/story/project.d.ts +1 -1
- package/dist/cli/commands/story/project.d.ts.map +1 -1
- package/dist/cli/commands/story/project.js +1 -1
- package/dist/cli/commands/story/project.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +1 -1
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/commands/sync.js +3 -2
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/commands/template.d.ts +1 -1
- package/dist/cli/commands/template.js +10 -10
- package/dist/cli/commands/template.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -1
- package/dist/cli/commands/update.js +1 -1
- package/dist/cli/commands/upgrade.d.ts +1 -1
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +3 -2
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/voice.d.ts +1 -1
- package/dist/cli/commands/voice.js +1 -1
- package/dist/cli/index.js +6 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-D7R6tnlX.js → index-DGyC7RDz.js} +115 -115
- package/dist/dashboard/assets/index-DGyC7RDz.js.map +1 -0
- package/dist/dashboard/dashboard-manifest.json +10 -10
- package/dist/dashboard/index.html +1 -1
- package/dist/generators/cursor-generator.js +1 -1
- package/dist/generators/cursor-generator.js.map +1 -1
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +2 -1
- package/dist/models/schema.js.map +1 -1
- package/dist/models/types.d.ts +12 -12
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/artifact-service.d.ts +1 -1
- package/dist/services/artifact-service.js +2 -2
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/audit-log-service.d.ts.map +1 -1
- package/dist/services/audit-log-service.js +2 -1
- package/dist/services/audit-log-service.js.map +1 -1
- package/dist/services/claude-plugin-service.d.ts +3 -1
- package/dist/services/claude-plugin-service.d.ts.map +1 -1
- package/dist/services/claude-plugin-service.js +9 -5
- 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 +3 -2
- package/dist/services/codex-plugin-service.js.map +1 -1
- package/dist/services/company-auth-service.d.ts.map +1 -1
- package/dist/services/company-auth-service.js +2 -1
- package/dist/services/company-auth-service.js.map +1 -1
- package/dist/services/company-sync-service.d.ts.map +1 -1
- package/dist/services/company-sync-service.js +9 -8
- package/dist/services/company-sync-service.js.map +1 -1
- package/dist/services/config-service.d.ts +6 -1
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +19 -4
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/connectors/checkpoint-custody.d.ts.map +1 -1
- package/dist/services/connectors/checkpoint-custody.js +4 -1
- package/dist/services/connectors/checkpoint-custody.js.map +1 -1
- package/dist/services/credentials-service.js +1 -1
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/delivery-status-service.d.ts +1 -1
- package/dist/services/delivery-status-service.d.ts.map +1 -1
- package/dist/services/delivery-status-service.js +3 -2
- package/dist/services/delivery-status-service.js.map +1 -1
- package/dist/services/diagram-authoring-service.d.ts.map +1 -1
- package/dist/services/diagram-authoring-service.js +2 -1
- package/dist/services/diagram-authoring-service.js.map +1 -1
- package/dist/services/diagram-pipeline-service.d.ts.map +1 -1
- package/dist/services/diagram-pipeline-service.js +6 -5
- package/dist/services/diagram-pipeline-service.js.map +1 -1
- package/dist/services/distribution-service.d.ts.map +1 -1
- package/dist/services/distribution-service.js +4 -3
- package/dist/services/distribution-service.js.map +1 -1
- package/dist/services/github-service.d.ts +1 -1
- package/dist/services/github-service.d.ts.map +1 -1
- package/dist/services/github-service.js +7 -6
- package/dist/services/github-service.js.map +1 -1
- package/dist/services/graph-integrity.d.ts +1 -1
- package/dist/services/graph-integrity.js +1 -1
- package/dist/services/landing/landing-service.d.ts.map +1 -1
- package/dist/services/landing/landing-service.js +4 -1
- package/dist/services/landing/landing-service.js.map +1 -1
- package/dist/services/landing/receipt-custody.d.ts.map +1 -1
- package/dist/services/landing/receipt-custody.js +3 -2
- package/dist/services/landing/receipt-custody.js.map +1 -1
- package/dist/services/linear/errors.d.ts.map +1 -1
- package/dist/services/linear/errors.js +2 -1
- package/dist/services/linear/errors.js.map +1 -1
- package/dist/services/linear/plan-builders.d.ts +3 -3
- package/dist/services/linear/plan-builders.d.ts.map +1 -1
- package/dist/services/linear/plan-builders.js +2 -2
- package/dist/services/linear/strategy-context.d.ts.map +1 -1
- package/dist/services/linear/strategy-context.js +6 -5
- package/dist/services/linear/strategy-context.js.map +1 -1
- package/dist/services/linear-mapping-service.d.ts +1 -1
- package/dist/services/linear-mapping-service.d.ts.map +1 -1
- package/dist/services/linear-mapping-service.js +3 -2
- package/dist/services/linear-mapping-service.js.map +1 -1
- package/dist/services/linear-pull-service.d.ts +1 -1
- package/dist/services/linear-pull-service.d.ts.map +1 -1
- package/dist/services/linear-pull-service.js +10 -9
- package/dist/services/linear-pull-service.js.map +1 -1
- package/dist/services/linear-push-service.d.ts +2 -2
- package/dist/services/linear-push-service.d.ts.map +1 -1
- package/dist/services/linear-push-service.js +17 -16
- package/dist/services/linear-push-service.js.map +1 -1
- package/dist/services/linear-service.d.ts +2 -2
- package/dist/services/linear-service.js +2 -2
- package/dist/services/linear-team-service.d.ts.map +1 -1
- package/dist/services/linear-team-service.js +2 -1
- package/dist/services/linear-team-service.js.map +1 -1
- package/dist/services/operate/assignment-packet-service.d.ts.map +1 -1
- package/dist/services/operate/assignment-packet-service.js +2 -1
- package/dist/services/operate/assignment-packet-service.js.map +1 -1
- package/dist/services/operate/delivery-evidence.d.ts.map +1 -1
- package/dist/services/operate/delivery-evidence.js +2 -1
- package/dist/services/operate/delivery-evidence.js.map +1 -1
- package/dist/services/operate/measurement-schedule-service.d.ts.map +1 -1
- package/dist/services/operate/measurement-schedule-service.js +2 -1
- package/dist/services/operate/measurement-schedule-service.js.map +1 -1
- package/dist/services/operate/path-custody.d.ts.map +1 -1
- package/dist/services/operate/path-custody.js +2 -1
- package/dist/services/operate/path-custody.js.map +1 -1
- package/dist/services/operate/pinned-legacy-replay-runner.d.ts.map +1 -1
- package/dist/services/operate/pinned-legacy-replay-runner.js +3 -2
- package/dist/services/operate/pinned-legacy-replay-runner.js.map +1 -1
- package/dist/services/operate/planning-handoff-service.d.ts.map +1 -1
- package/dist/services/operate/planning-handoff-service.js +3 -2
- package/dist/services/operate/planning-handoff-service.js.map +1 -1
- package/dist/services/operate/project-transaction-lock.d.ts.map +1 -1
- package/dist/services/operate/project-transaction-lock.js +2 -1
- package/dist/services/operate/project-transaction-lock.js.map +1 -1
- package/dist/services/operate/repository-read-service.d.ts.map +1 -1
- package/dist/services/operate/repository-read-service.js +5 -4
- package/dist/services/operate/repository-read-service.js.map +1 -1
- package/dist/services/operate/screened-evidence-service.d.ts.map +1 -1
- package/dist/services/operate/screened-evidence-service.js +5 -4
- package/dist/services/operate/screened-evidence-service.js.map +1 -1
- package/dist/services/operate/storage-layout.d.ts.map +1 -1
- package/dist/services/operate/storage-layout.js +8 -7
- package/dist/services/operate/storage-layout.js.map +1 -1
- package/dist/services/operate/store.d.ts.map +1 -1
- package/dist/services/operate/store.js +7 -6
- package/dist/services/operate/store.js.map +1 -1
- package/dist/services/pipeline-package-service.js +1 -1
- package/dist/services/pipeline-package-service.js.map +1 -1
- package/dist/services/provenance-service.d.ts.map +1 -1
- package/dist/services/provenance-service.js +2 -1
- package/dist/services/provenance-service.js.map +1 -1
- package/dist/services/report-linter-service.js +1 -1
- package/dist/services/report-linter-service.js.map +1 -1
- package/dist/services/revise-cache-service.d.ts.map +1 -1
- package/dist/services/revise-cache-service.js +2 -1
- package/dist/services/revise-cache-service.js.map +1 -1
- package/dist/services/runtime-manager/doctor.d.ts +13 -0
- package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
- package/dist/services/runtime-manager/doctor.js +50 -3
- package/dist/services/runtime-manager/doctor.js.map +1 -1
- package/dist/services/runtime-manager/inventory.d.ts +1 -0
- package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
- package/dist/services/runtime-manager/inventory.js +3 -1
- package/dist/services/runtime-manager/inventory.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts +4 -2
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +52 -33
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/server-lifecycle-service.d.ts.map +1 -1
- package/dist/services/server-lifecycle-service.js +14 -9
- package/dist/services/server-lifecycle-service.js.map +1 -1
- package/dist/services/spec-service.d.ts +4 -4
- package/dist/services/spec-service.d.ts.map +1 -1
- package/dist/services/spec-service.js +9 -8
- package/dist/services/spec-service.js.map +1 -1
- package/dist/services/sprint-refinement-service.d.ts +6 -6
- package/dist/services/sprint-refinement-service.d.ts.map +1 -1
- package/dist/services/sprint-refinement-service.js +16 -16
- package/dist/services/sprint-refinement-service.js.map +1 -1
- package/dist/services/template-service.d.ts.map +1 -1
- package/dist/services/template-service.js +3 -1
- package/dist/services/template-service.js.map +1 -1
- package/dist/services/upgrade-offer-service.d.ts +2 -2
- package/dist/services/upgrade-offer-service.d.ts.map +1 -1
- package/dist/services/upgrade-offer-service.js +4 -3
- package/dist/services/upgrade-offer-service.js.map +1 -1
- package/dist/services/upgrade-report.d.ts +1 -1
- package/dist/services/upgrade-report.d.ts.map +1 -1
- package/dist/services/upgrade-report.js +5 -4
- package/dist/services/upgrade-report.js.map +1 -1
- package/dist/services/upgrade-service.d.ts +5 -5
- package/dist/services/upgrade-service.d.ts.map +1 -1
- package/dist/services/upgrade-service.js +14 -13
- package/dist/services/upgrade-service.js.map +1 -1
- package/dist/templates/backlog/backlog-item.md.hbs +1 -1
- package/dist/templates/checklists/agile-checklist.md.hbs +6 -6
- package/dist/templates/epics/epic.md.hbs +1 -1
- package/dist/templates/export/planning-report.html.hbs +1 -1
- package/dist/templates/export/planning-report.md.hbs +1 -1
- package/dist/templates/features/feature.md.hbs +1 -1
- package/dist/templates/guides/estimation.md.hbs +3 -12
- package/dist/templates/quick/quick-task.md.hbs +1 -1
- package/dist/templates/rules/cursor/create-epic.mdc.hbs +1 -1
- package/dist/templates/rules/cursor/create-features.mdc.hbs +1 -1
- package/dist/templates/rules/cursor/create-user-story.mdc.hbs +1 -1
- package/dist/templates/rules/cursor/openplanr.mdc.hbs +1 -1
- package/dist/templates/rules/shared/host-native-guidance.md.hbs +1 -1
- package/dist/templates/spec/spec-shaped.md.hbs +1 -1
- package/dist/templates/spec/spec.md.hbs +1 -1
- package/dist/templates/sprints/sprint-tasks.md.hbs +1 -1
- package/dist/templates/sprints/sprint.md.hbs +1 -1
- package/dist/templates/stories/user-story.md.hbs +1 -1
- package/dist/utils/constants.d.ts +8 -4
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +10 -4
- package/dist/utils/constants.js.map +1 -1
- package/docs/ARTIFACT_REVIEW.md +13 -13
- package/docs/CLI.md +249 -249
- package/docs/CROSS_RUNTIME_SETUP.md +33 -33
- package/docs/TROUBLESHOOTING.md +28 -28
- package/install.ps1 +2 -2
- package/install.sh +3 -3
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +2 -2
- 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 +47 -43
- package/lib/host-packages/claude/openplanr/README.md +7 -7
- package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +2 -2
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +81 -46
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +9 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +10 -3
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
- package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +12 -12
- package/lib/host-packages/claude/openplanr/skills/artifact/references/company-review.md +9 -9
- package/lib/host-packages/claude/openplanr/skills/artifact/references/design-sharing.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +3 -3
- package/lib/host-packages/claude/openplanr/skills/dashboard/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/references/team-review.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +4 -4
- package/lib/host-packages/claude/openplanr/skills/design-loop/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/team-review.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +4 -4
- package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/references/team-review.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +4 -4
- package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +15 -15
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-document.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-intent-to-ir.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +3 -3
- package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +9 -9
- package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +18 -16
- package/lib/host-packages/claude/openplanr/skills/land/SKILL.md +2 -2
- package/lib/host-packages/claude/openplanr/skills/plan/references/artifact-contract.md +5 -0
- package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +5 -0
- package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +12 -12
- package/lib/host-packages/claude/openplanr/skills/sprint/references/refinement-contract.md +5 -5
- package/lib/host-packages/claude/openplanr/skills/sprint/references/sprint-formats.md +8 -8
- package/lib/host-packages/claude/openplanr/skills/sprint/schemas/refinement.schema.json +3 -3
- package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +6 -6
- package/lib/host-packages/claude/openplanr/skills/sync/scripts/names.mjs +8 -0
- package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +3 -2
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +45 -41
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/company-review.md +9 -9
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/design-sharing.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +3 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +12 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-dashboard.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/team-review.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +4 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/team-review.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +4 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/team-review.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +4 -4
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-document.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-intent-to-ir.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +3 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +15 -15
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +18 -16
- package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +9 -9
- package/lib/host-packages/cursor/openplanr/rules/planr-land.mdc +2 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/artifact-contract.md +5 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +5 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/refinement-contract.md +5 -5
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/sprint-formats.md +8 -8
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint/schemas/refinement.schema.json +3 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +12 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/names.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +3 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +6 -6
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +81 -46
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +9 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +10 -3
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
- 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 +46 -42
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +81 -46
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +9 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +10 -3
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
- package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +12 -12
- package/lib/host-packages/openai/openplanr/skills/artifact/references/company-review.md +9 -9
- package/lib/host-packages/openai/openplanr/skills/artifact/references/design-sharing.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +3 -3
- package/lib/host-packages/openai/openplanr/skills/dashboard/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/references/team-review.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +4 -4
- package/lib/host-packages/openai/openplanr/skills/design-loop/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/team-review.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +4 -4
- package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/references/team-review.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +4 -4
- package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +15 -15
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-document.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-intent-to-ir.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +3 -3
- package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +9 -9
- package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +18 -16
- package/lib/host-packages/openai/openplanr/skills/land/SKILL.md +2 -2
- package/lib/host-packages/openai/openplanr/skills/plan/references/artifact-contract.md +5 -0
- package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +5 -0
- package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +12 -12
- package/lib/host-packages/openai/openplanr/skills/sprint/references/refinement-contract.md +5 -5
- package/lib/host-packages/openai/openplanr/skills/sprint/references/sprint-formats.md +8 -8
- package/lib/host-packages/openai/openplanr/skills/sprint/schemas/refinement.schema.json +3 -3
- package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +6 -6
- package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/sync/scripts/names.mjs +8 -0
- package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +3 -2
- package/lib/integrations.mjs +3 -2
- package/lib/names.d.mts +4 -0
- package/lib/names.mjs +8 -0
- package/lib/planning-folder.d.mts +14 -0
- package/lib/planning-folder.mjs +40 -0
- package/package.json +5 -5
- package/dist/dashboard/assets/index-D7R6tnlX.js.map +0 -1
- package/dist/templates/voice/standup.md.hbs +0 -20
- /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
- /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
- /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Runtime adapter manager behind `
|
|
2
|
+
* Runtime adapter manager behind `openplanr setup`, `openplanr doctor` and `openplanr runtime`: previews and
|
|
3
3
|
* applies project or user installs of the OpenPlanr skills for Claude Code, Codex and Cursor,
|
|
4
4
|
* records owned files in `<planrHome>/runtime/state.json` with per-project backups, and diagnoses
|
|
5
5
|
* drift. Entry points: `previewSetup`, `applySetup`, `rollbackRuntime`, `removeRuntime`,
|
|
@@ -10,20 +10,20 @@ import { createHash, randomUUID } from 'node:crypto';
|
|
|
10
10
|
import { existsSync, constants as fsConstants, lstatSync, readdirSync, readFileSync, realpathSync, } from 'node:fs';
|
|
11
11
|
import { mkdir, open, readFile, rename, rm, unlink, writeFile, } from 'node:fs/promises';
|
|
12
12
|
import path from 'node:path';
|
|
13
|
-
import { fileURLToPath } from 'node:url';
|
|
14
13
|
import { validateJson } from '../../lib/json-schema.mjs';
|
|
15
14
|
import { CLI_NODE_REMEDIATION, cliNodeVersionMessage, supportsCliNodeVersion, } from '../../lib/node-runtime.mjs';
|
|
16
15
|
import { planrHome, userHome } from '../../lib/planr-home.mjs';
|
|
16
|
+
import { CLI_COMMAND, getPackageRoot, PLANNING_FOLDER } from '../utils/constants.js';
|
|
17
17
|
import { spliceManagedBlock } from '../utils/splice-managed-block.js';
|
|
18
18
|
import { applyBundledClaudePluginIntegration, claudePluginUninstallCommand, inspectBundledClaudePluginIntegration, } from './claude-plugin-service.js';
|
|
19
19
|
import { applyCodexPluginIntegration, inspectCodexPluginIntegration, } from './codex-plugin-service.js';
|
|
20
20
|
import { resolvePipelinePackage } from './pipeline-package-service.js';
|
|
21
21
|
import { readOpenPlanrVersion } from './provenance-service.js';
|
|
22
22
|
import { effectiveCodexHome, inspectCodexSkillDiscovery, } from './runtime-manager/codex-discovery.js';
|
|
23
|
-
import { classifyComponentDrift as classifyRuntimeComponentDrift, diagnoseManagedRuntimeFiles, diagnoseRuntimeProvenance, } from './runtime-manager/doctor.js';
|
|
23
|
+
import { classifyComponentDrift as classifyRuntimeComponentDrift, diagnoseManagedRuntimeFiles, diagnoseRetiredCommandSkills, diagnoseRuntimeProvenance, pluginDocuments, } from './runtime-manager/doctor.js';
|
|
24
24
|
import { migrateLegacyGlobalRuntimeState, } from './runtime-manager/global-state.js';
|
|
25
25
|
import { inventoryManagedSkillFiles, planCodexUserBundleTransition, } from './runtime-manager/install-plan.js';
|
|
26
|
-
import { detectInstalledRuntimes, inspectRuntimeProjectContext, listInstalledRuntimeAdapters, } from './runtime-manager/inventory.js';
|
|
26
|
+
import { detectInstalledRuntimes, inspectRuntimeProjectContext, listInstalledRuntimeAdapters, planningFolderConflict, } from './runtime-manager/inventory.js';
|
|
27
27
|
import { inspectRuntimeLocator, inspectRuntimePackage, inspectThinRule, runtimeLocator, thinDiscoveryMetadata, thinSkillEntry, } from './runtime-manager/runtime-package.js';
|
|
28
28
|
export { classifyComponentDrift } from './runtime-manager/doctor.js';
|
|
29
29
|
const runtimeLockSchema = JSON.parse(readFileSync(new URL('../../lib/runtime-lock.schema.json', import.meta.url), 'utf8'));
|
|
@@ -631,7 +631,7 @@ function chooseRuntimes(choice) {
|
|
|
631
631
|
return detected;
|
|
632
632
|
}
|
|
633
633
|
function readRegistry() {
|
|
634
|
-
const root =
|
|
634
|
+
const root = getPackageRoot();
|
|
635
635
|
const registryPath = path.join(root, 'lib', 'host-packages', 'adapter-registry.json');
|
|
636
636
|
if (!existsSync(registryPath)) {
|
|
637
637
|
throw new RuntimeManagerError('E_HOST_PACKAGE_MISSING', 'The OpenPlanr host-package inventory is missing.', 'Reinstall the OpenPlanr utility CLI or run the workspace skill generator.');
|
|
@@ -645,7 +645,7 @@ function readRegistry() {
|
|
|
645
645
|
};
|
|
646
646
|
}
|
|
647
647
|
export function bundledHostRoot(host) {
|
|
648
|
-
const cliRoot =
|
|
648
|
+
const cliRoot = getPackageRoot();
|
|
649
649
|
const root = path.join(cliRoot, 'lib', 'host-packages', host);
|
|
650
650
|
if (!existsSync(root) || lstatSync(root).isSymbolicLink() || !lstatSync(root).isDirectory()) {
|
|
651
651
|
throw new RuntimeManagerError('E_HOST_PACKAGE_MISSING', `The bundled ${host} OpenPlanr package is missing or unsafe.`, 'Reinstall the OpenPlanr utility CLI or run the workspace skill generator.');
|
|
@@ -733,7 +733,7 @@ function normalizeInstallScope(adapter, requested) {
|
|
|
733
733
|
const supportsUser = adapter.installScopes.includes('user');
|
|
734
734
|
const supportsProject = adapter.installScopes.includes('project');
|
|
735
735
|
if (requested === 'user' && !supportsUser) {
|
|
736
|
-
throw new RuntimeManagerError('E_SCOPE_UNSUPPORTED', `OpenPlanr's ${adapter.id} integration currently requires project scope.`, `Change into your project, then run
|
|
736
|
+
throw new RuntimeManagerError('E_SCOPE_UNSUPPORTED', `OpenPlanr's ${adapter.id} integration currently requires project scope.`, `Change into your project, then run \`${CLI_COMMAND} setup --runtime ${adapter.id} --scope project\`. To initialize a new project there, run \`${CLI_COMMAND} init\` first.`);
|
|
737
737
|
}
|
|
738
738
|
if (requested === 'project' && !supportsProject) {
|
|
739
739
|
throw new RuntimeManagerError('E_SCOPE_UNSUPPORTED', `${adapter.id} does not support project-scope installation.`);
|
|
@@ -795,7 +795,7 @@ function buildRuntimeLock(options, runtimes, runtimeScopes, registry, pipelineVe
|
|
|
795
795
|
adapters,
|
|
796
796
|
skillModes,
|
|
797
797
|
});
|
|
798
|
-
const lockPath = path.join(options.projectDir,
|
|
798
|
+
const lockPath = path.join(options.projectDir, PLANNING_FOLDER, 'runtime-lock.json');
|
|
799
799
|
if (existsSync(lockPath)) {
|
|
800
800
|
try {
|
|
801
801
|
const existing = JSON.parse(readFileSync(lockPath, 'utf8'));
|
|
@@ -907,7 +907,7 @@ function buildActions(options, runtimes, runtimeScopes, retainedProject) {
|
|
|
907
907
|
actions.push({
|
|
908
908
|
runtime,
|
|
909
909
|
scope: 'project',
|
|
910
|
-
target: path.join(options.projectDir,
|
|
910
|
+
target: path.join(options.projectDir, PLANNING_FOLDER, 'runtime-policy', `${runtime}.json`),
|
|
911
911
|
content: Buffer.from(`${JSON.stringify({ schemaVersion: '1.0.0', runtime, discovery: 'user', mode: skillInstallMode(runtime, options), packageDigest: runtimePackage.digest, packageVersion: runtimePackage.version }, null, 2)}\n`),
|
|
912
912
|
kind: 'file',
|
|
913
913
|
custody: 'professional-skill',
|
|
@@ -978,7 +978,7 @@ function buildActions(options, runtimes, runtimeScopes, retainedProject) {
|
|
|
978
978
|
actions.push({
|
|
979
979
|
runtime: 'core',
|
|
980
980
|
scope: 'project',
|
|
981
|
-
target: path.join(options.projectDir,
|
|
981
|
+
target: path.join(options.projectDir, PLANNING_FOLDER, 'runtime-lock.json'),
|
|
982
982
|
content: buildRuntimeLock({
|
|
983
983
|
...options,
|
|
984
984
|
projectSkillMode: options.projectSkillMode ?? retainedProject?.skillModes?.codex,
|
|
@@ -1005,7 +1005,7 @@ function isRetiredGeneratedCursorRule(target, content) {
|
|
|
1005
1005
|
}
|
|
1006
1006
|
const generatedFooter = source.trimEnd().split(/\r?\n/u).at(-1) ?? '';
|
|
1007
1007
|
const deprecatedAlias = '---\ndescription: Deprecated OpenPlanr pipeline alias\nalwaysApply: false\n---\n\nThis compatibility alias is deprecated. Use the portable `openplanr.mdc` rule.\n';
|
|
1008
|
-
return ((generatedFooter.startsWith(
|
|
1008
|
+
return ((generatedFooter.startsWith(`*Generated by \`${CLI_COMMAND} rules generate --target cursor --scope pipeline\`.`) &&
|
|
1009
1009
|
generatedFooter.endsWith('*')) ||
|
|
1010
1010
|
source === deprecatedAlias);
|
|
1011
1011
|
}
|
|
@@ -1332,8 +1332,13 @@ export async function previewSetup(options) {
|
|
|
1332
1332
|
.find((adapter) => adapter.id === runtime)
|
|
1333
1333
|
?.installScopes.includes('user')) &&
|
|
1334
1334
|
options.skillMode !== 'project-rule';
|
|
1335
|
-
throw new RuntimeManagerError('E_PROJECT_CONTEXT_REQUIRED', `Project-scoped setup requires a Git worktree or initialized OpenPlanr project; ${projectContext.path} is neither.`, `Change into your project and rerun this command, or run
|
|
1335
|
+
throw new RuntimeManagerError('E_PROJECT_CONTEXT_REQUIRED', `Project-scoped setup requires a Git worktree or initialized OpenPlanr project; ${projectContext.path} is neither.`, `Change into your project and rerun this command, or run \`${CLI_COMMAND} init\` here to initialize one.${canUseUserScope ? ' To install across projects instead, rerun this command with --scope user.' : ''}`);
|
|
1336
1336
|
}
|
|
1337
|
+
const folderConflict = !options.minimal && (scope === 'project' || scope === 'both')
|
|
1338
|
+
? planningFolderConflict(options.projectDir)
|
|
1339
|
+
: null;
|
|
1340
|
+
if (folderConflict)
|
|
1341
|
+
throw new RuntimeManagerError(folderConflict.code, folderConflict.problem, folderConflict.fix);
|
|
1337
1342
|
let scopeIncompatibleRuntimes = [];
|
|
1338
1343
|
if (!options.minimal && (options.runtime ?? 'auto') === 'auto' && !options.runtimes) {
|
|
1339
1344
|
const adapters = listRuntimeAdapters();
|
|
@@ -1343,7 +1348,7 @@ export async function previewSetup(options) {
|
|
|
1343
1348
|
});
|
|
1344
1349
|
selectedRuntimes = selectedRuntimes.filter((runtime) => !scopeIncompatibleRuntimes.includes(runtime));
|
|
1345
1350
|
if (selectedRuntimes.length === 0) {
|
|
1346
|
-
throw new RuntimeManagerError('E_SCOPE_UNSUPPORTED', 'Detected coding agents require project scope, but setup defaulted to user scope.',
|
|
1351
|
+
throw new RuntimeManagerError('E_SCOPE_UNSUPPORTED', 'Detected coding agents require project scope, but setup defaulted to user scope.', `Change into a Git or initialized OpenPlanr project and run \`${CLI_COMMAND} setup --scope project\`.`);
|
|
1347
1352
|
}
|
|
1348
1353
|
}
|
|
1349
1354
|
let runtimes = selectedRuntimes;
|
|
@@ -1433,7 +1438,7 @@ export async function previewSetup(options) {
|
|
|
1433
1438
|
runtime: 'claude-code',
|
|
1434
1439
|
status: 'fail',
|
|
1435
1440
|
message: `Claude plugin state could not be inspected: ${claudeInspection.error}`,
|
|
1436
|
-
fix:
|
|
1441
|
+
fix: `Update Claude Code, then rerun \`${CLI_COMMAND} setup --runtime claude --scope user\`.`,
|
|
1437
1442
|
});
|
|
1438
1443
|
}
|
|
1439
1444
|
else if (claudeInspection.ready) {
|
|
@@ -1485,7 +1490,7 @@ export async function previewSetup(options) {
|
|
|
1485
1490
|
runtime: 'codex',
|
|
1486
1491
|
status: 'fail',
|
|
1487
1492
|
message: `Codex plugin state could not be inspected: ${codexInspection.error}`,
|
|
1488
|
-
fix:
|
|
1493
|
+
fix: `Repair the Codex marketplace state, then rerun ${CLI_COMMAND} setup --dry-run.`,
|
|
1489
1494
|
});
|
|
1490
1495
|
}
|
|
1491
1496
|
else if (codexInspection.duplicates.length > 0) {
|
|
@@ -1635,7 +1640,7 @@ export async function applySetup(options) {
|
|
|
1635
1640
|
replacesPlugin ||
|
|
1636
1641
|
replacesClaudePlugin) &&
|
|
1637
1642
|
!options.replaceManaged) {
|
|
1638
|
-
throw new RuntimeManagerError('E_INSTALL_MODE_CONFLICT', 'Changing OpenPlanr discovery mode would retire existing OpenPlanr-managed content.',
|
|
1643
|
+
throw new RuntimeManagerError('E_INSTALL_MODE_CONFLICT', 'Changing OpenPlanr discovery mode would retire existing OpenPlanr-managed content.', `Review ${CLI_COMMAND} setup --dry-run, then rerun with --replace-managed to replace only OpenPlanr-owned content.`);
|
|
1639
1644
|
}
|
|
1640
1645
|
const expectedTargets = new Map(actions.map((action) => {
|
|
1641
1646
|
if (!existsSync(action.target))
|
|
@@ -2312,6 +2317,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2312
2317
|
const claudeManagedAtUserScope = Object.values(state.projects).some((project) => project.runtimes.includes('claude-code') &&
|
|
2313
2318
|
['user', 'both'].includes(project.runtimeScopes?.['claude-code'] ??
|
|
2314
2319
|
inferRuntimeScope(project.ownedFiles, 'claude-code')));
|
|
2320
|
+
const pluginSkillDocuments = [];
|
|
2315
2321
|
const claudeDetected = Boolean(options.claudeCommandRunner) ||
|
|
2316
2322
|
(detectedRuntimes.find((runtime) => runtime.runtime === 'claude-code')?.installed ?? false);
|
|
2317
2323
|
if (claudeDetected && claudeManagedAtUserScope) {
|
|
@@ -2321,10 +2327,16 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2321
2327
|
code: 'runtime-claude-plugins',
|
|
2322
2328
|
status: 'fail',
|
|
2323
2329
|
message: `Claude plugin state could not be inspected: ${inspection.error}`,
|
|
2324
|
-
fix:
|
|
2330
|
+
fix: `Update Claude Code, then run \`${CLI_COMMAND} runtime update claude --scope user\`.`,
|
|
2325
2331
|
});
|
|
2326
2332
|
}
|
|
2327
2333
|
else {
|
|
2334
|
+
for (const root of [
|
|
2335
|
+
...inspection.plugins.flatMap((plugin) => plugin.installPath ?? []),
|
|
2336
|
+
...inspection.duplicatePluginPaths,
|
|
2337
|
+
]) {
|
|
2338
|
+
pluginSkillDocuments.push(...pluginDocuments('claude-code', root));
|
|
2339
|
+
}
|
|
2328
2340
|
const drift = inspection.plugins.filter((plugin) => !plugin.installed ||
|
|
2329
2341
|
!plugin.enabled ||
|
|
2330
2342
|
!plugin.identityValid ||
|
|
@@ -2340,7 +2352,9 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2340
2352
|
.map((plugin) => `${plugin.id} ${plugin.installedVersion ?? 'missing'} → ${plugin.expectedVersion}${!plugin.identityValid ? ' (invalid identity)' : ''}`)
|
|
2341
2353
|
.join(', ')}`,
|
|
2342
2354
|
...(!inspection.ready
|
|
2343
|
-
? {
|
|
2355
|
+
? {
|
|
2356
|
+
fix: `Run \`${CLI_COMMAND} runtime update claude --scope user\` and restart Claude Code.`,
|
|
2357
|
+
}
|
|
2344
2358
|
: {}),
|
|
2345
2359
|
});
|
|
2346
2360
|
if (inspection.legacyPluginIds.length > 0) {
|
|
@@ -2361,7 +2375,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2361
2375
|
}
|
|
2362
2376
|
}
|
|
2363
2377
|
const expectsProjectLock = installed?.ownedFiles.some((file) => file.scope === 'project') ?? false;
|
|
2364
|
-
const lock = path.join(projectDir,
|
|
2378
|
+
const lock = path.join(projectDir, PLANNING_FOLDER, 'runtime-lock.json');
|
|
2365
2379
|
if (!existsSync(lock)) {
|
|
2366
2380
|
const lockStatus = expectsProjectLock ? 'warn' : installed ? 'pass' : 'warn';
|
|
2367
2381
|
diagnostics.push({
|
|
@@ -2373,9 +2387,9 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2373
2387
|
? 'User-scope setup does not require a project runtime lock'
|
|
2374
2388
|
: 'No managed runtime setup found for this directory',
|
|
2375
2389
|
...(expectsProjectLock
|
|
2376
|
-
? { fix:
|
|
2390
|
+
? { fix: `Run \`${CLI_COMMAND} setup --scope project\`.` }
|
|
2377
2391
|
: !installed
|
|
2378
|
-
? { fix:
|
|
2392
|
+
? { fix: `Run \`${CLI_COMMAND} setup\`.` }
|
|
2379
2393
|
: {}),
|
|
2380
2394
|
});
|
|
2381
2395
|
}
|
|
@@ -2414,7 +2428,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2414
2428
|
// digest/adapter drift, or a component drift that does not include the CLI
|
|
2415
2429
|
// (for example a pinned obsolete skill bundle), remains a genuine `fail`.
|
|
2416
2430
|
// The warn/fail derivation lives in the single `classifyComponentDrift`
|
|
2417
|
-
// helper so `
|
|
2431
|
+
// helper so `openplanr upgrade status` reuses this exact distinction rather
|
|
2418
2432
|
// than re-deriving it; a digest/adapter drift is doctor's
|
|
2419
2433
|
// flavour of an incompatible tuple.
|
|
2420
2434
|
const { drift, genuineDrift, upgradeOnlyDrift, status } = classifyRuntimeComponentDrift({
|
|
@@ -2435,8 +2449,8 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2435
2449
|
...(drift
|
|
2436
2450
|
? {
|
|
2437
2451
|
fix: upgradeOnlyDrift
|
|
2438
|
-
?
|
|
2439
|
-
:
|
|
2452
|
+
? `Run \`${CLI_COMMAND} runtime update all --scope project\` to refresh the lock to the upgraded component versions.`
|
|
2453
|
+
: `Run \`${CLI_COMMAND} runtime update all --scope project\`.`,
|
|
2440
2454
|
}
|
|
2441
2455
|
: {}),
|
|
2442
2456
|
});
|
|
@@ -2446,7 +2460,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2446
2460
|
code: 'runtime-lock-invalid',
|
|
2447
2461
|
status: 'fail',
|
|
2448
2462
|
message: 'Project runtime lock is not valid JSON or does not match the supported contract',
|
|
2449
|
-
fix:
|
|
2463
|
+
fix: `Run \`${CLI_COMMAND} setup --scope project\` after reviewing the existing lock.`,
|
|
2450
2464
|
});
|
|
2451
2465
|
}
|
|
2452
2466
|
}
|
|
@@ -2465,7 +2479,9 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2465
2479
|
message: stateDrift
|
|
2466
2480
|
? 'Runtime lock adapters do not match the managed installation state'
|
|
2467
2481
|
: 'Runtime lock adapters match the managed installation state',
|
|
2468
|
-
...(stateDrift
|
|
2482
|
+
...(stateDrift
|
|
2483
|
+
? { fix: `Run \`${CLI_COMMAND} setup --dry-run\`, then approve the repair.` }
|
|
2484
|
+
: {}),
|
|
2469
2485
|
});
|
|
2470
2486
|
}
|
|
2471
2487
|
}
|
|
@@ -2474,7 +2490,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2474
2490
|
code: 'runtime-state-missing',
|
|
2475
2491
|
status: 'warn',
|
|
2476
2492
|
message: 'The project has a runtime lock but this machine has no managed adapter state',
|
|
2477
|
-
fix:
|
|
2493
|
+
fix: `Run \`${CLI_COMMAND} setup\` to install the locked runtime adapters on this machine.`,
|
|
2478
2494
|
});
|
|
2479
2495
|
}
|
|
2480
2496
|
const globallyOwned = Object.values(state.userBundles ?? {}).flatMap((bundle) => bundle?.ownedFiles ?? []);
|
|
@@ -2485,6 +2501,9 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2485
2501
|
const managedFileDiagnostic = diagnoseManagedRuntimeFiles(managedFiles, ownershipHash);
|
|
2486
2502
|
if (managedFileDiagnostic)
|
|
2487
2503
|
diagnostics.push(managedFileDiagnostic);
|
|
2504
|
+
const commandDiagnostic = diagnoseRetiredCommandSkills([...managedFiles, ...pluginSkillDocuments], options.commandRoots ?? [], managedBlockBytes);
|
|
2505
|
+
if (commandDiagnostic)
|
|
2506
|
+
diagnostics.push(commandDiagnostic);
|
|
2488
2507
|
const verifiedPackages = new Map();
|
|
2489
2508
|
const closureFailures = [];
|
|
2490
2509
|
for (const file of managedFiles) {
|
|
@@ -2507,7 +2526,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2507
2526
|
: 'Pinned runtime packages match their complete content inventories',
|
|
2508
2527
|
...(closureFailures.length
|
|
2509
2528
|
? {
|
|
2510
|
-
fix:
|
|
2529
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview exact-package repair; preserve modified cache bytes for inspection.`,
|
|
2511
2530
|
}
|
|
2512
2531
|
: {}),
|
|
2513
2532
|
});
|
|
@@ -2546,7 +2565,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2546
2565
|
code: 'runtime-codex-skill-resolution',
|
|
2547
2566
|
status: 'warn',
|
|
2548
2567
|
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.`,
|
|
2549
|
-
fix:
|
|
2568
|
+
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.`,
|
|
2550
2569
|
});
|
|
2551
2570
|
}
|
|
2552
2571
|
if (oldCaches.length > 0) {
|
|
@@ -2563,7 +2582,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2563
2582
|
code: 'runtime-codex-plugin',
|
|
2564
2583
|
status: 'warn',
|
|
2565
2584
|
message: `Codex plugin state could not be inspected: ${inspection.error}`,
|
|
2566
|
-
fix:
|
|
2585
|
+
fix: `Run \`${CLI_COMMAND} setup --runtime codex --dry-run\` for an exact repair preview.`,
|
|
2567
2586
|
});
|
|
2568
2587
|
}
|
|
2569
2588
|
else {
|
|
@@ -2578,7 +2597,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2578
2597
|
...(inspection.ready
|
|
2579
2598
|
? {}
|
|
2580
2599
|
: {
|
|
2581
|
-
fix:
|
|
2600
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview repairs while preserving your saved discovery choice.`,
|
|
2582
2601
|
}),
|
|
2583
2602
|
});
|
|
2584
2603
|
if ((directSkillFiles > 0 && inspection.installed) || inspection.duplicates.length > 0) {
|
|
@@ -2597,7 +2616,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2597
2616
|
code: 'home-project-install',
|
|
2598
2617
|
status: 'warn',
|
|
2599
2618
|
message: `${accidentalHomeFiles.length} project-scoped managed file(s) were installed in the home directory`,
|
|
2600
|
-
fix:
|
|
2619
|
+
fix: `Run \`${CLI_COMMAND} doctor --fix\` to preview and remove only recorded OpenPlanr-owned project content.`,
|
|
2601
2620
|
});
|
|
2602
2621
|
}
|
|
2603
2622
|
const provenanceDiagnostic = diagnoseRuntimeProvenance(projectDir);
|
|
@@ -2636,7 +2655,7 @@ export async function runtimeDoctor(projectDir, options = {}) {
|
|
|
2636
2655
|
code: 'pipeline-doctor-unavailable',
|
|
2637
2656
|
status: 'warn',
|
|
2638
2657
|
message: 'The pipeline doctor did not return valid JSON',
|
|
2639
|
-
fix:
|
|
2658
|
+
fix: `Run \`${CLI_COMMAND} doctor\` for direct diagnostics.`,
|
|
2640
2659
|
});
|
|
2641
2660
|
}
|
|
2642
2661
|
}
|