@corvus-tools/skill-manager-core 0.1.0 → 0.2.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.
@@ -1,9 +1,23 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import { promises as fs } from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import { parseSkillpackConfig } from '../config/configSchema.js';
4
5
  import { upsertSkillpackLockEntry } from '../lock/lockStore.js';
5
6
  import { resolveUserPath } from '../paths.js';
7
+ import { discoverSkillsFromCheckout } from '../skills/skillDiscovery.js';
6
8
  import { runGit } from './gitRunner.js';
9
+ export function resolveSkillpackSnapshotLayout(config, options = {}) {
10
+ const currentPath = resolveUserPath(config.checkoutPath, options.homeDir);
11
+ const skillpackRootPath = path.dirname(currentPath);
12
+ return {
13
+ skillpackRootPath,
14
+ revisionsPath: path.join(skillpackRootPath, 'revisions'),
15
+ currentPath
16
+ };
17
+ }
18
+ export function skillpackRevisionRepoPath(layout, commitHash) {
19
+ return path.join(layout.revisionsPath, assertSafeCommitHash(commitHash), 'repo');
20
+ }
7
21
  export async function inspectSkillpackCheckout(checkoutPath, options = {}) {
8
22
  const git = options.git ?? runGit;
9
23
  const resolvedCheckoutPath = resolveUserPath(checkoutPath, options.homeDir);
@@ -32,7 +46,7 @@ export async function inspectSkillpackCheckout(checkoutPath, options = {}) {
32
46
  }
33
47
  try {
34
48
  await git(['rev-parse', '--is-inside-work-tree'], { cwd: resolvedCheckoutPath });
35
- const commitHash = (await git(['rev-parse', 'HEAD'], { cwd: resolvedCheckoutPath })).stdout.trim();
49
+ const commitHash = assertSafeCommitHash((await git(['rev-parse', 'HEAD'], { cwd: resolvedCheckoutPath })).stdout.trim());
36
50
  const statusOutput = (await git(['-c', 'core.optionalLocks=false', 'status', '--porcelain=v1', '--untracked-files=all'], { cwd: resolvedCheckoutPath })).stdout;
37
51
  const dirtyFiles = statusOutput
38
52
  .split('\n')
@@ -62,72 +76,257 @@ export async function inspectSkillpackCheckout(checkoutPath, options = {}) {
62
76
  };
63
77
  }
64
78
  }
