@aiagentflow/cli 0.7.0 → 0.7.1

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,8 +1,8 @@
1
1
  /**
2
2
  * `aiagentflow doctor` — Health check for providers and setup.
3
3
  *
4
- * Verifies that all configured providers can connect and that
5
- * the project is properly set up.
4
+ * Verifies environment, config, prompt files, agent-provider mapping,
5
+ * and provider connectivity.
6
6
  *
7
7
  * Dependency direction: doctor.ts → commander, ora, chalk, config module, registry
8
8
  * Used by: cli/index.ts
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SAsDpB,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuIpC,eAAO,MAAM,aAAa,SAmFpB,CAAC"}
@@ -1,63 +1,193 @@
1
1
  /**
2
2
  * `aiagentflow doctor` — Health check for providers and setup.
3
3
  *
4
- * Verifies that all configured providers can connect and that
5
- * the project is properly set up.
4
+ * Verifies environment, config, prompt files, agent-provider mapping,
5
+ * and provider connectivity.
6
6
  *
7
7
  * Dependency direction: doctor.ts → commander, ora, chalk, config module, registry
8
8
  * Used by: cli/index.ts
9
9
  */
10
10
  import { Command } from 'commander';
11
+ import { existsSync } from 'node:fs';
12
+ import { execSync } from 'node:child_process';
11
13
  import chalk from 'chalk';
12
14
  import ora from 'ora';
13
15
  import { configExists, loadConfig } from '../../core/config/manager.js';
16
+ import { getPromptsDir, getPoliciesDir } from '../../prompts/library.js';
14
17
  import { validateAllProviders } from '../../providers/registry.js';
18
+ import { ALL_AGENT_ROLES } from '../../agents/types.js';
15
19
  import { logger } from '../../utils/logger.js';
20
+ function pass(label) {
21
+ return { ok: true, label };
22
+ }
23
+ function fail(label, detail) {
24
+ return { ok: false, label, detail };
25
+ }
26
+ function skip(label) {
27
+ return { ok: true, label: chalk.gray(`- ${label} (skipped)`) };
28
+ }
29
+ function printResult(result) {
30
+ if (result.label.startsWith(chalk.gray('-'))) {
31
+ // Already formatted skip result
32
+ console.log(` ${result.label}`);
33
+ }
34
+ else if (result.ok) {
35
+ console.log(chalk.green(` ✔ ${result.label}`));
36
+ }
37
+ else {
38
+ console.log(chalk.red(` ✘ ${result.label}`));
39
+ if (result.detail) {
40
+ console.log(chalk.gray(` → ${result.detail}`));
41
+ }
42
+ }
43
+ }
44
+ /** Check Node.js version meets minimum requirement. */
45
+ function checkNodeVersion() {
46
+ const version = process.versions.node;
47
+ const major = parseInt(version.split('.')[0], 10);
48
+ if (major >= 20) {
49
+ return pass(`Node.js v${version}`);
50
+ }
51
+ return fail(`Node.js v${version}`, 'Requires Node.js >= 20.0.0');
52
+ }
53
+ /** Check if git is available. */
54
+ function checkGit() {
55
+ try {
56
+ const version = execSync('git --version', { encoding: 'utf-8' }).trim();
57
+ return pass(version);
58
+ }
59
+ catch {
60
+ return fail('Git not found', 'Install git for auto-branch and auto-commit features');
61
+ }
62
+ }
63
+ /** Check if prompt files exist for all agent roles. */
64
+ function checkPromptFiles(projectRoot) {
65
+ const promptsDir = getPromptsDir(projectRoot);
66
+ const results = [];
67
+ if (!existsSync(promptsDir)) {
68
+ results.push(fail('Prompts directory missing', 'Run "aiagentflow init" to generate'));
69
+ return results;
70
+ }
71
+ let allExist = true;
72
+ const missing = [];
73
+ for (const role of ALL_AGENT_ROLES) {
74
+ const filePath = `${promptsDir}/${role}.md`;
75
+ if (!existsSync(filePath)) {
76
+ allExist = false;
77
+ missing.push(role);
78
+ }
79
+ }
80
+ if (allExist) {
81
+ results.push(pass(`Agent prompts (${ALL_AGENT_ROLES.length}/${ALL_AGENT_ROLES.length})`));
82
+ }
83
+ else {
84
+ results.push(fail(`Agent prompts (${ALL_AGENT_ROLES.length - missing.length}/${ALL_AGENT_ROLES.length})`, `Missing: ${missing.join(', ')} — run "aiagentflow init" to regenerate`));
85
+ }
86
+ const policiesDir = getPoliciesDir(projectRoot);
87
+ const standardsPath = `${policiesDir}/coding-standards.md`;
88
+ if (existsSync(standardsPath)) {
89
+ results.push(pass('Coding standards policy'));
90
+ }
91
+ else {
92
+ results.push(fail('Coding standards policy missing', 'Run "aiagentflow init" to generate'));
93
+ }
94
+ return results;
95
+ }
96
+ /** Verify each agent's provider is actually configured. */
97
+ function checkAgentProviderMapping(config) {
98
+ const results = [];
99
+ const configuredProviders = new Set(Object.keys(config.providers).filter((p) => !!config.providers[p]));
100
+ // Ollama is always "configured" (no API key needed)
101
+ configuredProviders.add('ollama');
102
+ for (const role of ALL_AGENT_ROLES) {
103
+ const agentConfig = config.agents[role];
104
+ const provider = agentConfig.provider;
105
+ const model = agentConfig.model;
106
+ if (configuredProviders.has(provider)) {
107
+ results.push(pass(`${role} → ${provider}/${model}`));
108
+ }
109
+ else {
110
+ results.push(fail(`${role} → ${provider}/${model}`, `Provider "${provider}" is not configured`));
111
+ }
112
+ }
113
+ return results;
114
+ }
16
115
  export const doctorCommand = new Command('doctor')
