@soleri/cli 1.6.0 → 1.7.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.
@@ -10,6 +10,7 @@ export function registerCreate(program) {
10
10
  .command('create')
11
11
  .argument('[name]', 'Agent ID (kebab-case)')
12
12
  .option('-c, --config <path>', 'Path to JSON config file (skip interactive prompts)')
13
+ .option('-y, --yes', 'Skip confirmation prompts (use with --config for fully non-interactive)')
13
14
  .description('Create a new Soleri agent')
14
15
  .action(async (name, opts) => {
15
16
  try {
@@ -37,6 +38,7 @@ export function registerCreate(program) {
37
38
  return;
38
39
  }
39
40
  }
41
+ const nonInteractive = !!(opts?.yes || opts?.config);
40
42
  // Hook packs — from config file or interactive prompt
41
43
  let selectedPacks = [];
42
44
  if (config.hookPacks && config.hookPacks.length > 0) {
@@ -51,7 +53,7 @@ export function registerCreate(program) {
51
53
  selectedPacks = selectedPacks.filter((pk) => available.includes(pk));
52
54
  }
53
55
  }
54
- else if (!opts?.config) {
56
+ else if (!nonInteractive) {
55
57
  const packs = listPacks();
56
58
  const packChoices = packs.map((pk) => ({
57
59
  value: pk.name,
@@ -75,10 +77,12 @@ export function registerCreate(program) {
75
77
  if (selectedPacks.length > 0) {
76
78
  p.log.info(`Hook packs: ${selectedPacks.join(', ')}`);
77
79
  }
78
- const confirmed = await p.confirm({ message: 'Create agent?' });
79
- if (p.isCancel(confirmed) || !confirmed) {
80
- p.outro('Cancelled.');
81
- return;
80
+ if (!nonInteractive) {
81
+ const confirmed = await p.confirm({ message: 'Create agent?' });
82
+ if (p.isCancel(confirmed) || !confirmed) {
83
+ p.outro('Cancelled.');
84
+ return;
85
+ }
82
86
  }
83
87
  // Scaffold + auto-build
84
88
  const s = p.spinner();
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,14 @@ export function registerDoctor(program) {
8
8
  log.heading('Soleri Doctor');
9
9
  const results = runAllChecks();
10
10
  let hasFailures = false;
11
+ let hasWarnings = false;
11
12
  for (const r of results) {
12
13
  if (r.status === 'pass')
13
14
  log.pass(r.label, r.detail);
14
- else if (r.status === 'warn')
15
+ else if (r.status === 'warn') {
15
16
  log.warn(r.label, r.detail);
17
+ hasWarnings = true;
18
+ }
16
19
  else {
17
20
  log.fail(r.label, r.detail);
18
21
  hasFailures = true;
@@ -23,6 +26,9 @@ export function registerDoctor(program) {
23
26
  log.info('Some checks failed. Fix the issues above and run soleri doctor again.');
24
27
  process.exit(1);
25
28
  }
29
+ else if (hasWarnings) {
30
+ log.info('All checks passed with warnings. Run from an agent directory to check agent-specific health.');
31
+ }
26
32
  else {
27
33
  log.info('All checks passed!');
28
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,GAAG,EAAE;QACX,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;iBAChD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;iBACrD,CAAC;gBACJ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,GAAG,EAAE;QACX,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;iBAChD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CACN,8FAA8F,CAC/F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,33 +1,68 @@
1
1
  import { resolve } from 'node:path';
2
+ import { homedir } from 'node:os';
3
+ import { existsSync } from 'node:fs';
2
4
  import { listAgents } from '@soleri/forge/lib';
3
5
  import * as log from '../utils/logger.js';
4
6
  function pad(s, len) {
5
7
  return s.length >= len ? s.slice(0, len) : s + ' '.repeat(len - s.length);
6
8
  }
9
+ function printAgentTable(agents) {
10
+ console.log(` ${pad('ID', 16)}${pad('Domains', 26)}${pad('Built', 8)}${pad('Deps', 8)}Path`);
11
+ console.log(' ' + '-'.repeat(80));
12
+ for (const agent of agents) {
13
+ const built = agent.hasDistDir ? '✓' : '✗';
14
+ const deps = agent.hasNodeModules ? '✓' : '✗';
15
+ const domains = agent.domains.join(', ') || '(none)';
16
+ const truncDomains = domains.length > 25 ? domains.slice(0, 22) + '...' : domains;
17
+ console.log(` ${pad(agent.id, 16)}${pad(truncDomains, 26)}${pad(built, 8)}${pad(deps, 8)}${agent.path}`);
18
+ }
19
+ }
7
20
  export function registerList(program) {
8
21
  program
9
22
  .command('list')
10
- .argument('[dir]', 'Directory to scan for agents', process.cwd())
11
- .description('List all Soleri agents in a directory')
23
+ .argument('[dir]', 'Directory to scan for agents')
24
+ .description('List all Soleri agents in a directory (scans common locations if none given)')
12
25
  .action((dir) => {
13
- const targetDir = resolve(dir);
14
- const agents = listAgents(targetDir);
15
- if (agents.length === 0) {
16
- log.info(`No agents found in ${targetDir}`);
26
+ if (dir) {
27
+ // Explicit directory — scan only that
28
+ const targetDir = resolve(dir);
29
+ const agents = listAgents(targetDir);
30
+ if (agents.length === 0) {
31
+ log.info(`No agents found in ${targetDir}`);
32
+ return;
33
+ }
34
+ log.heading(`Agents in ${targetDir}`);
35
+ printAgentTable(agents);
36
+ console.log(`\n ${agents.length} agent(s) found`);
17
37
  return;
18
38
  }
19
- log.heading(`Agents in ${targetDir}`);
20
- // Table header
21
- console.log(` ${pad('ID', 16)}${pad('Domains', 26)}${pad('Built', 8)}${pad('Deps', 8)}Path`);
22
- console.log(' ' + '-'.repeat(80));
23
- for (const agent of agents) {
24
- const built = agent.hasDistDir ? '' : '✗';
25
- const deps = agent.hasNodeModules ? '' : '✗';
26
- const domains = agent.domains.join(', ') || '(none)';
27
- const truncDomains = domains.length > 25 ? domains.slice(0, 22) + '...' : domains;
28
- console.log(` ${pad(agent.id, 16)}${pad(truncDomains, 26)}${pad(built, 8)}${pad(deps, 8)}${agent.path}`);
39
+ // No directory given — scan common locations
40
+ const home = homedir();
41
+ const scanDirs = [
42
+ process.cwd(),
43
+ home,
44
+ resolve(home, 'agents'),
45
+ resolve(home, 'projects'),
46
+ ].filter((d, i, arr) => existsSync(d) && arr.indexOf(d) === i);
47
+ const allAgents = [];
48
+ for (const d of scanDirs) {
49
+ allAgents.push(...listAgents(d));
50
+ }
51
+ // Deduplicate by path
52
+ const seen = new Set();
53
+ const unique = allAgents.filter((a) => {
54
+ if (seen.has(a.path))
55
+ return false;
56
+ seen.add(a.path);
57
+ return true;
58
+ });
59
+ if (unique.length === 0) {
60
+ log.info('No agents found. Create one with: soleri create');
61
+ return;
29
62
  }
30
- console.log(`\n ${agents.length} agent(s) found`);
63
+ log.heading('Soleri Agents');
64
+ printAgentTable(unique);
65
+ console.log(`\n ${unique.length} agent(s) found`);
31
66
  });
32
67
  }
33
68
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,SAAS,GAAG,CAAC,CAAS,EAAE,GAAW;IACjC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,OAAO,EAAE,8BAA8B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAChE,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;QAEtC,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YACrD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAClF,OAAO,CAAC,GAAG,CACT,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAC7F,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,SAAS,GAAG,CAAC,CAAS,EAAE,GAAW;IACjC,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAClF,OAAO,CAAC,GAAG,CACT,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAC7F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;SACjD,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,CAAC,GAAY,EAAE,EAAE;QACvB,IAAI,GAAG,EAAE,CAAC;YACR,sCAAsC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,GAAG,CAAC,OAAO,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;YACtC,eAAe,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,6CAA6C;QAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG;YACf,OAAO,CAAC,GAAG,EAAE;YACb,IAAI;YACJ,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;YACvB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;SAC1B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/D,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7B,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/main.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
2
3
  import { Command } from 'commander';
3
4
  import { registerCreate } from './commands/create.js';
4
5
  import { registerList } from './commands/list.js';
@@ -10,11 +11,13 @@ import { registerHooks } from './commands/hooks.js';
10
11
  import { registerGovernance } from './commands/governance.js';
11
12
  import { registerTest } from './commands/test.js';
12
13
  import { registerUpgrade } from './commands/upgrade.js';
14
+ const require = createRequire(import.meta.url);
15
+ const { version } = require('../package.json');
13
16
  const program = new Command();
14
17
  program
15
18
  .name('soleri')
16
19
  .description('Developer CLI for creating and managing Soleri AI agents')
17
- .version('1.5.0');
20
+ .version(version);
18
21
  registerCreate(program);
19
22
  registerList(program);
20
23
  registerAddDomain(program);
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,eAAe,CAAC,OAAO,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,eAAe,CAAC,OAAO,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soleri/cli",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Developer CLI for creating and managing Soleri AI agents.",
5
5
  "keywords": [
6
6
  "agent",
@@ -12,8 +12,9 @@ export function registerCreate(program: Command): void {
12
12
  .command('create')
13
13
  .argument('[name]', 'Agent ID (kebab-case)')
14
14
  .option('-c, --config <path>', 'Path to JSON config file (skip interactive prompts)')
15
+ .option('-y, --yes', 'Skip confirmation prompts (use with --config for fully non-interactive)')
15
16
  .description('Create a new Soleri agent')
16
- .action(async (name?: string, opts?: { config?: string }) => {
17
+ .action(async (name?: string, opts?: { config?: string; yes?: boolean }) => {
17
18
  try {
18
19
  let config;
19
20
 
@@ -40,6 +41,8 @@ export function registerCreate(program: Command): void {
40
41
  }
41
42
  }
42
43
 
44
+ const nonInteractive = !!(opts?.yes || opts?.config);
45
+
43
46
  // Hook packs — from config file or interactive prompt
44
47
  let selectedPacks: string[] = [];
45
48
  if (config.hookPacks && config.hookPacks.length > 0) {
@@ -56,7 +59,7 @@ export function registerCreate(program: Command): void {
56
59
  }
57
60
  selectedPacks = selectedPacks.filter((pk) => available.includes(pk));
58
61
  }
59
- } else if (!opts?.config) {
62
+ } else if (!nonInteractive) {
60
63
  const packs = listPacks();
61
64
  const packChoices = packs.map((pk) => ({
62
65
  value: pk.name,
@@ -85,10 +88,12 @@ export function registerCreate(program: Command): void {
85
88
  p.log.info(`Hook packs: ${selectedPacks.join(', ')}`);
86
89
  }
87
90
 
88
- const confirmed = await p.confirm({ message: 'Create agent?' });
89
- if (p.isCancel(confirmed) || !confirmed) {
90
- p.outro('Cancelled.');
91
- return;
91
+ if (!nonInteractive) {
92
+ const confirmed = await p.confirm({ message: 'Create agent?' });
93
+ if (p.isCancel(confirmed) || !confirmed) {
94
+ p.outro('Cancelled.');
95
+ return;
96
+ }
92
97
  }
93
98
 
94
99
  // Scaffold + auto-build
@@ -11,11 +11,14 @@ export function registerDoctor(program: Command): void {
11
11
 
12
12
  const results = runAllChecks();
13
13
  let hasFailures = false;
14
+ let hasWarnings = false;
14
15
 
15
16
  for (const r of results) {
16
17
  if (r.status === 'pass') log.pass(r.label, r.detail);
17
- else if (r.status === 'warn') log.warn(r.label, r.detail);
18
- else {
18
+ else if (r.status === 'warn') {
19
+ log.warn(r.label, r.detail);
20
+ hasWarnings = true;
21
+ } else {
19
22
  log.fail(r.label, r.detail);
20
23
  hasFailures = true;
21
24
  }
@@ -26,6 +29,10 @@ export function registerDoctor(program: Command): void {
26
29
  if (hasFailures) {
27
30
  log.info('Some checks failed. Fix the issues above and run soleri doctor again.');
28
31
  process.exit(1);
32
+ } else if (hasWarnings) {
33
+ log.info(
34
+ 'All checks passed with warnings. Run from an agent directory to check agent-specific health.',
35
+ );
29
36
  } else {
30
37
  log.info('All checks passed!');
31
38
  }
@@ -1,42 +1,81 @@
1
1
  import { resolve } from 'node:path';
2
+ import { homedir } from 'node:os';
3
+ import { existsSync } from 'node:fs';
2
4
  import type { Command } from 'commander';
3
5
  import { listAgents } from '@soleri/forge/lib';
6
+ import type { AgentInfo } from '@soleri/forge/lib';
4
7
  import * as log from '../utils/logger.js';
5
8
 
6
9
  function pad(s: string, len: number): string {
7
10
  return s.length >= len ? s.slice(0, len) : s + ' '.repeat(len - s.length);
8
11
  }
9
12
 
13
+ function printAgentTable(agents: AgentInfo[]): void {
14
+ console.log(` ${pad('ID', 16)}${pad('Domains', 26)}${pad('Built', 8)}${pad('Deps', 8)}Path`);
15
+ console.log(' ' + '-'.repeat(80));
16
+
17
+ for (const agent of agents) {
18
+ const built = agent.hasDistDir ? '✓' : '✗';
19
+ const deps = agent.hasNodeModules ? '✓' : '✗';
20
+ const domains = agent.domains.join(', ') || '(none)';
21
+ const truncDomains = domains.length > 25 ? domains.slice(0, 22) + '...' : domains;
22
+ console.log(
23
+ ` ${pad(agent.id, 16)}${pad(truncDomains, 26)}${pad(built, 8)}${pad(deps, 8)}${agent.path}`,
24
+ );
25
+ }
26
+ }
27
+
10
28
  export function registerList(program: Command): void {
11
29
  program
12
30
  .command('list')
13
- .argument('[dir]', 'Directory to scan for agents', process.cwd())
14
- .description('List all Soleri agents in a directory')
15
- .action((dir: string) => {
16
- const targetDir = resolve(dir);
17
- const agents = listAgents(targetDir);
18
-
19
- if (agents.length === 0) {
20
- log.info(`No agents found in ${targetDir}`);
31
+ .argument('[dir]', 'Directory to scan for agents')
32
+ .description('List all Soleri agents in a directory (scans common locations if none given)')
33
+ .action((dir?: string) => {
34
+ if (dir) {
35
+ // Explicit directory — scan only that
36
+ const targetDir = resolve(dir);
37
+ const agents = listAgents(targetDir);
38
+
39
+ if (agents.length === 0) {
40
+ log.info(`No agents found in ${targetDir}`);
41
+ return;
42
+ }
43
+
44
+ log.heading(`Agents in ${targetDir}`);
45
+ printAgentTable(agents);
46
+ console.log(`\n ${agents.length} agent(s) found`);
21
47
  return;
22
48
  }
23
49
 
24
- log.heading(`Agents in ${targetDir}`);
50
+ // No directory given — scan common locations
51
+ const home = homedir();
52
+ const scanDirs = [
53
+ process.cwd(),
54
+ home,
55
+ resolve(home, 'agents'),
56
+ resolve(home, 'projects'),
57
+ ].filter((d, i, arr) => existsSync(d) && arr.indexOf(d) === i);
58
+
59
+ const allAgents: AgentInfo[] = [];
60
+ for (const d of scanDirs) {
61
+ allAgents.push(...listAgents(d));
62
+ }
25
63
 
26
- // Table header
27
- console.log(` ${pad('ID', 16)}${pad('Domains', 26)}${pad('Built', 8)}${pad('Deps', 8)}Path`);
28
- console.log(' ' + '-'.repeat(80));
64
+ // Deduplicate by path
65
+ const seen = new Set<string>();
66
+ const unique = allAgents.filter((a) => {
67
+ if (seen.has(a.path)) return false;
68
+ seen.add(a.path);
69
+ return true;
70
+ });
29
71
 
30
- for (const agent of agents) {
31
- const built = agent.hasDistDir ? '✓' : '✗';
32
- const deps = agent.hasNodeModules ? '✓' : '✗';
33
- const domains = agent.domains.join(', ') || '(none)';
34
- const truncDomains = domains.length > 25 ? domains.slice(0, 22) + '...' : domains;
35
- console.log(
36
- ` ${pad(agent.id, 16)}${pad(truncDomains, 26)}${pad(built, 8)}${pad(deps, 8)}${agent.path}`,
37
- );
72
+ if (unique.length === 0) {
73
+ log.info('No agents found. Create one with: soleri create');
74
+ return;
38
75
  }
39
76
 
40
- console.log(`\n ${agents.length} agent(s) found`);
77
+ log.heading('Soleri Agents');
78
+ printAgentTable(unique);
79
+ console.log(`\n ${unique.length} agent(s) found`);
41
80
  });
42
81
  }
package/src/main.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import { createRequire } from 'node:module';
3
4
  import { Command } from 'commander';
4
5
  import { registerCreate } from './commands/create.js';
5
6
  import { registerList } from './commands/list.js';
@@ -12,12 +13,15 @@ import { registerGovernance } from './commands/governance.js';
12
13
  import { registerTest } from './commands/test.js';
13
14
  import { registerUpgrade } from './commands/upgrade.js';
14
15
 
16
+ const require = createRequire(import.meta.url);
17
+ const { version } = require('../package.json');
18
+
15
19
  const program = new Command();
16
20
 
17
21
  program
18
22
  .name('soleri')
19
23
  .description('Developer CLI for creating and managing Soleri AI agents')
20
- .version('1.5.0');
24
+ .version(version);
21
25
 
22
26
  registerCreate(program);
23
27
  registerList(program);