opkg 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -21
- package/dist/commands/add.js +11 -276
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/duplicate.js +5 -2
- package/dist/commands/duplicate.js.map +1 -1
- package/dist/commands/init.js +76 -145
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +30 -671
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +9 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +58 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +28 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pack.js +10 -137
- package/dist/commands/pack.js.map +1 -1
- package/dist/commands/pull.js +5 -299
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +5 -239
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/save.js +29 -168
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/show.js +18 -5
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +21 -8
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tui.js +61 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/commands/uninstall.js +5 -5
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/constants/index.js +19 -45
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/workspace.js +9 -0
- package/dist/constants/workspace.js.map +1 -0
- package/dist/core/add/add-conflict-handler.js +68 -0
- package/dist/core/add/add-conflict-handler.js.map +1 -0
- package/dist/core/add/add-pipeline.js +137 -0
- package/dist/core/add/add-pipeline.js.map +1 -0
- package/dist/core/add/package-index-updater.js +66 -36
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/add/platform-path-transformer.js +47 -0
- package/dist/core/add/platform-path-transformer.js.map +1 -0
- package/dist/core/add/source-collector.js +57 -0
- package/dist/core/add/source-collector.js.map +1 -0
- package/dist/core/api-keys.js +6 -2
- package/dist/core/api-keys.js.map +1 -1
- package/dist/core/auth.js +25 -40
- package/dist/core/auth.js.map +1 -1
- package/dist/core/config.js +11 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/dependency-resolver.js +24 -11
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/device-auth.js +81 -0
- package/dist/core/device-auth.js.map +1 -0
- package/dist/core/directory.js +15 -9
- package/dist/core/directory.js.map +1 -1
- package/dist/core/discovery/file-discovery.js +55 -54
- package/dist/core/discovery/file-discovery.js.map +1 -1
- package/dist/core/discovery/platform-files-discovery.js +32 -17
- package/dist/core/discovery/platform-files-discovery.js.map +1 -1
- package/dist/core/install/bulk-install-pipeline.js +200 -0
- package/dist/core/install/bulk-install-pipeline.js.map +1 -0
- package/dist/core/install/canonical-plan.js +129 -0
- package/dist/core/install/canonical-plan.js.map +1 -0
- package/dist/core/install/download-keys.js +2 -2
- package/dist/core/install/download-keys.js.map +1 -1
- package/dist/core/install/dry-run.js +2 -2
- package/dist/core/install/dry-run.js.map +1 -1
- package/dist/core/install/index.js +3 -0
- package/dist/core/install/index.js.map +1 -0
- package/dist/core/install/install-errors.js +41 -0
- package/dist/core/install/install-errors.js.map +1 -0
- package/dist/core/install/install-flow.js +8 -9
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +296 -0
- package/dist/core/install/install-pipeline.js.map +1 -0
- package/dist/core/install/install-reporting.js +99 -0
- package/dist/core/install/install-reporting.js.map +1 -0
- package/dist/core/install/platform-resolution.js +6 -6
- package/dist/core/install/platform-resolution.js.map +1 -1
- package/dist/core/install/remote-flow.js +84 -7
- package/dist/core/install/remote-flow.js.map +1 -1
- package/dist/core/install/version-selection.js +25 -8
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +22 -14
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/package-context.js +246 -0
- package/dist/core/package-context.js.map +1 -0
- package/dist/core/package.js +73 -9
- package/dist/core/package.js.map +1 -1
- package/dist/core/platforms.js +126 -217
- package/dist/core/platforms.js.map +1 -1
- package/dist/core/profiles.js +60 -3
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/pull/pull-errors.js +62 -0
- package/dist/core/pull/pull-errors.js.map +1 -0
- package/dist/core/pull/pull-options.js +2 -0
- package/dist/core/pull/pull-options.js.map +1 -0
- package/dist/core/pull/pull-output.js +50 -0
- package/dist/core/pull/pull-output.js.map +1 -0
- package/dist/core/pull/pull-pipeline.js +141 -0
- package/dist/core/pull/pull-pipeline.js.map +1 -0
- package/dist/core/pull/pull-strategies.js +103 -0
- package/dist/core/pull/pull-strategies.js.map +1 -0
- package/dist/core/pull/pull-types.js +2 -0
- package/dist/core/pull/pull-types.js.map +1 -0
- package/dist/core/push/push-context.js +95 -0
- package/dist/core/push/push-context.js.map +1 -0
- package/dist/core/push/push-errors.js +133 -0
- package/dist/core/push/push-errors.js.map +1 -0
- package/dist/core/push/push-output.js +44 -0
- package/dist/core/push/push-output.js.map +1 -0
- package/dist/core/push/push-pipeline.js +74 -0
- package/dist/core/push/push-pipeline.js.map +1 -0
- package/dist/core/push/push-single-file.js +56 -0
- package/dist/core/push/push-single-file.js.map +1 -0
- package/dist/core/push/push-types.js +2 -0
- package/dist/core/push/push-types.js.map +1 -0
- package/dist/core/push/push-upload.js +68 -0
- package/dist/core/push/push-upload.js.map +1 -0
- package/dist/core/registry/registry-rename.js +2 -1
- package/dist/core/registry/registry-rename.js.map +1 -1
- package/dist/core/registry.js +14 -5
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +165 -36
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/save/constants.js +4 -0
- package/dist/core/save/constants.js.map +1 -1
- package/dist/core/save/name-resolution.js +31 -0
- package/dist/core/save/name-resolution.js.map +1 -0
- package/dist/core/save/package-detection.js +147 -0
- package/dist/core/save/package-detection.js.map +1 -0
- package/dist/core/save/package-saver.js +82 -43
- package/dist/core/save/package-saver.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +51 -71
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/root-save-candidates.js.map +1 -1
- package/dist/core/save/save-candidate-loader.js +89 -0
- package/dist/core/save/save-candidate-loader.js.map +1 -0
- package/dist/core/save/save-conflict-resolution.js +72 -410
- package/dist/core/save/save-conflict-resolution.js.map +1 -1
- package/dist/core/save/save-conflict-resolver.js +277 -0
- package/dist/core/save/save-conflict-resolver.js.map +1 -0
- package/dist/core/save/save-pipeline.js +162 -0
- package/dist/core/save/save-pipeline.js.map +1 -0
- package/dist/core/save/save-single-file.js +124 -0
- package/dist/core/save/save-single-file.js.map +1 -0
- package/dist/core/save/save-types.js +2 -0
- package/dist/core/save/save-types.js.map +1 -0
- package/dist/core/save/save-yml-resolution.js +77 -39
- package/dist/core/save/save-yml-resolution.js.map +1 -1
- package/dist/core/save/workspace-rename.js +6 -6
- package/dist/core/save/workspace-rename.js.map +1 -1
- package/dist/core/scoping/package-scoping.js +14 -2
- package/dist/core/scoping/package-scoping.js.map +1 -1
- package/dist/core/status/status-file-discovery.js +12 -30
- package/dist/core/status/status-file-discovery.js.map +1 -1
- package/dist/core/sync/platform-sync.js +7 -4
- package/dist/core/sync/platform-sync.js.map +1 -1
- package/dist/core/sync/root-files-sync.js +59 -1
- package/dist/core/sync/root-files-sync.js.map +1 -1
- package/dist/core/token-store.js +73 -0
- package/dist/core/token-store.js.map +1 -0
- package/dist/core/uninstall/uninstall-file-discovery.js +1 -2
- package/dist/core/uninstall/uninstall-file-discovery.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/tui/app.js +95 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/components/package-list.js +73 -0
- package/dist/tui/components/package-list.js.map +1 -0
- package/dist/tui/controller.js +365 -0
- package/dist/tui/controller.js.map +1 -0
- package/dist/tui/index.js +12 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/services/file-index.js +64 -0
- package/dist/tui/services/file-index.js.map +1 -0
- package/dist/tui/services/packages.js +18 -0
- package/dist/tui/services/packages.js.map +1 -0
- package/dist/tui/services/save.js +21 -0
- package/dist/tui/services/save.js.map +1 -0
- package/dist/tui/state/app-state.js +15 -0
- package/dist/tui/state/app-state.js.map +1 -0
- package/dist/tui/state.js +17 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/types.js +2 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/views/add-file-modal.js +129 -0
- package/dist/tui/views/add-file-modal.js.map +1 -0
- package/dist/tui/views/file-preview.js +44 -0
- package/dist/tui/views/file-preview.js.map +1 -0
- package/dist/tui/views/list-packages.js +73 -0
- package/dist/tui/views/list-packages.js.map +1 -0
- package/dist/tui/views/main-menu.js +29 -0
- package/dist/tui/views/main-menu.js.map +1 -0
- package/dist/tui/views/manage-view.js +81 -0
- package/dist/tui/views/manage-view.js.map +1 -0
- package/dist/tui/views/package-hub.js +120 -0
- package/dist/tui/views/package-hub.js.map +1 -0
- package/dist/tui/views/placeholder.js +24 -0
- package/dist/tui/views/placeholder.js.map +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/bun-bootstrap.js +72 -0
- package/dist/utils/bun-bootstrap.js.map +1 -0
- package/dist/utils/file-processing.js +5 -58
- package/dist/utils/file-processing.js.map +1 -1
- package/dist/utils/formatters.js +3 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/http-client.js +27 -5
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +40 -35
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-file-discovery.js +18 -24
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/install-orchestrator.js +21 -21
- package/dist/utils/install-orchestrator.js.map +1 -1
- package/dist/utils/jsonc.js +44 -0
- package/dist/utils/jsonc.js.map +1 -0
- package/dist/utils/manifest-paths.js +27 -0
- package/dist/utils/manifest-paths.js.map +1 -0
- package/dist/utils/package-copy.js +199 -0
- package/dist/utils/package-copy.js.map +1 -0
- package/dist/utils/package-filters.js +125 -0
- package/dist/utils/package-filters.js.map +1 -0
- package/dist/utils/package-index-yml.js +15 -10
- package/dist/utils/package-index-yml.js.map +1 -1
- package/dist/utils/package-installation.js +4 -113
- package/dist/utils/package-installation.js.map +1 -1
- package/dist/utils/package-local-files.js +2 -35
- package/dist/utils/package-local-files.js.map +1 -1
- package/dist/utils/package-management.js +191 -75
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-merge.js +48 -0
- package/dist/utils/package-merge.js.map +1 -0
- package/dist/utils/package-name.js +29 -0
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +16 -4
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +41 -12
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/path-normalization.js +8 -53
- package/dist/utils/path-normalization.js.map +1 -1
- package/dist/utils/paths.js +17 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/platform-file.js +16 -59
- package/dist/utils/platform-file.js.map +1 -1
- package/dist/utils/platform-mapper.js +29 -41
- package/dist/utils/platform-mapper.js.map +1 -1
- package/dist/utils/platform-specific-paths.js.map +1 -1
- package/dist/utils/platform-utils.js +28 -139
- package/dist/utils/platform-utils.js.map +1 -1
- package/dist/utils/platform-yaml-merge.js +13 -6
- package/dist/utils/platform-yaml-merge.js.map +1 -1
- package/dist/utils/prompts.js +0 -31
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +38 -24
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +48 -0
- package/dist/utils/registry-paths.js.map +1 -0
- package/dist/utils/root-file-installer.js +19 -0
- package/dist/utils/root-file-installer.js.map +1 -1
- package/dist/utils/root-file-registry.js.map +1 -1
- package/dist/utils/tarball.js +6 -2
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +11 -8
- package/dist/utils/version-ranges.js.map +1 -1
- package/package.json +3 -2
- package/platforms.jsonc +178 -0
- package/specs/auth/auth-device-flow.md +70 -0
- package/specs/install/install-behavior.md +30 -0
- package/specs/install/package-yml-canonical.md +21 -1
- package/specs/install/version-resolution.md +9 -7
- package/specs/login/login-device-flow.md +70 -0
- package/specs/package/README.md +60 -0
- package/specs/package/nested-packages-and-parent-packages.md +79 -0
- package/specs/package/package-index-yml.md +171 -0
- package/specs/package/package-root-layout.md +78 -0
- package/specs/package/registry-payload-and-copy.md +77 -0
- package/specs/package/universal-content.md +144 -0
- package/specs/platforms.md +193 -0
- package/specs/push/push-behavior.md +38 -10
- package/specs/push/push-errors-and-hints.md +19 -6
- package/specs/push/push-remote-upload.md +3 -0
- package/specs/push/push-scoping.md +14 -22
- package/specs/push/push-version-selection.md +18 -16
- package/specs/save/README.md +40 -0
- package/specs/save/save-conflict-resolution.md +146 -0
- package/specs/save/save-file-discovery.md +101 -0
- package/specs/save/save-frontmatter-overrides.md +81 -0
- package/specs/save/save-modes-inputs.md +55 -0
- package/specs/save/save-naming-scoping.md +93 -0
- package/specs/save/save-package-detection.md +60 -0
- package/specs/save/save-registry-sync.md +126 -0
- package/specs/save-pack.md +1 -0
- package/dist/commands/release.js +0 -33
- package/dist/commands/release.js.map +0 -1
- package/dist/commands/tag.js +0 -311
- package/dist/commands/tag.js.map +0 -1
- package/dist/commands/update.js +0 -30
- package/dist/commands/update.js.map +0 -1
- package/dist/core/add/formula-index-updater.js +0 -290
- package/dist/core/add/formula-index-updater.js.map +0 -1
- package/dist/core/discovery/ai-files-discovery.js +0 -2
- package/dist/core/discovery/ai-files-discovery.js.map +0 -1
- package/dist/core/discovery/formula-files-discovery.js +0 -14
- package/dist/core/discovery/formula-files-discovery.js.map +0 -1
- package/dist/core/discovery/index-files-discovery.js +0 -91
- package/dist/core/discovery/index-files-discovery.js.map +0 -1
- package/dist/core/discovery/md-files-discovery.js +0 -82
- package/dist/core/discovery/md-files-discovery.js.map +0 -1
- package/dist/core/discovery/package-files-discovery.js +0 -14
- package/dist/core/discovery/package-files-discovery.js.map +0 -1
- package/dist/core/discovery/platform-discovery.js +0 -84
- package/dist/core/discovery/platform-discovery.js.map +0 -1
- package/dist/core/discovery/root-files-discovery.js +0 -2
- package/dist/core/discovery/root-files-discovery.js.map +0 -1
- package/dist/core/formula.js +0 -170
- package/dist/core/formula.js.map +0 -1
- package/dist/core/git-registry.js +0 -46
- package/dist/core/git-registry.js.map +0 -1
- package/dist/core/groundzero.js +0 -277
- package/dist/core/groundzero.js.map +0 -1
- package/dist/core/install/scenario.js +0 -11
- package/dist/core/install/scenario.js.map +0 -1
- package/dist/core/package-sync.js +0 -219
- package/dist/core/package-sync.js.map +0 -1
- package/dist/core/save/formula-file-generator.js +0 -167
- package/dist/core/save/formula-file-generator.js.map +0 -1
- package/dist/core/save/formula-saver.js +0 -52
- package/dist/core/save/formula-saver.js.map +0 -1
- package/dist/core/save/formula-yml-generator.js +0 -89
- package/dist/core/save/formula-yml-generator.js.map +0 -1
- package/dist/core/save/formula-yml-versioning.js +0 -108
- package/dist/core/save/formula-yml-versioning.js.map +0 -1
- package/dist/core/save/generic-file-sync.js +0 -38
- package/dist/core/save/generic-file-sync.js.map +0 -1
- package/dist/core/save/md-files-sync.js +0 -33
- package/dist/core/save/md-files-sync.js.map +0 -1
- package/dist/core/save/package-yml-versioning.js +0 -108
- package/dist/core/save/package-yml-versioning.js.map +0 -1
- package/dist/core/save/platform-sync.js +0 -95
- package/dist/core/save/platform-sync.js.map +0 -1
- package/dist/core/save/root-files-sync.js +0 -140
- package/dist/core/save/root-files-sync.js.map +0 -1
- package/dist/core/save/save-candidate-types.js +0 -2
- package/dist/core/save/save-candidate-types.js.map +0 -1
- package/dist/core/save/save-conflict-types.js +0 -2
- package/dist/core/save/save-conflict-types.js.map +0 -1
- package/dist/core/save/save-file-discovery.js +0 -5
- package/dist/core/save/save-file-discovery.js.map +0 -1
- package/dist/core/status-file-discovery.js +0 -175
- package/dist/core/status-file-discovery.js.map +0 -1
- package/dist/utils/discovery/file-processing.js +0 -156
- package/dist/utils/discovery/file-processing.js.map +0 -1
- package/dist/utils/discovery/formula-discovery.js +0 -211
- package/dist/utils/discovery/formula-discovery.js.map +0 -1
- package/dist/utils/discovery/platform-discovery.js +0 -2
- package/dist/utils/discovery/platform-discovery.js.map +0 -1
- package/dist/utils/formula-discovery.js +0 -102
- package/dist/utils/formula-discovery.js.map +0 -1
- package/dist/utils/formula-index-yml.js +0 -122
- package/dist/utils/formula-index-yml.js.map +0 -1
- package/dist/utils/formula-installation.js +0 -110
- package/dist/utils/formula-installation.js.map +0 -1
- package/dist/utils/formula-local-files.js +0 -38
- package/dist/utils/formula-local-files.js.map +0 -1
- package/dist/utils/formula-management.js +0 -191
- package/dist/utils/formula-management.js.map +0 -1
- package/dist/utils/formula-name.js +0 -97
- package/dist/utils/formula-name.js.map +0 -1
- package/dist/utils/formula-versioning.js +0 -109
- package/dist/utils/formula-versioning.js.map +0 -1
- package/dist/utils/formula-yml.js +0 -82
- package/dist/utils/formula-yml.js.map +0 -1
- package/dist/utils/git.js +0 -54
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/id-based-discovery.js +0 -126
- package/dist/utils/id-based-discovery.js.map +0 -1
- package/dist/utils/id-based-installer.js +0 -249
- package/dist/utils/id-based-installer.js.map +0 -1
- package/dist/utils/index-yml-based-installer.js +0 -375
- package/dist/utils/index-yml-based-installer.js.map +0 -1
- package/dist/utils/index-yml.js +0 -124
- package/dist/utils/index-yml.js.map +0 -1
- package/dist/utils/md-frontmatter.js +0 -3
- package/dist/utils/md-frontmatter.js.map +0 -1
- package/dist/utils/package-link-yml.js +0 -92
- package/dist/utils/package-link-yml.js.map +0 -1
- package/dist/utils/platform-discovery.js +0 -2
- package/dist/utils/platform-discovery.js.map +0 -1
- package/dist/utils/platform-frontmatter-split.js +0 -15
- package/dist/utils/platform-frontmatter-split.js.map +0 -1
- package/dist/utils/timestamp-encoder.js +0 -13
- package/dist/utils/timestamp-encoder.js.map +0 -1
- package/dist/utils/wip-versioning.js +0 -24
- package/dist/utils/wip-versioning.js.map +0 -1
|
@@ -6,6 +6,7 @@ import { selectVersionWithWipPolicy } from '../../utils/version-ranges.js';
|
|
|
6
6
|
import { isScopedName } from '../scoping/package-scoping.js';
|
|
7
7
|
import { Spinner } from '../../utils/spinner.js';
|
|
8
8
|
import { extractRemoteErrorReason } from '../../utils/error-reasons.js';
|
|
9
|
+
import { UNVERSIONED } from '../../constants/index.js';
|
|
9
10
|
export class RemoteResolutionRequiredError extends Error {
|
|
10
11
|
constructor(message, details) {
|
|
11
12
|
super(message);
|
|
@@ -238,8 +239,9 @@ function extractVersionsFromRemoteResponse(response) {
|
|
|
238
239
|
collected.add(normalized);
|
|
239
240
|
}
|
|
240
241
|
}
|
|
241
|
-
if (response.version
|
|
242
|
-
|
|
242
|
+
if (response.version) {
|
|
243
|
+
const normalizedVersion = response.version.version ?? UNVERSIONED;
|
|
244
|
+
collected.add(normalizedVersion);
|
|
243
245
|
}
|
|
244
246
|
return Array.from(collected);
|
|
245
247
|
}
|
|
@@ -249,8 +251,13 @@ function extractVersionString(candidate) {
|
|
|
249
251
|
}
|
|
250
252
|
if (candidate && typeof candidate === 'object') {
|
|
251
253
|
const value = candidate.version;
|
|
252
|
-
if (
|
|
253
|
-
return
|
|
254
|
+
if (value === undefined || value === null) {
|
|
255
|
+
return UNVERSIONED;
|
|
256
|
+
}
|
|
257
|
+
if (typeof value === 'string') {
|
|
258
|
+
if (semver.valid(value)) {
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
254
261
|
}
|
|
255
262
|
}
|
|
256
263
|
return null;
|
|
@@ -262,15 +269,25 @@ function normalizeAndSortVersions(versions) {
|
|
|
262
269
|
continue;
|
|
263
270
|
}
|
|
264
271
|
const trimmed = version.trim();
|
|
265
|
-
if (!trimmed
|
|
272
|
+
if (!trimmed) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
if (!semver.valid(trimmed)) {
|
|
266
276
|
continue;
|
|
267
277
|
}
|
|
268
278
|
normalized.add(trimmed);
|
|
269
279
|
}
|
|
270
|
-
|
|
280
|
+
const sorted = Array.from(normalized).sort(semver.rcompare);
|
|
281
|
+
return sorted;
|
|
271
282
|
}
|
|
272
283
|
function mergeAndSortVersions(left, right) {
|
|
273
|
-
const merged = new Set(
|
|
274
|
-
|
|
284
|
+
const merged = new Set();
|
|
285
|
+
for (const version of [...left, ...right]) {
|
|
286
|
+
if (semver.valid(version)) {
|
|
287
|
+
merged.add(version);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
const sorted = Array.from(merged).sort(semver.rcompare);
|
|
291
|
+
return sorted;
|
|
275
292
|
}
|
|
276
293
|
//# sourceMappingURL=version-selection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-selection.js","sourceRoot":"","sources":["../../../src/core/install/version-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,0BAA0B,EAE3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,0BAA0B,EAG3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"version-selection.js","sourceRoot":"","sources":["../../../src/core/install/version-selection.ts"],"names":[],"mappings":"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"}
|
package/dist/core/openpackage.js
CHANGED
|
@@ -2,7 +2,8 @@ import { join } from 'path';
|
|
|
2
2
|
import { parsePackageYml } from '../utils/package-yml.js';
|
|
3
3
|
import { exists, isDirectory, listDirectories } from '../utils/fs.js';
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
|
-
import { FILE_PATTERNS
|
|
5
|
+
import { FILE_PATTERNS } from '../constants/index.js';
|
|
6
|
+
import { DEFAULT_INSTALL_ROOT } from '../constants/workspace.js';
|
|
6
7
|
import { getLocalPackageYmlPath, getLocalPackagesDir } from '../utils/paths.js';
|
|
7
8
|
import { findFilesByExtension, findDirectoriesContainingFile } from '../utils/file-processing.js';
|
|
8
9
|
import { getDetectedPlatforms, getPlatformDefinition } from './platforms.js';
|
|
@@ -25,18 +26,18 @@ async function findPackageConfigFile(directoryPath) {
|
|
|
25
26
|
* Get the version of an installed package by package name
|
|
26
27
|
*/
|
|
27
28
|
export async function getInstalledPackageVersion(packageName, targetDir) {
|
|
28
|
-
const openpackagePath = join(targetDir,
|
|
29
|
-
const
|
|
30
|
-
if (!(await exists(
|
|
29
|
+
const openpackagePath = join(targetDir, DEFAULT_INSTALL_ROOT);
|
|
30
|
+
const packageOpenPackagePath = join(openpackagePath, packageName);
|
|
31
|
+
if (!(await exists(packageOpenPackagePath))) {
|
|
31
32
|
return null;
|
|
32
33
|
}
|
|
33
|
-
const configPath = await findPackageConfigFile(
|
|
34
|
+
const configPath = await findPackageConfigFile(packageOpenPackagePath);
|
|
34
35
|
if (!configPath) {
|
|
35
36
|
return null;
|
|
36
37
|
}
|
|
37
38
|
try {
|
|
38
39
|
const config = await parsePackageYml(configPath);
|
|
39
|
-
return config.version;
|
|
40
|
+
return config.version ?? null;
|
|
40
41
|
}
|
|
41
42
|
catch (error) {
|
|
42
43
|
logger.warn(`Failed to parse package config for ${packageName}: ${error}`);
|
|
@@ -77,10 +78,10 @@ export async function findPackageDirectory(openpackagePath, packageName) {
|
|
|
77
78
|
/**
|
|
78
79
|
* Scan openpackage directory for all available packages
|
|
79
80
|
*/
|
|
80
|
-
export async function
|
|
81
|
+
export async function scanOpenPackagePackages(openpackagePath) {
|
|
81
82
|
const packages = new Map();
|
|
82
83
|
if (!(await exists(openpackagePath)) || !(await isDirectory(openpackagePath))) {
|
|
83
|
-
logger.debug('
|
|
84
|
+
logger.debug('Install root directory not found or not a directory', { openpackagePath });
|
|
84
85
|
return packages;
|
|
85
86
|
}
|
|
86
87
|
try {
|
|
@@ -216,7 +217,7 @@ export async function gatherRootVersionConstraints(cwd) {
|
|
|
216
217
|
/**
|
|
217
218
|
* Get package configuration
|
|
218
219
|
*/
|
|
219
|
-
export async function
|
|
220
|
+
export async function getOpenPackagePackageConfig(openpackagePath, packageName) {
|
|
220
221
|
const packagePath = await findPackageDirectory(openpackagePath, packageName);
|
|
221
222
|
if (!packagePath) {
|
|
222
223
|
return null;
|
|
@@ -239,11 +240,11 @@ export async function getGroundzeroPackageConfig(openpackagePath, packageName) {
|
|
|
239
240
|
export async function checkExistingPackageInMarkdownFiles(cwd, packageName) {
|
|
240
241
|
// Build search targets: ai directory + all detected platform subdirectories
|
|
241
242
|
const targets = [];
|
|
242
|
-
// Always include
|
|
243
|
+
// Always include workspace install root
|
|
243
244
|
targets.push({
|
|
244
|
-
dir: join(cwd,
|
|
245
|
+
dir: join(cwd, DEFAULT_INSTALL_ROOT),
|
|
245
246
|
exts: [FILE_PATTERNS.MD_FILES],
|
|
246
|
-
label:
|
|
247
|
+
label: DEFAULT_INSTALL_ROOT
|
|
247
248
|
});
|
|
248
249
|
// Add detected platforms' subdirectories (rules/commands/agents, etc.)
|
|
249
250
|
try {
|
|
@@ -252,7 +253,10 @@ export async function checkExistingPackageInMarkdownFiles(cwd, packageName) {
|
|
|
252
253
|
const def = getPlatformDefinition(platform);
|
|
253
254
|
for (const [_, subdirDef] of Object.entries(def.subdirs)) {
|
|
254
255
|
const dirPath = join(cwd, def.rootDir, subdirDef.path);
|
|
255
|
-
|
|
256
|
+
if (subdirDef.exts && subdirDef.exts.length === 0) {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
targets.push({ dir: dirPath, exts: subdirDef.exts, label: def.id });
|
|
256
260
|
}
|
|
257
261
|
}
|
|
258
262
|
}
|
|
@@ -262,8 +266,12 @@ export async function checkExistingPackageInMarkdownFiles(cwd, packageName) {
|
|
|
262
266
|
logger.debug(`Checking for existing package '${packageName}' across ${targets.length} locations`);
|
|
263
267
|
// Search each target directory for files with supported extensions
|
|
264
268
|
for (const target of targets) {
|
|
269
|
+
const extensions = target.exts;
|
|
270
|
+
if (extensions && extensions.length === 0) {
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
265
273
|
try {
|
|
266
|
-
const files = await findFilesByExtension(target.dir,
|
|
274
|
+
const files = await findFilesByExtension(target.dir, extensions ?? []);
|
|
267
275
|
for (const file of files) {
|
|
268
276
|
// Frontmatter support removed - cannot determine package ownership
|
|
269
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openpackage.js","sourceRoot":"","sources":["../../src/core/openpackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"openpackage.js","sourceRoot":"","sources":["../../src/core/openpackage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Package Context
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent package location resolution for all pipelines.
|
|
5
|
+
* Root packages store files under .openpackage/<subdir>/
|
|
6
|
+
* Nested packages store files under .openpackage/packages/<name>/<subdir>/
|
|
7
|
+
*/
|
|
8
|
+
import { join, dirname } from 'path';
|
|
9
|
+
import { DIR_PATTERNS, FILE_PATTERNS, OPENPACKAGE_DIRS } from '../constants/index.js';
|
|
10
|
+
import { exists, isDirectory } from '../utils/fs.js';
|
|
11
|
+
import { parsePackageYml } from '../utils/package-yml.js';
|
|
12
|
+
import { arePackageNamesEquivalent, normalizePackageName } from '../utils/package-name.js';
|
|
13
|
+
import { findDirectoriesContainingFile } from '../utils/file-processing.js';
|
|
14
|
+
import { logger } from '../utils/logger.js';
|
|
15
|
+
/**
|
|
16
|
+
* Get the package root directory based on location.
|
|
17
|
+
* - Root: cwd/
|
|
18
|
+
* - Nested: cwd/.openpackage/packages/<name>/
|
|
19
|
+
*/
|
|
20
|
+
export function getPackageRootDir(cwd, location, packageName) {
|
|
21
|
+
if (location === 'root') {
|
|
22
|
+
return cwd;
|
|
23
|
+
}
|
|
24
|
+
if (!packageName) {
|
|
25
|
+
throw new Error('Package name required for nested packages');
|
|
26
|
+
}
|
|
27
|
+
return join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES, normalizePackageName(packageName));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the package content directory (.openpackage/) based on location.
|
|
31
|
+
* This is where package.yml, the package index file, and universal content live.
|
|
32
|
+
*/
|
|
33
|
+
export function getPackageFilesDir(cwd, location, packageName) {
|
|
34
|
+
if (location === 'root') {
|
|
35
|
+
return join(cwd, DIR_PATTERNS.OPENPACKAGE);
|
|
36
|
+
}
|
|
37
|
+
if (!packageName) {
|
|
38
|
+
throw new Error('Package name required for nested packages');
|
|
39
|
+
}
|
|
40
|
+
// Nested: cwd/.openpackage/packages/<name>/.openpackage/
|
|
41
|
+
return join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES, normalizePackageName(packageName), DIR_PATTERNS.OPENPACKAGE);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the package.yml path based on location.
|
|
45
|
+
* package.yml is always inside the content directory (.openpackage/)
|
|
46
|
+
*/
|
|
47
|
+
export function getPackageYmlPath(cwd, location, packageName) {
|
|
48
|
+
const contentDir = getPackageFilesDir(cwd, location, packageName);
|
|
49
|
+
return join(contentDir, FILE_PATTERNS.PACKAGE_YML);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Core rule: any directory that contains `.openpackage/package.yml` is a valid package.
|
|
53
|
+
*/
|
|
54
|
+
export async function isValidPackageDirectory(dir) {
|
|
55
|
+
const packageYmlPath = join(dir, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
56
|
+
return exists(packageYmlPath);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Load package config from a directory that satisfies the core rule.
|
|
60
|
+
*/
|
|
61
|
+
export async function loadPackageConfig(dir) {
|
|
62
|
+
const packageYmlPath = join(dir, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
63
|
+
if (!(await exists(packageYmlPath))) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
return await parsePackageYml(packageYmlPath);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.debug(`Failed to parse package.yml at ${packageYmlPath}: ${error}`);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Detect package context for any pipeline operation.
|
|
76
|
+
*
|
|
77
|
+
* Resolution order:
|
|
78
|
+
* 1. No packageName provided → target cwd as root package
|
|
79
|
+
* 2. packageName matches root package name → root package
|
|
80
|
+
* 3. packageName found in nested packages → nested package
|
|
81
|
+
* 4. packageName not found → null (caller decides: error or create)
|
|
82
|
+
*/
|
|
83
|
+
export async function detectPackageContext(cwd, packageName) {
|
|
84
|
+
const rootPackageYmlPath = getPackageYmlPath(cwd, 'root');
|
|
85
|
+
const hasRootPackage = await exists(rootPackageYmlPath);
|
|
86
|
+
// No package name provided: target cwd as the package itself
|
|
87
|
+
if (!packageName) {
|
|
88
|
+
if (!hasRootPackage) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const config = await parsePackageYml(rootPackageYmlPath);
|
|
93
|
+
return {
|
|
94
|
+
name: normalizePackageName(config.name),
|
|
95
|
+
version: config.version,
|
|
96
|
+
config,
|
|
97
|
+
packageYmlPath: rootPackageYmlPath,
|
|
98
|
+
packageRootDir: getPackageRootDir(cwd, 'root'),
|
|
99
|
+
packageFilesDir: getPackageFilesDir(cwd, 'root'),
|
|
100
|
+
location: 'root',
|
|
101
|
+
isCwdPackage: true
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
logger.warn(`Failed to parse root package.yml: ${error}`);
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const normalizedName = normalizePackageName(packageName);
|
|
110
|
+
// Package name provided: check if it matches root package
|
|
111
|
+
if (hasRootPackage) {
|
|
112
|
+
try {
|
|
113
|
+
const rootConfig = await parsePackageYml(rootPackageYmlPath);
|
|
114
|
+
if (arePackageNamesEquivalent(rootConfig.name, packageName)) {
|
|
115
|
+
return {
|
|
116
|
+
name: normalizedName,
|
|
117
|
+
version: rootConfig.version,
|
|
118
|
+
config: rootConfig,
|
|
119
|
+
packageYmlPath: rootPackageYmlPath,
|
|
120
|
+
packageRootDir: getPackageRootDir(cwd, 'root'),
|
|
121
|
+
packageFilesDir: getPackageFilesDir(cwd, 'root'),
|
|
122
|
+
location: 'root',
|
|
123
|
+
isCwdPackage: true
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
logger.debug(`Failed to parse root package.yml: ${error}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Check nested packages directory
|
|
132
|
+
const nestedPackageYmlPath = getPackageYmlPath(cwd, 'nested', packageName);
|
|
133
|
+
const nestedPackageRootDir = getPackageRootDir(cwd, 'nested', packageName);
|
|
134
|
+
const nestedPackageFilesDir = getPackageFilesDir(cwd, 'nested', packageName);
|
|
135
|
+
if (await exists(nestedPackageYmlPath)) {
|
|
136
|
+
try {
|
|
137
|
+
const nestedConfig = await parsePackageYml(nestedPackageYmlPath);
|
|
138
|
+
if (arePackageNamesEquivalent(nestedConfig.name, packageName)) {
|
|
139
|
+
return {
|
|
140
|
+
name: normalizedName,
|
|
141
|
+
version: nestedConfig.version,
|
|
142
|
+
config: nestedConfig,
|
|
143
|
+
packageYmlPath: nestedPackageYmlPath,
|
|
144
|
+
packageRootDir: nestedPackageRootDir,
|
|
145
|
+
packageFilesDir: nestedPackageFilesDir,
|
|
146
|
+
location: 'nested',
|
|
147
|
+
isCwdPackage: false
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
logger.debug(`Failed to parse nested package.yml at ${nestedPackageYmlPath}: ${error}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Scan nested packages for cases where directory name differs from package name
|
|
156
|
+
const packagesDir = join(cwd, DIR_PATTERNS.OPENPACKAGE, OPENPACKAGE_DIRS.PACKAGES);
|
|
157
|
+
if (await exists(packagesDir) && (await isDirectory(packagesDir))) {
|
|
158
|
+
try {
|
|
159
|
+
const packageDirs = await findDirectoriesContainingFile(packagesDir, FILE_PATTERNS.PACKAGE_YML, async (filePath) => {
|
|
160
|
+
try {
|
|
161
|
+
return await parsePackageYml(filePath);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
for (const { dirPath, parsedContent } of packageDirs) {
|
|
168
|
+
if (!parsedContent)
|
|
169
|
+
continue;
|
|
170
|
+
if (arePackageNamesEquivalent(parsedContent.name, packageName)) {
|
|
171
|
+
// dirPath is the content directory (.openpackage/), so package root is parent
|
|
172
|
+
const packageRootDir = dirname(dirPath);
|
|
173
|
+
return {
|
|
174
|
+
name: normalizedName,
|
|
175
|
+
version: parsedContent.version,
|
|
176
|
+
config: parsedContent,
|
|
177
|
+
packageYmlPath: join(dirPath, FILE_PATTERNS.PACKAGE_YML),
|
|
178
|
+
packageRootDir,
|
|
179
|
+
packageFilesDir: dirPath,
|
|
180
|
+
location: 'nested',
|
|
181
|
+
isCwdPackage: false
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
logger.debug(`Failed to scan packages directory: ${error}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create a new package context for initialization.
|
|
194
|
+
* Does not write any files - just builds the context.
|
|
195
|
+
*/
|
|
196
|
+
export function createPackageContext(cwd, config, location) {
|
|
197
|
+
const normalizedName = normalizePackageName(config.name);
|
|
198
|
+
return {
|
|
199
|
+
name: normalizedName,
|
|
200
|
+
version: config.version,
|
|
201
|
+
config,
|
|
202
|
+
packageYmlPath: getPackageYmlPath(cwd, location, location === 'nested' ? normalizedName : undefined),
|
|
203
|
+
packageRootDir: getPackageRootDir(cwd, location, location === 'nested' ? normalizedName : undefined),
|
|
204
|
+
packageFilesDir: getPackageFilesDir(cwd, location, location === 'nested' ? normalizedName : undefined),
|
|
205
|
+
location,
|
|
206
|
+
isCwdPackage: location === 'root',
|
|
207
|
+
isNew: true
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Check if a package context represents a root package.
|
|
212
|
+
*/
|
|
213
|
+
export function isRootPackage(ctx) {
|
|
214
|
+
return ctx.location === 'root';
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Convert PackageContext to legacy DetectedPackageContext format.
|
|
218
|
+
* @deprecated Use PackageContext directly
|
|
219
|
+
*/
|
|
220
|
+
export function toDetectedPackageContext(ctx) {
|
|
221
|
+
return {
|
|
222
|
+
packageDir: ctx.packageFilesDir,
|
|
223
|
+
packageYmlPath: ctx.packageYmlPath,
|
|
224
|
+
config: ctx.config,
|
|
225
|
+
location: ctx.location,
|
|
226
|
+
isCwdPackage: ctx.isCwdPackage
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Error message for when no package is detected.
|
|
231
|
+
*/
|
|
232
|
+
export function getNoPackageDetectedMessage(packageName) {
|
|
233
|
+
if (packageName) {
|
|
234
|
+
return (`Package '${packageName}' not found.\n\n` +
|
|
235
|
+
`Checked locations:\n` +
|
|
236
|
+
` • Root package: .openpackage/package.yml\n` +
|
|
237
|
+
` • Nested packages: .openpackage/packages/${packageName}/\n\n` +
|
|
238
|
+
`💡 To create a new package, run: opkg save ${packageName}`);
|
|
239
|
+
}
|
|
240
|
+
return (`No package detected at current directory.\n\n` +
|
|
241
|
+
`A valid package requires .openpackage/package.yml to exist.\n\n` +
|
|
242
|
+
`💡 To initialize a package:\n` +
|
|
243
|
+
` • Run 'opkg init' to create a new package\n` +
|
|
244
|
+
` • Or specify a package name: 'opkg save <package-name>'`);
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=package-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-context.js","sourceRoot":"","sources":["../../src/core/package-context.ts"],"names":[],"mappings":"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"}
|
package/dist/core/package.js
CHANGED
|
@@ -5,11 +5,9 @@ import { logger } from '../utils/logger.js';
|
|
|
5
5
|
import { PackageNotFoundError, InvalidPackageError, } from '../utils/errors.js';
|
|
6
6
|
import { validatePackageName } from '../utils/package-name.js';
|
|
7
7
|
import { getPackagePath, getPackageVersionPath, getLatestPackageVersion, listPackageVersions } from './directory.js';
|
|
8
|
-
import { parsePackageYml } from '../utils/package-yml.js';
|
|
8
|
+
import { parsePackageYml, writePackageYml } from '../utils/package-yml.js';
|
|
9
9
|
import { resolveVersionRange, isExactVersion } from '../utils/version-ranges.js';
|
|
10
|
-
|
|
11
|
-
* Package management operations
|
|
12
|
-
*/
|
|
10
|
+
import { PACKAGE_PATHS, UNVERSIONED } from '../constants/index.js';
|
|
13
11
|
export class PackageManager {
|
|
14
12
|
/**
|
|
15
13
|
* Load a package from the registry (latest version by default)
|
|
@@ -18,7 +16,10 @@ export class PackageManager {
|
|
|
18
16
|
logger.debug(`Loading package: ${packageName}`, { version });
|
|
19
17
|
validatePackageName(packageName);
|
|
20
18
|
let targetVersion;
|
|
21
|
-
if (version) {
|
|
19
|
+
if (version === UNVERSIONED) {
|
|
20
|
+
targetVersion = UNVERSIONED;
|
|
21
|
+
}
|
|
22
|
+
else if (version) {
|
|
22
23
|
// Check if it's a version range or exact version
|
|
23
24
|
if (isExactVersion(version)) {
|
|
24
25
|
targetVersion = version;
|
|
@@ -48,8 +49,8 @@ export class PackageManager {
|
|
|
48
49
|
throw new PackageNotFoundError(packageName);
|
|
49
50
|
}
|
|
50
51
|
try {
|
|
51
|
-
// Load package.yml for metadata
|
|
52
|
-
const packageYmlPath = join(packagePath,
|
|
52
|
+
// Load package.yml for metadata (always under .openpackage/)
|
|
53
|
+
const packageYmlPath = join(packagePath, PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
53
54
|
if (!(await exists(packageYmlPath))) {
|
|
54
55
|
throw new PackageNotFoundError(packageName);
|
|
55
56
|
}
|
|
@@ -69,10 +70,10 @@ export class PackageManager {
|
|
|
69
70
|
/**
|
|
70
71
|
* Save a package to the registry (versioned)
|
|
71
72
|
*/
|
|
72
|
-
async savePackage(pkg) {
|
|
73
|
+
async savePackage(pkg, options = {}) {
|
|
73
74
|
const { metadata, files } = pkg;
|
|
74
75
|
const packagePath = getPackageVersionPath(metadata.name, metadata.version);
|
|
75
|
-
logger.debug(`Saving package: ${metadata.name}@${metadata.version}`, { packagePath });
|
|
76
|
+
logger.debug(`Saving package: ${metadata.name}@${metadata.version ?? UNVERSIONED}`, { packagePath });
|
|
76
77
|
try {
|
|
77
78
|
// Ensure the version directory exists
|
|
78
79
|
await ensureDir(packagePath);
|
|
@@ -82,6 +83,12 @@ export class PackageManager {
|
|
|
82
83
|
await ensureDir(dirname(fullPath));
|
|
83
84
|
await writeTextFile(fullPath, file.content, file.encoding || 'utf8');
|
|
84
85
|
}
|
|
86
|
+
if (options.partial) {
|
|
87
|
+
await this.markPartialInManifest(packagePath);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
await this.clearPartialInManifest(packagePath);
|
|
91
|
+
}
|
|
85
92
|
logger.info(`Package '${metadata.name}@${metadata.version}' saved successfully`);
|
|
86
93
|
}
|
|
87
94
|
catch (error) {
|
|
@@ -135,6 +142,31 @@ export class PackageManager {
|
|
|
135
142
|
const latestVersion = await getLatestPackageVersion(packageName);
|
|
136
143
|
return latestVersion !== null;
|
|
137
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Return local state for a specific package version, including partial metadata.
|
|
147
|
+
*/
|
|
148
|
+
async getPackageVersionState(packageName, version) {
|
|
149
|
+
const packagePath = getPackageVersionPath(packageName, version);
|
|
150
|
+
const existsLocally = await exists(packagePath);
|
|
151
|
+
if (!existsLocally) {
|
|
152
|
+
return { exists: false, isPartial: false, paths: [] };
|
|
153
|
+
}
|
|
154
|
+
const manifestPath = join(packagePath, PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
155
|
+
const manifestExists = await exists(manifestPath);
|
|
156
|
+
let isPartial = !manifestExists;
|
|
157
|
+
if (manifestExists) {
|
|
158
|
+
try {
|
|
159
|
+
const manifest = await parsePackageYml(manifestPath);
|
|
160
|
+
isPartial = Boolean(manifest.partial);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
logger.warn('Failed to read package manifest for partial state', { packageName, version, error });
|
|
164
|
+
isPartial = true;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const paths = await this.listPackageFilePaths(packagePath);
|
|
168
|
+
return { exists: true, isPartial, paths };
|
|
169
|
+
}
|
|
138
170
|
/**
|
|
139
171
|
* Discover all files in a package directory
|
|
140
172
|
*/
|
|
@@ -164,6 +196,38 @@ export class PackageManager {
|
|
|
164
196
|
throw new InvalidPackageError(`Failed to discover package files: ${error}`);
|
|
165
197
|
}
|
|
166
198
|
}
|
|
199
|
+
async markPartialInManifest(packagePath) {
|
|
200
|
+
const manifestPath = join(packagePath, PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
201
|
+
if (!(await exists(manifestPath))) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const manifest = await parsePackageYml(manifestPath);
|
|
205
|
+
manifest.partial = true;
|
|
206
|
+
await writePackageYml(manifestPath, manifest);
|
|
207
|
+
}
|
|
208
|
+
async clearPartialInManifest(packagePath) {
|
|
209
|
+
const manifestPath = join(packagePath, PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
210
|
+
if (!(await exists(manifestPath))) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const manifest = await parsePackageYml(manifestPath);
|
|
214
|
+
if (manifest.partial !== undefined) {
|
|
215
|
+
delete manifest.partial;
|
|
216
|
+
await writePackageYml(manifestPath, manifest);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async listPackageFilePaths(packagePath) {
|
|
220
|
+
const paths = [];
|
|
221
|
+
for await (const fullPath of walkFiles(packagePath)) {
|
|
222
|
+
const relativePath = relative(packagePath, fullPath);
|
|
223
|
+
if (isJunk(basename(relativePath))) {
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
paths.push(relativePath);
|
|
227
|
+
}
|
|
228
|
+
paths.sort();
|
|
229
|
+
return paths;
|
|
230
|
+
}
|
|
167
231
|
}
|
|
168
232
|
// Create and export a singleton instance
|
|
169
233
|
export const packageManager = new PackageManager();
|