@lesliechan721/aw 0.1.0-beta.6 → 0.1.0-beta.8

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.
Files changed (237) hide show
  1. package/dist/authoring/scripts/init-plugin.mjs +4 -33
  2. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  3. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  4. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  5. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  6. package/dist/authoring/scripts/remove-plugin.mjs +1 -0
  7. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  8. package/dist/authoring/scripts/validate-plugin.mjs +104 -54
  9. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  10. package/dist/scripts/codex-eval-app-server.d.ts +2 -0
  11. package/dist/scripts/codex-eval-app-server.js +107 -1
  12. package/dist/scripts/codex-eval-app-server.js.map +1 -1
  13. package/dist/scripts/eval-plugin-skills.js +5 -2
  14. package/dist/scripts/eval-plugin-skills.js.map +1 -1
  15. package/dist/scripts/plugin-eval-contract.d.ts +5 -1
  16. package/dist/scripts/plugin-eval-contract.js +54 -4
  17. package/dist/scripts/plugin-eval-contract.js.map +1 -1
  18. package/dist/scripts/plugin-staging.d.ts +6 -7
  19. package/dist/scripts/plugin-staging.js +11 -23
  20. package/dist/scripts/plugin-staging.js.map +1 -1
  21. package/dist/scripts/test-plugin-scripts.js +2 -33
  22. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  23. package/dist/src/adapters/helpers.js +2 -2
  24. package/dist/src/adapters/helpers.js.map +1 -1
  25. package/dist/src/authoring/workspace-commands.d.ts +17 -2
  26. package/dist/src/authoring/workspace-commands.js +21 -4
  27. package/dist/src/authoring/workspace-commands.js.map +1 -1
  28. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  29. package/dist/src/commands/aw-capabilities.js +259 -0
  30. package/dist/src/commands/aw-capabilities.js.map +1 -0
  31. package/dist/src/commands/catalog-context.d.ts +52 -0
  32. package/dist/src/commands/catalog-context.js +156 -0
  33. package/dist/src/commands/catalog-context.js.map +1 -0
  34. package/dist/src/commands/catalog-dev-source.d.ts +112 -0
  35. package/dist/src/commands/catalog-dev-source.js +481 -0
  36. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  37. package/dist/src/commands/catalog-generation.d.ts +26 -0
  38. package/dist/src/commands/catalog-generation.js +14 -0
  39. package/dist/src/commands/catalog-generation.js.map +1 -0
  40. package/dist/src/commands/catalog-publication-inspection.d.ts +1 -1
  41. package/dist/src/commands/catalog-publication-inspection.js +4 -5
  42. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  43. package/dist/src/commands/catalog-publication-target.d.ts +17 -0
  44. package/dist/src/commands/catalog-publication-target.js +60 -0
  45. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  46. package/dist/src/commands/catalog-publish.d.ts +8 -1
  47. package/dist/src/commands/catalog-publish.js +25 -2
  48. package/dist/src/commands/catalog-publish.js.map +1 -1
  49. package/dist/src/commands/catalog-source.d.ts +23 -1
  50. package/dist/src/commands/catalog-source.js +126 -40
  51. package/dist/src/commands/catalog-source.js.map +1 -1
  52. package/dist/src/commands/catalog-status.d.ts +18 -2
  53. package/dist/src/commands/catalog-status.js +122 -18
  54. package/dist/src/commands/catalog-status.js.map +1 -1
  55. package/dist/src/commands/init.js +1 -1
  56. package/dist/src/commands/init.js.map +1 -1
  57. package/dist/src/commands/offline-cleanup-evidence.d.ts +23 -0
  58. package/dist/src/commands/offline-cleanup-evidence.js +38 -0
  59. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  60. package/dist/src/commands/options.d.ts +1 -0
  61. package/dist/src/commands/options.js +1 -0
  62. package/dist/src/commands/options.js.map +1 -1
  63. package/dist/src/commands/plugin-capabilities.js +1 -1
  64. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  65. package/dist/src/commands/rebuild-command.d.ts +19 -7
  66. package/dist/src/commands/rebuild-command.js +415 -205
  67. package/dist/src/commands/rebuild-command.js.map +1 -1
  68. package/dist/src/commands/rebuild-integration.d.ts +10 -3
  69. package/dist/src/commands/rebuild-integration.js +73 -76
  70. package/dist/src/commands/rebuild-integration.js.map +1 -1
  71. package/dist/src/commands/rebuild-operations.d.ts +0 -8
  72. package/dist/src/commands/rebuild-operations.js +17 -115
  73. package/dist/src/commands/rebuild-operations.js.map +1 -1
  74. package/dist/src/commands/runtime.js +21 -34
  75. package/dist/src/commands/runtime.js.map +1 -1
  76. package/dist/src/commands/{status-v4.d.ts → status-v5.d.ts} +67 -21
  77. package/dist/src/commands/{status-v4.js → status-v5.js} +260 -30
  78. package/dist/src/commands/status-v5.js.map +1 -0
  79. package/dist/src/commands/wizard.d.ts +2 -2
  80. package/dist/src/commands/wizard.js +2 -2
  81. package/dist/src/commands/wizard.js.map +1 -1
  82. package/dist/src/commands/write-commands.js +73 -17
  83. package/dist/src/commands/write-commands.js.map +1 -1
  84. package/dist/src/constants.d.ts +6 -1
  85. package/dist/src/constants.js +6 -1
  86. package/dist/src/constants.js.map +1 -1
  87. package/dist/src/generators/local-plugin.js +57 -3
  88. package/dist/src/generators/local-plugin.js.map +1 -1
  89. package/dist/src/index.d.ts +4 -1
  90. package/dist/src/index.js +562 -85
  91. package/dist/src/index.js.map +1 -1
  92. package/dist/src/output/model.d.ts +1 -34
  93. package/dist/src/output/model.js +1 -144
  94. package/dist/src/output/model.js.map +1 -1
  95. package/dist/src/output/rebuild-progress.js +0 -3
  96. package/dist/src/output/rebuild-progress.js.map +1 -1
  97. package/dist/src/portable/commands.d.ts +4 -0
  98. package/dist/src/portable/commands.js +61 -4
  99. package/dist/src/portable/commands.js.map +1 -1
  100. package/dist/src/portable/materializer.d.ts +3 -0
  101. package/dist/src/portable/materializer.js +61 -10
  102. package/dist/src/portable/materializer.js.map +1 -1
  103. package/dist/src/tui/catalog-generation.d.ts +56 -0
  104. package/dist/src/tui/catalog-generation.js +244 -0
  105. package/dist/src/tui/catalog-generation.js.map +1 -0
  106. package/dist/src/tui/console-app-v4.d.ts +1 -1
  107. package/dist/src/tui/console-app-v4.js +446 -126
  108. package/dist/src/tui/console-app-v4.js.map +1 -1
  109. package/dist/src/tui/controller-runtime.d.ts +8 -2
  110. package/dist/src/tui/controller-runtime.js +606 -92
  111. package/dist/src/tui/controller-runtime.js.map +1 -1
  112. package/dist/src/tui/controller.d.ts +71 -6
  113. package/dist/src/tui/controller.js +377 -83
  114. package/dist/src/tui/controller.js.map +1 -1
  115. package/dist/src/tui/index.d.ts +1 -0
  116. package/dist/src/tui/index.js +1 -0
  117. package/dist/src/tui/index.js.map +1 -1
  118. package/dist/src/tui/input-display.d.ts +8 -0
  119. package/dist/src/tui/input-display.js +36 -0
  120. package/dist/src/tui/input-display.js.map +1 -0
  121. package/dist/src/tui/model.d.ts +27 -7
  122. package/dist/src/tui/model.js +273 -65
  123. package/dist/src/tui/model.js.map +1 -1
  124. package/dist/src/tui/router.d.ts +26 -0
  125. package/dist/src/tui/router.js.map +1 -1
  126. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  127. package/dist/src/tui/source-ref-presets.js +11 -0
  128. package/dist/src/tui/source-ref-presets.js.map +1 -0
  129. package/dist/src/tui/views.js +31 -3
  130. package/dist/src/tui/views.js.map +1 -1
  131. package/dist/src/types.d.ts +90 -6
  132. package/dist/src/types.js.map +1 -1
  133. package/dist/src/utils/agent-version.d.ts +3 -0
  134. package/dist/src/utils/agent-version.js +13 -5
  135. package/dist/src/utils/agent-version.js.map +1 -1
  136. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  137. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  138. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  139. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  140. package/dist/src/utils/bundle-integrity.js +0 -25
  141. package/dist/src/utils/bundle-integrity.js.map +1 -1
  142. package/dist/src/utils/bundle-layout.js +8 -6
  143. package/dist/src/utils/bundle-layout.js.map +1 -1
  144. package/dist/src/utils/catalog-digests.js +13 -2
  145. package/dist/src/utils/catalog-digests.js.map +1 -1
  146. package/dist/src/utils/catalog-generation-error.d.ts +12 -0
  147. package/dist/src/utils/catalog-generation-error.js +16 -0
  148. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  149. package/dist/src/utils/catalog-generation-resolver.d.ts +13 -0
  150. package/dist/src/utils/catalog-generation-resolver.js +129 -0
  151. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  152. package/dist/src/utils/catalog-generation-service.d.ts +52 -0
  153. package/dist/src/utils/catalog-generation-service.js +620 -0
  154. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  155. package/dist/src/utils/catalog-generation-state.d.ts +13 -0
  156. package/dist/src/utils/catalog-generation-state.js +201 -0
  157. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  158. package/dist/src/utils/catalog-generation-store.d.ts +44 -0
  159. package/dist/src/utils/catalog-generation-store.js +387 -0
  160. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  161. package/dist/src/utils/catalog-manifest-v5.d.ts +5 -0
  162. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v5.js} +39 -35
  163. package/dist/src/utils/{catalog-manifest-v4.js.map → catalog-manifest-v5.js.map} +1 -1
  164. package/dist/src/utils/catalog-operation-context.d.ts +28 -0
  165. package/dist/src/utils/catalog-operation-context.js +242 -0
  166. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  167. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  168. package/dist/src/utils/catalog-public-error.js +20 -4
  169. package/dist/src/utils/catalog-public-error.js.map +1 -1
  170. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  171. package/dist/src/utils/catalog-snapshot.js +11 -3
  172. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  173. package/dist/src/utils/catalog-source-cache.d.ts +1 -1
  174. package/dist/src/utils/catalog-source-cache.js +37 -12
  175. package/dist/src/utils/catalog-source-cache.js.map +1 -1
  176. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  177. package/dist/src/utils/catalog-source-identity.js +21 -2
  178. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  179. package/dist/src/utils/catalog-sources.d.ts +1 -0
  180. package/dist/src/utils/catalog-sources.js +30 -11
  181. package/dist/src/utils/catalog-sources.js.map +1 -1
  182. package/dist/src/utils/codex-config.js +4 -4
  183. package/dist/src/utils/codex-config.js.map +1 -1
  184. package/dist/src/utils/codex-manager.d.ts +33 -0
  185. package/dist/src/utils/codex-manager.js +656 -0
  186. package/dist/src/utils/codex-manager.js.map +1 -0
  187. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  188. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  189. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  190. package/dist/src/utils/dynamic-skill-tree.js +35 -5
  191. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  192. package/dist/src/utils/git-catalog-provider.js +10 -25
  193. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  194. package/dist/src/utils/lifecycle-active-store.d.ts +0 -28
  195. package/dist/src/utils/lifecycle-active-store.js +35 -247
  196. package/dist/src/utils/lifecycle-active-store.js.map +1 -1
  197. package/dist/src/utils/multi-source-catalog.d.ts +3 -0
  198. package/dist/src/utils/multi-source-catalog.js +120 -10
  199. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  200. package/dist/src/utils/native-cli.d.ts +15 -6
  201. package/dist/src/utils/native-cli.js +31 -39
  202. package/dist/src/utils/native-cli.js.map +1 -1
  203. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -3
  204. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  205. package/dist/src/utils/ownership.d.ts +10 -1
  206. package/dist/src/utils/ownership.js +52 -24
  207. package/dist/src/utils/ownership.js.map +1 -1
  208. package/dist/src/utils/path-catalog-provider.js +12 -8
  209. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  210. package/dist/src/utils/plugin-config-write.js +18 -35
  211. package/dist/src/utils/plugin-config-write.js.map +1 -1
  212. package/dist/src/utils/plugin-config.d.ts +1 -12
  213. package/dist/src/utils/plugin-config.js +107 -226
  214. package/dist/src/utils/plugin-config.js.map +1 -1
  215. package/dist/src/utils/plugin-scripts.d.ts +1 -1
  216. package/dist/src/utils/plugin-scripts.js +1 -1
  217. package/dist/src/utils/plugin-scripts.js.map +1 -1
  218. package/dist/src/utils/state-paths.js +7 -2
  219. package/dist/src/utils/state-paths.js.map +1 -1
  220. package/dist/src/utils/target-eligibility.d.ts +7 -2
  221. package/dist/src/utils/target-eligibility.js +6 -3
  222. package/dist/src/utils/target-eligibility.js.map +1 -1
  223. package/package.json +4 -3
  224. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  225. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  226. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  227. package/dist/src/commands/status-v4.js.map +0 -1
  228. package/dist/src/commands/status.d.ts +0 -93
  229. package/dist/src/commands/status.js +0 -442
  230. package/dist/src/commands/status.js.map +0 -1
  231. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  232. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  233. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  234. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  235. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  236. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  237. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
