@agents-at-scale/ark 0.1.35 → 0.1.36-rc1

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 (223) hide show
  1. package/dist/arkServices.d.ts +42 -0
  2. package/dist/arkServices.js +138 -0
  3. package/dist/arkServices.spec.d.ts +1 -0
  4. package/dist/arkServices.spec.js +24 -0
  5. package/dist/charts/charts.d.ts +5 -0
  6. package/dist/charts/charts.js +6 -0
  7. package/dist/charts/dependencies.d.ts +6 -0
  8. package/dist/charts/dependencies.js +50 -0
  9. package/dist/charts/types.d.ts +40 -0
  10. package/dist/charts/types.js +1 -0
  11. package/dist/commands/agents/index.d.ts +3 -0
  12. package/dist/commands/agents/index.js +65 -0
  13. package/dist/commands/agents/index.spec.d.ts +1 -0
  14. package/dist/commands/agents/index.spec.js +67 -0
  15. package/dist/commands/agents/selector.d.ts +8 -0
  16. package/dist/commands/agents/selector.js +53 -0
  17. package/dist/commands/agents.d.ts +2 -0
  18. package/dist/commands/agents.js +53 -0
  19. package/dist/commands/chat/index.d.ts +3 -0
  20. package/dist/commands/chat/index.js +29 -0
  21. package/dist/commands/chat.d.ts +2 -0
  22. package/dist/commands/chat.js +45 -0
  23. package/dist/commands/cluster/get.d.ts +2 -0
  24. package/dist/commands/cluster/get.js +39 -0
  25. package/dist/commands/cluster/get.spec.d.ts +1 -0
  26. package/dist/commands/cluster/get.spec.js +92 -0
  27. package/dist/commands/cluster/index.d.ts +2 -1
  28. package/dist/commands/cluster/index.js +3 -5
  29. package/dist/commands/cluster/index.spec.d.ts +1 -0
  30. package/dist/commands/cluster/index.spec.js +24 -0
  31. package/dist/commands/completion/index.d.ts +3 -0
  32. package/dist/commands/completion/index.js +230 -0
  33. package/dist/commands/completion/index.spec.d.ts +1 -0
  34. package/dist/commands/completion/index.spec.js +34 -0
  35. package/dist/commands/completion.js +159 -2
  36. package/dist/commands/config/index.d.ts +3 -0
  37. package/dist/commands/config/index.js +42 -0
  38. package/dist/commands/config/index.spec.d.ts +1 -0
  39. package/dist/commands/config/index.spec.js +78 -0
  40. package/dist/commands/config.d.ts +0 -3
  41. package/dist/commands/config.js +38 -321
  42. package/dist/commands/dashboard/index.d.ts +4 -0
  43. package/dist/commands/dashboard/index.js +39 -0
  44. package/dist/commands/dashboard.d.ts +3 -0
  45. package/dist/commands/dashboard.js +39 -0
  46. package/dist/commands/dev/index.d.ts +3 -0
  47. package/dist/commands/dev/index.js +9 -0
  48. package/dist/commands/dev/tool/check.d.ts +2 -0
  49. package/dist/commands/dev/tool/check.js +142 -0
  50. package/dist/commands/dev/tool/clean.d.ts +2 -0
  51. package/dist/commands/dev/tool/clean.js +153 -0
  52. package/dist/commands/dev/tool/generate.d.ts +2 -0
  53. package/dist/commands/dev/tool/generate.js +28 -0
  54. package/dist/commands/dev/tool/index.d.ts +2 -0
  55. package/dist/commands/dev/tool/index.js +14 -0
  56. package/dist/commands/dev/tool/init.d.ts +2 -0
  57. package/dist/commands/dev/tool/init.js +320 -0
  58. package/dist/commands/dev/tool/shared.d.ts +5 -0
  59. package/dist/commands/dev/tool/shared.js +258 -0
  60. package/dist/commands/dev/tool/status.d.ts +2 -0
  61. package/dist/commands/dev/tool/status.js +136 -0
  62. package/dist/commands/dev/tool-generate.spec.d.ts +1 -0
  63. package/dist/commands/dev/tool-generate.spec.js +163 -0
  64. package/dist/commands/dev/tool.d.ts +2 -0
  65. package/dist/commands/dev/tool.js +559 -0
  66. package/dist/commands/dev/tool.spec.d.ts +1 -0
  67. package/dist/commands/dev/tool.spec.js +48 -0
  68. package/dist/commands/docs/index.d.ts +4 -0
  69. package/dist/commands/docs/index.js +18 -0
  70. package/dist/commands/generate/config.js +5 -24
  71. package/dist/commands/generate/generators/mcpserver.d.ts +2 -1
  72. package/dist/commands/generate/generators/mcpserver.js +26 -5
  73. package/dist/commands/generate/generators/project.js +22 -41
  74. package/dist/commands/generate/index.d.ts +2 -1
  75. package/dist/commands/generate/index.js +1 -1
  76. package/dist/commands/install/index.d.ts +8 -0
  77. package/dist/commands/install/index.js +295 -0
  78. package/dist/commands/install/index.spec.d.ts +1 -0
  79. package/dist/commands/install/index.spec.js +143 -0
  80. package/dist/commands/install.d.ts +3 -0
  81. package/dist/commands/install.js +147 -0
  82. package/dist/commands/models/create.d.ts +1 -0
  83. package/dist/commands/models/create.js +213 -0
  84. package/dist/commands/models/create.spec.d.ts +1 -0
  85. package/dist/commands/models/create.spec.js +125 -0
  86. package/dist/commands/models/index.d.ts +3 -0
  87. package/dist/commands/models/index.js +75 -0
  88. package/dist/commands/models/index.spec.d.ts +1 -0
  89. package/dist/commands/models/index.spec.js +96 -0
  90. package/dist/commands/models/selector.d.ts +8 -0
  91. package/dist/commands/models/selector.js +53 -0
  92. package/dist/commands/query/index.d.ts +3 -0
  93. package/dist/commands/query/index.js +24 -0
  94. package/dist/commands/query/index.spec.d.ts +1 -0
  95. package/dist/commands/query/index.spec.js +53 -0
  96. package/dist/commands/routes/index.d.ts +3 -0
  97. package/dist/commands/routes/index.js +93 -0
  98. package/dist/commands/routes.d.ts +2 -0
  99. package/dist/commands/routes.js +101 -0
  100. package/dist/commands/status/index.d.ts +3 -0
  101. package/dist/commands/status/index.js +281 -0
  102. package/dist/commands/status.d.ts +3 -0
  103. package/dist/commands/status.js +33 -0
  104. package/dist/commands/targets/index.d.ts +3 -0
  105. package/dist/commands/targets/index.js +72 -0
  106. package/dist/commands/targets/index.spec.d.ts +1 -0
  107. package/dist/commands/targets/index.spec.js +154 -0
  108. package/dist/commands/targets.d.ts +2 -0
  109. package/dist/commands/targets.js +65 -0
  110. package/dist/commands/teams/index.d.ts +3 -0
  111. package/dist/commands/teams/index.js +64 -0
  112. package/dist/commands/teams/index.spec.d.ts +1 -0
  113. package/dist/commands/teams/index.spec.js +70 -0
  114. package/dist/commands/teams/selector.d.ts +8 -0
  115. package/dist/commands/teams/selector.js +55 -0
  116. package/dist/commands/tools/index.d.ts +3 -0
  117. package/dist/commands/tools/index.js +49 -0
  118. package/dist/commands/tools/index.spec.d.ts +1 -0
  119. package/dist/commands/tools/index.spec.js +70 -0
  120. package/dist/commands/tools/selector.d.ts +8 -0
  121. package/dist/commands/tools/selector.js +53 -0
  122. package/dist/commands/uninstall/index.d.ts +3 -0
  123. package/dist/commands/uninstall/index.js +101 -0
  124. package/dist/commands/uninstall/index.spec.d.ts +1 -0
  125. package/dist/commands/uninstall/index.spec.js +125 -0
  126. package/dist/commands/uninstall.d.ts +2 -0
  127. package/dist/commands/uninstall.js +83 -0
  128. package/dist/components/ChatUI.d.ts +16 -0
  129. package/dist/components/ChatUI.js +801 -0
  130. package/dist/components/StatusView.d.ts +10 -0
  131. package/dist/components/StatusView.js +39 -0
  132. package/dist/components/statusChecker.d.ts +14 -24
  133. package/dist/components/statusChecker.js +295 -129
  134. package/dist/config.d.ts +3 -22
  135. package/dist/config.js +10 -161
  136. package/dist/index.d.ts +1 -1
  137. package/dist/index.js +42 -42
  138. package/dist/lib/arkApiClient.d.ts +53 -0
  139. package/dist/lib/arkApiClient.js +102 -0
  140. package/dist/lib/arkApiProxy.d.ts +9 -0
  141. package/dist/lib/arkApiProxy.js +22 -0
  142. package/dist/lib/arkServiceProxy.d.ts +14 -0
  143. package/dist/lib/arkServiceProxy.js +95 -0
  144. package/dist/lib/arkStatus.d.ts +10 -0
  145. package/dist/lib/arkStatus.js +79 -0
  146. package/dist/lib/arkStatus.spec.d.ts +1 -0
  147. package/dist/lib/arkStatus.spec.js +49 -0
  148. package/dist/lib/chatClient.d.ts +33 -0
  149. package/dist/lib/chatClient.js +93 -0
  150. package/dist/lib/cluster.d.ts +2 -1
  151. package/dist/lib/cluster.js +37 -16
  152. package/dist/lib/cluster.spec.d.ts +1 -0
  153. package/dist/lib/cluster.spec.js +338 -0
  154. package/dist/lib/commandUtils.d.ts +4 -0
  155. package/dist/lib/commandUtils.js +18 -0
  156. package/dist/lib/commandUtils.test.d.ts +1 -0
  157. package/dist/lib/commandUtils.test.js +44 -0
  158. package/dist/lib/commands.d.ts +16 -0
  159. package/dist/lib/commands.js +29 -0
  160. package/dist/lib/commands.spec.d.ts +1 -0
  161. package/dist/lib/commands.spec.js +146 -0
  162. package/dist/lib/config.d.ts +26 -80
  163. package/dist/lib/config.js +70 -205
  164. package/dist/lib/config.spec.d.ts +1 -0
  165. package/dist/lib/config.spec.js +99 -0
  166. package/dist/lib/config.test.d.ts +1 -0
  167. package/dist/lib/config.test.js +93 -0
  168. package/dist/lib/consts.d.ts +0 -1
  169. package/dist/lib/consts.js +0 -2
  170. package/dist/lib/consts.spec.d.ts +1 -0
  171. package/dist/lib/consts.spec.js +15 -0
  172. package/dist/lib/dev/tools/analyzer.d.ts +30 -0
  173. package/dist/lib/dev/tools/analyzer.js +190 -0
  174. package/dist/lib/dev/tools/discover_tools.py +392 -0
  175. package/dist/lib/dev/tools/mcp-types.d.ts +28 -0
  176. package/dist/lib/dev/tools/mcp-types.js +86 -0
  177. package/dist/lib/dev/tools/types.d.ts +50 -0
  178. package/dist/lib/dev/tools/types.js +1 -0
  179. package/dist/lib/errors.js +1 -1
  180. package/dist/lib/errors.spec.d.ts +1 -0
  181. package/dist/lib/errors.spec.js +221 -0
  182. package/dist/lib/exec.d.ts +0 -4
  183. package/dist/lib/exec.js +0 -11
  184. package/dist/lib/executeQuery.d.ts +20 -0
  185. package/dist/lib/executeQuery.js +135 -0
  186. package/dist/lib/executeQuery.spec.d.ts +1 -0
  187. package/dist/lib/executeQuery.spec.js +170 -0
  188. package/dist/lib/nextSteps.d.ts +4 -0
  189. package/dist/lib/nextSteps.js +20 -0
  190. package/dist/lib/nextSteps.spec.d.ts +1 -0
  191. package/dist/lib/nextSteps.spec.js +59 -0
  192. package/dist/lib/output.d.ts +36 -0
  193. package/dist/lib/output.js +89 -0
  194. package/dist/lib/output.spec.d.ts +1 -0
  195. package/dist/lib/output.spec.js +123 -0
  196. package/dist/lib/portUtils.d.ts +8 -0
  197. package/dist/lib/portUtils.js +39 -0
  198. package/dist/lib/queryRunner.d.ts +22 -0
  199. package/dist/lib/queryRunner.js +142 -0
  200. package/dist/lib/startup.d.ts +9 -0
  201. package/dist/lib/startup.js +87 -0
  202. package/dist/lib/startup.spec.d.ts +1 -0
  203. package/dist/lib/startup.spec.js +152 -0
  204. package/dist/lib/types.d.ts +87 -3
  205. package/dist/lib/versions.d.ts +23 -0
  206. package/dist/lib/versions.js +51 -0
  207. package/dist/types/types.d.ts +40 -0
  208. package/dist/types/types.js +1 -0
  209. package/dist/ui/AgentSelector.d.ts +8 -0
  210. package/dist/ui/AgentSelector.js +53 -0
  211. package/dist/ui/MainMenu.d.ts +5 -1
  212. package/dist/ui/MainMenu.js +226 -91
  213. package/dist/ui/ModelSelector.d.ts +8 -0
  214. package/dist/ui/ModelSelector.js +53 -0
  215. package/dist/ui/TeamSelector.d.ts +8 -0
  216. package/dist/ui/TeamSelector.js +55 -0
  217. package/dist/ui/ToolSelector.d.ts +8 -0
  218. package/dist/ui/ToolSelector.js +53 -0
  219. package/dist/ui/statusFormatter.d.ts +22 -7
  220. package/dist/ui/statusFormatter.js +39 -39
  221. package/dist/ui/statusFormatter.spec.d.ts +1 -0
  222. package/dist/ui/statusFormatter.spec.js +58 -0
  223. package/package.json +16 -5