17
116
  .description('Check project setup and provider health')
18
117
  .action(async () => {
19
118
  const projectRoot = process.cwd();
20
- logger.header('AI Workflow Health Check');
21
- // Check config exists
22
- const configCheck = configExists(projectRoot);
23
- console.log(configCheck
24
- ? chalk.green(' ✔ Configuration file found')
25
- : chalk.red(' ✘ No configuration file — run "aiagentflow init"'));
26
- if (!configCheck) {
119
+ let failures = 0;
120
+ // ── Environment ──
121
+ logger.header('Environment');
122
+ const nodeResult = checkNodeVersion();
123
+ const gitResult = checkGit();
124
+ printResult(nodeResult);
125
+ printResult(gitResult);
126
+ if (!nodeResult.ok)
127
+ failures++;
128
+ if (!gitResult.ok)
129
+ failures++;
130
+ // ── Configuration ──
131
+ console.log();
132
+ logger.header('Configuration');
133
+ if (!configExists(projectRoot)) {
134
+ printResult(fail('Configuration file', 'Run "aiagentflow init" first'));
27
135
  process.exit(1);
28
136
  }
29
- // Load config
30
- const config = loadConfig(projectRoot);
31
- console.log(chalk.green(' ✔ Configuration is valid'));
32
- // Check providers
137
+ printResult(pass('Configuration file found'));
138
+ let config;
139
+ try {
140
+ config = loadConfig(projectRoot);
141
+ printResult(pass('Configuration is valid'));
142
+ }
143
+ catch (err) {
144
+ printResult(fail('Configuration is invalid', err instanceof Error ? err.message : String(err)));
145
+ process.exit(1);
146
+ }
147
+ // ── Prompt Files ──
148
+ console.log();
149
+ logger.header('Prompt Files');
150
+ const promptResults = checkPromptFiles(projectRoot);
151
+ for (const r of promptResults) {
152
+ printResult(r);
153
+ if (!r.ok)
154
+ failures++;
155
+ }
156
+ // ── Agent → Provider Mapping ──
33
157
  console.log();
34
- logger.info('Checking provider connections...');
158
+ logger.header('Agent Configuration');
159
+ const mappingResults = checkAgentProviderMapping(config);
160
+ for (const r of mappingResults) {
161
+ printResult(r);
162
+ if (!r.ok)
163
+ failures++;
164
+ }
165
+ // ── Provider Connectivity ──
166
+ console.log();
167
+ logger.header('Provider Connectivity');
35
168
  const spinner = ora('Testing providers...').start();
36
169
  const results = await validateAllProviders(config.providers);
37
170
  spinner.stop();
38
- let allHealthy = true;
39
171
  for (const [name, healthy] of Object.entries(results)) {
172
+ const isConfigured = name === 'ollama' || !!config.providers[name];
40
173
  if (healthy) {
41
- console.log(chalk.green(` ✔ ${name} — connected`));
174
+ printResult(pass(`${name} — connected`));
175
+ }
176
+ else if (isConfigured) {
177
+ printResult(fail(`${name} — connection failed`));
178
+ failures++;
42
179
  }
43
180
  else {
44
- const isConfigured = !!config.providers[name];
45
- if (isConfigured) {
46
- console.log(chalk.red(` ✘ ${name} — connection failed`));
47
- allHealthy = false;
48
- }
49
- else {
50
- console.log(chalk.gray(` - ${name} — not configured (skipped)`));
51
- }
181
+ printResult(skip(`${name} not configured`));
52
182
  }
53
183
  }
54
- // Summary
184
+ // ── Summary ──
55
185
  console.log();
56
- if (allHealthy) {
186
+ if (failures === 0) {
57
187
  logger.success('All checks passed! You\'re ready to go.');
58
188
  }
59
189
  else {
60
- logger.warn('Some checks failed. Review the output above.');
190
+ logger.warn(`${failures} check(s) failed. Review the output above.`);
61
191
  }
62
192
  });
63
193
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC7C,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAE5C,sBAAsB;IACtB,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CACP,WAAW;QACP,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CACxE,CAAC;IAEF,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEvD,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACJ,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAqC,CAAC,CAAC;YAE/E,IAAI,YAAY,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC;gBAC1D,UAAU,GAAG,KAAK,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAChE,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,5 @@
9
9
  * Used by: cli/index.ts
10
10
  */
11
11
  import { Command } from 'commander';
12
- declare const _PLAN_SYSTEM_PROMPT = "You are a task planner. Given reference documents (PRDs, specs, architecture docs), break them down into a list of implementation tasks.\n\n## Rules:\n- Output exactly ONE task per line\n- Each task should be a clear, actionable instruction a developer can execute\n- Tasks should be ordered by dependency (foundational tasks first)\n- Do NOT number the tasks or add bullet points \u2014 just plain text, one per line\n- Do NOT add blank lines between tasks\n- Do NOT add headers, commentary, or explanations \u2014 ONLY task lines\n- Each task should be self-contained enough to pass to an AI coding agent\n\n## Example output:\nCreate the User model with fields: id, email, name, passwordHash, createdAt\nAdd input validation middleware for user registration endpoint\nImplement POST /api/users registration endpoint with bcrypt password hashing\nWrite unit tests for User model validation\nWrite integration tests for registration endpoint";
13
- export { _PLAN_SYSTEM_PROMPT as PLAN_SYSTEM_PROMPT };
14
12
  export declare const planCommand: Command;
15
13
  //# sourceMappingURL=plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,QAAA,MAAM,mBAAmB,m7BAgByB,CAAC;AAGnD,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;AAErD,eAAO,MAAM,WAAW,SAiElB,CAAC"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAiElB,CAAC"}
@@ -15,26 +15,6 @@ import { configExists, loadConfig } from '../../core/config/manager.js';
15
15
  import { loadContextDocuments, formatContextForAgent } from '../../core/workflow/context-loader.js';
16
16
  import { createAgent } from '../../agents/factory.js';
17
17
  import { logger } from '../../utils/logger.js';
18
- // TODO: Use this system prompt via agent.execute({ systemPrompt }) once the agent API supports it
19
- const _PLAN_SYSTEM_PROMPT = `You are a task planner. Given reference documents (PRDs, specs, architecture docs), break them down into a list of implementation tasks.
20
-
21
- ## Rules:
22
- - Output exactly ONE task per line
23
- - Each task should be a clear, actionable instruction a developer can execute
24
- - Tasks should be ordered by dependency (foundational tasks first)
25
- - Do NOT number the tasks or add bullet points — just plain text, one per line
26
- - Do NOT add blank lines between tasks
27
- - Do NOT add headers, commentary, or explanations — ONLY task lines
28
- - Each task should be self-contained enough to pass to an AI coding agent
29
-
30
- ## Example output:
31
- Create the User model with fields: id, email, name, passwordHash, createdAt
32
- Add input validation middleware for user registration endpoint
33
- Implement POST /api/users registration endpoint with bcrypt password hashing
34
- Write unit tests for User model validation
35
- Write integration tests for registration endpoint`;
36
- // Exported for future use when agent API supports system prompts
37
- export { _PLAN_SYSTEM_PROMPT as PLAN_SYSTEM_PROMPT };
38
18
  export const planCommand = new Command('plan')
39
19
  .description('Generate a task list from documentation files')
40
20
  .argument('<docs...>', 'Documentation files to analyze (PRDs, specs, etc.)')
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -17,7 +17,7 @@ const program = new Command();
17
17
  program
18
18
  .name('aiagentflow')
19
19
  .description('AI Engineering Workflow Orchestrator — multi-agent development automation')
20
- .version('0.1.0');
20
+ .version('0.7.1');
21
21
  // Register commands
22
22
  program.addCommand(initCommand);
23
23
  program.addCommand(configCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiagentflow/cli",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "A local-first, CLI-driven multi-agent AI software engineering workflow orchestrator — feed specs, PRDs, and guidelines to auto-generate implementation plans and code",
5
5
  "type": "module",
6
6
  "bin": {