@agents-at-scale/ark 0.1.53 → 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 (115) hide show
  1. package/dist/commands/export/index.js +6 -4
  2. package/dist/commands/generate/generators/agent.js +2 -0
  3. package/dist/commands/generate/generators/marketplace.js +2 -0
  4. package/dist/commands/generate/generators/mcpserver.js +2 -0
  5. package/dist/commands/generate/generators/project.js +9 -2
  6. package/dist/commands/generate/generators/query.js +2 -0
  7. package/dist/commands/generate/generators/team.js +2 -0
  8. package/dist/commands/generate/templateDiscovery.js +1 -0
  9. package/dist/commands/generate/templateEngine.js +1 -3
  10. package/dist/commands/import/index.js +1 -1
  11. package/dist/commands/install/index.js +2 -1
  12. package/dist/commands/models/kubernetes/manifest-builder.js +27 -10
  13. package/dist/commands/models/providers/azure.d.ts +10 -7
  14. package/dist/commands/models/providers/azure.js +83 -21
  15. package/dist/commands/uninstall/index.js +1 -1
  16. package/dist/components/ChatUI.js +17 -16
  17. package/dist/components/statusChecker.js +3 -3
  18. package/dist/lib/arkApiClient.js +11 -9
  19. package/dist/lib/arkApiProxy.js +1 -0
  20. package/dist/lib/arkServiceProxy.js +5 -1
  21. package/dist/lib/chatClient.js +9 -0
  22. package/dist/lib/config.js +8 -3
  23. package/dist/lib/errors.js +3 -0
  24. package/dist/ui/asyncOperations/connectingToArk.js +2 -2
  25. package/package.json +16 -12
  26. package/dist/arkServices.spec.d.ts +0 -1
  27. package/dist/arkServices.spec.js +0 -138
  28. package/dist/commands/agents/index.spec.d.ts +0 -1
  29. package/dist/commands/agents/index.spec.js +0 -67
  30. package/dist/commands/cluster/get.spec.d.ts +0 -1
  31. package/dist/commands/cluster/get.spec.js +0 -92
  32. package/dist/commands/cluster/index.spec.d.ts +0 -1
  33. package/dist/commands/cluster/index.spec.js +0 -24
  34. package/dist/commands/completion/index.spec.d.ts +0 -1
  35. package/dist/commands/completion/index.spec.js +0 -34
  36. package/dist/commands/config/index.spec.d.ts +0 -1
  37. package/dist/commands/config/index.spec.js +0 -78
  38. package/dist/commands/evaluation/index.spec.d.ts +0 -1
  39. package/dist/commands/evaluation/index.spec.js +0 -161
  40. package/dist/commands/export/index.spec.d.ts +0 -1
  41. package/dist/commands/export/index.spec.js +0 -145
  42. package/dist/commands/import/index.spec.d.ts +0 -1
  43. package/dist/commands/import/index.spec.js +0 -46
  44. package/dist/commands/install/index.spec.d.ts +0 -1
  45. package/dist/commands/install/index.spec.js +0 -286
  46. package/dist/commands/marketplace/index.spec.d.ts +0 -1
  47. package/dist/commands/marketplace/index.spec.js +0 -88
  48. package/dist/commands/memory/index.spec.d.ts +0 -1
  49. package/dist/commands/memory/index.spec.js +0 -124
  50. package/dist/commands/models/create.spec.d.ts +0 -1
  51. package/dist/commands/models/create.spec.js +0 -167
  52. package/dist/commands/models/index.spec.d.ts +0 -1
  53. package/dist/commands/models/index.spec.js +0 -96
  54. package/dist/commands/models/providers/azure.spec.d.ts +0 -1
  55. package/dist/commands/models/providers/azure.spec.js +0 -232
  56. package/dist/commands/models/providers/bedrock.spec.d.ts +0 -1
  57. package/dist/commands/models/providers/bedrock.spec.js +0 -241
  58. package/dist/commands/models/providers/openai.spec.d.ts +0 -1
  59. package/dist/commands/models/providers/openai.spec.js +0 -180
  60. package/dist/commands/queries/delete.spec.d.ts +0 -1
  61. package/dist/commands/queries/delete.spec.js +0 -74
  62. package/dist/commands/queries/index.spec.d.ts +0 -1
  63. package/dist/commands/queries/index.spec.js +0 -167
  64. package/dist/commands/queries/list.spec.d.ts +0 -1
  65. package/dist/commands/queries/list.spec.js +0 -170
  66. package/dist/commands/queries/validation.spec.d.ts +0 -1
  67. package/dist/commands/queries/validation.spec.js +0 -27
  68. package/dist/commands/query/index.spec.d.ts +0 -1
  69. package/dist/commands/query/index.spec.js +0 -104
  70. package/dist/commands/targets/index.spec.d.ts +0 -1
  71. package/dist/commands/targets/index.spec.js +0 -154
  72. package/dist/commands/teams/index.spec.d.ts +0 -1
  73. package/dist/commands/teams/index.spec.js +0 -70
  74. package/dist/commands/tools/index.spec.d.ts +0 -1
  75. package/dist/commands/tools/index.spec.js +0 -70
  76. package/dist/commands/uninstall/index.spec.d.ts +0 -1
  77. package/dist/commands/uninstall/index.spec.js +0 -125
  78. package/dist/lib/arkServiceProxy.spec.d.ts +0 -1
  79. package/dist/lib/arkServiceProxy.spec.js +0 -100
  80. package/dist/lib/arkStatus.spec.d.ts +0 -1
  81. package/dist/lib/arkStatus.spec.js +0 -49
  82. package/dist/lib/chatClient.spec.d.ts +0 -1
  83. package/dist/lib/chatClient.spec.js +0 -108
  84. package/dist/lib/cluster.spec.d.ts +0 -1
  85. package/dist/lib/cluster.spec.js +0 -338
  86. package/dist/lib/commands.spec.d.ts +0 -1
  87. package/dist/lib/commands.spec.js +0 -146
  88. package/dist/lib/config.spec.d.ts +0 -1
  89. package/dist/lib/config.spec.js +0 -202
  90. package/dist/lib/duration.spec.d.ts +0 -1
  91. package/dist/lib/duration.spec.js +0 -13
  92. package/dist/lib/errors.spec.d.ts +0 -1
  93. package/dist/lib/errors.spec.js +0 -221
  94. package/dist/lib/executeQuery.spec.d.ts +0 -1
  95. package/dist/lib/executeQuery.spec.js +0 -325
  96. package/dist/lib/kubectl.spec.d.ts +0 -1
  97. package/dist/lib/kubectl.spec.js +0 -192
  98. package/dist/lib/marketplaceFetcher.spec.d.ts +0 -1
  99. package/dist/lib/marketplaceFetcher.spec.js +0 -225
  100. package/dist/lib/nextSteps.spec.d.ts +0 -1
  101. package/dist/lib/nextSteps.spec.js +0 -59
  102. package/dist/lib/output.spec.d.ts +0 -1
  103. package/dist/lib/output.spec.js +0 -123
  104. package/dist/lib/startup.spec.d.ts +0 -1
  105. package/dist/lib/startup.spec.js +0 -152
  106. package/dist/lib/stdin.spec.d.ts +0 -1
  107. package/dist/lib/stdin.spec.js +0 -82
  108. package/dist/lib/timeout.spec.d.ts +0 -1
  109. package/dist/lib/timeout.spec.js +0 -14
  110. package/dist/lib/waitForReady.spec.d.ts +0 -1
  111. package/dist/lib/waitForReady.spec.js +0 -104
  112. package/dist/marketplaceServices.spec.d.ts +0 -1
  113. package/dist/marketplaceServices.spec.js +0 -74
  114. package/dist/ui/statusFormatter.spec.d.ts +0 -1
  115. 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
- });