@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.
- package/dist/arkServices.js +11 -7
- package/dist/commands/export/index.js +6 -4
- package/dist/commands/generate/generators/agent.js +2 -0
- package/dist/commands/generate/generators/marketplace.js +2 -0
- package/dist/commands/generate/generators/mcpserver.js +2 -0
- package/dist/commands/generate/generators/project.js +9 -2
- package/dist/commands/generate/generators/query.js +2 -0
- package/dist/commands/generate/generators/team.js +2 -0
- package/dist/commands/generate/templateDiscovery.js +1 -0
- package/dist/commands/generate/templateEngine.js +1 -3
- package/dist/commands/import/index.js +1 -1
- package/dist/commands/install/index.js +2 -1
- package/dist/commands/models/kubernetes/manifest-builder.js +27 -10
- package/dist/commands/models/providers/azure.d.ts +10 -7
- package/dist/commands/models/providers/azure.js +83 -21
- package/dist/commands/uninstall/index.js +1 -1
- package/dist/components/ChatUI.js +17 -16
- package/dist/components/statusChecker.js +3 -3
- package/dist/lib/arkApiClient.js +11 -9
- package/dist/lib/arkApiProxy.js +1 -0
- package/dist/lib/arkServiceProxy.js +5 -1
- package/dist/lib/chatClient.js +9 -0
- package/dist/lib/config.js +8 -3
- package/dist/lib/errors.js +3 -0
- package/dist/ui/asyncOperations/connectingToArk.js +2 -2
- package/package.json +17 -13
- package/dist/arkServices.spec.d.ts +0 -1
- package/dist/arkServices.spec.js +0 -138
- package/dist/commands/agents/index.spec.d.ts +0 -1
- package/dist/commands/agents/index.spec.js +0 -67
- package/dist/commands/cluster/get.spec.d.ts +0 -1
- package/dist/commands/cluster/get.spec.js +0 -92
- package/dist/commands/cluster/index.spec.d.ts +0 -1
- package/dist/commands/cluster/index.spec.js +0 -24
- package/dist/commands/completion/index.spec.d.ts +0 -1
- package/dist/commands/completion/index.spec.js +0 -34
- package/dist/commands/config/index.spec.d.ts +0 -1
- package/dist/commands/config/index.spec.js +0 -78
- package/dist/commands/evaluation/index.spec.d.ts +0 -1
- package/dist/commands/evaluation/index.spec.js +0 -161
- package/dist/commands/export/index.spec.d.ts +0 -1
- package/dist/commands/export/index.spec.js +0 -145
- package/dist/commands/import/index.spec.d.ts +0 -1
- package/dist/commands/import/index.spec.js +0 -46
- package/dist/commands/install/index.spec.d.ts +0 -1
- package/dist/commands/install/index.spec.js +0 -286
- package/dist/commands/marketplace/index.spec.d.ts +0 -1
- package/dist/commands/marketplace/index.spec.js +0 -88
- package/dist/commands/memory/index.spec.d.ts +0 -1
- package/dist/commands/memory/index.spec.js +0 -124
- package/dist/commands/models/create.spec.d.ts +0 -1
- package/dist/commands/models/create.spec.js +0 -167
- package/dist/commands/models/index.spec.d.ts +0 -1
- package/dist/commands/models/index.spec.js +0 -96
- package/dist/commands/models/providers/azure.spec.d.ts +0 -1
- package/dist/commands/models/providers/azure.spec.js +0 -232
- package/dist/commands/models/providers/bedrock.spec.d.ts +0 -1
- package/dist/commands/models/providers/bedrock.spec.js +0 -241
- package/dist/commands/models/providers/openai.spec.d.ts +0 -1
- package/dist/commands/models/providers/openai.spec.js +0 -180
- package/dist/commands/queries/delete.spec.d.ts +0 -1
- package/dist/commands/queries/delete.spec.js +0 -74
- package/dist/commands/queries/index.spec.d.ts +0 -1
- package/dist/commands/queries/index.spec.js +0 -167
- package/dist/commands/queries/list.spec.d.ts +0 -1
- package/dist/commands/queries/list.spec.js +0 -170
- package/dist/commands/queries/validation.spec.d.ts +0 -1
- package/dist/commands/queries/validation.spec.js +0 -27
- package/dist/commands/query/index.spec.d.ts +0 -1
- package/dist/commands/query/index.spec.js +0 -104
- package/dist/commands/targets/index.spec.d.ts +0 -1
- package/dist/commands/targets/index.spec.js +0 -154
- package/dist/commands/teams/index.spec.d.ts +0 -1
- package/dist/commands/teams/index.spec.js +0 -70
- package/dist/commands/tools/index.spec.d.ts +0 -1
- package/dist/commands/tools/index.spec.js +0 -70
- package/dist/commands/uninstall/index.spec.d.ts +0 -1
- package/dist/commands/uninstall/index.spec.js +0 -125
- package/dist/lib/arkServiceProxy.spec.d.ts +0 -1
- package/dist/lib/arkServiceProxy.spec.js +0 -100
- package/dist/lib/arkStatus.spec.d.ts +0 -1
- package/dist/lib/arkStatus.spec.js +0 -49
- package/dist/lib/chatClient.spec.d.ts +0 -1
- package/dist/lib/chatClient.spec.js +0 -108
- package/dist/lib/cluster.spec.d.ts +0 -1
- package/dist/lib/cluster.spec.js +0 -338
- package/dist/lib/commands.spec.d.ts +0 -1
- package/dist/lib/commands.spec.js +0 -146
- package/dist/lib/config.spec.d.ts +0 -1
- package/dist/lib/config.spec.js +0 -202
- package/dist/lib/duration.spec.d.ts +0 -1
- package/dist/lib/duration.spec.js +0 -13
- package/dist/lib/errors.spec.d.ts +0 -1
- package/dist/lib/errors.spec.js +0 -221
- package/dist/lib/executeQuery.spec.d.ts +0 -1
- package/dist/lib/executeQuery.spec.js +0 -325
- package/dist/lib/kubectl.spec.d.ts +0 -1
- package/dist/lib/kubectl.spec.js +0 -192
- package/dist/lib/marketplaceFetcher.spec.d.ts +0 -1
- package/dist/lib/marketplaceFetcher.spec.js +0 -225
- package/dist/lib/nextSteps.spec.d.ts +0 -1
- package/dist/lib/nextSteps.spec.js +0 -59
- package/dist/lib/output.spec.d.ts +0 -1
- package/dist/lib/output.spec.js +0 -123
- package/dist/lib/startup.spec.d.ts +0 -1
- package/dist/lib/startup.spec.js +0 -152
- package/dist/lib/stdin.spec.d.ts +0 -1
- package/dist/lib/stdin.spec.js +0 -82
- package/dist/lib/timeout.spec.d.ts +0 -1
- package/dist/lib/timeout.spec.js +0 -14
- package/dist/lib/waitForReady.spec.d.ts +0 -1
- package/dist/lib/waitForReady.spec.js +0 -104
- package/dist/marketplaceServices.spec.d.ts +0 -1
- package/dist/marketplaceServices.spec.js +0 -74
- package/dist/ui/statusFormatter.spec.d.ts +0 -1
- 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
|
-
});
|