opkg 0.6.1 → 0.7.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/README.md +109 -186
- package/assets/openpackage_ascii_dark.png +0 -0
- package/assets/openpackage_ascii_light.png +0 -0
- package/dist/commands/add.js +34 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/apply.js +16 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/delete.js +1 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/install.js +177 -8
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/new.js +125 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/pack.js +7 -13
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +1 -1
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +1 -1
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/remove.js +63 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/save.js +11 -17
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/set.js +33 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/show.js +16 -94
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +26 -701
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.js +14 -427
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +72 -16
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/add-conflict-handler.js +1 -8
- package/dist/core/add/add-conflict-handler.js.map +1 -1
- package/dist/core/add/add-pipeline.js +12 -10
- package/dist/core/add/add-pipeline.js.map +1 -1
- package/dist/core/add/add-to-source-pipeline.js +123 -0
- package/dist/core/add/add-to-source-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +77 -78
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +6 -4
- package/dist/core/add/platform-path-transformer.js.map +1 -1
- package/dist/core/add/source-collector.js +2 -3
- package/dist/core/add/source-collector.js.map +1 -1
- package/dist/core/apply/apply-pipeline.js +110 -0
- package/dist/core/apply/apply-pipeline.js.map +1 -0
- package/dist/core/dependency-resolver.js +263 -21
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +1 -2
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +33 -18
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/flows/flow-executor.js +974 -0
- package/dist/core/flows/flow-executor.js.map +1 -0
- package/dist/core/flows/flow-inverter.js +442 -0
- package/dist/core/flows/flow-inverter.js.map +1 -0
- package/dist/core/flows/flow-key-extractor.js +101 -0
- package/dist/core/flows/flow-key-extractor.js.map +1 -0
- package/dist/core/flows/flow-key-mapper.js +382 -0
- package/dist/core/flows/flow-key-mapper.js.map +1 -0
- package/dist/core/flows/flow-transforms.js +632 -0
- package/dist/core/flows/flow-transforms.js.map +1 -0
- package/dist/core/flows/map-pipeline/context.js +73 -0
- package/dist/core/flows/map-pipeline/context.js.map +1 -0
- package/dist/core/flows/map-pipeline/index.js +156 -0
- package/dist/core/flows/map-pipeline/index.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/copy.js +104 -0
- package/dist/core/flows/map-pipeline/operations/copy.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js +70 -0
- package/dist/core/flows/map-pipeline/operations/pipe.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/rename.js +102 -0
- package/dist/core/flows/map-pipeline/operations/rename.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/set.js +50 -0
- package/dist/core/flows/map-pipeline/operations/set.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/switch.js +79 -0
- package/dist/core/flows/map-pipeline/operations/switch.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/transform.js +543 -0
- package/dist/core/flows/map-pipeline/operations/transform.js.map +1 -0
- package/dist/core/flows/map-pipeline/operations/unset.js +65 -0
- package/dist/core/flows/map-pipeline/operations/unset.js.map +1 -0
- package/dist/core/flows/map-pipeline/types.js +8 -0
- package/dist/core/flows/map-pipeline/types.js.map +1 -0
- package/dist/core/flows/map-pipeline/utils.js +278 -0
- package/dist/core/flows/map-pipeline/utils.js.map +1 -0
- package/dist/core/flows/platform-converter.js +328 -0
- package/dist/core/flows/platform-converter.js.map +1 -0
- package/dist/core/flows/source-resolver.js +192 -0
- package/dist/core/flows/source-resolver.js.map +1 -0
- package/dist/core/flows/toml-domain-transforms.js +23 -0
- package/dist/core/flows/toml-domain-transforms.js.map +1 -0
- package/dist/core/install/bulk-install-pipeline.js +68 -7
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +3 -3
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/dry-run.js +3 -3
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/flow-based-installer.js +1158 -0
- package/dist/core/install/flow-based-installer.js.map +1 -0
- package/dist/core/install/flow-workspace-tracker.js +111 -0
- package/dist/core/install/flow-workspace-tracker.js.map +1 -0
- package/dist/core/install/format-detector.js +228 -0
- package/dist/core/install/format-detector.js.map +1 -0
- package/dist/core/install/git-package-loader.js +20 -0
- package/dist/core/install/git-package-loader.js.map +1 -0
- package/dist/core/install/install-errors.js +1 -1
- package/dist/core/install/install-errors.js.map +1 -1
- package/dist/core/install/install-flow.js +34 -14
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +52 -17
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/install-reporting.js +26 -8
- package/dist/core/install/install-reporting.js.map +1 -1
- package/dist/core/install/local-source-resolution.js +103 -0
- package/dist/core/install/local-source-resolution.js.map +1 -0
- package/dist/core/install/marketplace-handler.js +221 -0
- package/dist/core/install/marketplace-handler.js.map +1 -0
- package/dist/core/install/path-install-pipeline.js +241 -0
- package/dist/core/install/path-install-pipeline.js.map +1 -0
- package/dist/core/install/path-package-loader.js +116 -0
- package/dist/core/install/path-package-loader.js.map +1 -0
- package/dist/core/install/plugin-detector.js +72 -0
- package/dist/core/install/plugin-detector.js.map +1 -0
- package/dist/core/install/plugin-to-universal-converter.js +218 -0
- package/dist/core/install/plugin-to-universal-converter.js.map +1 -0
- package/dist/core/install/plugin-transformer.js +191 -0
- package/dist/core/install/plugin-transformer.js.map +1 -0
- package/dist/core/install/version-selection.js +1 -1
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +40 -22
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/pack/pack-output.js +62 -0
- package/dist/core/pack/pack-output.js.map +1 -0
- package/dist/core/pack/pack-pipeline.js +186 -0
- package/dist/core/pack/pack-pipeline.js.map +1 -0
- package/dist/core/package-context.js +45 -70
- package/dist/core/package-context.js.map +1 -1
- package/dist/core/package-creation.js +203 -0
- package/dist/core/package-creation.js.map +1 -0
- package/dist/core/package.js +20 -6
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +665 -209
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/push/push-context.js +1 -1
- package/dist/core/push/push-context.js.map +1 -1
- package/dist/core/push/push-upload.js +2 -2
- package/dist/core/push/push-upload.js.map +1 -1
- package/dist/core/registry.js +6 -6
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +2 -2
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/remove/removal-collector.js +52 -0
- package/dist/core/remove/removal-collector.js.map +1 -0
- package/dist/core/remove/removal-confirmation.js +39 -0
- package/dist/core/remove/removal-confirmation.js.map +1 -0
- package/dist/core/remove/remove-from-source-pipeline.js +173 -0
- package/dist/core/remove/remove-from-source-pipeline.js.map +1 -0
- package/dist/core/save/constants.js +3 -3
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/flow-based-saver.js +270 -0
- package/dist/core/save/flow-based-saver.js.map +1 -0
- package/dist/core/save/name-resolution.js +1 -1
- package/dist/core/save/name-resolution.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +4 -5
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-candidate-builder.js +215 -0
- package/dist/core/save/save-candidate-builder.js.map +1 -0
- package/dist/core/save/save-candidate-loader.js +12 -11
- package/dist/core/save/save-candidate-loader.js.map +1 -1
- package/dist/core/save/save-conflict-analyzer.js +150 -0
- package/dist/core/save/save-conflict-analyzer.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +28 -14
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +31 -275
- package/dist/core/save/save-conflict-resolver.js.map +1 -1
- package/dist/core/save/save-group-builder.js +52 -0
- package/dist/core/save/save-group-builder.js.map +1 -0
- package/dist/core/save/save-interactive-resolver.js +190 -0
- package/dist/core/save/save-interactive-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +58 -34
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-platform-handler.js +53 -0
- package/dist/core/save/save-platform-handler.js.map +1 -0
- package/dist/core/save/save-resolution-executor.js +145 -0
- package/dist/core/save/save-resolution-executor.js.map +1 -0
- package/dist/core/save/save-result-reporter.js +167 -0
- package/dist/core/save/save-result-reporter.js.map +1 -0
- package/dist/core/save/save-to-source-pipeline.js +154 -0
- package/dist/core/save/save-to-source-pipeline.js.map +1 -0
- package/dist/core/save/save-versioning.js +4 -4
- package/dist/core/save/save-versioning.js.map +1 -1
- package/dist/core/save/save-write-coordinator.js +204 -0
- package/dist/core/save/save-write-coordinator.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +28 -216
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +7 -8
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/set/set-output.js +72 -0
- package/dist/core/set/set-output.js.map +1 -0
- package/dist/core/set/set-pipeline.js +361 -0
- package/dist/core/set/set-pipeline.js.map +1 -0
- package/dist/core/set/set-types.js +5 -0
- package/dist/core/set/set-types.js.map +1 -0
- package/dist/core/show/package-resolver.js +257 -0
- package/dist/core/show/package-resolver.js.map +1 -0
- package/dist/core/show/scope-discovery.js +165 -0
- package/dist/core/show/scope-discovery.js.map +1 -0
- package/dist/core/show/show-output.js +168 -0
- package/dist/core/show/show-output.js.map +1 -0
- package/dist/core/show/show-pipeline.js +113 -0
- package/dist/core/show/show-pipeline.js.map +1 -0
- package/dist/core/show/show-types.js +5 -0
- package/dist/core/show/show-types.js.map +1 -0
- package/dist/core/source-resolution/dependency-graph.js +104 -0
- package/dist/core/source-resolution/dependency-graph.js.map +1 -0
- package/dist/core/source-resolution/resolve-mutable-source.js +109 -0
- package/dist/core/source-resolution/resolve-mutable-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-package-source.js +29 -0
- package/dist/core/source-resolution/resolve-package-source.js.map +1 -0
- package/dist/core/source-resolution/resolve-registry-version.js +35 -0
- package/dist/core/source-resolution/resolve-registry-version.js.map +1 -0
- package/dist/core/source-resolution/types.js.map +1 -0
- package/dist/core/status/status-file-discovery.js +23 -12
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/status/status-pipeline.js +134 -0
- package/dist/core/status/status-pipeline.js.map +1 -0
- package/dist/core/sync/platform-sync-summary.js +27 -0
- package/dist/core/sync/platform-sync-summary.js.map +1 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js +189 -0
- package/dist/core/uninstall/flow-aware-uninstaller.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +11 -6
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/core/uninstall/uninstall-pipeline.js +141 -0
- package/dist/core/uninstall/uninstall-pipeline.js.map +1 -0
- package/dist/core/universal-patterns.js +64 -0
- package/dist/core/universal-patterns.js.map +1 -0
- package/dist/index.js +99 -6
- package/dist/index.js.map +1 -1
- package/dist/types/flows.js +8 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/platform-flows.js +8 -0
- package/dist/types/platform-flows.js.map +1 -0
- package/dist/types/workspace-index.js +6 -0
- package/dist/types/workspace-index.js.map +1 -0
- package/dist/utils/custom-path-resolution.js +160 -0
- package/dist/utils/custom-path-resolution.js.map +1 -0
- package/dist/utils/dependency-coverage.js +1 -1
- package/dist/utils/dependency-coverage.js.map +1 -1
- package/dist/utils/file-processing.js +1 -1
- package/dist/utils/flow-index-installer.js +209 -0
- package/dist/utils/flow-index-installer.js.map +1 -0
- package/dist/utils/formatters.js +47 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/fs.js +17 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git-clone-registry.js +88 -0
- package/dist/utils/git-clone-registry.js.map +1 -0
- package/dist/utils/git-clone.js +69 -0
- package/dist/utils/git-clone.js.map +1 -0
- package/dist/utils/git-spec.js +96 -0
- package/dist/utils/git-spec.js.map +1 -0
- package/dist/utils/http-client.js +7 -0
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +356 -163
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-conflict-handler.js +2 -2
- package/dist/utils/install-conflict-handler.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -13
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-helpers.js +43 -20
- package/dist/utils/install-helpers.js.map +1 -1
- package/dist/utils/jsonc.js +23 -1
- package/dist/utils/jsonc.js.map +1 -1
- package/dist/utils/manifest-paths.js +1 -1
- package/dist/utils/manifest-paths.js.map +1 -1
- package/dist/utils/markdown-frontmatter.js +46 -0
- package/dist/utils/markdown-frontmatter.js.map +1 -1
- package/dist/utils/package-copy.js +5 -103
- package/dist/utils/package-copy.js.map +1 -1
- package/dist/utils/package-filters.js +9 -105
- package/dist/utils/package-filters.js.map +1 -1
- package/dist/utils/package-index-yml.js +27 -6
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-input.js +98 -0
- package/dist/utils/package-input.js.map +1 -0
- package/dist/utils/package-management.js +80 -28
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-name-resolution.js +327 -0
- package/dist/utils/package-name-resolution.js.map +1 -0
- package/dist/utils/package-name.js +18 -16
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +2 -33
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +19 -28
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-resolution.js +102 -0
- package/dist/utils/path-resolution.js.map +1 -0
- package/dist/utils/paths.js +6 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +36 -24
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +222 -68
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-root-files.js +44 -0
- package/dist/utils/platform-root-files.js.map +1 -0
- package/dist/utils/platform-utils.js +35 -54
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +20 -140
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +92 -7
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +50 -27
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +5 -4
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/scope-resolution.js +156 -0
- package/dist/utils/scope-resolution.js.map +1 -0
- package/dist/utils/source-mutability.js +15 -0
- package/dist/utils/source-mutability.js.map +1 -0
- package/dist/utils/tarball.js +29 -4
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +1 -32
- package/dist/utils/version-ranges.js.map +1 -1
- package/dist/utils/workspace-index-helpers.js +28 -0
- package/dist/utils/workspace-index-helpers.js.map +1 -0
- package/dist/utils/workspace-index-ownership.js +100 -0
- package/dist/utils/workspace-index-ownership.js.map +1 -0
- package/dist/utils/workspace-index-yml.js +173 -0
- package/dist/utils/workspace-index-yml.js.map +1 -0
- package/examples/custom-subdirs-platform.jsonc +157 -0
- package/package.json +7 -2
- package/platforms.jsonc +531 -84
- package/schemas/map-pipeline-v1.json +256 -0
- package/schemas/platforms-v1.json +400 -0
- package/specs/README.md +88 -0
- package/specs/add/README.md +166 -0
- package/specs/agents-claude.md +570 -0
- package/specs/agents-opencode.md +622 -0
- package/specs/apply/README.md +21 -0
- package/specs/apply/apply-behavior.md +58 -0
- package/specs/apply/apply-command.md +51 -0
- package/specs/apply/conflicts.md +41 -0
- package/specs/apply/index-effects.md +81 -0
- package/specs/architecture.md +107 -0
- package/specs/auth/README.md +17 -0
- package/specs/auth/auth-http-contract.md +25 -0
- package/specs/auth/cli/credentials.md +39 -0
- package/specs/auth/cli/login.md +32 -0
- package/specs/auth/cli/logout.md +16 -0
- package/specs/claude-mcp.md +1065 -0
- package/specs/claude-plugins-marketplace.md +363 -0
- package/specs/claude-plugins.md +413 -0
- package/specs/cli-options.md +52 -0
- package/specs/codex-mcp.md +114 -0
- package/specs/commands-overview.md +175 -0
- package/specs/directory-layout.md +95 -0
- package/specs/install/README.md +12 -4
- package/specs/install/git-sources.md +230 -0
- package/specs/install/install-behavior.md +483 -73
- package/specs/install/package-yml-canonical.md +67 -35
- package/specs/install/version-resolution.md +69 -115
- package/specs/new/README.md +769 -0
- package/specs/new/SUMMARY.md +310 -0
- package/specs/new/scope-behavior.md +793 -0
- package/specs/pack/README.md +77 -0
- package/specs/pack/package-name-resolution.md +330 -0
- package/specs/package/README.md +18 -17
- package/specs/package/nested-packages-and-parent-packages.md +32 -31
- package/specs/package/package-index-yml.md +95 -101
- package/specs/package/package-root-layout.md +64 -46
- package/specs/package/registry-payload-and-copy.md +50 -44
- package/specs/package/universal-content.md +33 -56
- package/specs/package-sources.md +248 -0
- package/specs/platforms/README.md +52 -0
- package/specs/platforms/configuration.md +571 -0
- package/specs/platforms/detection.md +552 -0
- package/specs/platforms/directory-layout.md +599 -0
- package/specs/platforms/examples.md +1146 -0
- package/specs/platforms/flow-reference.md +1240 -0
- package/specs/platforms/flows.md +1488 -0
- package/specs/platforms/map-pipeline.md +801 -0
- package/specs/platforms/overview.md +349 -0
- package/specs/platforms/specification.md +700 -0
- package/specs/platforms/troubleshooting.md +697 -0
- package/specs/platforms/universal-converter.md +520 -0
- package/specs/push/README.md +1 -0
- package/specs/push/push-behavior.md +11 -3
- package/specs/push/push-remote-upload.md +1 -1
- package/specs/push/push-scoping.md +1 -1
- package/specs/push/push-version-selection.md +1 -1
- package/specs/registry.md +111 -0
- package/specs/remove/README.md +257 -0
- package/specs/save/README.md +21 -17
- package/specs/save/save-conflict-resolution.md +205 -83
- package/specs/save/save-file-discovery.md +6 -4
- package/specs/save/save-frontmatter-overrides.md +11 -15
- package/specs/save/save-modes-inputs.md +9 -39
- package/specs/save/save-naming-scoping.md +4 -4
- package/specs/save/save-package-detection.md +13 -13
- package/specs/save/save-registry-sync.md +16 -106
- package/specs/save/save-versioning.md +80 -0
- package/specs/scope-management.md +92 -0
- package/specs/set/README.md +520 -0
- package/specs/set/set-behavior.md +563 -0
- package/specs/show/README.md +483 -0
- package/specs/show/show-remote.md +494 -0
- package/specs/status/README.md +38 -0
- package/specs/uninstall/README.md +231 -0
- package/dist/commands/duplicate.js +0 -69
- package/dist/commands/duplicate.js.map +0 -1
- package/dist/commands/init.js +0 -117
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/prune.js +0 -357
- package/dist/commands/prune.js.map +0 -1
- package/dist/commands/tui.js +0 -61
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/install/index.js +0 -3
- package/dist/core/install/index.js.map +0 -1
- package/dist/core/push/push-single-file.js +0 -56
- package/dist/core/push/push-single-file.js.map +0 -1
- package/dist/core/save/package-detection.js +0 -147
- package/dist/core/save/package-detection.js.map +0 -1
- package/dist/core/save/save-single-file.js +0 -124
- package/dist/core/save/save-single-file.js.map +0 -1
- package/dist/core/token-store.js +0 -73
- package/dist/core/token-store.js.map +0 -1
- package/dist/tui/app.js +0 -95
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/components/package-list.js +0 -73
- package/dist/tui/components/package-list.js.map +0 -1
- package/dist/tui/controller.js +0 -365
- package/dist/tui/controller.js.map +0 -1
- package/dist/tui/index.js +0 -12
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/services/file-index.js +0 -64
- package/dist/tui/services/file-index.js.map +0 -1
- package/dist/tui/services/packages.js +0 -18
- package/dist/tui/services/packages.js.map +0 -1
- package/dist/tui/services/save.js +0 -21
- package/dist/tui/services/save.js.map +0 -1
- package/dist/tui/state/app-state.js +0 -15
- package/dist/tui/state/app-state.js.map +0 -1
- package/dist/tui/state.js +0 -17
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.js.map +0 -1
- package/dist/tui/views/add-file-modal.js +0 -129
- package/dist/tui/views/add-file-modal.js.map +0 -1
- package/dist/tui/views/file-preview.js +0 -44
- package/dist/tui/views/file-preview.js.map +0 -1
- package/dist/tui/views/list-packages.js +0 -73
- package/dist/tui/views/list-packages.js.map +0 -1
- package/dist/tui/views/main-menu.js +0 -29
- package/dist/tui/views/main-menu.js.map +0 -1
- package/dist/tui/views/manage-view.js +0 -81
- package/dist/tui/views/manage-view.js.map +0 -1
- package/dist/tui/views/package-hub.js +0 -120
- package/dist/tui/views/package-hub.js.map +0 -1
- package/dist/tui/views/placeholder.js +0 -24
- package/dist/tui/views/placeholder.js.map +0 -1
- package/dist/utils/bun-bootstrap.js +0 -72
- package/dist/utils/bun-bootstrap.js.map +0 -1
- package/dist/utils/entity-id.js +0 -19
- package/dist/utils/entity-id.js.map +0 -1
- package/dist/utils/package-local-files.js +0 -5
- package/dist/utils/package-local-files.js.map +0 -1
- package/dist/utils/path-matching.js +0 -74
- package/dist/utils/path-matching.js.map +0 -1
- package/dist/utils/root-file-operations.js +0 -39
- package/dist/utils/root-file-operations.js.map +0 -1
- package/dist/utils/root-file-transformer.js +0 -27
- package/dist/utils/root-file-transformer.js.map +0 -1
- package/dist/utils/yaml-frontmatter.js +0 -25
- package/dist/utils/yaml-frontmatter.js.map +0 -1
- package/specs/auth/auth-device-flow.md +0 -70
- package/specs/login/login-device-flow.md +0 -70
- package/specs/platforms.md +0 -193
- package/specs/save-pack-versioning.md +0 -224
- package/specs/save-pack.md +0 -68
- /package/dist/{tui → core/source-resolution}/types.js +0 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
# Platform Configuration
|
|
2
|
+
|
|
3
|
+
## Configuration File
|
|
4
|
+
|
|
5
|
+
The platform system is configured through a single file: **`platforms.jsonc`**
|
|
6
|
+
|
|
7
|
+
### File Locations
|
|
8
|
+
|
|
9
|
+
Three configuration files are merged in priority order:
|
|
10
|
+
|
|
11
|
+
1. **Built-in** (lowest priority)
|
|
12
|
+
- Location: `<cli-install>/platforms.jsonc`
|
|
13
|
+
- Contains: Default configurations for 13 platforms
|
|
14
|
+
- Ships with: CLI installation
|
|
15
|
+
|
|
16
|
+
2. **Global** (middle priority)
|
|
17
|
+
- Location: `~/.openpackage/platforms.jsonc` or `~/.openpackage/platforms.json`
|
|
18
|
+
- Purpose: User-wide customizations
|
|
19
|
+
- Use case: Personal preferences, custom platforms
|
|
20
|
+
|
|
21
|
+
3. **Workspace** (highest priority)
|
|
22
|
+
- Location: `<workspace>/.openpackage/platforms.jsonc` or `<workspace>/.openpackage/platforms.json`
|
|
23
|
+
- Purpose: Project-specific overrides
|
|
24
|
+
- Use case: Disable platforms, custom flows, team standards
|
|
25
|
+
|
|
26
|
+
### File Format
|
|
27
|
+
|
|
28
|
+
Supports both JSONC (with comments) and JSON:
|
|
29
|
+
|
|
30
|
+
```jsonc
|
|
31
|
+
// platforms.jsonc
|
|
32
|
+
{
|
|
33
|
+
"$schema": "./node_modules/opkg-cli/schemas/platforms-v1.json",
|
|
34
|
+
|
|
35
|
+
"global": {
|
|
36
|
+
"export": [ /* universal export flows */ ],
|
|
37
|
+
"import": [ /* universal import flows */ ]
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"cursor": {
|
|
41
|
+
"name": "Cursor",
|
|
42
|
+
"rootDir": ".cursor",
|
|
43
|
+
"export": [ /* package → workspace flows */ ],
|
|
44
|
+
"import": [ /* workspace → package flows */ ]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Note:** If both `.jsonc` and `.json` exist, `.jsonc` takes precedence.
|
|
50
|
+
|
|
51
|
+
## Configuration Schema
|
|
52
|
+
|
|
53
|
+
### Top-Level Structure
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
interface PlatformsConfig {
|
|
57
|
+
$schema?: string // Optional: JSON Schema reference
|
|
58
|
+
global?: { // Optional: Universal flows
|
|
59
|
+
export?: Flow[] // Package → Workspace
|
|
60
|
+
import?: Flow[] // Workspace → Package
|
|
61
|
+
}
|
|
62
|
+
[platformId: string]: { // Per-platform definitions
|
|
63
|
+
name: string
|
|
64
|
+
rootDir: string
|
|
65
|
+
rootFile?: string
|
|
66
|
+
aliases?: string[]
|
|
67
|
+
enabled?: boolean
|
|
68
|
+
export?: Flow[] // Package → Workspace
|
|
69
|
+
import?: Flow[] // Workspace → Package
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Platform Entry
|
|
75
|
+
|
|
76
|
+
Each platform is defined by a top-level key (lowercase, kebab-case):
|
|
77
|
+
|
|
78
|
+
```jsonc
|
|
79
|
+
{
|
|
80
|
+
"cursor": { // Platform ID (required, unique)
|
|
81
|
+
"name": "Cursor", // Display name (required)
|
|
82
|
+
"rootDir": ".cursor", // Root directory (required)
|
|
83
|
+
"rootFile": "CURSOR.md", // Optional root file
|
|
84
|
+
"aliases": ["cursorcli"], // Optional CLI shortcuts
|
|
85
|
+
"enabled": true, // Optional (default: true)
|
|
86
|
+
"export": [ // Export flows (package → workspace)
|
|
87
|
+
{ "from": "...", "to": "..." }
|
|
88
|
+
],
|
|
89
|
+
"import": [ // Import flows (workspace → package)
|
|
90
|
+
{ "from": "...", "to": "..." }
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
#### Required Fields
|
|
97
|
+
|
|
98
|
+
- **`name`** (string) - Human-readable display name
|
|
99
|
+
- Example: `"Cursor"`, `"Claude Code"`, `"Windsurf"`
|
|
100
|
+
|
|
101
|
+
- **`rootDir`** (string) - Platform root directory
|
|
102
|
+
- Example: `".cursor"`, `".claude"`, `".windsurf"`
|
|
103
|
+
- Used for: Detection and file path resolution
|
|
104
|
+
|
|
105
|
+
#### Optional Fields
|
|
106
|
+
|
|
107
|
+
- **`export`** (array) - Export flows (package → workspace, used by install/apply)
|
|
108
|
+
- Minimum: Empty array `[]` (no install/apply transformations)
|
|
109
|
+
- See: [Flows](./flows.md) for flow schema
|
|
110
|
+
|
|
111
|
+
- **`import`** (array) - Import flows (workspace → package, used by save)
|
|
112
|
+
- Minimum: Empty array `[]` (no save transformations)
|
|
113
|
+
- See: [Flows](./flows.md) for flow schema
|
|
114
|
+
|
|
115
|
+
**Note:** At least one of `export`, `import`, or `rootFile` must be defined.
|
|
116
|
+
|
|
117
|
+
#### Optional Fields
|
|
118
|
+
|
|
119
|
+
- **`rootFile`** (string) - Root file at project root
|
|
120
|
+
- Example: `"CLAUDE.md"`, `"GEMINI.md"`
|
|
121
|
+
- Used for: Additional detection signal
|
|
122
|
+
|
|
123
|
+
- **`aliases`** (string[]) - CLI-friendly shortcuts
|
|
124
|
+
- Example: `["cursorcli", "cursor-editor"]`
|
|
125
|
+
- Case-insensitive matching
|
|
126
|
+
|
|
127
|
+
- **`enabled`** (boolean) - Platform activation flag
|
|
128
|
+
- Default: `true`
|
|
129
|
+
- Use case: Disable built-in platforms without removing config
|
|
130
|
+
|
|
131
|
+
### Global Flows
|
|
132
|
+
|
|
133
|
+
Optional section for universal transformations that apply to all platforms:
|
|
134
|
+
|
|
135
|
+
```jsonc
|
|
136
|
+
{
|
|
137
|
+
"global": {
|
|
138
|
+
"flows": [
|
|
139
|
+
{ "from": "AGENTS.md", "to": "AGENTS.md" },
|
|
140
|
+
{ "from": "README.md", "to": "README.md" }
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Execution order:**
|
|
147
|
+
1. Global flows execute first
|
|
148
|
+
2. Platform-specific flows execute second
|
|
149
|
+
|
|
150
|
+
**Use cases:**
|
|
151
|
+
- Universal documentation files
|
|
152
|
+
- Shared configuration files
|
|
153
|
+
- Cross-platform root files
|
|
154
|
+
|
|
155
|
+
## Merge Behavior
|
|
156
|
+
|
|
157
|
+
### Merge Strategy
|
|
158
|
+
|
|
159
|
+
Configurations are **deep merged** with last-writer-wins semantics:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
workspace config
|
|
163
|
+
↓ merges over
|
|
164
|
+
global config
|
|
165
|
+
↓ merges over
|
|
166
|
+
built-in config
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Platform-Level Merging
|
|
170
|
+
|
|
171
|
+
**Add new platform:**
|
|
172
|
+
```jsonc
|
|
173
|
+
// workspace/.openpackage/platforms.jsonc
|
|
174
|
+
{
|
|
175
|
+
"my-custom-platform": {
|
|
176
|
+
"name": "My Platform",
|
|
177
|
+
"rootDir": ".myplatform",
|
|
178
|
+
"flows": [ /* ... */ ]
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Override existing platform:**
|
|
184
|
+
```jsonc
|
|
185
|
+
// workspace/.openpackage/platforms.jsonc
|
|
186
|
+
{
|
|
187
|
+
"cursor": {
|
|
188
|
+
"flows": [
|
|
189
|
+
// Completely replaces built-in flows
|
|
190
|
+
{ "from": "rules/*.md", "to": ".cursor/custom/*.md" }
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Disable platform:**
|
|
197
|
+
```jsonc
|
|
198
|
+
// workspace/.openpackage/platforms.jsonc
|
|
199
|
+
{
|
|
200
|
+
"windsurf": {
|
|
201
|
+
"enabled": false // Platform exists but won't execute
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Field-Level Merging
|
|
207
|
+
|
|
208
|
+
| Field | Merge Behavior | Example |
|
|
209
|
+
|-------|----------------|---------|
|
|
210
|
+
| `name` | Replace | Workspace value replaces built-in |
|
|
211
|
+
| `rootDir` | Replace | Workspace value replaces built-in |
|
|
212
|
+
| `rootFile` | Replace | Workspace value replaces built-in |
|
|
213
|
+
| `aliases` | Replace | Workspace array replaces built-in array |
|
|
214
|
+
| `enabled` | Replace | Workspace boolean replaces built-in |
|
|
215
|
+
| `flows` | Replace | Workspace flows replace built-in flows entirely |
|
|
216
|
+
|
|
217
|
+
**Important:** Flows are **not merged** at array level. The entire `flows` array is replaced.
|
|
218
|
+
|
|
219
|
+
### Global Flows Merging
|
|
220
|
+
|
|
221
|
+
Global flows are merged at the array level:
|
|
222
|
+
|
|
223
|
+
```jsonc
|
|
224
|
+
// built-in
|
|
225
|
+
{ "global": { "flows": [A, B] } }
|
|
226
|
+
|
|
227
|
+
// workspace override
|
|
228
|
+
{ "global": { "flows": [C] } }
|
|
229
|
+
|
|
230
|
+
// result
|
|
231
|
+
{ "global": { "flows": [C] } } // Workspace replaces built-in
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Validation
|
|
235
|
+
|
|
236
|
+
### Load-Time Validation
|
|
237
|
+
|
|
238
|
+
Configurations are validated when loaded:
|
|
239
|
+
|
|
240
|
+
- **Required fields** - Must be present and non-empty
|
|
241
|
+
- **Type checking** - Fields must match expected types
|
|
242
|
+
- **Unique IDs** - Platform IDs must be unique
|
|
243
|
+
- **Flow schema** - Each flow must be valid
|
|
244
|
+
|
|
245
|
+
**On error:**
|
|
246
|
+
```
|
|
247
|
+
Error: Platform 'cursor': missing required field 'rootDir'
|
|
248
|
+
Error: Platform 'claude': invalid flow at index 2: missing 'from' field
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Manual Validation
|
|
252
|
+
|
|
253
|
+
Validate configuration explicitly:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# Validate current workspace configuration
|
|
257
|
+
opkg validate platforms
|
|
258
|
+
|
|
259
|
+
# Strict mode (comprehensive checks)
|
|
260
|
+
opkg validate platforms --strict
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Validation checks:**
|
|
264
|
+
- Schema compliance
|
|
265
|
+
- Required fields present
|
|
266
|
+
- Valid transform names
|
|
267
|
+
- Valid JSONPath expressions
|
|
268
|
+
- No circular dependencies
|
|
269
|
+
|
|
270
|
+
## Schema Versioning
|
|
271
|
+
|
|
272
|
+
### JSON Schema Reference
|
|
273
|
+
|
|
274
|
+
Reference the JSON Schema for IDE support:
|
|
275
|
+
|
|
276
|
+
```jsonc
|
|
277
|
+
{
|
|
278
|
+
"$schema": "./node_modules/opkg-cli/schemas/platforms-v1.json",
|
|
279
|
+
|
|
280
|
+
"cursor": { /* ... */ }
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Benefits:**
|
|
285
|
+
- Autocomplete in VS Code, Cursor, etc.
|
|
286
|
+
- Inline error detection
|
|
287
|
+
- Field documentation on hover
|
|
288
|
+
|
|
289
|
+
### Schema Versions
|
|
290
|
+
|
|
291
|
+
- **v1** - Current version with flows-based configuration
|
|
292
|
+
- Version inferred from schema path or CLI version
|
|
293
|
+
|
|
294
|
+
### Schema Location Options
|
|
295
|
+
|
|
296
|
+
**Relative to node_modules:**
|
|
297
|
+
```jsonc
|
|
298
|
+
{ "$schema": "./node_modules/opkg-cli/schemas/platforms-v1.json" }
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**Relative to workspace:**
|
|
302
|
+
```jsonc
|
|
303
|
+
{ "$schema": "./schemas/platforms-v1.json" }
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Absolute URL (for global config):**
|
|
307
|
+
```jsonc
|
|
308
|
+
{ "$schema": "https://cdn.openpackage.ai/schemas/platforms-v1.json" }
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Common Configuration Patterns
|
|
312
|
+
|
|
313
|
+
### Pattern 1: Global Override
|
|
314
|
+
|
|
315
|
+
Customize a built-in platform for all projects:
|
|
316
|
+
|
|
317
|
+
```jsonc
|
|
318
|
+
// ~/.openpackage/platforms.jsonc
|
|
319
|
+
{
|
|
320
|
+
"cursor": {
|
|
321
|
+
"flows": [
|
|
322
|
+
{
|
|
323
|
+
"from": "rules/*.md",
|
|
324
|
+
"to": ".cursor/my-rules/*.mdc"
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Pattern 2: Workspace Customization
|
|
332
|
+
|
|
333
|
+
Override for specific project:
|
|
334
|
+
|
|
335
|
+
```jsonc
|
|
336
|
+
// <workspace>/.openpackage/platforms.jsonc
|
|
337
|
+
{
|
|
338
|
+
"cursor": {
|
|
339
|
+
"rootDir": ".cursor-custom", // Non-standard directory
|
|
340
|
+
"flows": [
|
|
341
|
+
{ "from": "rules/*.md", "to": ".cursor-custom/rules/*.md" }
|
|
342
|
+
]
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Pattern 3: Custom Platform
|
|
348
|
+
|
|
349
|
+
Add support for proprietary platform:
|
|
350
|
+
|
|
351
|
+
```jsonc
|
|
352
|
+
// <workspace>/.openpackage/platforms.jsonc
|
|
353
|
+
{
|
|
354
|
+
"my-ai-platform": {
|
|
355
|
+
"name": "My AI Platform",
|
|
356
|
+
"rootDir": ".myai",
|
|
357
|
+
"rootFile": "MYAI.md",
|
|
358
|
+
"flows": [
|
|
359
|
+
{ "from": "rules/*.md", "to": ".myai/prompts/*.md" },
|
|
360
|
+
{ "from": "agents/*.md", "to": ".myai/assistants/*.yaml" }
|
|
361
|
+
]
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Pattern 4: Disable Platforms
|
|
367
|
+
|
|
368
|
+
Prevent flows from executing:
|
|
369
|
+
|
|
370
|
+
```jsonc
|
|
371
|
+
// <workspace>/.openpackage/platforms.jsonc
|
|
372
|
+
{
|
|
373
|
+
"windsurf": { "enabled": false },
|
|
374
|
+
"cline": { "enabled": false },
|
|
375
|
+
"roo-code": { "enabled": false }
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Pattern 5: Minimal Override
|
|
380
|
+
|
|
381
|
+
Keep built-in flows but change one setting:
|
|
382
|
+
|
|
383
|
+
```jsonc
|
|
384
|
+
// <workspace>/.openpackage/platforms.jsonc
|
|
385
|
+
{
|
|
386
|
+
"cursor": {
|
|
387
|
+
"rootDir": ".cursor-v2"
|
|
388
|
+
// Note: Must re-specify flows or they'll be lost
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
**Warning:** Partial overrides require re-specifying `flows` array.
|
|
394
|
+
|
|
395
|
+
## Adding Custom Platforms
|
|
396
|
+
|
|
397
|
+
### Step 1: Define Platform
|
|
398
|
+
|
|
399
|
+
Create workspace config:
|
|
400
|
+
|
|
401
|
+
```jsonc
|
|
402
|
+
// <workspace>/.openpackage/platforms.jsonc
|
|
403
|
+
{
|
|
404
|
+
"my-platform": {
|
|
405
|
+
"name": "My Platform",
|
|
406
|
+
"rootDir": ".myplatform",
|
|
407
|
+
"flows": [] // Start with empty flows
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### Step 2: Create Platform Directory
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
mkdir .myplatform
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Step 3: Add Flows
|
|
419
|
+
|
|
420
|
+
```jsonc
|
|
421
|
+
{
|
|
422
|
+
"my-platform": {
|
|
423
|
+
"name": "My Platform",
|
|
424
|
+
"rootDir": ".myplatform",
|
|
425
|
+
"flows": [
|
|
426
|
+
{
|
|
427
|
+
"from": "rules/*.md",
|
|
428
|
+
"to": ".myplatform/rules/*.md"
|
|
429
|
+
}
|
|
430
|
+
]
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Step 4: Test
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# Validate configuration
|
|
439
|
+
opkg validate platforms
|
|
440
|
+
|
|
441
|
+
# Test with dry-run
|
|
442
|
+
opkg install @user/some-package --dry-run
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Step 5: Iterate
|
|
446
|
+
|
|
447
|
+
Add more flows as needed. See [Flow Reference](./flow-reference.md) for all options.
|
|
448
|
+
|
|
449
|
+
## Configuration Tips
|
|
450
|
+
|
|
451
|
+
### 1. Start Simple
|
|
452
|
+
|
|
453
|
+
Begin with minimal flows and add complexity incrementally:
|
|
454
|
+
|
|
455
|
+
```jsonc
|
|
456
|
+
{
|
|
457
|
+
"flows": [
|
|
458
|
+
{ "from": "rules/*.md", "to": ".platform/rules/*.md" }
|
|
459
|
+
]
|
|
460
|
+
}
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### 2. Test Changes
|
|
464
|
+
|
|
465
|
+
Always validate and dry-run:
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
opkg validate platforms --strict
|
|
469
|
+
opkg install @user/package --dry-run
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### 3. Version Control
|
|
473
|
+
|
|
474
|
+
Commit workspace config to share with team:
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
git add .openpackage/platforms.jsonc
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### 4. Document Overrides
|
|
481
|
+
|
|
482
|
+
Add comments explaining why you override:
|
|
483
|
+
|
|
484
|
+
```jsonc
|
|
485
|
+
{
|
|
486
|
+
"cursor": {
|
|
487
|
+
// Custom directory structure for monorepo
|
|
488
|
+
"rootDir": ".cursor-workspace",
|
|
489
|
+
"flows": [ /* ... */ ]
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### 5. Use Schema
|
|
495
|
+
|
|
496
|
+
Reference schema for IDE support:
|
|
497
|
+
|
|
498
|
+
```jsonc
|
|
499
|
+
{
|
|
500
|
+
"$schema": "./node_modules/opkg-cli/schemas/platforms-v1.json"
|
|
501
|
+
}
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
## Troubleshooting
|
|
505
|
+
|
|
506
|
+
### Configuration Not Loading
|
|
507
|
+
|
|
508
|
+
**Check file location:**
|
|
509
|
+
```bash
|
|
510
|
+
ls -la ~/.openpackage/platforms.jsonc
|
|
511
|
+
ls -la .openpackage/platforms.jsonc
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
**Check JSON syntax:**
|
|
515
|
+
```bash
|
|
516
|
+
opkg validate platforms
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### Flows Not Executing
|
|
520
|
+
|
|
521
|
+
**Check platform detection:**
|
|
522
|
+
```bash
|
|
523
|
+
opkg status # Shows detected platforms
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
**Check enabled flag:**
|
|
527
|
+
```jsonc
|
|
528
|
+
{
|
|
529
|
+
"cursor": {
|
|
530
|
+
"enabled": true // Must be true or omitted
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### Merge Not Working
|
|
536
|
+
|
|
537
|
+
**Remember:** Flows array is replaced entirely, not merged.
|
|
538
|
+
|
|
539
|
+
**Solution:** Copy built-in flows if you want to extend:
|
|
540
|
+
```jsonc
|
|
541
|
+
{
|
|
542
|
+
"cursor": {
|
|
543
|
+
"flows": [
|
|
544
|
+
// Copy built-in flows here
|
|
545
|
+
{ "from": "rules/*.md", "to": ".cursor/rules/*.mdc" },
|
|
546
|
+
// Add your custom flow
|
|
547
|
+
{ "from": "custom/*.md", "to": ".cursor/custom/*.md" }
|
|
548
|
+
]
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### Schema Errors
|
|
554
|
+
|
|
555
|
+
**Update schema path** if moved:
|
|
556
|
+
```jsonc
|
|
557
|
+
{
|
|
558
|
+
"$schema": "./node_modules/opkg-cli/schemas/platforms-v1.json"
|
|
559
|
+
}
|
|
560
|
+
```
|
|
561
|
+
|
|
562
|
+
**Reinstall CLI** if schema missing:
|
|
563
|
+
```bash
|
|
564
|
+
npm install -g opkg-cli
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
## Next Steps
|
|
568
|
+
|
|
569
|
+
- **Learn flow syntax:** See [Flows](./flows.md)
|
|
570
|
+
- **View flow options:** See [Flow Reference](./flow-reference.md)
|
|
571
|
+
- **See examples:** See [Examples](./examples.md)
|