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
|
@@ -1,126 +1,36 @@
|
|
|
1
|
-
### Save
|
|
1
|
+
### Save – Sync to Source (mapping-driven)
|
|
2
2
|
|
|
3
3
|
#### 1. Overview
|
|
4
4
|
|
|
5
|
-
This document covers the
|
|
5
|
+
This document covers the key rules for `opkg save`: syncing workspace edits back to a package **source of truth** based on `.openpackage/openpackage.index.yml`.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
#### 2.
|
|
9
|
+
#### 2. Preconditions
|
|
10
10
|
|
|
11
|
-
The
|
|
11
|
+
- The workspace must have `.openpackage/openpackage.index.yml`.
|
|
12
|
+
- The target package must exist in the index under `packages[<name>]`.
|
|
13
|
+
- The package entry must have a non-empty `files:` mapping.
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
- The **WIP or last stable version** recorded for this workspace lives in `package.index.yml` under `workspace.version`.
|
|
15
|
-
- WIP versions are always **pre‑releases derived from the stable line**, including:
|
|
16
|
-
- A time component, and
|
|
17
|
-
- A workspace hash component.
|
|
18
|
-
|
|
19
|
-
##### On WIP saves
|
|
20
|
-
|
|
21
|
-
- A new WIP version is computed from the current stable line.
|
|
22
|
-
- `package.index.yml` is updated with:
|
|
23
|
-
- `workspace.version` (the exact WIP version).
|
|
24
|
-
- `workspace.hash` (derived from `cwd`).
|
|
25
|
-
|
|
26
|
-
##### On stable packs
|
|
27
|
-
|
|
28
|
-
- The stable version is always exactly the value in `package.yml.version`.
|
|
29
|
-
- `package.index.yml.workspace.version` is updated to that stable version.
|
|
30
|
-
|
|
31
|
-
##### Version conflicts
|
|
32
|
-
|
|
33
|
-
- When `package.yml.version` and the last workspace version disagree, the **`package.yml` version wins**, and the WIP stream restarts from that version.
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
#### 3. Registry Writes
|
|
38
|
-
|
|
39
|
-
For both modes, once a target version is chosen and content files are resolved:
|
|
40
|
-
|
|
41
|
-
- The pipeline creates a **full copy** of the package in the local registry under:
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
~/.openpackage/registry/<finalName>/<targetVersion>/...
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
- If a directory already exists for that version:
|
|
48
|
-
- It is fully cleared before writing new contents (unless stable mode is disallowed by a non‑`force` duplicate check).
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
#### 4. WIP Cleanup
|
|
53
|
-
|
|
54
|
-
##### On WIP saves
|
|
55
|
-
|
|
56
|
-
After a successful copy:
|
|
57
|
-
|
|
58
|
-
- The pipeline scans the local registry for WIP versions of the same package that are associated with the current workspace hash.
|
|
59
|
-
- All such WIP versions are removed, except the newly created one.
|
|
60
|
-
|
|
61
|
-
##### On stable packs
|
|
62
|
-
|
|
63
|
-
After a successful copy:
|
|
64
|
-
|
|
65
|
-
- The pipeline may also remove WIP versions for this workspace to keep only the stable copy, as described in `../save-pack.md` and `../save-pack-versioning.md`.
|
|
15
|
+
If these conditions are not met, `save` should fail with an actionable message instructing the user to run `opkg apply <name>` or `opkg install ...` first.
|
|
66
16
|
|
|
67
17
|
---
|
|
68
18
|
|
|
69
|
-
####
|
|
19
|
+
#### 3. Mutability enforcement
|
|
70
20
|
|
|
71
|
-
|
|
21
|
+
`save` must only write to **mutable** sources:
|
|
72
22
|
|
|
73
|
-
-
|
|
74
|
-
-
|
|
23
|
+
- If the resolved source path is under `~/.openpackage/registry/` (including git clones cached there), the source is **immutable** and `save` must fail.
|
|
24
|
+
- If the resolved source path is a mutable packages directory (e.g. `./.openpackage/packages/...` or `~/.openpackage/packages/...`) or another user path, `save` may proceed.
|
|
75
25
|
|
|
76
26
|
---
|
|
77
27
|
|
|
78
|
-
####
|
|
79
|
-
|
|
80
|
-
After the registry copy succeeds, the pipeline performs a **platform sync** pass.
|
|
81
|
-
|
|
82
|
-
##### Purpose
|
|
83
|
-
|
|
84
|
-
- Applies platform mapping rules to mirror the package's contents into platform‑specific workspaces and files (e.g. editor/IDE integrations, AI platforms, etc.).
|
|
85
|
-
- Updates `package.index.yml` to reflect the **actual installed paths** after sync.
|
|
86
|
-
|
|
87
|
-
##### Operations
|
|
88
|
-
|
|
89
|
-
Distinguishes between:
|
|
28
|
+
#### 4. What is written
|
|
90
29
|
|
|
91
|
-
|
|
92
|
-
- Content that should be removed when no longer present in the package.
|
|
93
|
-
|
|
94
|
-
##### Index Updates
|
|
95
|
-
|
|
96
|
-
After sync completes:
|
|
97
|
-
|
|
98
|
-
- The `package.index.yml` is updated to include **all platform paths where files were actually created**.
|
|
99
|
-
- This differs from the `add` command, which only records the source path.
|
|
100
|
-
- Example: If a file was added from `.cursor/commands/test.md`, after sync the index will also include `.opencode/command/test.md` (if that platform is detected and the file was synced).
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
#### 7. Root Package Considerations
|
|
105
|
-
|
|
106
|
-
Special behavior for the **root package**:
|
|
107
|
-
|
|
108
|
-
- When operating on the root package (the current directory as the package), the pipeline can explicitly **skip root‑level platform sync** steps where appropriate (for example, to avoid syncing global root files back into themselves).
|
|
109
|
-
- Nested packages always participate fully in platform sync; their changes are projected out to supported platforms.
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
#### 8. Platform Sync Timing
|
|
114
|
-
|
|
115
|
-
The platform sync step is invoked only after:
|
|
116
|
-
|
|
117
|
-
- Package detection and naming/renaming are complete.
|
|
118
|
-
- Version and file selection have succeeded.
|
|
119
|
-
- Registry copy has completed without errors.
|
|
120
|
-
|
|
121
|
-
---
|
|
30
|
+
For each mapping entry in `packages[<name>].files`:
|
|
122
31
|
|
|
123
|
-
|
|
32
|
+
- **Directory key** (`rules/`, `commands/`, etc.): enumerate files under each mapped workspace directory and write them back into `<source>/<key>/<relative-file>`.
|
|
33
|
+
- **File key** (`AGENTS.md`, `root/docs/guide.md`, etc.): write the mapped workspace file back into `<source>/<key>`.
|
|
124
34
|
|
|
125
|
-
|
|
35
|
+
When multiple workspace candidates map to the same destination, conflict resolution is applied (see `save-conflict-resolution.md`).
|
|
126
36
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Save and Pack Versioning
|
|
2
|
+
|
|
3
|
+
Uses semver with prereleases for WIP (work-in-progress) versions during save, while pack promotes to stable. `openpackage.yml.version` declares next stable; index tracks last workspace version. Matches impl in [save-versioning.ts](../core/save/save-versioning.ts).
|
|
4
|
+
|
|
5
|
+
## Version Roles
|
|
6
|
+
|
|
7
|
+
- **`openpackage.yml.version` (User/CLI-Managed)**: Canonical next stable (e.g., "1.2.3"). CLI may auto-bump to patch on new cycle.
|
|
8
|
+
- **`openpackage.index.yml.workspace.version` (CLI-Managed)**: Last effective version (WIP or stable) from this workspace.
|
|
9
|
+
- **Registry Versions**: Full copies under <wip> or <stable>; WIP scoped by workspace hash for cleanup.
|
|
10
|
+
|
|
11
|
+
## WIP Version Scheme
|
|
12
|
+
|
|
13
|
+
WIP as prerelease of intended stable `S`:
|
|
14
|
+
- Format: `S-<t>.<w>`
|
|
15
|
+
- `<t>`: Fixed-width base36 epoch seconds (monotonic, lex-order = time-order).
|
|
16
|
+
- `<w>`: Short workspace tag (from hash of cwd).
|
|
17
|
+
- Example: `1.2.3-000fz8.a3k` < `1.2.3` (semver).
|
|
18
|
+
- Goals: Attributable to workspace/time; pre-release of exact stable target.
|
|
19
|
+
|
|
20
|
+
## Save Versioning Behavior
|
|
21
|
+
|
|
22
|
+
`save` creates WIP snapshot (full copy to registry) for iterative dev.
|
|
23
|
+
|
|
24
|
+
### Computation
|
|
25
|
+
- Read `openpackage.yml.version` → `stable = S`.
|
|
26
|
+
- Read index `workspace.version` → `lastWorkspaceVersion?`.
|
|
27
|
+
- Effective base:
|
|
28
|
+
- Default: `effectiveStable = S`.
|
|
29
|
+
- If `lastWorkspaceVersion` is non-prerelease stable matching `S` base: `effectiveStable = patch(S)` (start next cycle).
|
|
30
|
+
- `wipVersion = generateWipVersion(effectiveStable)` (adds `<t>.<w>`).
|
|
31
|
+
- Reset if mismatch: Log, restart WIP from `S`.
|
|
32
|
+
|
|
33
|
+
Result interface (from code):
|
|
34
|
+
```ts
|
|
35
|
+
interface WipVersionComputationResult {
|
|
36
|
+
stable: string; // e.g., "1.2.3"
|
|
37
|
+
effectiveStable: string; // "1.2.3" or "1.2.4"
|
|
38
|
+
wipVersion: string; // "1.2.4-000fz8.a3k"
|
|
39
|
+
lastWorkspaceVersion?: string;
|
|
40
|
+
reset: boolean; // Mismatch?
|
|
41
|
+
resetMessage?: string;
|
|
42
|
+
shouldBumpPackageYml: boolean; // Auto-bump yml?
|
|
43
|
+
nextStable?: string; // To bump to
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Flow
|
|
48
|
+
1. Compute WIP.
|
|
49
|
+
2. Copy package to registry/<name>/<wipVersion>/.
|
|
50
|
+
3. Update index `workspace.version = wipVersion`.
|
|
51
|
+
4. Clean old WIP for this workspace/package.
|
|
52
|
+
5. Optional: Bump `openpackage.yml.version` if `shouldBumpPackageYml`.
|
|
53
|
+
|
|
54
|
+
Examples:
|
|
55
|
+
- First save on "1.2.3": WIP "1.2.3-<t>.<w>".
|
|
56
|
+
- After pack "1.2.3": Next save bumps to effective "1.2.4-<t>.<w>"; may update yml to "1.2.4".
|
|
57
|
+
|
|
58
|
+
CLI: `opkg save <name>` (infers from cwd/context).
|
|
59
|
+
|
|
60
|
+
## Pack Versioning Behavior
|
|
61
|
+
|
|
62
|
+
`pack` publishes stable snapshot.
|
|
63
|
+
|
|
64
|
+
- Target: Exact `openpackage.yml.version = S` (no bump).
|
|
65
|
+
- Flow: Copy to registry/<name>/<S>/; update index `workspace.version = S`; clean this workspace's WIP.
|
|
66
|
+
- No mutation of yml.
|
|
67
|
+
- After pack, next `save` detects stable → bumps line.
|
|
68
|
+
|
|
69
|
+
CLI: `opkg pack <name>`.
|
|
70
|
+
|
|
71
|
+
## Invariants & UX
|
|
72
|
+
|
|
73
|
+
- `openpackage.yml.version` authoritative for next stable.
|
|
74
|
+
- WIP always < stable (semver).
|
|
75
|
+
- Workspace isolation: Hash-based cleanup.
|
|
76
|
+
- Mental model: yml = "target stable"; save = WIP prereleases; pack = publish exact target.
|
|
77
|
+
|
|
78
|
+
Errors: Invalid semver, resolution fails → clear messages.
|
|
79
|
+
|
|
80
|
+
See [Save](README.md), [Pack](pack/), [Version Generator](../utils/version-generator.ts).
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Scope Management (Deferred Aspects)
|
|
2
|
+
|
|
3
|
+
Package scopes distinguish local vs. shared mutable sources. Supports workspace and global scopes via paths; transitions are manual. Automated commands (`elevate`, `localize`) deferred to future release.
|
|
4
|
+
|
|
5
|
+
## Scopes Overview
|
|
6
|
+
|
|
7
|
+
| Scope | Location | Shared? | Use Case |
|
|
8
|
+
|-------|----------|---------|----------|
|
|
9
|
+
| **Workspace (Local)** | `./.openpackage/packages/<name>/` | No | Project-specific development |
|
|
10
|
+
| **Global** | `~/.openpackage/packages/<name>/` | Yes | Cross-project utilities/rules |
|
|
11
|
+
| **Registry** | `~/.openpackage/registry/<name>/<ver>/` | N/A | Immutable snapshots (scope-agnostic) |
|
|
12
|
+
|
|
13
|
+
Registry is scope-neutral (immutable). See [Package Sources](package-sources.md).
|
|
14
|
+
|
|
15
|
+
## Current Workflows
|
|
16
|
+
|
|
17
|
+
### Creating Local Package (Workspace-Scoped)
|
|
18
|
+
```bash
|
|
19
|
+
# Interactive (prompts for scope)
|
|
20
|
+
opkg new my-rules
|
|
21
|
+
|
|
22
|
+
# Explicit
|
|
23
|
+
opkg new my-rules --scope local
|
|
24
|
+
# Creates: .openpackage/packages/my-rules/openpackage.yml
|
|
25
|
+
# Automatically added to workspace manifest with path reference
|
|
26
|
+
```
|
|
27
|
+
- Mutable; full ops.
|
|
28
|
+
- Project-specific; not shared across workspaces.
|
|
29
|
+
|
|
30
|
+
### Creating Global Package (Cross-Workspace)
|
|
31
|
+
```bash
|
|
32
|
+
opkg new shared-rules --scope global
|
|
33
|
+
# Creates: ~/.openpackage/packages/shared-rules/openpackage.yml
|
|
34
|
+
# Reference in any workspace openpackage.yml:
|
|
35
|
+
# - name: shared-rules
|
|
36
|
+
# path: ~/.openpackage/packages/shared-rules/
|
|
37
|
+
```
|
|
38
|
+
- Mutable; shared across all workspaces.
|
|
39
|
+
- Useful for personal utilities, common rules, etc.
|
|
40
|
+
|
|
41
|
+
### Creating Root Package (Current Directory)
|
|
42
|
+
```bash
|
|
43
|
+
opkg new my-package --scope root
|
|
44
|
+
# Creates: ./openpackage.yml in current directory
|
|
45
|
+
```
|
|
46
|
+
- Mutable; current directory is the package.
|
|
47
|
+
- Typical for dedicated package repositories.
|
|
48
|
+
|
|
49
|
+
### Manual Scope Transitions
|
|
50
|
+
#### Workspace → Global (Elevate-like)
|
|
51
|
+
Share project pkg globally:
|
|
52
|
+
```bash
|
|
53
|
+
cp -r .openpackage/packages/my-rules ~/.openpackage/packages/
|
|
54
|
+
# Update deps path: ./.openpackage/... → ~/.openpackage/...
|
|
55
|
+
# Optional: rm local copy after verify
|
|
56
|
+
```
|
|
57
|
+
- Update index if needed.
|
|
58
|
+
|
|
59
|
+
#### Global → Workspace (Localize-like)
|
|
60
|
+
Fork shared for project mods:
|
|
61
|
+
```bash
|
|
62
|
+
cp -r ~/.openpackage/packages/shared-rules .openpackage/packages/
|
|
63
|
+
# Update deps path: ~/.openpackage/... → ./.openpackage/...
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Future: Automated Transitions (Deferred)
|
|
67
|
+
|
|
68
|
+
### `opkg elevate <name>` (Workspace → Global)
|
|
69
|
+
Promote local to shared.
|
|
70
|
+
```bash
|
|
71
|
+
opkg elevate my-rules # Copies, updates paths/index; --clean removes local
|
|
72
|
+
```
|
|
73
|
+
Flow: Copy → Update yml/index → Optional clean.
|
|
74
|
+
|
|
75
|
+
Options: `--force` (overwrite), `--clean`.
|
|
76
|
+
|
|
77
|
+
### `opkg localize <name>` (Global → Workspace)
|
|
78
|
+
Copy shared for local edits.
|
|
79
|
+
```bash
|
|
80
|
+
opkg localize shared-tools
|
|
81
|
+
```
|
|
82
|
+
Flow: Copy → Update paths/index.
|
|
83
|
+
|
|
84
|
+
This enables workflow: Dev local → Elevate for sharing → Localize forks.
|
|
85
|
+
|
|
86
|
+
## Integration Notes
|
|
87
|
+
|
|
88
|
+
- Scoping affects naming in push/registry (see [Push Scoping](push/push-scoping.md)).
|
|
89
|
+
- All mutable via `packages/` dirs.
|
|
90
|
+
- Deferred: No CLI auto-detection of scope changes; manual path updates.
|
|
91
|
+
|
|
92
|
+
See [Directory Layout](directory-layout.md) for locations; future updates in git.
|