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,697 @@
|
|
|
1
|
+
# Platform Troubleshooting
|
|
2
|
+
|
|
3
|
+
Debug, validate, and fix common issues with the platform system.
|
|
4
|
+
|
|
5
|
+
## Common Errors
|
|
6
|
+
|
|
7
|
+
### Error: "Platform not detected"
|
|
8
|
+
|
|
9
|
+
**Symptom:**
|
|
10
|
+
```bash
|
|
11
|
+
opkg status
|
|
12
|
+
# Output:
|
|
13
|
+
✗ Cursor not detected
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Possible causes:**
|
|
17
|
+
|
|
18
|
+
1. **Root directory missing**
|
|
19
|
+
```bash
|
|
20
|
+
# Check if directory exists
|
|
21
|
+
ls -la .cursor
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Solution:** Create directory
|
|
25
|
+
```bash
|
|
26
|
+
mkdir .cursor
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. **Root file missing** (for platforms with root files)
|
|
30
|
+
```bash
|
|
31
|
+
# Check if root file exists
|
|
32
|
+
ls -la CLAUDE.md
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Solution:** Create root file or root directory
|
|
36
|
+
|
|
37
|
+
3. **Wrong directory name** (case-sensitive on Linux/Mac)
|
|
38
|
+
```bash
|
|
39
|
+
# Wrong:
|
|
40
|
+
.Cursor/ # Capital C
|
|
41
|
+
.cursor_v2/ # Different name
|
|
42
|
+
|
|
43
|
+
# Correct:
|
|
44
|
+
.cursor/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
4. **Custom rootDir not created**
|
|
48
|
+
```jsonc
|
|
49
|
+
{
|
|
50
|
+
"cursor": {
|
|
51
|
+
"rootDir": ".cursor-custom"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Solution:** Create custom directory
|
|
57
|
+
```bash
|
|
58
|
+
mkdir .cursor-custom
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Error: "Flows not executing"
|
|
62
|
+
|
|
63
|
+
**Symptom:** Files not transformed or written to workspace.
|
|
64
|
+
|
|
65
|
+
**Possible causes:**
|
|
66
|
+
|
|
67
|
+
1. **Platform disabled**
|
|
68
|
+
```jsonc
|
|
69
|
+
{
|
|
70
|
+
"cursor": {
|
|
71
|
+
"enabled": false // ← Problem
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Solution:** Remove or set to `true`
|
|
77
|
+
|
|
78
|
+
2. **Conditional flow not met**
|
|
79
|
+
```jsonc
|
|
80
|
+
{
|
|
81
|
+
"when": { "platform": "claude" } // But Cursor detected
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Solution:** Check condition matches detected platforms
|
|
86
|
+
|
|
87
|
+
3. **Invalid flow syntax**
|
|
88
|
+
```bash
|
|
89
|
+
opkg validate platforms --strict
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Solution:** Fix validation errors
|
|
93
|
+
|
|
94
|
+
4. **Source file missing in package**
|
|
95
|
+
```jsonc
|
|
96
|
+
{
|
|
97
|
+
"from": "rules/nonexistent.md" // File doesn't exist
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Solution:** Verify source files exist in package
|
|
102
|
+
|
|
103
|
+
### Error: "Invalid flow schema"
|
|
104
|
+
|
|
105
|
+
**Symptom:**
|
|
106
|
+
```
|
|
107
|
+
Error: Flow missing required field 'from'
|
|
108
|
+
Error: Flow missing required field 'to'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Solution:** Add required fields
|
|
112
|
+
```jsonc
|
|
113
|
+
{
|
|
114
|
+
"from": "rules/**/*.md", // Required
|
|
115
|
+
"to": ".cursor/rules/**/*.mdc" // Required
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Error: "Transform not found"
|
|
120
|
+
|
|
121
|
+
**Symptom:**
|
|
122
|
+
```
|
|
123
|
+
Error: Unknown transform 'unknown-transform' in pipe
|
|
124
|
+
Available: [jsonc, yaml, toml, merge, ...]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Solution:** Use valid transform name
|
|
128
|
+
```jsonc
|
|
129
|
+
{
|
|
130
|
+
"pipe": ["yaml"] // Valid built-in transform
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
See [Flow Reference](./flow-reference.md#built-in-transforms) for all transforms.
|
|
135
|
+
|
|
136
|
+
### Error: "Invalid JSONPath"
|
|
137
|
+
|
|
138
|
+
**Symptom:**
|
|
139
|
+
```
|
|
140
|
+
Error: Invalid JSONPath expression: '$.invalid..path'
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Solution:** Fix JSONPath syntax
|
|
144
|
+
```jsonc
|
|
145
|
+
{
|
|
146
|
+
"path": "$.servers" // Valid JSONPath
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Common JSONPath patterns:**
|
|
151
|
+
```jsonc
|
|
152
|
+
"$.editor" // Extract editor object
|
|
153
|
+
"$.servers.*" // All servers
|
|
154
|
+
"$.servers[0]" // First server
|
|
155
|
+
"$.servers[?(@.enabled)]" // Filter servers
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Error: "Circular dependency"
|
|
159
|
+
|
|
160
|
+
**Symptom:**
|
|
161
|
+
```
|
|
162
|
+
Error: Circular dependency detected: A → B → A
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Solution:** Remove circular references in flows. Flows should be unidirectional (package → workspace).
|
|
166
|
+
|
|
167
|
+
### Warning: "Package overwrites content"
|
|
168
|
+
|
|
169
|
+
**Symptom:**
|
|
170
|
+
```
|
|
171
|
+
Warning: Package @user/b overwrites content from @user/a in .cursor/mcp.json
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Not an error** - Expected behavior for multi-package composition.
|
|
175
|
+
|
|
176
|
+
**Solutions:**
|
|
177
|
+
|
|
178
|
+
1. **Use namespace isolation**
|
|
179
|
+
```jsonc
|
|
180
|
+
{
|
|
181
|
+
"namespace": true,
|
|
182
|
+
"merge": "deep"
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
2. **Use deep merge** (if not already)
|
|
187
|
+
```jsonc
|
|
188
|
+
{
|
|
189
|
+
"merge": "deep"
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
3. **Review package priority** - Later packages override earlier ones
|
|
194
|
+
|
|
195
|
+
## Validation
|
|
196
|
+
|
|
197
|
+
### Validate Configuration
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Basic validation
|
|
201
|
+
opkg validate platforms
|
|
202
|
+
|
|
203
|
+
# Comprehensive validation
|
|
204
|
+
opkg validate platforms --strict
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**What it checks:**
|
|
208
|
+
- Required fields present
|
|
209
|
+
- Valid types
|
|
210
|
+
- Transform names exist
|
|
211
|
+
- JSONPath syntax valid
|
|
212
|
+
- No circular dependencies
|
|
213
|
+
- Schema compliance
|
|
214
|
+
|
|
215
|
+
**Example output:**
|
|
216
|
+
```
|
|
217
|
+
✓ Configuration valid
|
|
218
|
+
✓ Platform 'cursor': 4 flows valid
|
|
219
|
+
✓ Platform 'claude': 3 flows valid
|
|
220
|
+
✗ Platform 'custom': Flow 1 missing 'to' field
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Validate Specific Platform
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
opkg validate platforms --platform=cursor
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### JSON Output for Scripting
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
opkg validate platforms --json
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"valid": false,
|
|
238
|
+
"errors": [
|
|
239
|
+
{
|
|
240
|
+
"platform": "custom",
|
|
241
|
+
"flow": 1,
|
|
242
|
+
"error": "Missing required field 'to'"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Debugging
|
|
249
|
+
|
|
250
|
+
### Enable Debug Logging
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
# Debug flow execution
|
|
254
|
+
DEBUG=opkg:flows opkg install @user/package
|
|
255
|
+
|
|
256
|
+
# Debug all platform operations
|
|
257
|
+
DEBUG=opkg:platforms,opkg:flows opkg install @user/package
|
|
258
|
+
|
|
259
|
+
# Debug everything
|
|
260
|
+
DEBUG=opkg:* opkg install @user/package
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Example output:**
|
|
264
|
+
```
|
|
265
|
+
[flows] Loading platforms config...
|
|
266
|
+
[flows] Detected platforms: cursor, claude
|
|
267
|
+
[flows] Executing flow: rules/**/*.md → .cursor/rules/**/*.mdc
|
|
268
|
+
[flows] Matched file: rules/typescript.md
|
|
269
|
+
[flows] Loading source: rules/typescript.md
|
|
270
|
+
[flows] Parsing format: markdown
|
|
271
|
+
[flows] Applying transforms: none
|
|
272
|
+
[flows] Writing target: .cursor/rules/typescript.mdc
|
|
273
|
+
[flows] ✓ Success
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Dry-Run Mode
|
|
277
|
+
|
|
278
|
+
Preview without writing files:
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
opkg install @user/package --dry-run
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**Output:**
|
|
285
|
+
```
|
|
286
|
+
Would create:
|
|
287
|
+
.cursor/rules/typescript.mdc
|
|
288
|
+
.cursor/rules/python.mdc
|
|
289
|
+
.cursor/mcp.json (merged)
|
|
290
|
+
|
|
291
|
+
Would update:
|
|
292
|
+
.cursor/settings.json (deep merge)
|
|
293
|
+
|
|
294
|
+
Would skip:
|
|
295
|
+
.windsurf/ (platform not detected)
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Inspect Flow Execution
|
|
299
|
+
|
|
300
|
+
Show detailed flow information:
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
opkg show platforms --platform=cursor
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Output:**
|
|
307
|
+
```
|
|
308
|
+
Platform: Cursor
|
|
309
|
+
ID: cursor
|
|
310
|
+
Root Directory: .cursor
|
|
311
|
+
Enabled: true
|
|
312
|
+
|
|
313
|
+
Flows:
|
|
314
|
+
1. rules/**/*.md → .cursor/rules/**/*.mdc
|
|
315
|
+
2. mcp.jsonc → .cursor/mcp.json
|
|
316
|
+
- namespace: true
|
|
317
|
+
- merge: deep
|
|
318
|
+
3. settings.jsonc → .cursor/settings.json
|
|
319
|
+
- map: theme → workbench.colorTheme
|
|
320
|
+
- merge: deep
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Check Platform Detection
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
opkg status
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Output:**
|
|
330
|
+
```
|
|
331
|
+
Detected platforms:
|
|
332
|
+
✓ Cursor (.cursor/)
|
|
333
|
+
✓ Claude (CLAUDE.md)
|
|
334
|
+
✗ Windsurf
|
|
335
|
+
✗ Gemini
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### List Available Platforms
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
opkg platforms list
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
**Output:**
|
|
345
|
+
```
|
|
346
|
+
Available platforms:
|
|
347
|
+
cursor Cursor enabled
|
|
348
|
+
claude Claude Code enabled
|
|
349
|
+
windsurf Windsurf enabled
|
|
350
|
+
gemini Gemini Code disabled
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Common Issues
|
|
354
|
+
|
|
355
|
+
### Issue: Files in Wrong Directory
|
|
356
|
+
|
|
357
|
+
**Problem:**
|
|
358
|
+
```
|
|
359
|
+
Expected: .cursor/rules/typescript.mdc
|
|
360
|
+
Actual: .cursor/typescript.mdc
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**Cause:** Incorrect `to` path
|
|
364
|
+
|
|
365
|
+
**Solution:** Check flow target includes subdirectory
|
|
366
|
+
```jsonc
|
|
367
|
+
{
|
|
368
|
+
"from": "rules/**/*.md",
|
|
369
|
+
"to": ".cursor/rules/**/*.mdc" // Include 'rules/' subdirectory
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Issue: Extension Not Changed
|
|
374
|
+
|
|
375
|
+
**Problem:**
|
|
376
|
+
```
|
|
377
|
+
Expected: typescript.mdc
|
|
378
|
+
Actual: typescript.md
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**Cause:** Target extension not specified
|
|
382
|
+
|
|
383
|
+
**Solution:** Specify correct extension in flow
|
|
384
|
+
```jsonc
|
|
385
|
+
{
|
|
386
|
+
"from": "rules/**/*.md",
|
|
387
|
+
"to": ".cursor/rules/**/*.mdc" // Explicit .mdc extension
|
|
388
|
+
}
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Issue: Merge Not Working
|
|
392
|
+
|
|
393
|
+
**Problem:** New content replaces existing instead of merging
|
|
394
|
+
|
|
395
|
+
**Cause:** Missing or wrong merge strategy
|
|
396
|
+
|
|
397
|
+
**Solution:** Use explicit merge strategy
|
|
398
|
+
```jsonc
|
|
399
|
+
{
|
|
400
|
+
"from": "mcp.jsonc",
|
|
401
|
+
"to": ".cursor/mcp.json",
|
|
402
|
+
"merge": "deep" // Explicitly set merge
|
|
403
|
+
}
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**Remember:**
|
|
407
|
+
- Default merge strategy is `"replace"` for arrays/primitives
|
|
408
|
+
- Use `"deep"` for object composition
|
|
409
|
+
- Use `"shallow"` for top-level merge only
|
|
410
|
+
|
|
411
|
+
### Issue: Keys Not Mapping
|
|
412
|
+
|
|
413
|
+
**Problem:** Keys not renamed as expected
|
|
414
|
+
|
|
415
|
+
**Cause:** Incorrect key mapping syntax
|
|
416
|
+
|
|
417
|
+
**Solution:** Use correct dot notation
|
|
418
|
+
```jsonc
|
|
419
|
+
{
|
|
420
|
+
"map": {
|
|
421
|
+
"theme": "workbench.colorTheme" // Correct: dot notation
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**Common mistakes:**
|
|
427
|
+
```jsonc
|
|
428
|
+
{
|
|
429
|
+
"map": {
|
|
430
|
+
"theme": "workbench/colorTheme" // Wrong: slash
|
|
431
|
+
"theme": "workbench->colorTheme" // Wrong: arrow
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### Issue: Format Not Converting
|
|
437
|
+
|
|
438
|
+
**Problem:** YAML stays YAML instead of converting to JSON
|
|
439
|
+
|
|
440
|
+
**Cause:** Target extension doesn't match desired format
|
|
441
|
+
|
|
442
|
+
**Solution:** Use correct target extension
|
|
443
|
+
```jsonc
|
|
444
|
+
{
|
|
445
|
+
"from": "config.yaml",
|
|
446
|
+
"to": ".cursor/config.json" // .json extension triggers conversion
|
|
447
|
+
}
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Auto-detected formats:**
|
|
451
|
+
- `.json`, `.jsonc` → JSON
|
|
452
|
+
- `.yaml`, `.yml` → YAML
|
|
453
|
+
- `.toml` → TOML
|
|
454
|
+
- `.md` → Markdown
|
|
455
|
+
|
|
456
|
+
### Issue: Namespace Not Applied
|
|
457
|
+
|
|
458
|
+
**Problem:** Content not wrapped in namespace
|
|
459
|
+
|
|
460
|
+
**Cause:** `namespace` not specified
|
|
461
|
+
|
|
462
|
+
**Solution:** Enable namespace
|
|
463
|
+
```jsonc
|
|
464
|
+
{
|
|
465
|
+
"from": "mcp.jsonc",
|
|
466
|
+
"to": ".cursor/mcp.json",
|
|
467
|
+
"namespace": true, // Add this
|
|
468
|
+
"merge": "deep"
|
|
469
|
+
}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### Issue: Conditional Flow Always Skipped
|
|
473
|
+
|
|
474
|
+
**Problem:** Flow never executes
|
|
475
|
+
|
|
476
|
+
**Cause:** Condition never true
|
|
477
|
+
|
|
478
|
+
**Debug:**
|
|
479
|
+
```bash
|
|
480
|
+
opkg status # Check detected platforms
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
**Solution:** Fix condition to match environment
|
|
484
|
+
```jsonc
|
|
485
|
+
{
|
|
486
|
+
"when": { "platform": "cursor" } // Make sure Cursor is detected
|
|
487
|
+
}
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Issue: Multiple Packages Conflicting
|
|
491
|
+
|
|
492
|
+
**Problem:** Last package overwrites previous packages
|
|
493
|
+
|
|
494
|
+
**Cause:** No namespace isolation
|
|
495
|
+
|
|
496
|
+
**Solution:** Use namespace + merge
|
|
497
|
+
```jsonc
|
|
498
|
+
{
|
|
499
|
+
"namespace": true,
|
|
500
|
+
"merge": "deep"
|
|
501
|
+
}
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
### Issue: Performance Slow
|
|
505
|
+
|
|
506
|
+
**Problem:** Installation takes too long
|
|
507
|
+
|
|
508
|
+
**Possible causes:**
|
|
509
|
+
|
|
510
|
+
1. **Too many platforms enabled**
|
|
511
|
+
|
|
512
|
+
**Solution:** Disable unused platforms
|
|
513
|
+
```jsonc
|
|
514
|
+
{
|
|
515
|
+
"unused-platform": { "enabled": false }
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
2. **Complex flows on all files**
|
|
520
|
+
|
|
521
|
+
**Solution:** Use conditionals to skip unnecessary work
|
|
522
|
+
```jsonc
|
|
523
|
+
{
|
|
524
|
+
"when": { "exists": "config.yaml" }
|
|
525
|
+
}
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
3. **Deep merges on large files**
|
|
529
|
+
|
|
530
|
+
**Solution:** Use shallow merge if possible
|
|
531
|
+
```jsonc
|
|
532
|
+
{
|
|
533
|
+
"merge": "shallow"
|
|
534
|
+
}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
## Performance Tips
|
|
538
|
+
|
|
539
|
+
### 1. Simple Flows Are Fastest
|
|
540
|
+
|
|
541
|
+
```jsonc
|
|
542
|
+
{
|
|
543
|
+
"from": "rules/**/*.md",
|
|
544
|
+
"to": ".cursor/rules/**/*.mdc"
|
|
545
|
+
}
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
Direct copy with no transforms is optimized.
|
|
549
|
+
|
|
550
|
+
### 2. Use Conditionals
|
|
551
|
+
|
|
552
|
+
Skip unnecessary work:
|
|
553
|
+
|
|
554
|
+
```jsonc
|
|
555
|
+
{
|
|
556
|
+
"when": { "platform": "cursor" } // Skip if Cursor not detected
|
|
557
|
+
}
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
### 3. Multi-Target Reuses Parsing
|
|
561
|
+
|
|
562
|
+
```jsonc
|
|
563
|
+
{
|
|
564
|
+
"from": "config.yaml",
|
|
565
|
+
"to": {
|
|
566
|
+
".cursor/config.json": {},
|
|
567
|
+
".claude/config.json": {}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
Source parsed once, serialized twice.
|
|
573
|
+
|
|
574
|
+
### 4. Disable Unused Platforms
|
|
575
|
+
|
|
576
|
+
```jsonc
|
|
577
|
+
{
|
|
578
|
+
"windsurf": { "enabled": false },
|
|
579
|
+
"cline": { "enabled": false }
|
|
580
|
+
}
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
### 5. Shallow Merge When Possible
|
|
584
|
+
|
|
585
|
+
```jsonc
|
|
586
|
+
{
|
|
587
|
+
"merge": "shallow" // Faster than deep
|
|
588
|
+
}
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
## Validation Checklist
|
|
592
|
+
|
|
593
|
+
Before deploying configuration:
|
|
594
|
+
|
|
595
|
+
- [ ] Run `opkg validate platforms --strict`
|
|
596
|
+
- [ ] Test with `--dry-run`
|
|
597
|
+
- [ ] Check platform detection with `opkg status`
|
|
598
|
+
- [ ] Verify files written to correct locations
|
|
599
|
+
- [ ] Test with multiple packages for conflicts
|
|
600
|
+
- [ ] Enable debug logging for complex flows
|
|
601
|
+
- [ ] Document custom flows with comments
|
|
602
|
+
|
|
603
|
+
## Getting Help
|
|
604
|
+
|
|
605
|
+
### CLI Help
|
|
606
|
+
|
|
607
|
+
```bash
|
|
608
|
+
opkg --help
|
|
609
|
+
opkg platforms --help
|
|
610
|
+
opkg validate --help
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
### Show Configuration
|
|
614
|
+
|
|
615
|
+
```bash
|
|
616
|
+
# Show merged configuration
|
|
617
|
+
opkg show platforms
|
|
618
|
+
|
|
619
|
+
# Show specific platform
|
|
620
|
+
opkg show platforms --platform=cursor
|
|
621
|
+
|
|
622
|
+
# JSON output
|
|
623
|
+
opkg show platforms --json
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
### Report Issues
|
|
627
|
+
|
|
628
|
+
When reporting issues, include:
|
|
629
|
+
|
|
630
|
+
1. **Configuration files**
|
|
631
|
+
```bash
|
|
632
|
+
cat .openpackage/platforms.jsonc
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
2. **Platform detection**
|
|
636
|
+
```bash
|
|
637
|
+
opkg status
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
3. **Validation output**
|
|
641
|
+
```bash
|
|
642
|
+
opkg validate platforms --strict
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
4. **Debug logs**
|
|
646
|
+
```bash
|
|
647
|
+
DEBUG=opkg:* opkg install @user/package 2>&1 | tee debug.log
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
5. **Package structure**
|
|
651
|
+
```bash
|
|
652
|
+
tree -L 2 node_modules/@user/package
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
## Quick Reference
|
|
656
|
+
|
|
657
|
+
### Debug Commands
|
|
658
|
+
|
|
659
|
+
```bash
|
|
660
|
+
# Validate configuration
|
|
661
|
+
opkg validate platforms --strict
|
|
662
|
+
|
|
663
|
+
# Check detection
|
|
664
|
+
opkg status
|
|
665
|
+
|
|
666
|
+
# Show platform details
|
|
667
|
+
opkg show platforms --platform=cursor
|
|
668
|
+
|
|
669
|
+
# Dry-run installation
|
|
670
|
+
opkg install @user/package --dry-run
|
|
671
|
+
|
|
672
|
+
# Enable debug logging
|
|
673
|
+
DEBUG=opkg:flows opkg install @user/package
|
|
674
|
+
|
|
675
|
+
# List all platforms
|
|
676
|
+
opkg platforms list
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
### Common Fixes
|
|
680
|
+
|
|
681
|
+
| Problem | Solution |
|
|
682
|
+
|---------|----------|
|
|
683
|
+
| Platform not detected | Create root directory or root file |
|
|
684
|
+
| Flows not executing | Check `enabled: true`, validate flows |
|
|
685
|
+
| Files in wrong place | Check `to` path in flow |
|
|
686
|
+
| Extensions wrong | Specify extension in `to` path |
|
|
687
|
+
| Merge not working | Add `"merge": "deep"` |
|
|
688
|
+
| Keys not mapping | Use dot notation in `map` |
|
|
689
|
+
| Format not converting | Check target extension |
|
|
690
|
+
| Conflicts between packages | Use `"namespace": true` |
|
|
691
|
+
|
|
692
|
+
## Next Steps
|
|
693
|
+
|
|
694
|
+
- **Review configuration:** [Configuration](./configuration.md)
|
|
695
|
+
- **Learn flow syntax:** [Flows](./flows.md)
|
|
696
|
+
- **See examples:** [Examples](./examples.md)
|
|
697
|
+
- **View flow reference:** [Flow Reference](./flow-reference.md)
|