@bhimudev/gnanai 0.4.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 (274) hide show
  1. package/README.md +270 -0
  2. package/dist/bin/cli.d.ts +3 -0
  3. package/dist/bin/cli.d.ts.map +1 -0
  4. package/dist/bin/cli.js +188 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/commands/cleanup.d.ts +21 -0
  7. package/dist/commands/cleanup.d.ts.map +1 -0
  8. package/dist/commands/cleanup.js +380 -0
  9. package/dist/commands/cleanup.js.map +1 -0
  10. package/dist/commands/dispatch.d.ts +13 -0
  11. package/dist/commands/dispatch.d.ts.map +1 -0
  12. package/dist/commands/dispatch.js +85 -0
  13. package/dist/commands/dispatch.js.map +1 -0
  14. package/dist/commands/doctor.d.ts +2 -0
  15. package/dist/commands/doctor.d.ts.map +1 -0
  16. package/dist/commands/doctor.js +155 -0
  17. package/dist/commands/doctor.js.map +1 -0
  18. package/dist/commands/generate.d.ts +3 -0
  19. package/dist/commands/generate.d.ts.map +1 -0
  20. package/dist/commands/generate.js +167 -0
  21. package/dist/commands/generate.js.map +1 -0
  22. package/dist/commands/init.d.ts +10 -0
  23. package/dist/commands/init.d.ts.map +1 -0
  24. package/dist/commands/init.js +711 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/knowledge-sync.d.ts +69 -0
  27. package/dist/commands/knowledge-sync.d.ts.map +1 -0
  28. package/dist/commands/knowledge-sync.js +661 -0
  29. package/dist/commands/knowledge-sync.js.map +1 -0
  30. package/dist/commands/knowledge.d.ts +35 -0
  31. package/dist/commands/knowledge.d.ts.map +1 -0
  32. package/dist/commands/knowledge.js +254 -0
  33. package/dist/commands/knowledge.js.map +1 -0
  34. package/dist/commands/rollback.d.ts +13 -0
  35. package/dist/commands/rollback.d.ts.map +1 -0
  36. package/dist/commands/rollback.js +186 -0
  37. package/dist/commands/rollback.js.map +1 -0
  38. package/dist/commands/setup-config.d.ts +6 -0
  39. package/dist/commands/setup-config.d.ts.map +1 -0
  40. package/dist/commands/setup-config.js +663 -0
  41. package/dist/commands/setup-config.js.map +1 -0
  42. package/dist/commands/setup-project.d.ts +6 -0
  43. package/dist/commands/setup-project.d.ts.map +1 -0
  44. package/dist/commands/setup-project.js +361 -0
  45. package/dist/commands/setup-project.js.map +1 -0
  46. package/dist/commands/setup.d.ts +3 -0
  47. package/dist/commands/setup.d.ts.map +1 -0
  48. package/dist/commands/setup.js +293 -0
  49. package/dist/commands/setup.js.map +1 -0
  50. package/dist/commands/status.d.ts +51 -0
  51. package/dist/commands/status.d.ts.map +1 -0
  52. package/dist/commands/status.js +182 -0
  53. package/dist/commands/status.js.map +1 -0
  54. package/dist/commands/uninstall.d.ts +3 -0
  55. package/dist/commands/uninstall.d.ts.map +1 -0
  56. package/dist/commands/uninstall.js +173 -0
  57. package/dist/commands/uninstall.js.map +1 -0
  58. package/dist/commands/update.d.ts +10 -0
  59. package/dist/commands/update.d.ts.map +1 -0
  60. package/dist/commands/update.js +435 -0
  61. package/dist/commands/update.js.map +1 -0
  62. package/dist/commands/worktree.d.ts +30 -0
  63. package/dist/commands/worktree.d.ts.map +1 -0
  64. package/dist/commands/worktree.js +262 -0
  65. package/dist/commands/worktree.js.map +1 -0
  66. package/dist/generator/claude-cli.d.ts +24 -0
  67. package/dist/generator/claude-cli.d.ts.map +1 -0
  68. package/dist/generator/claude-cli.js +239 -0
  69. package/dist/generator/claude-cli.js.map +1 -0
  70. package/dist/generator/prompt-builder.d.ts +7 -0
  71. package/dist/generator/prompt-builder.d.ts.map +1 -0
  72. package/dist/generator/prompt-builder.js +144 -0
  73. package/dist/generator/prompt-builder.js.map +1 -0
  74. package/dist/index.d.ts +36 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +45 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/mcp/embeddings.d.ts +53 -0
  79. package/dist/mcp/embeddings.d.ts.map +1 -0
  80. package/dist/mcp/embeddings.js +68 -0
  81. package/dist/mcp/embeddings.js.map +1 -0
  82. package/dist/mcp/hybrid-search.d.ts +25 -0
  83. package/dist/mcp/hybrid-search.d.ts.map +1 -0
  84. package/dist/mcp/hybrid-search.js +72 -0
  85. package/dist/mcp/hybrid-search.js.map +1 -0
  86. package/dist/mcp/knowledge-server.d.ts +4 -0
  87. package/dist/mcp/knowledge-server.d.ts.map +1 -0
  88. package/dist/mcp/knowledge-server.js +294 -0
  89. package/dist/mcp/knowledge-server.js.map +1 -0
  90. package/dist/mcp/knowledge-utils.d.ts +65 -0
  91. package/dist/mcp/knowledge-utils.d.ts.map +1 -0
  92. package/dist/mcp/knowledge-utils.js +207 -0
  93. package/dist/mcp/knowledge-utils.js.map +1 -0
  94. package/dist/mcp/search-factory.d.ts +9 -0
  95. package/dist/mcp/search-factory.d.ts.map +1 -0
  96. package/dist/mcp/search-factory.js +23 -0
  97. package/dist/mcp/search-factory.js.map +1 -0
  98. package/dist/mcp/search-index.d.ts +45 -0
  99. package/dist/mcp/search-index.d.ts.map +1 -0
  100. package/dist/mcp/search-index.js +2 -0
  101. package/dist/mcp/search-index.js.map +1 -0
  102. package/dist/mcp/search-minisearch.d.ts +46 -0
  103. package/dist/mcp/search-minisearch.d.ts.map +1 -0
  104. package/dist/mcp/search-minisearch.js +99 -0
  105. package/dist/mcp/search-minisearch.js.map +1 -0
  106. package/dist/mcp/search-sqlite.d.ts +30 -0
  107. package/dist/mcp/search-sqlite.d.ts.map +1 -0
  108. package/dist/mcp/search-sqlite.js +188 -0
  109. package/dist/mcp/search-sqlite.js.map +1 -0
  110. package/dist/mcp/vector-store.d.ts +52 -0
  111. package/dist/mcp/vector-store.d.ts.map +1 -0
  112. package/dist/mcp/vector-store.js +183 -0
  113. package/dist/mcp/vector-store.js.map +1 -0
  114. package/dist/scaffold/copy-core-agents.d.ts +2 -0
  115. package/dist/scaffold/copy-core-agents.d.ts.map +1 -0
  116. package/dist/scaffold/copy-core-agents.js +90 -0
  117. package/dist/scaffold/copy-core-agents.js.map +1 -0
  118. package/dist/scaffold/create-claude-settings.d.ts +40 -0
  119. package/dist/scaffold/create-claude-settings.d.ts.map +1 -0
  120. package/dist/scaffold/create-claude-settings.js +422 -0
  121. package/dist/scaffold/create-claude-settings.js.map +1 -0
  122. package/dist/scaffold/create-config.d.ts +14 -0
  123. package/dist/scaffold/create-config.d.ts.map +1 -0
  124. package/dist/scaffold/create-config.js +199 -0
  125. package/dist/scaffold/create-config.js.map +1 -0
  126. package/dist/scaffold/create-project-description.d.ts +12 -0
  127. package/dist/scaffold/create-project-description.d.ts.map +1 -0
  128. package/dist/scaffold/create-project-description.js +104 -0
  129. package/dist/scaffold/create-project-description.js.map +1 -0
  130. package/dist/scaffold/create-structure.d.ts +2 -0
  131. package/dist/scaffold/create-structure.d.ts.map +1 -0
  132. package/dist/scaffold/create-structure.js +146 -0
  133. package/dist/scaffold/create-structure.js.map +1 -0
  134. package/dist/types/dependency-analysis.d.ts +11 -0
  135. package/dist/types/dependency-analysis.d.ts.map +1 -0
  136. package/dist/types/dependency-analysis.js +2 -0
  137. package/dist/types/dependency-analysis.js.map +1 -0
  138. package/dist/types/index.d.ts +526 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +3 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/task.d.ts +25 -0
  143. package/dist/types/task.d.ts.map +1 -0
  144. package/dist/types/task.js +3 -0
  145. package/dist/types/task.js.map +1 -0
  146. package/dist/utils/analyze-files.d.ts +7 -0
  147. package/dist/utils/analyze-files.d.ts.map +1 -0
  148. package/dist/utils/analyze-files.js +27 -0
  149. package/dist/utils/analyze-files.js.map +1 -0
  150. package/dist/utils/backup.d.ts +102 -0
  151. package/dist/utils/backup.d.ts.map +1 -0
  152. package/dist/utils/backup.js +352 -0
  153. package/dist/utils/backup.js.map +1 -0
  154. package/dist/utils/ci-provider.d.ts +23 -0
  155. package/dist/utils/ci-provider.d.ts.map +1 -0
  156. package/dist/utils/ci-provider.js +525 -0
  157. package/dist/utils/ci-provider.js.map +1 -0
  158. package/dist/utils/ci-status.d.ts +57 -0
  159. package/dist/utils/ci-status.d.ts.map +1 -0
  160. package/dist/utils/ci-status.js +349 -0
  161. package/dist/utils/ci-status.js.map +1 -0
  162. package/dist/utils/dependency-analysis.d.ts +34 -0
  163. package/dist/utils/dependency-analysis.d.ts.map +1 -0
  164. package/dist/utils/dependency-analysis.js +298 -0
  165. package/dist/utils/dependency-analysis.js.map +1 -0
  166. package/dist/utils/detect-git.d.ts +57 -0
  167. package/dist/utils/detect-git.d.ts.map +1 -0
  168. package/dist/utils/detect-git.js +439 -0
  169. package/dist/utils/detect-git.js.map +1 -0
  170. package/dist/utils/detect-mcp.d.ts +32 -0
  171. package/dist/utils/detect-mcp.d.ts.map +1 -0
  172. package/dist/utils/detect-mcp.js +178 -0
  173. package/dist/utils/detect-mcp.js.map +1 -0
  174. package/dist/utils/detect-project.d.ts +3 -0
  175. package/dist/utils/detect-project.d.ts.map +1 -0
  176. package/dist/utils/detect-project.js +155 -0
  177. package/dist/utils/detect-project.js.map +1 -0
  178. package/dist/utils/file-comparison.d.ts +89 -0
  179. package/dist/utils/file-comparison.d.ts.map +1 -0
  180. package/dist/utils/file-comparison.js +301 -0
  181. package/dist/utils/file-comparison.js.map +1 -0
  182. package/dist/utils/file-merger.d.ts +74 -0
  183. package/dist/utils/file-merger.d.ts.map +1 -0
  184. package/dist/utils/file-merger.js +350 -0
  185. package/dist/utils/file-merger.js.map +1 -0
  186. package/dist/utils/logger.d.ts +26 -0
  187. package/dist/utils/logger.d.ts.map +1 -0
  188. package/dist/utils/logger.js +72 -0
  189. package/dist/utils/logger.js.map +1 -0
  190. package/dist/utils/managed-process.d.ts +109 -0
  191. package/dist/utils/managed-process.d.ts.map +1 -0
  192. package/dist/utils/managed-process.js +481 -0
  193. package/dist/utils/managed-process.js.map +1 -0
  194. package/dist/utils/merge-claude-settings.d.ts +65 -0
  195. package/dist/utils/merge-claude-settings.d.ts.map +1 -0
  196. package/dist/utils/merge-claude-settings.js +133 -0
  197. package/dist/utils/merge-claude-settings.js.map +1 -0
  198. package/dist/utils/migration.d.ts +74 -0
  199. package/dist/utils/migration.d.ts.map +1 -0
  200. package/dist/utils/migration.js +345 -0
  201. package/dist/utils/migration.js.map +1 -0
  202. package/dist/utils/process-health.d.ts +51 -0
  203. package/dist/utils/process-health.d.ts.map +1 -0
  204. package/dist/utils/process-health.js +123 -0
  205. package/dist/utils/process-health.js.map +1 -0
  206. package/dist/utils/process-registry.d.ts +20 -0
  207. package/dist/utils/process-registry.d.ts.map +1 -0
  208. package/dist/utils/process-registry.js +151 -0
  209. package/dist/utils/process-registry.js.map +1 -0
  210. package/dist/utils/process-tree.d.ts +51 -0
  211. package/dist/utils/process-tree.d.ts.map +1 -0
  212. package/dist/utils/process-tree.js +499 -0
  213. package/dist/utils/process-tree.js.map +1 -0
  214. package/dist/utils/repair-mcp-config.d.ts +15 -0
  215. package/dist/utils/repair-mcp-config.d.ts.map +1 -0
  216. package/dist/utils/repair-mcp-config.js +129 -0
  217. package/dist/utils/repair-mcp-config.js.map +1 -0
  218. package/dist/utils/task-lifecycle.d.ts +60 -0
  219. package/dist/utils/task-lifecycle.d.ts.map +1 -0
  220. package/dist/utils/task-lifecycle.js +310 -0
  221. package/dist/utils/task-lifecycle.js.map +1 -0
  222. package/dist/utils/update-agent-mcp.d.ts +7 -0
  223. package/dist/utils/update-agent-mcp.d.ts.map +1 -0
  224. package/dist/utils/update-agent-mcp.js +115 -0
  225. package/dist/utils/update-agent-mcp.js.map +1 -0
  226. package/dist/utils/update-agent-templates.d.ts +6 -0
  227. package/dist/utils/update-agent-templates.d.ts.map +1 -0
  228. package/dist/utils/update-agent-templates.js +56 -0
  229. package/dist/utils/update-agent-templates.js.map +1 -0
  230. package/dist/utils/update-config-ci.d.ts +7 -0
  231. package/dist/utils/update-config-ci.d.ts.map +1 -0
  232. package/dist/utils/update-config-ci.js +72 -0
  233. package/dist/utils/update-config-ci.js.map +1 -0
  234. package/dist/utils/update-config-git.d.ts +18 -0
  235. package/dist/utils/update-config-git.d.ts.map +1 -0
  236. package/dist/utils/update-config-git.js +146 -0
  237. package/dist/utils/update-config-git.js.map +1 -0
  238. package/dist/utils/update-config-mcp.d.ts +7 -0
  239. package/dist/utils/update-config-mcp.d.ts.map +1 -0
  240. package/dist/utils/update-config-mcp.js +98 -0
  241. package/dist/utils/update-config-mcp.js.map +1 -0
  242. package/dist/utils/validate-config.d.ts +3 -0
  243. package/dist/utils/validate-config.d.ts.map +1 -0
  244. package/dist/utils/validate-config.js +109 -0
  245. package/dist/utils/validate-config.js.map +1 -0
  246. package/dist/utils/version-tracker.d.ts +130 -0
  247. package/dist/utils/version-tracker.d.ts.map +1 -0
  248. package/dist/utils/version-tracker.js +298 -0
  249. package/dist/utils/version-tracker.js.map +1 -0
  250. package/dist/utils/worktree.d.ts +68 -0
  251. package/dist/utils/worktree.d.ts.map +1 -0
  252. package/dist/utils/worktree.js +446 -0
  253. package/dist/utils/worktree.js.map +1 -0
  254. package/package.json +77 -0
  255. package/templates/ARCHAI_README.md +329 -0
  256. package/templates/CLAUDE.md +67 -0
  257. package/templates/PROMPTS.md +506 -0
  258. package/templates/core-agents/boss-agent.md +671 -0
  259. package/templates/core-agents/cleanup-agent.md +145 -0
  260. package/templates/core-agents/code-reviewer.md +175 -0
  261. package/templates/core-agents/critical-reviewer.md +117 -0
  262. package/templates/core-agents/deep-analyst.md +216 -0
  263. package/templates/core-agents/finalization-agent.md +252 -0
  264. package/templates/core-agents/git-coordinator.md +240 -0
  265. package/templates/core-agents/implementation-agent.md +151 -0
  266. package/templates/core-agents/maestro-agent.md +413 -0
  267. package/templates/core-agents/maestro-headless-agent.md +422 -0
  268. package/templates/core-agents/plan-validator.md +198 -0
  269. package/templates/core-agents/quick-fix.md +56 -0
  270. package/templates/core-agents/routing-templates.md +338 -0
  271. package/templates/core-agents/task-orchestrator.md +143 -0
  272. package/templates/core-agents/task-prep.md +202 -0
  273. package/templates/core-agents/tdd-designer.md +143 -0
  274. package/templates/specialist-meta.md +275 -0
