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
|
@@ -6,87 +6,69 @@ Packages contain two types of content:
|
|
|
6
6
|
|
|
7
7
|
| Type | Location | Description | Install Behavior |
|
|
8
8
|
|------|----------|-------------|------------------|
|
|
9
|
-
| **Universal content** | `<package-root
|
|
10
|
-
| **Root-level content** | `<package-root>/<path>`
|
|
9
|
+
| **Universal content** | `<package-root>/<subdir>/` | Platform-normalized files | Mapped to platform-specific paths |
|
|
10
|
+
| **Root-level content** | `<package-root>/<path>` | Any files/dirs at package root | Not installed unless under `root/` (copy-to-root) or a root file |
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
#### Universal Content Layout
|
|
14
|
+
#### Universal Content Layout
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Universal subdirs (standard: `agents/`, `rules/`, `commands/`, `skills/`; plus any custom defined in `platforms.jsonc`) are canonical at the **package root**. The full set is dynamically discovered from platform configs.
|
|
17
17
|
|
|
18
18
|
```text
|
|
19
19
|
<package-root>/
|
|
20
|
-
.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<name>.<platform>.yml # YAML override for frontmatter (optional)
|
|
26
|
-
rules/
|
|
27
|
-
...
|
|
28
|
-
commands/
|
|
29
|
-
...
|
|
30
|
-
skills/
|
|
31
|
-
...
|
|
32
|
-
<custom-subdirs>/ # any additional subdirs
|
|
33
|
-
...
|
|
20
|
+
openpackage.yml # package manifest
|
|
21
|
+
<universal-subdir>/ # e.g., agents/, rules/, commands/, skills/, or custom (from platforms.jsonc)
|
|
22
|
+
<name>.md # universal markdown
|
|
23
|
+
<name>.<platform>.md # platform-suffixed markdown (optional)
|
|
24
|
+
... # other standard/custom subdirs
|
|
34
25
|
```
|
|
35
26
|
|
|
36
27
|
**Definitions:**
|
|
37
28
|
|
|
38
29
|
- **Universal markdown**:
|
|
39
|
-
- Paths like
|
|
30
|
+
- Paths like `agents/foo.md`
|
|
40
31
|
- Contains shared body and (after save) shared frontmatter
|
|
41
32
|
|
|
42
33
|
- **Platform-suffixed markdown**:
|
|
43
|
-
- Paths like
|
|
34
|
+
- Paths like `agents/foo.<platform>.md`
|
|
44
35
|
- Represents platform-specific variants of a universal file
|
|
45
36
|
|
|
46
|
-
- **YAML override files**:
|
|
47
|
-
- Paths like `.openpackage/agents/foo.<platform>.yml`
|
|
48
|
-
- Contains only the **per-platform difference** in frontmatter
|
|
49
|
-
|
|
50
37
|
---
|
|
51
38
|
|
|
52
|
-
#### Root-Level Content
|
|
39
|
+
#### Root-Level Content
|
|
53
40
|
|
|
54
41
|
Root-level content lives at the package root, **not** under `.openpackage/`:
|
|
55
42
|
|
|
56
43
|
```text
|
|
57
44
|
<package-root>/
|
|
58
|
-
|
|
59
|
-
... # universal content inside
|
|
60
|
-
<root-dir>/ # any root-level directory
|
|
61
|
-
helper.md
|
|
62
|
-
prompts/
|
|
63
|
-
system.md
|
|
45
|
+
<root-dir>/ # any root-level directory (not installed by default)
|
|
64
46
|
AGENTS.md # root files
|
|
65
47
|
CLAUDE.md
|
|
66
48
|
README.md
|
|
67
49
|
```
|
|
68
50
|
|
|
69
51
|
Root-level content:
|
|
70
|
-
- Is
|
|
71
|
-
-
|
|
72
|
-
-
|
|
52
|
+
- Is **not installed** unless it is:
|
|
53
|
+
- A root file (`AGENTS.md` or platform root files), or
|
|
54
|
+
- Under `root/**` (copied to workspace root with prefix stripped).
|
|
73
55
|
|
|
74
56
|
---
|
|
75
57
|
|
|
76
|
-
#### Registry Paths (Keys in `
|
|
58
|
+
#### Registry Paths (Keys in `openpackage.index.yml`)
|
|
77
59
|
|
|
78
60
|
Registry paths are **relative to the package root**:
|
|
79
61
|
|
|
80
62
|
| Content Type | Example Registry Path |
|
|
81
63
|
|--------------|----------------------|
|
|
82
|
-
| Universal content |
|
|
83
|
-
| Root-level content | `<dir>/helper.md` |
|
|
64
|
+
| Universal content | `commands/test.md` |
|
|
84
65
|
| Root files | `AGENTS.md` |
|
|
66
|
+
| `root/` directory (direct copy) | `root/tools/helper.sh` |
|
|
85
67
|
|
|
86
68
|
**Rules:**
|
|
87
69
|
|
|
88
|
-
- Universal subdir content
|
|
89
|
-
- Root-level content uses its natural path (no prefix)
|
|
70
|
+
- Universal subdir content lives under the universal subdir name at package root
|
|
71
|
+
- Root-level content uses its natural path (no prefix) but is not installed by default
|
|
90
72
|
- Root files use their filename directly
|
|
91
73
|
|
|
92
74
|
---
|
|
@@ -97,15 +79,15 @@ Registry paths are **relative to the package root**:
|
|
|
97
79
|
|
|
98
80
|
| Registry Path | Installed Paths |
|
|
99
81
|
|---------------|-----------------|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
82
|
+
| `commands/test.md` | `.cursor/commands/test.md`, `.opencode/commands/test.md`, etc. |
|
|
83
|
+
| `rules/auth.md` | `.cursor/rules/auth.mdc`, etc. |
|
|
102
84
|
|
|
103
|
-
**Root-level content
|
|
85
|
+
**Root-level content**:
|
|
104
86
|
|
|
105
87
|
| Registry Path | Installed Path |
|
|
106
88
|
|---------------|----------------|
|
|
107
|
-
| `<dir>/helper.md` | `<dir>/helper.md` |
|
|
108
89
|
| `AGENTS.md` | `AGENTS.md` |
|
|
90
|
+
| `root/tools/helper.sh` | `tools/helper.sh` (strip `root/` prefix) |
|
|
109
91
|
|
|
110
92
|
---
|
|
111
93
|
|
|
@@ -113,9 +95,9 @@ Registry paths are **relative to the package root**:
|
|
|
113
95
|
|
|
114
96
|
These layouts apply identically whether the package lives at:
|
|
115
97
|
|
|
116
|
-
- **Workspace root**: `cwd/` (content at `cwd
|
|
117
|
-
- **Nested package**: `cwd/.openpackage/packages/<name>/` (content at `cwd/.openpackage/packages/<name
|
|
118
|
-
- **Registry**: `~/.openpackage/registry/<name>/<version>/` (content at
|
|
98
|
+
- **Workspace root**: `cwd/` (content at `cwd/<subdir>/...`)
|
|
99
|
+
- **Nested package**: `cwd/.openpackage/packages/<name>/` (content at `cwd/.openpackage/packages/<name>/<subdir>/...`)
|
|
100
|
+
- **Registry**: `~/.openpackage/registry/<name>/<version>/` (content at `.../<subdir>/...`)
|
|
119
101
|
|
|
120
102
|
---
|
|
121
103
|
|
|
@@ -123,22 +105,17 @@ These layouts apply identically whether the package lives at:
|
|
|
123
105
|
|
|
124
106
|
In the canonical structure:
|
|
125
107
|
|
|
126
|
-
- Each universal markdown file (
|
|
108
|
+
- Each universal markdown file (`<subdir>/<name>.md`) is the **single source of truth** for:
|
|
127
109
|
- Markdown body
|
|
128
110
|
- Shared frontmatter keys/common metadata
|
|
111
|
+
- Platform overrides embedded inline under `openpackage.<platform>` (ids/aliases, only diffs)
|
|
129
112
|
|
|
130
|
-
- Platform
|
|
131
|
-
|
|
132
|
-
```text
|
|
133
|
-
.openpackage/agents/foo.md # universal body + shared frontmatter
|
|
134
|
-
.openpackage/agents/foo.claude.yml # CLAUDE-specific frontmatter diff
|
|
135
|
-
.openpackage/agents/foo.claude.md # optional CLAUDE-specific markdown body
|
|
136
|
-
```
|
|
113
|
+
- Platform-specific content files (`<name>.<platform>.md`) remain optional body overrides.
|
|
137
114
|
|
|
138
115
|
The save pipeline:
|
|
139
116
|
|
|
140
117
|
1. Normalizes workspace markdown and computes:
|
|
141
118
|
- Universal frontmatter to keep in `foo.md`
|
|
142
|
-
- Per-platform differences to
|
|
143
|
-
2. Writes
|
|
119
|
+
- Per-platform differences to store as inline blocks under `openpackage.<platform>` inside `foo.md`
|
|
120
|
+
2. Writes only the universal file (plus any platform-specific markdown files)
|
|
144
121
|
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# Package Sources
|
|
2
|
+
|
|
3
|
+
All packages resolve to a filesystem **path** as the source of truth. Dependency declarations in `openpackage.yml` determine the type, with mutability enforced based on the resolved location.
|
|
4
|
+
|
|
5
|
+
## Source Types
|
|
6
|
+
|
|
7
|
+
### 1. Workspace Path (Mutable)
|
|
8
|
+
|
|
9
|
+
Local project-specific source.
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
packages:
|
|
13
|
+
- name: project-tools
|
|
14
|
+
path: ./.openpackage/packages/project-tools/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- Relative to workspace `openpackage.yml`.
|
|
18
|
+
- Full dev support: `save`, `add`, `pack`, `apply`.
|
|
19
|
+
- See [Directory Layout](directory-layout.md).
|
|
20
|
+
|
|
21
|
+
### 2. Global Path (Mutable)
|
|
22
|
+
|
|
23
|
+
Shared across workspaces.
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
packages:
|
|
27
|
+
- name: shared-rules
|
|
28
|
+
path: ~/.openpackage/packages/shared-rules/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- Tilde-expanded to user home.
|
|
32
|
+
- Same ops as workspace path.
|
|
33
|
+
|
|
34
|
+
### 3. Registry Version (Immutable)
|
|
35
|
+
|
|
36
|
+
From local registry; path inferred at runtime.
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
packages:
|
|
40
|
+
- name: community-pkg
|
|
41
|
+
version: ^1.2.0 # Range or exact; resolves to latest satisfying
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
- No `path:` written to yml (inferred from index post-install).
|
|
45
|
+
- Resolved dir: `~/.openpackage/registry/<name>/<resolved-version>/`.
|
|
46
|
+
- `apply`/`install` ok; `save`/`add` error (immutable).
|
|
47
|
+
|
|
48
|
+
### 4. Git Source (Typically Immutable)
|
|
49
|
+
|
|
50
|
+
Cloned to local path; mutability by location.
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
packages:
|
|
54
|
+
- name: git-pkg
|
|
55
|
+
git: https://github.com/user/repo.git
|
|
56
|
+
ref: main # Branch/tag/commit optional
|
|
57
|
+
subdirectory: packages/my-package # Optional (for monorepos/plugins)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- Cloned to `~/.openpackage/registry/...` (current impl; thus immutable).
|
|
61
|
+
- Ops: `apply`/`install` ok; `save`/`add` fail if in registry.
|
|
62
|
+
- Future: Could clone to mutable dir for editability.
|
|
63
|
+
- **Subdirectory support**: Allows installing from monorepo subdirectories or Claude Code plugin marketplaces.
|
|
64
|
+
- **Claude Code plugins**: Automatically detected via `.claude-plugin/plugin.json` or `.claude-plugin/marketplace.json`.
|
|
65
|
+
- See [Git Sources](install/git-sources.md) for install details including subdirectory syntax and plugin support.
|
|
66
|
+
|
|
67
|
+
Other: Absolute/custom paths treated by resolved location.
|
|
68
|
+
|
|
69
|
+
## Source Resolution Flow
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
1. Parse dep from openpackage.yml OR classify CLI input
|
|
73
|
+
2. Determine type:
|
|
74
|
+
- `path:` → Resolve (tilde/rel/abs); validate exists
|
|
75
|
+
- `version:` → Query registry for matching version → Infer path
|
|
76
|
+
- `git:` → Clone/fetch to local dir → Use resolved path
|
|
77
|
+
- Simple name → Search: workspace packages → global packages → registry
|
|
78
|
+
3. Classify mutability: registry/ → immutable; packages/ or custom → mutable
|
|
79
|
+
4. Ops proceed or error (e.g., save requires mutable)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Details in [Dependency Resolver](../core/dependency-resolver.ts); errors in [Install Errors](../core/install/install-errors.ts).
|
|
83
|
+
|
|
84
|
+
## Source Resolution Priority for Name-Based Install
|
|
85
|
+
|
|
86
|
+
When installing by package name (e.g., `opkg install my-package`):
|
|
87
|
+
|
|
88
|
+
1. **Existing dependency** (if in openpackage.yml)
|
|
89
|
+
- Respects declared `path:`, `git:`, or `version:`
|
|
90
|
+
|
|
91
|
+
2. **Workspace-local package**
|
|
92
|
+
- `./.openpackage/packages/my-package/`
|
|
93
|
+
- Mutable development source
|
|
94
|
+
- Always takes priority (override behavior)
|
|
95
|
+
|
|
96
|
+
3. **Global package vs Registry** (version-aware comparison)
|
|
97
|
+
- `~/.openpackage/packages/my-package/` vs `~/.openpackage/registry/my-package/<version>/`
|
|
98
|
+
- Compares versions, selects higher version
|
|
99
|
+
- Tie-breaker: prefer global (mutable)
|
|
100
|
+
|
|
101
|
+
4. **Single source fallback**
|
|
102
|
+
- If only global or only registry exists, use it
|
|
103
|
+
|
|
104
|
+
5. **Remote resolution**
|
|
105
|
+
- If no local sources, fetch from remote registry
|
|
106
|
+
|
|
107
|
+
This hierarchy supports:
|
|
108
|
+
- Local development takes precedence
|
|
109
|
+
- Global utilities available without paths
|
|
110
|
+
- Automatic version-aware resolution
|
|
111
|
+
- Published packages as stable fallback
|
|
112
|
+
- Explicit declarations always honored
|
|
113
|
+
|
|
114
|
+
**Example workflows**:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Create global package
|
|
118
|
+
$ opkg new my-utils --scope global
|
|
119
|
+
✓ Created ~/.openpackage/packages/my-utils/
|
|
120
|
+
|
|
121
|
+
# Install by name in any workspace
|
|
122
|
+
$ cd ~/project-a
|
|
123
|
+
$ opkg install my-utils
|
|
124
|
+
✓ Found my-utils in global packages
|
|
125
|
+
✓ Installed my-utils@0.1.0 from global packages
|
|
126
|
+
|
|
127
|
+
# Pack to registry
|
|
128
|
+
$ cd ~/.openpackage/packages/my-utils
|
|
129
|
+
$ opkg pack
|
|
130
|
+
✓ Packed my-utils@0.2.0 to registry
|
|
131
|
+
|
|
132
|
+
# Next install gets newer version
|
|
133
|
+
$ cd ~/project-b
|
|
134
|
+
$ opkg install my-utils
|
|
135
|
+
Resolving my-utils...
|
|
136
|
+
• Global packages: 0.1.0 (mutable)
|
|
137
|
+
• Registry: 0.2.0 (stable)
|
|
138
|
+
✓ Using my-utils@0.2.0 from registry (newer version)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Source Persistence on Install
|
|
142
|
+
|
|
143
|
+
When installing packages, the **source type declared in `openpackage.yml` is always respected**:
|
|
144
|
+
|
|
145
|
+
- **First install**: `opkg install /path/to/package` or `opkg install git:<url>` persists `path:` or `git:` in `openpackage.yml`
|
|
146
|
+
- **Subsequent installs**: `opkg install <package-name>` **always uses the declared source** (path/git/version) from the manifest
|
|
147
|
+
- **Consistency**: Both `opkg install` (no args) and `opkg install <name>` behave identically for existing dependencies
|
|
148
|
+
|
|
149
|
+
This ensures:
|
|
150
|
+
- Local development packages stay in sync with their source
|
|
151
|
+
- Git-based dependencies always pull from the declared repository
|
|
152
|
+
- The manifest is the single source of truth for dependency intent
|
|
153
|
+
|
|
154
|
+
**Example workflow**:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# First install from local path
|
|
158
|
+
$ opkg install /path/to/my-package
|
|
159
|
+
# → Stores: path: /path/to/my-package in openpackage.yml
|
|
160
|
+
|
|
161
|
+
# Later, install by name - uses the path
|
|
162
|
+
$ opkg install my-package
|
|
163
|
+
# → Output: ✓ Using path source from openpackage.yml: /path/to/my-package
|
|
164
|
+
# → Installs from /path/to/my-package (not registry)
|
|
165
|
+
|
|
166
|
+
# To switch to registry version:
|
|
167
|
+
# 1. Edit openpackage.yml: remove 'path:', add 'version: ^1.0.0'
|
|
168
|
+
# 2. Run: opkg install my-package
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
See [Install Behavior](install/install-behavior.md) for complete install semantics.
|
|
172
|
+
|
|
173
|
+
## Mutability Rules
|
|
174
|
+
|
|
175
|
+
| Source Type | `save` | `add` | `pack` | `apply` | `install` | Notes |
|
|
176
|
+
|----------------------------------|----------|---------|----------------------|---------|-----------|-------------------|
|
|
177
|
+
| Workspace/Global Path (`packages/`) | ✅ | ✅ | ✅ | ✅ | N/A | Mutable dev |
|
|
178
|
+
| Registry (`registry/<name>/<ver>/`) | ❌ Error | ❌ Error | N/A | ✅ | ✅ | Immutable |
|
|
179
|
+
| Git (resolved to registry/) | ❌ | ❌ | ✅ (if mutable, else N/A) | ✅ | ✅ | Current: immutable|
|
|
180
|
+
| Custom Path (non-registry) | ✅ (if writable) | ✅ | ✅ | ✅ | N/A | User-defined |
|
|
181
|
+
|
|
182
|
+
Errors guide users (e.g., "Copy to mutable dir first").
|
|
183
|
+
|
|
184
|
+
## Error Handling Examples
|
|
185
|
+
|
|
186
|
+
### Modifying Immutable
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
Error: Cannot save 'community-pkg' – from registry (immutable, v1.2.3).
|
|
190
|
+
Path: ~/.openpackage/registry/community-pkg/1.2.3/
|
|
191
|
+
|
|
192
|
+
Fix: Copy to ~/.openpackage/packages/, update path:, edit, then pack.
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Path Not Found
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
Error: Source not found for 'my-rules': ~/.openpackage/packages/my-rules/
|
|
199
|
+
Run `opkg status` to verify.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Path Resolution
|
|
203
|
+
|
|
204
|
+
### Tilde Expansion
|
|
205
|
+
|
|
206
|
+
`~/.openpackage/...` expands to user's home directory at runtime.
|
|
207
|
+
|
|
208
|
+
Stored in YAML with tilde for portability across machines.
|
|
209
|
+
|
|
210
|
+
### Relative Paths
|
|
211
|
+
|
|
212
|
+
Relative paths (e.g., `./.openpackage/packages/...`) resolve relative to the `openpackage.yml` file location.
|
|
213
|
+
|
|
214
|
+
### Portability
|
|
215
|
+
|
|
216
|
+
| Path Type | Example | Portability |
|
|
217
|
+
|-----------|---------|-------------|
|
|
218
|
+
| Tilde | `~/.openpackage/packages/...` | ✅ Portable (same home structure) |
|
|
219
|
+
| Relative | `./.openpackage/packages/...` | ✅ Portable (committed with project) |
|
|
220
|
+
| Absolute | `/opt/packages/...` | ❌ Machine-specific |
|
|
221
|
+
|
|
222
|
+
## Registry Path After Install
|
|
223
|
+
|
|
224
|
+
`openpackage.yml` declares dependency **intent** (e.g., version constraint). On `install` from registry:
|
|
225
|
+
|
|
226
|
+
- yml **unchanged**: Keeps requested `version` (range/exact); no `path:` added (inferred at runtime).
|
|
227
|
+
- Unified index updated with **resolved facts**: exact version, source path, mappings.
|
|
228
|
+
|
|
229
|
+
Example:
|
|
230
|
+
|
|
231
|
+
```yaml
|
|
232
|
+
# openpackage.yml (before and after install - unchanged)
|
|
233
|
+
packages:
|
|
234
|
+
- name: community-pkg
|
|
235
|
+
version: ^1.2.0 # Intent: latest satisfying ^1.2.0
|
|
236
|
+
|
|
237
|
+
# .openpackage/openpackage.index.yml (added/updated after install)
|
|
238
|
+
packages:
|
|
239
|
+
community-pkg:
|
|
240
|
+
version: 1.2.3 # Resolved exact (e.g., latest in range from local/remote)
|
|
241
|
+
path: ~/.openpackage/registry/community-pkg/1.2.3/ # Resolved source
|
|
242
|
+
files:
|
|
243
|
+
rules/auth.md: [.cursor/rules/auth.md, .opencode/rules/auth.md] # Mappings
|
|
244
|
+
# ... more
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- If re-install runs with same constraint, prefers same resolved version (local-first).
|
|
248
|
+
- See [Version Resolution](install/version-resolution.md) for selection logic; [Workspace Index](package/package-index-yml.md) for full schema; [Package Sources](.) for inference rules.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Platform System Documentation
|
|
2
|
+
|
|
3
|
+
The **Platform System** is OpenPackage's declarative transformation engine that maps universal package content to platform-specific formats across 13+ AI coding platforms.
|
|
4
|
+
|
|
5
|
+
## 📚 Documentation Overview
|
|
6
|
+
|
|
7
|
+
### Getting Started
|
|
8
|
+
|
|
9
|
+
- **[Overview](./overview.md)** - High-level introduction to the platform system, key concepts, and architecture
|
|
10
|
+
- **[Examples](./examples.md)** - Common patterns, practical use cases, and complete working configurations
|
|
11
|
+
|
|
12
|
+
### Core Concepts
|
|
13
|
+
|
|
14
|
+
- **[Flows](./flows.md)** - Declarative bidirectional transformation system with explicit export (package → workspace) and import (workspace → package) flows
|
|
15
|
+
- **[Map Pipeline](./map-pipeline.md)** - MongoDB-inspired document transformations: 6 core operations, context variables, and pattern matching
|
|
16
|
+
- **[Universal Converter](./universal-converter.md)** - Cross-platform package conversion system using import flows for platform-to-universal conversion
|
|
17
|
+
- **[Configuration](./configuration.md)** - Structure of `platforms.jsonc`, merge hierarchy, and validation rules
|
|
18
|
+
- **[Flow Reference](./flow-reference.md)** - Complete technical reference for all flow fields, transforms, and options
|
|
19
|
+
|
|
20
|
+
### Implementation Details
|
|
21
|
+
|
|
22
|
+
- **[Detection](./detection.md)** - How platforms are detected in workspaces (rootDir, rootFile, aliases)
|
|
23
|
+
- **[Directory Layout](./directory-layout.md)** - File organization, root directories, subdirectories, and extensions
|
|
24
|
+
- **[Troubleshooting](./troubleshooting.md)** - Debug tips, validation, common errors, and performance optimization
|
|
25
|
+
|
|
26
|
+
### Technical Specification
|
|
27
|
+
|
|
28
|
+
- **[Specification](./specification.md)** - Formal requirements with SHALL/MUST contracts and scenario-based tests
|
|
29
|
+
|
|
30
|
+
## Quick Links
|
|
31
|
+
|
|
32
|
+
- **Quick Start:** See [Examples](./examples.md#quick-start) for zero-config installation
|
|
33
|
+
- **Flow Syntax:** See [Flow Reference](./flow-reference.md) for complete schema
|
|
34
|
+
- **Debugging:** See [Troubleshooting](./troubleshooting.md#debug-flow-execution)
|
|
35
|
+
- **Custom Platform:** See [Configuration](./configuration.md#adding-custom-platforms)
|
|
36
|
+
|
|
37
|
+
## Key Features
|
|
38
|
+
|
|
39
|
+
- ✅ **Declarative** - JSON configuration, not code
|
|
40
|
+
- ✅ **Bidirectional** - Explicit export (install/apply) and import (save) flows
|
|
41
|
+
- ✅ **Type-safe** - IDE autocomplete + schema validation
|
|
42
|
+
- ✅ **Powerful** - Simple file copies to complex transformations
|
|
43
|
+
- ✅ **Composable** - Multi-package content merging with priority
|
|
44
|
+
- ✅ **Format-agnostic** - JSON, YAML, TOML, JSONC, Markdown
|
|
45
|
+
- ✅ **Extensible** - Custom handlers for edge cases
|
|
46
|
+
- ✅ **Single file** - One configuration with merge hierarchy
|
|
47
|
+
|
|
48
|
+
## Supported Platforms
|
|
49
|
+
|
|
50
|
+
Built-in support for 13 platforms: Cursor, Claude, Windsurf, Gemini, Kilo, Cline, Roo-Code, Void, Aide, Zed, Codex, OpenCode, Factory.
|
|
51
|
+
|
|
52
|
+
Custom platforms can be added via configuration overrides.
|