@solaqua/skul 0.1.0

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 (58) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +282 -0
  3. package/bin/skul.js +13 -0
  4. package/dist/bundle-discovery.d.ts +30 -0
  5. package/dist/bundle-discovery.js +284 -0
  6. package/dist/bundle-discovery.js.map +1 -0
  7. package/dist/bundle-fetch.d.ts +67 -0
  8. package/dist/bundle-fetch.js +378 -0
  9. package/dist/bundle-fetch.js.map +1 -0
  10. package/dist/bundle-items.d.ts +34 -0
  11. package/dist/bundle-items.js +149 -0
  12. package/dist/bundle-items.js.map +1 -0
  13. package/dist/bundle-manifest.d.ts +26 -0
  14. package/dist/bundle-manifest.js +196 -0
  15. package/dist/bundle-manifest.js.map +1 -0
  16. package/dist/bundle-materialization.d.ts +52 -0
  17. package/dist/bundle-materialization.js +587 -0
  18. package/dist/bundle-materialization.js.map +1 -0
  19. package/dist/bundle-translation.d.ts +38 -0
  20. package/dist/bundle-translation.js +502 -0
  21. package/dist/bundle-translation.js.map +1 -0
  22. package/dist/cli.d.ts +126 -0
  23. package/dist/cli.js +648 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/fs-utils.d.ts +7 -0
  26. package/dist/fs-utils.js +27 -0
  27. package/dist/fs-utils.js.map +1 -0
  28. package/dist/git-context.d.ts +14 -0
  29. package/dist/git-context.js +53 -0
  30. package/dist/git-context.js.map +1 -0
  31. package/dist/git-exclude.d.ts +13 -0
  32. package/dist/git-exclude.js +76 -0
  33. package/dist/git-exclude.js.map +1 -0
  34. package/dist/git-index.d.ts +106 -0
  35. package/dist/git-index.js +224 -0
  36. package/dist/git-index.js.map +1 -0
  37. package/dist/index.d.ts +21 -0
  38. package/dist/index.js +4190 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/registry.d.ts +91 -0
  41. package/dist/registry.js +551 -0
  42. package/dist/registry.js.map +1 -0
  43. package/dist/root-instruction-content.d.ts +11 -0
  44. package/dist/root-instruction-content.js +61 -0
  45. package/dist/root-instruction-content.js.map +1 -0
  46. package/dist/root-instruction-render.d.ts +31 -0
  47. package/dist/root-instruction-render.js +121 -0
  48. package/dist/root-instruction-render.js.map +1 -0
  49. package/dist/root-instruction-state.d.ts +41 -0
  50. package/dist/root-instruction-state.js +273 -0
  51. package/dist/root-instruction-state.js.map +1 -0
  52. package/dist/state-layout.d.ts +11 -0
  53. package/dist/state-layout.js +26 -0
  54. package/dist/state-layout.js.map +1 -0
  55. package/dist/tool-mapping.d.ts +35 -0
  56. package/dist/tool-mapping.js +227 -0
  57. package/dist/tool-mapping.js.map +1 -0
  58. package/package.json +72 -0
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createEmptyRegistry = createEmptyRegistry;
7
+ exports.readRegistryFile = readRegistryFile;
8
+ exports.writeRegistryFile = writeRegistryFile;
9
+ exports.upsertRepoState = upsertRepoState;
10
+ exports.upsertWorktreeState = upsertWorktreeState;
11
+ exports.removeWorktreeState = removeWorktreeState;
12
+ exports.listManagedPathsForRemoval = listManagedPathsForRemoval;
13
+ exports.parseRegistry = parseRegistry;
14
+ exports.upsertGlobalState = upsertGlobalState;
15
+ const node_fs_1 = __importDefault(require("node:fs"));
16
+ const node_path_1 = __importDefault(require("node:path"));
17
+ const bundle_items_1 = require("./bundle-items");
18
+ const fs_utils_1 = require("./fs-utils");
19
+ const tool_mapping_1 = require("./tool-mapping");
20
+ const KNOWN_TOOL_NAMES = new Set((0, tool_mapping_1.listToolDefinitions)().map((t) => t.name));
21
+ function isToolName(value) {
22
+ return KNOWN_TOOL_NAMES.has(value);
23
+ }
24
+ /** Creates an empty registry object at the current schema version. */
25
+ function createEmptyRegistry() {
26
+ return {
27
+ version: 1,
28
+ repos: {},
29
+ worktrees: {},
30
+ };
31
+ }
32
+ /** Reads the registry from disk, defaulting to an empty registry when it does not exist. */
33
+ function readRegistryFile(registryFile) {
34
+ if (!node_fs_1.default.existsSync(registryFile)) {
35
+ return createEmptyRegistry();
36
+ }
37
+ return parseRegistry(JSON.parse(node_fs_1.default.readFileSync(registryFile, "utf8")));
38
+ }
39
+ /** Persists the registry to disk using stable ordering and a trailing newline. */
40
+ function writeRegistryFile(registryFile, registry) {
41
+ node_fs_1.default.mkdirSync(node_path_1.default.dirname(registryFile), { recursive: true });
42
+ node_fs_1.default.writeFileSync(registryFile, `${JSON.stringify(sortRegistry(registry), null, 2)}\n`);
43
+ }
44
+ /** Replaces one repository entry in the registry while preserving all others. */
45
+ function upsertRepoState(registry, repoFingerprint, repoState) {
46
+ return {
47
+ version: 1,
48
+ repos: {
49
+ ...registry.repos,
50
+ [repoFingerprint]: {
51
+ ...repoState,
52
+ desired_state: repoState.desired_state.map((entry) => ({
53
+ bundle: entry.bundle,
54
+ ...(entry.source !== undefined ? { source: entry.source } : {}),
55
+ ...(entry.tools !== undefined ? { tools: [...entry.tools] } : {}),
56
+ ...(entry.items !== undefined ? { items: [...entry.items] } : {}),
57
+ protocol: entry.protocol,
58
+ ...(entry.ref !== undefined ? { ref: entry.ref } : {}),
59
+ ...(entry.resolved_ref !== undefined
60
+ ? { resolved_ref: entry.resolved_ref }
61
+ : {}),
62
+ ...(entry.resolved_commit !== undefined
63
+ ? { resolved_commit: entry.resolved_commit }
64
+ : {}),
65
+ })),
66
+ },
67
+ },
68
+ worktrees: { ...registry.worktrees },
69
+ };
70
+ }
71
+ /** Replaces one worktree entry in the registry while preserving all others. */
72
+ function upsertWorktreeState(registry, worktreeId, worktreeState) {
73
+ if (!(worktreeState.repo_fingerprint in registry.repos)) {
74
+ throw new Error(`worktrees.${worktreeId}.repo_fingerprint must reference a repository entry`);
75
+ }
76
+ return {
77
+ version: 1,
78
+ repos: { ...registry.repos },
79
+ worktrees: {
80
+ ...registry.worktrees,
81
+ [worktreeId]: cloneWorktreeState(worktreeState),
82
+ },
83
+ };
84
+ }
85
+ /** Removes one worktree entry from the registry. */
86
+ function removeWorktreeState(registry, worktreeId) {
87
+ if (!(worktreeId in registry.worktrees)) {
88
+ return {
89
+ version: 1,
90
+ repos: { ...registry.repos },
91
+ worktrees: { ...registry.worktrees },
92
+ };
93
+ }
94
+ const worktrees = { ...registry.worktrees };
95
+ delete worktrees[worktreeId];
96
+ return {
97
+ version: 1,
98
+ repos: { ...registry.repos },
99
+ worktrees,
100
+ };
101
+ }
102
+ /** Returns managed files and directories in a safe removal order. */
103
+ function listManagedPathsForRemoval(state) {
104
+ return [...state.files]
105
+ .sort(compareRemovalPath)
106
+ .concat([...(state.directories ?? [])].sort(compareRemovalPath));
107
+ }
108
+ /** Validates and normalizes raw registry JSON into the typed schema. */
109
+ function parseRegistry(input) {
110
+ const registry = expectRecord(input, "registry");
111
+ if (registry.version !== 1) {
112
+ throw new Error(`registry.version must be 1 — found ${String(registry.version)}; repair or remove the registry file`);
113
+ }
114
+ const reposInput = expectRecord(registry.repos, "repos");
115
+ const worktreesInput = expectRecord(registry.worktrees, "worktrees");
116
+ const repos = Object.fromEntries(Object.entries(reposInput).map(([repoFingerprint, value]) => [
117
+ repoFingerprint,
118
+ parseRepoState(value, `repos.${repoFingerprint}`),
119
+ ]));
120
+ const worktrees = Object.fromEntries(Object.entries(worktreesInput).map(([worktreeId, value]) => [
121
+ worktreeId,
122
+ parseWorktreeState(value, `worktrees.${worktreeId}`),
123
+ ]));
124
+ for (const [worktreeId, worktree] of Object.entries(worktrees)) {
125
+ if (!(worktree.repo_fingerprint in repos)) {
126
+ throw new Error(`worktrees.${worktreeId}.repo_fingerprint must reference a repository entry`);
127
+ }
128
+ }
129
+ const globalState = registry.global !== undefined
130
+ ? parseGlobalState(registry.global, "global")
131
+ : undefined;
132
+ return {
133
+ version: 1,
134
+ repos,
135
+ worktrees,
136
+ ...(globalState !== undefined ? { global: globalState } : {}),
137
+ };
138
+ }
139
+ function parseRepoState(input, label) {
140
+ const repo = expectRecord(input, label);
141
+ return {
142
+ repo_root: expectAbsolutePath(repo.repo_root, `${label}.repo_root`),
143
+ desired_state: parseDesiredState(repo.desired_state, `${label}.desired_state`),
144
+ };
145
+ }
146
+ function parseDesiredState(input, label) {
147
+ return expectArray(input, label).map((entry, index) => parseDesiredBundleEntry(entry, `${label}[${index}]`));
148
+ }
149
+ function parseDesiredBundleEntry(input, label) {
150
+ const entry = expectRecord(input, label);
151
+ const bundle = expectNonEmptyString(entry.bundle, `${label}.bundle`);
152
+ const source = entry.source === undefined
153
+ ? undefined
154
+ : expectNonEmptyString(entry.source, `${label}.source`);
155
+ const tools = entry.tools === undefined
156
+ ? undefined
157
+ : expectArray(entry.tools, `${label}.tools`).map((value, index) => {
158
+ const name = expectNonEmptyString(value, `${label}.tools[${index}]`);
159
+ if (!isToolName(name)) {
160
+ throw new Error(`${label}.tools[${index}] must be one of: ${Array.from(KNOWN_TOOL_NAMES).join(", ")}`);
161
+ }
162
+ return name;
163
+ });
164
+ const protocol = expectProtocol(entry.protocol, `${label}.protocol`);
165
+ const items = entry.items === undefined
166
+ ? undefined
167
+ : expectArray(entry.items, `${label}.items`).map((value, index) => (0, bundle_items_1.normalizeBundleItemSelector)(expectNonEmptyString(value, `${label}.items[${index}]`)));
168
+ const ref = entry.ref === undefined
169
+ ? undefined
170
+ : expectNonEmptyString(entry.ref, `${label}.ref`);
171
+ const resolvedRef = entry.resolved_ref === undefined
172
+ ? undefined
173
+ : expectNonEmptyString(entry.resolved_ref, `${label}.resolved_ref`);
174
+ const resolvedCommit = entry.resolved_commit === undefined
175
+ ? undefined
176
+ : expectGitObjectId(entry.resolved_commit, `${label}.resolved_commit`);
177
+ return {
178
+ bundle,
179
+ ...(source !== undefined ? { source } : {}),
180
+ ...(tools !== undefined ? { tools } : {}),
181
+ ...(items !== undefined ? { items } : {}),
182
+ protocol,
183
+ ...(ref !== undefined ? { ref } : {}),
184
+ ...(resolvedRef !== undefined ? { resolved_ref: resolvedRef } : {}),
185
+ ...(resolvedCommit !== undefined
186
+ ? { resolved_commit: resolvedCommit }
187
+ : {}),
188
+ };
189
+ }
190
+ function parseWorktreeState(input, label) {
191
+ const worktree = expectRecord(input, label);
192
+ return {
193
+ repo_fingerprint: expectNonEmptyString(worktree.repo_fingerprint, `${label}.repo_fingerprint`),
194
+ path: expectAbsolutePath(worktree.path, `${label}.path`),
195
+ materialized_state: parseMaterializedState(worktree.materialized_state, `${label}.materialized_state`),
196
+ shadowed_files: parseShadowedFiles(worktree.shadowed_files, `${label}.shadowed_files`),
197
+ };
198
+ }
199
+ function parseMaterializedState(input, label) {
200
+ const state = expectRecord(input, label);
201
+ const bundlesInput = expectRecord(state.bundles, `${label}.bundles`);
202
+ const bundles = Object.fromEntries(Object.entries(bundlesInput).map(([bundleName, bundleValue]) => [
203
+ bundleName,
204
+ parseMaterializedBundleState(bundleValue, `${label}.bundles.${bundleName}`),
205
+ ]));
206
+ const rootInstructionBaseContents = state.root_instruction_base_contents === undefined
207
+ ? undefined
208
+ : parseRootInstructionBaseContents(state.root_instruction_base_contents, `${label}.root_instruction_base_contents`, buildWorktreeRootInstructionAllowedPaths());
209
+ return {
210
+ bundles,
211
+ exclude_configured: expectBoolean(state.exclude_configured, `${label}.exclude_configured`),
212
+ ...(rootInstructionBaseContents !== undefined
213
+ ? { root_instruction_base_contents: rootInstructionBaseContents }
214
+ : {}),
215
+ };
216
+ }
217
+ function parseMaterializedBundleState(input, label) {
218
+ const bundle = expectRecord(input, label);
219
+ const source = bundle.source === undefined
220
+ ? undefined
221
+ : expectNonEmptyString(bundle.source, `${label}.source`);
222
+ const resolvedCommit = bundle.resolved_commit === undefined
223
+ ? undefined
224
+ : expectGitObjectId(bundle.resolved_commit, `${label}.resolved_commit`);
225
+ const toolsInput = expectRecord(bundle.tools, `${label}.tools`);
226
+ const tools = Object.fromEntries(Object.entries(toolsInput).map(([toolName, toolValue]) => {
227
+ if (!isToolName(toolName)) {
228
+ throw new Error(`${label}.tools.${toolName} must be one of: ${Array.from(KNOWN_TOOL_NAMES).join(", ")}`);
229
+ }
230
+ return [
231
+ toolName,
232
+ parseMaterializedToolState(toolValue, `${label}.tools.${toolName}`),
233
+ ];
234
+ }));
235
+ return {
236
+ ...(source !== undefined ? { source } : {}),
237
+ ...(resolvedCommit !== undefined
238
+ ? { resolved_commit: resolvedCommit }
239
+ : {}),
240
+ tools,
241
+ };
242
+ }
243
+ function parseMaterializedToolState(input, label) {
244
+ const toolState = expectRecord(input, label);
245
+ const files = expectArray(toolState.files, `${label}.files`).map((value, index) => expectRelativePath(value, `${label}.files[${index}]`));
246
+ const fileFingerprints = toolState.file_fingerprints === undefined
247
+ ? undefined
248
+ : parseFileFingerprints(toolState.file_fingerprints, files, `${label}.file_fingerprints`);
249
+ const directories = toolState.directories === undefined
250
+ ? undefined
251
+ : expectArray(toolState.directories, `${label}.directories`).map((value, index) => expectRelativePath(value, `${label}.directories[${index}]`));
252
+ const items = toolState.items === undefined
253
+ ? undefined
254
+ : expectArray(toolState.items, `${label}.items`).map((value, index) => (0, bundle_items_1.normalizeBundleItemSelector)(expectNonEmptyString(value, `${label}.items[${index}]`)));
255
+ return {
256
+ files,
257
+ ...(fileFingerprints === undefined
258
+ ? {}
259
+ : { file_fingerprints: fileFingerprints }),
260
+ ...(directories === undefined ? {} : { directories }),
261
+ ...(items === undefined ? {} : { items }),
262
+ };
263
+ }
264
+ function parseShadowedFiles(input, label) {
265
+ if (input === undefined) {
266
+ return {};
267
+ }
268
+ const record = expectRecord(input, label);
269
+ return Object.fromEntries(Object.entries(record).map(([relativePath, value]) => [
270
+ expectRelativePath(relativePath, `${label}.${relativePath}`),
271
+ parseShadowedFileState(value, `${label}.${relativePath}`),
272
+ ]));
273
+ }
274
+ function parseShadowedFileState(input, label) {
275
+ const shadowedFile = expectRecord(input, label);
276
+ const tool = expectNonEmptyString(shadowedFile.tool, `${label}.tool`);
277
+ if (!isToolName(tool)) {
278
+ throw new Error(`${label}.tool must be one of: ${Array.from(KNOWN_TOOL_NAMES).join(", ")}`);
279
+ }
280
+ return {
281
+ tool,
282
+ bundle: expectNonEmptyString(shadowedFile.bundle, `${label}.bundle`),
283
+ strategy: expectShadowStrategy(shadowedFile.strategy, `${label}.strategy`),
284
+ base_blob: expectGitObjectId(shadowedFile.base_blob, `${label}.base_blob`),
285
+ overlay: expectNonEmptyString(shadowedFile.overlay, `${label}.overlay`),
286
+ overlay_fingerprint: expectNonEmptyString(shadowedFile.overlay_fingerprint, `${label}.overlay_fingerprint`),
287
+ rendered_fingerprint: expectNonEmptyString(shadowedFile.rendered_fingerprint, `${label}.rendered_fingerprint`),
288
+ skip_worktree: expectBoolean(shadowedFile.skip_worktree, `${label}.skip_worktree`),
289
+ };
290
+ }
291
+ function sortRegistry(registry) {
292
+ return {
293
+ version: 1,
294
+ repos: Object.fromEntries(Object.entries(registry.repos)
295
+ .sort(([left], [right]) => left.localeCompare(right))
296
+ .map(([repoFingerprint, repoState]) => [
297
+ repoFingerprint,
298
+ {
299
+ ...repoState,
300
+ desired_state: repoState.desired_state.map((entry) => ({
301
+ bundle: entry.bundle,
302
+ ...(entry.source !== undefined ? { source: entry.source } : {}),
303
+ ...(entry.tools !== undefined ? { tools: [...entry.tools] } : {}),
304
+ ...(entry.items !== undefined ? { items: [...entry.items] } : {}),
305
+ protocol: entry.protocol,
306
+ ...(entry.ref !== undefined ? { ref: entry.ref } : {}),
307
+ ...(entry.resolved_ref !== undefined
308
+ ? { resolved_ref: entry.resolved_ref }
309
+ : {}),
310
+ ...(entry.resolved_commit !== undefined
311
+ ? { resolved_commit: entry.resolved_commit }
312
+ : {}),
313
+ })),
314
+ },
315
+ ])),
316
+ worktrees: Object.fromEntries(Object.entries(registry.worktrees)
317
+ .sort(([left], [right]) => left.localeCompare(right))
318
+ .map(([worktreeId, worktreeState]) => [
319
+ worktreeId,
320
+ cloneWorktreeState(worktreeState),
321
+ ])),
322
+ ...(registry.global !== undefined
323
+ ? {
324
+ global: {
325
+ desired_state: registry.global.desired_state.map((entry) => ({
326
+ ...entry,
327
+ })),
328
+ materialized_state: {
329
+ bundles: Object.fromEntries(Object.entries(registry.global.materialized_state.bundles)
330
+ .sort(([left], [right]) => left.localeCompare(right))
331
+ .map(([name, state]) => [
332
+ name,
333
+ cloneMaterializedBundleState(state),
334
+ ])),
335
+ ...(registry.global.materialized_state
336
+ .root_instruction_base_contents !== undefined
337
+ ? {
338
+ root_instruction_base_contents: {
339
+ ...registry.global.materialized_state
340
+ .root_instruction_base_contents,
341
+ },
342
+ }
343
+ : {}),
344
+ },
345
+ },
346
+ }
347
+ : {}),
348
+ };
349
+ }
350
+ function cloneWorktreeState(worktreeState) {
351
+ return {
352
+ ...worktreeState,
353
+ materialized_state: {
354
+ bundles: Object.fromEntries(Object.entries(worktreeState.materialized_state.bundles).map(([bundleName, bundleState]) => [
355
+ bundleName,
356
+ cloneMaterializedBundleState(bundleState),
357
+ ])),
358
+ exclude_configured: worktreeState.materialized_state.exclude_configured,
359
+ ...(worktreeState.materialized_state.root_instruction_base_contents !==
360
+ undefined
361
+ ? {
362
+ root_instruction_base_contents: {
363
+ ...worktreeState.materialized_state
364
+ .root_instruction_base_contents,
365
+ },
366
+ }
367
+ : {}),
368
+ },
369
+ shadowed_files: Object.fromEntries(Object.entries(worktreeState.shadowed_files)
370
+ .sort(([left], [right]) => left.localeCompare(right))
371
+ .map(([relativePath, shadowedFile]) => [
372
+ relativePath,
373
+ { ...shadowedFile },
374
+ ])),
375
+ };
376
+ }
377
+ function parseRootInstructionBaseContents(input, label, allowedPaths) {
378
+ const record = expectRecord(input, label);
379
+ return Object.fromEntries(Object.entries(record).map(([filePath, value]) => {
380
+ if (!allowedPaths.has(filePath)) {
381
+ throw new Error(`${label}.${filePath} must be a known root instruction path`);
382
+ }
383
+ if (typeof value !== "string") {
384
+ throw new Error(`${label}.${filePath} must be a string`);
385
+ }
386
+ return [filePath, value];
387
+ }));
388
+ }
389
+ function buildWorktreeRootInstructionAllowedPaths() {
390
+ const paths = new Set();
391
+ for (const def of (0, tool_mapping_1.listToolDefinitions)()) {
392
+ if (def.targets.root_instruction)
393
+ paths.add(def.targets.root_instruction.path);
394
+ }
395
+ return paths;
396
+ }
397
+ function buildGlobalRootInstructionAllowedPaths() {
398
+ const paths = new Set();
399
+ for (const def of (0, tool_mapping_1.listGlobalToolDefinitions)()) {
400
+ if (def.targets.root_instruction)
401
+ paths.add(def.targets.root_instruction.path);
402
+ }
403
+ return paths;
404
+ }
405
+ function parseGlobalState(input, label) {
406
+ const state = expectRecord(input, label);
407
+ return {
408
+ desired_state: parseDesiredState(state.desired_state, `${label}.desired_state`),
409
+ materialized_state: parseGlobalMaterializedState(state.materialized_state, `${label}.materialized_state`),
410
+ };
411
+ }
412
+ function parseGlobalMaterializedState(input, label) {
413
+ const state = expectRecord(input, label);
414
+ const bundlesInput = expectRecord(state.bundles, `${label}.bundles`);
415
+ const bundles = Object.fromEntries(Object.entries(bundlesInput).map(([bundleName, bundleValue]) => [
416
+ bundleName,
417
+ parseMaterializedBundleState(bundleValue, `${label}.bundles.${bundleName}`),
418
+ ]));
419
+ const rootInstructionBaseContents = state.root_instruction_base_contents === undefined
420
+ ? undefined
421
+ : parseRootInstructionBaseContents(state.root_instruction_base_contents, `${label}.root_instruction_base_contents`, buildGlobalRootInstructionAllowedPaths());
422
+ return {
423
+ bundles,
424
+ ...(rootInstructionBaseContents !== undefined
425
+ ? { root_instruction_base_contents: rootInstructionBaseContents }
426
+ : {}),
427
+ };
428
+ }
429
+ function upsertGlobalState(registry, globalState) {
430
+ return {
431
+ version: 1,
432
+ repos: { ...registry.repos },
433
+ worktrees: { ...registry.worktrees },
434
+ global: {
435
+ desired_state: globalState.desired_state.map((entry) => ({ ...entry })),
436
+ materialized_state: {
437
+ bundles: Object.fromEntries(Object.entries(globalState.materialized_state.bundles).map(([name, state]) => [name, cloneMaterializedBundleState(state)])),
438
+ ...(globalState.materialized_state.root_instruction_base_contents !==
439
+ undefined
440
+ ? {
441
+ root_instruction_base_contents: {
442
+ ...globalState.materialized_state
443
+ .root_instruction_base_contents,
444
+ },
445
+ }
446
+ : {}),
447
+ },
448
+ },
449
+ };
450
+ }
451
+ function cloneMaterializedBundleState(state) {
452
+ return {
453
+ ...(state.source !== undefined ? { source: state.source } : {}),
454
+ ...(state.resolved_commit !== undefined
455
+ ? { resolved_commit: state.resolved_commit }
456
+ : {}),
457
+ tools: Object.fromEntries(Object.entries(state.tools).map(([toolName, toolState]) => [
458
+ toolName,
459
+ {
460
+ files: [...toolState.files],
461
+ ...(toolState.file_fingerprints !== undefined
462
+ ? { file_fingerprints: { ...toolState.file_fingerprints } }
463
+ : {}),
464
+ ...(toolState.directories !== undefined
465
+ ? { directories: [...toolState.directories] }
466
+ : {}),
467
+ ...(toolState.items !== undefined
468
+ ? { items: [...toolState.items] }
469
+ : {}),
470
+ },
471
+ ])),
472
+ };
473
+ }
474
+ function compareRemovalPath(left, right) {
475
+ const depthDifference = (0, fs_utils_1.pathDepth)(right) - (0, fs_utils_1.pathDepth)(left);
476
+ return depthDifference !== 0 ? depthDifference : left.localeCompare(right);
477
+ }
478
+ function expectRecord(input, label) {
479
+ if (!input || typeof input !== "object" || Array.isArray(input)) {
480
+ throw new Error(`${label} must be an object`);
481
+ }
482
+ return input;
483
+ }
484
+ function expectArray(input, label) {
485
+ if (!Array.isArray(input)) {
486
+ throw new Error(`${label} must be an array`);
487
+ }
488
+ return input;
489
+ }
490
+ function expectNonEmptyString(input, label) {
491
+ if (typeof input !== "string" || input.trim() === "") {
492
+ throw new Error(`${label} must be a non-empty string`);
493
+ }
494
+ return input;
495
+ }
496
+ function expectAbsolutePath(input, label) {
497
+ const value = expectNonEmptyString(input, label);
498
+ if (!node_path_1.default.isAbsolute(value)) {
499
+ throw new Error(`${label} must be an absolute path`);
500
+ }
501
+ return value;
502
+ }
503
+ function expectRelativePath(input, label) {
504
+ const value = expectNonEmptyString(input, label);
505
+ const normalized = node_path_1.default.normalize(value);
506
+ if (node_path_1.default.isAbsolute(value) ||
507
+ normalized === "." ||
508
+ normalized.startsWith("..")) {
509
+ throw new Error(`${label} must be a relative path`);
510
+ }
511
+ return normalized;
512
+ }
513
+ function expectBoolean(input, label) {
514
+ if (typeof input !== "boolean") {
515
+ throw new Error(`${label} must be a boolean`);
516
+ }
517
+ return input;
518
+ }
519
+ function expectProtocol(input, label) {
520
+ if (input !== "https" && input !== "ssh") {
521
+ throw new Error(`${label} must be "https" or "ssh"`);
522
+ }
523
+ return input;
524
+ }
525
+ function expectShadowStrategy(input, label) {
526
+ if (input !== "append" && input !== "prepend" && input !== "replace") {
527
+ throw new Error(`${label} must be "append", "prepend", or "replace"`);
528
+ }
529
+ return input;
530
+ }
531
+ function expectGitObjectId(input, label) {
532
+ const value = expectNonEmptyString(input, label);
533
+ if (!/^[0-9a-f]{7,40}$/i.test(value)) {
534
+ throw new Error(`${label} must be a 7-40 character hexadecimal Git object id`);
535
+ }
536
+ return value;
537
+ }
538
+ function parseFileFingerprints(input, files, label) {
539
+ const record = expectRecord(input, label);
540
+ const knownFiles = new Set(files);
541
+ return Object.fromEntries(Object.entries(record).map(([relativePath, fingerprint]) => {
542
+ if (!knownFiles.has(relativePath)) {
543
+ throw new Error(`${label}.${relativePath} must reference a tracked file`);
544
+ }
545
+ return [
546
+ relativePath,
547
+ expectNonEmptyString(fingerprint, `${label}.${relativePath}`),
548
+ ];
549
+ }));
550
+ }
551
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type BundleItemSelector } from "./bundle-items";
2
+ import type { BundleManifest } from "./bundle-manifest";
3
+ import type { ToolName } from "./tool-mapping";
4
+ /** Collects all translated root-instruction parts and composes them per output path. */
5
+ export declare function collectComposedRootInstructionContents(options: {
6
+ bundleDir: string;
7
+ manifest: BundleManifest;
8
+ toolNames: ToolName[];
9
+ targetPaths?: Set<string>;
10
+ itemSelectors?: BundleItemSelector[];
11
+ }): Record<string, string>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.collectComposedRootInstructionContents = collectComposedRootInstructionContents;
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const bundle_items_1 = require("./bundle-items");
10
+ const bundle_translation_1 = require("./bundle-translation");
11
+ const root_instruction_render_1 = require("./root-instruction-render");
12
+ /** Reads and translates one tool's root-instruction source files by target path. */
13
+ function collectRootInstructionContents(options) {
14
+ const target = options.manifest.tools[options.toolName]?.root_instruction;
15
+ if (!target) {
16
+ return {};
17
+ }
18
+ const sourceFile = node_path_1.default.join(options.bundleDir, target.path);
19
+ const source = node_fs_1.default.readFileSync(sourceFile, "utf8");
20
+ return (0, bundle_translation_1.translateRootInstruction)({
21
+ targetTool: (0, bundle_translation_1.toTranslationToolName)(options.toolName),
22
+ source,
23
+ });
24
+ }
25
+ /** Collects all translated root-instruction parts and composes them per output path. */
26
+ function collectComposedRootInstructionContents(options) {
27
+ if (!(0, bundle_items_1.isRootInstructionItemSelected)(options.itemSelectors)) {
28
+ return {};
29
+ }
30
+ const partsByPath = new Map();
31
+ const seenSourceTargets = new Set();
32
+ for (const toolName of options.toolNames) {
33
+ const sourcePath = options.manifest.tools[toolName]?.root_instruction?.path;
34
+ if (!sourcePath) {
35
+ continue;
36
+ }
37
+ const translated = collectRootInstructionContents({
38
+ bundleDir: options.bundleDir,
39
+ manifest: options.manifest,
40
+ toolName,
41
+ });
42
+ for (const [repoRelativePath, content] of Object.entries(translated)) {
43
+ if (options.targetPaths && !options.targetPaths.has(repoRelativePath)) {
44
+ continue;
45
+ }
46
+ const sourceTargetKey = `${repoRelativePath}:${sourcePath}`;
47
+ if (seenSourceTargets.has(sourceTargetKey)) {
48
+ continue;
49
+ }
50
+ seenSourceTargets.add(sourceTargetKey);
51
+ const existingParts = partsByPath.get(repoRelativePath) ?? [];
52
+ existingParts.push(content);
53
+ partsByPath.set(repoRelativePath, existingParts);
54
+ }
55
+ }
56
+ return Object.fromEntries(Array.from(partsByPath.entries()).map(([repoRelativePath, parts]) => [
57
+ repoRelativePath,
58
+ (0, root_instruction_render_1.composeRootInstructionContent)(parts),
59
+ ]));
60
+ }
61
+ //# sourceMappingURL=root-instruction-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-instruction-content.js","sourceRoot":"","sources":["../src/root-instruction-content.ts"],"names":[],"mappings":";;;;;AAoCA,wFAmDC;AAvFD,sDAAyB;AACzB,0DAA6B;AAC7B,iDAGwB;AAExB,6DAG8B;AAC9B,uEAA0E;AAG1E,oFAAoF;AACpF,SAAS,8BAA8B,CAAC,OAIvC;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE1E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,iBAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEnD,OAAO,IAAA,6CAAwB,EAAC;QAC9B,UAAU,EAAE,IAAA,0CAAqB,EAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,SAAgB,sCAAsC,CAAC,OAMtD;IACC,IAAI,CAAC,IAAA,4CAA6B,EAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;IAChD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE5C,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC;QAE5E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,8BAA8B,CAAC;YAChD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,QAAQ;SACT,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACrE,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,GAAG,gBAAgB,IAAI,UAAU,EAAE,CAAC;YAE5D,IAAI,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACvC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;YAC9D,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACnE,gBAAgB;QAChB,IAAA,uDAA6B,EAAC,KAAK,CAAC;KACrC,CAAC,CACH,CAAC;AACJ,CAAC"}