79
+ export async function inspectSkillpackRemoteUpdate(configInput, options = {}) {
80
+ const config = normalizeSkillpackConfig(configInput, options.homeDir);
81
+ const git = options.git ?? runGit;
82
+ const inspectOptions = options.homeDir === undefined ? { git } : { homeDir: options.homeDir, git };
83
+ const activeInspection = await inspectSkillpackCheckout(config.checkoutPath, inspectOptions);
84
+ if (!activeInspection.exists) {
85
+ return {
86
+ status: 'active-missing',
87
+ checkoutPath: activeInspection.checkoutPath,
88
+ updateAvailable: false,
89
+ message: 'Active skillpack snapshot is missing; setup can create the initial revision.'
90
+ };
91
+ }
92
+ if (!activeInspection.readable || activeInspection.commitHash === undefined) {
93
+ return {
94
+ status: 'active-unreadable',
95
+ checkoutPath: activeInspection.checkoutPath,
96
+ updateAvailable: false,
97
+ message: `Active skillpack snapshot is not readable: ${activeInspection.message}.`
98
+ };
99
+ }
100
+ try {
101
+ const remoteCommitHash = await readRemoteCommitHash(config, git);
102
+ const updateAvailable = remoteCommitHash !== activeInspection.commitHash;
103
+ return {
104
+ status: updateAvailable ? 'update-available' : 'up-to-date',
105
+ checkoutPath: activeInspection.checkoutPath,
106
+ activeCommitHash: activeInspection.commitHash,
107
+ remoteCommitHash,
108
+ updateAvailable,
109
+ message: updateAvailable ?
110
+ `Remote ${config.branch} is at ${shortCommit(remoteCommitHash)}; active snapshot is ${shortCommit(activeInspection.commitHash)}.` :
111
+ `Active snapshot is up to date with ${config.branch}.`
112
+ };
113
+ }
114
+ catch (error) {
115
+ return {
116
+ status: 'remote-unavailable',
117
+ checkoutPath: activeInspection.checkoutPath,
118
+ activeCommitHash: activeInspection.commitHash,
119
+ updateAvailable: false,
120
+ message: `Remote update check failed: ${error instanceof Error ? error.message : String(error)}.`
121
+ };
122
+ }
123
+ }
124
+ export async function prepareSkillpackUpdatePreview(options) {
125
+ const config = normalizeSkillpackConfig(options.config, options.homeDir);
126
+ const git = options.git ?? runGit;
127
+ const updateInspection = await inspectSkillpackRemoteUpdate(config, {
128
+ ...(options.homeDir === undefined ? {} : { homeDir: options.homeDir }),
129
+ git
130
+ });
131
+ if (updateInspection.status !== 'update-available' ||
132
+ updateInspection.activeCommitHash === undefined ||
133
+ updateInspection.remoteCommitHash === undefined) {
134
+ return {
135
+ status: 'no-update',
136
+ checkoutPath: updateInspection.checkoutPath,
137
+ ...(updateInspection.activeCommitHash === undefined ? {} : { activeCommitHash: updateInspection.activeCommitHash }),
138
+ ...(updateInspection.remoteCommitHash === undefined ? {} : { remoteCommitHash: updateInspection.remoteCommitHash }),
139
+ addedSkillIds: [],
140
+ removedSkillIds: [],
141
+ changedSkillIds: [],
142
+ changedFiles: [],
143
+ message: updateInspection.message
144
+ };
145
+ }
146
+ try {
147
+ const layout = resolveSkillpackSnapshotLayout(config, options);
148
+ const snapshot = await ensureRevisionSnapshot({
149
+ config,
150
+ layout,
151
+ git,
152
+ expectedCommitHash: updateInspection.remoteCommitHash
153
+ });
154
+ const currentDiscovery = await discoverSkillsFromCheckout(config.checkoutPath);
155
+ const candidateDiscovery = await discoverSkillsFromCheckout(snapshot.repoPath);
156
+ const changedFiles = await readChangedFiles({
157
+ git,
158
+ repoPath: snapshot.repoPath,
159
+ activeCommitHash: updateInspection.activeCommitHash,
160
+ remoteCommitHash: updateInspection.remoteCommitHash
161
+ });
162
+ const summary = summarizeSkillChanges({
163
+ currentSkills: currentDiscovery.skills,
164
+ candidateSkills: candidateDiscovery.skills,
165
+ changedFiles
166
+ });
167
+ return {
168
+ status: 'update-preview-ready',
169
+ checkoutPath: config.checkoutPath,
170
+ activeCommitHash: updateInspection.activeCommitHash,
171
+ remoteCommitHash: updateInspection.remoteCommitHash,
172
+ candidateRevisionPath: snapshot.repoPath,
173
+ addedSkillIds: summary.addedSkillIds,
174
+ removedSkillIds: summary.removedSkillIds,
175
+ changedSkillIds: summary.changedSkillIds,
176
+ changedFiles,
177
+ message: snapshot.created ? 'Downloaded update preview snapshot.' : 'Loaded existing update preview snapshot.'
178
+ };
179
+ }
180
+ catch (error) {
181
+ return {
182
+ status: 'preview-failed',
183
+ checkoutPath: config.checkoutPath,
184
+ activeCommitHash: updateInspection.activeCommitHash,
185
+ remoteCommitHash: updateInspection.remoteCommitHash,
186
+ addedSkillIds: [],
187
+ removedSkillIds: [],
188
+ changedSkillIds: [],
189
+ changedFiles: [],
190
+ message: error instanceof Error ? error.message : String(error)
191
+ };
192
+ }
193
+ }
194
+ export async function applySkillpackUpdate(options) {
195
+ const config = normalizeSkillpackConfig(options.config, options.homeDir);
196
+ const git = options.git ?? runGit;
197
+ const updateInspection = await inspectSkillpackRemoteUpdate(config, {
198
+ ...(options.homeDir === undefined ? {} : { homeDir: options.homeDir }),
199
+ git
200
+ });
201
+ if (updateInspection.status !== 'update-available' ||
202
+ updateInspection.activeCommitHash === undefined ||
203
+ updateInspection.remoteCommitHash === undefined) {
204
+ return {
205
+ status: 'no-update',
206
+ checkoutPath: updateInspection.checkoutPath,
207
+ ...(updateInspection.activeCommitHash === undefined ? {} : { previousCommitHash: updateInspection.activeCommitHash }),
208
+ message: updateInspection.message
209
+ };
210
+ }
211
+ try {
212
+ const layout = resolveSkillpackSnapshotLayout(config, options);
213
+ const snapshot = await ensureRevisionSnapshot({
214
+ config,
215
+ layout,
216
+ git,
217
+ expectedCommitHash: updateInspection.remoteCommitHash
218
+ });
219
+ await activateRevisionSnapshot({
220
+ currentPath: layout.currentPath,
221
+ repoPath: snapshot.repoPath
222
+ });
223
+ const lockPath = await recordSkillpackLock({
224
+ config,
225
+ managerStateDir: options.managerStateDir,
226
+ commitHash: snapshot.commitHash,
227
+ dirty: false,
228
+ activeRevisionPath: snapshot.repoPath,
229
+ remoteCommitHash: updateInspection.remoteCommitHash,
230
+ updateAvailable: false,
231
+ ...(options.now === undefined ? {} : { now: options.now })
232
+ });
233
+ return {
234
+ status: 'update-applied',
235
+ checkoutPath: layout.currentPath,
236
+ activeRevisionPath: snapshot.repoPath,
237
+ lockPath,
238
+ previousCommitHash: updateInspection.activeCommitHash,
239
+ commitHash: snapshot.commitHash,
240
+ message: `Activated skillpack revision ${shortCommit(snapshot.commitHash)}.`
241
+ };
242
+ }
243
+ catch (error) {
244
+ return {
245
+ status: 'update-failed',
246
+ checkoutPath: config.checkoutPath,
247
+ previousCommitHash: updateInspection.activeCommitHash,
248
+ remoteCommitHash: updateInspection.remoteCommitHash,
249
+ message: error instanceof Error ? error.message : String(error)
250
+ };
251
+ }
252
+ }
65
253
  export async function applyInitialSkillpackSetup(options) {
66
- const parsedConfig = parseSkillpackConfig(options.config);
67
- const checkoutPath = resolveUserPath(parsedConfig.checkoutPath, options.homeDir);
68
- const config = {
69
- ...parsedConfig,
70
- checkoutPath
71
- };
254
+ const config = normalizeSkillpackConfig(options.config, options.homeDir);
255
+ const layout = resolveSkillpackSnapshotLayout(config, options);
72
256
  const git = options.git ?? runGit;
73
257
  const inspectOptions = options.homeDir === undefined ? { git } : { homeDir: options.homeDir, git };
74
- const initialInspection = await inspectSkillpackCheckout(checkoutPath, inspectOptions);
258
+ const initialInspection = await inspectSkillpackCheckout(layout.currentPath, inspectOptions);
75
259
  if (initialInspection.status === 'checkout-missing') {
76
260
  try {
77
- await fs.mkdir(path.dirname(checkoutPath), { recursive: true });
78
- await git(['clone', '--branch', config.branch, '--single-branch', config.repositoryUrl, checkoutPath]);
79
- }
80
- catch (error) {
261
+ const snapshot = await ensureRevisionSnapshot({
262
+ config,
263
+ layout,
264
+ git,
265
+ ...(await remoteCommitOption(config, git))
266
+ });
267
+ await activateRevisionSnapshot({
268
+ currentPath: layout.currentPath,
269
+ repoPath: snapshot.repoPath
270
+ });
271
+ const clonedInspection = await inspectSkillpackCheckout(layout.currentPath, inspectOptions);
272
+ if (!clonedInspection.readable || clonedInspection.commitHash === undefined) {
273
+ return {
274
+ status: 'clone-failed',
275
+ config,
276
+ checkoutPath: layout.currentPath,
277
+ dirty: false,
278
+ dirtyFiles: [],
279
+ message: clonedInspection.message
280
+ };
281
+ }
282
+ const lockPath = await recordSkillpackLock({
283
+ config,
284
+ managerStateDir: options.managerStateDir,
285
+ commitHash: clonedInspection.commitHash,
286
+ dirty: clonedInspection.dirty,
287
+ activeRevisionPath: snapshot.repoPath,
288
+ remoteCommitHash: clonedInspection.commitHash,
289
+ updateAvailable: false,
290
+ ...(options.now === undefined ? {} : { now: options.now })
291
+ });
81
292
  return {
82
- status: 'clone-failed',
293
+ status: 'clone-complete',
83
294
  config,
84
- checkoutPath,
85
- dirty: false,
86
- dirtyFiles: [],
87
- message: error instanceof Error ? error.message : String(error)
295
+ checkoutPath: layout.currentPath,
296
+ activeRevisionPath: snapshot.repoPath,
297
+ lockPath,
298
+ commitHash: clonedInspection.commitHash,
299
+ dirty: clonedInspection.dirty,
300
+ dirtyFiles: clonedInspection.dirtyFiles,
301
+ message: 'Initial revision snapshot cloned and activated'
88
302
  };
89
303
  }
90
- const clonedInspection = await inspectSkillpackCheckout(checkoutPath, inspectOptions);
91
- if (!clonedInspection.readable || clonedInspection.commitHash === undefined) {
304
+ catch (error) {
92
305
  return {
93
306
  status: 'clone-failed',
94
307
  config,
95
- checkoutPath,
308
+ checkoutPath: layout.currentPath,
96
309
  dirty: false,
97
310
  dirtyFiles: [],
98
- message: clonedInspection.message
311
+ message: error instanceof Error ? error.message : String(error)
99
312
  };
100
313
  }
101
- const lockPath = await recordSkillpackLock({
102
- config,
103
- managerStateDir: options.managerStateDir,
104
- commitHash: clonedInspection.commitHash,
105
- dirty: clonedInspection.dirty,
106
- ...(options.now === undefined ? {} : { now: options.now })
107
- });
108
- return {
109
- status: 'clone-complete',
110
- config,
111
- checkoutPath,
112
- lockPath,
113
- commitHash: clonedInspection.commitHash,
114
- dirty: clonedInspection.dirty,
115
- dirtyFiles: clonedInspection.dirtyFiles,
116
- message: 'Initial clone complete'
117
- };
118
314
  }
119
315
  if (initialInspection.readable && initialInspection.commitHash !== undefined) {
316
+ const activeRevisionPath = await readCurrentLinkTarget(layout.currentPath);
120
317
  const lockPath = await recordSkillpackLock({
121
318
  config,
122
319
  managerStateDir: options.managerStateDir,
123
320
  commitHash: initialInspection.commitHash,
124
321
  dirty: initialInspection.dirty,
322
+ ...(activeRevisionPath === undefined ? {} : { activeRevisionPath }),
125
323
  ...(options.now === undefined ? {} : { now: options.now })
126
324
  });
127
325
  return {
128
326
  status: initialInspection.status,
129
327
  config,
130
- checkoutPath,
328
+ checkoutPath: layout.currentPath,
329
+ ...(activeRevisionPath === undefined ? {} : { activeRevisionPath }),
131
330
  lockPath,
132
331
  commitHash: initialInspection.commitHash,
133
332
  dirty: initialInspection.dirty,
@@ -138,12 +337,188 @@ export async function applyInitialSkillpackSetup(options) {
138
337
  return {
139
338
  status: initialInspection.status,
140
339
  config,
141
- checkoutPath,
340
+ checkoutPath: layout.currentPath,
142
341
  dirty: initialInspection.dirty,
143
342
  dirtyFiles: initialInspection.dirtyFiles,
144
343
  message: initialInspection.message
145
344
  };
146
345
  }
346
+ async function ensureRevisionSnapshot(options) {
347
+ const expectedCommitHash = options.expectedCommitHash === undefined ? undefined : assertSafeCommitHash(options.expectedCommitHash);
348
+ if (expectedCommitHash !== undefined) {
349
+ const expectedRepoPath = skillpackRevisionRepoPath(options.layout, expectedCommitHash);
350
+ if (await pathExists(expectedRepoPath)) {
351
+ await assertExistingRevisionMatches({
352
+ repoPath: expectedRepoPath,
353
+ expectedCommitHash,
354
+ git: options.git
355
+ });
356
+ return {
357
+ commitHash: expectedCommitHash,
358
+ repoPath: expectedRepoPath,
359
+ created: false
360
+ };
361
+ }
362
+ const expectedRevisionPath = path.dirname(expectedRepoPath);
363
+ const expectedRevisionStat = await lstatIfExists(expectedRevisionPath);
364
+ if (expectedRevisionStat !== undefined) {
365
+ throw new Error(`Revision path exists without a readable repo; refusing to repair ${expectedRevisionPath}.`);
366
+ }
367
+ await fs.mkdir(expectedRevisionPath, { recursive: true });
368
+ try {
369
+ await options.git([
370
+ 'clone',
371
+ '--branch',
372
+ options.config.branch,
373
+ '--single-branch',
374
+ options.config.repositoryUrl,
375
+ expectedRepoPath
376
+ ]);
377
+ await assertExistingRevisionMatches({
378
+ repoPath: expectedRepoPath,
379
+ expectedCommitHash,
380
+ git: options.git
381
+ });
382
+ return {
383
+ commitHash: expectedCommitHash,
384
+ repoPath: expectedRepoPath,
385
+ created: true
386
+ };
387
+ }
388
+ catch (error) {
389
+ await fs.rm(expectedRevisionPath, { recursive: true, force: true });
390
+ throw error;
391
+ }
392
+ }
393
+ await fs.mkdir(options.layout.revisionsPath, { recursive: true });
394
+ const temporaryRepoPath = path.join(options.layout.revisionsPath, `.tmp-${process.pid}-${randomUUID()}`);
395
+ try {
396
+ await options.git([
397
+ 'clone',
398
+ '--branch',
399
+ options.config.branch,
400
+ '--single-branch',
401
+ options.config.repositoryUrl,
402
+ temporaryRepoPath
403
+ ]);
404
+ const commitHash = assertSafeCommitHash((await options.git(['rev-parse', 'HEAD'], { cwd: temporaryRepoPath })).stdout.trim());
405
+ if (expectedCommitHash !== undefined && commitHash !== expectedCommitHash) {
406
+ throw new Error(`Remote branch moved while preparing snapshot: expected ${expectedCommitHash}, cloned ${commitHash}.`);
407
+ }
408
+ const repoPath = skillpackRevisionRepoPath(options.layout, commitHash);
409
+ if (await pathExists(repoPath)) {
410
+ await fs.rm(temporaryRepoPath, { recursive: true, force: true });
411
+ return {
412
+ commitHash,
413
+ repoPath,
414
+ created: false
415
+ };
416
+ }
417
+ await fs.mkdir(path.dirname(repoPath), { recursive: true });
418
+ await fs.rename(temporaryRepoPath, repoPath);
419
+ return {
420
+ commitHash,
421
+ repoPath,
422
+ created: true
423
+ };
424
+ }
425
+ catch (error) {
426
+ await fs.rm(temporaryRepoPath, { recursive: true, force: true });
427
+ throw error;
428
+ }
429
+ }
430
+ async function assertExistingRevisionMatches(options) {
431
+ const inspection = await inspectSkillpackCheckout(options.repoPath, { git: options.git });
432
+ if (!inspection.readable || inspection.commitHash !== options.expectedCommitHash) {
433
+ throw new Error(`Revision snapshot at ${options.repoPath} does not match expected commit ${options.expectedCommitHash}.`);
434
+ }
435
+ }
436
+ async function activateRevisionSnapshot(options) {
437
+ await fs.mkdir(path.dirname(options.currentPath), { recursive: true });
438
+ const currentStat = await lstatIfExists(options.currentPath);
439
+ if (currentStat !== undefined && !currentStat.isSymbolicLink()) {
440
+ throw new Error(`Refusing to replace non-link active skillpack path: ${options.currentPath}`);
441
+ }
442
+ if (currentStat?.isSymbolicLink() === true) {
443
+ await fs.unlink(options.currentPath);
444
+ }
445
+ const relativeTarget = path.relative(path.dirname(options.currentPath), options.repoPath);
446
+ const linkTarget = process.platform === 'win32' ? options.repoPath : relativeTarget;
447
+ await fs.symlink(linkTarget, options.currentPath, process.platform === 'win32' ? 'junction' : 'dir');
448
+ }
449
+ async function readRemoteCommitHash(config, git) {
450
+ const output = (await git(['ls-remote', config.repositoryUrl, `refs/heads/${config.branch}`])).stdout.trim();
451
+ const firstLine = output.split('\n').find((line) => line.trim() !== '');
452
+ if (firstLine === undefined) {
453
+ throw new Error(`No remote branch named ${config.branch} found.`);
454
+ }
455
+ return assertSafeCommitHash(firstLine.split(/\s+/)[0] ?? '');
456
+ }
457
+ async function remoteCommitOption(config, git) {
458
+ try {
459
+ return { expectedCommitHash: await readRemoteCommitHash(config, git) };
460
+ }
461
+ catch {
462
+ return {};
463
+ }
464
+ }
465
+ async function readChangedFiles(options) {
466
+ try {
467
+ const output = (await options.git(['diff', '--name-only', options.activeCommitHash, options.remoteCommitHash, '--', 'registry.json', 'skills'], { cwd: options.repoPath })).stdout;
468
+ return output
469
+ .split('\n')
470
+ .map((line) => line.trim())
471
+ .filter(Boolean)
472
+ .sort((left, right) => left.localeCompare(right));
473
+ }
474
+ catch {
475
+ return [];
476
+ }
477
+ }
478
+ function summarizeSkillChanges(options) {
479
+ const currentById = new Map(options.currentSkills.map((skill) => [skill.id, skill]));
480
+ const candidateById = new Map(options.candidateSkills.map((skill) => [skill.id, skill]));
481
+ const currentSkillIds = new Set(currentById.keys());
482
+ const candidateSkillIds = new Set(candidateById.keys());
483
+ const addedSkillIds = [...candidateSkillIds].filter((skillId) => !currentSkillIds.has(skillId)).sort();
484
+ const removedSkillIds = [...currentSkillIds].filter((skillId) => !candidateSkillIds.has(skillId)).sort();
485
+ const changedSkillIds = [...candidateSkillIds]
486
+ .filter((skillId) => currentSkillIds.has(skillId))
487
+ .filter((skillId) => {
488
+ const currentSkill = currentById.get(skillId);
489
+ const candidateSkill = candidateById.get(skillId);
490
+ return (currentSkill !== undefined &&
491
+ candidateSkill !== undefined &&
492
+ (skillSignature(currentSkill) !== skillSignature(candidateSkill) ||
493
+ changedFilesIncludeSkill(options.changedFiles, currentSkill.relativePath) ||
494
+ changedFilesIncludeSkill(options.changedFiles, candidateSkill.relativePath)));
495
+ })
496
+ .sort();
497
+ return { addedSkillIds, removedSkillIds, changedSkillIds };
498
+ }
499
+ function skillSignature(skill) {
500
+ return JSON.stringify({
501
+ id: skill.id,
502
+ title: skill.title,
503
+ description: skill.description,
504
+ supportedAgents: [...skill.supportedAgents].sort(),
505
+ tags: [...skill.tags].sort(),
506
+ relativePath: skill.relativePath,
507
+ frontmatter: skill.frontmatter
508
+ });
509
+ }
510
+ function changedFilesIncludeSkill(changedFiles, relativePath) {
511
+ const normalizedRelativePath = relativePath.split(path.sep).join('/');
512
+ return changedFiles.some((changedFile) => changedFile === normalizedRelativePath || changedFile.startsWith(`${normalizedRelativePath}/`));
513
+ }
514
+ async function readCurrentLinkTarget(currentPath) {
515
+ const stat = await lstatIfExists(currentPath);
516
+ if (stat?.isSymbolicLink() !== true) {
517
+ return undefined;
518
+ }
519
+ const linkTarget = await fs.readlink(currentPath);
520
+ return path.resolve(path.dirname(currentPath), linkTarget);
521
+ }
147
522
  async function recordSkillpackLock(options) {
148
523
  const lockOptions = options.now === undefined ?
149
524
  { managerStateDir: options.managerStateDir } :
@@ -155,23 +530,57 @@ async function recordSkillpackLock(options) {
155
530
  branch: options.config.branch,
156
531
  checkoutPath: options.config.checkoutPath,
157
532
  commitHash: options.commitHash,
533
+ ...(options.activeRevisionPath === undefined ? {} : { activeRevisionPath: options.activeRevisionPath }),
534
+ ...(options.remoteCommitHash === undefined ? {} : { remoteCommitHash: options.remoteCommitHash }),
535
+ ...(options.updateAvailable === undefined ? {} : { updateAvailable: options.updateAvailable }),
158
536
  dirty: options.dirty,
159
537
  recordedAt
160
538
  }, lockOptions);
161
539
  return result.lockPath;
162
540
  }
541
+ function normalizeSkillpackConfig(configInput, homeDir) {
542
+ const parsedConfig = parseSkillpackConfig(configInput);
543
+ return {
544
+ ...parsedConfig,
545
+ checkoutPath: resolveUserPath(parsedConfig.checkoutPath, homeDir)
546
+ };
547
+ }
548
+ function assertSafeCommitHash(commitHash) {
549
+ const normalizedCommitHash = commitHash.trim().toLowerCase();
550
+ if (!/^[a-f0-9]{7,64}$/.test(normalizedCommitHash)) {
551
+ throw new Error(`Invalid commit hash for revision path: ${commitHash}`);
552
+ }
553
+ return normalizedCommitHash;
554
+ }
555
+ function shortCommit(commitHash) {
556
+ return commitHash.slice(0, 12);
557
+ }
558
+ async function lstatIfExists(candidatePath) {
559
+ try {
560
+ return await fs.lstat(candidatePath);
561
+ }
562
+ catch (error) {
563
+ if (isMissingFileError(error)) {
564
+ return undefined;
565
+ }
566
+ throw error;
567
+ }
568
+ }
163
569
  async function pathExists(candidatePath) {
164
570
  try {
165
571
  await fs.access(candidatePath);
166
572
  return true;
167
573
  }
168
574
  catch (error) {
169
- if (error instanceof Error &&
170
- 'code' in error &&
171
- error.code === 'ENOENT') {
575
+ if (isMissingFileError(error)) {
172
576
  return false;
173
577
  }
174
578
  throw error;
175
579
  }
176
580
  }
581
+ function isMissingFileError(error) {
582
+ return (error instanceof Error &&
583
+ 'code' in error &&
584
+ error.code === 'ENOENT');
585
+ }
177
586
  //# sourceMappingURL=skillpackSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skillpackSetup.js","sourceRoot":"","sources":["../../src/git/skillpackSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillpackSetup.js","sourceRoot":"","sources":["../../src/git/skillpackSetup.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { type ConfigLoadResult, type ConfigStoreOptions, ensureDefaultConfig, lo
2
2
  export { type AgentConfig, type AgentIdConfig, type ManagerConfig, type SkillpackConfig, agentConfigSchema, agentIdSchema, createDefaultManagerConfig, managerConfigSchema, parseManagerConfig, parseSkillpackConfig, skillpackConfigSchema } from './config/configSchema.js';
3
3
  export { type AgentAdapter, type AgentId, type AgentSupportStatus } from './agents/AgentAdapter.js';
4
4
  export { agentAdapters, getAgentAdapter, getAgentAdapters } from './agents/adapters.js';
5
- export { type CheckoutStatus, type SkillpackInspection, type SkillpackSetupOptions, type SkillpackSetupResult, type SkillpackSetupStatus, applyInitialSkillpackSetup, inspectSkillpackCheckout } from './git/skillpackSetup.js';
5
+ export { type CheckoutStatus, type SkillpackInspection, type SkillpackRemoteUpdateInspection, type SkillpackRemoteUpdateStatus, type SkillpackSnapshotLayout, type SkillpackSetupOptions, type SkillpackSetupResult, type SkillpackSetupStatus, type SkillpackUpdateApplyResult, type SkillpackUpdateApplyStatus, type SkillpackUpdatePreview, type SkillpackUpdatePreviewStatus, applyInitialSkillpackSetup, applySkillpackUpdate, inspectSkillpackCheckout, inspectSkillpackRemoteUpdate, prepareSkillpackUpdatePreview, resolveSkillpackSnapshotLayout, skillpackRevisionRepoPath } from './git/skillpackSetup.js';
6
6
  export { type GitRunner, type GitRunOptions, type GitRunResult, runGit } from './git/gitRunner.js';
7
7
  export { type ManagerLock, type SkillpackLockEntry, createEmptyManagerLock, managerLockSchema, parseManagerLock, skillpackLockEntrySchema } from './lock/lockSchema.js';
8
8
  export { type LockStoreOptions, getDefaultLockPath, loadLock, saveLock, upsertSkillpackLockEntry } from './lock/lockStore.js';
@@ -15,6 +15,6 @@ export { type ManifestStoreOptions, loadManifest, loadManifestOrDefault, resolve
15
15
  export { type DoctorIssue, type DoctorIssueSeverity, type DoctorReport, type StatusReport, type StatusReportAgent, type StatusReportSkillpack } from './reports/reportTypes.js';
16
16
  export { type BuildStatusReportOptions, buildStatusReport } from './reports/statusReport.js';
17
17
  export { type BuildDoctorReportOptions, buildDoctorReport } from './reports/doctorReport.js';
18
- export { assertPathInside, configFileName, defaultConfigPath, defaultLockPath, defaultManifestPath, defaultManagerStateDir, defaultSkillpackCheckoutPath, expandTilde, isPathInside, lockFileName, manifestFileName, managerStateDirSegments, resolveUserPath } from './paths.js';
18
+ export { assertPathInside, configFileName, defaultConfigPath, defaultLockPath, defaultManifestPath, defaultManagerStateDir, defaultSkillpackCheckoutPath, defaultSkillpackCurrentPath, defaultSkillpackRevisionsPath, defaultSkillpackRootPath, expandTilde, isPathInside, lockFileName, manifestFileName, managerStateDirSegments, resolveUserPath } from './paths.js';
19
19
  export { defaultSkillpackBranch, defaultSkillpackDisplayName, defaultSkillpackId, defaultSkillpackRepositoryUrl } from './skillpackDefaults.js';
20
20
  //# sourceMappingURL=index.d.ts.map