@lesliechan721/aw 0.1.0-beta.7 → 0.1.0-beta.9
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/dist/authoring/scripts/add-skill.mjs +4 -4
- package/dist/authoring/scripts/add-skill.mjs.map +1 -1
- package/dist/authoring/scripts/init-plugin.mjs +8 -37
- package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
- package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
- package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
- package/dist/authoring/scripts/plugin-status.mjs +8 -11
- package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
- package/dist/authoring/scripts/remove-plugin.mjs +2 -1
- package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/validate-plugin.mjs +64 -758
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/scripts/aw-skill-eval-materializer.d.ts +24 -0
- package/dist/scripts/{plugin-eval-materializer.js → aw-skill-eval-materializer.js} +34 -145
- package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
- package/dist/scripts/bundle-plugins.d.ts +1 -0
- package/dist/scripts/bundle-plugins.js +2 -1
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/scripts/plugin-staging.d.ts +6 -8
- package/dist/scripts/plugin-staging.js +15 -28
- package/dist/scripts/plugin-staging.js.map +1 -1
- package/dist/scripts/test-plugin-scripts.js +2 -33
- package/dist/scripts/test-plugin-scripts.js.map +1 -1
- package/dist/src/adapters/helpers.js +2 -2
- package/dist/src/adapters/helpers.js.map +1 -1
- package/dist/src/authoring/workspace-commands.d.ts +17 -1
- package/dist/src/authoring/workspace-commands.js +21 -4
- package/dist/src/authoring/workspace-commands.js.map +1 -1
- package/dist/src/commands/aw-capabilities.d.ts +78 -0
- package/dist/src/commands/aw-capabilities.js +254 -0
- package/dist/src/commands/aw-capabilities.js.map +1 -0
- package/dist/src/commands/catalog-dev-source.d.ts +118 -0
- package/dist/src/commands/catalog-dev-source.js +417 -0
- package/dist/src/commands/catalog-dev-source.js.map +1 -0
- package/dist/src/commands/catalog-generation.d.ts +13 -0
- package/dist/src/commands/catalog-generation.js +13 -0
- package/dist/src/commands/catalog-generation.js.map +1 -0
- package/dist/src/commands/catalog-publication-inspection.d.ts +29 -28
- package/dist/src/commands/catalog-publication-inspection.js +138 -50
- package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
- package/dist/src/commands/catalog-publication-journal.d.ts +49 -0
- package/dist/src/commands/catalog-publication-journal.js +147 -0
- package/dist/src/commands/catalog-publication-journal.js.map +1 -0
- package/dist/src/commands/catalog-publication-target.d.ts +18 -0
- package/dist/src/commands/catalog-publication-target.js +95 -0
- package/dist/src/commands/catalog-publication-target.js.map +1 -0
- package/dist/src/commands/catalog-publish.d.ts +58 -15
- package/dist/src/commands/catalog-publish.js +590 -210
- package/dist/src/commands/catalog-publish.js.map +1 -1
- package/dist/src/commands/catalog-source.d.ts +12 -15
- package/dist/src/commands/catalog-source.js +61 -86
- package/dist/src/commands/catalog-source.js.map +1 -1
- package/dist/src/commands/catalog-status.d.ts +18 -22
- package/dist/src/commands/catalog-status.js +81 -115
- package/dist/src/commands/catalog-status.js.map +1 -1
- package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
- package/dist/src/commands/catalog-workspace-resolution.js +42 -0
- package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
- package/dist/src/commands/dependency-operation-plan.d.ts +88 -9
- package/dist/src/commands/dependency-operation-plan.js +331 -6
- package/dist/src/commands/dependency-operation-plan.js.map +1 -1
- package/dist/src/commands/init.d.ts +5 -11
- package/dist/src/commands/init.js +30 -51
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/offline-cleanup-evidence.d.ts +43 -0
- package/dist/src/commands/offline-cleanup-evidence.js +116 -0
- package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
- package/dist/src/commands/options.d.ts +7 -1
- package/dist/src/commands/options.js +65 -6
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/plugin-capabilities.js +5 -1
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +27 -13
- package/dist/src/commands/rebuild-command.js +1472 -471
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +63 -8
- package/dist/src/commands/rebuild-integration.js +761 -439
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.d.ts +2 -8
- package/dist/src/commands/rebuild-operations.js +48 -132
- package/dist/src/commands/rebuild-operations.js.map +1 -1
- package/dist/src/commands/runtime.js +21 -34
- package/dist/src/commands/runtime.js.map +1 -1
- package/dist/src/commands/skill-eval.d.ts +33 -0
- package/dist/src/commands/skill-eval.js +363 -0
- package/dist/src/commands/skill-eval.js.map +1 -0
- package/dist/src/commands/status-v6.d.ts +202 -0
- package/dist/src/commands/status-v6.js +1938 -0
- package/dist/src/commands/status-v6.js.map +1 -0
- package/dist/src/commands/sync-command.d.ts +21 -0
- package/dist/src/commands/sync-command.js +206 -0
- package/dist/src/commands/sync-command.js.map +1 -0
- package/dist/src/commands/wizard.d.ts +2 -2
- package/dist/src/commands/wizard.js +2 -2
- package/dist/src/commands/wizard.js.map +1 -1
- package/dist/src/commands/write-commands.js +33 -19
- package/dist/src/commands/write-commands.js.map +1 -1
- package/dist/src/constants.d.ts +7 -1
- package/dist/src/constants.js +7 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/eval/manifest-v1.d.ts +66 -0
- package/dist/src/eval/manifest-v1.js +326 -0
- package/dist/src/eval/manifest-v1.js.map +1 -0
- package/dist/src/generators/local-plugin.d.ts +3 -0
- package/dist/src/generators/local-plugin.js +167 -45
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.js +863 -126
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/command-receipt.d.ts +58 -8
- package/dist/src/output/command-receipt.js +141 -11
- package/dist/src/output/command-receipt.js.map +1 -1
- package/dist/src/output/model.d.ts +3 -44
- package/dist/src/output/model.js +1 -144
- package/dist/src/output/model.js.map +1 -1
- package/dist/src/output/rebuild-progress.js +0 -3
- package/dist/src/output/rebuild-progress.js.map +1 -1
- package/dist/src/portable/commands.d.ts +6 -2
- package/dist/src/portable/commands.js +57 -6
- package/dist/src/portable/commands.js.map +1 -1
- package/dist/src/portable/materializer.d.ts +4 -4
- package/dist/src/portable/materializer.js +61 -12
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/tui/catalog-generation.d.ts +35 -0
- package/dist/src/tui/catalog-generation.js +85 -0
- package/dist/src/tui/catalog-generation.js.map +1 -0
- package/dist/src/tui/components.js +1 -2
- package/dist/src/tui/components.js.map +1 -1
- package/dist/src/tui/console-app-v4.d.ts +1 -1
- package/dist/src/tui/console-app-v4.js +647 -196
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/controller-runtime.d.ts +6 -2
- package/dist/src/tui/controller-runtime.js +646 -137
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +77 -15
- package/dist/src/tui/controller.js +647 -306
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/diagnostics.d.ts +1 -2
- package/dist/src/tui/diagnostics.js.map +1 -1
- package/dist/src/tui/index.d.ts +1 -0
- package/dist/src/tui/index.js +1 -0
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/input-display.d.ts +8 -0
- package/dist/src/tui/input-display.js +36 -0
- package/dist/src/tui/input-display.js.map +1 -0
- package/dist/src/tui/model.d.ts +102 -14
- package/dist/src/tui/model.js +630 -139
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/router.d.ts +35 -0
- package/dist/src/tui/router.js.map +1 -1
- package/dist/src/tui/source-ref-presets.d.ts +3 -0
- package/dist/src/tui/source-ref-presets.js +11 -0
- package/dist/src/tui/source-ref-presets.js.map +1 -0
- package/dist/src/tui/views.js +31 -3
- package/dist/src/tui/views.js.map +1 -1
- package/dist/src/types.d.ts +104 -13
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/agent-version.d.ts +7 -1
- package/dist/src/utils/agent-version.js +41 -8
- package/dist/src/utils/agent-version.js.map +1 -1
- package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
- package/dist/src/utils/aw-home-mutation-lock.js +32 -4
- package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
- package/dist/src/utils/bundle-integrity.d.ts +0 -1
- package/dist/src/utils/bundle-integrity.js +0 -25
- package/dist/src/utils/bundle-integrity.js.map +1 -1
- package/dist/src/utils/bundle-layout.js +8 -6
- package/dist/src/utils/bundle-layout.js.map +1 -1
- package/dist/src/utils/catalog-digests.d.ts +7 -0
- package/dist/src/utils/catalog-digests.js +40 -2
- package/dist/src/utils/catalog-digests.js.map +1 -1
- package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
- package/dist/src/utils/catalog-generation-error.d.ts +13 -0
- package/dist/src/utils/catalog-generation-error.js +28 -0
- package/dist/src/utils/catalog-generation-error.js.map +1 -0
- package/dist/src/utils/catalog-generation-resolver.d.ts +20 -0
- package/dist/src/utils/catalog-generation-resolver.js +143 -0
- package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
- package/dist/src/utils/catalog-generation-service.d.ts +43 -0
- package/dist/src/utils/catalog-generation-service.js +306 -0
- package/dist/src/utils/catalog-generation-service.js.map +1 -0
- package/dist/src/utils/catalog-generation-state.d.ts +17 -0
- package/dist/src/utils/catalog-generation-state.js +168 -0
- package/dist/src/utils/catalog-generation-state.js.map +1 -0
- package/dist/src/utils/catalog-generation-store.d.ts +34 -0
- package/dist/src/utils/catalog-generation-store.js +251 -0
- package/dist/src/utils/catalog-generation-store.js.map +1 -0
- package/dist/src/utils/catalog-manifest-v6.d.ts +5 -0
- package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v6.js} +35 -43
- package/dist/src/utils/catalog-manifest-v6.js.map +1 -0
- package/dist/src/utils/catalog-operation-context.d.ts +20 -0
- package/dist/src/utils/catalog-operation-context.js +141 -0
- package/dist/src/utils/catalog-operation-context.js.map +1 -0
- package/dist/src/utils/catalog-public-error.d.ts +7 -3
- package/dist/src/utils/catalog-public-error.js +21 -8
- package/dist/src/utils/catalog-public-error.js.map +1 -1
- package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
- package/dist/src/utils/catalog-runtime-projection.js +5 -40
- package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
- package/dist/src/utils/catalog-snapshot.d.ts +5 -3
- package/dist/src/utils/catalog-snapshot.js +11 -3
- package/dist/src/utils/catalog-snapshot.js.map +1 -1
- package/dist/src/utils/catalog-source-identity.d.ts +1 -0
- package/dist/src/utils/catalog-source-identity.js +21 -2
- package/dist/src/utils/catalog-source-identity.js.map +1 -1
- package/dist/src/utils/catalog-source-references.d.ts +7 -0
- package/dist/src/utils/catalog-source-references.js +44 -55
- package/dist/src/utils/catalog-source-references.js.map +1 -1
- package/dist/src/utils/catalog-sources.d.ts +1 -0
- package/dist/src/utils/catalog-sources.js +55 -20
- package/dist/src/utils/catalog-sources.js.map +1 -1
- package/dist/src/utils/codex-config.d.ts +2 -0
- package/dist/src/utils/codex-config.js +26 -5
- package/dist/src/utils/codex-config.js.map +1 -1
- package/dist/src/utils/codex-manager.d.ts +81 -0
- package/dist/src/utils/codex-manager.js +810 -0
- package/dist/src/utils/codex-manager.js.map +1 -0
- package/dist/src/utils/codex-reconciler.d.ts +131 -0
- package/dist/src/utils/codex-reconciler.js +327 -0
- package/dist/src/utils/codex-reconciler.js.map +1 -0
- package/dist/src/utils/codex-shared-native.d.ts +56 -0
- package/dist/src/utils/codex-shared-native.js +87 -0
- package/dist/src/utils/codex-shared-native.js.map +1 -0
- package/dist/src/utils/codex-skill-staging.d.ts +2 -0
- package/dist/src/utils/codex-skill-staging.js.map +1 -1
- package/dist/src/utils/codex-surface-analysis.d.ts +44 -0
- package/dist/src/utils/codex-surface-analysis.js +247 -0
- package/dist/src/utils/codex-surface-analysis.js.map +1 -0
- package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
- package/dist/src/utils/dynamic-skill-tree.js +35 -5
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
- package/dist/src/utils/git-catalog-provider.js +66 -140
- package/dist/src/utils/git-catalog-provider.js.map +1 -1
- package/dist/src/utils/lifecycle-active-store.d.ts +0 -28
- package/dist/src/utils/lifecycle-active-store.js +35 -247
- package/dist/src/utils/lifecycle-active-store.js.map +1 -1
- package/dist/src/utils/manifest.d.ts +1 -3
- package/dist/src/utils/manifest.js +1 -3
- package/dist/src/utils/manifest.js.map +1 -1
- package/dist/src/utils/multi-source-catalog.d.ts +3 -9
- package/dist/src/utils/multi-source-catalog.js +53 -110
- package/dist/src/utils/multi-source-catalog.js.map +1 -1
- package/dist/src/utils/native-cli.d.ts +49 -6
- package/dist/src/utils/native-cli.js +116 -33
- package/dist/src/utils/native-cli.js.map +1 -1
- package/dist/src/utils/orphan-marketplace-cleanup.js +1 -3
- package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
- package/dist/src/utils/ownership.d.ts +10 -11
- package/dist/src/utils/ownership.js +55 -112
- package/dist/src/utils/ownership.js.map +1 -1
- package/dist/src/utils/path-catalog-provider.d.ts +1 -1
- package/dist/src/utils/path-catalog-provider.js +52 -65
- package/dist/src/utils/path-catalog-provider.js.map +1 -1
- package/dist/src/utils/paths.d.ts +0 -1
- package/dist/src/utils/paths.js +0 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/plugin-config-write.js +18 -40
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +1 -12
- package/dist/src/utils/plugin-config.js +107 -226
- package/dist/src/utils/plugin-config.js.map +1 -1
- package/dist/src/utils/plugin-intent-state.d.ts +39 -0
- package/dist/src/utils/plugin-intent-state.js +325 -0
- package/dist/src/utils/plugin-intent-state.js.map +1 -0
- package/dist/src/utils/plugin-scripts.d.ts +1 -1
- package/dist/src/utils/plugin-scripts.js +1 -1
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/state-paths.js +7 -2
- package/dist/src/utils/state-paths.js.map +1 -1
- package/dist/src/utils/target-eligibility.d.ts +8 -2
- package/dist/src/utils/target-eligibility.js +9 -5
- package/dist/src/utils/target-eligibility.js.map +1 -1
- package/package.json +6 -4
- package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
- package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
- package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
- package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
- package/dist/scripts/aw-skill-eval-engine.js +0 -31
- package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
- package/dist/scripts/codex-eval-app-server.d.ts +0 -89
- package/dist/scripts/codex-eval-app-server.js +0 -1228
- package/dist/scripts/codex-eval-app-server.js.map +0 -1
- package/dist/scripts/codex-eval-isolation.d.ts +0 -61
- package/dist/scripts/codex-eval-isolation.js +0 -318
- package/dist/scripts/codex-eval-isolation.js.map +0 -1
- package/dist/scripts/codex-eval-process-management.d.ts +0 -8
- package/dist/scripts/codex-eval-process-management.js +0 -69
- package/dist/scripts/codex-eval-process-management.js.map +0 -1
- package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
- package/dist/scripts/codex-eval-process-tree.js +0 -803
- package/dist/scripts/codex-eval-process-tree.js.map +0 -1
- package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
- package/dist/scripts/codex-eval-runtime-config.js +0 -843
- package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
- package/dist/scripts/codex-trigger-eval.d.ts +0 -84
- package/dist/scripts/codex-trigger-eval.js +0 -968
- package/dist/scripts/codex-trigger-eval.js.map +0 -1
- package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
- package/dist/scripts/eval-plugin-skills-audited.js +0 -261
- package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
- package/dist/scripts/eval-plugin-skills.d.ts +0 -45
- package/dist/scripts/eval-plugin-skills.js +0 -1586
- package/dist/scripts/eval-plugin-skills.js.map +0 -1
- package/dist/scripts/eval-run-layout.d.ts +0 -17
- package/dist/scripts/eval-run-layout.js +0 -26
- package/dist/scripts/eval-run-layout.js.map +0 -1
- package/dist/scripts/plugin-eval-contract.d.ts +0 -185
- package/dist/scripts/plugin-eval-contract.js +0 -695
- package/dist/scripts/plugin-eval-contract.js.map +0 -1
- package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
- package/dist/scripts/plugin-eval-materializer.js.map +0 -1
- package/dist/scripts/skill-reporting.d.ts +0 -212
- package/dist/scripts/skill-reporting.js +0 -922
- package/dist/scripts/skill-reporting.js.map +0 -1
- package/dist/src/commands/status-v4.d.ts +0 -123
- package/dist/src/commands/status-v4.js +0 -905
- package/dist/src/commands/status-v4.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -93
- package/dist/src/commands/status.js +0 -442
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
- package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
- package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
- package/dist/src/utils/catalog-manifest-v3.js +0 -3
- package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
- package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
- package/dist/src/utils/catalog-source-cache.d.ts +0 -62
- package/dist/src/utils/catalog-source-cache.js +0 -296
- package/dist/src/utils/catalog-source-cache.js.map +0 -1
- package/dist/src/utils/codex-project-surface.d.ts +0 -3
- package/dist/src/utils/codex-project-surface.js +0 -49
- package/dist/src/utils/codex-project-surface.js.map +0 -1
- package/dist/src/utils/plugin-release.d.ts +0 -2
- package/dist/src/utils/plugin-release.js +0 -2
- package/dist/src/utils/plugin-release.js.map +0 -1
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import { CATALOG_STORE_DIRECTORY, CATALOG_STORE_METADATA_FILE } from '../constants.js';
|
|
5
|
+
import { CatalogGenerationError } from './catalog-generation-error.js';
|
|
6
|
+
import { validateCatalogSnapshotTransport } from './catalog-snapshot.js';
|
|
7
|
+
import { normalizeAwCapabilities, parseStrictSemVer } from './manifest.js';
|
|
8
|
+
import { canonicalizePathThroughExistingAncestorSync, ensureRegularDirectoryPath, resolveAwHome, } from './state-paths.js';
|
|
9
|
+
const DIGEST_PATTERN = /^sha256:([0-9a-f]{64})$/u;
|
|
10
|
+
function metadataError(message, cause) {
|
|
11
|
+
return new CatalogGenerationError({
|
|
12
|
+
code: 'catalogGenerationMetadataInvalid',
|
|
13
|
+
message: `${message} Remove the damaged store entry and run aw catalog source sync.`,
|
|
14
|
+
cause,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function digestHex(value, name) {
|
|
18
|
+
const match = DIGEST_PATTERN.exec(value);
|
|
19
|
+
if (!match)
|
|
20
|
+
throw metadataError(`Invalid ${name}: expected a SHA-256 digest.`);
|
|
21
|
+
return match[1];
|
|
22
|
+
}
|
|
23
|
+
function logicalIdentitySegment(value) {
|
|
24
|
+
if (typeof value !== 'string' || value.trim() === '' || value !== value.trim()) {
|
|
25
|
+
throw metadataError('Invalid Catalog logical identity.');
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
if (value === '.')
|
|
29
|
+
return '%2E';
|
|
30
|
+
if (value === '..')
|
|
31
|
+
return '%2E%2E';
|
|
32
|
+
const segment = encodeURIComponent(value);
|
|
33
|
+
if (segment === '.' || segment === '..' || /[\\/]/u.test(segment)) {
|
|
34
|
+
throw metadataError('Invalid Catalog logical identity.');
|
|
35
|
+
}
|
|
36
|
+
return segment;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof CatalogGenerationError)
|
|
40
|
+
throw error;
|
|
41
|
+
throw metadataError('Invalid Catalog logical identity.', error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function resolveStrictStoreDescendant(storeRootDir, ...segments) {
|
|
45
|
+
const candidate = path.resolve(storeRootDir, ...segments);
|
|
46
|
+
const relative = path.relative(storeRootDir, candidate);
|
|
47
|
+
if (relative === ''
|
|
48
|
+
|| path.isAbsolute(relative)
|
|
49
|
+
|| relative === '..'
|
|
50
|
+
|| relative.startsWith(`..${path.sep}`))
|
|
51
|
+
throw metadataError('Invalid Catalog store path.');
|
|
52
|
+
return candidate;
|
|
53
|
+
}
|
|
54
|
+
export function createCatalogStoreKey(logicalIdentity, snapshotDigest) {
|
|
55
|
+
return `${logicalIdentitySegment(logicalIdentity)}/${digestHex(snapshotDigest, 'snapshot digest')}`;
|
|
56
|
+
}
|
|
57
|
+
export function resolveCatalogStoreLocation(options) {
|
|
58
|
+
const awHomeDir = canonicalizePathThroughExistingAncestorSync(resolveAwHome(options.env ?? process.env));
|
|
59
|
+
const storeRootDir = path.join(awHomeDir, CATALOG_STORE_DIRECTORY);
|
|
60
|
+
const logicalIdentity = logicalIdentitySegment(options.logicalIdentity);
|
|
61
|
+
const digest = digestHex(options.snapshotDigest, 'snapshot digest');
|
|
62
|
+
const storeKey = `${logicalIdentity}/${digest}`;
|
|
63
|
+
const logicalIdentityDirectory = resolveStrictStoreDescendant(storeRootDir, logicalIdentity);
|
|
64
|
+
const entryDir = resolveStrictStoreDescendant(storeRootDir, logicalIdentity, digest);
|
|
65
|
+
return {
|
|
66
|
+
awHomeDir,
|
|
67
|
+
storeRootDir,
|
|
68
|
+
logicalIdentityDirectory,
|
|
69
|
+
entryDir,
|
|
70
|
+
metadataPath: path.join(entryDir, CATALOG_STORE_METADATA_FILE),
|
|
71
|
+
snapshotRoot: path.join(entryDir, 'snapshot'),
|
|
72
|
+
storeKey,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function strictRecord(value, keys) {
|
|
76
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
77
|
+
return false;
|
|
78
|
+
const actual = Object.keys(value).sort();
|
|
79
|
+
const expected = [...keys].sort();
|
|
80
|
+
return actual.length === expected.length
|
|
81
|
+
&& actual.every((key, index) => key === expected[index]);
|
|
82
|
+
}
|
|
83
|
+
function parseMetadata(value) {
|
|
84
|
+
if (!strictRecord(value, [
|
|
85
|
+
'schemaVersion', 'logicalIdentity', 'catalogVersion', 'channel', 'manifestDigest',
|
|
86
|
+
'snapshotDigest', 'requiredAwCapabilities',
|
|
87
|
+
]))
|
|
88
|
+
throw metadataError('Invalid Catalog store metadata.');
|
|
89
|
+
if (value.schemaVersion !== 1
|
|
90
|
+
|| typeof value.logicalIdentity !== 'string'
|
|
91
|
+
|| value.logicalIdentity.trim() === ''
|
|
92
|
+
|| value.logicalIdentity !== value.logicalIdentity.trim()
|
|
93
|
+
|| typeof value.catalogVersion !== 'string'
|
|
94
|
+
|| (value.channel !== 'latest' && value.channel !== 'beta')
|
|
95
|
+
|| typeof value.manifestDigest !== 'string'
|
|
96
|
+
|| !DIGEST_PATTERN.test(value.manifestDigest)
|
|
97
|
+
|| typeof value.snapshotDigest !== 'string'
|
|
98
|
+
|| !DIGEST_PATTERN.test(value.snapshotDigest)
|
|
99
|
+
|| !Array.isArray(value.requiredAwCapabilities)
|
|
100
|
+
|| value.requiredAwCapabilities.some((entry) => typeof entry !== 'string'))
|
|
101
|
+
throw metadataError('Invalid Catalog store metadata.');
|
|
102
|
+
try {
|
|
103
|
+
parseStrictSemVer(value.catalogVersion, 'Catalog store catalogVersion');
|
|
104
|
+
if (JSON.stringify(normalizeAwCapabilities(value.requiredAwCapabilities))
|
|
105
|
+
!== JSON.stringify(value.requiredAwCapabilities)) {
|
|
106
|
+
throw new Error('Capabilities are not normalized.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
throw metadataError('Invalid Catalog store metadata.', error);
|
|
111
|
+
}
|
|
112
|
+
return value;
|
|
113
|
+
}
|
|
114
|
+
export async function readCatalogSnapshotLogicalIdentity(snapshotRoot) {
|
|
115
|
+
try {
|
|
116
|
+
const markerPath = path.join(snapshotRoot, '.aw-generated.json');
|
|
117
|
+
const stat = await fs.lstat(markerPath).catch((error) => {
|
|
118
|
+
if (error.code === 'ENOENT')
|
|
119
|
+
return null;
|
|
120
|
+
throw error;
|
|
121
|
+
});
|
|
122
|
+
if (!stat?.isFile() || stat.isSymbolicLink())
|
|
123
|
+
throw metadataError('Catalog marker is missing or unsafe.');
|
|
124
|
+
const marker = await fs.readJson(markerPath);
|
|
125
|
+
if (!strictRecord(marker, ['schemaVersion', 'kind', 'workspaceIdentity', 'sourceIdentity'])
|
|
126
|
+
|| marker.schemaVersion !== 1
|
|
127
|
+
|| marker.kind !== 'catalog'
|
|
128
|
+
|| typeof marker.workspaceIdentity !== 'string'
|
|
129
|
+
|| marker.workspaceIdentity.trim() === '') {
|
|
130
|
+
throw metadataError('Catalog marker is invalid.');
|
|
131
|
+
}
|
|
132
|
+
return marker.workspaceIdentity;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (error instanceof CatalogGenerationError)
|
|
136
|
+
throw error;
|
|
137
|
+
throw metadataError('Catalog marker is unreadable.', error);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async function validateEntry(options) {
|
|
141
|
+
try {
|
|
142
|
+
const stat = await fs.lstat(options.location.entryDir).catch((error) => {
|
|
143
|
+
if (error.code === 'ENOENT')
|
|
144
|
+
return null;
|
|
145
|
+
throw error;
|
|
146
|
+
});
|
|
147
|
+
if (!stat?.isDirectory() || stat.isSymbolicLink())
|
|
148
|
+
throw metadataError('Catalog store entry is missing or unsafe.');
|
|
149
|
+
const metadataStat = await fs.lstat(options.location.metadataPath).catch((error) => error.code === 'ENOENT' ? null : Promise.reject(error));
|
|
150
|
+
if (!metadataStat?.isFile() || metadataStat.isSymbolicLink()) {
|
|
151
|
+
throw metadataError('Catalog store metadata is missing or unsafe.');
|
|
152
|
+
}
|
|
153
|
+
const metadata = parseMetadata(await fs.readJson(options.location.metadataPath));
|
|
154
|
+
const validation = await validateCatalogSnapshotTransport(options.location.snapshotRoot)
|
|
155
|
+
.catch((error) => { throw metadataError('Catalog store snapshot is damaged.', error); });
|
|
156
|
+
if (createCatalogStoreKey(metadata.logicalIdentity, metadata.snapshotDigest) !== options.location.storeKey
|
|
157
|
+
|| validation.manifestDigest !== metadata.manifestDigest
|
|
158
|
+
|| validation.snapshotDigest !== metadata.snapshotDigest
|
|
159
|
+
|| validation.manifest.catalogVersion !== metadata.catalogVersion
|
|
160
|
+
|| validation.manifest.channel !== metadata.channel
|
|
161
|
+
|| JSON.stringify(normalizeAwCapabilities(validation.manifest.requires.aw.capabilities ?? []))
|
|
162
|
+
!== JSON.stringify(metadata.requiredAwCapabilities)
|
|
163
|
+
|| await readCatalogSnapshotLogicalIdentity(options.location.snapshotRoot) !== metadata.logicalIdentity)
|
|
164
|
+
throw metadataError('Catalog store content does not match its immutable identity.');
|
|
165
|
+
return {
|
|
166
|
+
entryDir: options.location.entryDir,
|
|
167
|
+
snapshotRoot: options.location.snapshotRoot,
|
|
168
|
+
metadata,
|
|
169
|
+
manifest: validation.manifest,
|
|
170
|
+
reused: true,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
if (error instanceof CatalogGenerationError)
|
|
175
|
+
throw error;
|
|
176
|
+
throw metadataError('Catalog store entry is unreadable.', error);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export async function publishCatalogStoreEntry(options) {
|
|
180
|
+
options.signal?.throwIfAborted();
|
|
181
|
+
const logicalIdentity = await readCatalogSnapshotLogicalIdentity(options.resolution.rootDir);
|
|
182
|
+
const location = resolveCatalogStoreLocation({
|
|
183
|
+
logicalIdentity,
|
|
184
|
+
snapshotDigest: options.resolution.snapshotDigest,
|
|
185
|
+
env: options.env,
|
|
186
|
+
});
|
|
187
|
+
await ensureRegularDirectoryPath(location.storeRootDir, 'Catalog store');
|
|
188
|
+
await ensureRegularDirectoryPath(location.logicalIdentityDirectory, 'Catalog logical identity store');
|
|
189
|
+
if (await fs.pathExists(location.entryDir))
|
|
190
|
+
return validateEntry({ location });
|
|
191
|
+
const stagingDir = resolveStrictStoreDescendant(location.storeRootDir, path.basename(location.logicalIdentityDirectory), `.staging-${crypto.randomUUID()}.tmp`);
|
|
192
|
+
try {
|
|
193
|
+
await fs.mkdir(stagingDir);
|
|
194
|
+
const snapshotRoot = path.join(stagingDir, 'snapshot');
|
|
195
|
+
await fs.copy(options.resolution.rootDir, snapshotRoot, {
|
|
196
|
+
dereference: false,
|
|
197
|
+
preserveTimestamps: true,
|
|
198
|
+
filter: () => {
|
|
199
|
+
options.signal?.throwIfAborted();
|
|
200
|
+
return true;
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
const validation = await validateCatalogSnapshotTransport(snapshotRoot);
|
|
204
|
+
if (validation.manifestDigest !== options.resolution.manifestDigest
|
|
205
|
+
|| validation.snapshotDigest !== options.resolution.snapshotDigest
|
|
206
|
+
|| await readCatalogSnapshotLogicalIdentity(snapshotRoot) !== logicalIdentity)
|
|
207
|
+
throw new CatalogGenerationError({
|
|
208
|
+
code: 'catalogGenerationPublishFailed',
|
|
209
|
+
sourceId: options.resolution.sourceId,
|
|
210
|
+
message: `Catalog source "${options.resolution.sourceId}" changed before store publication. Run source sync again.`,
|
|
211
|
+
});
|
|
212
|
+
const metadata = {
|
|
213
|
+
schemaVersion: 1,
|
|
214
|
+
logicalIdentity,
|
|
215
|
+
catalogVersion: validation.manifest.catalogVersion,
|
|
216
|
+
channel: validation.manifest.channel,
|
|
217
|
+
manifestDigest: validation.manifestDigest,
|
|
218
|
+
snapshotDigest: validation.snapshotDigest,
|
|
219
|
+
requiredAwCapabilities: normalizeAwCapabilities(validation.manifest.requires.aw.capabilities ?? []),
|
|
220
|
+
};
|
|
221
|
+
await fs.writeFile(path.join(stagingDir, CATALOG_STORE_METADATA_FILE), `${JSON.stringify(metadata, null, 2)}\n`, { flag: 'wx', mode: 0o600 });
|
|
222
|
+
options.signal?.throwIfAborted();
|
|
223
|
+
try {
|
|
224
|
+
await fs.rename(stagingDir, location.entryDir);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
const code = error.code;
|
|
228
|
+
if (code !== 'EEXIST' && code !== 'ENOTEMPTY')
|
|
229
|
+
throw error;
|
|
230
|
+
return validateEntry({ location });
|
|
231
|
+
}
|
|
232
|
+
return { entryDir: location.entryDir, snapshotRoot: location.snapshotRoot, metadata, manifest: validation.manifest, reused: false };
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
if (error instanceof CatalogGenerationError)
|
|
236
|
+
throw error;
|
|
237
|
+
throw new CatalogGenerationError({
|
|
238
|
+
code: 'catalogGenerationPublishFailed',
|
|
239
|
+
sourceId: options.resolution.sourceId,
|
|
240
|
+
message: `Cannot publish Catalog store entry for source "${options.resolution.sourceId}". The previous Active entry is unchanged.`,
|
|
241
|
+
cause: error,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
245
|
+
await fs.remove(stagingDir).catch(() => undefined);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export async function readCatalogStoreEntry(options) {
|
|
249
|
+
return validateEntry({ location: resolveCatalogStoreLocation(options) });
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=catalog-generation-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-generation-store.js","sourceRoot":"","sources":["../../../src/utils/catalog-generation-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CatalogManifestV6, CatalogManifestV6Entry, PluginMeta } from '../types.js';
|
|
2
|
+
export declare const CATALOG_SCHEMA_6_CAPABILITY = "aw.catalog-snapshot.v6";
|
|
3
|
+
export declare function validateCatalogManifestV6(rawManifest: unknown): CatalogManifestV6;
|
|
4
|
+
export declare function createCatalogManifestV6(manifest: Omit<CatalogManifestV6, 'schemaVersion'>): CatalogManifestV6;
|
|
5
|
+
export declare function createCatalogManifestV6Entry(plugin: PluginMeta, pluginRoot: string): Promise<CatalogManifestV6Entry>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { calculateCatalogEntryArtifactDigest, calculateCatalogEntryContentDigest, calculateCatalogEntryManifestDigest, } from './catalog-digests.js';
|
|
2
|
-
import { createMarketplaceManifestEntry, normalizeCatalogManifestBase, normalizeCatalogManifestEntries, normalizeCatalogMarketplaceIdentity,
|
|
4
|
+
import { createMarketplaceManifestEntry, normalizeCatalogManifestBase, normalizeCatalogManifestEntries, normalizeCatalogMarketplaceIdentity, normalizeAwCapabilities, } from './manifest.js';
|
|
3
5
|
const DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/;
|
|
4
6
|
const SOURCE_HEAD_PATTERN = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
|
|
5
|
-
export const
|
|
7
|
+
export const CATALOG_SCHEMA_6_CAPABILITY = 'aw.catalog-snapshot.v6';
|
|
6
8
|
function assertObject(value, fieldName) {
|
|
7
9
|
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
8
10
|
throw new Error(`Invalid ${fieldName}: expected an object.`);
|
|
@@ -22,85 +24,75 @@ function digest(value, fieldName) {
|
|
|
22
24
|
return value;
|
|
23
25
|
}
|
|
24
26
|
function normalizeRelease(raw) {
|
|
25
|
-
const release = assertObject(raw, 'catalog manifest
|
|
27
|
+
const release = assertObject(raw, 'catalog manifest v6.release');
|
|
26
28
|
if (release.state === 'development') {
|
|
27
|
-
assertAllowedKeys(release, 'catalog manifest
|
|
29
|
+
assertAllowedKeys(release, 'catalog manifest v6.release', ['state']);
|
|
28
30
|
return { state: 'development' };
|
|
29
31
|
}
|
|
30
32
|
if (release.state !== 'published') {
|
|
31
|
-
throw new Error('Invalid catalog manifest
|
|
32
|
-
}
|
|
33
|
-
assertAllowedKeys(release, 'catalog manifest v4.release', [
|
|
34
|
-
'state', 'targetVersion', 'planId', 'sourceHead', 'contentDigest',
|
|
35
|
-
]);
|
|
36
|
-
if (typeof release.targetVersion !== 'string' || !/^\d+\.\d+\.\d+$/u.test(release.targetVersion)) {
|
|
37
|
-
throw new Error('Invalid catalog manifest v4.release.targetVersion: expected a stable version.');
|
|
33
|
+
throw new Error('Invalid catalog manifest v6.release.state.');
|
|
38
34
|
}
|
|
35
|
+
assertAllowedKeys(release, 'catalog manifest v6.release', ['state', 'sourceHead']);
|
|
39
36
|
if (typeof release.sourceHead !== 'string' || !SOURCE_HEAD_PATTERN.test(release.sourceHead)) {
|
|
40
|
-
throw new Error('Invalid catalog manifest
|
|
37
|
+
throw new Error('Invalid catalog manifest v6.release.sourceHead.');
|
|
41
38
|
}
|
|
42
39
|
return {
|
|
43
40
|
state: 'published',
|
|
44
|
-
targetVersion: release.targetVersion,
|
|
45
|
-
planId: digest(release.planId, 'catalog manifest v4.release.planId'),
|
|
46
41
|
sourceHead: release.sourceHead,
|
|
47
|
-
contentDigest: digest(release.contentDigest, 'catalog manifest v4.release.contentDigest'),
|
|
48
42
|
};
|
|
49
43
|
}
|
|
50
|
-
export function
|
|
51
|
-
const input = assertObject(rawManifest, 'catalog manifest
|
|
52
|
-
assertAllowedKeys(input, 'catalog manifest
|
|
53
|
-
'schemaVersion', 'catalogVersion', 'channel', '
|
|
44
|
+
export function validateCatalogManifestV6(rawManifest) {
|
|
45
|
+
const input = assertObject(rawManifest, 'catalog manifest v6');
|
|
46
|
+
assertAllowedKeys(input, 'catalog manifest v6', [
|
|
47
|
+
'schemaVersion', 'catalogVersion', 'channel', 'requires', 'marketplace', 'release', 'entries',
|
|
54
48
|
]);
|
|
55
|
-
if (input.schemaVersion !==
|
|
56
|
-
throw new Error('Invalid catalog manifest
|
|
49
|
+
if (input.schemaVersion !== 6) {
|
|
50
|
+
throw new Error('Invalid catalog manifest v6.schemaVersion: expected 6.');
|
|
57
51
|
}
|
|
58
52
|
if (!Array.isArray(input.entries)) {
|
|
59
|
-
throw new Error('Invalid catalog manifest
|
|
53
|
+
throw new Error('Invalid catalog manifest v6.entries: expected an array.');
|
|
60
54
|
}
|
|
61
55
|
const contentDigests = [];
|
|
62
56
|
const entryInputs = input.entries.map((rawEntry, index) => {
|
|
63
|
-
const entry = assertObject(rawEntry, `catalog manifest
|
|
64
|
-
contentDigests.push(digest(entry.contentDigest, `catalog manifest
|
|
57
|
+
const entry = assertObject(rawEntry, `catalog manifest v6.entries[${index}]`);
|
|
58
|
+
contentDigests.push(digest(entry.contentDigest, `catalog manifest v6.entries[${index}].contentDigest`));
|
|
65
59
|
const entryInput = { ...entry };
|
|
66
60
|
delete entryInput.contentDigest;
|
|
67
61
|
return entryInput;
|
|
68
62
|
});
|
|
69
|
-
const base = normalizeCatalogManifestBase(input, 'catalog manifest
|
|
63
|
+
const base = normalizeCatalogManifestBase(input, 'catalog manifest v6');
|
|
70
64
|
const marketplace = normalizeCatalogMarketplaceIdentity(input.marketplace);
|
|
71
|
-
if (
|
|
72
|
-
throw new Error(`Invalid catalog manifest
|
|
65
|
+
if (!(base.requires.aw.capabilities ?? []).includes(CATALOG_SCHEMA_6_CAPABILITY)) {
|
|
66
|
+
throw new Error(`Invalid catalog manifest v6.requires.aw.capabilities: expected ${CATALOG_SCHEMA_6_CAPABILITY}.`);
|
|
73
67
|
}
|
|
74
|
-
const entries = normalizeCatalogManifestEntries(entryInputs, base, 'catalog manifest
|
|
68
|
+
const entries = normalizeCatalogManifestEntries(entryInputs, base, 'catalog manifest v6');
|
|
75
69
|
const release = normalizeRelease(input.release);
|
|
76
|
-
if (release.state === 'published'
|
|
77
|
-
&& release.targetVersion !== base.catalogVersion.replace(/-beta\.[1-9]\d*$/u, '')) {
|
|
78
|
-
throw new Error('Invalid catalog manifest v4.release.targetVersion: must equal the stable catalogVersion core.');
|
|
79
|
-
}
|
|
80
70
|
return {
|
|
81
|
-
schemaVersion:
|
|
71
|
+
schemaVersion: 6,
|
|
82
72
|
catalogVersion: base.catalogVersion,
|
|
83
73
|
channel: base.channel,
|
|
84
|
-
|
|
74
|
+
requires: base.requires,
|
|
85
75
|
marketplace,
|
|
86
76
|
release,
|
|
87
77
|
entries: entries.map((entry, index) => ({ ...entry, contentDigest: contentDigests[index] })),
|
|
88
78
|
};
|
|
89
79
|
}
|
|
90
|
-
export function
|
|
91
|
-
return
|
|
80
|
+
export function createCatalogManifestV6(manifest) {
|
|
81
|
+
return validateCatalogManifestV6({ schemaVersion: 6, ...manifest });
|
|
92
82
|
}
|
|
93
|
-
export async function
|
|
94
|
-
if (!plugin.manifest.compatibility) {
|
|
95
|
-
throw new Error(`Plugin "${plugin.manifest.name}" is missing compatibility metadata.`);
|
|
96
|
-
}
|
|
83
|
+
export async function createCatalogManifestV6Entry(plugin, pluginRoot) {
|
|
97
84
|
return {
|
|
98
85
|
...createMarketplaceManifestEntry(plugin),
|
|
99
86
|
version: plugin.manifest.version,
|
|
100
|
-
|
|
87
|
+
dependencies: [...(plugin.manifest.dependencies ?? [])].sort(),
|
|
88
|
+
requires: {
|
|
89
|
+
aw: {
|
|
90
|
+
capabilities: normalizeAwCapabilities(plugin.manifest.requires?.aw.capabilities ?? []),
|
|
91
|
+
},
|
|
92
|
+
},
|
|
101
93
|
artifactDigest: await calculateCatalogEntryArtifactDigest(pluginRoot),
|
|
102
|
-
manifestDigest: calculateCatalogEntryManifestDigest(plugin.
|
|
94
|
+
manifestDigest: calculateCatalogEntryManifestDigest(await fs.readJson(path.join(pluginRoot, '.agents-plugin', 'plugin.json'))),
|
|
103
95
|
contentDigest: await calculateCatalogEntryContentDigest(pluginRoot),
|
|
104
96
|
};
|
|
105
97
|
}
|
|
106
|
-
//# sourceMappingURL=catalog-manifest-
|
|
98
|
+
//# sourceMappingURL=catalog-manifest-v6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-manifest-v6.js","sourceRoot":"","sources":["../../../src/utils/catalog-manifest-v6.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CatalogGenerationSet, CatalogSourceId } from '../types.js';
|
|
2
|
+
import type { CatalogStoreEntry } from './catalog-generation-store.js';
|
|
3
|
+
import type { CatalogSourcesConfigSnapshot } from './catalog-sources.js';
|
|
4
|
+
import type { MultiSourceCatalogResolution } from './multi-source-catalog.js';
|
|
5
|
+
export interface CatalogOperationContext {
|
|
6
|
+
generationSet: CatalogGenerationSet;
|
|
7
|
+
generationSetDigest: string;
|
|
8
|
+
catalog: MultiSourceCatalogResolution;
|
|
9
|
+
}
|
|
10
|
+
export interface ResolveCatalogOperationContextOptions {
|
|
11
|
+
sourceIds?: CatalogSourceId[];
|
|
12
|
+
configSnapshot?: CatalogSourcesConfigSnapshot;
|
|
13
|
+
env?: NodeJS.ProcessEnv;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
validatedStoreEntries?: Map<string, CatalogStoreEntry>;
|
|
16
|
+
validatingStoreEntries?: Map<string, Promise<CatalogStoreEntry>>;
|
|
17
|
+
}
|
|
18
|
+
export declare function selectCatalogOperationContext(context: CatalogOperationContext, sourceIds: CatalogSourceId[]): CatalogOperationContext;
|
|
19
|
+
export declare function resolveCatalogOperationContext(options?: ResolveCatalogOperationContextOptions): Promise<CatalogOperationContext>;
|
|
20
|
+
export declare function resolvePartialCatalogOperationContext(options?: ResolveCatalogOperationContextOptions): Promise<CatalogOperationContext>;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { CatalogGenerationError } from './catalog-generation-error.js';
|
|
2
|
+
import { calculateCatalogGenerationSetDigest, resolveCatalogGenerationSet, } from './catalog-generation-resolver.js';
|
|
3
|
+
import { readCatalogGenerationControlSnapshot, } from './catalog-generation-control-snapshot.js';
|
|
4
|
+
export function selectCatalogOperationContext(context, sourceIds) {
|
|
5
|
+
const requested = new Set(sourceIds);
|
|
6
|
+
const missing = sourceIds.find((sourceId) => !context.generationSet.sources.some((source) => source.sourceId === sourceId));
|
|
7
|
+
if (missing)
|
|
8
|
+
throw new CatalogGenerationError({
|
|
9
|
+
code: 'catalogGenerationUnavailable',
|
|
10
|
+
sourceId: missing,
|
|
11
|
+
message: `Catalog source "${missing}" was unavailable when this operation context was bound. Run aw catalog source sync ${missing}, then retry.`,
|
|
12
|
+
});
|
|
13
|
+
const sources = context.generationSet.sources.filter((source) => requested.has(source.sourceId));
|
|
14
|
+
const generationSetDigest = calculateCatalogGenerationSetDigest(context.generationSet.configDigest, context.generationSet.primarySourceId, sources);
|
|
15
|
+
return {
|
|
16
|
+
generationSet: { ...context.generationSet, sources, generationSetDigest },
|
|
17
|
+
generationSetDigest,
|
|
18
|
+
catalog: {
|
|
19
|
+
...context.catalog,
|
|
20
|
+
sources: context.catalog.sources.filter((source) => requested.has(source.sourceId)),
|
|
21
|
+
compositeDigest: generationSetDigest,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function selectedSourceIds(snapshot, sourceIds) {
|
|
26
|
+
if (!sourceIds)
|
|
27
|
+
return snapshot.config.sources.map((source) => source.id);
|
|
28
|
+
const configured = new Set(snapshot.config.sources.map((source) => source.id));
|
|
29
|
+
const unknown = sourceIds.find((sourceId) => !configured.has(sourceId));
|
|
30
|
+
if (unknown)
|
|
31
|
+
throw new CatalogGenerationError({
|
|
32
|
+
code: 'catalogGenerationSourceMissing',
|
|
33
|
+
sourceId: unknown,
|
|
34
|
+
message: `Catalog source "${unknown}" is not configured.`,
|
|
35
|
+
});
|
|
36
|
+
const requested = new Set(sourceIds);
|
|
37
|
+
return snapshot.config.sources.filter((source) => requested.has(source.id)).map((source) => source.id);
|
|
38
|
+
}
|
|
39
|
+
async function createContext(options) {
|
|
40
|
+
const configured = new Map(options.control.configSnapshot.config.sources.map((source) => [source.id, source]));
|
|
41
|
+
const sources = options.generationSet.sources.map((generation) => {
|
|
42
|
+
options.signal?.throwIfAborted();
|
|
43
|
+
const source = configured.get(generation.sourceId);
|
|
44
|
+
const active = options.control.generationState.sources[generation.sourceId]?.active;
|
|
45
|
+
if (!source || !active
|
|
46
|
+
|| active.snapshotDigest !== generation.snapshotDigest
|
|
47
|
+
|| active.sourceIdentity !== generation.sourceIdentity) {
|
|
48
|
+
throw new CatalogGenerationError({
|
|
49
|
+
code: 'catalogGenerationIdentityMismatch',
|
|
50
|
+
sourceId: generation.sourceId,
|
|
51
|
+
message: `Active Catalog snapshot for source "${generation.sourceId}" changed while the operation context was being resolved. Retry the operation.`,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const resolution = {
|
|
55
|
+
sourceId: generation.sourceId,
|
|
56
|
+
sourceIdentity: generation.sourceIdentity,
|
|
57
|
+
requestedRef: active.requestedRef,
|
|
58
|
+
resolvedCommit: generation.resolvedCommit,
|
|
59
|
+
rootDir: generation.snapshotPath,
|
|
60
|
+
manifest: generation.manifest,
|
|
61
|
+
manifestDigest: generation.manifestDigest,
|
|
62
|
+
snapshotDigest: generation.snapshotDigest,
|
|
63
|
+
transport: source.type,
|
|
64
|
+
async cleanup() { },
|
|
65
|
+
};
|
|
66
|
+
return { sourceId: generation.sourceId, resolution };
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
generationSet: options.generationSet,
|
|
70
|
+
generationSetDigest: options.generationSet.generationSetDigest,
|
|
71
|
+
catalog: {
|
|
72
|
+
sources,
|
|
73
|
+
primarySourceId: options.generationSet.primarySourceId,
|
|
74
|
+
configDigest: options.generationSet.configDigest,
|
|
75
|
+
compositeDigest: options.generationSet.generationSetDigest,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export async function resolveCatalogOperationContext(options = {}) {
|
|
80
|
+
const env = options.env ?? process.env;
|
|
81
|
+
options.signal?.throwIfAborted();
|
|
82
|
+
const control = await readCatalogGenerationControlSnapshot({
|
|
83
|
+
env,
|
|
84
|
+
configSnapshot: options.configSnapshot,
|
|
85
|
+
});
|
|
86
|
+
const generationSet = await resolveCatalogGenerationSet({
|
|
87
|
+
sourceIds: selectedSourceIds(control.configSnapshot, options.sourceIds),
|
|
88
|
+
env,
|
|
89
|
+
controlSnapshot: control,
|
|
90
|
+
validatedStoreEntries: options.validatedStoreEntries,
|
|
91
|
+
validatingStoreEntries: options.validatingStoreEntries,
|
|
92
|
+
});
|
|
93
|
+
return createContext({ generationSet, control, signal: options.signal });
|
|
94
|
+
}
|
|
95
|
+
export async function resolvePartialCatalogOperationContext(options = {}) {
|
|
96
|
+
const env = options.env ?? process.env;
|
|
97
|
+
const control = await readCatalogGenerationControlSnapshot({
|
|
98
|
+
env,
|
|
99
|
+
configSnapshot: options.configSnapshot,
|
|
100
|
+
});
|
|
101
|
+
const sourceIds = selectedSourceIds(control.configSnapshot, options.sourceIds);
|
|
102
|
+
const results = await Promise.all(sourceIds.map(async (sourceId) => {
|
|
103
|
+
try {
|
|
104
|
+
const generationSet = await resolveCatalogGenerationSet({
|
|
105
|
+
sourceIds: [sourceId],
|
|
106
|
+
env,
|
|
107
|
+
controlSnapshot: control,
|
|
108
|
+
validatedStoreEntries: options.validatedStoreEntries,
|
|
109
|
+
validatingStoreEntries: options.validatingStoreEntries,
|
|
110
|
+
});
|
|
111
|
+
return { sourceId, context: await createContext({ generationSet, control, signal: options.signal }) };
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
if (options.signal?.aborted)
|
|
115
|
+
throw error;
|
|
116
|
+
return { sourceId, error: error };
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
const sources = results.flatMap((result) => result.context?.generationSet.sources ?? [])
|
|
120
|
+
.sort((left, right) => left.sourceId.localeCompare(right.sourceId));
|
|
121
|
+
const primarySourceId = control.configSnapshot.config.sources.find((source) => source.primary).id;
|
|
122
|
+
const generationSetDigest = calculateCatalogGenerationSetDigest(control.configSnapshot.digest, primarySourceId, sources);
|
|
123
|
+
return {
|
|
124
|
+
generationSet: {
|
|
125
|
+
generationSetDigest,
|
|
126
|
+
configDigest: control.configSnapshot.digest,
|
|
127
|
+
primarySourceId,
|
|
128
|
+
sources,
|
|
129
|
+
},
|
|
130
|
+
generationSetDigest,
|
|
131
|
+
catalog: {
|
|
132
|
+
sources: results.map((result) => result.context
|
|
133
|
+
? result.context.catalog.sources[0]
|
|
134
|
+
: { sourceId: result.sourceId, error: result.error }),
|
|
135
|
+
primarySourceId,
|
|
136
|
+
configDigest: control.configSnapshot.digest,
|
|
137
|
+
compositeDigest: generationSetDigest,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=catalog-operation-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-operation-context.js","sourceRoot":"","sources":["../../../src/utils/catalog-operation-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
export type CatalogProviderCompatibilityErrorCode = '
|
|
1
|
+
export type CatalogProviderCompatibilityErrorCode = 'awCapabilityUnsupported';
|
|
2
2
|
export declare class CatalogProviderCompatibilityError extends Error {
|
|
3
3
|
readonly sourceId: string;
|
|
4
4
|
readonly code: CatalogProviderCompatibilityErrorCode;
|
|
5
|
+
readonly requiredCapabilities: string[];
|
|
6
|
+
readonly missingCapabilities: string[];
|
|
7
|
+
readonly availableCapabilities: string[];
|
|
5
8
|
constructor(options: {
|
|
6
9
|
sourceId: string;
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
requiredCapabilities: readonly string[];
|
|
11
|
+
missingCapabilities: readonly string[];
|
|
12
|
+
availableCapabilities: readonly string[];
|
|
9
13
|
});
|
|
10
14
|
}
|
|
11
15
|
export declare function sanitizeCatalogSourceErrorMessage(message: string, env?: NodeJS.ProcessEnv, sensitiveRoots?: readonly string[]): string;
|