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
|
@@ -1,52 +1,91 @@
|
|
|
1
|
-
import { normalizePackageName } from "../../utils/package-name.js";
|
|
2
|
-
import { ensureDir, writeTextFile, remove } from "../../utils/fs.js";
|
|
3
|
-
import { logger } from "../../utils/logger.js";
|
|
4
|
-
import { resolveTargetDirectory, resolveTargetFilePath } from "../../utils/platform-mapper.js";
|
|
5
|
-
import { getPackageVersionPath } from "../directory.js";
|
|
6
|
-
import { UTF8_ENCODING } from "./constants.js";
|
|
7
|
-
import { packageVersionExists } from "../../utils/package-versioning.js";
|
|
8
1
|
/**
|
|
9
|
-
*
|
|
2
|
+
* Registry write operations for save/pack commands.
|
|
3
|
+
*
|
|
4
|
+
* This module handles persisting a package version to the local registry at
|
|
5
|
+
* ~/.openpackage/registry/<name>/<version>/...
|
|
10
6
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
import * as yaml from 'js-yaml';
|
|
8
|
+
import { normalizePackageName } from '../../utils/package-name.js';
|
|
9
|
+
import { remove } from '../../utils/fs.js';
|
|
10
|
+
import { logger } from '../../utils/logger.js';
|
|
11
|
+
import { packageManager } from '../package.js';
|
|
12
|
+
import { getPackageVersionPath } from '../directory.js';
|
|
13
|
+
import { packageVersionExists } from '../../utils/package-versioning.js';
|
|
14
|
+
import { writePackageFilesToDirectory } from '../../utils/package-copy.js';
|
|
15
|
+
import { mergePackageFiles, stripPartialFlag } from '../../utils/package-merge.js';
|
|
16
|
+
import { PACKAGE_PATHS } from '../../constants/index.js';
|
|
17
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
18
|
+
// Public API
|
|
19
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Save a package version to the local registry.
|
|
22
|
+
*
|
|
23
|
+
* - Normalizes the package name for consistent registry paths.
|
|
24
|
+
* - Clears any existing version directory before writing (idempotent overwrites).
|
|
25
|
+
* - Writes all provided files to the registry version directory.
|
|
26
|
+
*
|
|
27
|
+
* @param packageContext - Metadata about the package (name, version, paths).
|
|
28
|
+
* @param files - The registry payload to persist.
|
|
29
|
+
* @returns Result indicating success/failure and the normalized config.
|
|
30
|
+
*/
|
|
31
|
+
export async function savePackageToRegistry(packageContext, files) {
|
|
32
|
+
const { config } = packageContext;
|
|
33
|
+
const normalizedName = normalizePackageName(config.name);
|
|
34
|
+
const normalizedConfig = { ...config, name: normalizedName };
|
|
35
|
+
const versionDir = getPackageVersionPath(normalizedName, normalizedConfig.version);
|
|
36
|
+
const manifestIsPartial = isManifestPartial(files);
|
|
37
|
+
const registryHasPackage = await packageManager.packageExists(normalizedName);
|
|
38
|
+
let filesToWrite = files;
|
|
39
|
+
if (manifestIsPartial && registryHasPackage) {
|
|
40
|
+
const baseFiles = await loadExistingFiles(normalizedName, normalizedConfig.version);
|
|
41
|
+
filesToWrite = mergePackageFiles(baseFiles, filesToWrite);
|
|
42
|
+
}
|
|
43
|
+
if (manifestIsPartial) {
|
|
44
|
+
filesToWrite = stripPartialFlag(filesToWrite, normalizedName);
|
|
45
|
+
delete normalizedConfig.partial;
|
|
46
|
+
}
|
|
13
47
|
try {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const targetPath = getPackageVersionPath(normalizedConfig.name, normalizedConfig.version);
|
|
17
|
-
// If version already exists, clear the directory first to remove old files
|
|
18
|
-
if (await packageVersionExists(normalizedConfig.name, normalizedConfig.version)) {
|
|
19
|
-
await remove(targetPath);
|
|
20
|
-
logger.debug(`Cleared existing version directory: ${targetPath}`);
|
|
21
|
-
}
|
|
22
|
-
await ensureDir(targetPath);
|
|
23
|
-
// Group files by target directory
|
|
24
|
-
const directoryGroups = new Map();
|
|
25
|
-
for (const file of files) {
|
|
26
|
-
const targetDir = resolveTargetDirectory(targetPath, file.path);
|
|
27
|
-
if (!directoryGroups.has(targetDir)) {
|
|
28
|
-
directoryGroups.set(targetDir, []);
|
|
29
|
-
}
|
|
30
|
-
directoryGroups.get(targetDir).push(file);
|
|
31
|
-
}
|
|
32
|
-
// Save files in parallel by directory
|
|
33
|
-
const savePromises = Array.from(directoryGroups.entries()).map(async ([dir, dirFiles]) => {
|
|
34
|
-
await ensureDir(dir);
|
|
35
|
-
const filePromises = dirFiles.map(async (file) => {
|
|
36
|
-
const filePath = resolveTargetFilePath(dir, file.path);
|
|
37
|
-
await writeTextFile(filePath, file.content, file.encoding || UTF8_ENCODING);
|
|
38
|
-
});
|
|
39
|
-
await Promise.all(filePromises);
|
|
40
|
-
});
|
|
41
|
-
await Promise.all(savePromises);
|
|
42
|
-
if (!silent) {
|
|
43
|
-
logger.info(`Package '${normalizedConfig.name}@${normalizedConfig.version}' saved to local registry`);
|
|
44
|
-
}
|
|
48
|
+
await clearExistingVersion(normalizedName, normalizedConfig.version, versionDir);
|
|
49
|
+
await writePackageFilesToDirectory(versionDir, filesToWrite);
|
|
45
50
|
return { success: true, updatedConfig: normalizedConfig };
|
|
46
51
|
}
|
|
47
52
|
catch (error) {
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
const message = `Failed to save ${normalizedName}@${normalizedConfig.version}: ${error}`;
|
|
54
|
+
logger.error(message);
|
|
55
|
+
return { success: false, error: message };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function isManifestPartial(files) {
|
|
59
|
+
const manifest = files.find(f => f.path === PACKAGE_PATHS.MANIFEST_RELATIVE);
|
|
60
|
+
if (!manifest)
|
|
61
|
+
return false;
|
|
62
|
+
try {
|
|
63
|
+
const parsed = yaml.load(manifest.content);
|
|
64
|
+
return parsed?.partial === true;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function loadExistingFiles(packageName, version) {
|
|
71
|
+
try {
|
|
72
|
+
return (await packageManager.loadPackage(packageName, version)).files;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
logger.debug(`No existing version to merge`, { packageName, version, error });
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
// Helpers
|
|
81
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* Remove an existing version directory if present (ensures clean overwrites).
|
|
84
|
+
*/
|
|
85
|
+
async function clearExistingVersion(packageName, version, versionDir) {
|
|
86
|
+
if (await packageVersionExists(packageName, version)) {
|
|
87
|
+
await remove(versionDir);
|
|
88
|
+
logger.debug(`Cleared existing registry version: ${versionDir}`);
|
|
50
89
|
}
|
|
51
90
|
}
|
|
52
91
|
//# sourceMappingURL=package-saver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-saver.js","sourceRoot":"","sources":["../../../src/core/save/package-saver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package-saver.js","sourceRoot":"","sources":["../../../src/core/save/package-saver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +1,61 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { ensureLocalOpenPackageStructure } from "../../utils/package-management.js";
|
|
10
|
-
import { DEFAULT_VERSION, ERROR_MESSAGES, LOG_PREFIXES } from "./constants.js";
|
|
11
|
-
/**
|
|
12
|
-
* Create package.yml automatically in a directory without user prompts
|
|
13
|
-
* Reuses init command logic but makes it non-interactive
|
|
14
|
-
*/
|
|
15
|
-
async function createPackageYmlInDirectory(packageDir, packageName) {
|
|
16
|
-
const cwd = process.cwd();
|
|
17
|
-
// Ensure the target directory exists (including packages subdirectory)
|
|
18
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
19
|
-
await ensureDir(packageDir);
|
|
20
|
-
// Create package.yml in the package directory (rTnot the main .openpackage directory)
|
|
21
|
-
const packageYmlPath = join(packageDir, FILE_PATTERNS.PACKAGE_YML);
|
|
22
|
-
// Create default package config
|
|
23
|
-
const packageConfig = {
|
|
24
|
-
name: normalizePackageName(packageName),
|
|
25
|
-
version: DEFAULT_VERSION
|
|
26
|
-
};
|
|
27
|
-
// Create the package.yml file
|
|
28
|
-
await writePackageYml(packageYmlPath, packageConfig);
|
|
29
|
-
console.log(`${LOG_PREFIXES.CREATED} ${packageDir}`);
|
|
30
|
-
console.log(`${LOG_PREFIXES.NAME} ${packageConfig.name}`);
|
|
31
|
-
console.log(`${LOG_PREFIXES.VERSION} ${packageConfig.version}`);
|
|
32
|
-
return {
|
|
33
|
-
fullPath: packageYmlPath,
|
|
34
|
-
config: packageConfig,
|
|
35
|
-
isNewPackage: true
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Read existing package.yml (creating a default one if missing) without mutating the version.
|
|
40
|
-
* Used by the new save/pack flows where package.yml stays on the user-managed stable line.
|
|
41
|
-
*/
|
|
1
|
+
import { dirname } from 'path';
|
|
2
|
+
import { normalizePackageName } from '../../utils/package-name.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { getPackageFilesDir, getPackageYmlPath, getPackageRootDir } from '../package-context.js';
|
|
5
|
+
import { ensurePackageWithYml } from '../../utils/package-management.js';
|
|
6
|
+
import { LOG_PREFIXES } from './constants.js';
|
|
7
|
+
import { UNVERSIONED } from '../../constants/index.js';
|
|
8
|
+
import { applyWorkspacePackageRename } from './workspace-rename.js';
|
|
42
9
|
export async function readOrCreateBasePackageYml(cwd, name) {
|
|
43
|
-
await ensureLocalOpenPackageStructure(cwd);
|
|
44
|
-
const packageDir = getLocalPackageDir(cwd, name);
|
|
45
|
-
if (!(await exists(packageDir)) || !(await isDirectory(packageDir))) {
|
|
46
|
-
await ensureDir(packageDir);
|
|
47
|
-
logger.debug('Created package directory for save', { path: packageDir });
|
|
48
|
-
}
|
|
49
10
|
const normalizedName = normalizePackageName(name);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
logger.debug('
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
throw new ValidationError(ERROR_MESSAGES.PARSE_PACKAGE_YML_FAILED.replace('%s', packageYmlPath).replace('%s', String(error)));
|
|
61
|
-
}
|
|
11
|
+
const ensured = await ensurePackageWithYml(cwd, normalizedName, {
|
|
12
|
+
defaultVersion: undefined
|
|
13
|
+
});
|
|
14
|
+
if (ensured.isNew) {
|
|
15
|
+
logger.debug('No package.yml found for save, creating', { dir: ensured.packageDir });
|
|
16
|
+
console.log(`${LOG_PREFIXES.CREATED} ${ensured.packageDir}`);
|
|
17
|
+
console.log(`${LOG_PREFIXES.NAME} ${ensured.packageConfig.name}`);
|
|
18
|
+
console.log(`${LOG_PREFIXES.VERSION} ${ensured.packageConfig.version ?? UNVERSIONED}`);
|
|
62
19
|
}
|
|
63
20
|
else {
|
|
64
|
-
logger.debug('
|
|
65
|
-
|
|
66
|
-
packageConfig = created.config;
|
|
67
|
-
isNewPackage = true;
|
|
21
|
+
logger.debug('Found existing package.yml for save', { path: ensured.packageYmlPath });
|
|
22
|
+
console.log(`✓ Found existing package ${ensured.packageConfig.name}${ensured.packageConfig.version ? `@${ensured.packageConfig.version}` : ''}`);
|
|
68
23
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
24
|
+
// ensured.packageDir is the content directory (.openpackage/), so package root is parent
|
|
25
|
+
const packageRootDir = dirname(ensured.packageDir);
|
|
26
|
+
return {
|
|
27
|
+
name: ensured.normalizedName,
|
|
28
|
+
version: ensured.packageConfig.version,
|
|
29
|
+
config: ensured.packageConfig,
|
|
30
|
+
packageYmlPath: ensured.packageYmlPath,
|
|
31
|
+
packageRootDir,
|
|
32
|
+
packageFilesDir: ensured.packageDir,
|
|
33
|
+
location: 'nested',
|
|
34
|
+
isCwdPackage: false,
|
|
35
|
+
isNew: ensured.isNew
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export async function loadAndPreparePackage(cwd, packageName, options = {}) {
|
|
39
|
+
const renameTarget = options.renameTo ? normalizePackageName(options.renameTo) : undefined;
|
|
40
|
+
const ctx = await readOrCreateBasePackageYml(cwd, packageName);
|
|
41
|
+
if (!renameTarget || renameTarget === ctx.config.name) {
|
|
42
|
+
return ctx;
|
|
73
43
|
}
|
|
44
|
+
logger.debug(`Renaming package during workspace load`, {
|
|
45
|
+
from: ctx.config.name,
|
|
46
|
+
to: renameTarget
|
|
47
|
+
});
|
|
48
|
+
await applyWorkspacePackageRename(cwd, ctx, renameTarget);
|
|
49
|
+
const packageRootDir = getPackageRootDir(cwd, 'nested', renameTarget);
|
|
50
|
+
const packageYmlPath = getPackageYmlPath(cwd, 'nested', renameTarget);
|
|
51
|
+
const packageFilesDir = getPackageFilesDir(cwd, 'nested', renameTarget);
|
|
74
52
|
return {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
...ctx,
|
|
54
|
+
name: renameTarget,
|
|
55
|
+
packageYmlPath,
|
|
56
|
+
packageRootDir,
|
|
57
|
+
packageFilesDir,
|
|
58
|
+
config: { ...ctx.config, name: renameTarget }
|
|
79
59
|
};
|
|
80
60
|
}
|
|
81
61
|
//# sourceMappingURL=package-yml-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/package-yml-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"package-yml-generator.js","sourceRoot":"","sources":["../../../src/core/save/package-yml-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAuB,MAAM,uBAAuB,CAAC;AACtH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAMpE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAW,EACX,IAAY;IAEZ,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,cAAc,EAAE;QAC9D,cAAc,EAAE,SAAS;KAC1B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CACT,4BAA4B,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACpI,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,cAAc;QAC5B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO;QACtC,MAAM,EAAE,OAAO,CAAC,aAAa;QAC7B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,cAAc;QACd,eAAe,EAAE,OAAO,CAAC,UAAU;QACnC,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,WAAmB,EACnB,UAA8B,EAAE;IAEhC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,GAAG,GAAG,MAAM,0BAA0B,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;QACrD,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,EAAE,EAAE,YAAY;KACjB,CAAC,CAAC;IAEH,MAAM,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IAE1D,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAExE,OAAO;QACL,GAAG,GAAG;QACN,IAAI,EAAE,YAAY;QAClB,cAAc;QACd,cAAc;QACd,eAAe;QACf,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-save-candidates.js","sourceRoot":"","sources":["../../../src/core/save/root-save-candidates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"root-save-candidates.js","sourceRoot":"","sources":["../../../src/core/save/root-save-candidates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { FILE_PATTERNS, PACKAGE_PATHS } from '../../constants/index.js';
|
|
2
|
+
import { findFilesByExtension, getFileMtime } from '../../utils/file-processing.js';
|
|
3
|
+
import { readTextFile } from '../../utils/fs.js';
|
|
4
|
+
import { calculateFileHash } from '../../utils/hash-utils.js';
|
|
5
|
+
import { isAllowedRegistryPath, normalizeRegistryPath } from '../../utils/registry-entry-filter.js';
|
|
6
|
+
import { getRelativePathFromBase } from '../../utils/path-normalization.js';
|
|
7
|
+
import { splitFrontmatter, stripFrontmatter } from '../../utils/markdown-frontmatter.js';
|
|
8
|
+
import { discoverPlatformFilesUnified } from '../discovery/platform-files-discovery.js';
|
|
9
|
+
import { inferPlatformFromWorkspaceFile } from '../platforms.js';
|
|
10
|
+
export async function loadLocalCandidates(packageDir) {
|
|
11
|
+
const entries = await findFilesByExtension(packageDir, [], packageDir);
|
|
12
|
+
const candidates = [];
|
|
13
|
+
for (const entry of entries) {
|
|
14
|
+
const normalizedPath = normalizeRegistryPath(entry.relativePath);
|
|
15
|
+
if (normalizedPath === FILE_PATTERNS.PACKAGE_INDEX_YML ||
|
|
16
|
+
normalizedPath === PACKAGE_PATHS.INDEX_RELATIVE) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (normalizedPath === FILE_PATTERNS.AGENTS_MD) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const fullPath = entry.fullPath;
|
|
26
|
+
const content = await readTextFile(fullPath);
|
|
27
|
+
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
28
|
+
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
29
|
+
const markdownBody = split ? split.body : content;
|
|
30
|
+
const frontmatter = split?.frontmatter ?? undefined;
|
|
31
|
+
const rawFrontmatter = split?.rawFrontmatter;
|
|
32
|
+
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
33
|
+
const mtime = await getFileMtime(fullPath);
|
|
34
|
+
candidates.push({
|
|
35
|
+
source: 'local',
|
|
36
|
+
registryPath: normalizedPath,
|
|
37
|
+
fullPath,
|
|
38
|
+
content,
|
|
39
|
+
contentHash,
|
|
40
|
+
mtime,
|
|
41
|
+
displayPath: normalizedPath,
|
|
42
|
+
isMarkdown,
|
|
43
|
+
frontmatter,
|
|
44
|
+
rawFrontmatter,
|
|
45
|
+
markdownBody
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return candidates;
|
|
49
|
+
}
|
|
50
|
+
export async function discoverWorkspaceCandidates(cwd, packageName) {
|
|
51
|
+
const discovered = await discoverPlatformFilesUnified(cwd, packageName);
|
|
52
|
+
const candidates = [];
|
|
53
|
+
for (const file of discovered) {
|
|
54
|
+
const normalizedPath = normalizeRegistryPath(file.registryPath);
|
|
55
|
+
if (!isAllowedRegistryPath(normalizedPath)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const content = await readTextFile(file.fullPath);
|
|
59
|
+
const isMarkdown = normalizedPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
60
|
+
const split = isMarkdown ? splitFrontmatter(content) : undefined;
|
|
61
|
+
const markdownBody = split ? split.body : content;
|
|
62
|
+
const frontmatter = split?.frontmatter ?? undefined;
|
|
63
|
+
const rawFrontmatter = split?.rawFrontmatter;
|
|
64
|
+
const contentHash = await calculateContentHash(normalizedPath, content);
|
|
65
|
+
const displayPath = getRelativePathFromBase(file.fullPath, cwd) || normalizedPath;
|
|
66
|
+
const platform = inferPlatformFromWorkspaceFile(file.fullPath, file.sourceDir, normalizedPath);
|
|
67
|
+
candidates.push({
|
|
68
|
+
source: 'workspace',
|
|
69
|
+
registryPath: normalizedPath,
|
|
70
|
+
fullPath: file.fullPath,
|
|
71
|
+
content,
|
|
72
|
+
contentHash,
|
|
73
|
+
mtime: file.mtime,
|
|
74
|
+
displayPath,
|
|
75
|
+
platform,
|
|
76
|
+
isMarkdown,
|
|
77
|
+
frontmatter,
|
|
78
|
+
rawFrontmatter,
|
|
79
|
+
markdownBody
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return candidates;
|
|
83
|
+
}
|
|
84
|
+
async function calculateContentHash(registryPath, content) {
|
|
85
|
+
const isMarkdown = registryPath.endsWith(FILE_PATTERNS.MD_FILES);
|
|
86
|
+
const normalizedContent = isMarkdown ? stripFrontmatter(content) : content;
|
|
87
|
+
return await calculateFileHash(normalizedContent);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=save-candidate-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-candidate-loader.js","sourceRoot":"","sources":["../../../src/core/save/save-candidate-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAGjE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IAC1D,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEjE,IACE,cAAc,KAAK,aAAa,CAAC,iBAAiB;YAClD,cAAc,KAAK,aAAa,CAAC,cAAc,EAC/C,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,cAAc,KAAK,aAAa,CAAC,SAAS,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,SAAS,CAAC;QACpD,MAAM,cAAc,GAAG,KAAK,EAAE,cAAc,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE3C,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,OAAO;YACf,YAAY,EAAE,cAAc;YAC5B,QAAQ;YACR,OAAO;YACP,WAAW;YACX,KAAK;YACL,WAAW,EAAE,cAAc;YAC3B,UAAU;YACV,WAAW;YACX,cAAc;YACd,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAW,EACX,WAAmB;IAEnB,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAExE,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,SAAS,CAAC;QACpD,MAAM,cAAc,GAAG,KAAK,EAAE,cAAc,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC;QAClF,MAAM,QAAQ,GAAG,8BAA8B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE/F,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,cAAc;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,WAAW;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW;YACX,QAAQ;YACR,UAAU;YACV,WAAW;YACX,cAAc;YACd,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,YAAoB,EAAE,OAAe;IACvE,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3E,OAAO,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACpD,CAAC"}
|