@evalops/maestro 0.10.11 → 0.10.12
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/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +4 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +3 -2
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/evalops.d.ts +1 -1
- package/dist/cli/commands/evalops.d.ts.map +1 -1
- package/dist/cli/commands/evalops.js +23 -2
- package/dist/cli/commands/evalops.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +28 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli.js +180 -34
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
- package/dist/evalops/agent-bootstrap.js +118 -21
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +2 -3
- package/dist/models/builtin.js.map +1 -1
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +2 -1
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/platform/core-services.d.ts +1 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +1 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/providers/auth.d.ts +1 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +30 -2
- package/dist/providers/auth.js.map +1 -1
- package/dist/providers/evalops-managed.d.ts +1 -0
- package/dist/providers/evalops-managed.d.ts.map +1 -1
- package/dist/providers/evalops-managed.js +1 -0
- package/dist/providers/evalops-managed.js.map +1 -1
- package/dist/version.json +2 -2
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { bootstrapEvalOpsAgent, } from "../../evalops/agent-bootstrap.js";
|
|
3
|
+
import { muted, sectionHeading } from "../../style/theme.js";
|
|
4
|
+
export function formatInitHelp() {
|
|
5
|
+
return `${sectionHeading("maestro init")}${muted(` maestro init Login, create or reuse an API key, and register this agent
|
|
6
|
+
maestro init --rotate-key Replace the stored agent MCP API key
|
|
7
|
+
maestro init --mcp-url <url> Override the EvalOps agent MCP endpoint
|
|
8
|
+
maestro init --json Emit machine-readable bootstrap output
|
|
9
|
+
|
|
10
|
+
Options
|
|
11
|
+
--agent-type <type> Agent type to register, defaults to maestro
|
|
12
|
+
--surface <surface> Surface to register, defaults to cli
|
|
13
|
+
--workspace, --workspace-id <id> Workspace to associate with the registration
|
|
14
|
+
--scope <scope[,scope...]> Registration scopes to request
|
|
15
|
+
--key-scope <scope[,scope...]> API key scopes to request
|
|
16
|
+
--expires-in-days <days> API key TTL in days
|
|
17
|
+
--force-login Re-run EvalOps OAuth before bootstrapping
|
|
18
|
+
--manifest-url <url> Override the agent MCP manifest URL
|
|
19
|
+
--ttl-seconds <seconds> Registration TTL in seconds`)}`;
|
|
20
|
+
}
|
|
3
21
|
function readValue(args, index, flag) {
|
|
4
22
|
const value = args[index + 1];
|
|
5
23
|
if (!value || value.startsWith("-")) {
|
|
@@ -91,6 +109,10 @@ export function parseInitArgs(args) {
|
|
|
91
109
|
return options;
|
|
92
110
|
}
|
|
93
111
|
export async function handleInitCommand(args = []) {
|
|
112
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
113
|
+
console.log(formatInitHelp());
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
94
116
|
let options;
|
|
95
117
|
try {
|
|
96
118
|
options = parseInitArgs(args);
|
|
@@ -105,15 +127,19 @@ export async function handleInitCommand(args = []) {
|
|
|
105
127
|
const result = await bootstrapEvalOpsAgent(options, {
|
|
106
128
|
onAuthUrl: (url) => {
|
|
107
129
|
if (options.json) {
|
|
130
|
+
console.error("Open this URL in your browser to authenticate with EvalOps:");
|
|
131
|
+
console.error(url);
|
|
108
132
|
return;
|
|
109
133
|
}
|
|
110
134
|
console.log(chalk.yellow("Open this URL in your browser to authenticate with EvalOps:"));
|
|
111
135
|
console.log(chalk.underline(url));
|
|
112
136
|
},
|
|
113
137
|
onStatus: (status) => {
|
|
114
|
-
if (
|
|
115
|
-
console.
|
|
138
|
+
if (options.json) {
|
|
139
|
+
console.error(status.message);
|
|
140
|
+
return;
|
|
116
141
|
}
|
|
142
|
+
console.log(chalk.dim(status.message));
|
|
117
143
|
},
|
|
118
144
|
});
|
|
119
145
|
if (options.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport {\n\ttype EvalOpsInitOptions,\n\tbootstrapEvalOpsAgent,\n} from \"../../evalops/agent-bootstrap.js\";\n\nfunction readValue(args: string[], index: number, flag: string): string {\n\tconst value = args[index + 1];\n\tif (!value || value.startsWith(\"-\")) {\n\t\tthrow new Error(`${flag} requires a value`);\n\t}\n\treturn value;\n}\n\nfunction parsePositiveInteger(value: string, flag: string): number {\n\tconst parsed = Number.parseInt(value, 10);\n\tif (!Number.isInteger(parsed) || parsed <= 0) {\n\t\tthrow new Error(`${flag} must be a positive integer`);\n\t}\n\treturn parsed;\n}\n\nfunction appendScopes(existing: string[] | undefined, value: string): string[] {\n\treturn [\n\t\t...(existing ?? []),\n\t\t...value\n\t\t\t.split(\",\")\n\t\t\t.map((entry) => entry.trim())\n\t\t\t.filter((entry) => entry.length > 0),\n\t];\n}\n\nexport function parseInitArgs(args: string[]): EvalOpsInitOptions {\n\tconst options: EvalOpsInitOptions = {};\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\t\tswitch (arg) {\n\t\t\tcase \"--agent-mcp-url\":\n\t\t\tcase \"--mcp-url\":\n\t\t\t\toptions.mcpUrl = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--agent-type\":\n\t\t\t\toptions.agentType = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--api-key-scope\":\n\t\t\tcase \"--key-scope\":\n\t\t\t\toptions.apiKeyScopes = appendScopes(\n\t\t\t\t\toptions.apiKeyScopes,\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--expires-in-days\":\n\t\t\t\toptions.expiresInDays = parsePositiveInteger(\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t\targ,\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--force-login\":\n\t\t\t\toptions.forceLogin = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--json\":\n\t\t\t\toptions.json = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--key-name\":\n\t\t\t\toptions.keyName = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--manifest-url\":\n\t\t\t\toptions.manifestUrl = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--register-scope\":\n\t\t\tcase \"--scope\":\n\t\t\t\toptions.registerScopes = appendScopes(\n\t\t\t\t\toptions.registerScopes,\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--rotate-key\":\n\t\t\t\toptions.rotateKey = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--surface\":\n\t\t\t\toptions.surface = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--ttl-seconds\":\n\t\t\t\toptions.ttlSeconds = parsePositiveInteger(readValue(args, i, arg), arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--workspace\":\n\t\t\tcase \"--workspace-id\":\n\t\t\t\toptions.workspaceId = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (arg?.startsWith(\"-\")) {\n\t\t\t\t\tthrow new Error(`Unknown maestro init option: ${arg}`);\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Unexpected maestro init argument: ${arg}`);\n\t\t}\n\t}\n\treturn options;\n}\n\nexport async function handleInitCommand(args: string[] = []): Promise<void> {\n\tlet options: EvalOpsInitOptions;\n\ttry {\n\t\toptions = parseInitArgs(args);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\tchalk.red(error instanceof Error ? error.message : String(error)),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\tif (!options.json) {\n\t\tconsole.log(chalk.bold(\"Maestro EvalOps Init\"));\n\t}\n\n\tconst result = await bootstrapEvalOpsAgent(options, {\n\t\tonAuthUrl: (url) => {\n\t\t\tif (options.json) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t\"Open this URL in your browser to authenticate with EvalOps:\",\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log(chalk.underline(url));\n\t\t},\n\t\tonStatus: (status) => {\n\t\t\tif (!options.json) {\n\t\t\t\tconsole.log(chalk.dim(status.message));\n\t\t\t}\n\t\t},\n\t});\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\treturn;\n\t}\n\n\tconsole.log(chalk.green(\"EvalOps agent bootstrap complete.\"));\n\tconsole.log(chalk.dim(`MCP endpoint: ${result.endpoint}`));\n\tif (result.organizationId) {\n\t\tconsole.log(chalk.dim(`Organization: ${result.organizationId}`));\n\t}\n\tif (result.agentId) {\n\t\tconsole.log(chalk.dim(`Agent: ${result.agentId}`));\n\t}\n\tif (result.runId) {\n\t\tconsole.log(chalk.dim(`Run: ${result.runId}`));\n\t}\n\tif (result.keyPrefix) {\n\t\tconst keyMode = result.apiKeyCreated ? \"created\" : \"reused\";\n\t\tconsole.log(chalk.dim(`API key ${keyMode}: ${result.keyPrefix}`));\n\t}\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t\"Stored EvalOps MCP credentials locally for future Maestro sessions.\",\n\t\t),\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport {\n\ttype EvalOpsInitOptions,\n\tbootstrapEvalOpsAgent,\n} from \"../../evalops/agent-bootstrap.js\";\nimport { muted, sectionHeading } from \"../../style/theme.js\";\n\nexport function formatInitHelp(): string {\n\treturn `${sectionHeading(\"maestro init\")}${muted(\n\t\t` maestro init Login, create or reuse an API key, and register this agent\n maestro init --rotate-key Replace the stored agent MCP API key\n maestro init --mcp-url <url> Override the EvalOps agent MCP endpoint\n maestro init --json Emit machine-readable bootstrap output\n\nOptions\n --agent-type <type> Agent type to register, defaults to maestro\n --surface <surface> Surface to register, defaults to cli\n --workspace, --workspace-id <id> Workspace to associate with the registration\n --scope <scope[,scope...]> Registration scopes to request\n --key-scope <scope[,scope...]> API key scopes to request\n --expires-in-days <days> API key TTL in days\n --force-login Re-run EvalOps OAuth before bootstrapping\n --manifest-url <url> Override the agent MCP manifest URL\n --ttl-seconds <seconds> Registration TTL in seconds`,\n\t)}`;\n}\n\nfunction readValue(args: string[], index: number, flag: string): string {\n\tconst value = args[index + 1];\n\tif (!value || value.startsWith(\"-\")) {\n\t\tthrow new Error(`${flag} requires a value`);\n\t}\n\treturn value;\n}\n\nfunction parsePositiveInteger(value: string, flag: string): number {\n\tconst parsed = Number.parseInt(value, 10);\n\tif (!Number.isInteger(parsed) || parsed <= 0) {\n\t\tthrow new Error(`${flag} must be a positive integer`);\n\t}\n\treturn parsed;\n}\n\nfunction appendScopes(existing: string[] | undefined, value: string): string[] {\n\treturn [\n\t\t...(existing ?? []),\n\t\t...value\n\t\t\t.split(\",\")\n\t\t\t.map((entry) => entry.trim())\n\t\t\t.filter((entry) => entry.length > 0),\n\t];\n}\n\nexport function parseInitArgs(args: string[]): EvalOpsInitOptions {\n\tconst options: EvalOpsInitOptions = {};\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\t\tswitch (arg) {\n\t\t\tcase \"--agent-mcp-url\":\n\t\t\tcase \"--mcp-url\":\n\t\t\t\toptions.mcpUrl = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--agent-type\":\n\t\t\t\toptions.agentType = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--api-key-scope\":\n\t\t\tcase \"--key-scope\":\n\t\t\t\toptions.apiKeyScopes = appendScopes(\n\t\t\t\t\toptions.apiKeyScopes,\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--expires-in-days\":\n\t\t\t\toptions.expiresInDays = parsePositiveInteger(\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t\targ,\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--force-login\":\n\t\t\t\toptions.forceLogin = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--json\":\n\t\t\t\toptions.json = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--key-name\":\n\t\t\t\toptions.keyName = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--manifest-url\":\n\t\t\t\toptions.manifestUrl = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--register-scope\":\n\t\t\tcase \"--scope\":\n\t\t\t\toptions.registerScopes = appendScopes(\n\t\t\t\t\toptions.registerScopes,\n\t\t\t\t\treadValue(args, i, arg),\n\t\t\t\t);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--rotate-key\":\n\t\t\t\toptions.rotateKey = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--surface\":\n\t\t\t\toptions.surface = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--ttl-seconds\":\n\t\t\t\toptions.ttlSeconds = parsePositiveInteger(readValue(args, i, arg), arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tcase \"--workspace\":\n\t\t\tcase \"--workspace-id\":\n\t\t\t\toptions.workspaceId = readValue(args, i, arg);\n\t\t\t\ti++;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (arg?.startsWith(\"-\")) {\n\t\t\t\t\tthrow new Error(`Unknown maestro init option: ${arg}`);\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Unexpected maestro init argument: ${arg}`);\n\t\t}\n\t}\n\treturn options;\n}\n\nexport async function handleInitCommand(args: string[] = []): Promise<void> {\n\tif (args.includes(\"--help\") || args.includes(\"-h\")) {\n\t\tconsole.log(formatInitHelp());\n\t\treturn;\n\t}\n\n\tlet options: EvalOpsInitOptions;\n\ttry {\n\t\toptions = parseInitArgs(args);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\tchalk.red(error instanceof Error ? error.message : String(error)),\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\tif (!options.json) {\n\t\tconsole.log(chalk.bold(\"Maestro EvalOps Init\"));\n\t}\n\n\tconst result = await bootstrapEvalOpsAgent(options, {\n\t\tonAuthUrl: (url) => {\n\t\t\tif (options.json) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Open this URL in your browser to authenticate with EvalOps:\",\n\t\t\t\t);\n\t\t\t\tconsole.error(url);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t\"Open this URL in your browser to authenticate with EvalOps:\",\n\t\t\t\t),\n\t\t\t);\n\t\t\tconsole.log(chalk.underline(url));\n\t\t},\n\t\tonStatus: (status) => {\n\t\t\tif (options.json) {\n\t\t\t\tconsole.error(status.message);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconsole.log(chalk.dim(status.message));\n\t\t},\n\t});\n\n\tif (options.json) {\n\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\treturn;\n\t}\n\n\tconsole.log(chalk.green(\"EvalOps agent bootstrap complete.\"));\n\tconsole.log(chalk.dim(`MCP endpoint: ${result.endpoint}`));\n\tif (result.organizationId) {\n\t\tconsole.log(chalk.dim(`Organization: ${result.organizationId}`));\n\t}\n\tif (result.agentId) {\n\t\tconsole.log(chalk.dim(`Agent: ${result.agentId}`));\n\t}\n\tif (result.runId) {\n\t\tconsole.log(chalk.dim(`Run: ${result.runId}`));\n\t}\n\tif (result.keyPrefix) {\n\t\tconst keyMode = result.apiKeyCreated ? \"created\" : \"reused\";\n\t\tconsole.log(chalk.dim(`API key ${keyMode}: ${result.keyPrefix}`));\n\t}\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t\"Stored EvalOps MCP credentials locally for future Maestro sessions.\",\n\t\t),\n\t);\n}\n"]}
|
package/dist/cli.js
CHANGED
|
@@ -48369,6 +48369,7 @@ function assertEvalOpsManagedGatewayEnabled() {
|
|
|
48369
48369
|
}
|
|
48370
48370
|
throw new Error("EvalOps managed gateway access is currently disabled by dynamic config.");
|
|
48371
48371
|
}
|
|
48372
|
+
var DEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL = "https://llm-gateway.evalops.dev/v1";
|
|
48372
48373
|
var ALL_EVALOPS_MANAGED_PROVIDER_DEFINITIONS;
|
|
48373
48374
|
var managedProvidersByID;
|
|
48374
48375
|
var init_evalops_managed = __esm2(() => {
|
|
@@ -49292,6 +49293,7 @@ var init_core_services = __esm2(() => {
|
|
|
49292
49293
|
};
|
|
49293
49294
|
PLATFORM_HTTP_ROUTES = {
|
|
49294
49295
|
identity: {
|
|
49296
|
+
apiKeys: "/v1/api-keys",
|
|
49295
49297
|
authGoogleStart: "/v1/auth/google/start",
|
|
49296
49298
|
deviceChallenges: "/v1/device-challenges",
|
|
49297
49299
|
devices: "/v1/devices",
|
|
@@ -51193,7 +51195,8 @@ async function loginEvalOps(onAuthUrl, onStatus) {
|
|
|
51193
51195
|
const result = await Promise.race([
|
|
51194
51196
|
getResult(),
|
|
51195
51197
|
new Promise((_, reject) => {
|
|
51196
|
-
setTimeout(() => reject(new Error("EvalOps login timed out after 5 minutes")), 5 * 60 * 1e3);
|
|
51198
|
+
const timeout = setTimeout(() => reject(new Error("EvalOps login timed out after 5 minutes")), 5 * 60 * 1e3);
|
|
51199
|
+
timeout.unref?.();
|
|
51197
51200
|
})
|
|
51198
51201
|
]);
|
|
51199
51202
|
const deviceId = await enrollDesktopDeviceIdentity(identityBaseUrl, result.accessToken, process.env.npm_package_version);
|
|
@@ -70082,7 +70085,7 @@ var init_models_generated = __esm2(() => {
|
|
|
70082
70085
|
});
|
|
70083
70086
|
function getManagedGatewayBaseUrl() {
|
|
70084
70087
|
const configured2 = process.env.MAESTRO_LLM_GATEWAY_URL?.trim();
|
|
70085
|
-
return configured2 ||
|
|
70088
|
+
return configured2 || DEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL;
|
|
70086
70089
|
}
|
|
70087
70090
|
function getManagedGatewayBaseUrlForApi(api) {
|
|
70088
70091
|
const managedBaseUrl = getManagedGatewayBaseUrl();
|
|
@@ -70200,7 +70203,6 @@ function getProviders() {
|
|
|
70200
70203
|
function getModels(provider) {
|
|
70201
70204
|
return getBuiltinModels()[provider] || [];
|
|
70202
70205
|
}
|
|
70203
|
-
var DEFAULT_MANAGED_GATEWAY_BASE_URL = "http://127.0.0.1:8081/v1";
|
|
70204
70206
|
var ANTHROPIC_OPUS_46_OVERLAY;
|
|
70205
70207
|
var OPENROUTER_RESPONSES_OVERLAY;
|
|
70206
70208
|
var GROQ_RESPONSES_OVERLAY;
|
|
@@ -85992,6 +85994,25 @@ function isRecord8(value) {
|
|
|
85992
85994
|
function getNonEmptyString(value) {
|
|
85993
85995
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
85994
85996
|
}
|
|
85997
|
+
function getStringArray2(value) {
|
|
85998
|
+
return Array.isArray(value) ? value.map((entry2) => typeof entry2 === "string" ? entry2.trim() : "").filter((entry2) => entry2.length > 0) : [];
|
|
85999
|
+
}
|
|
86000
|
+
function isFutureTimestamp(value) {
|
|
86001
|
+
const timestamp3 = getNonEmptyString(value);
|
|
86002
|
+
return !timestamp3 || Date.parse(timestamp3) > Date.now();
|
|
86003
|
+
}
|
|
86004
|
+
function resolveEvalOpsAgentMcpAPIKey(metadata) {
|
|
86005
|
+
const agentMcp = isRecord8(metadata?.agentMcp) ? metadata.agentMcp : void 0;
|
|
86006
|
+
const apiKey = getNonEmptyString(agentMcp?.apiKey);
|
|
86007
|
+
if (!apiKey || !isFutureTimestamp(agentMcp?.expiresAt)) {
|
|
86008
|
+
return;
|
|
86009
|
+
}
|
|
86010
|
+
const scopes = getStringArray2(agentMcp?.scopes);
|
|
86011
|
+
if (scopes.length > 0 && !scopes.includes("llm_gateway:invoke")) {
|
|
86012
|
+
return;
|
|
86013
|
+
}
|
|
86014
|
+
return apiKey;
|
|
86015
|
+
}
|
|
85995
86016
|
function resolveEvalOpsOrganizationId(metadata) {
|
|
85996
86017
|
const candidate = getNonEmptyString(metadata?.organizationId);
|
|
85997
86018
|
if (candidate && candidate.trim().length > 0) {
|
|
@@ -86073,10 +86094,15 @@ function createAuthResolver(options) {
|
|
|
86073
86094
|
};
|
|
86074
86095
|
}
|
|
86075
86096
|
if (isEvalOpsManagedProvider(provider) && options.mode !== "api-key") {
|
|
86097
|
+
const credentials = loadOAuthCredentials("evalops");
|
|
86098
|
+
const agentAPIKey = resolveEvalOpsAgentMcpAPIKey(credentials?.metadata);
|
|
86099
|
+
if (agentAPIKey) {
|
|
86100
|
+
return buildEvalOpsCredential(provider, agentAPIKey, "evalops_agent_key_file", credentials?.metadata);
|
|
86101
|
+
}
|
|
86076
86102
|
const oauthToken = await getOAuthToken("evalops");
|
|
86077
86103
|
if (oauthToken) {
|
|
86078
|
-
const
|
|
86079
|
-
return buildEvalOpsCredential(provider, oauthToken, "evalops_oauth_file", credentials?.metadata);
|
|
86104
|
+
const refreshedCredentials = loadOAuthCredentials("evalops");
|
|
86105
|
+
return buildEvalOpsCredential(provider, oauthToken, "evalops_oauth_file", refreshedCredentials?.metadata ?? credentials?.metadata);
|
|
86080
86106
|
}
|
|
86081
86107
|
}
|
|
86082
86108
|
if (isOpenAICodexProvider(provider) && options.mode !== "api-key") {
|
|
@@ -87122,6 +87148,42 @@ function normalizeManifestUrl(url) {
|
|
|
87122
87148
|
}
|
|
87123
87149
|
return parsed.toString();
|
|
87124
87150
|
}
|
|
87151
|
+
function resolveIdentityBaseUrl(credentials, endpoint) {
|
|
87152
|
+
const configured2 = getEnvValue3([
|
|
87153
|
+
"MAESTRO_IDENTITY_URL",
|
|
87154
|
+
"EVALOPS_IDENTITY_URL",
|
|
87155
|
+
"MAESTRO_PLATFORM_BASE_URL",
|
|
87156
|
+
"MAESTRO_EVALOPS_BASE_URL",
|
|
87157
|
+
"EVALOPS_BASE_URL"
|
|
87158
|
+
]);
|
|
87159
|
+
const stored = typeof credentials?.metadata?.identityBaseUrl === "string" ? credentials.metadata.identityBaseUrl : void 0;
|
|
87160
|
+
const derived = identityBaseUrlFromMcpEndpoint(endpoint?.endpoint);
|
|
87161
|
+
const storedBeforeDerived = endpoint ? !endpoint.preferDerivedIdentity && isCustomMcpEndpoint(endpoint.endpoint) : false;
|
|
87162
|
+
return normalizeBaseUrl2(configured2 ?? endpoint?.identityBaseUrl ?? (endpoint?.preferDerivedIdentity ? derived : void 0) ?? (storedBeforeDerived ? stored : void 0) ?? derived ?? stored ?? DEFAULT_IDENTITY_BASE_URL, Object.values(PLATFORM_HTTP_ROUTES.identity));
|
|
87163
|
+
}
|
|
87164
|
+
function isCustomMcpEndpoint(endpoint) {
|
|
87165
|
+
const parsed = new URL(normalizeBaseUrl2(endpoint));
|
|
87166
|
+
return parsed.hostname !== "app.evalops.dev" && parsed.hostname !== "staging.evalops.dev";
|
|
87167
|
+
}
|
|
87168
|
+
function identityBaseUrlFromMcpEndpoint(endpoint) {
|
|
87169
|
+
if (!endpoint) {
|
|
87170
|
+
return;
|
|
87171
|
+
}
|
|
87172
|
+
const parsed = new URL(normalizeBaseUrl2(endpoint));
|
|
87173
|
+
if (parsed.hostname === "app.evalops.dev") {
|
|
87174
|
+
return DEFAULT_IDENTITY_BASE_URL;
|
|
87175
|
+
}
|
|
87176
|
+
if (parsed.hostname === "staging.evalops.dev") {
|
|
87177
|
+
return "https://api.staging.evalops.dev";
|
|
87178
|
+
}
|
|
87179
|
+
if (parsed.hostname.startsWith("app.")) {
|
|
87180
|
+
parsed.hostname = `identity.${parsed.hostname.slice("app.".length)}`;
|
|
87181
|
+
}
|
|
87182
|
+
parsed.pathname = "";
|
|
87183
|
+
parsed.search = "";
|
|
87184
|
+
parsed.hash = "";
|
|
87185
|
+
return normalizeBaseUrl2(parsed.toString());
|
|
87186
|
+
}
|
|
87125
87187
|
async function resolveEndpointFromManifest(manifestUrl, fetchImpl) {
|
|
87126
87188
|
const response = await fetchImpl(manifestUrl, {
|
|
87127
87189
|
headers: { accept: "application/json" }
|
|
@@ -87130,16 +87192,27 @@ async function resolveEndpointFromManifest(manifestUrl, fetchImpl) {
|
|
|
87130
87192
|
throw new Error(`Failed to fetch EvalOps MCP manifest (${response.status} ${response.statusText})`);
|
|
87131
87193
|
}
|
|
87132
87194
|
const payload = await response.json();
|
|
87133
|
-
const
|
|
87195
|
+
const payloadRecord = isRecord9(payload) ? payload : void 0;
|
|
87196
|
+
const protocol = payloadRecord && isRecord9(payloadRecord.protocol) ? payloadRecord.protocol : void 0;
|
|
87134
87197
|
const endpoint = nonEmptyString(protocol?.endpoint);
|
|
87135
87198
|
if (!endpoint) {
|
|
87136
87199
|
throw new Error("EvalOps MCP manifest did not include protocol.endpoint");
|
|
87137
87200
|
}
|
|
87138
|
-
|
|
87201
|
+
const identity = payloadRecord?.identity;
|
|
87202
|
+
const identityBaseUrl = nonEmptyString(isRecord9(identity) ? identity.base_url : void 0) ?? nonEmptyString(isRecord9(identity) ? identity.baseUrl : void 0) ?? nonEmptyString(isRecord9(identity) ? identity.url : void 0) ?? nonEmptyString(payloadRecord?.identity_base_url) ?? nonEmptyString(payloadRecord?.identityBaseUrl);
|
|
87203
|
+
return {
|
|
87204
|
+
endpoint: normalizeMcpEndpoint(endpoint),
|
|
87205
|
+
identityBaseUrl,
|
|
87206
|
+
manifestUrl,
|
|
87207
|
+
preferDerivedIdentity: true
|
|
87208
|
+
};
|
|
87139
87209
|
}
|
|
87140
87210
|
async function resolveAgentMcpEndpoint(options, deps) {
|
|
87141
87211
|
if (options.mcpUrl) {
|
|
87142
|
-
return {
|
|
87212
|
+
return {
|
|
87213
|
+
endpoint: normalizeMcpEndpoint(options.mcpUrl),
|
|
87214
|
+
preferDerivedIdentity: true
|
|
87215
|
+
};
|
|
87143
87216
|
}
|
|
87144
87217
|
if (options.manifestUrl) {
|
|
87145
87218
|
return resolveEndpointFromManifest(normalizeManifestUrl(options.manifestUrl), deps.fetch);
|
|
@@ -87150,7 +87223,10 @@ async function resolveAgentMcpEndpoint(options, deps) {
|
|
|
87150
87223
|
"MAESTRO_EVALOPS_AGENT_MCP_URL"
|
|
87151
87224
|
]);
|
|
87152
87225
|
if (configuredMcpUrl) {
|
|
87153
|
-
return {
|
|
87226
|
+
return {
|
|
87227
|
+
endpoint: normalizeMcpEndpoint(configuredMcpUrl),
|
|
87228
|
+
preferDerivedIdentity: true
|
|
87229
|
+
};
|
|
87154
87230
|
}
|
|
87155
87231
|
const configuredManifestUrl = getEnvValue3([
|
|
87156
87232
|
"MAESTRO_PLATFORM_MCP_MANIFEST_URL",
|
|
@@ -87253,25 +87329,45 @@ function buildKeyName(options, now2) {
|
|
|
87253
87329
|
const host = hostname().replace(/[^a-zA-Z0-9._-]+/gu, "-").slice(0, 48);
|
|
87254
87330
|
return `maestro-init-${host || "local"}-${now2.toISOString().slice(0, 10)}`;
|
|
87255
87331
|
}
|
|
87256
|
-
async function createAgentAPIKey(options,
|
|
87257
|
-
const
|
|
87258
|
-
|
|
87259
|
-
|
|
87260
|
-
|
|
87261
|
-
|
|
87332
|
+
async function createAgentAPIKey(options, identityBaseUrl, oauthToken, fetchImpl, now2) {
|
|
87333
|
+
const expiresInDays = positiveInteger(options.expiresInDays);
|
|
87334
|
+
const expiresAt = expiresInDays ? new Date(now2.getTime() + expiresInDays * 24 * 60 * 60 * 1e3).toISOString() : void 0;
|
|
87335
|
+
const response = await fetchImpl(`${identityBaseUrl}${PLATFORM_HTTP_ROUTES.identity.apiKeys}`, {
|
|
87336
|
+
method: "POST",
|
|
87337
|
+
headers: {
|
|
87338
|
+
Authorization: `Bearer ${oauthToken}`,
|
|
87339
|
+
"Content-Type": "application/json"
|
|
87340
|
+
},
|
|
87341
|
+
body: JSON.stringify({
|
|
87342
|
+
name: buildKeyName(options, now2),
|
|
87343
|
+
scopes: options.apiKeyScopes ?? DEFAULT_API_KEY_SCOPES,
|
|
87344
|
+
...expiresAt ? { expires_at: expiresAt } : {}
|
|
87345
|
+
})
|
|
87262
87346
|
});
|
|
87263
|
-
|
|
87347
|
+
const output = await response.json().catch(() => ({}));
|
|
87348
|
+
if (!response.ok) {
|
|
87349
|
+
throw new Error(typeof output.error === "string" && output.error.trim() ? output.error : `EvalOps API key creation failed (${response.status})`);
|
|
87350
|
+
}
|
|
87351
|
+
const key = isRecord9(output.key) ? output.key : void 0;
|
|
87352
|
+
const normalized = {
|
|
87353
|
+
api_key: nonEmptyString(output.api_key) ?? "",
|
|
87354
|
+
expires_at: nonEmptyString(output.expires_at) ?? nonEmptyString(key?.expires_at),
|
|
87355
|
+
key_id: nonEmptyString(output.key_id) ?? nonEmptyString(key?.id),
|
|
87356
|
+
name: nonEmptyString(output.name) ?? nonEmptyString(key?.name),
|
|
87357
|
+
prefix: nonEmptyString(output.prefix) ?? nonEmptyString(key?.prefix),
|
|
87358
|
+
scopes: stringArray(output.scopes) ?? stringArray(key?.scopes) ?? stringArray(output.scopes_granted)
|
|
87359
|
+
};
|
|
87360
|
+
if (!nonEmptyString(normalized.api_key)) {
|
|
87264
87361
|
throw new Error("EvalOps API key creation did not return api_key");
|
|
87265
87362
|
}
|
|
87266
|
-
return
|
|
87363
|
+
return normalized;
|
|
87267
87364
|
}
|
|
87268
87365
|
async function registerAgent(options, endpoint, apiKey, createClient) {
|
|
87269
|
-
const output = await callMcpTool(createClient, endpoint,
|
|
87366
|
+
const output = await callMcpTool(createClient, endpoint, apiKey, "evalops_register", {
|
|
87270
87367
|
agent_type: options.agentType ?? DEFAULT_AGENT_TYPE,
|
|
87271
87368
|
capabilities: ["maestro:init", "maestro:cli"],
|
|
87272
|
-
scopes: options.registerScopes
|
|
87369
|
+
...options.registerScopes?.length ? { scopes: options.registerScopes } : {},
|
|
87273
87370
|
surface: options.surface ?? DEFAULT_SURFACE2,
|
|
87274
|
-
user_token: apiKey,
|
|
87275
87371
|
...positiveInteger(options.ttlSeconds) ? { ttl_seconds: options.ttlSeconds } : {},
|
|
87276
87372
|
...options.workspaceId ? { workspace_id: options.workspaceId } : {}
|
|
87277
87373
|
});
|
|
@@ -87317,13 +87413,14 @@ async function bootstrapEvalOpsAgent(options = {}, dependencies = {}) {
|
|
|
87317
87413
|
const endpoint = await resolveAgentMcpEndpoint(options, deps);
|
|
87318
87414
|
const credentialsBeforeKey = deps.loadCredentials("evalops");
|
|
87319
87415
|
const stored = getStoredAgentMcpMetadata(credentialsBeforeKey);
|
|
87416
|
+
const identityBaseUrl = resolveIdentityBaseUrl(credentialsBeforeKey, endpoint);
|
|
87320
87417
|
const now2 = deps.now();
|
|
87321
87418
|
let apiKey = stored && !options.rotateKey ? stored.apiKey : void 0;
|
|
87322
87419
|
let keyOutput;
|
|
87323
87420
|
let apiKeyCreated = false;
|
|
87324
87421
|
if (!apiKey) {
|
|
87325
87422
|
deps.onStatus({ message: "Creating EvalOps agent API key" });
|
|
87326
|
-
keyOutput = await createAgentAPIKey(options,
|
|
87423
|
+
keyOutput = await createAgentAPIKey(options, identityBaseUrl, oauthToken, deps.fetch, now2);
|
|
87327
87424
|
apiKey = keyOutput.api_key;
|
|
87328
87425
|
apiKeyCreated = true;
|
|
87329
87426
|
} else {
|
|
@@ -87340,7 +87437,7 @@ async function bootstrapEvalOpsAgent(options = {}, dependencies = {}) {
|
|
|
87340
87437
|
deps.onStatus({
|
|
87341
87438
|
message: "Stored EvalOps agent API key failed; rotating and retrying"
|
|
87342
87439
|
});
|
|
87343
|
-
keyOutput = await createAgentAPIKey({ ...options, rotateKey: true },
|
|
87440
|
+
keyOutput = await createAgentAPIKey({ ...options, rotateKey: true }, identityBaseUrl, oauthToken, deps.fetch, now2);
|
|
87344
87441
|
apiKey = keyOutput.api_key;
|
|
87345
87442
|
apiKeyCreated = true;
|
|
87346
87443
|
registerOutput = await registerAgent(options, endpoint.endpoint, apiKey, deps.createMcpClient);
|
|
@@ -87386,23 +87483,25 @@ async function bootstrapEvalOpsAgent(options = {}, dependencies = {}) {
|
|
|
87386
87483
|
};
|
|
87387
87484
|
}
|
|
87388
87485
|
var DEFAULT_AGENT_MCP_BASE_URL = "https://app.evalops.dev";
|
|
87486
|
+
var DEFAULT_IDENTITY_BASE_URL = "https://identity.evalops.dev";
|
|
87389
87487
|
var AGENT_MCP_MANIFEST_PATH = "/.well-known/evalops/agent-mcp.json";
|
|
87390
87488
|
var AGENT_MCP_PATH = "/mcp";
|
|
87391
87489
|
var DEFAULT_AGENT_TYPE = "maestro";
|
|
87392
87490
|
var DEFAULT_SURFACE2 = "cli";
|
|
87393
|
-
var DEFAULT_REGISTER_SCOPES;
|
|
87394
87491
|
var DEFAULT_API_KEY_SCOPES;
|
|
87395
87492
|
var init_agent_bootstrap = __esm2(() => {
|
|
87396
87493
|
init_oauth();
|
|
87397
87494
|
init_storage();
|
|
87398
87495
|
init_package_metadata();
|
|
87399
87496
|
init_client();
|
|
87400
|
-
|
|
87497
|
+
init_core_services();
|
|
87401
87498
|
DEFAULT_API_KEY_SCOPES = [
|
|
87402
87499
|
"agent:register",
|
|
87403
87500
|
"agent:heartbeat",
|
|
87404
87501
|
"governance:evaluate",
|
|
87502
|
+
"llm_gateway:invoke",
|
|
87405
87503
|
"memories:read",
|
|
87504
|
+
"memories:write",
|
|
87406
87505
|
"meter:record"
|
|
87407
87506
|
];
|
|
87408
87507
|
});
|
|
@@ -132398,7 +132497,7 @@ function parseArgs(args) {
|
|
|
132398
132497
|
result.subcommand = nextArg;
|
|
132399
132498
|
i2++;
|
|
132400
132499
|
}
|
|
132401
|
-
if (arg === "remote" || arg === "hosted-runner" || arg === "init") {
|
|
132500
|
+
if (arg === "remote" || arg === "hosted-runner" || arg === "init" || arg === "evalops") {
|
|
132402
132501
|
result.commandArgs = args.slice(i2 + 1);
|
|
132403
132502
|
break;
|
|
132404
132503
|
}
|
|
@@ -140907,7 +141006,7 @@ function getString(value, field) {
|
|
|
140907
141006
|
const trimmed = value.trim();
|
|
140908
141007
|
return trimmed || void 0;
|
|
140909
141008
|
}
|
|
140910
|
-
function
|
|
141009
|
+
function getStringArray3(value, field) {
|
|
140911
141010
|
if (value === void 0 || value === null) {
|
|
140912
141011
|
return;
|
|
140913
141012
|
}
|
|
@@ -140936,7 +141035,7 @@ function parseHostedRunnerDrainInput(body) {
|
|
|
140936
141035
|
return {
|
|
140937
141036
|
reason: getString(record.reason, "reason") ?? getString(record.stop_reason, "stop_reason"),
|
|
140938
141037
|
requestedBy: getString(record.requested_by, "requested_by") ?? getString(record.requestedBy, "requestedBy"),
|
|
140939
|
-
exportPaths:
|
|
141038
|
+
exportPaths: getStringArray3(record.export_paths, "export_paths") ?? getStringArray3(record.exportPaths, "exportPaths")
|
|
140940
141039
|
};
|
|
140941
141040
|
}
|
|
140942
141041
|
function isWithinPath(root, target) {
|
|
@@ -169780,7 +169879,7 @@ __export2(exports_config, {
|
|
|
169780
169879
|
buildConfigShowSections: () => buildConfigShowSections
|
|
169781
169880
|
});
|
|
169782
169881
|
function getManagedGatewayBaseUrl2() {
|
|
169783
|
-
return process.env.MAESTRO_LLM_GATEWAY_URL?.trim() ||
|
|
169882
|
+
return process.env.MAESTRO_LLM_GATEWAY_URL?.trim() || DEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL;
|
|
169784
169883
|
}
|
|
169785
169884
|
function getManagedGatewayProviderPresets() {
|
|
169786
169885
|
return getEvalOpsManagedProviderDefinitions().map((definition) => ({
|
|
@@ -170643,8 +170742,26 @@ var init_openai3 = __esm2(() => {
|
|
|
170643
170742
|
var exports_init = {};
|
|
170644
170743
|
__export2(exports_init, {
|
|
170645
170744
|
parseInitArgs: () => parseInitArgs,
|
|
170646
|
-
handleInitCommand: () => handleInitCommand2
|
|
170745
|
+
handleInitCommand: () => handleInitCommand2,
|
|
170746
|
+
formatInitHelp: () => formatInitHelp
|
|
170647
170747
|
});
|
|
170748
|
+
function formatInitHelp() {
|
|
170749
|
+
return `${sectionHeading("maestro init")}${muted(` maestro init Login, create or reuse an API key, and register this agent
|
|
170750
|
+
maestro init --rotate-key Replace the stored agent MCP API key
|
|
170751
|
+
maestro init --mcp-url <url> Override the EvalOps agent MCP endpoint
|
|
170752
|
+
maestro init --json Emit machine-readable bootstrap output
|
|
170753
|
+
|
|
170754
|
+
Options
|
|
170755
|
+
--agent-type <type> Agent type to register, defaults to maestro
|
|
170756
|
+
--surface <surface> Surface to register, defaults to cli
|
|
170757
|
+
--workspace, --workspace-id <id> Workspace to associate with the registration
|
|
170758
|
+
--scope <scope[,scope...]> Registration scopes to request
|
|
170759
|
+
--key-scope <scope[,scope...]> API key scopes to request
|
|
170760
|
+
--expires-in-days <days> API key TTL in days
|
|
170761
|
+
--force-login Re-run EvalOps OAuth before bootstrapping
|
|
170762
|
+
--manifest-url <url> Override the agent MCP manifest URL
|
|
170763
|
+
--ttl-seconds <seconds> Registration TTL in seconds`)}`;
|
|
170764
|
+
}
|
|
170648
170765
|
function readValue(args, index2, flag) {
|
|
170649
170766
|
const value = args[index2 + 1];
|
|
170650
170767
|
if (!value || value.startsWith("-")) {
|
|
@@ -170733,6 +170850,10 @@ function parseInitArgs(args) {
|
|
|
170733
170850
|
return options;
|
|
170734
170851
|
}
|
|
170735
170852
|
async function handleInitCommand2(args = []) {
|
|
170853
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
170854
|
+
console.log(formatInitHelp());
|
|
170855
|
+
return;
|
|
170856
|
+
}
|
|
170736
170857
|
let options;
|
|
170737
170858
|
try {
|
|
170738
170859
|
options = parseInitArgs(args);
|
|
@@ -170746,15 +170867,19 @@ async function handleInitCommand2(args = []) {
|
|
|
170746
170867
|
const result = await bootstrapEvalOpsAgent(options, {
|
|
170747
170868
|
onAuthUrl: (url) => {
|
|
170748
170869
|
if (options.json) {
|
|
170870
|
+
console.error("Open this URL in your browser to authenticate with EvalOps:");
|
|
170871
|
+
console.error(url);
|
|
170749
170872
|
return;
|
|
170750
170873
|
}
|
|
170751
170874
|
console.log(chalk62.yellow("Open this URL in your browser to authenticate with EvalOps:"));
|
|
170752
170875
|
console.log(chalk62.underline(url));
|
|
170753
170876
|
},
|
|
170754
170877
|
onStatus: (status) => {
|
|
170755
|
-
if (
|
|
170756
|
-
console.
|
|
170878
|
+
if (options.json) {
|
|
170879
|
+
console.error(status.message);
|
|
170880
|
+
return;
|
|
170757
170881
|
}
|
|
170882
|
+
console.log(chalk62.dim(status.message));
|
|
170758
170883
|
}
|
|
170759
170884
|
});
|
|
170760
170885
|
if (options.json) {
|
|
@@ -170780,16 +170905,17 @@ async function handleInitCommand2(args = []) {
|
|
|
170780
170905
|
}
|
|
170781
170906
|
var init_init = __esm2(() => {
|
|
170782
170907
|
init_agent_bootstrap();
|
|
170908
|
+
init_theme2();
|
|
170783
170909
|
});
|
|
170784
170910
|
var exports_evalops = {};
|
|
170785
170911
|
__export2(exports_evalops, {
|
|
170786
170912
|
handleEvalOpsCommand: () => handleEvalOpsCommand
|
|
170787
170913
|
});
|
|
170788
|
-
async function handleEvalOpsCommand(subcommand) {
|
|
170914
|
+
async function handleEvalOpsCommand(subcommand, args = []) {
|
|
170789
170915
|
switch (subcommand) {
|
|
170790
170916
|
case "init": {
|
|
170791
170917
|
const { handleInitCommand: handleInitCommand3 } = await Promise.resolve().then(() => (init_init(), exports_init));
|
|
170792
|
-
await handleInitCommand3();
|
|
170918
|
+
await handleInitCommand3(args);
|
|
170793
170919
|
return;
|
|
170794
170920
|
}
|
|
170795
170921
|
case "login":
|
|
@@ -170832,6 +170958,7 @@ async function handleStatus3() {
|
|
|
170832
170958
|
const remainingMs = Math.max(0, (credentials?.expires ?? Date.now()) - Date.now());
|
|
170833
170959
|
const minutes = Math.round(remainingMs / 6e4);
|
|
170834
170960
|
const metadata = credentials?.metadata;
|
|
170961
|
+
const agentMcp = getStoredEvalOpsAgentMcpMetadata();
|
|
170835
170962
|
const organizationId = typeof metadata?.organizationId === "string" ? metadata.organizationId : void 0;
|
|
170836
170963
|
const providerRef = metadata?.providerRef && typeof metadata.providerRef === "object" && !Array.isArray(metadata.providerRef) ? metadata.providerRef : void 0;
|
|
170837
170964
|
console.log(chalk63.green("Stored EvalOps credentials detected."));
|
|
@@ -170843,9 +170970,28 @@ async function handleStatus3() {
|
|
|
170843
170970
|
const environment = typeof providerRef.environment === "string" ? providerRef.environment : "prod";
|
|
170844
170971
|
console.log(chalk63.dim(`Provider ref: ${provider}/${environment}`));
|
|
170845
170972
|
}
|
|
170973
|
+
if (agentMcp) {
|
|
170974
|
+
console.log(chalk63.green("EvalOps agent session configured."));
|
|
170975
|
+
console.log(chalk63.dim(`MCP endpoint: ${agentMcp.endpoint}`));
|
|
170976
|
+
if (agentMcp.agentId) {
|
|
170977
|
+
console.log(chalk63.dim(`Agent: ${agentMcp.agentId}`));
|
|
170978
|
+
}
|
|
170979
|
+
if (agentMcp.runId) {
|
|
170980
|
+
console.log(chalk63.dim(`Run: ${agentMcp.runId}`));
|
|
170981
|
+
}
|
|
170982
|
+
if (agentMcp.keyPrefix) {
|
|
170983
|
+
console.log(chalk63.dim(`API key: ${agentMcp.keyPrefix}`));
|
|
170984
|
+
}
|
|
170985
|
+
if (agentMcp.sessionExpiresAt) {
|
|
170986
|
+
console.log(chalk63.dim(`Session expires: ${agentMcp.sessionExpiresAt}`));
|
|
170987
|
+
}
|
|
170988
|
+
} else {
|
|
170989
|
+
console.log(chalk63.yellow('No EvalOps agent session yet. Run "maestro init".'));
|
|
170990
|
+
}
|
|
170846
170991
|
console.log(chalk63.dim(`Access token expires in ~${minutes} minute${minutes === 1 ? "" : "s"} (auto-refresh enabled).`));
|
|
170847
170992
|
}
|
|
170848
170993
|
var init_evalops2 = __esm2(() => {
|
|
170994
|
+
init_agent_bootstrap();
|
|
170849
170995
|
init_oauth();
|
|
170850
170996
|
init_storage();
|
|
170851
170997
|
});
|
|
@@ -175862,7 +176008,7 @@ Available commands:`));
|
|
|
175862
176008
|
}
|
|
175863
176009
|
if (parsed.command === "evalops") {
|
|
175864
176010
|
const { handleEvalOpsCommand: handleEvalOpsCommand2 } = await Promise.resolve().then(() => (init_evalops2(), exports_evalops));
|
|
175865
|
-
await handleEvalOpsCommand2(parsed.subcommand);
|
|
176011
|
+
await handleEvalOpsCommand2(parsed.subcommand, parsed.commandArgs ?? []);
|
|
175866
176012
|
return;
|
|
175867
176013
|
}
|
|
175868
176014
|
if (parsed.command === "init") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-bootstrap.d.ts","sourceRoot":"","sources":["../../src/evalops/agent-bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAEN,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-bootstrap.d.ts","sourceRoot":"","sources":["../../src/evalops/agent-bootstrap.ts"],"names":[],"mappings":"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"}
|