@agents-at-scale/ark 0.1.52 → 0.1.55

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 (116) hide show
  1. package/dist/arkServices.js +11 -7
  2. package/dist/commands/export/index.js +6 -4
  3. package/dist/commands/generate/generators/agent.js +2 -0
  4. package/dist/commands/generate/generators/marketplace.js +2 -0
  5. package/dist/commands/generate/generators/mcpserver.js +2 -0
  6. package/dist/commands/generate/generators/project.js +9 -2
  7. package/dist/commands/generate/generators/query.js +2 -0
  8. package/dist/commands/generate/generators/team.js +2 -0
  9. package/dist/commands/generate/templateDiscovery.js +1 -0
  10. package/dist/commands/generate/templateEngine.js +1 -3
  11. package/dist/commands/import/index.js +1 -1
  12. package/dist/commands/install/index.js +2 -1
  13. package/dist/commands/models/kubernetes/manifest-builder.js +27 -10
  14. package/dist/commands/models/providers/azure.d.ts +10 -7
  15. package/dist/commands/models/providers/azure.js +83 -21
  16. package/dist/commands/uninstall/index.js +1 -1
  17. package/dist/components/ChatUI.js +17 -16
  18. package/dist/components/statusChecker.js +3 -3
  19. package/dist/lib/arkApiClient.js +11 -9
  20. package/dist/lib/arkApiProxy.js +1 -0
  21. package/dist/lib/arkServiceProxy.js +5 -1
  22. package/dist/lib/chatClient.js +9 -0
  23. package/dist/lib/config.js +8 -3
  24. package/dist/lib/errors.js +3 -0
  25. package/dist/ui/asyncOperations/connectingToArk.js +2 -2
  26. package/package.json +17 -13
  27. package/dist/arkServices.spec.d.ts +0 -1
  28. package/dist/arkServices.spec.js +0 -138
  29. package/dist/commands/agents/index.spec.d.ts +0 -1
  30. package/dist/commands/agents/index.spec.js +0 -67
  31. package/dist/commands/cluster/get.spec.d.ts +0 -1
  32. package/dist/commands/cluster/get.spec.js +0 -92
  33. package/dist/commands/cluster/index.spec.d.ts +0 -1
  34. package/dist/commands/cluster/index.spec.js +0 -24
  35. package/dist/commands/completion/index.spec.d.ts +0 -1
  36. package/dist/commands/completion/index.spec.js +0 -34
  37. package/dist/commands/config/index.spec.d.ts +0 -1
  38. package/dist/commands/config/index.spec.js +0 -78
  39. package/dist/commands/evaluation/index.spec.d.ts +0 -1
  40. package/dist/commands/evaluation/index.spec.js +0 -161
  41. package/dist/commands/export/index.spec.d.ts +0 -1
  42. package/dist/commands/export/index.spec.js +0 -145
  43. package/dist/commands/import/index.spec.d.ts +0 -1
  44. package/dist/commands/import/index.spec.js +0 -46
  45. package/dist/commands/install/index.spec.d.ts +0 -1
  46. package/dist/commands/install/index.spec.js +0 -286
  47. package/dist/commands/marketplace/index.spec.d.ts +0 -1
  48. package/dist/commands/marketplace/index.spec.js +0 -88
  49. package/dist/commands/memory/index.spec.d.ts +0 -1
  50. package/dist/commands/memory/index.spec.js +0 -124
  51. package/dist/commands/models/create.spec.d.ts +0 -1
  52. package/dist/commands/models/create.spec.js +0 -167
  53. package/dist/commands/models/index.spec.d.ts +0 -1
  54. package/dist/commands/models/index.spec.js +0 -96
  55. package/dist/commands/models/providers/azure.spec.d.ts +0 -1
  56. package/dist/commands/models/providers/azure.spec.js +0 -232
  57. package/dist/commands/models/providers/bedrock.spec.d.ts +0 -1
  58. package/dist/commands/models/providers/bedrock.spec.js +0 -241
  59. package/dist/commands/models/providers/openai.spec.d.ts +0 -1
  60. package/dist/commands/models/providers/openai.spec.js +0 -180
  61. package/dist/commands/queries/delete.spec.d.ts +0 -1
  62. package/dist/commands/queries/delete.spec.js +0 -74
  63. package/dist/commands/queries/index.spec.d.ts +0 -1
  64. package/dist/commands/queries/index.spec.js +0 -167
  65. package/dist/commands/queries/list.spec.d.ts +0 -1
  66. package/dist/commands/queries/list.spec.js +0 -170
  67. package/dist/commands/queries/validation.spec.d.ts +0 -1
  68. package/dist/commands/queries/validation.spec.js +0 -27
  69. package/dist/commands/query/index.spec.d.ts +0 -1
  70. package/dist/commands/query/index.spec.js +0 -104
  71. package/dist/commands/targets/index.spec.d.ts +0 -1
  72. package/dist/commands/targets/index.spec.js +0 -154
  73. package/dist/commands/teams/index.spec.d.ts +0 -1
  74. package/dist/commands/teams/index.spec.js +0 -70
  75. package/dist/commands/tools/index.spec.d.ts +0 -1
  76. package/dist/commands/tools/index.spec.js +0 -70
  77. package/dist/commands/uninstall/index.spec.d.ts +0 -1
  78. package/dist/commands/uninstall/index.spec.js +0 -125
  79. package/dist/lib/arkServiceProxy.spec.d.ts +0 -1
  80. package/dist/lib/arkServiceProxy.spec.js +0 -100
  81. package/dist/lib/arkStatus.spec.d.ts +0 -1
  82. package/dist/lib/arkStatus.spec.js +0 -49
  83. package/dist/lib/chatClient.spec.d.ts +0 -1
  84. package/dist/lib/chatClient.spec.js +0 -108
  85. package/dist/lib/cluster.spec.d.ts +0 -1
  86. package/dist/lib/cluster.spec.js +0 -338
  87. package/dist/lib/commands.spec.d.ts +0 -1
  88. package/dist/lib/commands.spec.js +0 -146
  89. package/dist/lib/config.spec.d.ts +0 -1
  90. package/dist/lib/config.spec.js +0 -202
  91. package/dist/lib/duration.spec.d.ts +0 -1
  92. package/dist/lib/duration.spec.js +0 -13
  93. package/dist/lib/errors.spec.d.ts +0 -1
  94. package/dist/lib/errors.spec.js +0 -221
  95. package/dist/lib/executeQuery.spec.d.ts +0 -1
  96. package/dist/lib/executeQuery.spec.js +0 -325
  97. package/dist/lib/kubectl.spec.d.ts +0 -1
  98. package/dist/lib/kubectl.spec.js +0 -192
  99. package/dist/lib/marketplaceFetcher.spec.d.ts +0 -1
  100. package/dist/lib/marketplaceFetcher.spec.js +0 -225
  101. package/dist/lib/nextSteps.spec.d.ts +0 -1
  102. package/dist/lib/nextSteps.spec.js +0 -59
  103. package/dist/lib/output.spec.d.ts +0 -1
  104. package/dist/lib/output.spec.js +0 -123
  105. package/dist/lib/startup.spec.d.ts +0 -1
  106. package/dist/lib/startup.spec.js +0 -152
  107. package/dist/lib/stdin.spec.d.ts +0 -1
  108. package/dist/lib/stdin.spec.js +0 -82
  109. package/dist/lib/timeout.spec.d.ts +0 -1
  110. package/dist/lib/timeout.spec.js +0 -14
  111. package/dist/lib/waitForReady.spec.d.ts +0 -1
  112. package/dist/lib/waitForReady.spec.js +0 -104
  113. package/dist/marketplaceServices.spec.d.ts +0 -1
  114. package/dist/marketplaceServices.spec.js +0 -74
  115. package/dist/ui/statusFormatter.spec.d.ts +0 -1
  116. package/dist/ui/statusFormatter.spec.js +0 -58
