@kadi.build/core 0.9.0 → 0.11.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 (45) hide show
  1. package/README.md +424 -1
  2. package/agent.json +19 -0
  3. package/dist/agent-json.d.ts +231 -0
  4. package/dist/agent-json.d.ts.map +1 -0
  5. package/dist/agent-json.js +554 -0
  6. package/dist/agent-json.js.map +1 -0
  7. package/dist/client.d.ts +34 -0
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +50 -0
  10. package/dist/client.js.map +1 -1
  11. package/dist/errors.d.ts +1 -1
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js.map +1 -1
  14. package/dist/index.d.ts +5 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +8 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/process-manager.d.ts +235 -0
  19. package/dist/process-manager.d.ts.map +1 -0
  20. package/dist/process-manager.js +647 -0
  21. package/dist/process-manager.js.map +1 -0
  22. package/dist/stdio-framing.d.ts +88 -0
  23. package/dist/stdio-framing.d.ts.map +1 -0
  24. package/dist/stdio-framing.js +194 -0
  25. package/dist/stdio-framing.js.map +1 -0
  26. package/dist/transports/stdio.d.ts.map +1 -1
  27. package/dist/transports/stdio.js +3 -181
  28. package/dist/transports/stdio.js.map +1 -1
  29. package/dist/types.d.ts +256 -0
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/utils.d.ts +107 -0
  32. package/dist/utils.d.ts.map +1 -0
  33. package/dist/utils.js +212 -0
  34. package/dist/utils.js.map +1 -0
  35. package/package.json +3 -1
  36. package/scripts/symlink.mjs +131 -0
  37. package/src/agent-json.ts +655 -0
  38. package/src/client.ts +56 -0
  39. package/src/errors.ts +15 -0
  40. package/src/index.ts +32 -0
  41. package/src/process-manager.ts +821 -0
  42. package/src/stdio-framing.ts +227 -0
  43. package/src/transports/stdio.ts +4 -221
  44. package/src/types.ts +277 -0
  45. package/src/utils.ts +246 -0
