@agents-at-scale/ark 0.1.55 → 0.1.57
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 +14 -0
- package/dist/commands/completion/index.js +9 -6
- package/dist/commands/export/index.js +0 -1
- package/dist/commands/generate/generators/team.js +0 -1
- package/dist/commands/install/index.js +33 -30
- package/dist/commands/marketplace/index.js +18 -3
- package/dist/commands/models/create.js +1 -0
- package/dist/commands/models/kubernetes/manifest-builder.js +22 -0
- package/dist/commands/models/providers/anthropic.d.ts +15 -0
- package/dist/commands/models/providers/anthropic.js +72 -0
- package/dist/commands/models/providers/factory.js +3 -0
- package/dist/commands/models/providers/index.d.ts +3 -4
- package/dist/commands/models/providers/index.js +1 -0
- package/dist/commands/uninstall/index.js +8 -2
- package/dist/components/ChatUI.js +4 -17
- package/dist/index.js +0 -2
- package/dist/lib/arkApiClient.d.ts +14 -4
- package/dist/lib/arkApiClient.js +51 -34
- package/dist/lib/chatClient.d.ts +4 -6
- package/dist/lib/chatClient.js +136 -102
- package/dist/lib/errors.d.ts +0 -1
- package/dist/lib/errors.js +0 -1
- package/dist/lib/marketplaceFetcher.d.ts +1 -0
- package/dist/lib/marketplaceFetcher.js +17 -0
- package/dist/lib/types.d.ts +0 -38
- package/dist/marketplaceServices.d.ts +6 -1
- package/dist/marketplaceServices.js +19 -3
- package/dist/types/arkService.d.ts +1 -0
- package/dist/types/marketplace.d.ts +1 -1
- package/package.json +5 -3
- package/templates/marketplace/README.md +5 -194
- package/templates/tool/uv.lock +794 -95
- package/dist/commands/evaluation/index.d.ts +0 -3
- package/dist/commands/evaluation/index.js +0 -60
- package/dist/lib/executeEvaluation.d.ts +0 -16
- package/dist/lib/executeEvaluation.js +0 -155
- package/templates/marketplace/.editorconfig +0 -24
- package/templates/marketplace/.github/.keep +0 -11
- package/templates/marketplace/.github/workflows/.keep +0 -16
- package/templates/marketplace/.helmignore +0 -23
- package/templates/marketplace/.prettierrc.json +0 -20
- package/templates/marketplace/.yamllint.yml +0 -53
- package/templates/marketplace/agents/.keep +0 -29
- package/templates/marketplace/docs/.keep +0 -19
- package/templates/marketplace/marketplace.json.example +0 -59
- package/templates/marketplace/mcp-servers/.keep +0 -32
- package/templates/marketplace/models/.keep +0 -23
- package/templates/marketplace/projects/.keep +0 -43
- package/templates/marketplace/queries/.keep +0 -25
- package/templates/marketplace/teams/.keep +0 -29
- package/templates/marketplace/tools/.keep +0 -32
- package/templates/marketplace/tools/examples/.keep +0 -17
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { executeDirectEvaluation, executeQueryEvaluation, } from '../../lib/executeEvaluation.js';
|
|
4
|
-
import { readStdin } from '../../lib/stdin.js';
|
|
5
|
-
export function createEvaluationCommand(_) {
|
|
6
|
-
const evaluationCommand = new Command('evaluation');
|
|
7
|
-
evaluationCommand
|
|
8
|
-
.description('Execute evaluations against evaluators')
|
|
9
|
-
.argument('<evaluator-name>', 'Name of the evaluator to use')
|
|
10
|
-
.argument('[query-name]', 'Name of the query to evaluate (for query-based evaluation)')
|
|
11
|
-
.option('--input <input>', 'Input text for direct evaluation')
|
|
12
|
-
.option('--output <output>', 'Output text for direct evaluation')
|
|
13
|
-
.option('--response-target <target>', 'Response target for query evaluation (e.g., agent:my-agent)')
|
|
14
|
-
.option('--timeout <timeout>', 'Evaluation timeout (e.g., "30s", "5m")')
|
|
15
|
-
.option('--watch-timeout <timeout>', 'CLI watch timeout')
|
|
16
|
-
.action(async (evaluatorName, queryName, options) => {
|
|
17
|
-
if (options.input && options.output) {
|
|
18
|
-
await executeDirectEvaluation({
|
|
19
|
-
evaluatorName,
|
|
20
|
-
input: options.input,
|
|
21
|
-
output: options.output,
|
|
22
|
-
timeout: options.timeout,
|
|
23
|
-
watchTimeout: options.watchTimeout,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
else if (queryName) {
|
|
27
|
-
await executeQueryEvaluation({
|
|
28
|
-
evaluatorName,
|
|
29
|
-
queryName,
|
|
30
|
-
responseTarget: options.responseTarget,
|
|
31
|
-
timeout: options.timeout,
|
|
32
|
-
watchTimeout: options.watchTimeout,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
const stdinQueryName = await readStdin();
|
|
37
|
-
if (stdinQueryName) {
|
|
38
|
-
await executeQueryEvaluation({
|
|
39
|
-
evaluatorName,
|
|
40
|
-
queryName: stdinQueryName,
|
|
41
|
-
responseTarget: options.responseTarget,
|
|
42
|
-
timeout: options.timeout,
|
|
43
|
-
watchTimeout: options.watchTimeout,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
console.error(chalk.red('Error: Must provide either:'));
|
|
48
|
-
console.error(' - --input and --output for direct evaluation');
|
|
49
|
-
console.error(' - <query-name> for query-based evaluation');
|
|
50
|
-
console.error(' - Pipe query name from stdin');
|
|
51
|
-
console.error('\nExamples:');
|
|
52
|
-
console.error(' ark evaluation my-evaluator --input "test" --output "result"');
|
|
53
|
-
console.error(' ark evaluation my-evaluator my-query');
|
|
54
|
-
console.error(' echo "my-query" | ark evaluation my-evaluator');
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
return evaluationCommand;
|
|
60
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface DirectEvaluationOptions {
|
|
2
|
-
evaluatorName: string;
|
|
3
|
-
input: string;
|
|
4
|
-
output: string;
|
|
5
|
-
timeout?: string;
|
|
6
|
-
watchTimeout?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface QueryEvaluationOptions {
|
|
9
|
-
evaluatorName: string;
|
|
10
|
-
queryName: string;
|
|
11
|
-
responseTarget?: string;
|
|
12
|
-
timeout?: string;
|
|
13
|
-
watchTimeout?: string;
|
|
14
|
-
}
|
|
15
|
-
export declare function executeDirectEvaluation(options: DirectEvaluationOptions): Promise<void>;
|
|
16
|
-
export declare function executeQueryEvaluation(options: QueryEvaluationOptions): Promise<void>;
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { execa } from 'execa';
|
|
2
|
-
import ora from 'ora';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import output from './output.js';
|
|
5
|
-
import { ExitCodes } from './errors.js';
|
|
6
|
-
import { parseDuration } from './duration.js';
|
|
7
|
-
async function waitForEvaluationAndDisplayResults(evaluationName, watchTimeoutMs, watchTimeoutDisplay) {
|
|
8
|
-
const spinner = ora('Waiting for evaluation completion...').start();
|
|
9
|
-
try {
|
|
10
|
-
await execa('kubectl', [
|
|
11
|
-
'wait',
|
|
12
|
-
'--for=condition=Completed',
|
|
13
|
-
`evaluation/${evaluationName}`,
|
|
14
|
-
`--timeout=${Math.floor(watchTimeoutMs / 1000)}s`,
|
|
15
|
-
], { timeout: watchTimeoutMs });
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
spinner.stop();
|
|
19
|
-
if (error instanceof Error && error.message.includes('timed out waiting')) {
|
|
20
|
-
console.error(chalk.red(`Evaluation did not complete within ${watchTimeoutDisplay}`));
|
|
21
|
-
process.exit(ExitCodes.Timeout);
|
|
22
|
-
}
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
spinner.stop();
|
|
26
|
-
const { stdout } = await execa('kubectl', ['get', 'evaluation', evaluationName, '-o', 'json'], { stdio: 'pipe' });
|
|
27
|
-
const evaluation = JSON.parse(stdout);
|
|
28
|
-
const status = evaluation.status;
|
|
29
|
-
if (status?.phase === 'done') {
|
|
30
|
-
console.log(chalk.green('\nEvaluation completed successfully:'));
|
|
31
|
-
if (status.score !== undefined) {
|
|
32
|
-
console.log(`Score: ${status.score}`);
|
|
33
|
-
}
|
|
34
|
-
if (status.passed !== undefined) {
|
|
35
|
-
console.log(`Result: ${status.passed ? chalk.green('PASSED') : chalk.red('FAILED')}`);
|
|
36
|
-
}
|
|
37
|
-
if (status.message) {
|
|
38
|
-
console.log(`Message: ${status.message}`);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else if (status?.phase === 'error') {
|
|
42
|
-
console.error(chalk.red(status.message || 'Evaluation failed with unknown error'));
|
|
43
|
-
process.exit(ExitCodes.OperationError);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
output.warning(`Unexpected evaluation phase: ${status?.phase}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
export async function executeDirectEvaluation(options) {
|
|
50
|
-
const spinner = ora('Creating evaluation...').start();
|
|
51
|
-
const queryTimeoutMs = options.timeout
|
|
52
|
-
? parseDuration(options.timeout)
|
|
53
|
-
: parseDuration('5m');
|
|
54
|
-
const watchTimeoutMs = options.watchTimeout
|
|
55
|
-
? parseDuration(options.watchTimeout)
|
|
56
|
-
: queryTimeoutMs + 60000;
|
|
57
|
-
const timestamp = Date.now();
|
|
58
|
-
const evaluationName = `cli-eval-${timestamp}`;
|
|
59
|
-
const evaluationManifest = {
|
|
60
|
-
apiVersion: 'ark.mckinsey.com/v1alpha1',
|
|
61
|
-
kind: 'Evaluation',
|
|
62
|
-
metadata: {
|
|
63
|
-
name: evaluationName,
|
|
64
|
-
},
|
|
65
|
-
spec: {
|
|
66
|
-
type: 'direct',
|
|
67
|
-
evaluator: {
|
|
68
|
-
name: options.evaluatorName,
|
|
69
|
-
},
|
|
70
|
-
config: {
|
|
71
|
-
input: options.input,
|
|
72
|
-
output: options.output,
|
|
73
|
-
},
|
|
74
|
-
...(options.timeout && { timeout: options.timeout }),
|
|
75
|
-
ttl: '1h',
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
try {
|
|
79
|
-
spinner.text = 'Submitting evaluation...';
|
|
80
|
-
await execa('kubectl', ['apply', '-f', '-'], {
|
|
81
|
-
input: JSON.stringify(evaluationManifest),
|
|
82
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
83
|
-
});
|
|
84
|
-
spinner.stop();
|
|
85
|
-
const watchTimeoutDisplay = options.watchTimeout ?? `${Math.floor(watchTimeoutMs / 1000)}s`;
|
|
86
|
-
await waitForEvaluationAndDisplayResults(evaluationName, watchTimeoutMs, watchTimeoutDisplay);
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
spinner.stop();
|
|
90
|
-
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
91
|
-
process.exit(ExitCodes.CliError);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export async function executeQueryEvaluation(options) {
|
|
95
|
-
const spinner = ora('Creating evaluation...').start();
|
|
96
|
-
const queryTimeoutMs = options.timeout
|
|
97
|
-
? parseDuration(options.timeout)
|
|
98
|
-
: parseDuration('5m');
|
|
99
|
-
const watchTimeoutMs = options.watchTimeout
|
|
100
|
-
? parseDuration(options.watchTimeout)
|
|
101
|
-
: queryTimeoutMs + 60000;
|
|
102
|
-
const timestamp = Date.now();
|
|
103
|
-
const evaluationName = `cli-eval-${timestamp}`;
|
|
104
|
-
let responseTarget;
|
|
105
|
-
if (options.responseTarget) {
|
|
106
|
-
const parts = options.responseTarget.split(':');
|
|
107
|
-
if (parts.length === 2) {
|
|
108
|
-
responseTarget = {
|
|
109
|
-
type: parts[0],
|
|
110
|
-
name: parts[1],
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
spinner.stop();
|
|
115
|
-
console.error(chalk.red('Invalid response-target format. Use: type:name (e.g., agent:my-agent)'));
|
|
116
|
-
process.exit(ExitCodes.CliError);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const evaluationManifest = {
|
|
120
|
-
apiVersion: 'ark.mckinsey.com/v1alpha1',
|
|
121
|
-
kind: 'Evaluation',
|
|
122
|
-
metadata: {
|
|
123
|
-
name: evaluationName,
|
|
124
|
-
},
|
|
125
|
-
spec: {
|
|
126
|
-
type: 'query',
|
|
127
|
-
evaluator: {
|
|
128
|
-
name: options.evaluatorName,
|
|
129
|
-
},
|
|
130
|
-
config: {
|
|
131
|
-
queryRef: {
|
|
132
|
-
name: options.queryName,
|
|
133
|
-
},
|
|
134
|
-
...(responseTarget && { responseTarget }),
|
|
135
|
-
},
|
|
136
|
-
...(options.timeout && { timeout: options.timeout }),
|
|
137
|
-
ttl: '1h',
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
try {
|
|
141
|
-
spinner.text = 'Submitting evaluation...';
|
|
142
|
-
await execa('kubectl', ['apply', '-f', '-'], {
|
|
143
|
-
input: JSON.stringify(evaluationManifest),
|
|
144
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
145
|
-
});
|
|
146
|
-
spinner.stop();
|
|
147
|
-
const watchTimeoutDisplay = options.watchTimeout ?? `${Math.floor(watchTimeoutMs / 1000)}s`;
|
|
148
|
-
await waitForEvaluationAndDisplayResults(evaluationName, watchTimeoutMs, watchTimeoutDisplay);
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
spinner.stop();
|
|
152
|
-
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
153
|
-
process.exit(ExitCodes.CliError);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# EditorConfig is awesome: https://EditorConfig.org
|
|
2
|
-
|
|
3
|
-
# top-most EditorConfig file
|
|
4
|
-
root = true
|
|
5
|
-
|
|
6
|
-
[*]
|
|
7
|
-
indent_style = space
|
|
8
|
-
indent_size = 2
|
|
9
|
-
end_of_line = lf
|
|
10
|
-
charset = utf-8
|
|
11
|
-
trim_trailing_whitespace = true
|
|
12
|
-
insert_final_newline = true
|
|
13
|
-
|
|
14
|
-
[*.md]
|
|
15
|
-
trim_trailing_whitespace = false
|
|
16
|
-
|
|
17
|
-
[Makefile]
|
|
18
|
-
indent_style = tab
|
|
19
|
-
|
|
20
|
-
[*.py]
|
|
21
|
-
indent_size = 4
|
|
22
|
-
|
|
23
|
-
[*.go]
|
|
24
|
-
indent_style = tab
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# GitHub Configuration Directory
|
|
2
|
-
|
|
3
|
-
GitHub-specific configuration files for the marketplace repository.
|
|
4
|
-
|
|
5
|
-
Expected contents:
|
|
6
|
-
- workflows/ - GitHub Actions workflows
|
|
7
|
-
- ISSUE_TEMPLATE/ - Issue templates
|
|
8
|
-
- PULL_REQUEST_TEMPLATE.md - PR template
|
|
9
|
-
- CODEOWNERS - Code ownership rules
|
|
10
|
-
|
|
11
|
-
These files help maintain quality and consistency in contributions.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# GitHub Workflows Directory
|
|
2
|
-
|
|
3
|
-
GitHub Actions workflows for automating marketplace operations.
|
|
4
|
-
|
|
5
|
-
Common workflows:
|
|
6
|
-
- component-validation.yml - Validate contributed components
|
|
7
|
-
- security-scan.yml - Security scanning of components
|
|
8
|
-
- documentation-build.yml - Build and deploy documentation
|
|
9
|
-
- release.yml - Automated releases
|
|
10
|
-
- pr-checks.yml - Pull request validation
|
|
11
|
-
|
|
12
|
-
Workflows should:
|
|
13
|
-
- Be efficient and reliable
|
|
14
|
-
- Provide clear feedback
|
|
15
|
-
- Follow security best practices
|
|
16
|
-
- Be well-documented
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Patterns to ignore when building packages.
|
|
2
|
-
# This supports shell glob matching, relative path matching, and
|
|
3
|
-
# negation (prefixed with !). Only one pattern per line.
|
|
4
|
-
.DS_Store
|
|
5
|
-
# Common VCS dirs
|
|
6
|
-
.git/
|
|
7
|
-
.gitignore
|
|
8
|
-
.bzr/
|
|
9
|
-
.bzrignore
|
|
10
|
-
.hg/
|
|
11
|
-
.hgignore
|
|
12
|
-
.svn/
|
|
13
|
-
# Common backup files
|
|
14
|
-
*.swp
|
|
15
|
-
*.bak
|
|
16
|
-
*.tmp
|
|
17
|
-
*.orig
|
|
18
|
-
*~
|
|
19
|
-
# Various IDEs
|
|
20
|
-
.project
|
|
21
|
-
.idea/
|
|
22
|
-
*.tmproj
|
|
23
|
-
.vscode/
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"semi": true,
|
|
3
|
-
"trailingComma": "es5",
|
|
4
|
-
"singleQuote": true,
|
|
5
|
-
"printWidth": 80,
|
|
6
|
-
"tabWidth": 2,
|
|
7
|
-
"useTabs": false,
|
|
8
|
-
"arrowParens": "avoid",
|
|
9
|
-
"bracketSpacing": true,
|
|
10
|
-
"proseWrap": "preserve",
|
|
11
|
-
"quoteProps": "as-needed",
|
|
12
|
-
"overrides": [
|
|
13
|
-
{
|
|
14
|
-
"files": "*.yaml",
|
|
15
|
-
"options": {
|
|
16
|
-
"singleQuote": false
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Default rules for yamllint
|
|
2
|
-
extends: default
|
|
3
|
-
|
|
4
|
-
rules:
|
|
5
|
-
# 120 chars should be enough, but don't fail if a line is longer
|
|
6
|
-
line-length:
|
|
7
|
-
max: 120
|
|
8
|
-
level: warning
|
|
9
|
-
|
|
10
|
-
# accept both key:value and key: value
|
|
11
|
-
colons:
|
|
12
|
-
max-spaces-before: 0
|
|
13
|
-
max-spaces-after: -1
|
|
14
|
-
|
|
15
|
-
# don't bother me with tabs vs spaces issues
|
|
16
|
-
indentation:
|
|
17
|
-
spaces: consistent
|
|
18
|
-
indent-sequences: whatever
|
|
19
|
-
|
|
20
|
-
# allow empty values like 'key:'
|
|
21
|
-
empty-values:
|
|
22
|
-
forbid-in-block-mappings: false
|
|
23
|
-
forbid-in-flow-mappings: false
|
|
24
|
-
|
|
25
|
-
# sometimes you have to use quotes
|
|
26
|
-
quoted-strings:
|
|
27
|
-
quote-type: any
|
|
28
|
-
required: false
|
|
29
|
-
|
|
30
|
-
# allow trailing spaces in comments
|
|
31
|
-
trailing-spaces:
|
|
32
|
-
level: warning
|
|
33
|
-
|
|
34
|
-
# allow truthy values
|
|
35
|
-
truthy:
|
|
36
|
-
allowed-values: ['true', 'false', 'on', 'off', 'yes', 'no']
|
|
37
|
-
check-keys: false
|
|
38
|
-
|
|
39
|
-
# allow ! in yaml
|
|
40
|
-
comments:
|
|
41
|
-
require-starting-space: false
|
|
42
|
-
ignore-shebangs: true
|
|
43
|
-
min-spaces-from-content: 1
|
|
44
|
-
|
|
45
|
-
# brackets
|
|
46
|
-
brackets:
|
|
47
|
-
max-spaces-inside: 1
|
|
48
|
-
max-spaces-inside-empty: 0
|
|
49
|
-
|
|
50
|
-
# braces
|
|
51
|
-
braces:
|
|
52
|
-
max-spaces-inside: 1
|
|
53
|
-
max-spaces-inside-empty: 0
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Agents Directory
|
|
2
|
-
|
|
3
|
-
This directory contains reusable agent definitions that can be shared across projects.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
Each agent should be in its own file or subdirectory (complex agents) with:
|
|
8
|
-
|
|
9
|
-
- agent.yaml (the main agent definition)
|
|
10
|
-
- README.md (documentation)
|
|
11
|
-
- examples/ (optional usage examples)
|
|
12
|
-
|
|
13
|
-
## Naming Convention
|
|
14
|
-
|
|
15
|
-
Use descriptive names that indicate the agent's purpose:
|
|
16
|
-
|
|
17
|
-
- data-analyst/
|
|
18
|
-
- code-reviewer/
|
|
19
|
-
- security-scanner/
|
|
20
|
-
- documentation-writer/
|
|
21
|
-
|
|
22
|
-
## Contributing
|
|
23
|
-
|
|
24
|
-
When contributing an agent:
|
|
25
|
-
|
|
26
|
-
1. Ensure it follows the Ark agent specification
|
|
27
|
-
2. Include comprehensive documentation
|
|
28
|
-
3. Provide usage examples
|
|
29
|
-
4. Test with multiple models when possible
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Documentation Directory
|
|
2
|
-
|
|
3
|
-
Documentation for the marketplace and its components.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
- contributing.md - Guidelines for contributors
|
|
8
|
-
- component-specs/ - Specifications for different component types
|
|
9
|
-
- best-practices/ - Development and usage best practices
|
|
10
|
-
- tutorials/ - Step-by-step guides
|
|
11
|
-
- api/ - API documentation
|
|
12
|
-
|
|
13
|
-
## Documentation Standards
|
|
14
|
-
|
|
15
|
-
1. Use clear, concise language
|
|
16
|
-
2. Include code examples
|
|
17
|
-
3. Keep documentation up-to-date
|
|
18
|
-
4. Follow markdown conventions
|
|
19
|
-
5. Include diagrams where helpful
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "1.0.0",
|
|
3
|
-
"marketplace": "ARK Marketplace",
|
|
4
|
-
"items": [
|
|
5
|
-
{
|
|
6
|
-
"name": "phoenix",
|
|
7
|
-
"displayName": "Phoenix",
|
|
8
|
-
"description": "AI/ML observability and evaluation platform with OpenTelemetry integration",
|
|
9
|
-
"version": "0.1.5",
|
|
10
|
-
"author": "ARK Marketplace",
|
|
11
|
-
"homepage": "https://github.com/mckinsey/agents-at-scale-marketplace",
|
|
12
|
-
"repository": "https://github.com/mckinsey/agents-at-scale-marketplace",
|
|
13
|
-
"license": "Apache-2.0",
|
|
14
|
-
"tags": ["observability", "evaluation", "telemetry", "monitoring"],
|
|
15
|
-
"category": "observability",
|
|
16
|
-
"icon": "https://example.com/phoenix-icon.png",
|
|
17
|
-
"documentation": "https://mckinsey.github.io/agents-at-scale-marketplace/services/phoenix/",
|
|
18
|
-
"support": {
|
|
19
|
-
"url": "https://github.com/mckinsey/agents-at-scale-marketplace/issues"
|
|
20
|
-
},
|
|
21
|
-
"ark": {
|
|
22
|
-
"chartPath": "oci://ghcr.io/mckinsey/agents-at-scale-marketplace/charts/phoenix",
|
|
23
|
-
"namespace": "phoenix",
|
|
24
|
-
"helmReleaseName": "phoenix",
|
|
25
|
-
"installArgs": ["--create-namespace"],
|
|
26
|
-
"k8sServiceName": "phoenix",
|
|
27
|
-
"k8sServicePort": 6006,
|
|
28
|
-
"k8sDeploymentName": "phoenix"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"name": "langfuse",
|
|
33
|
-
"displayName": "Langfuse",
|
|
34
|
-
"description": "Open-source LLM observability and analytics platform with session tracking",
|
|
35
|
-
"version": "0.1.4",
|
|
36
|
-
"author": "ARK Marketplace",
|
|
37
|
-
"homepage": "https://github.com/mckinsey/agents-at-scale-marketplace",
|
|
38
|
-
"repository": "https://github.com/mckinsey/agents-at-scale-marketplace",
|
|
39
|
-
"license": "Apache-2.0",
|
|
40
|
-
"tags": ["observability", "analytics", "llm", "tracking"],
|
|
41
|
-
"category": "observability",
|
|
42
|
-
"icon": "https://example.com/langfuse-icon.png",
|
|
43
|
-
"documentation": "https://mckinsey.github.io/agents-at-scale-marketplace/services/langfuse/",
|
|
44
|
-
"support": {
|
|
45
|
-
"url": "https://github.com/mckinsey/agents-at-scale-marketplace/issues"
|
|
46
|
-
},
|
|
47
|
-
"ark": {
|
|
48
|
-
"chartPath": "oci://ghcr.io/mckinsey/agents-at-scale-marketplace/charts/langfuse",
|
|
49
|
-
"namespace": "telemetry",
|
|
50
|
-
"helmReleaseName": "langfuse",
|
|
51
|
-
"installArgs": ["--create-namespace"],
|
|
52
|
-
"k8sServiceName": "langfuse",
|
|
53
|
-
"k8sServicePort": 3000,
|
|
54
|
-
"k8sDeploymentName": "langfuse-web"
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# MCP Servers Directory
|
|
2
|
-
|
|
3
|
-
This directory contains Model Context Protocol (MCP) server configurations and implementations.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
Each MCP server should be in its own subdirectory with:
|
|
8
|
-
|
|
9
|
-
- mcp-server.yaml (server configuration)
|
|
10
|
-
- src/ (source code if custom implementation)
|
|
11
|
-
- Dockerfile (if containerized)
|
|
12
|
-
- README.md (documentation)
|
|
13
|
-
- examples/ (usage examples)
|
|
14
|
-
|
|
15
|
-
## Naming Convention
|
|
16
|
-
|
|
17
|
-
Use descriptive names that indicate the server's purpose:
|
|
18
|
-
|
|
19
|
-
- file-system-server/
|
|
20
|
-
- database-server/
|
|
21
|
-
- api-gateway-server/
|
|
22
|
-
- knowledge-base-server/
|
|
23
|
-
|
|
24
|
-
## Contributing
|
|
25
|
-
|
|
26
|
-
When contributing an MCP server:
|
|
27
|
-
|
|
28
|
-
1. Follow MCP protocol specifications
|
|
29
|
-
2. Include security configurations
|
|
30
|
-
3. Document all available tools/resources
|
|
31
|
-
4. Provide integration examples
|
|
32
|
-
5. Include monitoring and logging setup
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Models Directory
|
|
2
|
-
|
|
3
|
-
This directory contains model configurations for different AI providers and use cases.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
Each model configuration should be:
|
|
7
|
-
- provider-specific directories (openai/, anthropic/, etc.)
|
|
8
|
-
- model-specific YAML files within each directory
|
|
9
|
-
- README.md documenting capabilities and limitations
|
|
10
|
-
|
|
11
|
-
## Naming Convention
|
|
12
|
-
Use provider and model names:
|
|
13
|
-
- openai/gpt-4.yaml
|
|
14
|
-
- anthropic/claude-3-sonnet.yaml
|
|
15
|
-
- azure/gpt-4-32k.yaml
|
|
16
|
-
- local/llama2-7b.yaml
|
|
17
|
-
|
|
18
|
-
## Contributing
|
|
19
|
-
When contributing a model configuration:
|
|
20
|
-
1. Include provider-specific settings
|
|
21
|
-
2. Document token limits and capabilities
|
|
22
|
-
3. Specify recommended use cases
|
|
23
|
-
4. Include cost considerations if applicable
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Projects Directory
|
|
2
|
-
|
|
3
|
-
This directory contains complete, reusable Ark projects that demonstrate comprehensive use cases and multi-component solutions.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
- **Full Project Templates**: Complete Ark project structures with multiple agents, teams, models, and tools working together
|
|
8
|
-
- **End-to-End Solutions**: Real-world scenarios that showcase complex workflows and integrations
|
|
9
|
-
- **Reference Implementations**: Best practices for structuring large-scale Ark deployments
|
|
10
|
-
|
|
11
|
-
## Structure Guidelines
|
|
12
|
-
|
|
13
|
-
Each project should include:
|
|
14
|
-
|
|
15
|
-
- **Complete project structure**: All necessary YAML configurations
|
|
16
|
-
- **README.md**: Detailed setup instructions, use case description, and architecture overview
|
|
17
|
-
- **Documentation**: Architecture diagrams, workflow explanations, and deployment guides
|
|
18
|
-
- **Examples**: Sample queries and expected outputs
|
|
19
|
-
- **Dependencies**: Clear list of required models, tools, and external services
|
|
20
|
-
|
|
21
|
-
## Naming Convention
|
|
22
|
-
|
|
23
|
-
Use descriptive names that indicate the use case:
|
|
24
|
-
|
|
25
|
-
- `customer-support-workflow/` - Multi-agent customer service system
|
|
26
|
-
- `research-assistant-pipeline/` - Academic research and analysis workflow
|
|
27
|
-
- `content-generation-studio/` - Creative content production system
|
|
28
|
-
|
|
29
|
-
## Project Requirements
|
|
30
|
-
|
|
31
|
-
- Each project must be self-contained and deployable
|
|
32
|
-
- Include comprehensive documentation
|
|
33
|
-
- Provide clear setup and configuration instructions
|
|
34
|
-
- Include sample data or test cases where applicable
|
|
35
|
-
- Follow Ark best practices for resource organization
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
- Multi-agent workflows with specialized roles
|
|
40
|
-
- Integration with external APIs and services
|
|
41
|
-
- Complex data processing pipelines
|
|
42
|
-
- Cross-functional team collaboration scenarios
|
|
43
|
-
- Industry-specific solution templates
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Queries Directory
|
|
2
|
-
|
|
3
|
-
This directory contains reusable query templates for common use cases.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
Each query should be in its own file or subdirectory:
|
|
7
|
-
- query-name.yaml (simple queries)
|
|
8
|
-
- complex-query/ (for queries with multiple files)
|
|
9
|
-
- query.yaml
|
|
10
|
-
- README.md
|
|
11
|
-
- examples/
|
|
12
|
-
|
|
13
|
-
## Naming Convention
|
|
14
|
-
Use descriptive names that indicate the query's purpose:
|
|
15
|
-
- code-analysis.yaml
|
|
16
|
-
- data-transformation.yaml
|
|
17
|
-
- security-audit.yaml
|
|
18
|
-
- document-summarization.yaml
|
|
19
|
-
|
|
20
|
-
## Contributing
|
|
21
|
-
When contributing a query:
|
|
22
|
-
1. Make it parameterizable where possible
|
|
23
|
-
2. Include clear documentation of expected inputs
|
|
24
|
-
3. Provide example outputs
|
|
25
|
-
4. Specify compatible agents/teams
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Teams Directory
|
|
2
|
-
|
|
3
|
-
This directory contains reusable team configurations for multi-agent workflows.
|
|
4
|
-
|
|
5
|
-
## Structure
|
|
6
|
-
|
|
7
|
-
Each team should be in its own file (simple) or subdirectory (complex) with:
|
|
8
|
-
|
|
9
|
-
- team.yaml (the main team definition)
|
|
10
|
-
- README.md (documentation describing the workflow)
|
|
11
|
-
- examples/ (optional usage examples)
|
|
12
|
-
|
|
13
|
-
## Naming Convention
|
|
14
|
-
|
|
15
|
-
Use descriptive names that indicate the team's workflow:
|
|
16
|
-
|
|
17
|
-
- code-review-team/
|
|
18
|
-
- data-pipeline-team/
|
|
19
|
-
- content-creation-team/
|
|
20
|
-
- security-audit-team/
|
|
21
|
-
|
|
22
|
-
## Contributing
|
|
23
|
-
|
|
24
|
-
When contributing a team:
|
|
25
|
-
|
|
26
|
-
1. Document the team's workflow and strategy
|
|
27
|
-
2. Explain when to use this team configuration
|
|
28
|
-
3. Include examples of typical inputs and outputs
|
|
29
|
-
4. Test the team configuration thoroughly
|