@kadi.build/core 0.0.1-alpha.11 → 0.0.1-alpha.13

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.
@@ -174,29 +174,29 @@ export declare class AbilityLoader {
174
174
  */
175
175
  private createBrokerTransport;
176
176
  /**
177
- * Create native transport with path validation
177
+ * Create native transport with path auto-resolution
178
178
  *
179
- * Validates the ability path and creates a NativeTransport instance
180
- * for in-process ability loading.
179
+ * If path is provided, uses it directly (backwards compatible).
180
+ * If path is NOT provided, auto-resolves from agent-lock.json.
181
181
  *
182
182
  * @param name - Ability name
183
183
  * @param options - Load options (native-specific)
184
184
  * @returns Native transport instance
185
185
  *
186
- * @throws {KadiError} If path is missing or invalid
186
+ * @throws {KadiError} If path is missing and auto-resolution fails
187
187
  */
188
188
  private createNativeTransport;
189
189
  /**
190
- * Create stdio transport with command validation
190
+ * Create stdio transport with command auto-resolution
191
191
  *
192
- * Validates the command and creates a StdioTransport instance
193
- * for spawning the ability as a child process.
192
+ * If command is provided, uses it directly (backwards compatible).
193
+ * If command is NOT provided, auto-resolves from agent-lock.json.
194
194
  *
195
195
  * @param name - Ability name
196
196
  * @param options - Load options (stdio-specific)
197
197
  * @returns Stdio transport instance
198
198
  *
199
- * @throws {KadiError} If command is missing
199
+ * @throws {KadiError} If command is missing and auto-resolution fails
200
200
  */
201
201
  private createStdioTransport;
202
202
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbilityLoader.d.ts","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAC;AAGlG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGvF,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAa;IACxB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,CAAsB;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,WAAgB,EACzB,YAAY,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,aAAa,CAAC;IAwCzB;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC;;;;;;;;;;OAUG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;;;;;;;;;;;OAYG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KAC5C;IAID;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAsC7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;CAuC7B"}
1
+ {"version":3,"file":"AbilityLoader.d.ts","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAC;AAGlG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGvF,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAa;IACxB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,CAAsB;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,WAAgB,EACzB,YAAY,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,aAAa,CAAC;IAwCzB;;;;;;;;;OASG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBhC;;;;;;;;;;OAUG;IACH,MAAM,IAAI,aAAa,EAAE;IAIzB;;;;;;;;;;;;OAYG;IACH,QAAQ,IAAI;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;KAC5C;IAID;;;;;;;;;;;;OAYG;IACH,OAAO,IAAI,MAAM;IAIjB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAiD7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IA4D7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;CA8E7B"}
@@ -16,6 +16,8 @@ import { StdioTransport } from '../transports/StdioTransport.js';
16
16
  import { AbilityProxy } from './AbilityProxy.js';
17
17
  import { AbilityCache } from './AbilityCache.js';
18
18
  import { AbilityValidator } from './AbilityValidator.js';
19
+ import { resolveAbilityConfig } from '../utils/LockfileResolver.js';
20
+ import path from 'path';
19
21
  /**
20
22
  * Ability Loader
21
23
  *
@@ -260,83 +262,138 @@ export class AbilityLoader {
260
262
  }, brokerClient);
261
263
  }
262
264
  /**
263
- * Create native transport with path validation
265
+ * Create native transport with path auto-resolution
264
266
  *
265
- * Validates the ability path and creates a NativeTransport instance
266
- * for in-process ability loading.
267
+ * If path is provided, uses it directly (backwards compatible).
268
+ * If path is NOT provided, auto-resolves from agent-lock.json.
267
269
  *
268
270
  * @param name - Ability name
269
271
  * @param options - Load options (native-specific)
270
272
  * @returns Native transport instance
271
273
  *
272
- * @throws {KadiError} If path is missing or invalid
274
+ * @throws {KadiError} If path is missing and auto-resolution fails
273
275
  */
274
276
  createNativeTransport(name, options) {
275
277
  // Step 1: Extract native-specific options (type-safe!)
276
278
  const nativeOptions = options;
277
- // Step 2: Validate path is provided
278
- if (!nativeOptions.path) {
279
- throw new KadiError('Native transport requires path option', ErrorCode.INVALID_CONFIG, 400, {
280
- abilityName: name,
281
- transport: 'native',
282
- reason: 'Missing required "path" option for native transport',
283
- suggestion: 'Provide path to ability module',
284
- example: 'await client.load("calculator", "native", { path: "./abilities/calculator" })',
285
- alternatives: [
286
- 'Relative path: { path: "./abilities/calculator" }',
287
- 'Absolute path: { path: "/usr/local/lib/abilities/calculator" }',
288
- 'Package name: { path: "@kadi/calculator-ability" }'
289
- ]
290
- });
279
+ // Step 2: Determine ability path
280
+ let abilityPath;
281
+ let abilityVersion = options.version;
282
+ if (nativeOptions.path) {
283
+ // Explicit path provided - use it (backwards compatible)
284
+ abilityPath = nativeOptions.path;
285
+ }
286
+ else {
287
+ // No path provided - auto-resolve from lockfile
288
+ try {
289
+ const config = resolveAbilityConfig(name);
290
+ abilityPath = config.path;
291
+ abilityVersion = config.version;
292
+ // Log for debugging (if needed)
293
+ // console.debug(`Auto-resolved ${name} to ${abilityPath}`);
294
+ }
295
+ catch (error) {
296
+ // Re-throw lockfile resolution errors with context
297
+ if (error instanceof KadiError) {
298
+ throw error;
299
+ }
300
+ throw new KadiError(`Failed to auto-resolve ability '${name}'`, ErrorCode.ABILITY_NOT_FOUND, 404, {
301
+ abilityName: name,
302
+ transport: 'native',
303
+ reason: 'Could not auto-resolve path from lockfile',
304
+ originalError: error instanceof Error ? error.message : String(error),
305
+ suggestion: 'Provide explicit path or run `kadi install`',
306
+ example: 'await client.load("calculator", "native", { path: "./abilities/calculator" })',
307
+ alternatives: [
308
+ 'Install ability: kadi install ' + name,
309
+ 'Provide explicit path in options',
310
+ 'Check that agent-lock.json exists'
311
+ ]
312
+ });
313
+ }
291
314
  }
292
- // Step 3: Create NativeTransport with validated config
315
+ // Step 3: Create NativeTransport with resolved/provided path
293
316
  return new NativeTransport({
294
317
  abilityName: name,
295
- abilityPath: nativeOptions.path,
296
- abilityVersion: options.version,
318
+ abilityPath,
319
+ abilityVersion,
297
320
  timeout: options.timeout
298
321
  // entryPoint defaults to 'index.js' in NativeTransport constructor
299
322
  });
300
323
  }
301
324
  /**
302
- * Create stdio transport with command validation
325
+ * Create stdio transport with command auto-resolution
303
326
  *
304
- * Validates the command and creates a StdioTransport instance
305
- * for spawning the ability as a child process.
327
+ * If command is provided, uses it directly (backwards compatible).
328
+ * If command is NOT provided, auto-resolves from agent-lock.json.
306
329
  *
307
330
  * @param name - Ability name
308
331
  * @param options - Load options (stdio-specific)
309
332
  * @returns Stdio transport instance
310
333
  *
311
- * @throws {KadiError} If command is missing
334
+ * @throws {KadiError} If command is missing and auto-resolution fails
312
335
  */
313
336
  createStdioTransport(name, options) {
314
337
  // Step 1: Extract stdio-specific options (type-safe!)
315
338
  const stdioOptions = options;
316
- // Step 2: Validate command is provided
317
- if (!stdioOptions.command) {
318
- throw new KadiError('Stdio transport requires command option', ErrorCode.INVALID_CONFIG, 400, {
319
- abilityName: name,
320
- transport: 'stdio',
321
- reason: 'Missing required "command" option for stdio transport',
322
- suggestion: 'Provide command to execute ability process',
323
- example: 'await client.load("calculator", "stdio", { command: "node", args: ["./abilities/calculator/index.js"] })',
324
- alternatives: [
325
- 'Node.js: { command: "node", args: ["./ability.js"] }',
326
- 'Python: { command: "python3", args: ["./ability.py"] }',
327
- 'Binary: { command: "./ability-binary" }'
328
- ]
329
- });
339
+ // Step 2: Determine command and args
340
+ let command;
341
+ let args = stdioOptions.args;
342
+ let cwd = stdioOptions.cwd;
343
+ let abilityVersion = options.version;
344
+ if (stdioOptions.command) {
345
+ // Explicit command provided - use it (backwards compatible)
346
+ command = stdioOptions.command;
347
+ }
348
+ else {
349
+ // No command provided - auto-resolve from lockfile
350
+ try {
351
+ const config = resolveAbilityConfig(name);
352
+ // TODO: Runtime detection - currently assumes Node.js
353
+ // In the future, detect runtime from ability manifest:
354
+ // - runtime: "node" | "python" | "go" | "binary"
355
+ // - Or auto-detect from entry file extension (.js, .py, .go)
356
+ // For now, we assume Node.js for all abilities
357
+ command = 'node';
358
+ // Construct entry point path
359
+ const entryPath = path.join(config.path, config.entry);
360
+ args = [entryPath];
361
+ // Set working directory to ability directory
362
+ cwd = config.path;
363
+ // Use version from lockfile
364
+ abilityVersion = config.version;
365
+ // Log for debugging (if needed)
366
+ // console.debug(`Auto-resolved ${name} stdio command: node ${entryPath}`);
367
+ }
368
+ catch (error) {
369
+ // Re-throw lockfile resolution errors with context
370
+ if (error instanceof KadiError) {
371
+ throw error;
372
+ }
373
+ throw new KadiError(`Failed to auto-resolve ability '${name}' for stdio`, ErrorCode.ABILITY_NOT_FOUND, 404, {
374
+ abilityName: name,
375
+ transport: 'stdio',
376
+ reason: 'Could not auto-resolve command from lockfile',
377
+ originalError: error instanceof Error ? error.message : String(error),
378
+ suggestion: 'Provide explicit command or run `kadi install`',
379
+ example: 'await client.load("calculator", "stdio", { command: "node", args: ["./service.js"] })',
380
+ alternatives: [
381
+ 'Install ability: kadi install ' + name,
382
+ 'Provide explicit command in options',
383
+ 'Check that agent-lock.json exists'
384
+ ]
385
+ });
386
+ }
330
387
  }
331
- // Step 3: Create StdioTransport with validated config
388
+ // Step 3: Create StdioTransport with resolved/provided config
332
389
  return new StdioTransport({
333
390
  abilityName: name,
334
- command: stdioOptions.command,
335
- args: stdioOptions.args,
336
- cwd: stdioOptions.cwd,
391
+ command,
392
+ args,
393
+ cwd,
337
394
  env: stdioOptions.env,
338
395
  timeout: options.timeout,
339
- abilityVersion: options.version
396
+ abilityVersion
340
397
  });
341
398
  }
342
399
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbilityLoader.js","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbilityLoader.js","sourceRoot":"","sources":["../../src/abilities/AbilityLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Lockfile Resolver
3
+ *
4
+ * Utilities for resolving ability paths from agent-lock.json
5
+ * Integrates kadi-core with kadi-install's global cache architecture
6
+ *
7
+ * @module utils/LockfileResolver
8
+ */
9
+ /**
10
+ * Minimal lockfile types (only what kadi-core needs)
11
+ *
12
+ * These types are a subset of the full lockfile format from kadi-install.
13
+ * We only include fields needed for ability path resolution.
14
+ */
15
+ export interface LockfileAbilityEntry {
16
+ version: string;
17
+ kind: 'plugin' | 'ability';
18
+ resolved: string;
19
+ integrity: string;
20
+ installStrategy: 'hardlink' | 'clonefile' | 'copyfile' | 'symlink';
21
+ detached: boolean;
22
+ }
23
+ export interface AgentLockfile {
24
+ lockfileVersion: number;
25
+ abilities: Record<string, LockfileAbilityEntry>;
26
+ agent: {
27
+ name: string;
28
+ version: string;
29
+ };
30
+ generated: string;
31
+ }
32
+ /**
33
+ * Minimal ability manifest (agent.json)
34
+ *
35
+ * Only fields needed for loading abilities
36
+ */
37
+ export interface AbilityManifest {
38
+ name: string;
39
+ version: string;
40
+ kind?: 'plugin' | 'ability';
41
+ entry?: string;
42
+ description?: string;
43
+ [key: string]: unknown;
44
+ }
45
+ /**
46
+ * Find ability in global cache
47
+ *
48
+ * Checks ~/.kadi/abilities/ for any version of the ability.
49
+ * Returns the highest version found.
50
+ *
51
+ * @param abilityName - Name of the ability to find
52
+ * @returns Absolute path to the ability or null if not found
53
+ */
54
+ export declare function findInGlobalCache(abilityName: string): string | null;
55
+ /**
56
+ * Find project root by looking for agent.json
57
+ *
58
+ * Walks up directory tree from cwd until finding agent.json
59
+ *
60
+ * @param startDir - Directory to start search from (defaults to cwd)
61
+ * @returns Absolute path to project root
62
+ * @throws {KadiError} If no project root found
63
+ */
64
+ export declare function findProjectRoot(startDir?: string): string;
65
+ /**
66
+ * Read agent-lock.json from project root
67
+ *
68
+ * @param projectRoot - Project root directory
69
+ * @returns Parsed lockfile
70
+ * @throws {KadiError} If lockfile not found or invalid
71
+ */
72
+ export declare function readLockfile(projectRoot: string): AgentLockfile;
73
+ /**
74
+ * Resolve ability path from lockfile
75
+ *
76
+ * @param abilityName - Name of ability to resolve
77
+ * @param projectRoot - Project root directory
78
+ * @returns Resolved ability entry from lockfile
79
+ * @throws {KadiError} If ability not found in lockfile or path doesn't exist
80
+ */
81
+ export declare function resolveAbilityPath(abilityName: string, projectRoot: string): LockfileAbilityEntry;
82
+ /**
83
+ * Read ability's agent.json manifest
84
+ *
85
+ * @param abilityPath - Path to ability directory
86
+ * @returns Parsed ability manifest
87
+ * @throws {KadiError} If manifest not found or invalid
88
+ */
89
+ export declare function readAbilityManifest(abilityPath: string): AbilityManifest;
90
+ /**
91
+ * Auto-resolve ability configuration for loading
92
+ *
93
+ * Combines lockfile lookup with manifest reading to provide
94
+ * all information needed to load an ability.
95
+ *
96
+ * @param abilityName - Name of ability
97
+ * @param projectRoot - Project root directory (optional, will search if not provided)
98
+ * @returns Resolved ability configuration
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const config = resolveAbilityConfig('math-lib');
103
+ * // Returns:
104
+ * // {
105
+ * // path: '/path/to/project/abilities/math-lib@1.0.0',
106
+ * // version: '1.0.0',
107
+ * // entry: 'service.js',
108
+ * // manifest: { ... }
109
+ * // }
110
+ * ```
111
+ */
112
+ export declare function resolveAbilityConfig(abilityName: string, projectRoot?: string): {
113
+ path: string;
114
+ version: string;
115
+ entry: string;
116
+ manifest: AbilityManifest;
117
+ };
118
+ //# sourceMappingURL=LockfileResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LockfileResolver.d.ts","sourceRoot":"","sources":["../../src/utils/LockfileResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACnE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAChD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CA8BxE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA2D/D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,oBAAoB,CAqEtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAkDxE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B,CA2EA"}
@@ -0,0 +1,317 @@
1
+ /**
2
+ * Lockfile Resolver
3
+ *
4
+ * Utilities for resolving ability paths from agent-lock.json
5
+ * Integrates kadi-core with kadi-install's global cache architecture
6
+ *
7
+ * @module utils/LockfileResolver
8
+ */
9
+ import fs from 'fs';
10
+ import path from 'path';
11
+ import { homedir } from 'os';
12
+ import { KadiError, ErrorCode } from '../errors/index.js';
13
+ /**
14
+ * Find ability in global cache
15
+ *
16
+ * Checks ~/.kadi/abilities/ for any version of the ability.
17
+ * Returns the highest version found.
18
+ *
19
+ * @param abilityName - Name of the ability to find
20
+ * @returns Absolute path to the ability or null if not found
21
+ */
22
+ export function findInGlobalCache(abilityName) {
23
+ const globalCachePath = path.join(homedir(), '.kadi', 'abilities');
24
+ if (!fs.existsSync(globalCachePath)) {
25
+ return null;
26
+ }
27
+ try {
28
+ // Find all directories matching name@version pattern
29
+ const entries = fs.readdirSync(globalCachePath, { withFileTypes: true });
30
+ const versions = entries
31
+ .filter(d => d.isDirectory())
32
+ .filter(d => d.name.startsWith(`${abilityName}@`))
33
+ .map(d => {
34
+ const atIndex = d.name.lastIndexOf('@');
35
+ return {
36
+ version: d.name.substring(atIndex + 1),
37
+ path: path.join(globalCachePath, d.name)
38
+ };
39
+ })
40
+ .sort((a, b) => b.version.localeCompare(a.version, undefined, { numeric: true, sensitivity: 'base' }));
41
+ if (versions.length === 0) {
42
+ return null;
43
+ }
44
+ return versions[0].path;
45
+ }
46
+ catch (error) {
47
+ // If we can't read the global cache, return null
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * Find project root by looking for agent.json
53
+ *
54
+ * Walks up directory tree from cwd until finding agent.json
55
+ *
56
+ * @param startDir - Directory to start search from (defaults to cwd)
57
+ * @returns Absolute path to project root
58
+ * @throws {KadiError} If no project root found
59
+ */
60
+ export function findProjectRoot(startDir = process.cwd()) {
61
+ let current = path.resolve(startDir);
62
+ const root = path.parse(current).root;
63
+ while (current !== root) {
64
+ const agentJsonPath = path.join(current, 'agent.json');
65
+ if (fs.existsSync(agentJsonPath)) {
66
+ return current;
67
+ }
68
+ // Move up one directory
69
+ current = path.dirname(current);
70
+ }
71
+ throw new KadiError('No KADI project found - could not locate agent.json', ErrorCode.INVALID_CONFIG, 404, {
72
+ searchedFrom: startDir,
73
+ reason: 'No agent.json found in current directory or parent directories',
74
+ suggestion: 'Make sure you are running from within a KADI project',
75
+ alternatives: [
76
+ 'Run from a directory containing agent.json',
77
+ 'Initialize a new KADI project: kadi init',
78
+ 'Provide explicit path when loading ability'
79
+ ]
80
+ });
81
+ }
82
+ /**
83
+ * Read agent-lock.json from project root
84
+ *
85
+ * @param projectRoot - Project root directory
86
+ * @returns Parsed lockfile
87
+ * @throws {KadiError} If lockfile not found or invalid
88
+ */
89
+ export function readLockfile(projectRoot) {
90
+ const lockfilePath = path.join(projectRoot, 'agent-lock.json');
91
+ // Check if lockfile exists
92
+ if (!fs.existsSync(lockfilePath)) {
93
+ throw new KadiError('No agent-lock.json found - cannot auto-resolve ability paths', ErrorCode.INVALID_CONFIG, 404, {
94
+ projectRoot,
95
+ lockfilePath,
96
+ reason: 'agent-lock.json not found in project root',
97
+ suggestion: 'Run `kadi install` to generate lockfile',
98
+ alternatives: [
99
+ 'Run: kadi install (to install all abilities from agent.json)',
100
+ 'Run: kadi install <ability-name> (to install specific ability)',
101
+ 'Provide explicit path: client.load("ability", "native", { path: "./abilities/..." })'
102
+ ],
103
+ hint: 'agent-lock.json is created by running `kadi install`'
104
+ });
105
+ }
106
+ // Read and parse lockfile
107
+ try {
108
+ const content = fs.readFileSync(lockfilePath, 'utf-8');
109
+ const lockfile = JSON.parse(content);
110
+ // Basic validation
111
+ if (!lockfile.abilities || typeof lockfile.abilities !== 'object') {
112
+ throw new Error('Invalid lockfile format: missing or invalid "abilities" field');
113
+ }
114
+ return lockfile;
115
+ }
116
+ catch (error) {
117
+ if (error instanceof SyntaxError) {
118
+ throw new KadiError('Invalid agent-lock.json - malformed JSON', ErrorCode.INVALID_CONFIG, 400, {
119
+ lockfilePath,
120
+ parseError: error.message,
121
+ suggestion: 'Delete agent-lock.json and run `kadi install` to regenerate'
122
+ });
123
+ }
124
+ throw new KadiError('Failed to read agent-lock.json', ErrorCode.INTERNAL_ERROR, 500, {
125
+ lockfilePath,
126
+ error: error instanceof Error ? error.message : String(error)
127
+ });
128
+ }
129
+ }
130
+ /**
131
+ * Resolve ability path from lockfile
132
+ *
133
+ * @param abilityName - Name of ability to resolve
134
+ * @param projectRoot - Project root directory
135
+ * @returns Resolved ability entry from lockfile
136
+ * @throws {KadiError} If ability not found in lockfile or path doesn't exist
137
+ */
138
+ export function resolveAbilityPath(abilityName, projectRoot) {
139
+ const lockfile = readLockfile(projectRoot);
140
+ // Check if ability exists in lockfile
141
+ const abilityEntry = lockfile.abilities[abilityName];
142
+ if (!abilityEntry) {
143
+ // Ability not in lockfile - show helpful error
144
+ const installedAbilities = Object.keys(lockfile.abilities);
145
+ throw new KadiError(`Ability '${abilityName}' not found in agent-lock.json`, ErrorCode.ABILITY_NOT_FOUND, 404, {
146
+ abilityName,
147
+ projectRoot,
148
+ installedAbilities,
149
+ installedCount: installedAbilities.length,
150
+ reason: `'${abilityName}' is not installed in this project`,
151
+ suggestion: `Run: kadi install ${abilityName}`,
152
+ alternatives: [
153
+ `Install ability: kadi install ${abilityName}`,
154
+ 'View installed abilities in agent-lock.json',
155
+ 'Provide explicit path when loading ability'
156
+ ],
157
+ hint: installedAbilities.length === 0
158
+ ? 'No abilities installed yet. Run `kadi install` to install from agent.json'
159
+ : `Currently installed: ${installedAbilities.slice(0, 5).join(', ')}${installedAbilities.length > 5 ? '...' : ''}`
160
+ });
161
+ }
162
+ // Resolve path (may be relative to project root)
163
+ const absolutePath = path.isAbsolute(abilityEntry.resolved)
164
+ ? abilityEntry.resolved
165
+ : path.resolve(projectRoot, abilityEntry.resolved);
166
+ // Verify the resolved path exists
167
+ if (!fs.existsSync(absolutePath)) {
168
+ throw new KadiError(`Ability '${abilityName}@${abilityEntry.version}' is in lockfile but directory not found`, ErrorCode.ABILITY_NOT_FOUND, 404, {
169
+ abilityName,
170
+ version: abilityEntry.version,
171
+ expectedPath: absolutePath,
172
+ reason: 'Directory listed in lockfile does not exist',
173
+ possibleCauses: [
174
+ 'Ability was manually deleted',
175
+ 'Project was moved without abilities/ folder',
176
+ 'File system error or permissions issue'
177
+ ],
178
+ suggestion: `Run: kadi install --force ${abilityName}`,
179
+ alternatives: [
180
+ `Reinstall ability: kadi install --force ${abilityName}`,
181
+ 'Check if abilities/ folder exists',
182
+ 'Run `kadi install` to restore all abilities'
183
+ ]
184
+ });
185
+ }
186
+ // Return entry with absolute path
187
+ return {
188
+ ...abilityEntry,
189
+ resolved: absolutePath
190
+ };
191
+ }
192
+ /**
193
+ * Read ability's agent.json manifest
194
+ *
195
+ * @param abilityPath - Path to ability directory
196
+ * @returns Parsed ability manifest
197
+ * @throws {KadiError} If manifest not found or invalid
198
+ */
199
+ export function readAbilityManifest(abilityPath) {
200
+ const manifestPath = path.join(abilityPath, 'agent.json');
201
+ if (!fs.existsSync(manifestPath)) {
202
+ throw new KadiError('Ability agent.json not found', ErrorCode.INVALID_CONFIG, 404, {
203
+ abilityPath,
204
+ manifestPath,
205
+ reason: 'agent.json not found in ability directory',
206
+ suggestion: 'Reinstall the ability: kadi install --force <ability-name>'
207
+ });
208
+ }
209
+ try {
210
+ const content = fs.readFileSync(manifestPath, 'utf-8');
211
+ const manifest = JSON.parse(content);
212
+ // Basic validation
213
+ if (!manifest.name || !manifest.version) {
214
+ throw new Error('Invalid manifest: missing name or version');
215
+ }
216
+ return manifest;
217
+ }
218
+ catch (error) {
219
+ if (error instanceof SyntaxError) {
220
+ throw new KadiError('Invalid ability agent.json - malformed JSON', ErrorCode.INVALID_CONFIG, 400, {
221
+ manifestPath,
222
+ parseError: error.message
223
+ });
224
+ }
225
+ throw new KadiError('Failed to read ability agent.json', ErrorCode.INTERNAL_ERROR, 500, {
226
+ manifestPath,
227
+ error: error instanceof Error ? error.message : String(error)
228
+ });
229
+ }
230
+ }
231
+ /**
232
+ * Auto-resolve ability configuration for loading
233
+ *
234
+ * Combines lockfile lookup with manifest reading to provide
235
+ * all information needed to load an ability.
236
+ *
237
+ * @param abilityName - Name of ability
238
+ * @param projectRoot - Project root directory (optional, will search if not provided)
239
+ * @returns Resolved ability configuration
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * const config = resolveAbilityConfig('math-lib');
244
+ * // Returns:
245
+ * // {
246
+ * // path: '/path/to/project/abilities/math-lib@1.0.0',
247
+ * // version: '1.0.0',
248
+ * // entry: 'service.js',
249
+ * // manifest: { ... }
250
+ * // }
251
+ * ```
252
+ */
253
+ export function resolveAbilityConfig(abilityName, projectRoot) {
254
+ // Try to read lockfile first to get the exact version
255
+ try {
256
+ const root = projectRoot || findProjectRoot();
257
+ const lockfile = readLockfile(root);
258
+ const lockfileEntry = lockfile.abilities[abilityName];
259
+ if (lockfileEntry) {
260
+ // Lockfile exists and has this ability - use EXACT version
261
+ const exactVersion = lockfileEntry.version;
262
+ // Check global cache for this EXACT version
263
+ const globalPath = path.join(homedir(), '.kadi', 'abilities', `${abilityName}@${exactVersion}`);
264
+ if (fs.existsSync(globalPath)) {
265
+ // Found exact version in global cache
266
+ const manifest = readAbilityManifest(globalPath);
267
+ const entryPoint = manifest.entry || 'index.js';
268
+ return {
269
+ path: globalPath,
270
+ version: exactVersion,
271
+ entry: entryPoint,
272
+ manifest
273
+ };
274
+ }
275
+ // Not in global cache, use path from lockfile (existing behavior)
276
+ const manifest = readAbilityManifest(lockfileEntry.resolved);
277
+ const entryPoint = manifest.entry || 'index.js';
278
+ return {
279
+ path: lockfileEntry.resolved,
280
+ version: exactVersion,
281
+ entry: entryPoint,
282
+ manifest
283
+ };
284
+ }
285
+ }
286
+ catch (error) {
287
+ // No lockfile or ability not in it - continue to fallback
288
+ // This is expected when no project context exists
289
+ }
290
+ // No lockfile entry - find ANY version in global cache (highest)
291
+ const globalCachePath = findInGlobalCache(abilityName);
292
+ if (globalCachePath) {
293
+ // Found in global cache - use it
294
+ const manifest = readAbilityManifest(globalCachePath);
295
+ const version = globalCachePath.substring(globalCachePath.lastIndexOf('@') + 1);
296
+ const entryPoint = manifest.entry || 'index.js';
297
+ return {
298
+ path: globalCachePath,
299
+ version: version,
300
+ entry: entryPoint,
301
+ manifest
302
+ };
303
+ }
304
+ // Not found anywhere - throw error
305
+ throw new KadiError(`Ability '${abilityName}' not found in lockfile or global cache`, ErrorCode.ABILITY_NOT_FOUND, 404, {
306
+ abilityName,
307
+ reason: 'Ability not found in project lockfile or global cache',
308
+ globalCachePath: path.join(homedir(), '.kadi', 'abilities'),
309
+ suggestion: `Install the ability first: kadi install ${abilityName}`,
310
+ alternatives: [
311
+ `Install in project: kadi install ${abilityName}`,
312
+ `Install globally: kadi install --cli ${abilityName}`,
313
+ 'Provide explicit path in load() options'
314
+ ]
315
+ });
316
+ }
317
+ //# sourceMappingURL=LockfileResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LockfileResolver.js","sourceRoot":"","sources":["../../src/utils/LockfileResolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kadi.build/core",
3
- "version": "0.0.1-alpha.11",
3
+ "version": "0.0.1-alpha.13",
4
4
  "description": "A module that is a comprehensive toolkit for developers integrating with the KADI infrastructure.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",