@@ -1 +0,0 @@
1
- export {};
@@ -1,104 +0,0 @@
1
- import { describe, it, expect, jest, beforeEach } from '@jest/globals';
2
- jest.unstable_mockModule('execa', () => ({
3
- execa: jest.fn(),
4
- }));
5
- const { execa } = await import('execa');
6
- const { waitForDeploymentReady, waitForServicesReady } = await import('./waitForReady.js');
7
- const mockedExeca = execa;
8
- describe('waitForDeploymentReady', () => {
9
- beforeEach(() => {
10
- jest.clearAllMocks();
11
- });
12
- it('returns true when deployment is ready', async () => {
13
- mockedExeca.mockResolvedValueOnce({
14
- stdout: 'deployment.apps/ark-controller condition met',
15
- stderr: '',
16
- exitCode: 0,
17
- });
18
- const result = await waitForDeploymentReady('ark-controller', 'ark-system', 30);
19
- expect(result).toBe(true);
20
- expect(mockedExeca).toHaveBeenCalledWith('kubectl', [
21
- 'wait',
22
- '--for=condition=available',
23
- 'deployment/ark-controller',
24
- '-n',
25
- 'ark-system',
26
- '--timeout=30s',
27
- ], { timeout: 30000 });
28
- });
29
- it('returns false on error', async () => {
30
- mockedExeca.mockRejectedValueOnce(new Error('kubectl error'));
31
- const result = await waitForDeploymentReady('ark-api', 'default', 10);
32
- expect(result).toBe(false);
33
- });
34
- });
35
- describe('waitForServicesReady', () => {
36
- beforeEach(() => {
37
- jest.clearAllMocks();
38
- });
39
- const service1 = {
40
- name: 'ark-controller',
41
- helmReleaseName: 'ark-controller',
42
- description: 'Core controller',
43
- enabled: true,
44
- category: 'core',
45
- namespace: 'ark-system',
46
- k8sDeploymentName: 'ark-controller',
47
- };
48
- const service2 = {
49
- name: 'ark-api',
50
- helmReleaseName: 'ark-api',
51
- description: 'API service',
52
- enabled: true,
53
- category: 'service',
54
- namespace: 'default',
55
- k8sDeploymentName: 'ark-api',
56
- };
57
- it('returns true when all services are ready', async () => {
58
- mockedExeca.mockResolvedValue({
59
- stdout: 'condition met',
60
- stderr: '',
61
- exitCode: 0,
62
- });
63
- const result = await waitForServicesReady([service1, service2], 30);
64
- expect(result).toBe(true);
65
- expect(mockedExeca).toHaveBeenCalledTimes(2);
66
- });
67
- it('returns false when any service fails', async () => {
68
- mockedExeca
69
- .mockResolvedValueOnce({ stdout: 'ok', stderr: '', exitCode: 0 })
70
- .mockRejectedValueOnce(new Error('timeout'));
71
- const result = await waitForServicesReady([service1, service2], 30);
72
- expect(result).toBe(false);
73
- });
74
- it('calls progress callback', async () => {
75
- mockedExeca.mockResolvedValue({
76
- stdout: 'ok',
77
- stderr: '',
78
- exitCode: 0,
79
- });
80
- const onProgress = jest.fn();
81
- await waitForServicesReady([service1], 30, onProgress);
82
- expect(onProgress).toHaveBeenCalledWith({
83
- serviceName: 'ark-controller',
84
- ready: true,
85
- });
86
- });
87
- it('skips services without deployment info', async () => {
88
- const incompleteService = {
89
- name: 'incomplete',
90
- helmReleaseName: 'incomplete',
91
- description: 'No deployment info',
92
- enabled: true,
93
- category: 'service',
94
- };
95
- mockedExeca.mockResolvedValue({
96
- stdout: 'ok',
97
- stderr: '',
98
- exitCode: 0,
99
- });
100
- const result = await waitForServicesReady([service1, incompleteService], 30);
101
- expect(result).toBe(true);
102
- expect(mockedExeca).toHaveBeenCalledTimes(1);
103
- });
104
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +0,0 @@
1
- import { jest } from '@jest/globals';
2
- const mockGetMarketplaceServicesFromManifest = jest.fn();
3
- const mockGetMarketplaceAgentsFromManifest = jest.fn();
4
- const mockFetchMarketplaceManifest = jest.fn();
5
- jest.unstable_mockModule('./lib/marketplaceFetcher.js', () => ({
6
- getMarketplaceServicesFromManifest: mockGetMarketplaceServicesFromManifest,
7
- getMarketplaceAgentsFromManifest: mockGetMarketplaceAgentsFromManifest,
8
- fetchMarketplaceManifest: mockFetchMarketplaceManifest,
9
- }));
10
- const { getAllMarketplaceServices, getAllMarketplaceAgents, getMarketplaceItem, } = await import('./marketplaceServices.js');
11
- describe('marketplaceServices', () => {
12
- beforeEach(() => {
13
- jest.clearAllMocks();
14
- mockGetMarketplaceServicesFromManifest.mockClear();
15
- });
16
- describe('getAllMarketplaceServices', () => {
17
- it('returns manifest services when available', async () => {
18
- const mockServices = {
19
- 'new-service': {
20
- name: 'new-service',
21
- helmReleaseName: 'new-service',
22
- description: 'New service',
23
- enabled: true,
24
- category: 'marketplace',
25
- namespace: 'new-ns',
26
- },
27
- };
28
- mockGetMarketplaceServicesFromManifest.mockResolvedValue(mockServices);
29
- const result = await getAllMarketplaceServices();
30
- expect(result).toEqual(mockServices);
31
- expect(mockGetMarketplaceServicesFromManifest).toHaveBeenCalled();
32
- });
33
- it('returns null when manifest unavailable', async () => {
34
- mockGetMarketplaceServicesFromManifest.mockResolvedValue(null);
35
- const result = await getAllMarketplaceServices();
36
- expect(result).toBeNull();
37
- });
38
- });
39
- describe('getMarketplaceItem', () => {
40
- it('returns service by path from manifest', async () => {
41
- const mockServices = {
42
- 'test-service': {
43
- name: 'test-service',
44
- helmReleaseName: 'test-service',
45
- description: 'Test',
46
- enabled: true,
47
- category: 'marketplace',
48
- },
49
- };
50
- mockGetMarketplaceServicesFromManifest.mockResolvedValue(mockServices);
51
- const result = await getMarketplaceItem('marketplace/services/test-service');
52
- expect(result).toEqual(mockServices['test-service']);
53
- });
54
- it('returns undefined for non-existent service', async () => {
55
- const mockServices = {
56
- 'test-service': {
57
- name: 'test-service',
58
- helmReleaseName: 'test-service',
59
- description: 'Test',
60
- enabled: true,
61
- category: 'marketplace',
62
- },
63
- };
64
- mockGetMarketplaceServicesFromManifest.mockResolvedValue(mockServices);
65
- const result = await getMarketplaceItem('marketplace/services/non-existent');
66
- expect(result).toBeUndefined();
67
- });
68
- it('returns null when marketplace unavailable', async () => {
69
- mockGetMarketplaceServicesFromManifest.mockResolvedValue(null);
70
- const result = await getMarketplaceItem('marketplace/services/phoenix');
71
- expect(result).toBeNull();
72
- });
73
- });
74
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,58 +0,0 @@
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
- });