@@ -0,0 +1,481 @@
1
+ import crypto from 'node:crypto';
2
+ import path from 'node:path';
3
+ import { DEFAULT_CATALOG_OUTPUT_PATH, readCatalogWorkspace, resolveCatalogWorkspaceRoot, validateCatalogSnapshotComplete, } from '@lesliechan721/aw-plugin-core';
4
+ import { runCatalogBuildCommand } from '../authoring/workspace-commands.js';
5
+ import { withAwHomeMutationLock } from '../utils/aw-home-mutation-lock.js';
6
+ import { calculateCatalogSourceIdentity } from '../utils/catalog-source-identity.js';
7
+ import { catalogSourceCacheInternal } from '../utils/catalog-source-cache.js';
8
+ import { CLI_RESERVED_IMPORTS } from '../utils/manifest.js';
9
+ import { CATALOG_SOURCE_ID_PATTERN, isDefaultOfficialCatalogSource, readCatalogSourcesConfigSnapshot, } from '../utils/catalog-sources.js';
10
+ import { addCatalogSourceCommand, refreshCatalogSourceCommand, removeCatalogSourceCommand, setPrimaryCatalogSourceCommand, updateCatalogSourceCommand, } from './catalog-source.js';
11
+ import { getCatalogStatus } from './catalog-status.js';
12
+ function managedSources(sources, workspaceIdentity) {
13
+ return sources.filter((source) => source.type === 'path'
14
+ && source.managedBy?.kind === 'catalog-workspace'
15
+ && source.managedBy.workspaceIdentity === workspaceIdentity);
16
+ }
17
+ function normalizeSuggestedSourceId(workspaceRoot) {
18
+ const stem = path.basename(workspaceRoot)
19
+ .toLowerCase()
20
+ .replace(/[^a-z0-9]+/gu, '-')
21
+ .replace(/^-+|-+$/gu, '');
22
+ const prefixed = /^[a-z]/u.test(stem) ? stem : `catalog-${stem}`;
23
+ const basename = (prefixed || 'catalog').slice(0, 28).replace(/-+$/u, '') || 'catalog';
24
+ return `${basename}-dev`;
25
+ }
26
+ function suffixedSourceId(base, workspaceIdentity) {
27
+ const suffix = crypto.createHash('sha256').update(workspaceIdentity).digest('hex').slice(0, 6);
28
+ const prefix = base.slice(0, 32 - suffix.length - 1).replace(/-+$/u, '');
29
+ return `${prefix}-${suffix}`;
30
+ }
31
+ export function suggestedCatalogDevSourceId(workspaceRoot, workspaceIdentity, occupiedSourceIds = []) {
32
+ const base = normalizeSuggestedSourceId(workspaceRoot);
33
+ return workspaceIdentity && occupiedSourceIds.includes(base)
34
+ ? suffixedSourceId(base, workspaceIdentity)
35
+ : base;
36
+ }
37
+ function assertExplicitSourceId(sourceId) {
38
+ if (!CATALOG_SOURCE_ID_PATTERN.test(sourceId)) {
39
+ throw new CatalogDevSourceError('invalidSourceId', `Invalid catalog development source ID: expected ${CATALOG_SOURCE_ID_PATTERN}.`);
40
+ }
41
+ }
42
+ class CatalogDevSourceError extends Error {
43
+ code;
44
+ constructor(code, message) {
45
+ super(message);
46
+ this.code = code;
47
+ this.name = 'CatalogDevSourceError';
48
+ }
49
+ }
50
+ export function createCatalogDevFailureReceipt(options) {
51
+ const workspaceRoot = path.resolve(options.cwd, options.workspaceRoot ?? '.');
52
+ const snapshotPath = path.join(workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
53
+ if (options.command === 'activate') {
54
+ return {
55
+ receiptSchemaVersion: 1,
56
+ command: 'catalog:dev:activate',
57
+ ok: false,
58
+ state: 'completed',
59
+ workspaceIdentity: null,
60
+ snapshot: { path: snapshotPath, action: 'reused', digest: null },
61
+ source: {
62
+ id: options.sourceId ?? suggestedCatalogDevSourceId(workspaceRoot),
63
+ action: 'reused',
64
+ primary: false,
65
+ },
66
+ recovery: ['Fix the reported problem, then rerun catalog dev activate.'],
67
+ errors: [{ code: options.code, message: options.message }],
68
+ };
69
+ }
70
+ if (options.command === 'status') {
71
+ return {
72
+ receiptSchemaVersion: 1,
73
+ command: 'catalog:dev:status',
74
+ ok: false,
75
+ workspaceIdentity: null,
76
+ workspaceRoot,
77
+ snapshot: { path: snapshotPath, state: 'absent', valid: false, digest: null },
78
+ source: { exists: false, id: null, pathMatches: null, primary: null },
79
+ cache: { state: 'not-applicable', validatedAt: null, snapshotDigest: null },
80
+ issues: [{ code: options.code, message: options.message, blocking: true }],
81
+ };
82
+ }
83
+ return {
84
+ receiptSchemaVersion: 1,
85
+ command: 'catalog:dev:deactivate',
86
+ ok: false,
87
+ state: 'completed',
88
+ workspaceIdentity: null,
89
+ snapshotPath,
90
+ source: { id: null, action: 'absent', previousPrimary: false },
91
+ replacementPrimarySourceId: null,
92
+ recovery: ['Fix the reported problem, then rerun catalog dev deactivate.'],
93
+ errors: [{ code: options.code, message: options.message }],
94
+ };
95
+ }
96
+ function codedFailure(error, fallbackCode) {
97
+ return {
98
+ code: error instanceof CatalogDevSourceError ? error.code : fallbackCode,
99
+ message: error instanceof Error ? error.message : String(error),
100
+ };
101
+ }
102
+ async function resolveWorkspace(cwd, workspaceRoot) {
103
+ try {
104
+ const resolved = await resolveCatalogWorkspaceRoot({
105
+ cwd,
106
+ ...(workspaceRoot === undefined ? {} : { explicitRoot: workspaceRoot }),
107
+ mode: 'existing',
108
+ });
109
+ const workspace = await readCatalogWorkspace(resolved.workspaceRoot, { reservedImports: CLI_RESERVED_IMPORTS });
110
+ return { resolved, workspace };
111
+ }
112
+ catch (error) {
113
+ throw new CatalogDevSourceError('workspaceInvalid', error instanceof Error ? error.message : String(error));
114
+ }
115
+ }
116
+ export function catalogDevSourceError(error, fallbackCode = 'catalogDevSourceFailed') {
117
+ return codedFailure(error, fallbackCode);
118
+ }
119
+ export async function activateCatalogDevSource(options) {
120
+ const { resolved, workspace } = await resolveWorkspace(options.cwd, options.workspaceRoot);
121
+ const snapshotPath = path.join(workspace.workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
122
+ const staticStatus = await getCatalogStatus({
123
+ cwd: options.cwd,
124
+ workspaceRoot: workspace.workspaceRoot,
125
+ env: options.env,
126
+ });
127
+ let snapshotAction = 'reused';
128
+ let snapshotDigest = staticStatus.snapshot.snapshotDigest;
129
+ const shouldBuild = options.forceBuild === true || staticStatus.snapshot.state !== 'current';
130
+ if (shouldBuild) {
131
+ try {
132
+ await runCatalogBuildCommand({
133
+ workspaceRoot: workspace.workspaceRoot,
134
+ workspaceRootResolvedFrom: resolved.workspaceRootResolvedFrom,
135
+ force: options.forceBuild === true || staticStatus.snapshot.state !== 'absent',
136
+ io: { stdout: () => undefined, stderr: () => undefined },
137
+ });
138
+ snapshotDigest = (await validateCatalogSnapshotComplete(snapshotPath)).snapshotDigest;
139
+ snapshotAction = 'built';
140
+ }
141
+ catch (error) {
142
+ return {
143
+ receiptSchemaVersion: 1,
144
+ command: 'catalog:dev:activate',
145
+ ok: false,
146
+ state: 'completed',
147
+ workspaceIdentity: workspace.workspaceIdentity,
148
+ snapshot: { path: snapshotPath, action: 'built', digest: null },
149
+ source: { id: options.sourceId ?? normalizeSuggestedSourceId(workspace.workspaceRoot), action: 'reused', primary: false },
150
+ recovery: ['Fix the Catalog Workspace or snapshot output, then rerun catalog dev activate.'],
151
+ errors: [codedFailure(error, 'snapshotBuildFailed')],
152
+ };
153
+ }
154
+ }
155
+ let selectedId = options.sourceId ?? normalizeSuggestedSourceId(workspace.workspaceRoot);
156
+ let sourceAction = 'reused';
157
+ try {
158
+ const result = await withAwHomeMutationLock({
159
+ env: options.env,
160
+ action: async (awHomeMutationToken) => {
161
+ const configSnapshot = await readCatalogSourcesConfigSnapshot(options.env);
162
+ const owned = managedSources(configSnapshot.config.sources, workspace.workspaceIdentity);
163
+ if (owned.length > 1) {
164
+ throw new CatalogDevSourceError('multipleManagedSources', `Catalog Workspace identity ${workspace.workspaceIdentity} owns multiple development sources: ${owned.map((source) => source.id).join(', ')}.`);
165
+ }
166
+ const existing = owned[0];
167
+ selectedId = options.sourceId ?? normalizeSuggestedSourceId(workspace.workspaceRoot);
168
+ if (options.sourceId !== undefined) {
169
+ assertExplicitSourceId(options.sourceId);
170
+ if (existing && existing.id !== options.sourceId) {
171
+ throw new CatalogDevSourceError('sourceIdConflict', `Catalog Workspace already owns development source "${existing.id}"; it cannot also own "${options.sourceId}".`);
172
+ }
173
+ const collision = configSnapshot.config.sources.find((source) => source.id === options.sourceId);
174
+ if (collision && collision !== existing) {
175
+ throw new CatalogDevSourceError('sourceIdConflict', `Catalog source "${options.sourceId}" is owned by another Workspace or is foreign.`);
176
+ }
177
+ }
178
+ else if (!existing && configSnapshot.config.sources.some((source) => source.id === selectedId)) {
179
+ selectedId = suffixedSourceId(selectedId, workspace.workspaceIdentity);
180
+ if (configSnapshot.config.sources.some((source) => source.id === selectedId)) {
181
+ throw new CatalogDevSourceError('sourceIdConflict', `Deterministic Catalog development source ID "${selectedId}" is already in use.`);
182
+ }
183
+ }
184
+ if (existing)
185
+ selectedId = existing.id;
186
+ const runtime = { ...options.runtime?.sourceRuntime, awHomeMutationToken };
187
+ if (!existing) {
188
+ sourceAction = 'added';
189
+ return addCatalogSourceCommand({
190
+ source: {
191
+ id: selectedId,
192
+ type: 'path',
193
+ path: snapshotPath,
194
+ primary: options.primary === true,
195
+ managedBy: { kind: 'catalog-workspace', workspaceIdentity: workspace.workspaceIdentity },
196
+ },
197
+ cliVersion: options.cliVersion,
198
+ cwd: workspace.workspaceRoot,
199
+ env: options.env,
200
+ runtime,
201
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
202
+ });
203
+ }
204
+ if (existing.path !== snapshotPath || (options.primary === true && !existing.primary)) {
205
+ sourceAction = 'updated';
206
+ const updated = existing.path === snapshotPath
207
+ ? { errors: [] }
208
+ : await updateCatalogSourceCommand({
209
+ sourceId: existing.id,
210
+ update: { type: 'path', path: snapshotPath },
211
+ cliVersion: options.cliVersion,
212
+ cwd: workspace.workspaceRoot,
213
+ env: options.env,
214
+ runtime,
215
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
216
+ });
217
+ if (options.primary === true && !existing.primary) {
218
+ await setPrimaryCatalogSourceCommand({
219
+ sourceId: existing.id,
220
+ cwd: workspace.workspaceRoot,
221
+ env: options.env,
222
+ runtime,
223
+ });
224
+ }
225
+ if (existing.path !== snapshotPath)
226
+ return updated;
227
+ const refreshed = await refreshCatalogSourceCommand({
228
+ sourceId: existing.id,
229
+ cliVersion: options.cliVersion,
230
+ env: options.env,
231
+ runtime,
232
+ });
233
+ return { errors: refreshed.errors };
234
+ }
235
+ const refreshed = await refreshCatalogSourceCommand({
236
+ sourceId: existing.id,
237
+ cliVersion: options.cliVersion,
238
+ env: options.env,
239
+ runtime,
240
+ });
241
+ return { errors: refreshed.errors };
242
+ },
243
+ });
244
+ const configured = (await readCatalogSourcesConfigSnapshot(options.env)).config.sources
245
+ .find((source) => source.id === selectedId);
246
+ const refreshErrors = result.errors.length === 0 ? [] : [{
247
+ code: 'sourceRefreshFailed',
248
+ message: result.errors.map((error) => error.message).join('; '),
249
+ }];
250
+ return {
251
+ receiptSchemaVersion: 1,
252
+ command: 'catalog:dev:activate',
253
+ ok: refreshErrors.length === 0,
254
+ state: refreshErrors.length === 0 ? 'completed' : 'partial',
255
+ workspaceIdentity: workspace.workspaceIdentity,
256
+ snapshot: { path: snapshotPath, action: snapshotAction, digest: snapshotDigest },
257
+ source: { id: selectedId, action: sourceAction, primary: configured.primary },
258
+ recovery: refreshErrors.length === 0 ? [] : [
259
+ 'Fix the Catalog snapshot, then rerun catalog dev activate or refresh the source.',
260
+ ],
261
+ errors: refreshErrors,
262
+ };
263
+ }
264
+ catch (error) {
265
+ return {
266
+ receiptSchemaVersion: 1,
267
+ command: 'catalog:dev:activate',
268
+ ok: false,
269
+ state: 'completed',
270
+ workspaceIdentity: workspace.workspaceIdentity,
271
+ snapshot: { path: snapshotPath, action: snapshotAction, digest: snapshotDigest },
272
+ source: { id: selectedId, action: sourceAction, primary: false },
273
+ recovery: ['The snapshot was kept. Fix the source configuration, then rerun catalog dev activate.'],
274
+ errors: [codedFailure(error, 'sourceConfigFailed')],
275
+ };
276
+ }
277
+ }
278
+ export async function getCatalogDevSourceStatus(options) {
279
+ const requestedRoot = path.resolve(options.cwd, options.workspaceRoot ?? '.');
280
+ const empty = {
281
+ receiptSchemaVersion: 1,
282
+ command: 'catalog:dev:status',
283
+ ok: false,
284
+ workspaceIdentity: null,
285
+ workspaceRoot: requestedRoot,
286
+ snapshot: { path: path.join(requestedRoot, DEFAULT_CATALOG_OUTPUT_PATH), state: 'absent', valid: false, digest: null },
287
+ source: { exists: false, id: null, pathMatches: null, primary: null },
288
+ cache: { state: 'not-applicable', validatedAt: null, snapshotDigest: null },
289
+ issues: [],
290
+ };
291
+ let workspace;
292
+ try {
293
+ workspace = await resolveWorkspace(options.cwd, options.workspaceRoot);
294
+ }
295
+ catch (error) {
296
+ empty.issues.push({ code: 'workspaceInvalid', message: codedFailure(error, 'workspaceInvalid').message, blocking: true });
297
+ return empty;
298
+ }
299
+ const staticStatus = await getCatalogStatus({
300
+ cwd: options.cwd,
301
+ workspaceRoot: workspace.workspace.workspaceRoot,
302
+ env: options.env,
303
+ });
304
+ const receipt = {
305
+ ...empty,
306
+ workspaceIdentity: workspace.workspace.workspaceIdentity,
307
+ workspaceRoot: workspace.workspace.workspaceRoot,
308
+ snapshot: {
309
+ path: staticStatus.snapshot.path,
310
+ state: staticStatus.snapshot.state,
311
+ valid: staticStatus.snapshot.valid,
312
+ digest: staticStatus.snapshot.snapshotDigest,
313
+ },
314
+ };
315
+ if (staticStatus.snapshot.state !== 'current') {
316
+ receipt.issues.push({
317
+ code: `snapshot${staticStatus.snapshot.state[0].toUpperCase()}${staticStatus.snapshot.state.slice(1)}`,
318
+ message: `Catalog development snapshot is ${staticStatus.snapshot.state}.`,
319
+ blocking: true,
320
+ });
321
+ }
322
+ try {
323
+ const config = await readCatalogSourcesConfigSnapshot(options.env);
324
+ const owned = managedSources(config.config.sources, workspace.workspace.workspaceIdentity);
325
+ if (owned.length > 1) {
326
+ receipt.issues.push({
327
+ code: 'multipleManagedSources',
328
+ message: `Workspace owns multiple development sources: ${owned.map((source) => source.id).join(', ')}.`,
329
+ blocking: true,
330
+ });
331
+ }
332
+ const source = owned.length === 1 ? owned[0] : null;
333
+ if (!source) {
334
+ receipt.issues.push({ code: 'sourceInactive', message: 'Workspace has no active development source.', blocking: false });
335
+ const suggested = normalizeSuggestedSourceId(workspace.workspace.workspaceRoot);
336
+ const collision = config.config.sources.find((entry) => entry.id === suggested);
337
+ if (collision) {
338
+ receipt.issues.push({
339
+ code: 'suggestedSourceIdCollision',
340
+ message: `Suggested source ID "${suggested}" is owned by another Workspace or is foreign.`,
341
+ blocking: false,
342
+ });
343
+ }
344
+ }
345
+ else {
346
+ const pathMatches = source.path === receipt.snapshot.path;
347
+ receipt.source = { exists: true, id: source.id, pathMatches, primary: source.primary };
348
+ if (!pathMatches) {
349
+ receipt.issues.push({
350
+ code: 'sourcePathMismatch',
351
+ message: 'Managed development source path does not match the current Workspace snapshot.',
352
+ blocking: true,
353
+ });
354
+ }
355
+ const sourceIdentity = await calculateCatalogSourceIdentity(source);
356
+ const location = catalogSourceCacheInternal.resolveCatalogSourceCacheLocation({
357
+ sourceId: source.id,
358
+ sourceIdentity,
359
+ env: options.env,
360
+ });
361
+ const entry = await catalogSourceCacheInternal.readCatalogSourceCache({
362
+ location,
363
+ sourceId: source.id,
364
+ sourceIdentity,
365
+ requestedRef: 'path',
366
+ cliVersion: options.cliVersion,
367
+ });
368
+ receipt.cache = entry ? {
369
+ state: entry.entryDir === location.currentDir ? 'current' : 'last-good',
370
+ validatedAt: entry.metadata.validatedAt,
371
+ snapshotDigest: entry.metadata.snapshotDigest,
372
+ } : { state: 'absent', validatedAt: null, snapshotDigest: null };
373
+ }
374
+ }
375
+ catch (error) {
376
+ receipt.issues.push({ code: 'sourceConfigInvalid', message: codedFailure(error, 'sourceConfigInvalid').message, blocking: true });
377
+ }
378
+ receipt.ok = !receipt.issues.some((issue) => issue.blocking);
379
+ return receipt;
380
+ }
381
+ export async function deactivateCatalogDevSource(options) {
382
+ const { workspace } = await resolveWorkspace(options.cwd, options.workspaceRoot);
383
+ const snapshotPath = path.join(workspace.workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
384
+ const config = await readCatalogSourcesConfigSnapshot(options.env).catch((error) => {
385
+ throw new CatalogDevSourceError('sourceConfigInvalid', error instanceof Error ? error.message : String(error));
386
+ });
387
+ const owned = managedSources(config.config.sources, workspace.workspaceIdentity);
388
+ const base = {
389
+ receiptSchemaVersion: 1,
390
+ command: 'catalog:dev:deactivate',
391
+ workspaceIdentity: workspace.workspaceIdentity,
392
+ snapshotPath,
393
+ };
394
+ if (owned.length > 1) {
395
+ return {
396
+ ...base, ok: false, state: 'completed',
397
+ source: { id: null, action: 'retained', previousPrimary: false },
398
+ replacementPrimarySourceId: null,
399
+ recovery: ['Resolve the duplicate managed source configuration, then rerun catalog dev deactivate.'],
400
+ errors: [{ code: 'multipleManagedSources', message: `Workspace owns multiple development sources: ${owned.map((source) => source.id).join(', ')}.` }],
401
+ };
402
+ }
403
+ const source = owned[0];
404
+ if (!source) {
405
+ return {
406
+ ...base, ok: true, state: 'completed',
407
+ source: { id: null, action: 'absent', previousPrimary: false },
408
+ replacementPrimarySourceId: null,
409
+ recovery: [], errors: [],
410
+ };
411
+ }
412
+ let replacementPrimarySourceId = null;
413
+ if (source.primary) {
414
+ const otherSources = config.config.sources.filter((entry) => entry.id !== source.id);
415
+ const official = otherSources.find(isDefaultOfficialCatalogSource);
416
+ if (official)
417
+ replacementPrimarySourceId = official.id;
418
+ else if (otherSources.length === 1)
419
+ replacementPrimarySourceId = otherSources[0].id;
420
+ else {
421
+ return {
422
+ ...base, ok: false, state: 'completed',
423
+ source: { id: source.id, action: 'retained', previousPrimary: true },
424
+ replacementPrimarySourceId: null,
425
+ recovery: ['Select a replacement primary source, then rerun catalog dev deactivate.'],
426
+ errors: [{
427
+ code: otherSources.length === 0 ? 'replacementPrimaryUnavailable' : 'replacementPrimaryAmbiguous',
428
+ message: otherSources.length === 0
429
+ ? 'No replacement primary Catalog source is available.'
430
+ : `Replacement primary Catalog source is ambiguous: ${otherSources.map((entry) => entry.id).join(', ')}.`,
431
+ }],
432
+ };
433
+ }
434
+ }
435
+ try {
436
+ await withAwHomeMutationLock({
437
+ env: options.env,
438
+ action: async (awHomeMutationToken) => {
439
+ const lockedConfig = await readCatalogSourcesConfigSnapshot(options.env);
440
+ if (lockedConfig.digest !== config.digest) {
441
+ throw new CatalogDevSourceError('sourceConfigChanged', 'Catalog sources config changed before development source deactivation. Rerun the command.');
442
+ }
443
+ const runtime = { ...options.runtime?.sourceRuntime, awHomeMutationToken };
444
+ if (replacementPrimarySourceId) {
445
+ await setPrimaryCatalogSourceCommand({
446
+ sourceId: replacementPrimarySourceId,
447
+ cwd: workspace.workspaceRoot,
448
+ env: options.env,
449
+ runtime,
450
+ });
451
+ }
452
+ await removeCatalogSourceCommand({
453
+ sourceId: source.id,
454
+ cwd: workspace.workspaceRoot,
455
+ env: options.env,
456
+ runtime,
457
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
458
+ });
459
+ },
460
+ });
461
+ return {
462
+ ...base, ok: true, state: 'completed',
463
+ source: { id: source.id, action: 'removed', previousPrimary: source.primary },
464
+ replacementPrimarySourceId,
465
+ recovery: [], errors: [],
466
+ };
467
+ }
468
+ catch (error) {
469
+ const after = await readCatalogSourcesConfigSnapshot(options.env).catch(() => null);
470
+ const sourceStillExists = after?.config.sources.some((entry) => entry.id === source.id) ?? true;
471
+ const configChanged = after !== null && after.digest !== config.digest;
472
+ return {
473
+ ...base, ok: false, state: configChanged ? 'partial' : 'completed',
474
+ source: { id: source.id, action: sourceStillExists ? 'retained' : 'removed', previousPrimary: source.primary },
475
+ replacementPrimarySourceId,
476
+ recovery: ['The snapshot was kept. Fix the source configuration or cache, then rerun catalog dev deactivate.'],
477
+ errors: [codedFailure(error, 'sourceConfigFailed')],
478
+ };
479
+ }
480
+ }
481
+ //# sourceMappingURL=catalog-dev-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-dev-source.js","sourceRoot":"","sources":["../../../src/commands/catalog-dev-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { CatalogGenerationActivationResult, CatalogGenerationRefreshResult } from '../types.js';
2
+ import { type CatalogGenerationServiceRuntime, type CatalogGenerationStatusPayload, type CatalogGenerationStatusEntry } from '../utils/catalog-generation-service.js';
3
+ import type { AwHomeMutationToken } from '../utils/aw-home-mutation-lock.js';
4
+ export declare function refreshCatalogSourceGenerationCommand(options: {
5
+ sourceId: string;
6
+ cliVersion: string;
7
+ env?: NodeJS.ProcessEnv;
8
+ signal?: AbortSignal;
9
+ runtime?: CatalogGenerationServiceRuntime;
10
+ }): Promise<CatalogGenerationRefreshResult>;
11
+ export declare function activateCatalogSourceCandidateCommand(options: {
12
+ sourceId: string;
13
+ expectedCandidateGenerationKey?: string;
14
+ env?: NodeJS.ProcessEnv;
15
+ awHomeMutationToken?: AwHomeMutationToken;
16
+ runtime?: Pick<CatalogGenerationServiceRuntime, 'now'>;
17
+ }): Promise<CatalogGenerationActivationResult>;
18
+ export declare function setCatalogSourceRefreshPolicyCommand(options: {
19
+ sourceId: string;
20
+ refreshPolicy: 'startup' | 'manual';
21
+ env?: NodeJS.ProcessEnv;
22
+ }): Promise<CatalogGenerationStatusEntry>;
23
+ export declare function catalogGenerationStatusCommand(options?: {
24
+ sourceId?: string;
25
+ env?: NodeJS.ProcessEnv;
26
+ }): Promise<CatalogGenerationStatusPayload>;
@@ -0,0 +1,14 @@
1
+ import { activateCatalogSourceCandidate, readCatalogGenerationStatus, refreshCatalogSourceGeneration, setCatalogSourceRefreshPolicy, } from '../utils/catalog-generation-service.js';
2
+ export async function refreshCatalogSourceGenerationCommand(options) {
3
+ return refreshCatalogSourceGeneration(options);
4
+ }
5
+ export async function activateCatalogSourceCandidateCommand(options) {
6
+ return activateCatalogSourceCandidate(options);
7
+ }
8
+ export async function setCatalogSourceRefreshPolicyCommand(options) {
9
+ return setCatalogSourceRefreshPolicy(options);
10
+ }
11
+ export async function catalogGenerationStatusCommand(options = {}) {
12
+ return readCatalogGenerationStatus(options);
13
+ }
14
+ //# sourceMappingURL=catalog-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-generation.js","sourceRoot":"","sources":["../../../src/commands/catalog-generation.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,GAI9B,MAAM,wCAAwC,CAAC;AAGhD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,OAM3D;IACC,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CAAC,OAM3D;IACC,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,OAI1D;IACC,OAAO,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,UAGjD,EAAE;IACJ,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC"}
@@ -2,6 +2,7 @@ import { validatePublishedCatalogSnapshot, type CatalogWorkspace } from '@leslie
2
2
  export interface CatalogPublicationIssue {
3
3
  code: string;
4
4
  message: string;
5
+ blocking: boolean;
5
6
  }
6
7
  export declare class CatalogPublicationInspectionError extends Error {
7
8
  readonly code: string;
@@ -59,7 +60,6 @@ export interface CatalogPublicationDescriptor {
59
60
  contentDigest: string;
60
61
  planId: string;
61
62
  ledgerDigest: string;
62
- minCliVersion: string;
63
63
  pluginNames: string[];
64
64
  }
65
65
  export declare function sanitizedGitEnvironment(source: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
@@ -4,7 +4,7 @@ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { promisify } from 'node:util';
6
6
  import fs from 'fs-extra';
7
- import { preparePublishedCatalogWorkspace, readCatalogWorkspace, validatePublishedCatalogSnapshot, } from '@lesliechan721/aw-plugin-core';
7
+ import { preparePublishedCatalogWorkspace, readCatalogWorkspace, validatePublishedCatalogPublicationParent, validatePublishedCatalogSnapshot, } from '@lesliechan721/aw-plugin-core';
8
8
  import { bundleLocalPlugin, createCatalogRuntimeImportResolver } from '../../scripts/plugin-staging.js';
9
9
  import { CLI_RESERVED_IMPORTS } from '../utils/manifest.js';
10
10
  import { resolveCliPackageRoot } from '../utils/paths.js';
@@ -263,8 +263,8 @@ export async function prepareCatalogPublicationInspection(options) {
263
263
  '--work-tree', previousSnapshotRoot, 'checkout', '--quiet', 'refs/aw/catalog-parent', '--', '.',
264
264
  ], env, 'remoteBranchInvalid', 'Could not read the published Catalog snapshot.');
265
265
  try {
266
- const previous = await validatePublishedCatalogSnapshot(previousSnapshotRoot);
267
- publishedVersion = previous.manifest.catalogVersion;
266
+ const previous = await validatePublishedCatalogPublicationParent(previousSnapshotRoot);
267
+ publishedVersion = previous.catalogVersion;
268
268
  }
269
269
  catch (error) {
270
270
  throw inspectionError('remoteSnapshotInvalid', error);
@@ -298,7 +298,7 @@ export async function prepareCatalogPublicationInspection(options) {
298
298
  || finalRefs.has(`${tagRef}^{}`) !== initialRefs.has(`${tagRef}^{}`)) {
299
299
  throw new CatalogPublicationInspectionError('remoteDrift', 'Catalog remote changed during preparation. Increase the Catalog version before publishing again.');
300
300
  }
301
- const [preparedValidation, ledgerBytes] = await Promise.all([
301
+ const [, ledgerBytes] = await Promise.all([
302
302
  validatePublishedCatalogSnapshot(prepared.outputRoot),
303
303
  fs.readFile(path.join(prepared.outputRoot, 'plugin-release-ledger.json')),
304
304
  ]);
@@ -320,7 +320,6 @@ export async function prepareCatalogPublicationInspection(options) {
320
320
  contentDigest: prepared.contentDigest,
321
321
  planId: prepared.planId,
322
322
  ledgerDigest,
323
- minCliVersion: preparedValidation.manifest.compatibility.aw.minVersion,
324
323
  pluginNames: [...prepared.pluginNames],
325
324
  };
326
325
  return {