@skillctl/registry 0.2.0 → 0.3.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,7 +1,7 @@
1
1
  import https from 'node:https';
2
2
  export function httpsGet(url, headers = {}) {
3
3
  return new Promise((resolve, reject) => {
4
- const req = https.get(url, { headers: { 'User-Agent': 'skillctl/0.2.0', ...headers } }, (res) => {
4
+ const req = https.get(url, { headers: { 'User-Agent': 'skillctl/0.3.0', ...headers } }, (res) => {
5
5
  if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
6
6
  httpsGet(res.headers.location, headers).then(resolve).catch(reject);
7
7
  return;
@@ -2,7 +2,7 @@ import type { RegistrySource, ResolvedSource } from '@skillctl/core';
2
2
  export declare class LocalSource implements RegistrySource {
3
3
  readonly id = "local";
4
4
  match(spec: string): boolean;
5
- resolve(spec: string, options?: {
5
+ resolve(spec: string, _options?: {
6
6
  ref?: string;
7
7
  }): Promise<ResolvedSource>;
8
8
  fetch(resolved: ResolvedSource, dest: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrE,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,EAAE,WAAW;IAEtB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAe1E,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAMpF"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrE,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,EAAE,WAAW;IAEtB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAWtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IA6B3E,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAcpF"}
@@ -1,6 +1,6 @@
1
- import { cp } from 'node:fs/promises';
2
- import { resolve as pathResolve, basename } from 'node:path';
3
- import { ensureDir, computeDirIntegrity } from '@skillctl/core';
1
+ import { cp, stat } from 'node:fs/promises';
2
+ import { resolve as pathResolve, join, basename } from 'node:path';
3
+ import { ensureDir, computeDirIntegrity, loadConfig, parseImportedSpecifier } from '@skillctl/core';
4
4
  import { canonicalizeName } from '../names.js';
5
5
  export class LocalSource {
6
6
  id = 'local';
@@ -12,11 +12,24 @@ export class LocalSource {
12
12
  /^[a-zA-Z]:\\/.test(spec) ||
13
13
  spec.startsWith('/'));
14
14
  }
15
- async resolve(spec, options) {
15
+ async resolve(spec, _options) {
16
+ const importedName = parseImportedSpecifier(spec);
17
+ if (importedName) {
18
+ const config = await loadConfig();
19
+ const abs = join(config.store, importedName);
20
+ return {
21
+ name: importedName,
22
+ resolved: `local:imported/${importedName}`,
23
+ sourceType: 'local',
24
+ sourceId: this.id,
25
+ originalSpec: spec,
26
+ localPath: abs,
27
+ };
28
+ }
16
29
  let localPath = spec;
17
30
  if (spec.startsWith('file:'))
18
31
  localPath = spec.slice(5);
19
- if (spec.startsWith('local:'))
32
+ else if (spec.startsWith('local:'))
20
33
  localPath = spec.slice(6);
21
34
  const abs = pathResolve(process.cwd(), localPath);
22
35
  return {
@@ -31,6 +44,15 @@ export class LocalSource {
31
44
  async fetch(resolved, dest) {
32
45
  if (!resolved.localPath)
33
46
  throw new Error('Invalid local resolved');
47
+ try {
48
+ await stat(resolved.localPath);
49
+ }
50
+ catch {
51
+ const hint = parseImportedSpecifier(resolved.originalSpec)
52
+ ? ' Skill was imported locally; re-run `skillctl import from-project` or add from a remote source.'
53
+ : '';
54
+ throw new Error(`Local skill path not found: ${resolved.localPath}.${hint}`);
55
+ }
34
56
  await ensureDir(dest);
35
57
  await cp(resolved.localPath, dest, { recursive: true, force: true });
36
58
  return { integrity: await computeDirIntegrity(dest) };
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,OAAO,WAAW;IACb,EAAE,GAAG,OAAO,CAAC;IAEtB,KAAK,CAAC,IAAY;QAChB,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACtB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,OAA0B;QACpD,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrC,QAAQ,EAAE,SAAS,GAAG,EAAE;YACxB,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,GAAG;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAwB,EAAE,IAAY;QAChD,IAAI,CAAC,QAAQ,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnE,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillctl/registry",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Registry manager, sources (github, local, skills.sh, basic npm) + resolution + materialize + integrity for skillctl",
5
5
  "license": "MIT",
6
6
  "author": "skillctl contributors",
@@ -13,9 +13,9 @@
13
13
  "dependencies": {
14
14
  "semver": "^7.6.3",
15
15
  "tar": "^6.2.1",
16
- "@skillctl/lockfile": "0.2.0",
17
- "@skillctl/core": "0.2.0",
18
- "@skillctl/manifest": "0.2.0"
16
+ "@skillctl/core": "0.3.0",
17
+ "@skillctl/lockfile": "0.3.0",
18
+ "@skillctl/manifest": "0.3.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/node": "^20.14.0",