@agents-at-scale/ark 0.1.41 → 0.1.43
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 +0 -9
- package/dist/commands/completion/index.js +46 -1
- package/dist/commands/evaluation/index.d.ts +3 -0
- package/dist/commands/evaluation/index.js +60 -0
- package/dist/commands/evaluation/index.spec.d.ts +1 -0
- package/dist/commands/evaluation/index.spec.js +161 -0
- package/dist/commands/generate/generators/team.js +4 -1
- package/dist/commands/install/index.js +27 -0
- package/dist/commands/marketplace/index.d.ts +4 -0
- package/dist/commands/marketplace/index.js +50 -0
- package/dist/commands/memory/index.d.ts +15 -0
- package/dist/commands/memory/index.js +130 -0
- package/dist/commands/memory/index.spec.d.ts +1 -0
- package/dist/commands/memory/index.spec.js +124 -0
- package/dist/commands/models/create.d.ts +5 -6
- package/dist/commands/models/create.js +14 -119
- package/dist/commands/models/create.spec.js +51 -0
- package/dist/commands/models/kubernetes/manifest-builder.d.ts +11 -0
- package/dist/commands/models/kubernetes/manifest-builder.js +109 -0
- package/dist/commands/models/kubernetes/secret-manager.d.ts +7 -0
- package/dist/commands/models/kubernetes/secret-manager.js +20 -0
- package/dist/commands/models/providers/azure.d.ts +31 -0
- package/dist/commands/models/providers/azure.js +82 -0
- package/dist/commands/models/providers/azure.spec.d.ts +1 -0
- package/dist/commands/models/providers/azure.spec.js +232 -0
- package/dist/commands/models/providers/bedrock.d.ts +37 -0
- package/dist/commands/models/providers/bedrock.js +105 -0
- package/dist/commands/models/providers/bedrock.spec.d.ts +1 -0
- package/dist/commands/models/providers/bedrock.spec.js +241 -0
- package/dist/commands/models/providers/factory.d.ts +18 -0
- package/dist/commands/models/providers/factory.js +31 -0
- package/dist/commands/models/providers/index.d.ts +17 -0
- package/dist/commands/models/providers/index.js +9 -0
- package/dist/commands/models/providers/openai.d.ts +28 -0
- package/dist/commands/models/providers/openai.js +68 -0
- package/dist/commands/models/providers/openai.spec.d.ts +1 -0
- package/dist/commands/models/providers/openai.spec.js +180 -0
- package/dist/commands/models/providers/types.d.ts +51 -0
- package/dist/commands/models/providers/types.js +1 -0
- package/dist/commands/queries/delete.d.ts +7 -0
- package/dist/commands/queries/delete.js +24 -0
- package/dist/commands/queries/delete.spec.d.ts +1 -0
- package/dist/commands/queries/delete.spec.js +74 -0
- package/dist/commands/queries/index.d.ts +3 -0
- package/dist/commands/queries/index.js +108 -0
- package/dist/commands/queries/list.d.ts +6 -0
- package/dist/commands/queries/list.js +66 -0
- package/dist/commands/queries/list.spec.d.ts +1 -0
- package/dist/commands/queries/list.spec.js +170 -0
- package/dist/commands/queries/validation.d.ts +2 -0
- package/dist/commands/queries/validation.js +10 -0
- package/dist/commands/queries/validation.spec.d.ts +1 -0
- package/dist/commands/queries/validation.spec.js +27 -0
- package/dist/commands/query/index.js +3 -1
- package/dist/commands/query/index.spec.js +24 -0
- package/dist/commands/uninstall/index.js +27 -0
- package/dist/components/ChatUI.js +2 -0
- package/dist/index.js +8 -0
- package/dist/lib/arkApiClient.d.ts +4 -0
- package/dist/lib/arkApiClient.js +57 -0
- package/dist/lib/errors.d.ts +1 -0
- package/dist/lib/errors.js +1 -0
- package/dist/lib/executeEvaluation.d.ts +16 -0
- package/dist/lib/executeEvaluation.js +155 -0
- package/dist/lib/executeQuery.d.ts +1 -4
- package/dist/lib/executeQuery.js +98 -68
- package/dist/lib/executeQuery.spec.js +176 -99
- package/dist/lib/kubectl.d.ts +15 -0
- package/dist/lib/kubectl.js +47 -0
- package/dist/lib/kubectl.spec.d.ts +1 -0
- package/dist/lib/kubectl.spec.js +176 -0
- package/dist/lib/stdin.d.ts +1 -0
- package/dist/lib/stdin.js +16 -0
- package/dist/lib/stdin.spec.d.ts +1 -0
- package/dist/lib/stdin.spec.js +82 -0
- package/dist/lib/types.d.ts +39 -0
- package/dist/marketplaceServices.d.ts +15 -0
- package/dist/marketplaceServices.js +51 -0
- package/package.json +2 -1
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { jest } from '@jest/globals';
|
|
2
|
+
const mockExeca = jest.fn();
|
|
3
|
+
jest.unstable_mockModule('execa', () => ({
|
|
4
|
+
execa: mockExeca,
|
|
5
|
+
}));
|
|
6
|
+
const { getResource, listResources, deleteResource } = await import('./kubectl.js');
|
|
7
|
+
describe('kubectl', () => {
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
jest.clearAllMocks();
|
|
10
|
+
});
|
|
11
|
+
describe('getResource', () => {
|
|
12
|
+
it('should get a specific resource by name', async () => {
|
|
13
|
+
const mockResource = {
|
|
14
|
+
metadata: {
|
|
15
|
+
name: 'test-query',
|
|
16
|
+
creationTimestamp: '2024-01-01T00:00:00Z',
|
|
17
|
+
},
|
|
18
|
+
spec: {
|
|
19
|
+
value: 'test',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
mockExeca.mockResolvedValue({
|
|
23
|
+
stdout: JSON.stringify(mockResource),
|
|
24
|
+
});
|
|
25
|
+
const result = await getResource('queries', 'test-query');
|
|
26
|
+
expect(result).toEqual(mockResource);
|
|
27
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['get', 'queries', 'test-query', '-o', 'json'], { stdio: 'pipe' });
|
|
28
|
+
});
|
|
29
|
+
it('should get latest resource when name is @latest', async () => {
|
|
30
|
+
const mockResources = [
|
|
31
|
+
{
|
|
32
|
+
metadata: {
|
|
33
|
+
name: 'query-1',
|
|
34
|
+
creationTimestamp: '2024-01-01T00:00:00Z',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
metadata: {
|
|
39
|
+
name: 'query-2',
|
|
40
|
+
creationTimestamp: '2024-01-02T00:00:00Z',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
metadata: {
|
|
45
|
+
name: 'query-3',
|
|
46
|
+
creationTimestamp: '2024-01-03T00:00:00Z',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
mockExeca.mockResolvedValue({
|
|
51
|
+
stdout: JSON.stringify({ items: mockResources }),
|
|
52
|
+
});
|
|
53
|
+
const result = await getResource('queries', '@latest');
|
|
54
|
+
expect(result).toEqual(mockResources[2]);
|
|
55
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', [
|
|
56
|
+
'get',
|
|
57
|
+
'queries',
|
|
58
|
+
'--sort-by=.metadata.creationTimestamp',
|
|
59
|
+
'-o',
|
|
60
|
+
'json',
|
|
61
|
+
], { stdio: 'pipe' });
|
|
62
|
+
});
|
|
63
|
+
it('should throw error when @latest finds no resources', async () => {
|
|
64
|
+
mockExeca.mockResolvedValue({
|
|
65
|
+
stdout: JSON.stringify({ items: [] }),
|
|
66
|
+
});
|
|
67
|
+
await expect(getResource('queries', '@latest')).rejects.toThrow('No queries found');
|
|
68
|
+
});
|
|
69
|
+
it('should handle kubectl errors', async () => {
|
|
70
|
+
mockExeca.mockRejectedValue(new Error('kubectl error'));
|
|
71
|
+
await expect(getResource('queries', 'test-query')).rejects.toThrow('kubectl error');
|
|
72
|
+
});
|
|
73
|
+
it('should work with different resource types', async () => {
|
|
74
|
+
const mockAgent = {
|
|
75
|
+
metadata: {
|
|
76
|
+
name: 'test-agent',
|
|
77
|
+
creationTimestamp: '2024-01-01T00:00:00Z',
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
mockExeca.mockResolvedValue({
|
|
81
|
+
stdout: JSON.stringify(mockAgent),
|
|
82
|
+
});
|
|
83
|
+
const result = await getResource('agents', 'test-agent');
|
|
84
|
+
expect(result).toEqual(mockAgent);
|
|
85
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['get', 'agents', 'test-agent', '-o', 'json'], { stdio: 'pipe' });
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
describe('listResources', () => {
|
|
89
|
+
it('should list all resources of a given type', async () => {
|
|
90
|
+
const mockResources = [
|
|
91
|
+
{
|
|
92
|
+
metadata: {
|
|
93
|
+
name: 'query-1',
|
|
94
|
+
creationTimestamp: '2024-01-01T00:00:00Z',
|
|
95
|
+
},
|
|
96
|
+
spec: {
|
|
97
|
+
value: 'test1',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
metadata: {
|
|
102
|
+
name: 'query-2',
|
|
103
|
+
creationTimestamp: '2024-01-02T00:00:00Z',
|
|
104
|
+
},
|
|
105
|
+
spec: {
|
|
106
|
+
value: 'test2',
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
mockExeca.mockResolvedValue({
|
|
111
|
+
stdout: JSON.stringify({ items: mockResources }),
|
|
112
|
+
});
|
|
113
|
+
const result = await listResources('queries');
|
|
114
|
+
expect(result).toEqual(mockResources);
|
|
115
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['get', 'queries', '-o', 'json'], { stdio: 'pipe' });
|
|
116
|
+
});
|
|
117
|
+
it('should return an empty array when no resources exist', async () => {
|
|
118
|
+
mockExeca.mockResolvedValue({
|
|
119
|
+
stdout: JSON.stringify({ items: [] }),
|
|
120
|
+
});
|
|
121
|
+
const result = await listResources('queries');
|
|
122
|
+
expect(result).toEqual([]);
|
|
123
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['get', 'queries', '-o', 'json'], { stdio: 'pipe' });
|
|
124
|
+
});
|
|
125
|
+
it('should list resources with custom sort option', async () => {
|
|
126
|
+
const mockResources = [
|
|
127
|
+
{
|
|
128
|
+
metadata: {
|
|
129
|
+
name: 'query-1',
|
|
130
|
+
creationTimestamp: '2024-01-01T00:00:00Z',
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
metadata: {
|
|
135
|
+
name: 'query-2',
|
|
136
|
+
creationTimestamp: '2024-01-02T00:00:00Z',
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
mockExeca.mockResolvedValue({
|
|
141
|
+
stdout: JSON.stringify({ items: mockResources }),
|
|
142
|
+
});
|
|
143
|
+
const result = await listResources('queries', {
|
|
144
|
+
sortBy: '.metadata.creationTimestamp',
|
|
145
|
+
});
|
|
146
|
+
expect(result).toEqual(mockResources);
|
|
147
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', [
|
|
148
|
+
'get',
|
|
149
|
+
'queries',
|
|
150
|
+
'--sort-by=.metadata.creationTimestamp',
|
|
151
|
+
'-o',
|
|
152
|
+
'json',
|
|
153
|
+
], { stdio: 'pipe' });
|
|
154
|
+
});
|
|
155
|
+
it('should handle kubectl errors when listing resources', async () => {
|
|
156
|
+
mockExeca.mockRejectedValue(new Error('kubectl connection error'));
|
|
157
|
+
await expect(listResources('queries')).rejects.toThrow('kubectl connection error');
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
describe('deleteResource', () => {
|
|
161
|
+
it('should delete a resource by name', async () => {
|
|
162
|
+
mockExeca.mockResolvedValue({
|
|
163
|
+
stdout: '',
|
|
164
|
+
});
|
|
165
|
+
await deleteResource('queries', 'test-query');
|
|
166
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['delete', 'queries', 'test-query'], { stdio: 'pipe' });
|
|
167
|
+
});
|
|
168
|
+
it('should delete all resources of a type when all option is true', async () => {
|
|
169
|
+
mockExeca.mockResolvedValue({
|
|
170
|
+
stdout: '',
|
|
171
|
+
});
|
|
172
|
+
await deleteResource('queries', undefined, { all: true });
|
|
173
|
+
expect(mockExeca).toHaveBeenCalledWith('kubectl', ['delete', 'queries', '--all'], { stdio: 'pipe' });
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readStdin(): Promise<string>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export async function readStdin() {
|
|
2
|
+
return new Promise((resolve) => {
|
|
3
|
+
if (process.stdin.isTTY) {
|
|
4
|
+
resolve('');
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
let data = '';
|
|
8
|
+
process.stdin.setEncoding('utf8');
|
|
9
|
+
process.stdin.on('data', (chunk) => {
|
|
10
|
+
data += chunk;
|
|
11
|
+
});
|
|
12
|
+
process.stdin.on('end', () => {
|
|
13
|
+
resolve(data.trim());
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach, jest } from '@jest/globals';
|
|
2
|
+
import { readStdin } from './stdin.js';
|
|
3
|
+
import { Readable } from 'stream';
|
|
4
|
+
describe('readStdin', () => {
|
|
5
|
+
let originalStdin;
|
|
6
|
+
let mockStdin;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
originalStdin = process.stdin;
|
|
9
|
+
mockStdin = new Readable({
|
|
10
|
+
read() { },
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(process, 'stdin', {
|
|
13
|
+
value: mockStdin,
|
|
14
|
+
writable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
Object.defineProperty(process, 'stdin', {
|
|
20
|
+
value: originalStdin,
|
|
21
|
+
writable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
});
|
|
24
|
+
jest.clearAllMocks();
|
|
25
|
+
});
|
|
26
|
+
it('should return empty string when stdin is TTY', async () => {
|
|
27
|
+
mockStdin.isTTY = true;
|
|
28
|
+
const result = await readStdin();
|
|
29
|
+
expect(result).toBe('');
|
|
30
|
+
});
|
|
31
|
+
it('should read single chunk from stdin', async () => {
|
|
32
|
+
mockStdin.isTTY = false;
|
|
33
|
+
const promise = readStdin();
|
|
34
|
+
mockStdin.push('test-query');
|
|
35
|
+
mockStdin.push(null);
|
|
36
|
+
const result = await promise;
|
|
37
|
+
expect(result).toBe('test-query');
|
|
38
|
+
});
|
|
39
|
+
it('should read multiple chunks from stdin', async () => {
|
|
40
|
+
mockStdin.isTTY = false;
|
|
41
|
+
const promise = readStdin();
|
|
42
|
+
mockStdin.push('test-');
|
|
43
|
+
mockStdin.push('query-');
|
|
44
|
+
mockStdin.push('name');
|
|
45
|
+
mockStdin.push(null);
|
|
46
|
+
const result = await promise;
|
|
47
|
+
expect(result).toBe('test-query-name');
|
|
48
|
+
});
|
|
49
|
+
it('should trim whitespace from stdin input', async () => {
|
|
50
|
+
mockStdin.isTTY = false;
|
|
51
|
+
const promise = readStdin();
|
|
52
|
+
mockStdin.push(' test-query \n');
|
|
53
|
+
mockStdin.push(null);
|
|
54
|
+
const result = await promise;
|
|
55
|
+
expect(result).toBe('test-query');
|
|
56
|
+
});
|
|
57
|
+
it('should handle empty stdin input', async () => {
|
|
58
|
+
mockStdin.isTTY = false;
|
|
59
|
+
const promise = readStdin();
|
|
60
|
+
mockStdin.push(null);
|
|
61
|
+
const result = await promise;
|
|
62
|
+
expect(result).toBe('');
|
|
63
|
+
});
|
|
64
|
+
it('should handle stdin with only whitespace', async () => {
|
|
65
|
+
mockStdin.isTTY = false;
|
|
66
|
+
const promise = readStdin();
|
|
67
|
+
mockStdin.push(' \n\n ');
|
|
68
|
+
mockStdin.push(null);
|
|
69
|
+
const result = await promise;
|
|
70
|
+
expect(result).toBe('');
|
|
71
|
+
});
|
|
72
|
+
it('should handle multiline input', async () => {
|
|
73
|
+
mockStdin.isTTY = false;
|
|
74
|
+
const promise = readStdin();
|
|
75
|
+
mockStdin.push('line1\n');
|
|
76
|
+
mockStdin.push('line2\n');
|
|
77
|
+
mockStdin.push('line3');
|
|
78
|
+
mockStdin.push(null);
|
|
79
|
+
const result = await promise;
|
|
80
|
+
expect(result).toBe('line1\nline2\nline3');
|
|
81
|
+
});
|
|
82
|
+
});
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export interface CommandVersionConfig {
|
|
|
52
52
|
export interface K8sMetadata {
|
|
53
53
|
name: string;
|
|
54
54
|
namespace?: string;
|
|
55
|
+
creationTimestamp?: string;
|
|
55
56
|
}
|
|
56
57
|
export interface K8sCondition {
|
|
57
58
|
type: string;
|
|
@@ -119,3 +120,41 @@ export interface ClusterInfo {
|
|
|
119
120
|
user?: string;
|
|
120
121
|
namespace?: string;
|
|
121
122
|
}
|
|
123
|
+
export interface EvaluationManifest {
|
|
124
|
+
apiVersion: string;
|
|
125
|
+
kind: 'Evaluation';
|
|
126
|
+
metadata: {
|
|
127
|
+
name: string;
|
|
128
|
+
};
|
|
129
|
+
spec: {
|
|
130
|
+
type: 'direct' | 'query';
|
|
131
|
+
evaluator: {
|
|
132
|
+
name: string;
|
|
133
|
+
};
|
|
134
|
+
config: {
|
|
135
|
+
input?: string;
|
|
136
|
+
output?: string;
|
|
137
|
+
queryRef?: {
|
|
138
|
+
name: string;
|
|
139
|
+
};
|
|
140
|
+
responseTarget?: {
|
|
141
|
+
type: string;
|
|
142
|
+
name: string;
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
timeout?: string;
|
|
146
|
+
ttl?: string;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export interface EvaluationStatus {
|
|
150
|
+
phase?: 'pending' | 'running' | 'done' | 'error';
|
|
151
|
+
score?: string;
|
|
152
|
+
passed?: boolean;
|
|
153
|
+
message?: string;
|
|
154
|
+
}
|
|
155
|
+
export interface Evaluation {
|
|
156
|
+
metadata: {
|
|
157
|
+
name: string;
|
|
158
|
+
};
|
|
159
|
+
status?: EvaluationStatus;
|
|
160
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace service definitions for external ARK marketplace resources
|
|
3
|
+
* Repository: https://github.com/mckinsey/agents-at-scale-marketplace
|
|
4
|
+
* Charts are installed from the public OCI registry
|
|
5
|
+
*/
|
|
6
|
+
import type { ArkService, ServiceCollection } from './types/arkService.js';
|
|
7
|
+
/**
|
|
8
|
+
* Available marketplace services
|
|
9
|
+
* Charts are published to: oci://ghcr.io/mckinsey/agents-at-scale-marketplace/charts
|
|
10
|
+
*/
|
|
11
|
+
export declare const marketplaceServices: ServiceCollection;
|
|
12
|
+
export declare function getMarketplaceService(name: string): ArkService | undefined;
|
|
13
|
+
export declare function getAllMarketplaceServices(): ServiceCollection;
|
|
14
|
+
export declare function isMarketplaceService(name: string): boolean;
|
|
15
|
+
export declare function extractMarketplaceServiceName(path: string): string;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marketplace service definitions for external ARK marketplace resources
|
|
3
|
+
* Repository: https://github.com/mckinsey/agents-at-scale-marketplace
|
|
4
|
+
* Charts are installed from the public OCI registry
|
|
5
|
+
*/
|
|
6
|
+
const MARKETPLACE_REGISTRY = 'oci://ghcr.io/mckinsey/agents-at-scale-marketplace/charts';
|
|
7
|
+
/**
|
|
8
|
+
* Available marketplace services
|
|
9
|
+
* Charts are published to: oci://ghcr.io/mckinsey/agents-at-scale-marketplace/charts
|
|
10
|
+
*/
|
|
11
|
+
export const marketplaceServices = {
|
|
12
|
+
phoenix: {
|
|
13
|
+
name: 'phoenix',
|
|
14
|
+
helmReleaseName: 'phoenix',
|
|
15
|
+
description: 'AI/ML observability and evaluation platform with OpenTelemetry integration',
|
|
16
|
+
enabled: true,
|
|
17
|
+
category: 'marketplace',
|
|
18
|
+
namespace: 'phoenix',
|
|
19
|
+
chartPath: `${MARKETPLACE_REGISTRY}/phoenix`,
|
|
20
|
+
installArgs: ['--create-namespace'],
|
|
21
|
+
k8sServiceName: 'phoenix',
|
|
22
|
+
k8sServicePort: 6006,
|
|
23
|
+
k8sDeploymentName: 'phoenix',
|
|
24
|
+
},
|
|
25
|
+
langfuse: {
|
|
26
|
+
name: 'langfuse',
|
|
27
|
+
helmReleaseName: 'langfuse',
|
|
28
|
+
description: 'Open-source LLM observability and analytics platform with session tracking',
|
|
29
|
+
enabled: true,
|
|
30
|
+
category: 'marketplace',
|
|
31
|
+
namespace: 'telemetry',
|
|
32
|
+
chartPath: `${MARKETPLACE_REGISTRY}/langfuse`,
|
|
33
|
+
installArgs: ['--create-namespace'],
|
|
34
|
+
k8sServiceName: 'langfuse',
|
|
35
|
+
k8sServicePort: 3000,
|
|
36
|
+
k8sDeploymentName: 'langfuse-web',
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export function getMarketplaceService(name) {
|
|
40
|
+
return marketplaceServices[name];
|
|
41
|
+
}
|
|
42
|
+
export function getAllMarketplaceServices() {
|
|
43
|
+
return marketplaceServices;
|
|
44
|
+
}
|
|
45
|
+
export function isMarketplaceService(name) {
|
|
46
|
+
return name.startsWith('marketplace/services/');
|
|
47
|
+
}
|
|
48
|
+
export function extractMarketplaceServiceName(path) {
|
|
49
|
+
// Extract service name from marketplace/services/phoenix
|
|
50
|
+
return path.replace(/^marketplace\/services\//, '');
|
|
51
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agents-at-scale/ark",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.43",
|
|
4
4
|
"description": "Ark CLI - Interactive terminal interface for ARK agents",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"@types/debug": "^4.1.12",
|
|
68
68
|
"@types/inquirer": "^9.0.7",
|
|
69
69
|
"@types/jest": "^30.0.0",
|
|
70
|
+
"@types/marked-terminal": "^6.1.1",
|
|
70
71
|
"@types/node": "^22.10.2",
|
|
71
72
|
"@types/react": "^19.1.13",
|
|
72
73
|
"@typescript-eslint/eslint-plugin": "^8.20.0",
|