@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,147 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
function digest(value) {
|
|
5
|
+
return `sha256:${crypto.createHash('sha256').update(value).digest('hex')}`;
|
|
6
|
+
}
|
|
7
|
+
function canonicalJson(value) {
|
|
8
|
+
if (Array.isArray(value))
|
|
9
|
+
return `[${value.map(canonicalJson).join(',')}]`;
|
|
10
|
+
if (value !== null && typeof value === 'object') {
|
|
11
|
+
const record = value;
|
|
12
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(',')}}`;
|
|
13
|
+
}
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
export function catalogPublicationPlanDigest(descriptor) {
|
|
17
|
+
return digest(canonicalJson(descriptor));
|
|
18
|
+
}
|
|
19
|
+
export function catalogPublicationJournalPath(workspaceRoot, catalogVersion) {
|
|
20
|
+
return path.join(workspaceRoot, '.aw', 'publish', `${catalogVersion}.json`);
|
|
21
|
+
}
|
|
22
|
+
export function catalogPublicationRepositoryName(catalogVersion) {
|
|
23
|
+
return `${catalogVersion}.repo`;
|
|
24
|
+
}
|
|
25
|
+
export function catalogPublicationRepositoryPath(workspaceRoot, catalogVersion) {
|
|
26
|
+
return path.join(workspaceRoot, '.aw', 'publish', catalogPublicationRepositoryName(catalogVersion));
|
|
27
|
+
}
|
|
28
|
+
function isRecord(value) {
|
|
29
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
30
|
+
}
|
|
31
|
+
function hasExactKeys(value, keys) {
|
|
32
|
+
const actual = Object.keys(value).sort();
|
|
33
|
+
const expected = [...keys].sort();
|
|
34
|
+
return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
|
|
35
|
+
}
|
|
36
|
+
function isDigest(value) {
|
|
37
|
+
return typeof value === 'string' && /^sha256:[0-9a-f]{64}$/u.test(value);
|
|
38
|
+
}
|
|
39
|
+
function isCommit(value) {
|
|
40
|
+
return typeof value === 'string' && /^[0-9a-f]{40,64}$/u.test(value);
|
|
41
|
+
}
|
|
42
|
+
function isTimestamp(value) {
|
|
43
|
+
return typeof value === 'string' && Number.isFinite(Date.parse(value));
|
|
44
|
+
}
|
|
45
|
+
export function isCatalogPublicationDescriptor(value) {
|
|
46
|
+
if (!isRecord(value) || !hasExactKeys(value, [
|
|
47
|
+
'schemaVersion', 'workspaceIdentity', 'sourceHead', 'remote', 'branch', 'parent', 'tag',
|
|
48
|
+
'snapshotDigest',
|
|
49
|
+
]))
|
|
50
|
+
return false;
|
|
51
|
+
if (!isRecord(value.remote) || !hasExactKeys(value.remote, ['name', 'identityDigest']))
|
|
52
|
+
return false;
|
|
53
|
+
return value.schemaVersion === 1
|
|
54
|
+
&& typeof value.workspaceIdentity === 'string'
|
|
55
|
+
&& value.workspaceIdentity !== ''
|
|
56
|
+
&& isCommit(value.sourceHead)
|
|
57
|
+
&& (value.remote.name === null || (typeof value.remote.name === 'string' && value.remote.name !== ''))
|
|
58
|
+
&& isDigest(value.remote.identityDigest)
|
|
59
|
+
&& typeof value.branch === 'string'
|
|
60
|
+
&& value.branch !== ''
|
|
61
|
+
&& (value.parent === null || isCommit(value.parent))
|
|
62
|
+
&& typeof value.tag === 'string'
|
|
63
|
+
&& /^catalog-v\d+\.\d+\.\d+(?:-beta\.\d+)?$/u.test(value.tag)
|
|
64
|
+
&& isDigest(value.snapshotDigest);
|
|
65
|
+
}
|
|
66
|
+
function isDisplayMetadata(value) {
|
|
67
|
+
return isRecord(value)
|
|
68
|
+
&& hasExactKeys(value, ['catalogVersion', 'channel', 'pluginCount'])
|
|
69
|
+
&& typeof value.catalogVersion === 'string'
|
|
70
|
+
&& (value.channel === 'latest' || value.channel === 'beta')
|
|
71
|
+
&& Number.isSafeInteger(value.pluginCount)
|
|
72
|
+
&& value.pluginCount >= 0;
|
|
73
|
+
}
|
|
74
|
+
export function parseCatalogPublicationJournal(value, catalogVersion) {
|
|
75
|
+
if (!isRecord(value) || !isCatalogPublicationDescriptor(value.descriptor)) {
|
|
76
|
+
throw new Error(`Catalog ${catalogVersion} publication journal is damaged. Increase the Catalog version.`);
|
|
77
|
+
}
|
|
78
|
+
const commonValid = value.schemaVersion === 1
|
|
79
|
+
&& isDigest(value.planDigest)
|
|
80
|
+
&& value.planDigest === catalogPublicationPlanDigest(value.descriptor)
|
|
81
|
+
&& isCommit(value.expectedCommit)
|
|
82
|
+
&& (value.repository === null || typeof value.repository === 'string')
|
|
83
|
+
&& isDisplayMetadata(value.display)
|
|
84
|
+
&& value.display.catalogVersion === catalogVersion
|
|
85
|
+
&& value.descriptor.tag === `catalog-v${catalogVersion}`
|
|
86
|
+
&& isTimestamp(value.preparedAt);
|
|
87
|
+
const commonKeys = [
|
|
88
|
+
'schemaVersion', 'state', 'planDigest', 'descriptor', 'expectedCommit', 'repository', 'display',
|
|
89
|
+
'preparedAt',
|
|
90
|
+
];
|
|
91
|
+
let shapeValid = false;
|
|
92
|
+
if (value.state === 'prepared') {
|
|
93
|
+
shapeValid = hasExactKeys(value, commonKeys);
|
|
94
|
+
}
|
|
95
|
+
else if (value.state === 'uncertain') {
|
|
96
|
+
shapeValid = hasExactKeys(value, [...commonKeys, 'uncertainAt']) && isTimestamp(value.uncertainAt);
|
|
97
|
+
}
|
|
98
|
+
else if (value.state === 'published') {
|
|
99
|
+
shapeValid = hasExactKeys(value, [...commonKeys, 'publishedAt'])
|
|
100
|
+
&& value.repository === null
|
|
101
|
+
&& isTimestamp(value.publishedAt);
|
|
102
|
+
}
|
|
103
|
+
if (!commonValid || !shapeValid) {
|
|
104
|
+
throw new Error(`Catalog ${catalogVersion} publication journal is damaged. Increase the Catalog version.`);
|
|
105
|
+
}
|
|
106
|
+
if (value.state !== 'published'
|
|
107
|
+
&& value.repository !== catalogPublicationRepositoryName(catalogVersion)) {
|
|
108
|
+
throw new Error(`Catalog ${catalogVersion} publication journal is damaged. Increase the Catalog version.`);
|
|
109
|
+
}
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
export async function readCatalogPublicationJournal(filePath, catalogVersion) {
|
|
113
|
+
if (!(await fs.pathExists(filePath)))
|
|
114
|
+
return null;
|
|
115
|
+
try {
|
|
116
|
+
return parseCatalogPublicationJournal(await fs.readJson(filePath), catalogVersion);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
if (error instanceof Error && error.message.includes('publication journal is damaged'))
|
|
120
|
+
throw error;
|
|
121
|
+
throw new Error(`Catalog ${catalogVersion} publication journal is damaged. Increase the Catalog version.`, {
|
|
122
|
+
cause: error,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export async function writeCatalogPublicationJournalAtomic(filePath, journal, exclusive = false) {
|
|
127
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
128
|
+
const temporary = path.join(path.dirname(filePath), `.${path.basename(filePath)}.${crypto.randomUUID()}.tmp`);
|
|
129
|
+
await fs.writeFile(temporary, `${JSON.stringify(journal, null, 2)}\n`, {
|
|
130
|
+
flag: 'wx',
|
|
131
|
+
mode: 0o600,
|
|
132
|
+
});
|
|
133
|
+
try {
|
|
134
|
+
if (exclusive) {
|
|
135
|
+
await fs.link(temporary, filePath);
|
|
136
|
+
await fs.remove(temporary);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
await fs.rename(temporary, filePath);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
await fs.remove(temporary);
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=catalog-publication-journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-publication-journal.js","sourceRoot":"","sources":["../../../src/commands/catalog-publication-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type CatalogRemoteResolvedFrom = 'explicit' | 'invalid-explicit' | 'origin' | 'sole-remote' | 'ambiguous' | 'unavailable';
|
|
2
|
+
export type CatalogBranchResolvedFrom = 'explicit' | 'default';
|
|
3
|
+
export interface CatalogPublicationTarget {
|
|
4
|
+
repositoryRoot: string | null;
|
|
5
|
+
remote: string | null;
|
|
6
|
+
remoteResolvedFrom: CatalogRemoteResolvedFrom;
|
|
7
|
+
branch: string;
|
|
8
|
+
branchResolvedFrom: CatalogBranchResolvedFrom;
|
|
9
|
+
branchValid: boolean;
|
|
10
|
+
ambiguous: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function resolveCatalogPublicationTarget(options: {
|
|
13
|
+
workspaceRoot: string;
|
|
14
|
+
remote?: string;
|
|
15
|
+
branch?: string;
|
|
16
|
+
env: NodeJS.ProcessEnv;
|
|
17
|
+
requireRemote?: boolean;
|
|
18
|
+
}): Promise<CatalogPublicationTarget>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { sanitizedGitEnvironment } from './catalog-publication-inspection.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
function safeExplicitGitValue(value) {
|
|
6
|
+
return value !== '' && value === value.trim() && !/^-/u.test(value) && !/[\s\p{Cc}]/u.test(value);
|
|
7
|
+
}
|
|
8
|
+
function safeExplicitBranchValue(value) {
|
|
9
|
+
return /^[A-Za-z0-9][A-Za-z0-9._/-]*$/u.test(value);
|
|
10
|
+
}
|
|
11
|
+
async function gitAcceptsBranch(cwd, branch, env) {
|
|
12
|
+
if (!safeExplicitBranchValue(branch))
|
|
13
|
+
return false;
|
|
14
|
+
try {
|
|
15
|
+
await execFileAsync('git', ['check-ref-format', '--branch', branch], {
|
|
16
|
+
cwd,
|
|
17
|
+
env: { ...sanitizedGitEnvironment(env), GIT_OPTIONAL_LOCKS: '0' },
|
|
18
|
+
encoding: 'utf8',
|
|
19
|
+
});
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function git(cwd, args, env) {
|
|
27
|
+
return (await execFileAsync('git', args, {
|
|
28
|
+
cwd,
|
|
29
|
+
env: { ...sanitizedGitEnvironment(env), GIT_OPTIONAL_LOCKS: '0' },
|
|
30
|
+
encoding: 'utf8',
|
|
31
|
+
})).stdout.trim();
|
|
32
|
+
}
|
|
33
|
+
export async function resolveCatalogPublicationTarget(options) {
|
|
34
|
+
const branch = options.branch ?? 'catalog';
|
|
35
|
+
const branchResolvedFrom = options.branch === undefined ? 'default' : 'explicit';
|
|
36
|
+
const branchValid = options.branch === undefined
|
|
37
|
+
|| await gitAcceptsBranch(options.workspaceRoot, branch, options.env);
|
|
38
|
+
let repositoryRoot = null;
|
|
39
|
+
let remotes = [];
|
|
40
|
+
try {
|
|
41
|
+
repositoryRoot = await git(options.workspaceRoot, ['rev-parse', '--show-toplevel'], options.env);
|
|
42
|
+
remotes = (await git(repositoryRoot, ['remote'], options.env)).split('\n').filter(Boolean).sort();
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
if (options.requireRemote)
|
|
46
|
+
throw new Error('Catalog publication requires a readable Git worktree and remote.');
|
|
47
|
+
}
|
|
48
|
+
let remote = null;
|
|
49
|
+
let remoteResolvedFrom;
|
|
50
|
+
if (options.remote !== undefined) {
|
|
51
|
+
if (safeExplicitGitValue(options.remote) && remotes.includes(options.remote)) {
|
|
52
|
+
remote = options.remote;
|
|
53
|
+
remoteResolvedFrom = 'explicit';
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
remoteResolvedFrom = 'invalid-explicit';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (remotes.includes('origin')) {
|
|
60
|
+
remote = 'origin';
|
|
61
|
+
remoteResolvedFrom = 'origin';
|
|
62
|
+
}
|
|
63
|
+
else if (remotes.length === 1) {
|
|
64
|
+
remote = remotes[0];
|
|
65
|
+
remoteResolvedFrom = 'sole-remote';
|
|
66
|
+
}
|
|
67
|
+
else if (remotes.length > 1) {
|
|
68
|
+
remoteResolvedFrom = 'ambiguous';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
remoteResolvedFrom = 'unavailable';
|
|
72
|
+
}
|
|
73
|
+
if (options.requireRemote && remote === null) {
|
|
74
|
+
if (remoteResolvedFrom === 'invalid-explicit') {
|
|
75
|
+
throw new Error('Catalog publication remote must name an existing Git remote exactly.');
|
|
76
|
+
}
|
|
77
|
+
if (remoteResolvedFrom === 'ambiguous') {
|
|
78
|
+
throw new Error(`Catalog publication remote is ambiguous: ${remotes.join(', ')}. Use --remote.`);
|
|
79
|
+
}
|
|
80
|
+
throw new Error('Catalog publication remote is unavailable. Configure a Git remote or use --remote.');
|
|
81
|
+
}
|
|
82
|
+
if (options.requireRemote && !branchValid) {
|
|
83
|
+
throw new Error('Catalog publication branch is not a safe Git branch name.');
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
repositoryRoot,
|
|
87
|
+
remote,
|
|
88
|
+
remoteResolvedFrom,
|
|
89
|
+
branch,
|
|
90
|
+
branchResolvedFrom,
|
|
91
|
+
branchValid,
|
|
92
|
+
ambiguous: remoteResolvedFrom === 'ambiguous',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=catalog-publication-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-publication-target.js","sourceRoot":"","sources":["../../../src/commands/catalog-publication-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,92 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CatalogPublicationPreparation } from './catalog-publication-inspection.js';
|
|
2
|
+
import { type CatalogPublicationDescriptor, type CatalogPublicationJournal } from './catalog-publication-journal.js';
|
|
3
|
+
import { type CatalogBranchResolvedFrom, type CatalogRemoteResolvedFrom } from './catalog-publication-target.js';
|
|
4
|
+
import { type CatalogWorkspaceResolvedFrom } from './catalog-workspace-resolution.js';
|
|
5
|
+
export { catalogPublicationPlanDigest, parseCatalogPublicationJournal, } from './catalog-publication-journal.js';
|
|
6
|
+
export type { CatalogPublicationDescriptor, CatalogPublicationJournal, } from './catalog-publication-journal.js';
|
|
2
7
|
export { safeRemoteIdentity, sanitizedGitEnvironment } from './catalog-publication-inspection.js';
|
|
3
8
|
export interface CatalogPublishIo {
|
|
4
9
|
stdout(text: string): void;
|
|
5
10
|
stderr(text: string): void;
|
|
6
11
|
}
|
|
7
|
-
|
|
8
|
-
command: 'catalog:publish';
|
|
12
|
+
interface CatalogPublishReceiptBase {
|
|
9
13
|
ok: true;
|
|
14
|
+
workspaceRoot: string;
|
|
15
|
+
workspaceRootResolvedFrom: CatalogWorkspaceResolvedFrom;
|
|
10
16
|
workspaceIdentity: string;
|
|
11
17
|
catalogVersion: string;
|
|
12
18
|
channel: 'latest' | 'beta';
|
|
13
19
|
remote: string;
|
|
20
|
+
remoteResolvedFrom: CatalogRemoteResolvedFrom;
|
|
14
21
|
remoteUrl: string;
|
|
15
22
|
fetchUrl: string;
|
|
16
23
|
pushUrl: string;
|
|
17
24
|
branch: string;
|
|
25
|
+
branchResolvedFrom: CatalogBranchResolvedFrom;
|
|
18
26
|
parent: string | null;
|
|
19
27
|
tag: string;
|
|
20
|
-
|
|
28
|
+
expectedCommit: string;
|
|
21
29
|
sourceHead: string;
|
|
22
30
|
pluginCount: number;
|
|
23
31
|
snapshotDigest: string;
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
planDigest: string;
|
|
33
|
+
descriptor: CatalogPublicationDescriptor;
|
|
34
|
+
journalPath: string;
|
|
35
|
+
repositoryPath: string | null;
|
|
36
|
+
}
|
|
37
|
+
export interface CatalogPublishPlanReceipt extends CatalogPublishReceiptBase {
|
|
38
|
+
command: 'catalog:publish:plan';
|
|
39
|
+
state: CatalogPublicationJournal['state'];
|
|
40
|
+
}
|
|
41
|
+
export interface CatalogPublishApplyReceipt extends CatalogPublishReceiptBase {
|
|
42
|
+
command: 'catalog:publish:apply';
|
|
43
|
+
state: 'published';
|
|
44
|
+
commit: string;
|
|
45
|
+
reconciliation: 'already-published' | 'already-remote' | 'atomic' | 'tag' | 'branch';
|
|
46
|
+
}
|
|
47
|
+
interface ReceiptResolution {
|
|
48
|
+
workspaceRootResolvedFrom?: CatalogWorkspaceResolvedFrom;
|
|
49
|
+
remoteResolvedFrom?: CatalogRemoteResolvedFrom;
|
|
50
|
+
branchResolvedFrom?: CatalogBranchResolvedFrom;
|
|
26
51
|
}
|
|
27
|
-
|
|
28
|
-
export declare function publishPreparedCatalogPublication(options: {
|
|
52
|
+
interface PublicationTargetOptions {
|
|
29
53
|
workspaceRoot: string;
|
|
30
54
|
remote?: string;
|
|
31
55
|
remoteUrl?: string;
|
|
32
56
|
branch?: string;
|
|
33
|
-
descriptor: CatalogPublicationDescriptor;
|
|
34
|
-
snapshotRoot: string;
|
|
35
57
|
env: NodeJS.ProcessEnv;
|
|
58
|
+
}
|
|
59
|
+
export declare function persistCatalogPublicationPlan(options: {
|
|
60
|
+
preparation: CatalogPublicationPreparation;
|
|
61
|
+
descriptor?: CatalogPublicationDescriptor;
|
|
62
|
+
snapshotRoot?: string;
|
|
63
|
+
workspaceRootResolvedFrom?: CatalogWorkspaceResolvedFrom;
|
|
64
|
+
remoteResolvedFrom?: CatalogRemoteResolvedFrom;
|
|
65
|
+
branchResolvedFrom?: CatalogBranchResolvedFrom;
|
|
66
|
+
}): Promise<CatalogPublishPlanReceipt>;
|
|
67
|
+
export declare function prepareCatalogPublicationPlan(options: PublicationTargetOptions & ReceiptResolution): Promise<CatalogPublishPlanReceipt>;
|
|
68
|
+
export declare function applyCatalogPublicationPlan(options: PublicationTargetOptions & {
|
|
69
|
+
expectedPlanDigest: string;
|
|
36
70
|
beforeRemoteWrite?: () => Promise<void>;
|
|
37
|
-
}): Promise<
|
|
38
|
-
export declare function
|
|
39
|
-
|
|
71
|
+
} & ReceiptResolution): Promise<CatalogPublishApplyReceipt>;
|
|
72
|
+
export declare function runCatalogPublishPlanCommand(options: {
|
|
73
|
+
cwd: string;
|
|
74
|
+
workspaceRoot?: string;
|
|
75
|
+
remote?: string;
|
|
76
|
+
branch?: string;
|
|
77
|
+
env: NodeJS.ProcessEnv;
|
|
78
|
+
io: CatalogPublishIo;
|
|
79
|
+
}): Promise<CatalogPublishPlanReceipt>;
|
|
80
|
+
export declare function runCatalogPublishApplyCommand(options: {
|
|
81
|
+
cwd: string;
|
|
82
|
+
workspaceRoot?: string;
|
|
40
83
|
remote?: string;
|
|
41
84
|
branch?: string;
|
|
42
|
-
|
|
85
|
+
expectedPlanDigest?: string;
|
|
43
86
|
yes?: boolean;
|
|
44
87
|
json?: boolean;
|
|
45
88
|
env: NodeJS.ProcessEnv;
|
|
46
89
|
interactive: boolean;
|
|
47
90
|
confirm?: (message: string) => Promise<boolean>;
|
|
48
91
|
io: CatalogPublishIo;
|
|
49
|
-
}): Promise<
|
|
92
|
+
}): Promise<CatalogPublishApplyReceipt | null>;
|