@@ -0,0 +1,554 @@
1
+ /**
2
+ * AgentJsonManager for kadi-core
3
+ *
4
+ * Provides unified read/write access to agent.json files across the ecosystem.
5
+ * Three target locations:
6
+ *
7
+ * 1. **Project root** — the agent's own config (`/my-agent/agent.json`)
8
+ * 2. **Installed ability** — an ability's config (`/my-agent/abilities/calculator@1.0.0/agent.json`)
9
+ * 3. **KADI home** — global CLI config (`~/.kadi/agent.json`)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { AgentJsonManager } from '@kadi.build/core';
14
+ *
15
+ * const ajm = new AgentJsonManager();
16
+ *
17
+ * // Read
18
+ * const config = await ajm.readProject();
19
+ * const deploy = await ajm.readProject('deploy.local');
20
+ * const abilityConfig = await ajm.readAbility('calculator');
21
+ *
22
+ * // Write
23
+ * await ajm.writeProject('deploy.staging', { target: 'akash' });
24
+ * await ajm.deleteProject('deploy.staging');
25
+ * ```
26
+ */
27
+ import { readFile, writeFile, rename, mkdir } from 'fs/promises';
28
+ import { existsSync } from 'fs';
29
+ import { join, dirname } from 'path';
30
+ import { homedir } from 'os';
31
+ import { randomBytes } from 'crypto';
32
+ import { KadiError } from './errors.js';
33
+ import { findProjectRoot, readLockFile, getInstalledAbilityNames } from './lockfile.js';
34
+ import { getByPath, setByPath, deleteByPath } from './utils.js';
35
+ // ═══════════════════════════════════════════════════════════════════════
36
+ // CONSTANTS
37
+ // ═══════════════════════════════════════════════════════════════════════
38
+ const AGENT_JSON_FILENAME = 'agent.json';
39
+ const DEFAULT_KADI_HOME = join(homedir(), '.kadi');
40
+ // ═══════════════════════════════════════════════════════════════════════
41
+ // AGENT JSON MANAGER
42
+ // ═══════════════════════════════════════════════════════════════════════
43
+ export class AgentJsonManager {
44
+ options;
45
+ /** Cached project root (resolved lazily) */
46
+ resolvedProjectRoot = null;
47
+ constructor(options = {}) {
48
+ this.options = {
49
+ projectRoot: options.projectRoot ?? '',
50
+ kadiHome: options.kadiHome ?? DEFAULT_KADI_HOME,
51
+ createOnWrite: options.createOnWrite ?? true,
52
+ };
53
+ }
54
+ // ─────────────────────────────────────────────────────────────────
55
+ // PROJECT ROOT RESOLUTION
56
+ // ─────────────────────────────────────────────────────────────────
57
+ /**
58
+ * Get the resolved project root path.
59
+ * Auto-detects if not explicitly set.
60
+ */
61
+ async getProjectRoot() {
62
+ if (this.resolvedProjectRoot) {
63
+ return this.resolvedProjectRoot;
64
+ }
65
+ if (this.options.projectRoot) {
66
+ this.resolvedProjectRoot = this.options.projectRoot;
67
+ }
68
+ else {
69
+ this.resolvedProjectRoot = await findProjectRoot();
70
+ }
71
+ return this.resolvedProjectRoot;
72
+ }
73
+ // ─────────────────────────────────────────────────────────────────
74
+ // READ API
75
+ // ─────────────────────────────────────────────────────────────────
76
+ /**
77
+ * Read the project root agent.json.
78
+ *
79
+ * @param field - Optional dot-notation path to a specific field
80
+ * @returns The full agent.json object, or a specific field value
81
+ * @throws KadiError with code AGENT_JSON_NOT_FOUND, AGENT_JSON_PARSE_ERROR,
82
+ * or AGENT_JSON_FIELD_NOT_FOUND
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const config = await ajm.readProject(); // Full object
87
+ * const name = await ajm.readProject('name'); // 'my-agent'
88
+ * const deploy = await ajm.readProject('deploy.local'); // { target: 'docker', ... }
89
+ * ```
90
+ */
91
+ async readProject(field) {
92
+ const root = await this.getProjectRoot();
93
+ const filePath = join(root, AGENT_JSON_FILENAME);
94
+ const data = await this.readJsonFile(filePath, 'project');
95
+ if (!field)
96
+ return data;
97
+ return this.resolveField(data, field, filePath);
98
+ }
99
+ /**
100
+ * Read an installed ability's agent.json.
101
+ *
102
+ * Resolution order for version ambiguity:
103
+ * 1. If `options.version` specified → exact match
104
+ * 2. Prefer `isTopLevel: true` entries (direct dependencies)
105
+ * 3. Use highest semver version
106
+ *
107
+ * @param name - Ability name (without version)
108
+ * @param options - Version targeting and field selection
109
+ * @returns The full agent.json object, or a specific field value
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * const config = await ajm.readAbility('calculator');
114
+ * const scripts = await ajm.readAbility('calculator', { field: 'scripts' });
115
+ * const specific = await ajm.readAbility('secret-ability', { version: '0.9.0' });
116
+ * ```
117
+ */
118
+ async readAbility(name, options = {}) {
119
+ const abilityPath = await this.resolveAbilityDir(name, options.version);
120
+ const filePath = join(abilityPath, AGENT_JSON_FILENAME);
121
+ const data = await this.readJsonFile(filePath, `ability "${name}"`);
122
+ if (!options.field)
123
+ return data;
124
+ return this.resolveField(data, options.field, filePath);
125
+ }
126
+ /**
127
+ * Read the global KADI home agent.json (~/.kadi/agent.json).
128
+ *
129
+ * @param field - Optional dot-notation path to a specific field
130
+ * @returns The full agent.json object, or a specific field value
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const global = await ajm.readHome();
135
+ * const plugins = await ajm.readHome('cliPlugins');
136
+ * ```
137
+ */
138
+ async readHome(field) {
139
+ const filePath = join(this.options.kadiHome, AGENT_JSON_FILENAME);
140
+ const data = await this.readJsonFile(filePath, 'home (~/.kadi)');
141
+ if (!field)
142
+ return data;
143
+ return this.resolveField(data, field, filePath);
144
+ }
145
+ // ─────────────────────────────────────────────────────────────────
146
+ // WRITE API
147
+ // ─────────────────────────────────────────────────────────────────
148
+ /**
149
+ * Write a value to the project root agent.json.
150
+ *
151
+ * Uses deep-merge semantics for objects (preserves sibling keys).
152
+ * Scalars and arrays are directly replaced.
153
+ *
154
+ * @param path - Dot-notation path to the field to set
155
+ * @param value - The value to write
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * await ajm.writeProject('version', '2.0.0');
160
+ * await ajm.writeProject('deploy.staging', { target: 'akash', network: 'mainnet' });
161
+ * await ajm.writeProject('build.arm64', { from: 'node:22-slim', platform: 'linux/arm64' });
162
+ * ```
163
+ */
164
+ async writeProject(path, value) {
165
+ const root = await this.getProjectRoot();
166
+ const filePath = join(root, AGENT_JSON_FILENAME);
167
+ await this.writeField(filePath, path, value, 'project');
168
+ }
169
+ /**
170
+ * Write a value to an installed ability's agent.json.
171
+ *
172
+ * @param name - Ability name
173
+ * @param path - Dot-notation path to the field to set
174
+ * @param value - The value to write
175
+ * @param version - Optional specific version to target
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * await ajm.writeAbility('calculator', 'scripts.dev', 'node dist/index.js --debug');
180
+ * ```
181
+ */
182
+ async writeAbility(name, path, value, version) {
183
+ const abilityPath = await this.resolveAbilityDir(name, version);
184
+ const filePath = join(abilityPath, AGENT_JSON_FILENAME);
185
+ await this.writeField(filePath, path, value, `ability "${name}"`);
186
+ }
187
+ /**
188
+ * Write a value to the global KADI home agent.json.
189
+ *
190
+ * @param path - Dot-notation path to the field to set
191
+ * @param value - The value to write
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * await ajm.writeHome('cliPlugins.my-plugin', { version: '1.0.0' });
196
+ * ```
197
+ */
198
+ async writeHome(path, value) {
199
+ const filePath = join(this.options.kadiHome, AGENT_JSON_FILENAME);
200
+ await this.writeField(filePath, path, value, 'home (~/.kadi)');
201
+ }
202
+ // ─────────────────────────────────────────────────────────────────
203
+ // DELETE API
204
+ // ─────────────────────────────────────────────────────────────────
205
+ /**
206
+ * Delete a field from the project root agent.json.
207
+ *
208
+ * @param path - Dot-notation path to the field to delete
209
+ * @returns true if the field was found and deleted
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * await ajm.deleteProject('deploy.staging');
214
+ * ```
215
+ */
216
+ async deleteProject(path) {
217
+ const root = await this.getProjectRoot();
218
+ const filePath = join(root, AGENT_JSON_FILENAME);
219
+ return this.deleteField(filePath, path);
220
+ }
221
+ /**
222
+ * Delete a field from an ability's agent.json.
223
+ */
224
+ async deleteAbility(name, path, version) {
225
+ const abilityPath = await this.resolveAbilityDir(name, version);
226
+ const filePath = join(abilityPath, AGENT_JSON_FILENAME);
227
+ return this.deleteField(filePath, path);
228
+ }
229
+ /**
230
+ * Delete a field from the global KADI home agent.json.
231
+ */
232
+ async deleteHome(path) {
233
+ const filePath = join(this.options.kadiHome, AGENT_JSON_FILENAME);
234
+ return this.deleteField(filePath, path);
235
+ }
236
+ // ─────────────────────────────────────────────────────────────────
237
+ // DISCOVERY API
238
+ // ─────────────────────────────────────────────────────────────────
239
+ /**
240
+ * List all installed abilities with their name, version, and path.
241
+ *
242
+ * @returns Array of AbilityInfo objects
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * const abilities = await ajm.listAbilities();
247
+ * // [
248
+ * // { name: 'calculator', version: '1.0.0', path: '/abs/path/abilities/calculator@1.0.0' },
249
+ * // { name: 'secret-ability', version: '0.9.0', path: '/abs/path/abilities/secret-ability@0.9.0' },
250
+ * // ]
251
+ * ```
252
+ */
253
+ async listAbilities() {
254
+ const root = await this.getProjectRoot();
255
+ let lockFile;
256
+ try {
257
+ lockFile = await readLockFile(root);
258
+ }
259
+ catch {
260
+ return []; // No lock file → no installed abilities
261
+ }
262
+ const abilities = [];
263
+ for (const [key, entry] of Object.entries(lockFile.abilities)) {
264
+ const lastAt = key.lastIndexOf('@');
265
+ const name = lastAt !== -1 ? key.substring(0, lastAt) : key;
266
+ abilities.push({
267
+ name,
268
+ version: entry.version,
269
+ path: join(root, entry.resolved),
270
+ });
271
+ }
272
+ return abilities;
273
+ }
274
+ /**
275
+ * Check if a specific ability is installed.
276
+ *
277
+ * @param name - Ability name (without version)
278
+ * @returns true if the ability exists in the lock file
279
+ */
280
+ async hasAbility(name) {
281
+ const root = await this.getProjectRoot();
282
+ let lockFile;
283
+ try {
284
+ lockFile = await readLockFile(root);
285
+ }
286
+ catch {
287
+ return false;
288
+ }
289
+ return this.findAbilityEntries(lockFile, name).length > 0;
290
+ }
291
+ /**
292
+ * Get all installed versions of a specific ability.
293
+ *
294
+ * @param name - Ability name (without version)
295
+ * @returns Array of version strings
296
+ *
297
+ * @example
298
+ * ```typescript
299
+ * const versions = await ajm.getAbilityVersions('secret-ability');
300
+ * // ['0.7.0', '0.9.0']
301
+ * ```
302
+ */
303
+ async getAbilityVersions(name) {
304
+ const root = await this.getProjectRoot();
305
+ let lockFile;
306
+ try {
307
+ lockFile = await readLockFile(root);
308
+ }
309
+ catch {
310
+ return [];
311
+ }
312
+ return this.findAbilityEntries(lockFile, name).map(e => e.version);
313
+ }
314
+ /**
315
+ * Get resolved paths for all known agent.json files.
316
+ *
317
+ * @returns Object with project, home, and abilities paths
318
+ */
319
+ async getPaths() {
320
+ const root = await this.getProjectRoot();
321
+ const abilities = {};
322
+ try {
323
+ const lockFile = await readLockFile(root);
324
+ for (const [key, entry] of Object.entries(lockFile.abilities)) {
325
+ abilities[key] = join(root, entry.resolved, AGENT_JSON_FILENAME);
326
+ }
327
+ }
328
+ catch {
329
+ // No lock file — abilities stays empty
330
+ }
331
+ return {
332
+ project: join(root, AGENT_JSON_FILENAME),
333
+ home: join(this.options.kadiHome, AGENT_JSON_FILENAME),
334
+ abilities,
335
+ };
336
+ }
337
+ // ─────────────────────────────────────────────────────────────────
338
+ // INTERNAL: FILE I/O
339
+ // ─────────────────────────────────────────────────────────────────
340
+ /**
341
+ * Read and parse a JSON file.
342
+ */
343
+ async readJsonFile(filePath, label) {
344
+ let content;
345
+ try {
346
+ content = await readFile(filePath, 'utf-8');
347
+ }
348
+ catch {
349
+ throw new KadiError(`${label} agent.json not found`, 'AGENT_JSON_NOT_FOUND', {
350
+ path: filePath,
351
+ hint: label === 'project'
352
+ ? 'Make sure you are in a KADI project directory with an agent.json file'
353
+ : `The ${label} agent.json was expected at: ${filePath}`,
354
+ });
355
+ }
356
+ try {
357
+ return JSON.parse(content);
358
+ }
359
+ catch {
360
+ throw new KadiError(`Failed to parse ${label} agent.json`, 'AGENT_JSON_PARSE_ERROR', {
361
+ path: filePath,
362
+ hint: 'The file contains invalid JSON. Check for syntax errors.',
363
+ });
364
+ }
365
+ }
366
+ /**
367
+ * Resolve a field from a parsed agent.json using dot-path notation.
368
+ */
369
+ resolveField(data, field, filePath) {
370
+ const value = getByPath(data, field);
371
+ if (value === undefined) {
372
+ throw new KadiError(`Field "${field}" not found in agent.json`, 'AGENT_JSON_FIELD_NOT_FOUND', {
373
+ path: filePath,
374
+ available: Object.keys(data),
375
+ hint: `Available top-level keys: ${Object.keys(data).join(', ')}`,
376
+ });
377
+ }
378
+ return value;
379
+ }
380
+ /**
381
+ * Write a field to a JSON file using dot-path notation.
382
+ * Atomic write: writes to a temp file then renames.
383
+ */
384
+ async writeField(filePath, path, value, label) {
385
+ // Read existing or create new
386
+ let data;
387
+ try {
388
+ const content = await readFile(filePath, 'utf-8');
389
+ data = JSON.parse(content);
390
+ }
391
+ catch {
392
+ if (!this.options.createOnWrite) {
393
+ throw new KadiError(`${label} agent.json not found (createOnWrite is false)`, 'AGENT_JSON_NOT_FOUND', { path: filePath });
394
+ }
395
+ data = {};
396
+ }
397
+ // Apply the change
398
+ setByPath(data, path, value);
399
+ // Atomic write
400
+ await this.atomicWriteJson(filePath, data);
401
+ }
402
+ /**
403
+ * Delete a field from a JSON file.
404
+ */
405
+ async deleteField(filePath, path) {
406
+ let content;
407
+ try {
408
+ content = await readFile(filePath, 'utf-8');
409
+ }
410
+ catch {
411
+ return false;
412
+ }
413
+ let data;
414
+ try {
415
+ data = JSON.parse(content);
416
+ }
417
+ catch {
418
+ return false;
419
+ }
420
+ const deleted = deleteByPath(data, path);
421
+ if (deleted) {
422
+ await this.atomicWriteJson(filePath, data);
423
+ }
424
+ return deleted;
425
+ }
426
+ /**
427
+ * Write JSON to a file atomically (write temp → rename).
428
+ */
429
+ async atomicWriteJson(filePath, data) {
430
+ const dir = dirname(filePath);
431
+ const tmpPath = join(dir, `.agent.json.${randomBytes(6).toString('hex')}.tmp`);
432
+ try {
433
+ // Ensure directory exists
434
+ if (!existsSync(dir)) {
435
+ await mkdir(dir, { recursive: true });
436
+ }
437
+ const json = JSON.stringify(data, null, 2) + '\n';
438
+ await writeFile(tmpPath, json, 'utf-8');
439
+ await rename(tmpPath, filePath);
440
+ }
441
+ catch (error) {
442
+ // Attempt cleanup of temp file
443
+ try {
444
+ const { unlink } = await import('fs/promises');
445
+ await unlink(tmpPath);
446
+ }
447
+ catch {
448
+ // Ignore cleanup failure
449
+ }
450
+ throw new KadiError('Failed to write agent.json', 'AGENT_JSON_WRITE_ERROR', {
451
+ path: filePath,
452
+ reason: error instanceof Error ? error.message : String(error),
453
+ });
454
+ }
455
+ }
456
+ // ─────────────────────────────────────────────────────────────────
457
+ // INTERNAL: ABILITY RESOLUTION
458
+ // ─────────────────────────────────────────────────────────────────
459
+ /**
460
+ * Resolve the directory path for an installed ability.
461
+ * Handles version ambiguity with smart defaults.
462
+ */
463
+ async resolveAbilityDir(name, version) {
464
+ const root = await this.getProjectRoot();
465
+ const lockFile = await readLockFile(root);
466
+ const entries = this.findAbilityEntries(lockFile, name);
467
+ if (entries.length === 0) {
468
+ const available = getInstalledAbilityNames(lockFile);
469
+ throw new KadiError(`Ability "${name}" not found in agent-lock.json`, 'ABILITY_NOT_FOUND', {
470
+ abilityName: name,
471
+ searched: join(root, 'agent-lock.json'),
472
+ available: available.length > 0 ? available : undefined,
473
+ hint: `Run \`kadi install ${name}\` to install it`,
474
+ });
475
+ }
476
+ let selected;
477
+ if (version) {
478
+ // Exact version requested
479
+ const exact = entries.find(e => e.version === version);
480
+ if (!exact) {
481
+ throw new KadiError(`Ability "${name}" version "${version}" not found`, 'ABILITY_NOT_FOUND', {
482
+ abilityName: name,
483
+ available: entries.map(e => e.version),
484
+ hint: `Available versions: ${entries.map(e => e.version).join(', ')}`,
485
+ });
486
+ }
487
+ selected = exact;
488
+ }
489
+ else if (entries.length === 1) {
490
+ // Only one version — no ambiguity
491
+ selected = entries[0];
492
+ }
493
+ else {
494
+ // Multiple versions — prefer isTopLevel
495
+ const topLevel = entries.filter(e => e.entry.isTopLevel);
496
+ if (topLevel.length === 1) {
497
+ selected = topLevel[0];
498
+ }
499
+ else if (topLevel.length > 1) {
500
+ // Multiple top-level — pick highest semver
501
+ selected = this.highestVersion(topLevel);
502
+ }
503
+ else {
504
+ // No top-level — ambiguous
505
+ throw new KadiError(`Multiple versions of "${name}" installed — specify a version`, 'AGENT_JSON_VERSION_AMBIGUOUS', {
506
+ abilityName: name,
507
+ available: entries.map(e => e.version),
508
+ hint: `Installed versions: ${entries.map(e => e.version).join(', ')}. Use { version: "x.y.z" } to select one.`,
509
+ });
510
+ }
511
+ }
512
+ return join(root, selected.entry.resolved);
513
+ }
514
+ /**
515
+ * Find all lock file entries matching an ability name.
516
+ */
517
+ findAbilityEntries(lockFile, name) {
518
+ const results = [];
519
+ for (const [key, entry] of Object.entries(lockFile.abilities)) {
520
+ const lastAt = key.lastIndexOf('@');
521
+ const entryName = lastAt !== -1 ? key.substring(0, lastAt) : key;
522
+ if (entryName === name) {
523
+ results.push({ entry, key, version: entry.version });
524
+ }
525
+ }
526
+ return results;
527
+ }
528
+ /**
529
+ * Pick the entry with the highest semver version.
530
+ * Simple comparison — splits on dots and compares numerically.
531
+ */
532
+ highestVersion(entries) {
533
+ return entries.reduce((highest, current) => {
534
+ return this.compareSemver(current.version, highest.version) > 0
535
+ ? current
536
+ : highest;
537
+ });
538
+ }
539
+ /**
540
+ * Compare two semver strings. Returns > 0 if a > b, < 0 if a < b, 0 if equal.
541
+ */
542
+ compareSemver(a, b) {
543
+ const aParts = a.split('.').map(Number);
544
+ const bParts = b.split('.').map(Number);
545
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
546
+ const aVal = aParts[i] ?? 0;
547
+ const bVal = bParts[i] ?? 0;
548
+ if (aVal !== bVal)
549
+ return aVal - bVal;
550
+ }
551
+ return 0;
552
+ }
553
+ }
554
+ //# sourceMappingURL=agent-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-json.js","sourceRoot":"","sources":["../src/agent-json.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -16,6 +16,8 @@
16
16
  */