@@ -0,0 +1,293 @@
1
+ import inquirer from 'inquirer';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { logger } from '../utils/logger.js';
5
+ import { detectGitRepo, discoverGitDefaults, validateGitignore, fixGitignore, detectGitPatterns } from '../utils/detect-git.js';
6
+ import { updateConfigWithGit, updateConfigWithGitConventions } from '../utils/update-config-git.js';
7
+ import { updateAgentTemplates } from '../utils/update-agent-templates.js';
8
+ import { checkClaudeCli, discoverMcpServers, identifyTaskManagers, getProviderName, introspectTaskManager, } from '../utils/detect-mcp.js';
9
+ import { updateConfigWithMcp } from '../utils/update-config-mcp.js';
10
+ import { updateAgentTemplatesWithMcp } from '../utils/update-agent-mcp.js';
11
+ import { detectCIProvider } from '../utils/ci-provider.js';
12
+ import { updateConfigWithCI } from '../utils/update-config-ci.js';
13
+ export async function setup(options) {
14
+ logger.banner();
15
+ const runGit = options.git || (!options.git && !options.mcp);
16
+ const runMcp = options.mcp || (!options.git && !options.mcp);
17
+ if (runGit) {
18
+ await runGitLoop(options);
19
+ }
20
+ if (runMcp) {
21
+ await runMcpLoop(options);
22
+ }
23
+ }
24
+ /**
25
+ * Git environment detection and validation loop.
26
+ */
27
+ async function runGitLoop(options) {
28
+ console.log('');
29
+ logger.section('Git Configuration');
30
+ console.log('');
31
+ // Step 1: Check for .git directory
32
+ const isGitRepo = await detectGitRepo();
33
+ if (!isGitRepo) {
34
+ logger.info('No .git directory found. Skipping Git configuration.');
35
+ logger.info('Initialize a Git repository first, then run: archai setup --git');
36
+ console.log('');
37
+ return;
38
+ }
39
+ // Step 2: Discover Git defaults
40
+ const spinner = ora('Detecting Git configuration...').start();
41
+ const gitConfig = await discoverGitDefaults();
42
+ spinner.succeed('Git configuration detected');
43
+ // Step 2b: Detect git branching conventions
44
+ const conventionSpinner = ora('Analyzing branch conventions...').start();
45
+ const gitPatterns = await detectGitPatterns();
46
+ conventionSpinner.succeed('Branch conventions detected');
47
+ // Override branchConvention with detected pattern
48
+ gitConfig.branchConvention = gitPatterns.agentBranchConvention;
49
+ // Display discovered config
50
+ console.log('');
51
+ console.log(chalk.white(' Discovered settings:'));
52
+ console.log(chalk.gray(` Default branch: ${chalk.cyan(gitConfig.defaultBranch)}`));
53
+ console.log(chalk.gray(` Current branch: ${chalk.cyan(gitConfig.currentBranch)}`));
54
+ if (gitConfig.remote && gitConfig.remoteUrl) {
55
+ console.log(chalk.gray(` Remote: ${chalk.cyan(gitConfig.remote)} (${gitConfig.remoteUrl})`));
56
+ }
57
+ else {
58
+ console.log(chalk.gray(` Remote: ${chalk.yellow('none configured')}`));
59
+ }
60
+ console.log(chalk.gray(` Branch convention: ${chalk.cyan(gitConfig.branchConvention)}`));
61
+ console.log('');
62
+ // Display detected conventions
63
+ console.log(chalk.white(' Detected conventions:'));
64
+ if (gitPatterns.branchPrefix) {
65
+ console.log(chalk.gray(` Branch prefix: ${chalk.cyan(gitPatterns.branchPrefix)}`));
66
+ }
67
+ console.log(chalk.gray(` Merge strategy: ${chalk.cyan(gitPatterns.mergeStrategy)}`));
68
+ if (gitPatterns.usesPullRequests && gitPatterns.prPlatform) {
69
+ console.log(chalk.gray(` PR platform: ${chalk.cyan(gitPatterns.prPlatform)}`));
70
+ }
71
+ console.log(chalk.gray(` Agent convention: ${chalk.cyan(gitPatterns.agentBranchConvention)}`));
72
+ console.log('');
73
+ // Step 3: Validate .gitignore
74
+ const gitignoreResult = await validateGitignore();
75
+ if (!gitignoreResult.valid) {
76
+ console.log(chalk.yellow(` .gitignore is missing ${gitignoreResult.missing.length} archai entries:`));
77
+ for (const entry of gitignoreResult.missing) {
78
+ console.log(chalk.gray(` - ${entry}`));
79
+ }
80
+ console.log('');
81
+ let shouldFix = options.yes || false;
82
+ if (!options.yes) {
83
+ const { fix } = await inquirer.prompt([{
84
+ type: 'confirm',
85
+ name: 'fix',
86
+ message: 'Add missing entries to .gitignore?',
87
+ default: true,
88
+ }]);
89
+ shouldFix = fix;
90
+ }
91
+ if (shouldFix) {
92
+ await fixGitignore(gitignoreResult.missing);
93
+ logger.success('Updated .gitignore with missing entries');
94
+ }
95
+ else {
96
+ logger.warn('Skipped .gitignore update. Agent scratch files may be committed.');
97
+ }
98
+ console.log('');
99
+ }
100
+ else {
101
+ logger.success('.gitignore contains all required archai entries');
102
+ console.log('');
103
+ }
104
+ // Step 4: Validate remote
105
+ if (!gitConfig.remote) {
106
+ logger.warn('No remote configured. Agents will not be able to push branches.');
107
+ logger.info('Add a remote with: git remote add origin <url>');
108
+ console.log('');
109
+ }
110
+ // Step 5: Write Git config to archai.config.md
111
+ const configSpinner = ora('Updating archai.config.md...').start();
112
+ await updateConfigWithGit(gitConfig);
113
+ configSpinner.succeed('Updated archai.config.md with Git configuration');
114
+ await updateConfigWithGitConventions(gitPatterns, { force: true });
115
+ // Step 5b: Detect CI provider
116
+ const ciSpinner = ora('Detecting CI provider...').start();
117
+ try {
118
+ const ciResult = await detectCIProvider(process.cwd(), { skipConfigOverride: true });
119
+ if (ciResult.provider !== 'none') {
120
+ ciSpinner.succeed(`Detected CI provider: ${ciResult.provider} (via ${ciResult.detectedVia})`);
121
+ }
122
+ else {
123
+ ciSpinner.succeed('No CI provider detected');
124
+ }
125
+ await updateConfigWithCI(ciResult);
126
+ }
127
+ catch {
128
+ ciSpinner.succeed('CI detection complete');
129
+ }
130
+ // Step 6: Update agent templates
131
+ const templateSpinner = ora('Updating agent templates...').start();
132
+ const updatedTemplates = await updateAgentTemplates(gitConfig.defaultBranch);
133
+ if (updatedTemplates > 0) {
134
+ templateSpinner.succeed(`Updated ${updatedTemplates} agent template(s) with default branch`);
135
+ }
136
+ else {
137
+ templateSpinner.succeed('Agent templates already up to date');
138
+ }
139
+ // Success summary
140
+ console.log('');
141
+ logger.divider();
142
+ console.log('');
143
+ logger.success('Git configuration complete!');
144
+ console.log('');
145
+ }
146
+ /**
147
+ * MCP server detection and task manager configuration loop.
148
+ */
149
+ async function runMcpLoop(options) {
150
+ console.log('');
151
+ logger.section('MCP Configuration');
152
+ console.log('');
153
+ // Step 1: Check Claude CLI availability
154
+ const spinner = ora('Checking Claude CLI availability...').start();
155
+ const cliAvailable = checkClaudeCli();
156
+ if (!cliAvailable) {
157
+ spinner.fail('Claude CLI not available');
158
+ console.log('');
159
+ logger.info('Claude CLI not found or not authorized.');
160
+ logger.info('Install Claude Code and run: archai setup --mcp');
161
+ console.log('');
162
+ if (!options.yes) {
163
+ const { continueWithout } = await inquirer.prompt([{
164
+ type: 'confirm',
165
+ name: 'continueWithout',
166
+ message: 'Continue without MCP setup?',
167
+ default: true,
168
+ }]);
169
+ if (!continueWithout)
170
+ return;
171
+ }
172
+ return;
173
+ }
174
+ spinner.succeed('Claude CLI available');
175
+ // Step 2: Discover installed MCPs
176
+ const discoverSpinner = ora('Discovering MCP servers...').start();
177
+ const servers = discoverMcpServers();
178
+ if (servers.length === 0) {
179
+ discoverSpinner.succeed('No MCP servers found');
180
+ console.log('');
181
+ logger.info('No MCP servers are configured. You can add them later.');
182
+ console.log('');
183
+ return;
184
+ }
185
+ discoverSpinner.succeed(`Found ${servers.length} MCP server(s)`);
186
+ // Display discovered servers
187
+ console.log('');
188
+ for (const server of servers) {
189
+ const statusIcon = server.status === 'connected' ? chalk.green('\u25cf') : chalk.red('\u25cf');
190
+ console.log(` ${statusIcon} ${chalk.white(server.name)} ${chalk.gray(`(${server.status})`)}`);
191
+ }
192
+ console.log('');
193
+ // Step 3: Identify task management MCPs
194
+ const taskManagers = identifyTaskManagers(servers);
195
+ if (taskManagers.length === 0) {
196
+ logger.info('No task management MCPs detected.');
197
+ logger.info('Supported: Monday.com, Linear, Jira, Asana, ClickUp, Notion');
198
+ console.log('');
199
+ // Still update config with the list of other servers
200
+ await updateConfigWithMcp({ taskManager: null, otherServers: servers });
201
+ logger.success('Updated archai.config.md with MCP server list');
202
+ console.log('');
203
+ return;
204
+ }
205
+ // Select primary task manager
206
+ let selectedTm = taskManagers[0];
207
+ if (taskManagers.length > 1 && !options.yes) {
208
+ const { chosen } = await inquirer.prompt([{
209
+ type: 'list',
210
+ name: 'chosen',
211
+ message: 'Multiple task managers found. Select primary:',
212
+ choices: taskManagers.map(tm => ({ name: tm.name, value: tm.name })),
213
+ }]);
214
+ selectedTm = taskManagers.find(tm => tm.name === chosen);
215
+ }
216
+ const providerName = getProviderName(selectedTm.name);
217
+ logger.info(`Configuring task manager: ${chalk.cyan(selectedTm.name)}`);
218
+ console.log('');
219
+ // Step 4: Introspect task manager via claude -p
220
+ const introSpinner = ora('Introspecting task manager (this may take a moment)...').start();
221
+ const introspection = introspectTaskManager(selectedTm.name);
222
+ if (!introspection) {
223
+ introSpinner.fail('Could not introspect task manager');
224
+ console.log('');
225
+ logger.warn('Introspection failed. MCP server may not support the required operations.');
226
+ logger.info('You can configure MCP manually in archai.config.md');
227
+ console.log('');
228
+ // Update config without task manager details
229
+ await updateConfigWithMcp({ taskManager: null, otherServers: servers });
230
+ return;
231
+ }
232
+ introSpinner.succeed(`Introspected ${introspection.provider}`);
233
+ // Display mapping
234
+ console.log('');
235
+ console.log(chalk.white(' Concept mapping:'));
236
+ console.log(chalk.gray(` Epic \u2192 ${chalk.cyan(introspection.mapping.epic)}`));
237
+ console.log(chalk.gray(` Task \u2192 ${chalk.cyan(introspection.mapping.task)}`));
238
+ console.log(chalk.gray(` Subtask \u2192 ${chalk.cyan(introspection.mapping.subtask)}`));
239
+ console.log(chalk.gray(` Statuses \u2192 ${chalk.cyan(introspection.mapping.statuses.join(', '))}`));
240
+ console.log('');
241
+ // Step 5: Select board/project
242
+ let selectedBoard;
243
+ if (introspection.boards.length === 0) {
244
+ logger.warn('No boards/projects found. Using default.');
245
+ selectedBoard = { id: 'unknown', name: 'Default' };
246
+ }
247
+ else if (introspection.boards.length === 1 || options.yes) {
248
+ selectedBoard = introspection.boards[0];
249
+ logger.info(`Using board: ${chalk.cyan(selectedBoard.name)} (${selectedBoard.id})`);
250
+ }
251
+ else {
252
+ const { chosenBoard } = await inquirer.prompt([{
253
+ type: 'list',
254
+ name: 'chosenBoard',
255
+ message: 'Select board/project:',
256
+ choices: introspection.boards.map(b => ({
257
+ name: `${b.name} (ID: ${b.id})`,
258
+ value: b.id,
259
+ })),
260
+ }]);
261
+ selectedBoard = introspection.boards.find(b => b.id === chosenBoard);
262
+ }
263
+ console.log('');
264
+ // Step 6: Update agent templates with task manager instructions
265
+ const templateSpinner = ora('Updating agent templates...').start();
266
+ const updatedCount = await updateAgentTemplatesWithMcp();
267
+ if (updatedCount > 0) {
268
+ templateSpinner.succeed(`Updated ${updatedCount} agent template(s) with task manager integration`);
269
+ }
270
+ else {
271
+ templateSpinner.succeed('Agent templates already up to date');
272
+ }
273
+ // Step 7: Update archai.config.md with MCP configuration
274
+ const configSpinner = ora('Updating archai.config.md...').start();
275
+ const otherServers = servers.filter(s => s.name !== selectedTm.name);
276
+ await updateConfigWithMcp({
277
+ taskManager: {
278
+ provider: introspection.provider,
279
+ serverName: selectedTm.name,
280
+ board: selectedBoard,
281
+ mapping: introspection.mapping,
282
+ },
283
+ otherServers,
284
+ });
285
+ configSpinner.succeed('Updated archai.config.md with MCP configuration');
286
+ // Success summary
287
+ console.log('');
288
+ logger.divider();
289
+ console.log('');
290
+ logger.success('MCP configuration complete!');
291
+ console.log('');
292
+ }
293
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { ProcessHealthStatus } from '../types/index.js';
2
+ export interface StatusOptions {
3
+ json?: boolean;
4
+ tree?: boolean;
5
+ prune?: boolean;
6
+ }
7
+ export interface StatusEntry {
8
+ id: string;
9
+ pid: number;
10
+ state: string;
11
+ health: ProcessHealthStatus;
12
+ runtime: number;
13
+ lastEventAge: number;
14
+ processAlive: boolean;
15
+ details: string;
16
+ recommendation: string;
17
+ tree?: Array<{
18
+ pid: number;
19
+ ppid: number;
20
+ name: string;
21
+ cmd: string;
22
+ depth: number;
23
+ }>;
24
+ }
25
+ /**
26
+ * Convert milliseconds to human-readable runtime string.
27
+ * Clamps negative values to 0.
28
+ */
29
+ export declare function formatRuntime(ms: number): string;
30
+ /**
31
+ * Format status entries as an aligned table.
32
+ * Returns empty string for empty input.
33
+ */
34
+ export declare function formatTable(entries: StatusEntry[]): string;
35
+ /**
36
+ * Format a process tree for display.
37
+ * 2 spaces per depth level.
38
+ * Format: "PID {pid} {name} -- {cmd} [depth {depth}]"
39
+ */
40
+ export declare function formatTree(tree: Array<{
41
+ pid: number;
42
+ ppid: number;
43
+ name: string;
44
+ cmd: string;
45
+ depth: number;
46
+ }>): string;
47
+ /**
48
+ * Show all tracked processes and their health.
49
+ */
50
+ export declare function status(options: StatusOptions): Promise<void>;
51
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAuB,mBAAmB,EAAoB,MAAM,mBAAmB,CAAC;AAMpG,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvF;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiBhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAyD1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GACnF,MAAM,CASR;AAMD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFlE"}
@@ -0,0 +1,182 @@
1
+ import path from 'path';
2
+ import chalk from 'chalk';
3
+ import { ProcessRegistry } from '../utils/process-registry.js';
4
+ import { assessAll } from '../utils/process-health.js';
5
+ import { enumerateTree } from '../utils/process-tree.js';
6
+ // ============================================================
7
+ // Pure Helpers (exported for testing)
8
+ // ============================================================
9
+ /**
10
+ * Convert milliseconds to human-readable runtime string.
11
+ * Clamps negative values to 0.
12
+ */
13
+ export function formatRuntime(ms) {
14
+ const clamped = Math.max(0, ms);
15
+ const totalSeconds = Math.floor(clamped / 1000);
16
+ if (totalSeconds < 60) {
17
+ return `${totalSeconds}s`;
18
+ }
19
+ const hours = Math.floor(totalSeconds / 3600);
20
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
21
+ const seconds = totalSeconds % 60;
22
+ if (hours > 0) {
23
+ return `${hours}h ${minutes}m ${seconds}s`;
24
+ }
25
+ return `${minutes}m ${seconds}s`;
26
+ }
27
+ /**
28
+ * Format status entries as an aligned table.
29
+ * Returns empty string for empty input.
30
+ */
31
+ export function formatTable(entries) {
32
+ if (entries.length === 0)
33
+ return '';
34
+ const DETAILS_MAX = 50;
35
+ const columns = ['Task', 'State', 'PID', 'Runtime', 'Health', 'Details'];
36
+ // Build row data
37
+ const rows = entries.map(e => {
38
+ let details = e.details;
39
+ if (details.length > DETAILS_MAX) {
40
+ details = details.slice(0, DETAILS_MAX - 3) + '...';
41
+ }
42
+ return [
43
+ e.id,
44
+ e.state,
45
+ String(e.pid),
46
+ formatRuntime(e.runtime),
47
+ e.health,
48
+ details,
49
+ ];
50
+ });
51
+ // Compute column widths
52
+ const widths = columns.map((col, i) => {
53
+ const maxData = rows.reduce((max, row) => Math.max(max, row[i].length), 0);
54
+ return Math.max(col.length, maxData);
55
+ });
56
+ // Color health status
57
+ const colorHealth = (status) => {
58
+ switch (status) {
59
+ case 'healthy': return chalk.green(status);
60
+ case 'idle': return chalk.yellow(status);
61
+ case 'stuck':
62
+ case 'zombie':
63
+ case 'dead': return chalk.red(status);
64
+ default: return status;
65
+ }
66
+ };
67
+ // Render header
68
+ const header = columns.map((col, i) => col.padEnd(widths[i])).join(' ');
69
+ const separator = widths.map(w => '-'.repeat(w)).join(' ');
70
+ // Render rows
71
+ const dataLines = rows.map(row => row.map((cell, i) => {
72
+ if (i === 4) {
73
+ // Health column: apply color, pad based on raw length
74
+ const padding = widths[i] - cell.length;
75
+ return colorHealth(cell) + ' '.repeat(Math.max(0, padding));
76
+ }
77
+ return cell.padEnd(widths[i]);
78
+ }).join(' '));
79
+ return [header, separator, ...dataLines].join('\n');
80
+ }
81
+ /**
82
+ * Format a process tree for display.
83
+ * 2 spaces per depth level.
84
+ * Format: "PID {pid} {name} -- {cmd} [depth {depth}]"
85
+ */
86
+ export function formatTree(tree) {
87
+ if (tree.length === 0)
88
+ return '';
89
+ return tree
90
+ .map(node => {
91
+ const indent = ' '.repeat(node.depth);
92
+ return `${indent}PID ${node.pid} ${node.name} -- ${node.cmd} [depth ${node.depth}]`;
93
+ })
94
+ .join('\n');
95
+ }
96
+ // ============================================================
97
+ // Main Command
98
+ // ============================================================
99
+ /**
100
+ * Show all tracked processes and their health.
101
+ */
102
+ export async function status(options) {
103
+ const stateDir = path.join(process.cwd(), '.claude', 'state', 'proc');
104
+ // Step 1: Reconcile before display
105
+ ProcessRegistry.instance.reconcile(stateDir);
106
+ // Step 2: Prune if requested
107
+ if (options.prune) {
108
+ ProcessRegistry.pruneStale(stateDir);
109
+ }
110
+ // Step 3: Assess health for all tracked processes
111
+ const reports = assessAll({ stateDir });
112
+ // Step 4: Read state files for runtime data
113
+ const stateData = ProcessRegistry.readAll(stateDir);
114
+ const stateMap = new Map();
115
+ for (const sd of stateData) {
116
+ stateMap.set(sd.id, sd);
117
+ }
118
+ // Step 5: Merge health reports with state data
119
+ const entries = reports.map(report => {
120
+ const sd = stateMap.get(report.id);
121
+ const runtime = sd
122
+ ? Math.max(0, Date.now() - sd.startTime)
123
+ : Math.max(0, report.lastEventAge); // fallback for in-process only
124
+ return {
125
+ id: report.id,
126
+ pid: report.pid,
127
+ state: report.state,
128
+ health: report.status,
129
+ runtime,
130
+ lastEventAge: report.lastEventAge,
131
+ processAlive: report.processAlive,
132
+ details: report.details,
133
+ recommendation: report.recommendation,
134
+ };
135
+ });
136
+ // Step 6: Handle empty state
137
+ if (entries.length === 0) {
138
+ if (options.json) {
139
+ console.log('[]');
140
+ }
141
+ else {
142
+ console.log('No tracked processes');
143
+ }
144
+ return;
145
+ }
146
+ // Step 7: Attach tree data if requested
147
+ if (options.tree) {
148
+ for (const entry of entries) {
149
+ if (entry.processAlive) {
150
+ try {
151
+ entry.tree = enumerateTree(entry.pid);
152
+ }
153
+ catch {
154
+ entry.tree = [];
155
+ }
156
+ }
157
+ else {
158
+ // Use treeSnapshot from state data for dead processes
159
+ const sd = stateMap.get(entry.id);
160
+ entry.tree = sd?.treeSnapshot ?? [];
161
+ }
162
+ }
163
+ }
164
+ // Step 8: Output
165
+ if (options.json) {
166
+ console.log(JSON.stringify(entries, null, 2));
167
+ return;
168
+ }
169
+ // Table output
170
+ console.log(formatTable(entries));
171
+ // Tree output (after table)
172
+ if (options.tree) {
173
+ for (const entry of entries) {
174
+ if (entry.tree && entry.tree.length > 0) {
175
+ console.log('');
176
+ console.log(chalk.bold(`Process tree for ${entry.id} (PID ${entry.pid}):`));
177
+ console.log(formatTree(entry.tree));
178
+ }
179
+ }
180
+ }
181
+ }
182
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { UninstallOptions } from '../types/index.js';
2
+ export declare function uninstall(options: UninstallOptions): Promise<void>;
3
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAuB1D,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GxE"}