@@ -1,47 +1,47 @@
1
1
  import chalk from 'chalk';
2
+ /**
3
+ * Simple status formatter that just formats sections and lines
4
+ * The caller is responsible for deciding what to show
5
+ */
2
6
  export class StatusFormatter {
3
- /**
4
- * Print status check results to console
5
- */
6
- static printStatus(statusData) {
7
- console.log(chalk.cyan.bold('\n🔍 ARK System Status Check'));
8
- console.log(chalk.gray('Checking ARK services and dependencies...\n'));
9
- // Print services status
10
- console.log(chalk.cyan.bold('📡 ARK Services:'));
11
- for (const service of statusData.services) {
12
- StatusFormatter.printService(service);
13
- }
14
- // Print dependencies status
15
- console.log(chalk.cyan.bold('\n🛠️ System Dependencies:'));
16
- for (const dep of statusData.dependencies) {
17
- StatusFormatter.printDependency(dep);
18
- }
7
+ static printSections(sections) {
8
+ console.log();
9
+ sections.forEach((section, index) => {
10
+ console.log(chalk.cyan.bold(section.title));
11
+ section.lines.forEach((line) => this.printLine(line));
12
+ if (index < sections.length - 1) {
13
+ console.log();
14
+ }
15
+ });
19
16
  console.log();
20
17
  }
21
- static printService(service) {
22
- const statusColor = service.status === 'healthy'
23
- ? chalk.green('✓ healthy')
24
- : service.status === 'unhealthy'
25
- ? chalk.red('✗ unhealthy')
26
- : chalk.yellow('? not installed');
27
- console.log(` • ${chalk.bold(service.name)}: ${statusColor}`);
28
- if (service.url) {
29
- console.log(` ${chalk.gray(`URL: ${service.url}`)}`);
30
- }
31
- if (service.details) {
32
- console.log(` ${chalk.gray(service.details)}`);
33
- }
18
+ static applyColor(text, color) {
19
+ if (!color)
20
+ return text;
21
+ const colorMap = {
22
+ green: chalk.green,
23
+ red: chalk.red,
24
+ yellow: chalk.yellow,
25
+ gray: chalk.gray,
26
+ white: chalk.white,
27
+ cyan: chalk.cyan,
28
+ bold: chalk.bold,
29
+ };
30
+ return colorMap[color](text);
34
31
  }
35
- static printDependency(dep) {
36
- const statusColor = dep.installed
37
- ? chalk.green('✓ installed')
38
- : chalk.red('✗ missing');
39
- console.log(` • ${chalk.bold(dep.name)}: ${statusColor}`);
40
- if (dep.version) {
41
- console.log(` ${chalk.gray(`Version: ${dep.version}`)}`);
42
- }
43
- if (dep.details) {
44
- console.log(` ${chalk.gray(dep.details)}`);
32
+ static printLine(line) {
33
+ const icon = this.applyColor(line.icon, line.iconColor);
34
+ const status = this.applyColor(line.status, line.statusColor);
35
+ // Name formatting is now handled where the name is assembled
36
+ const name = this.applyColor(line.name, line.nameColor || 'white');
37
+ const parts = [
38
+ ` ${icon} ${status}`,
39
+ name,
40
+ line.details ? chalk.gray(line.details) : '',
41
+ ].filter(Boolean);
42
+ console.log(parts.join(' '));
43
+ if (line.subtext) {
44
+ console.log(` ${chalk.gray(line.subtext)}`);
45
45
  }
46
46
  }
47
47
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ import { describe, it, expect, jest, beforeEach, afterEach } from '@jest/globals';
2
+ import { StatusFormatter } from './statusFormatter.js';
3
+ describe('StatusFormatter', () => {
4
+ let consoleLogSpy;
5
+ beforeEach(() => {
6
+ consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => { });
7
+ });
8
+ afterEach(() => {
9
+ jest.restoreAllMocks();
10
+ });
11
+ it('prints sections', () => {
12
+ const sections = [
13
+ {
14
+ title: 'Test Section',
15
+ lines: [{ icon: '✓', status: 'ok', name: 'test' }],
16
+ },
17
+ ];
18
+ StatusFormatter.printSections(sections);
19
+ expect(consoleLogSpy).toHaveBeenCalled();
20
+ const calls = consoleLogSpy.mock.calls.map((c) => c[0]);
21
+ expect(calls.some((c) => c?.includes('Test Section'))).toBe(true);
22
+ expect(calls.some((c) => c?.includes('✓ ok'))).toBe(true);
23
+ });
24
+ it('prints line with details', () => {
25
+ const sections = [
26
+ {
27
+ title: 'Test',
28
+ lines: [{ icon: '✓', status: 'ok', name: 'test', details: 'v1.0.0' }],
29
+ },
30
+ ];
31
+ StatusFormatter.printSections(sections);
32
+ const calls = consoleLogSpy.mock.calls.map((c) => c[0]);
33
+ expect(calls.some((c) => c?.includes('v1.0.0'))).toBe(true);
34
+ });
35
+ it('prints subtext', () => {
36
+ const sections = [
37
+ {
38
+ title: 'Test',
39
+ lines: [
40
+ { icon: '✗', status: 'error', name: 'test', subtext: 'Try again' },
41
+ ],
42
+ },
43
+ ];
44
+ StatusFormatter.printSections(sections);
45
+ const calls = consoleLogSpy.mock.calls.map((c) => c[0]);
46
+ expect(calls.some((c) => c?.includes('Try again'))).toBe(true);
47
+ });
48
+ it('adds spacing between sections', () => {
49
+ const sections = [
50
+ { title: 'First', lines: [] },
51
+ { title: 'Second', lines: [] },
52
+ ];
53
+ StatusFormatter.printSections(sections);
54
+ const calls = consoleLogSpy.mock.calls;
55
+ // Should have blank lines for spacing
56
+ expect(calls.filter((c) => c.length === 0).length).toBeGreaterThan(0);
57
+ });
58
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents-at-scale/ark",
3
- "version": "0.1.35",
3
+ "version": "0.1.36-rc1",
4
4
  "description": "ARK CLI - Interactive terminal interface for ARK agents",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -12,11 +12,12 @@
12
12
  ],
13
13
  "scripts": {
14
14
  "build": "tsc && chmod +x dist/index.js",
15
- "dev": "node --loader ts-node/esm src/index.tsx",
16
- "start": "node dist/index.js",
15
+ "dev": "tsc --watch",
16
+ "start": "NODE_NO_WARNINGS=1 node dist/index.js",
17
17
  "clean": "rm -rf dist",
18
18
  "lint": "eslint src/ --fix && prettier --write src/",
19
19
  "lint:check": "eslint src/ && prettier --check src/",
20
+ "test": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage --coverageDirectory=./artifacts/coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=text-summary",
20
21
  "postinstall": "echo \"ARK CLI installed! Run 'ark' to try it out.\""
21
22
  },
22
23
  "keywords": [
@@ -39,7 +40,7 @@
39
40
  },
40
41
  "dependencies": {
41
42
  "@kubernetes/client-node": "^1.3.0",
42
- "@types/react": "^19.1.8",
43
+ "@modelcontextprotocol/sdk": "^1.18.0",
43
44
  "axios": "^1.7.7",
44
45
  "chalk": "^4.1.2",
45
46
  "commander": "^12.1.0",
@@ -47,23 +48,33 @@
47
48
  "execa": "^9.6.0",
48
49
  "ink": "^6.0.1",
49
50
  "ink-select-input": "^6.2.0",
51
+ "ink-spinner": "^5.0.0",
50
52
  "ink-text-input": "^6.0.0",
51
53
  "inquirer": "^12.1.0",
54
+ "marked": "^15.0.12",
55
+ "marked-terminal": "^7.3.0",
52
56
  "open": "^10.2.0",
57
+ "openai": "^5.19.1",
58
+ "ora": "^8.2.0",
53
59
  "react": "^19.1.0",
54
- "simple-git": "^3.28.0",
55
60
  "yaml": "^2.6.1"
56
61
  },
57
62
  "devDependencies": {
58
63
  "@eslint/js": "^9.17.0",
64
+ "@jest/globals": "^30.1.2",
59
65
  "@types/debug": "^4.1.12",
60
66
  "@types/inquirer": "^9.0.7",
67
+ "@types/jest": "^30.0.0",
61
68
  "@types/node": "^22.10.2",
69
+ "@types/react": "^19.1.13",
62
70
  "@typescript-eslint/eslint-plugin": "^8.20.0",
63
71
  "@typescript-eslint/parser": "^8.20.0",
64
72
  "eslint": "^9.17.0",
73
+ "jest": "^30.1.3",
65
74
  "prettier": "^3.6.2",
75
+ "ts-jest": "^29.4.1",
66
76
  "ts-node": "^10.9.2",
77
+ "tsx": "^4.20.5",
67
78
  "typescript": "^5.7.2"
68
79
  },
69
80
  "engines": {