17
17
  import { type EncryptionKeyPair } from './crypto.js';
18
18
  import type { ClientConfig, ClientIdentity, BrokerState, BrokerToolDefinition, ZodToolDefinition, ToolHandler, LoadedAbility, ToolExecutionBridge, RegisterToolOptions, LoadNativeOptions, LoadStdioOptions, LoadBrokerOptions, InvokeRemoteOptions, BrokerEventHandler, PublishOptions, SubscribeOptions, EmitOptions } from './types.js';
19
+ import { AgentJsonManager } from './agent-json.js';
20
+ import { ProcessManager } from './process-manager.js';
19
21
  /**
20
22
  * The main client for building KADI agents.
21
23
  *
@@ -63,6 +65,10 @@ export declare class KadiClient {
63
65
  private readonly loadedAbilities;
64
66
  /** Registered disconnect hooks */
65
67
  private readonly disconnectHooks;
68
+ /** Lazy-initialized AgentJsonManager */
69
+ private _agentJson;
70
+ /** Lazy-initialized ProcessManager */
71
+ private _processes;
66
72
  /** Ed25519 private key (DER format) - used for signing */
67
73
  private readonly _privateKey;
68
74
  /** Base64-encoded Ed25519 public key (SPKI DER format) */
@@ -700,6 +706,34 @@ export declare class KadiClient {
700
706
  * Sets up graceful shutdown to disconnect loaded abilities.
701
707
  */
702
708
  private serveBroker;
709
+ /**
710
+ * Access the AgentJsonManager for reading/writing agent.json files.
711
+ *
712
+ * Lazily created on first access. Provides unified API for project root,
713
+ * installed ability, and KADI home agent.json files.
714
+ *
715
+ * @example
716
+ * ```typescript
717
+ * const config = await client.agentJson.readProject();
718
+ * const deploy = await client.agentJson.readProject('deploy.local');
719
+ * await client.agentJson.writeProject('deploy.staging', { target: 'akash' });
720
+ * ```
721
+ */
722
+ get agentJson(): AgentJsonManager;
723
+ /**
724
+ * Access the ProcessManager for spawning and managing background processes.
725
+ *
726
+ * Lazily created on first access. Supports headless, piped, and bridge modes.
727
+ *
728
+ * @example
729
+ * ```typescript
730
+ * const build = await client.processes.spawn('build', {
731
+ * command: 'docker', args: ['build', '.'], mode: 'piped',
732
+ * });
733
+ * build.on('exit', ({ exitCode }) => console.log('done:', exitCode));
734
+ * ```
735
+ */
736
+ get processes(): ProcessManager;
703
737
  /**
704
738
  * Get agent information (for readAgentJson protocol).
705
739
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}