@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
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAqCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAqCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAyL9C"}
|
package/dist/cli/args.js
CHANGED
|
@@ -229,7 +229,10 @@ export function parseArgs(args) {
|
|
|
229
229
|
result.subcommand = nextArg;
|
|
230
230
|
i++;
|
|
231
231
|
}
|
|
232
|
-
if (arg === "remote" ||
|
|
232
|
+
if (arg === "remote" ||
|
|
233
|
+
arg === "hosted-runner" ||
|
|
234
|
+
arg === "init" ||
|
|
235
|
+
arg === "evalops") {
|
|
233
236
|
result.commandArgs = args.slice(i + 1);
|
|
234
237
|
break;
|
|
235
238
|
}
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["export type Mode = \"text\" | \"json\" | \"rpc\" | \"headless\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\ttaskBudget?: number;\n\terror?: string;\n\tmodelsFile?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\t/** Port for `maestro web` (defaults to PORT env or 8080) */\n\tport?: number;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** Run in headless mode for native TUI communication */\n\theadless?: boolean;\n\tnoSession?: boolean;\n\tsession?: string;\n\tsafeMode?: boolean;\n\tcommand?: string;\n\tsubcommand?: string;\n\t/** Raw arguments owned by command-group handlers. */\n\tcommandArgs?: string[];\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\tauthMode?: \"auto\" | \"api-key\" | \"claude\";\n\tforce?: boolean;\n\texecJson?: boolean;\n\texecFullAuto?: boolean;\n\texecReadOnly?: boolean;\n\t/** Sandbox mode: \"docker\", \"local\", \"native\", or \"none\" */\n\tsandbox?: string;\n\texecOutputSchema?: string;\n\texecOutputLast?: string;\n\texecResumeId?: string;\n\texecUseLast?: boolean;\n\tmodels?: string[];\n\ttools?: string[];\n\tmessages: string[];\n\t/** TOML config profile to activate */\n\tprofile?: string;\n\t/** CLI config overrides in key=value format */\n\tconfigOverrides?: string[];\n\t/** Start in read-only mode (activates explore composer) */\n\treadonly?: boolean;\n\t/** Composer profile to activate on startup */\n\tcomposer?: string;\n\texportFormat?: string;\n\tredactSecrets?: boolean;\n}\n\nconst COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"exec\",\n\t\"web\",\n\t\"hosted-runner\",\n\t\"init\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n\t\"export\",\n\t\"import\",\n]);\nconst SUBCOMMAND_COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n]);\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg?.startsWith(\"--mode=\")) {\n\t\t\tconst mode = arg.slice(\"--mode=\".length);\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--headless\") {\n\t\t\tresult.headless = true;\n\t\t\tresult.mode = \"headless\";\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tif (result.command === \"exec\") {\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (i + 1 < args.length && nextArg && !nextArg.startsWith(\"-\")) {\n\t\t\t\t\tresult.execResumeId = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.execUseLast = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if ((arg === \"--model\" || arg === \"-m\") && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--task-budget\") {\n\t\t\tconst rawValue = args[i + 1];\n\t\t\tif (\n\t\t\t\trawValue === undefined ||\n\t\t\t\t(rawValue.startsWith(\"-\") && Number.isNaN(Number(rawValue)))\n\t\t\t) {\n\t\t\t\tresult.error = \"--task-budget requires a value\";\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\tconst value = Number(rawValue);\n\t\t\tif (Number.isInteger(value) && value > 0) {\n\t\t\t\tresult.taskBudget = value;\n\t\t\t} else {\n\t\t\t\tresult.error = \"--task-budget must be a positive integer\";\n\t\t\t}\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tconst modelsArg = args[++i]!;\n\t\t\tconst patterns = modelsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (patterns.length > 0) {\n\t\t\t\tresult.models = patterns;\n\t\t\t}\n\t\t} else if (arg === \"--models-file\" && i + 1 < args.length) {\n\t\t\tresult.modelsFile = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--port\" && i + 1 < args.length) {\n\t\t\tconst value = Number.parseInt(args[++i] ?? \"\", 10);\n\t\t\tif (Number.isFinite(value) && value > 0 && value < 65536) {\n\t\t\t\tresult.port = value;\n\t\t\t}\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--safe-mode\") {\n\t\t\tresult.safeMode = true;\n\t\t} else if (arg === \"--approval-mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"auto\" || mode === \"prompt\" || mode === \"fail\") {\n\t\t\t\tresult.approvalMode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--auth\" && i + 1 < args.length) {\n\t\t\tconst value = args[++i];\n\t\t\tif (value === \"auto\" || value === \"api-key\" || value === \"claude\") {\n\t\t\t\tresult.authMode = value;\n\t\t\t}\n\t\t} else if (arg === \"--force\") {\n\t\t\tresult.force = true;\n\t\t} else if (arg === \"--json\") {\n\t\t\tresult.execJson = true;\n\t\t} else if (arg === \"--full-auto\") {\n\t\t\tresult.execFullAuto = true;\n\t\t} else if (arg === \"--read-only\") {\n\t\t\tresult.execReadOnly = true;\n\t\t} else if (arg === \"--sandbox\" && i + 1 < args.length) {\n\t\t\tresult.sandbox = args[++i];\n\t\t} else if (arg === \"--output-schema\" && i + 1 < args.length) {\n\t\t\tresult.execOutputSchema = args[++i];\n\t\t} else if (arg === \"--output-last-message\" && i + 1 < args.length) {\n\t\t\tresult.execOutputLast = args[++i];\n\t\t} else if (arg === \"--last\" && result.command === \"exec\") {\n\t\t\tresult.execUseLast = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolsArg = args[++i]!;\n\t\t\tconst toolNames = toolsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (toolNames.length > 0) {\n\t\t\t\tresult.tools = toolNames;\n\t\t\t}\n\t\t} else if (arg === \"--readonly\" || arg === \"--read-only-mode\") {\n\t\t\tresult.readonly = true;\n\t\t} else if (arg === \"--composer\" && i + 1 < args.length) {\n\t\t\tresult.composer = args[++i];\n\t\t} else if (arg === \"--format\" && i + 1 < args.length) {\n\t\t\tresult.exportFormat = args[++i];\n\t\t} else if (arg === \"--redact-secrets\") {\n\t\t\tresult.redactSecrets = true;\n\t\t} else if (arg === \"--profile\" && i + 1 < args.length) {\n\t\t\tresult.profile = args[++i];\n\t\t} else if (arg === \"--config\" && i + 1 < args.length) {\n\t\t\t// Config overrides in key=value format\n\t\t\tconst override = args[++i]!;\n\t\t\tif (!result.configOverrides) {\n\t\t\t\tresult.configOverrides = [];\n\t\t\t}\n\t\t\tresult.configOverrides.push(override);\n\t\t} else if (arg && !arg.startsWith(\"-\")) {\n\t\t\tif (!result.command && COMMANDS.has(arg)) {\n\t\t\t\tresult.command = arg;\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (\n\t\t\t\t\tSUBCOMMAND_COMMANDS.has(arg) &&\n\t\t\t\t\ti + 1 < args.length &&\n\t\t\t\t\tnextArg &&\n\t\t\t\t\t!nextArg.startsWith(\"-\")\n\t\t\t\t) {\n\t\t\t\t\tresult.subcommand = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (arg === \"remote\" || arg === \"hosted-runner\" || arg === \"init\") {\n\t\t\t\t\tresult.commandArgs = args.slice(i + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.messages.push(arg);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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","sourcesContent":["export type Mode = \"text\" | \"json\" | \"rpc\" | \"headless\";\n\nexport interface Args {\n\tprovider?: string;\n\tmodel?: string;\n\ttaskBudget?: number;\n\terror?: string;\n\tmodelsFile?: string;\n\tapiKey?: string;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string;\n\t/** Port for `maestro web` (defaults to PORT env or 8080) */\n\tport?: number;\n\tcontinue?: boolean;\n\tresume?: boolean;\n\thelp?: boolean;\n\tversion?: boolean;\n\tmode?: Mode;\n\t/** Run in headless mode for native TUI communication */\n\theadless?: boolean;\n\tnoSession?: boolean;\n\tsession?: string;\n\tsafeMode?: boolean;\n\tcommand?: string;\n\tsubcommand?: string;\n\t/** Raw arguments owned by command-group handlers. */\n\tcommandArgs?: string[];\n\tapprovalMode?: \"auto\" | \"prompt\" | \"fail\";\n\tauthMode?: \"auto\" | \"api-key\" | \"claude\";\n\tforce?: boolean;\n\texecJson?: boolean;\n\texecFullAuto?: boolean;\n\texecReadOnly?: boolean;\n\t/** Sandbox mode: \"docker\", \"local\", \"native\", or \"none\" */\n\tsandbox?: string;\n\texecOutputSchema?: string;\n\texecOutputLast?: string;\n\texecResumeId?: string;\n\texecUseLast?: boolean;\n\tmodels?: string[];\n\ttools?: string[];\n\tmessages: string[];\n\t/** TOML config profile to activate */\n\tprofile?: string;\n\t/** CLI config overrides in key=value format */\n\tconfigOverrides?: string[];\n\t/** Start in read-only mode (activates explore composer) */\n\treadonly?: boolean;\n\t/** Composer profile to activate on startup */\n\tcomposer?: string;\n\texportFormat?: string;\n\tredactSecrets?: boolean;\n}\n\nconst COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"exec\",\n\t\"web\",\n\t\"hosted-runner\",\n\t\"init\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n\t\"export\",\n\t\"import\",\n]);\nconst SUBCOMMAND_COMMANDS = new Set([\n\t\"config\",\n\t\"models\",\n\t\"cost\",\n\t\"stats\",\n\t\"agents\",\n\t\"anthropic\",\n\t\"evalops\",\n\t\"openai\",\n\t\"codex\",\n\t\"hooks\",\n\t\"memory\",\n\t\"remote\",\n]);\n\nexport function parseArgs(args: string[]): Args {\n\tconst result: Args = {\n\t\tmessages: [],\n\t};\n\n\tfor (let i = 0; i < args.length; i++) {\n\t\tconst arg = args[i];\n\n\t\tif (arg === \"--help\" || arg === \"-h\") {\n\t\t\tresult.help = true;\n\t\t} else if (arg === \"--version\" || arg === \"-v\") {\n\t\t\tresult.version = true;\n\t\t} else if (arg?.startsWith(\"--mode=\")) {\n\t\t\tconst mode = arg.slice(\"--mode=\".length);\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (\n\t\t\t\tmode === \"text\" ||\n\t\t\t\tmode === \"json\" ||\n\t\t\t\tmode === \"rpc\" ||\n\t\t\t\tmode === \"headless\"\n\t\t\t) {\n\t\t\t\tresult.mode = mode;\n\t\t\t\tif (mode === \"headless\") {\n\t\t\t\t\tresult.headless = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (arg === \"--headless\") {\n\t\t\tresult.headless = true;\n\t\t\tresult.mode = \"headless\";\n\t\t} else if (arg === \"--continue\" || arg === \"-c\") {\n\t\t\tresult.continue = true;\n\t\t} else if (arg === \"--resume\" || arg === \"-r\") {\n\t\t\tif (result.command === \"exec\") {\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (i + 1 < args.length && nextArg && !nextArg.startsWith(\"-\")) {\n\t\t\t\t\tresult.execResumeId = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tresult.execUseLast = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.resume = true;\n\t\t\t}\n\t\t} else if (arg === \"--provider\" && i + 1 < args.length) {\n\t\t\tresult.provider = args[++i];\n\t\t} else if ((arg === \"--model\" || arg === \"-m\") && i + 1 < args.length) {\n\t\t\tresult.model = args[++i];\n\t\t} else if (arg === \"--task-budget\") {\n\t\t\tconst rawValue = args[i + 1];\n\t\t\tif (\n\t\t\t\trawValue === undefined ||\n\t\t\t\t(rawValue.startsWith(\"-\") && Number.isNaN(Number(rawValue)))\n\t\t\t) {\n\t\t\t\tresult.error = \"--task-budget requires a value\";\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\tconst value = Number(rawValue);\n\t\t\tif (Number.isInteger(value) && value > 0) {\n\t\t\t\tresult.taskBudget = value;\n\t\t\t} else {\n\t\t\t\tresult.error = \"--task-budget must be a positive integer\";\n\t\t\t}\n\t\t} else if (arg === \"--models\" && i + 1 < args.length) {\n\t\t\tconst modelsArg = args[++i]!;\n\t\t\tconst patterns = modelsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (patterns.length > 0) {\n\t\t\t\tresult.models = patterns;\n\t\t\t}\n\t\t} else if (arg === \"--models-file\" && i + 1 < args.length) {\n\t\t\tresult.modelsFile = args[++i];\n\t\t} else if (arg === \"--api-key\" && i + 1 < args.length) {\n\t\t\tresult.apiKey = args[++i];\n\t\t} else if (arg === \"--port\" && i + 1 < args.length) {\n\t\t\tconst value = Number.parseInt(args[++i] ?? \"\", 10);\n\t\t\tif (Number.isFinite(value) && value > 0 && value < 65536) {\n\t\t\t\tresult.port = value;\n\t\t\t}\n\t\t} else if (arg === \"--system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.systemPrompt = args[++i];\n\t\t} else if (arg === \"--append-system-prompt\" && i + 1 < args.length) {\n\t\t\tresult.appendSystemPrompt = args[++i];\n\t\t} else if (arg === \"--no-session\") {\n\t\t\tresult.noSession = true;\n\t\t} else if (arg === \"--session\" && i + 1 < args.length) {\n\t\t\tresult.session = args[++i];\n\t\t} else if (arg === \"--safe-mode\") {\n\t\t\tresult.safeMode = true;\n\t\t} else if (arg === \"--approval-mode\" && i + 1 < args.length) {\n\t\t\tconst mode = args[++i];\n\t\t\tif (mode === \"auto\" || mode === \"prompt\" || mode === \"fail\") {\n\t\t\t\tresult.approvalMode = mode;\n\t\t\t}\n\t\t} else if (arg === \"--auth\" && i + 1 < args.length) {\n\t\t\tconst value = args[++i];\n\t\t\tif (value === \"auto\" || value === \"api-key\" || value === \"claude\") {\n\t\t\t\tresult.authMode = value;\n\t\t\t}\n\t\t} else if (arg === \"--force\") {\n\t\t\tresult.force = true;\n\t\t} else if (arg === \"--json\") {\n\t\t\tresult.execJson = true;\n\t\t} else if (arg === \"--full-auto\") {\n\t\t\tresult.execFullAuto = true;\n\t\t} else if (arg === \"--read-only\") {\n\t\t\tresult.execReadOnly = true;\n\t\t} else if (arg === \"--sandbox\" && i + 1 < args.length) {\n\t\t\tresult.sandbox = args[++i];\n\t\t} else if (arg === \"--output-schema\" && i + 1 < args.length) {\n\t\t\tresult.execOutputSchema = args[++i];\n\t\t} else if (arg === \"--output-last-message\" && i + 1 < args.length) {\n\t\t\tresult.execOutputLast = args[++i];\n\t\t} else if (arg === \"--last\" && result.command === \"exec\") {\n\t\t\tresult.execUseLast = true;\n\t\t} else if (arg === \"--tools\" && i + 1 < args.length) {\n\t\t\tconst toolsArg = args[++i]!;\n\t\t\tconst toolNames = toolsArg\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter((value) => value.length > 0);\n\t\t\tif (toolNames.length > 0) {\n\t\t\t\tresult.tools = toolNames;\n\t\t\t}\n\t\t} else if (arg === \"--readonly\" || arg === \"--read-only-mode\") {\n\t\t\tresult.readonly = true;\n\t\t} else if (arg === \"--composer\" && i + 1 < args.length) {\n\t\t\tresult.composer = args[++i];\n\t\t} else if (arg === \"--format\" && i + 1 < args.length) {\n\t\t\tresult.exportFormat = args[++i];\n\t\t} else if (arg === \"--redact-secrets\") {\n\t\t\tresult.redactSecrets = true;\n\t\t} else if (arg === \"--profile\" && i + 1 < args.length) {\n\t\t\tresult.profile = args[++i];\n\t\t} else if (arg === \"--config\" && i + 1 < args.length) {\n\t\t\t// Config overrides in key=value format\n\t\t\tconst override = args[++i]!;\n\t\t\tif (!result.configOverrides) {\n\t\t\t\tresult.configOverrides = [];\n\t\t\t}\n\t\t\tresult.configOverrides.push(override);\n\t\t} else if (arg && !arg.startsWith(\"-\")) {\n\t\t\tif (!result.command && COMMANDS.has(arg)) {\n\t\t\t\tresult.command = arg;\n\t\t\t\tconst nextArg = args[i + 1];\n\t\t\t\tif (\n\t\t\t\t\tSUBCOMMAND_COMMANDS.has(arg) &&\n\t\t\t\t\ti + 1 < args.length &&\n\t\t\t\t\tnextArg &&\n\t\t\t\t\t!nextArg.startsWith(\"-\")\n\t\t\t\t) {\n\t\t\t\t\tresult.subcommand = nextArg;\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\targ === \"remote\" ||\n\t\t\t\t\targ === \"hosted-runner\" ||\n\t\t\t\t\targ === \"init\" ||\n\t\t\t\t\targ === \"evalops\"\n\t\t\t\t) {\n\t\t\t\t\tresult.commandArgs = args.slice(i + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult.messages.push(arg);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,gBAAgB,EAKrB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,KAAK,gBAAgB,EAKrB,MAAM,0BAA0B,CAAC;AAWlC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAQhD,KAAK,cAAc,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAqBF,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAgHrD;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAiCD,wBAAgB,uBAAuB,CACtC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,uBAAuB,GAC9B,MAAM,EAAE,CA+GV;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkE1D;AAyHD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBtD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0OtD;AAwJD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2HvD"}
|
|
@@ -8,9 +8,10 @@ import { badge, muted, sectionHeading, separator as themedSeparator, } from "../
|
|
|
8
8
|
import { parseJsonc } from "../../utils/jsonc-umd.js";
|
|
9
9
|
import { getHomeDir } from "../../utils/path-expansion.js";
|
|
10
10
|
import { getEnvVarsForProvider } from "../../providers/api-keys.js";
|
|
11
|
-
import { getEvalOpsManagedProviderDefinitions, isEvalOpsManagedProvider, } from "../../providers/evalops-managed.js";
|
|
11
|
+
import { DEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL, getEvalOpsManagedProviderDefinitions, isEvalOpsManagedProvider, } from "../../providers/evalops-managed.js";
|
|
12
12
|
function getManagedGatewayBaseUrl() {
|
|
13
|
-
return (process.env.MAESTRO_LLM_GATEWAY_URL?.trim() ||
|
|
13
|
+
return (process.env.MAESTRO_LLM_GATEWAY_URL?.trim() ||
|
|
14
|
+
DEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL);
|
|
14
15
|
}
|
|
15
16
|
function getManagedGatewayProviderPresets() {
|
|
16
17
|
return getEvalOpsManagedProviderDefinitions().map((definition) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { PATHS } from \"../../config/constants.js\";\nimport {\n\ttype ConfigInspection,\n\ttype ConfigValidationResult,\n\tgetConfigHierarchy,\n\tinspectConfig,\n\tvalidateConfig,\n} from \"../../models/registry.js\";\nimport {\n\tbadge,\n\tmuted,\n\tsectionHeading,\n\tseparator as themedSeparator,\n} from \"../../style/theme.js\";\n// Use the UMD build to avoid ESM subpath resolution issues in some environments\nimport { parseJsonc } from \"../../utils/jsonc-umd.js\";\nimport { getHomeDir } from \"../../utils/path-expansion.js\";\n\nimport type { Api } from \"../../agent/types.js\";\nimport { getEnvVarsForProvider } from \"../../providers/api-keys.js\";\nimport {\n\tgetEvalOpsManagedProviderDefinitions,\n\tisEvalOpsManagedProvider,\n} from \"../../providers/evalops-managed.js\";\n\ntype ProviderPreset = {\n\tid: string;\n\tname: string;\n\tapi: Api;\n\tdefaultModel: string;\n\tbaseUrl?: string;\n\trequiresApiKey: boolean;\n\tapiKeyEnv?: string;\n\tnote?: string;\n\tcontextWindow?: number;\n\tmaxTokens?: number;\n};\n\nfunction getManagedGatewayBaseUrl(): string {\n\treturn (\n\t\tprocess.env.MAESTRO_LLM_GATEWAY_URL?.trim() || \"http://127.0.0.1:8081/v1\"\n\t);\n}\n\nfunction getManagedGatewayProviderPresets(): ProviderPreset[] {\n\treturn getEvalOpsManagedProviderDefinitions().map((definition) => ({\n\t\tid: definition.id,\n\t\tname: definition.name,\n\t\tapi: definition.api,\n\t\tdefaultModel: definition.defaultModel,\n\t\tbaseUrl: getManagedGatewayBaseUrl(),\n\t\trequiresApiKey: false,\n\t\tnote: definition.note,\n\t}));\n}\n\nexport function getProviderPresets(): ProviderPreset[] {\n\treturn [\n\t\t{\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic (Claude)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-opus-4-6\",\n\t\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"ANTHROPIC_API_KEY\",\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 128000,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI (Responses)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"gpt-4o-mini\",\n\t\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENAI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"groq\",\n\t\t\tname: \"Groq\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"llama-3.3-70b-versatile\",\n\t\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GROQ_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"openrouter\",\n\t\t\tname: \"OpenRouter\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"openai/o4-mini\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENROUTER_API_KEY\",\n\t\t\tnote: \"Supports many upstreams; accepts OpenAI-compatible keys\",\n\t\t},\n\t\t...getManagedGatewayProviderPresets(),\n\t\t{\n\t\t\tid: \"google-gemini\",\n\t\t\tname: \"Google Gemini API\",\n\t\t\tapi: \"google-generative-ai\",\n\t\t\tdefaultModel: \"gemini-2.0-flash\",\n\t\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GEMINI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI (Cloud Code Assist)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-2.5-flash\",\n\t\t\tbaseUrl: \"https://cloudcode-pa.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity (Sandbox)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-3-pro-high\",\n\t\t\tbaseUrl: \"https://daily-cloudcode-pa.sandbox.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"vertex-ai\",\n\t\t\tname: \"Google Vertex AI (Claude/Gemini)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-3-7-sonnet@20250219\",\n\t\t\tbaseUrl: \"https://us-central1-aiplatform.googleapis.com/v1beta1\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses ADC; set GOOGLE_APPLICATION_CREDENTIALS or gcloud login\",\n\t\t},\n\t\t{\n\t\t\tid: \"bedrock\",\n\t\t\tname: \"AWS Bedrock\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses AWS credentials + region envs\",\n\t\t},\n\t\t{\n\t\t\tid: \"mistral\",\n\t\t\tname: \"Mistral\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"mistral-large-latest\",\n\t\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"MISTRAL_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"lmstudio\",\n\t\t\tname: \"LM Studio (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"lmstudio/gemma-3n\",\n\t\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t\t{\n\t\t\tid: \"ollama\",\n\t\t\tname: \"Ollama (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"ollama/llama3.2\",\n\t\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t];\n}\n\nexport interface ConfigShowRenderOptions {\n\thierarchy: string[];\n\thomeDir?: string;\n\tdisableColors?: boolean;\n}\n\n// Adapted from ansi-regex (MIT) to cover CSI and OSC escape sequences.\nconst ANSI_STRING_TERMINATORS = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\nconst ANSI_OSC_SEQUENCE = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ANSI_STRING_TERMINATORS})`;\nconst ANSI_CSI_SEQUENCE =\n\t\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\nconst ANSI_ESCAPE_SEQUENCE = new RegExp(\n\t`${ANSI_OSC_SEQUENCE}|${ANSI_CSI_SEQUENCE}`,\n\t\"g\",\n);\n\nfunction stripAnsi(value: string): string {\n\treturn value.replace(ANSI_ESCAPE_SEQUENCE, \"\");\n}\n\nconst normalizeForCompare = (value: string): string =>\n\tprocess.platform === \"win32\" ? value.toLowerCase() : value;\n\nfunction replaceHomePrefix(path: string, homeDir: string): string {\n\tconst normalizedPath = path.replace(/\\\\/g, \"/\");\n\tconst normalizedHome = homeDir.replace(/\\\\/g, \"/\");\n\tconst pathCheck = normalizeForCompare(normalizedPath);\n\tconst homeCheck = normalizeForCompare(normalizedHome);\n\tif (pathCheck === homeCheck) {\n\t\treturn \"~\";\n\t}\n\tif (pathCheck.startsWith(`${homeCheck}/`)) {\n\t\treturn `~${normalizedPath.slice(normalizedHome.length)}`;\n\t}\n\treturn path;\n}\n\nexport function buildConfigShowSections(\n\tinspection: ConfigInspection,\n\toptions: ConfigShowRenderOptions,\n): string[] {\n\tconst homeDir = options.homeDir ?? getHomeDir();\n\tconst rel = (path: string) => replaceHomePrefix(path, homeDir);\n\tconst output: string[] = [];\n\n\toutput.push(sectionHeading(\"Configuration Inspection\"));\n\toutput.push(\"\");\n\toutput.push(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = options.hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\toutput.push(` ${mark} ${status} ${muted(rel(source.path))}`);\n\t}\n\toutput.push(\"\");\n\n\tif (inspection.providers.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\t\t\toutput.push(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\toutput.push(` ${muted(provider.name)}`);\n\t\t\toutput.push(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\toutput.push(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\toutput.push(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\toutput.push(\"\");\n\t\t}\n\t} else {\n\t\toutput.push(`${badge(\"No providers configured\", undefined, \"warn\")}`);\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.fileReferences.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\toutput.push(` ${status} ${muted(rel(ref.path))}${muted(size)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.envVars.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\toutput.push(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (options.disableColors) {\n\t\treturn output.map((line) => stripAnsi(line));\n\t}\n\treturn output;\n}\n\n/**\n * Handle `maestro config validate` command\n */\nexport async function handleConfigValidate(): Promise<void> {\n\tconsole.log(sectionHeading(\"Validating Configuration\"));\n\n\tconst result: ConfigValidationResult = validateConfig();\n\tconst homeDir = getHomeDir();\n\n\t// Show config files\n\tif (result.summary.configFiles.length > 0) {\n\t\tconsole.log(muted(\"Config Files:\"));\n\t\tfor (const file of result.summary.configFiles) {\n\t\t\tconst relPath = replaceHomePrefix(file, homeDir);\n\t\t\tconsole.log(muted(` • ${relPath}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show errors\n\tif (result.errors.length > 0) {\n\t\tconsole.log(badge(\"[ERROR] Errors\", undefined, \"danger\"));\n\t\tfor (const error of result.errors) {\n\t\t\tconsole.log(chalk.red(` • ${error}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show warnings\n\tif (result.warnings.length > 0) {\n\t\tconsole.log(badge(\"[WARN] Warnings\", undefined, \"warn\"));\n\t\tfor (const warning of result.warnings) {\n\t\t\tconsole.log(chalk.yellow(` • ${warning}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show summary\n\tconsole.log(muted(\"Summary:\"));\n\tconsole.log(\n\t\tmuted(` • ${badge(\"Providers\", String(result.summary.providers))}`),\n\t);\n\tconsole.log(muted(` • ${badge(\"Models\", String(result.summary.models))}`));\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"File References\",\n\t\t\t\tString(result.summary.fileReferences.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"Environment Variables\",\n\t\t\t\tString(result.summary.envVars.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log();\n\n\t// Final verdict\n\tif (result.valid) {\n\t\tconsole.log(`${badge(\"Configuration is valid\", undefined, \"success\")}\\n`);\n\t\tprocess.exit(0);\n\t} else {\n\t\tconsole.log(`${badge(\"Configuration has errors\", undefined, \"danger\")}\\n`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/**\n * Legacy renderer for `maestro config show`\n */\nfunction renderConfigShowLegacy(\n\tinspection: ConfigInspection,\n\thierarchy: string[],\n\thomeDir: string,\n): void {\n\tconsole.log(sectionHeading(\"Configuration Inspection\"));\n\n\t// Show config sources\n\tconsole.log(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst relPath = replaceHomePrefix(source.path, homeDir);\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\tconsole.log(` ${mark} ${status} ${muted(relPath)}`);\n\t}\n\tconsole.log();\n\n\t// Show providers\n\tif (inspection.providers.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\n\t\t\tconsole.log(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\tconsole.log(` ${muted(provider.name)}`);\n\t\t\tconsole.log(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\tconsole.log(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\n\t\t\t// Show models\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\tconsole.log(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\tconsole.log();\n\t\t}\n\t} else {\n\t\tconsole.log(`${badge(\"No providers configured\", undefined, \"warn\")}\\n`);\n\t}\n\n\t// Show file references\n\tif (inspection.fileReferences.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst relPath = replaceHomePrefix(ref.path, homeDir);\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\tconsole.log(` ${status} ${muted(relPath)}${muted(size)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show environment variables\n\tif (inspection.envVars.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\tconsole.log(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n}\n\n/**\n * Handle `maestro config show` command\n */\nexport async function handleConfigShow(): Promise<void> {\n\tconst inspection: ConfigInspection = inspectConfig();\n\tconst hierarchy = getConfigHierarchy();\n\tconst homeDir = getHomeDir();\n\tconst layoutPref = (\n\t\tprocess.env.MAESTRO_CONFIG_SHOW_LAYOUT ?? \"v2\"\n\t).toLowerCase();\n\n\tif (layoutPref === \"legacy\") {\n\t\trenderConfigShowLegacy(inspection, hierarchy, homeDir);\n\t} else {\n\t\tconst lines = buildConfigShowSections(inspection, {\n\t\t\thierarchy,\n\t\t\thomeDir,\n\t\t\tdisableColors: !process.stdout.isTTY,\n\t\t});\n\t\tfor (const line of lines) {\n\t\t\tconsole.log(line);\n\t\t}\n\t}\n\n\tprocess.exit(0);\n}\n\n/**\n * Handle `maestro config init` command\n */\nexport async function handleConfigInit(): Promise<void> {\n\tconsole.log(sectionHeading(\"Initialize Maestro Configuration\"));\n\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconst providerPresets = getProviderPresets();\n\n\t\t// Determine config location\n\t\tconst configDir = join(process.cwd(), \".maestro\");\n\t\tconst configPath = join(configDir, \"config.json\");\n\t\tconst promptsDir = join(configDir, \"prompts\");\n\n\t\t// Check if config already exists\n\t\tif (existsSync(configPath)) {\n\t\t\tconst overwrite = await rl.question(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Config already exists at ${configPath}. Overwrite? (y/N): `,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (overwrite.toLowerCase() !== \"y\") {\n\t\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\t\trl.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Optional flag: --preset <id> to skip menu\n\t\tconst args = process.argv.slice(2);\n\t\tconst presetFlagIndex = args.findIndex(\n\t\t\t(arg) => arg === \"--preset\" || arg === \"-p\",\n\t\t);\n\t\tconst presetId =\n\t\t\tpresetFlagIndex >= 0 ? (args[presetFlagIndex + 1] ?? \"\") : \"\";\n\n\t\t// Step 1: Choose provider\n\t\tconsole.log(`\\n${badge(\"1. Choose your provider\", undefined, \"info\")}`);\n\t\tproviderPresets.forEach((preset, idx) => {\n\t\t\tconst note = preset.note ? chalk.dim(` — ${preset.note}`) : \"\";\n\t\t\tconsole.log(` ${idx + 1}) ${preset.name}${note}`);\n\t\t});\n\n\t\tlet preset: ProviderPreset | undefined;\n\t\tif (presetId) {\n\t\t\tconst found = providerPresets.find(\n\t\t\t\t(p) => p.id.toLowerCase() === presetId.toLowerCase(),\n\t\t\t);\n\t\t\tif (!found) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`\\nUnknown preset \"${presetId}\", falling back to menu selection.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpreset = found;\n\t\t\t\tconsole.log(chalk.green(`\\nUsing preset: ${preset.name}`));\n\t\t\t}\n\t\t}\n\n\t\tif (!preset) {\n\t\t\tconst providerChoice = await rl.question(\n\t\t\t\tchalk.cyan(`\\nProvider (1-${providerPresets.length}): `),\n\t\t\t);\n\n\t\t\tconst presetIndex =\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 >= 0 &&\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 < providerPresets.length\n\t\t\t\t\t? Number.parseInt(providerChoice.trim(), 10) - 1\n\t\t\t\t\t: 0;\n\t\t\tpreset = providerPresets[presetIndex] ?? providerPresets[0];\n\t\t}\n\n\t\t// At this point preset is guaranteed to be defined because providerPresets is non-empty\n\t\tif (!preset) {\n\t\t\tthrow new Error(\"No provider presets available\");\n\t\t}\n\n\t\tconst {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tapi: apiType,\n\t\t} = preset;\n\t\tconst { defaultModel } = preset;\n\t\tconst requiresApiKey = preset.requiresApiKey;\n\n\t\tlet useEnv = true;\n\t\tlet apiKeyField: { apiKeyEnv?: string; apiKey?: string } = {};\n\t\tif (requiresApiKey) {\n\t\t\tconsole.log(\n\t\t\t\t`\\n${badge(\n\t\t\t\t\t\"2. How would you like to provide your API key?\",\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"info\",\n\t\t\t\t)}`,\n\t\t\t);\n\t\t\tconsole.log(\" 1) Environment variable (recommended)\");\n\t\t\tconsole.log(\" 2) Direct in config (not recommended)\");\n\n\t\t\tconst keyChoice = await rl.question(chalk.cyan(\"\\nChoice (1-2): \"));\n\t\t\tuseEnv = keyChoice.trim() !== \"2\";\n\n\t\t\tif (useEnv) {\n\t\t\t\tconst fallbackEnv =\n\t\t\t\t\tgetEnvVarsForProvider(providerId)[0] ??\n\t\t\t\t\t`${providerId.toUpperCase().replace(/[^A-Z0-9]/g, \"_\")}_API_KEY`;\n\t\t\t\tconst envVarName = preset.apiKeyEnv ?? fallbackEnv;\n\t\t\t\tapiKeyField = { apiKeyEnv: envVarName };\n\t\t\t\tconsole.log(chalk.dim(`\\nUsing environment variable: ${envVarName}`));\n\t\t\t} else {\n\t\t\t\tconst apiKey = await rl.question(chalk.cyan(\"\\nEnter API key: \"));\n\t\t\t\tapiKeyField = { apiKey: apiKey.trim() };\n\t\t\t}\n\t\t} else {\n\t\t\tuseEnv = false;\n\t\t\tconst noKeyMessage = isEvalOpsManagedProvider(providerId)\n\t\t\t\t? \"\\nManaged gateway preset does not use a local API key. Run maestro evalops login after setup.\"\n\t\t\t\t: \"\\nLocal providers do not require API keys. Skipping step.\";\n\t\t\tconsole.log(chalk.dim(noKeyMessage));\n\t\t}\n\n\t\t// Step 3: Use file references for prompts\n\t\tconsole.log(\n\t\t\t`\\n${badge(\n\t\t\t\t\"3. Would you like to use file references for prompts?\",\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t);\n\t\tconsole.log(\" This creates a prompts/ folder for better organization.\");\n\n\t\tconst useFiles = await rl.question(\n\t\t\tchalk.cyan(\"\\nUse file references? (Y/n): \"),\n\t\t);\n\t\tconst createPrompts = useFiles.toLowerCase() !== \"n\";\n\n\t\t// Create directories\n\t\tmkdirSync(configDir, { recursive: true });\n\t\tif (createPrompts) {\n\t\t\tmkdirSync(promptsDir, { recursive: true });\n\t\t}\n\n\t\t// Create config\n\t\tconst config: LocalConfigFile = {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tid: providerId,\n\t\t\t\t\tname: providerName,\n\t\t\t\t\t...(baseUrl && { baseUrl }),\n\t\t\t\t\tapi: apiType,\n\t\t\t\t\t...apiKeyField,\n\t\t\t\t\tmodels: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: defaultModel,\n\t\t\t\t\t\t\tname: createPrompts\n\t\t\t\t\t\t\t\t? \"{file:./prompts/system.md}\"\n\t\t\t\t\t\t\t\t: \"Default assistant\",\n\t\t\t\t\t\t\tcontextWindow: preset?.contextWindow ?? 200000,\n\t\t\t\t\t\t\tmaxTokens: preset?.maxTokens ?? 8192,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\t// Write config\n\t\twriteFileSync(configPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Created config\", configPath, \"success\")}`);\n\n\t\t// Create example prompt file\n\t\tif (createPrompts) {\n\t\t\tconst systemPromptPath = join(promptsDir, \"system.md\");\n\t\t\tconst examplePrompt = `# System Prompt\n\nYou are a helpful AI coding assistant.\n\n## Guidelines\n\n- Write clean, maintainable code\n- Follow best practices\n- Provide clear explanations\n- Test your suggestions\n\n## Style\n\n- Be concise but thorough\n- Use examples when helpful\n- Ask clarifying questions when needed\n`;\n\t\t\twriteFileSync(systemPromptPath, examplePrompt);\n\t\t\tconsole.log(badge(\"Created prompt\", systemPromptPath, \"success\"));\n\t\t}\n\n\t\t// Create .env.example if using environment variables\n\t\tif (useEnv) {\n\t\t\tconst envExamplePath = join(process.cwd(), \".env.example\");\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconst envContent = existsSync(envExamplePath)\n\t\t\t\t? `\\n# Added by maestro init\\n${envVarName}=your-api-key-here\\n`\n\t\t\t\t: `# Maestro Configuration\\n${envVarName}=your-api-key-here\\n`;\n\n\t\t\tif (existsSync(envExamplePath)) {\n\t\t\t\tconst fs = await import(\"node:fs/promises\");\n\t\t\t\tawait fs.appendFile(envExamplePath, envContent);\n\t\t\t} else {\n\t\t\t\twriteFileSync(envExamplePath, envContent);\n\t\t\t}\n\t\t\tconsole.log(badge(\"Updated .env.example\", undefined, \"success\"));\n\t\t}\n\n\t\t// Show next steps\n\t\tconsole.log(sectionHeading(\"Configuration initialized successfully!\"));\n\t\tconsole.log(muted(\"Next steps:\"));\n\n\t\tif (useEnv) {\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconsole.log(muted(` 1. Set ${envVarName} in your environment`));\n\t\t}\n\t\tif (createPrompts) {\n\t\t\tconsole.log(muted(\" 2. Edit .maestro/prompts/system.md\"));\n\t\t}\n\t\tconsole.log(muted(\" 3. Run: maestro models list\"));\n\t\tconsole.log(muted(' 4. Start using: maestro \"your prompt\"\\n'));\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\ntype LocalProviderTemplate = {\n\tid: string;\n\tname: string;\n\tbaseUrl: string;\n\tapi: string;\n\tmodel: {\n\t\tid: string;\n\t\tname: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t};\n};\n\nconst LOCAL_PROVIDER_TEMPLATES: Record<string, LocalProviderTemplate> = {\n\tlmstudio: {\n\t\tid: \"lmstudio\",\n\t\tname: \"LM Studio (local)\",\n\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"lmstudio/gemma-3n\",\n\t\t\tname: \"Gemma 3n (local)\",\n\t\t\tcontextWindow: 200_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n\tollama: {\n\t\tid: \"ollama\",\n\t\tname: \"Ollama (local)\",\n\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"ollama/llama3.1\",\n\t\t\tname: \"Llama 3.1 (local)\",\n\t\t\tcontextWindow: 128_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n};\n\ninterface LocalConfigFile {\n\t$schema?: string;\n\tproviders?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi: string;\n\t\tbaseUrl?: string;\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tname: string;\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tinput?: Array<\"text\" | \"image\">;\n\t\t}>;\n\t\toptions?: Record<string, unknown>;\n\t}>;\n}\n\nfunction loadLocalConfig(path: string): LocalConfigFile {\n\tif (!existsSync(path)) {\n\t\treturn {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [],\n\t\t};\n\t}\n\tconst raw = readFileSync(path, \"utf-8\");\n\ttry {\n\t\tconst parsed = parseJsonc(raw, [], {\n\t\t\tallowTrailingComma: true,\n\t\t\tdisallowComments: false,\n\t\t});\n\t\tif (!parsed || typeof parsed !== \"object\") {\n\t\t\treturn {\n\t\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\t\tproviders: [],\n\t\t\t};\n\t\t}\n\t\treturn parsed as LocalConfigFile;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to parse ${path}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\nfunction upsertLocalProvider(\n\tconfig: LocalConfigFile,\n\tprovider: LocalProviderTemplate,\n\toverrides: {\n\t\tid: string;\n\t\tname: string;\n\t\tbaseUrl: string;\n\t\tmodelId: string;\n\t\tmodelName: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t},\n): void {\n\tif (!Array.isArray(config.providers)) {\n\t\tconfig.providers = [];\n\t}\n\ttype ProviderEntry = NonNullable<LocalConfigFile[\"providers\"]>[number];\n\tconst entry: ProviderEntry = {\n\t\tid: overrides.id,\n\t\tname: overrides.name,\n\t\tapi: provider.api,\n\t\tbaseUrl: overrides.baseUrl,\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: overrides.modelId,\n\t\t\t\tname: overrides.modelName,\n\t\t\t\tcontextWindow: overrides.contextWindow,\n\t\t\t\tmaxTokens: overrides.maxTokens,\n\t\t\t\tinput: [\"text\"] as Array<\"text\" | \"image\">,\n\t\t\t},\n\t\t],\n\t};\n\tconst existingIndex = config.providers.findIndex(\n\t\t(p) => p?.id === overrides.id,\n\t);\n\tif (existingIndex >= 0) {\n\t\tconfig.providers[existingIndex] = entry;\n\t} else {\n\t\tconfig.providers.push(entry);\n\t}\n}\n\nasync function checkLocalEndpoint(\n\tname: string,\n\tbaseUrl: string,\n): Promise<string> {\n\ttry {\n\t\tconst url = new URL(baseUrl);\n\t\turl.pathname = \"/models\";\n\t\tconst response = await fetch(url.toString(), { method: \"GET\" });\n\t\tif (response.ok) {\n\t\t\treturn `${badge(name, undefined, \"success\")} ${chalk.dim(\n\t\t\t\t`responded with ${response.status}`,\n\t\t\t)}`;\n\t\t}\n\t\treturn `${badge(name, undefined, \"warn\")} ${chalk.dim(\n\t\t\t`HTTP ${response.status}`,\n\t\t)}`;\n\t} catch (error) {\n\t\treturn `${badge(name, undefined, \"danger\")} ${chalk.dim(\n\t\t\terror instanceof Error ? error.message : String(error),\n\t\t)}`;\n\t}\n}\n\nexport async function handleConfigLocal(): Promise<void> {\n\tconsole.log(sectionHeading(\"Local provider helper\"));\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconsole.log(\" 1) Add LM Studio provider\");\n\t\tconsole.log(\" 2) Add Ollama provider\");\n\t\tconsole.log(\" 3) Check local endpoints\");\n\t\tconsole.log(\" 4) Cancel\");\n\t\tconst choice = (await rl.question(chalk.cyan(\"\\nChoice (1-4): \"))).trim();\n\n\t\tif (choice === \"4\") {\n\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tif (choice === \"3\") {\n\t\t\tconst lmstudioTemplate = LOCAL_PROVIDER_TEMPLATES.lmstudio;\n\t\t\tconst ollamaTemplate = LOCAL_PROVIDER_TEMPLATES.ollama;\n\t\t\tconst targets = [\n\t\t\t\t...(lmstudioTemplate\n\t\t\t\t\t? [{ name: \"LM Studio\", url: lmstudioTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t\t...(ollamaTemplate\n\t\t\t\t\t? [{ name: \"Ollama\", url: ollamaTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t];\n\t\t\tfor (const target of targets) {\n\t\t\t\tconsole.log(await checkLocalEndpoint(target.name, target.url));\n\t\t\t}\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateKey = choice === \"2\" ? \"ollama\" : \"lmstudio\";\n\t\tconst template = LOCAL_PROVIDER_TEMPLATES[templateKey];\n\t\tif (!template) {\n\t\t\tconsole.log(chalk.red(`\\nUnknown template: ${templateKey}`));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(\n\t\t\t\t\t\"\\nSave provider to:\\n 1) Project (.maestro/local.json)\\n 2) Home (~/.maestro/local.json)\\n\\nChoice (1-2): \",\n\t\t\t\t),\n\t\t\t)\n\t\t).trim();\n\t\tconst targetDir =\n\t\t\tscope === \"2\" ? PATHS.MAESTRO_HOME : join(process.cwd(), \".maestro\");\n\t\tmkdirSync(targetDir, { recursive: true });\n\t\tconst localPath = join(targetDir, \"local.json\");\n\t\tconst config = loadLocalConfig(localPath);\n\n\t\tconst providerId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`\\nProvider id (${template.id}): `))\n\t\t\t).trim() || template.id;\n\t\tconst providerName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Provider name (${template.name}): `))\n\t\t\t).trim() || template.name;\n\t\tconst baseUrl =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Base URL (${template.baseUrl}): `))\n\t\t\t).trim() || template.baseUrl;\n\t\tconst modelId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model id (${template.model.id}): `))\n\t\t\t).trim() || template.model.id;\n\t\tconst modelName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model name (${template.model.name}): `))\n\t\t\t).trim() || template.model.name;\n\t\tconst contextWindowAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Context window (${template.model.contextWindow}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst maxTokensAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Max output tokens (${template.model.maxTokens}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst contextWindow =\n\t\t\tNumber.parseInt(contextWindowAnswer, 10) || template.model.contextWindow;\n\t\tconst maxTokens =\n\t\t\tNumber.parseInt(maxTokensAnswer, 10) || template.model.maxTokens;\n\n\t\tupsertLocalProvider(config, template, {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tmodelId,\n\t\t\tmodelName,\n\t\t\tcontextWindow,\n\t\t\tmaxTokens,\n\t\t});\n\t\tif (!config.$schema) {\n\t\t\tconfig.$schema = \"https://composer-cli.dev/config.schema.json\";\n\t\t}\n\t\twriteFileSync(localPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Updated local config\", localPath, \"success\")}`);\n\t\tconsole.log(\n\t\t\tmuted(\n\t\t\t\t\"Reload your models (/model) after starting the local runtime to use the new provider.\",\n\t\t\t),\n\t\t);\n\t\tconsole.log(\n\t\t\tmuted(\"Tip: run `maestro config local` again to check connectivity.\"),\n\t\t);\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\tlet index = 0;\n\tlet value = bytes;\n\twhile (value >= 1024 && index < units.length - 1) {\n\t\tvalue /= 1024;\n\t\tindex += 1;\n\t}\n\treturn `${value.toFixed(1)} ${units[index]}`;\n}\n\nfunction formatModelLabel(model: {\n\tid: string;\n\treasoning?: boolean;\n\tinput?: string[];\n}): string {\n\tconst caps: string[] = [];\n\tif (model.reasoning) {\n\t\tcaps.push(\"thinking\");\n\t}\n\tif (model.input?.includes(\"image\")) {\n\t\tcaps.push(\"vision\");\n\t}\n\tconst suffix = caps.length ? ` ${chalk.dim(`[${caps.join(\", \")}]`)}` : \"\";\n\treturn `${model.id}${suffix}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { PATHS } from \"../../config/constants.js\";\nimport {\n\ttype ConfigInspection,\n\ttype ConfigValidationResult,\n\tgetConfigHierarchy,\n\tinspectConfig,\n\tvalidateConfig,\n} from \"../../models/registry.js\";\nimport {\n\tbadge,\n\tmuted,\n\tsectionHeading,\n\tseparator as themedSeparator,\n} from \"../../style/theme.js\";\n// Use the UMD build to avoid ESM subpath resolution issues in some environments\nimport { parseJsonc } from \"../../utils/jsonc-umd.js\";\nimport { getHomeDir } from \"../../utils/path-expansion.js\";\n\nimport type { Api } from \"../../agent/types.js\";\nimport { getEnvVarsForProvider } from \"../../providers/api-keys.js\";\nimport {\n\tDEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL,\n\tgetEvalOpsManagedProviderDefinitions,\n\tisEvalOpsManagedProvider,\n} from \"../../providers/evalops-managed.js\";\n\ntype ProviderPreset = {\n\tid: string;\n\tname: string;\n\tapi: Api;\n\tdefaultModel: string;\n\tbaseUrl?: string;\n\trequiresApiKey: boolean;\n\tapiKeyEnv?: string;\n\tnote?: string;\n\tcontextWindow?: number;\n\tmaxTokens?: number;\n};\n\nfunction getManagedGatewayBaseUrl(): string {\n\treturn (\n\t\tprocess.env.MAESTRO_LLM_GATEWAY_URL?.trim() ||\n\t\tDEFAULT_EVALOPS_MANAGED_GATEWAY_BASE_URL\n\t);\n}\n\nfunction getManagedGatewayProviderPresets(): ProviderPreset[] {\n\treturn getEvalOpsManagedProviderDefinitions().map((definition) => ({\n\t\tid: definition.id,\n\t\tname: definition.name,\n\t\tapi: definition.api,\n\t\tdefaultModel: definition.defaultModel,\n\t\tbaseUrl: getManagedGatewayBaseUrl(),\n\t\trequiresApiKey: false,\n\t\tnote: definition.note,\n\t}));\n}\n\nexport function getProviderPresets(): ProviderPreset[] {\n\treturn [\n\t\t{\n\t\t\tid: \"anthropic\",\n\t\t\tname: \"Anthropic (Claude)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-opus-4-6\",\n\t\t\tbaseUrl: \"https://api.anthropic.com\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"ANTHROPIC_API_KEY\",\n\t\t\tcontextWindow: 1000000,\n\t\t\tmaxTokens: 128000,\n\t\t},\n\t\t{\n\t\t\tid: \"openai\",\n\t\t\tname: \"OpenAI (Responses)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"gpt-4o-mini\",\n\t\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENAI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"groq\",\n\t\t\tname: \"Groq\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"llama-3.3-70b-versatile\",\n\t\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GROQ_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"openrouter\",\n\t\t\tname: \"OpenRouter\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"openai/o4-mini\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"OPENROUTER_API_KEY\",\n\t\t\tnote: \"Supports many upstreams; accepts OpenAI-compatible keys\",\n\t\t},\n\t\t...getManagedGatewayProviderPresets(),\n\t\t{\n\t\t\tid: \"google-gemini\",\n\t\t\tname: \"Google Gemini API\",\n\t\t\tapi: \"google-generative-ai\",\n\t\t\tdefaultModel: \"gemini-2.0-flash\",\n\t\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"GEMINI_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-gemini-cli\",\n\t\t\tname: \"Google Gemini CLI (Cloud Code Assist)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-2.5-flash\",\n\t\t\tbaseUrl: \"https://cloudcode-pa.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"google-antigravity\",\n\t\t\tname: \"Google Antigravity (Sandbox)\",\n\t\t\tapi: \"google-gemini-cli\",\n\t\t\tdefaultModel: \"gemini-3-pro-high\",\n\t\t\tbaseUrl: \"https://daily-cloudcode-pa.sandbox.googleapis.com\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Requires OAuth via /login (token includes projectId)\",\n\t\t},\n\t\t{\n\t\t\tid: \"vertex-ai\",\n\t\t\tname: \"Google Vertex AI (Claude/Gemini)\",\n\t\t\tapi: \"anthropic-messages\",\n\t\t\tdefaultModel: \"claude-3-7-sonnet@20250219\",\n\t\t\tbaseUrl: \"https://us-central1-aiplatform.googleapis.com/v1beta1\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses ADC; set GOOGLE_APPLICATION_CREDENTIALS or gcloud login\",\n\t\t},\n\t\t{\n\t\t\tid: \"bedrock\",\n\t\t\tname: \"AWS Bedrock\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n\t\t\trequiresApiKey: false,\n\t\t\tnote: \"Uses AWS credentials + region envs\",\n\t\t},\n\t\t{\n\t\t\tid: \"mistral\",\n\t\t\tname: \"Mistral\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tdefaultModel: \"mistral-large-latest\",\n\t\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\t\trequiresApiKey: true,\n\t\t\tapiKeyEnv: \"MISTRAL_API_KEY\",\n\t\t},\n\t\t{\n\t\t\tid: \"lmstudio\",\n\t\t\tname: \"LM Studio (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"lmstudio/gemma-3n\",\n\t\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t\t{\n\t\t\tid: \"ollama\",\n\t\t\tname: \"Ollama (local)\",\n\t\t\tapi: \"openai-responses\",\n\t\t\tdefaultModel: \"ollama/llama3.2\",\n\t\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\t\trequiresApiKey: false,\n\t\t},\n\t];\n}\n\nexport interface ConfigShowRenderOptions {\n\thierarchy: string[];\n\thomeDir?: string;\n\tdisableColors?: boolean;\n}\n\n// Adapted from ansi-regex (MIT) to cover CSI and OSC escape sequences.\nconst ANSI_STRING_TERMINATORS = \"(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)\";\nconst ANSI_OSC_SEQUENCE = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ANSI_STRING_TERMINATORS})`;\nconst ANSI_CSI_SEQUENCE =\n\t\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]\";\nconst ANSI_ESCAPE_SEQUENCE = new RegExp(\n\t`${ANSI_OSC_SEQUENCE}|${ANSI_CSI_SEQUENCE}`,\n\t\"g\",\n);\n\nfunction stripAnsi(value: string): string {\n\treturn value.replace(ANSI_ESCAPE_SEQUENCE, \"\");\n}\n\nconst normalizeForCompare = (value: string): string =>\n\tprocess.platform === \"win32\" ? value.toLowerCase() : value;\n\nfunction replaceHomePrefix(path: string, homeDir: string): string {\n\tconst normalizedPath = path.replace(/\\\\/g, \"/\");\n\tconst normalizedHome = homeDir.replace(/\\\\/g, \"/\");\n\tconst pathCheck = normalizeForCompare(normalizedPath);\n\tconst homeCheck = normalizeForCompare(normalizedHome);\n\tif (pathCheck === homeCheck) {\n\t\treturn \"~\";\n\t}\n\tif (pathCheck.startsWith(`${homeCheck}/`)) {\n\t\treturn `~${normalizedPath.slice(normalizedHome.length)}`;\n\t}\n\treturn path;\n}\n\nexport function buildConfigShowSections(\n\tinspection: ConfigInspection,\n\toptions: ConfigShowRenderOptions,\n): string[] {\n\tconst homeDir = options.homeDir ?? getHomeDir();\n\tconst rel = (path: string) => replaceHomePrefix(path, homeDir);\n\tconst output: string[] = [];\n\n\toutput.push(sectionHeading(\"Configuration Inspection\"));\n\toutput.push(\"\");\n\toutput.push(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = options.hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\toutput.push(` ${mark} ${status} ${muted(rel(source.path))}`);\n\t}\n\toutput.push(\"\");\n\n\tif (inspection.providers.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\t\t\toutput.push(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\toutput.push(` ${muted(provider.name)}`);\n\t\t\toutput.push(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\toutput.push(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\toutput.push(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\toutput.push(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\toutput.push(\"\");\n\t\t}\n\t} else {\n\t\toutput.push(`${badge(\"No providers configured\", undefined, \"warn\")}`);\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.fileReferences.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\toutput.push(` ${status} ${muted(rel(ref.path))}${muted(size)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (inspection.envVars.length > 0) {\n\t\toutput.push(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\toutput.push(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\toutput.push(\"\");\n\t}\n\n\tif (options.disableColors) {\n\t\treturn output.map((line) => stripAnsi(line));\n\t}\n\treturn output;\n}\n\n/**\n * Handle `maestro config validate` command\n */\nexport async function handleConfigValidate(): Promise<void> {\n\tconsole.log(sectionHeading(\"Validating Configuration\"));\n\n\tconst result: ConfigValidationResult = validateConfig();\n\tconst homeDir = getHomeDir();\n\n\t// Show config files\n\tif (result.summary.configFiles.length > 0) {\n\t\tconsole.log(muted(\"Config Files:\"));\n\t\tfor (const file of result.summary.configFiles) {\n\t\t\tconst relPath = replaceHomePrefix(file, homeDir);\n\t\t\tconsole.log(muted(` • ${relPath}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show errors\n\tif (result.errors.length > 0) {\n\t\tconsole.log(badge(\"[ERROR] Errors\", undefined, \"danger\"));\n\t\tfor (const error of result.errors) {\n\t\t\tconsole.log(chalk.red(` • ${error}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show warnings\n\tif (result.warnings.length > 0) {\n\t\tconsole.log(badge(\"[WARN] Warnings\", undefined, \"warn\"));\n\t\tfor (const warning of result.warnings) {\n\t\t\tconsole.log(chalk.yellow(` • ${warning}`));\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show summary\n\tconsole.log(muted(\"Summary:\"));\n\tconsole.log(\n\t\tmuted(` • ${badge(\"Providers\", String(result.summary.providers))}`),\n\t);\n\tconsole.log(muted(` • ${badge(\"Models\", String(result.summary.models))}`));\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"File References\",\n\t\t\t\tString(result.summary.fileReferences.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log(\n\t\tmuted(\n\t\t\t` • ${badge(\n\t\t\t\t\"Environment Variables\",\n\t\t\t\tString(result.summary.envVars.length),\n\t\t\t)}`,\n\t\t),\n\t);\n\tconsole.log();\n\n\t// Final verdict\n\tif (result.valid) {\n\t\tconsole.log(`${badge(\"Configuration is valid\", undefined, \"success\")}\\n`);\n\t\tprocess.exit(0);\n\t} else {\n\t\tconsole.log(`${badge(\"Configuration has errors\", undefined, \"danger\")}\\n`);\n\t\tprocess.exit(1);\n\t}\n}\n\n/**\n * Legacy renderer for `maestro config show`\n */\nfunction renderConfigShowLegacy(\n\tinspection: ConfigInspection,\n\thierarchy: string[],\n\thomeDir: string,\n): void {\n\tconsole.log(sectionHeading(\"Configuration Inspection\"));\n\n\t// Show config sources\n\tconsole.log(badge(\"Config Sources\", undefined, \"info\"));\n\tfor (const source of inspection.sources) {\n\t\tconst relPath = replaceHomePrefix(source.path, homeDir);\n\t\tconst status = source.exists\n\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\tconst mark = hierarchy.includes(source.path) ? \"•\" : \" \";\n\t\tconsole.log(` ${mark} ${status} ${muted(relPath)}`);\n\t}\n\tconsole.log();\n\n\t// Show providers\n\tif (inspection.providers.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(`Providers (${inspection.providers.length})`, undefined, \"info\"),\n\t\t);\n\t\tfor (const provider of inspection.providers) {\n\t\t\tconst isOverrideOnly = provider.modelCount === 0;\n\t\t\tconst heading = `${chalk.cyan(provider.id)} ${muted(\n\t\t\t\t`(${provider.modelCount} models)`,\n\t\t\t)}`;\n\t\t\tconst enabledBadge = provider.enabled\n\t\t\t\t? badge(\"enabled\", undefined, \"success\")\n\t\t\t\t: badge(\"disabled\", undefined, \"warn\");\n\t\t\tconst metaBadges: string[] = [];\n\t\t\tif (isOverrideOnly) {\n\t\t\t\tmetaBadges.push(badge(\"override-only\", undefined, \"info\"));\n\t\t\t\tif (provider.apiKeySource) {\n\t\t\t\t\tmetaBadges.push(badge(\"API key\", provider.apiKeySource, \"success\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst keyBadge = provider.apiKeySource\n\t\t\t\t\t? badge(\"API key\", provider.apiKeySource, \"success\")\n\t\t\t\t\t: badge(\"API key missing\", undefined, \"warn\");\n\t\t\t\tmetaBadges.push(keyBadge);\n\t\t\t}\n\t\t\tmetaBadges.push(enabledBadge);\n\t\t\tconst metaLine = metaBadges.join(` ${themedSeparator()} `);\n\n\t\t\tconsole.log(` ${heading} ${themedSeparator()} ${metaLine}`);\n\t\t\tconsole.log(` ${muted(provider.name)}`);\n\t\t\tconsole.log(` ${muted(`Base URL: ${provider.baseUrl}`)}`);\n\t\t\tif (provider.options && Object.keys(provider.options).length > 0) {\n\t\t\t\tconsole.log(muted(` Options: ${JSON.stringify(provider.options)}`));\n\t\t\t}\n\n\t\t\t// Show models\n\t\t\tif (provider.models.length <= 3) {\n\t\t\t\tfor (const model of provider.models) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(model)}`));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstModel = provider.models[0];\n\t\t\t\tconst secondModel = provider.models[1];\n\t\t\t\tif (firstModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(firstModel)}`));\n\t\t\t\t}\n\t\t\t\tif (secondModel) {\n\t\t\t\t\tconsole.log(muted(` • ${formatModelLabel(secondModel)}`));\n\t\t\t\t}\n\t\t\t\tconsole.log(muted(` ... and ${provider.models.length - 2} more`));\n\t\t\t}\n\t\t\tconsole.log();\n\t\t}\n\t} else {\n\t\tconsole.log(`${badge(\"No providers configured\", undefined, \"warn\")}\\n`);\n\t}\n\n\t// Show file references\n\tif (inspection.fileReferences.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`File References (${inspection.fileReferences.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const ref of inspection.fileReferences) {\n\t\t\tconst relPath = replaceHomePrefix(ref.path, homeDir);\n\t\t\tconst status = ref.exists\n\t\t\t\t? badge(\"present\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"danger\");\n\t\t\tconst size = ref.size ? ` (${formatBytes(ref.size)})` : \"\";\n\t\t\tconsole.log(` ${status} ${muted(relPath)}${muted(size)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n\n\t// Show environment variables\n\tif (inspection.envVars.length > 0) {\n\t\tconsole.log(\n\t\t\tbadge(\n\t\t\t\t`Environment Variables (${inspection.envVars.length})`,\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t),\n\t\t);\n\t\tfor (const envVar of inspection.envVars) {\n\t\t\tconst status = envVar.set\n\t\t\t\t? badge(\"set\", undefined, \"success\")\n\t\t\t\t: badge(\"missing\", undefined, \"warn\");\n\t\t\tconst value = envVar.maskedValue ? envVar.maskedValue : \"(not set)\";\n\t\t\tconsole.log(` ${status} ${chalk.cyan(envVar.name)}: ${muted(value)}`);\n\t\t}\n\t\tconsole.log();\n\t}\n}\n\n/**\n * Handle `maestro config show` command\n */\nexport async function handleConfigShow(): Promise<void> {\n\tconst inspection: ConfigInspection = inspectConfig();\n\tconst hierarchy = getConfigHierarchy();\n\tconst homeDir = getHomeDir();\n\tconst layoutPref = (\n\t\tprocess.env.MAESTRO_CONFIG_SHOW_LAYOUT ?? \"v2\"\n\t).toLowerCase();\n\n\tif (layoutPref === \"legacy\") {\n\t\trenderConfigShowLegacy(inspection, hierarchy, homeDir);\n\t} else {\n\t\tconst lines = buildConfigShowSections(inspection, {\n\t\t\thierarchy,\n\t\t\thomeDir,\n\t\t\tdisableColors: !process.stdout.isTTY,\n\t\t});\n\t\tfor (const line of lines) {\n\t\t\tconsole.log(line);\n\t\t}\n\t}\n\n\tprocess.exit(0);\n}\n\n/**\n * Handle `maestro config init` command\n */\nexport async function handleConfigInit(): Promise<void> {\n\tconsole.log(sectionHeading(\"Initialize Maestro Configuration\"));\n\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconst providerPresets = getProviderPresets();\n\n\t\t// Determine config location\n\t\tconst configDir = join(process.cwd(), \".maestro\");\n\t\tconst configPath = join(configDir, \"config.json\");\n\t\tconst promptsDir = join(configDir, \"prompts\");\n\n\t\t// Check if config already exists\n\t\tif (existsSync(configPath)) {\n\t\t\tconst overwrite = await rl.question(\n\t\t\t\tchalk.yellow(\n\t\t\t\t\t`Config already exists at ${configPath}. Overwrite? (y/N): `,\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (overwrite.toLowerCase() !== \"y\") {\n\t\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\t\trl.close();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Optional flag: --preset <id> to skip menu\n\t\tconst args = process.argv.slice(2);\n\t\tconst presetFlagIndex = args.findIndex(\n\t\t\t(arg) => arg === \"--preset\" || arg === \"-p\",\n\t\t);\n\t\tconst presetId =\n\t\t\tpresetFlagIndex >= 0 ? (args[presetFlagIndex + 1] ?? \"\") : \"\";\n\n\t\t// Step 1: Choose provider\n\t\tconsole.log(`\\n${badge(\"1. Choose your provider\", undefined, \"info\")}`);\n\t\tproviderPresets.forEach((preset, idx) => {\n\t\t\tconst note = preset.note ? chalk.dim(` — ${preset.note}`) : \"\";\n\t\t\tconsole.log(` ${idx + 1}) ${preset.name}${note}`);\n\t\t});\n\n\t\tlet preset: ProviderPreset | undefined;\n\t\tif (presetId) {\n\t\t\tconst found = providerPresets.find(\n\t\t\t\t(p) => p.id.toLowerCase() === presetId.toLowerCase(),\n\t\t\t);\n\t\t\tif (!found) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tchalk.yellow(\n\t\t\t\t\t\t`\\nUnknown preset \"${presetId}\", falling back to menu selection.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpreset = found;\n\t\t\t\tconsole.log(chalk.green(`\\nUsing preset: ${preset.name}`));\n\t\t\t}\n\t\t}\n\n\t\tif (!preset) {\n\t\t\tconst providerChoice = await rl.question(\n\t\t\t\tchalk.cyan(`\\nProvider (1-${providerPresets.length}): `),\n\t\t\t);\n\n\t\t\tconst presetIndex =\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 >= 0 &&\n\t\t\t\tNumber.parseInt(providerChoice.trim(), 10) - 1 < providerPresets.length\n\t\t\t\t\t? Number.parseInt(providerChoice.trim(), 10) - 1\n\t\t\t\t\t: 0;\n\t\t\tpreset = providerPresets[presetIndex] ?? providerPresets[0];\n\t\t}\n\n\t\t// At this point preset is guaranteed to be defined because providerPresets is non-empty\n\t\tif (!preset) {\n\t\t\tthrow new Error(\"No provider presets available\");\n\t\t}\n\n\t\tconst {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tapi: apiType,\n\t\t} = preset;\n\t\tconst { defaultModel } = preset;\n\t\tconst requiresApiKey = preset.requiresApiKey;\n\n\t\tlet useEnv = true;\n\t\tlet apiKeyField: { apiKeyEnv?: string; apiKey?: string } = {};\n\t\tif (requiresApiKey) {\n\t\t\tconsole.log(\n\t\t\t\t`\\n${badge(\n\t\t\t\t\t\"2. How would you like to provide your API key?\",\n\t\t\t\t\tundefined,\n\t\t\t\t\t\"info\",\n\t\t\t\t)}`,\n\t\t\t);\n\t\t\tconsole.log(\" 1) Environment variable (recommended)\");\n\t\t\tconsole.log(\" 2) Direct in config (not recommended)\");\n\n\t\t\tconst keyChoice = await rl.question(chalk.cyan(\"\\nChoice (1-2): \"));\n\t\t\tuseEnv = keyChoice.trim() !== \"2\";\n\n\t\t\tif (useEnv) {\n\t\t\t\tconst fallbackEnv =\n\t\t\t\t\tgetEnvVarsForProvider(providerId)[0] ??\n\t\t\t\t\t`${providerId.toUpperCase().replace(/[^A-Z0-9]/g, \"_\")}_API_KEY`;\n\t\t\t\tconst envVarName = preset.apiKeyEnv ?? fallbackEnv;\n\t\t\t\tapiKeyField = { apiKeyEnv: envVarName };\n\t\t\t\tconsole.log(chalk.dim(`\\nUsing environment variable: ${envVarName}`));\n\t\t\t} else {\n\t\t\t\tconst apiKey = await rl.question(chalk.cyan(\"\\nEnter API key: \"));\n\t\t\t\tapiKeyField = { apiKey: apiKey.trim() };\n\t\t\t}\n\t\t} else {\n\t\t\tuseEnv = false;\n\t\t\tconst noKeyMessage = isEvalOpsManagedProvider(providerId)\n\t\t\t\t? \"\\nManaged gateway preset does not use a local API key. Run maestro evalops login after setup.\"\n\t\t\t\t: \"\\nLocal providers do not require API keys. Skipping step.\";\n\t\t\tconsole.log(chalk.dim(noKeyMessage));\n\t\t}\n\n\t\t// Step 3: Use file references for prompts\n\t\tconsole.log(\n\t\t\t`\\n${badge(\n\t\t\t\t\"3. Would you like to use file references for prompts?\",\n\t\t\t\tundefined,\n\t\t\t\t\"info\",\n\t\t\t)}`,\n\t\t);\n\t\tconsole.log(\" This creates a prompts/ folder for better organization.\");\n\n\t\tconst useFiles = await rl.question(\n\t\t\tchalk.cyan(\"\\nUse file references? (Y/n): \"),\n\t\t);\n\t\tconst createPrompts = useFiles.toLowerCase() !== \"n\";\n\n\t\t// Create directories\n\t\tmkdirSync(configDir, { recursive: true });\n\t\tif (createPrompts) {\n\t\t\tmkdirSync(promptsDir, { recursive: true });\n\t\t}\n\n\t\t// Create config\n\t\tconst config: LocalConfigFile = {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tid: providerId,\n\t\t\t\t\tname: providerName,\n\t\t\t\t\t...(baseUrl && { baseUrl }),\n\t\t\t\t\tapi: apiType,\n\t\t\t\t\t...apiKeyField,\n\t\t\t\t\tmodels: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: defaultModel,\n\t\t\t\t\t\t\tname: createPrompts\n\t\t\t\t\t\t\t\t? \"{file:./prompts/system.md}\"\n\t\t\t\t\t\t\t\t: \"Default assistant\",\n\t\t\t\t\t\t\tcontextWindow: preset?.contextWindow ?? 200000,\n\t\t\t\t\t\t\tmaxTokens: preset?.maxTokens ?? 8192,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\t// Write config\n\t\twriteFileSync(configPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Created config\", configPath, \"success\")}`);\n\n\t\t// Create example prompt file\n\t\tif (createPrompts) {\n\t\t\tconst systemPromptPath = join(promptsDir, \"system.md\");\n\t\t\tconst examplePrompt = `# System Prompt\n\nYou are a helpful AI coding assistant.\n\n## Guidelines\n\n- Write clean, maintainable code\n- Follow best practices\n- Provide clear explanations\n- Test your suggestions\n\n## Style\n\n- Be concise but thorough\n- Use examples when helpful\n- Ask clarifying questions when needed\n`;\n\t\t\twriteFileSync(systemPromptPath, examplePrompt);\n\t\t\tconsole.log(badge(\"Created prompt\", systemPromptPath, \"success\"));\n\t\t}\n\n\t\t// Create .env.example if using environment variables\n\t\tif (useEnv) {\n\t\t\tconst envExamplePath = join(process.cwd(), \".env.example\");\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconst envContent = existsSync(envExamplePath)\n\t\t\t\t? `\\n# Added by maestro init\\n${envVarName}=your-api-key-here\\n`\n\t\t\t\t: `# Maestro Configuration\\n${envVarName}=your-api-key-here\\n`;\n\n\t\t\tif (existsSync(envExamplePath)) {\n\t\t\t\tconst fs = await import(\"node:fs/promises\");\n\t\t\t\tawait fs.appendFile(envExamplePath, envContent);\n\t\t\t} else {\n\t\t\t\twriteFileSync(envExamplePath, envContent);\n\t\t\t}\n\t\t\tconsole.log(badge(\"Updated .env.example\", undefined, \"success\"));\n\t\t}\n\n\t\t// Show next steps\n\t\tconsole.log(sectionHeading(\"Configuration initialized successfully!\"));\n\t\tconsole.log(muted(\"Next steps:\"));\n\n\t\tif (useEnv) {\n\t\t\tconst envVarName = apiKeyField.apiKeyEnv ?? \"\";\n\t\t\tconsole.log(muted(` 1. Set ${envVarName} in your environment`));\n\t\t}\n\t\tif (createPrompts) {\n\t\t\tconsole.log(muted(\" 2. Edit .maestro/prompts/system.md\"));\n\t\t}\n\t\tconsole.log(muted(\" 3. Run: maestro models list\"));\n\t\tconsole.log(muted(' 4. Start using: maestro \"your prompt\"\\n'));\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\ntype LocalProviderTemplate = {\n\tid: string;\n\tname: string;\n\tbaseUrl: string;\n\tapi: string;\n\tmodel: {\n\t\tid: string;\n\t\tname: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t};\n};\n\nconst LOCAL_PROVIDER_TEMPLATES: Record<string, LocalProviderTemplate> = {\n\tlmstudio: {\n\t\tid: \"lmstudio\",\n\t\tname: \"LM Studio (local)\",\n\t\tbaseUrl: \"http://127.0.0.1:1234/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"lmstudio/gemma-3n\",\n\t\t\tname: \"Gemma 3n (local)\",\n\t\t\tcontextWindow: 200_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n\tollama: {\n\t\tid: \"ollama\",\n\t\tname: \"Ollama (local)\",\n\t\tbaseUrl: \"http://localhost:11434/v1\",\n\t\tapi: \"openai-responses\",\n\t\tmodel: {\n\t\t\tid: \"ollama/llama3.1\",\n\t\t\tname: \"Llama 3.1 (local)\",\n\t\t\tcontextWindow: 128_000,\n\t\t\tmaxTokens: 8192,\n\t\t},\n\t},\n};\n\ninterface LocalConfigFile {\n\t$schema?: string;\n\tproviders?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi: string;\n\t\tbaseUrl?: string;\n\t\tmodels: Array<{\n\t\t\tid: string;\n\t\t\tname: string;\n\t\t\tcontextWindow: number;\n\t\t\tmaxTokens: number;\n\t\t\tinput?: Array<\"text\" | \"image\">;\n\t\t}>;\n\t\toptions?: Record<string, unknown>;\n\t}>;\n}\n\nfunction loadLocalConfig(path: string): LocalConfigFile {\n\tif (!existsSync(path)) {\n\t\treturn {\n\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\tproviders: [],\n\t\t};\n\t}\n\tconst raw = readFileSync(path, \"utf-8\");\n\ttry {\n\t\tconst parsed = parseJsonc(raw, [], {\n\t\t\tallowTrailingComma: true,\n\t\t\tdisallowComments: false,\n\t\t});\n\t\tif (!parsed || typeof parsed !== \"object\") {\n\t\t\treturn {\n\t\t\t\t$schema: \"https://composer-cli.dev/config.schema.json\",\n\t\t\t\tproviders: [],\n\t\t\t};\n\t\t}\n\t\treturn parsed as LocalConfigFile;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`Failed to parse ${path}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t);\n\t}\n}\n\nfunction upsertLocalProvider(\n\tconfig: LocalConfigFile,\n\tprovider: LocalProviderTemplate,\n\toverrides: {\n\t\tid: string;\n\t\tname: string;\n\t\tbaseUrl: string;\n\t\tmodelId: string;\n\t\tmodelName: string;\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t},\n): void {\n\tif (!Array.isArray(config.providers)) {\n\t\tconfig.providers = [];\n\t}\n\ttype ProviderEntry = NonNullable<LocalConfigFile[\"providers\"]>[number];\n\tconst entry: ProviderEntry = {\n\t\tid: overrides.id,\n\t\tname: overrides.name,\n\t\tapi: provider.api,\n\t\tbaseUrl: overrides.baseUrl,\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: overrides.modelId,\n\t\t\t\tname: overrides.modelName,\n\t\t\t\tcontextWindow: overrides.contextWindow,\n\t\t\t\tmaxTokens: overrides.maxTokens,\n\t\t\t\tinput: [\"text\"] as Array<\"text\" | \"image\">,\n\t\t\t},\n\t\t],\n\t};\n\tconst existingIndex = config.providers.findIndex(\n\t\t(p) => p?.id === overrides.id,\n\t);\n\tif (existingIndex >= 0) {\n\t\tconfig.providers[existingIndex] = entry;\n\t} else {\n\t\tconfig.providers.push(entry);\n\t}\n}\n\nasync function checkLocalEndpoint(\n\tname: string,\n\tbaseUrl: string,\n): Promise<string> {\n\ttry {\n\t\tconst url = new URL(baseUrl);\n\t\turl.pathname = \"/models\";\n\t\tconst response = await fetch(url.toString(), { method: \"GET\" });\n\t\tif (response.ok) {\n\t\t\treturn `${badge(name, undefined, \"success\")} ${chalk.dim(\n\t\t\t\t`responded with ${response.status}`,\n\t\t\t)}`;\n\t\t}\n\t\treturn `${badge(name, undefined, \"warn\")} ${chalk.dim(\n\t\t\t`HTTP ${response.status}`,\n\t\t)}`;\n\t} catch (error) {\n\t\treturn `${badge(name, undefined, \"danger\")} ${chalk.dim(\n\t\t\terror instanceof Error ? error.message : String(error),\n\t\t)}`;\n\t}\n}\n\nexport async function handleConfigLocal(): Promise<void> {\n\tconsole.log(sectionHeading(\"Local provider helper\"));\n\tconst readline = await import(\"node:readline/promises\");\n\tconst rl = readline.createInterface({\n\t\tinput: process.stdin,\n\t\toutput: process.stdout,\n\t});\n\n\ttry {\n\t\tconsole.log(\" 1) Add LM Studio provider\");\n\t\tconsole.log(\" 2) Add Ollama provider\");\n\t\tconsole.log(\" 3) Check local endpoints\");\n\t\tconsole.log(\" 4) Cancel\");\n\t\tconst choice = (await rl.question(chalk.cyan(\"\\nChoice (1-4): \"))).trim();\n\n\t\tif (choice === \"4\") {\n\t\t\tconsole.log(muted(\"\\nCancelled.\"));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tif (choice === \"3\") {\n\t\t\tconst lmstudioTemplate = LOCAL_PROVIDER_TEMPLATES.lmstudio;\n\t\t\tconst ollamaTemplate = LOCAL_PROVIDER_TEMPLATES.ollama;\n\t\t\tconst targets = [\n\t\t\t\t...(lmstudioTemplate\n\t\t\t\t\t? [{ name: \"LM Studio\", url: lmstudioTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t\t...(ollamaTemplate\n\t\t\t\t\t? [{ name: \"Ollama\", url: ollamaTemplate.baseUrl }]\n\t\t\t\t\t: []),\n\t\t\t];\n\t\t\tfor (const target of targets) {\n\t\t\t\tconsole.log(await checkLocalEndpoint(target.name, target.url));\n\t\t\t}\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst templateKey = choice === \"2\" ? \"ollama\" : \"lmstudio\";\n\t\tconst template = LOCAL_PROVIDER_TEMPLATES[templateKey];\n\t\tif (!template) {\n\t\t\tconsole.log(chalk.red(`\\nUnknown template: ${templateKey}`));\n\t\t\trl.close();\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(\n\t\t\t\t\t\"\\nSave provider to:\\n 1) Project (.maestro/local.json)\\n 2) Home (~/.maestro/local.json)\\n\\nChoice (1-2): \",\n\t\t\t\t),\n\t\t\t)\n\t\t).trim();\n\t\tconst targetDir =\n\t\t\tscope === \"2\" ? PATHS.MAESTRO_HOME : join(process.cwd(), \".maestro\");\n\t\tmkdirSync(targetDir, { recursive: true });\n\t\tconst localPath = join(targetDir, \"local.json\");\n\t\tconst config = loadLocalConfig(localPath);\n\n\t\tconst providerId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`\\nProvider id (${template.id}): `))\n\t\t\t).trim() || template.id;\n\t\tconst providerName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Provider name (${template.name}): `))\n\t\t\t).trim() || template.name;\n\t\tconst baseUrl =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Base URL (${template.baseUrl}): `))\n\t\t\t).trim() || template.baseUrl;\n\t\tconst modelId =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model id (${template.model.id}): `))\n\t\t\t).trim() || template.model.id;\n\t\tconst modelName =\n\t\t\t(\n\t\t\t\tawait rl.question(chalk.cyan(`Model name (${template.model.name}): `))\n\t\t\t).trim() || template.model.name;\n\t\tconst contextWindowAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Context window (${template.model.contextWindow}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst maxTokensAnswer = (\n\t\t\tawait rl.question(\n\t\t\t\tchalk.cyan(`Max output tokens (${template.model.maxTokens}): `),\n\t\t\t)\n\t\t).trim();\n\t\tconst contextWindow =\n\t\t\tNumber.parseInt(contextWindowAnswer, 10) || template.model.contextWindow;\n\t\tconst maxTokens =\n\t\t\tNumber.parseInt(maxTokensAnswer, 10) || template.model.maxTokens;\n\n\t\tupsertLocalProvider(config, template, {\n\t\t\tid: providerId,\n\t\t\tname: providerName,\n\t\t\tbaseUrl,\n\t\t\tmodelId,\n\t\t\tmodelName,\n\t\t\tcontextWindow,\n\t\t\tmaxTokens,\n\t\t});\n\t\tif (!config.$schema) {\n\t\t\tconfig.$schema = \"https://composer-cli.dev/config.schema.json\";\n\t\t}\n\t\twriteFileSync(localPath, JSON.stringify(config, null, 2));\n\t\tconsole.log(`\\n${badge(\"Updated local config\", localPath, \"success\")}`);\n\t\tconsole.log(\n\t\t\tmuted(\n\t\t\t\t\"Reload your models (/model) after starting the local runtime to use the new provider.\",\n\t\t\t),\n\t\t);\n\t\tconsole.log(\n\t\t\tmuted(\"Tip: run `maestro config local` again to check connectivity.\"),\n\t\t);\n\n\t\trl.close();\n\t} catch (error) {\n\t\trl.close();\n\t\tthrow error;\n\t}\n}\n\n/**\n * Format bytes to human-readable string\n */\nfunction formatBytes(bytes: number): string {\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\tlet index = 0;\n\tlet value = bytes;\n\twhile (value >= 1024 && index < units.length - 1) {\n\t\tvalue /= 1024;\n\t\tindex += 1;\n\t}\n\treturn `${value.toFixed(1)} ${units[index]}`;\n}\n\nfunction formatModelLabel(model: {\n\tid: string;\n\treasoning?: boolean;\n\tinput?: string[];\n}): string {\n\tconst caps: string[] = [];\n\tif (model.reasoning) {\n\t\tcaps.push(\"thinking\");\n\t}\n\tif (model.input?.includes(\"image\")) {\n\t\tcaps.push(\"vision\");\n\t}\n\tconst suffix = caps.length ? ` ${chalk.dim(`[${caps.join(\", \")}]`)}` : \"\";\n\treturn `${model.id}${suffix}`;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function handleEvalOpsCommand(subcommand?: string): Promise<void>;
|
|
1
|
+
export declare function handleEvalOpsCommand(subcommand?: string, args?: string[]): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=evalops.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalops.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evalops.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evalops.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/evalops.ts"],"names":[],"mappings":"AAKA,wBAAsB,oBAAoB,CACzC,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,GAAE,MAAM,EAAO,GACjB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
+
import { getStoredEvalOpsAgentMcpMetadata } from "../../evalops/agent-bootstrap.js";
|
|
2
3
|
import { hasOAuthCredentials, login, logout } from "../../oauth/index.js";
|
|
3
4
|
import { loadOAuthCredentials } from "../../oauth/storage.js";
|
|
4
|
-
export async function handleEvalOpsCommand(subcommand) {
|
|
5
|
+
export async function handleEvalOpsCommand(subcommand, args = []) {
|
|
5
6
|
switch (subcommand) {
|
|
6
7
|
case "init": {
|
|
7
8
|
const { handleInitCommand } = await import("./init.js");
|
|
8
|
-
await handleInitCommand();
|
|
9
|
+
await handleInitCommand(args);
|
|
9
10
|
return;
|
|
10
11
|
}
|
|
11
12
|
case "login":
|
|
@@ -48,6 +49,7 @@ async function handleStatus() {
|
|
|
48
49
|
const remainingMs = Math.max(0, (credentials?.expires ?? Date.now()) - Date.now());
|
|
49
50
|
const minutes = Math.round(remainingMs / 60_000);
|
|
50
51
|
const metadata = credentials?.metadata;
|
|
52
|
+
const agentMcp = getStoredEvalOpsAgentMcpMetadata();
|
|
51
53
|
const organizationId = typeof metadata?.organizationId === "string"
|
|
52
54
|
? metadata.organizationId
|
|
53
55
|
: undefined;
|
|
@@ -69,6 +71,25 @@ async function handleStatus() {
|
|
|
69
71
|
: "prod";
|
|
70
72
|
console.log(chalk.dim(`Provider ref: ${provider}/${environment}`));
|
|
71
73
|
}
|
|
74
|
+
if (agentMcp) {
|
|
75
|
+
console.log(chalk.green("EvalOps agent session configured."));
|
|
76
|
+
console.log(chalk.dim(`MCP endpoint: ${agentMcp.endpoint}`));
|
|
77
|
+
if (agentMcp.agentId) {
|
|
78
|
+
console.log(chalk.dim(`Agent: ${agentMcp.agentId}`));
|
|
79
|
+
}
|
|
80
|
+
if (agentMcp.runId) {
|
|
81
|
+
console.log(chalk.dim(`Run: ${agentMcp.runId}`));
|
|
82
|
+
}
|
|
83
|
+
if (agentMcp.keyPrefix) {
|
|
84
|
+
console.log(chalk.dim(`API key: ${agentMcp.keyPrefix}`));
|
|
85
|
+
}
|
|
86
|
+
if (agentMcp.sessionExpiresAt) {
|
|
87
|
+
console.log(chalk.dim(`Session expires: ${agentMcp.sessionExpiresAt}`));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(chalk.yellow('No EvalOps agent session yet. Run "maestro init".'));
|
|
92
|
+
}
|
|
72
93
|
console.log(chalk.dim(`Access token expires in ~${minutes} minute${minutes === 1 ? "" : "s"} (auto-refresh enabled).`));
|
|
73
94
|
}
|
|
74
95
|
//# sourceMappingURL=evalops.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalops.js","sourceRoot":"","sources":["../../../src/cli/commands/evalops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,oBAAoB,
|
|
1
|
+
{"version":3,"file":"evalops.js","sourceRoot":"","sources":["../../../src/cli/commands/evalops.ts"],"names":[],"mappings":"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","sourcesContent":["import chalk from \"chalk\";\nimport { getStoredEvalOpsAgentMcpMetadata } from \"../../evalops/agent-bootstrap.js\";\nimport { hasOAuthCredentials, login, logout } from \"../../oauth/index.js\";\nimport { loadOAuthCredentials } from \"../../oauth/storage.js\";\n\nexport async function handleEvalOpsCommand(\n\tsubcommand?: string,\n\targs: string[] = [],\n): Promise<void> {\n\tswitch (subcommand) {\n\t\tcase \"init\": {\n\t\t\tconst { handleInitCommand } = await import(\"./init.js\");\n\t\t\tawait handleInitCommand(args);\n\t\t\treturn;\n\t\t}\n\t\tcase \"login\":\n\t\t\tawait handleLogin();\n\t\t\treturn;\n\t\tcase \"logout\":\n\t\t\tawait handleLogout();\n\t\t\treturn;\n\t\tcase \"status\":\n\t\t\tawait handleStatus();\n\t\t\treturn;\n\t\tdefault:\n\t\t\tconsole.error(\n\t\t\t\tchalk.red(\n\t\t\t\t\t'Unknown evalops subcommand. Try \"maestro init\" for setup, or \"maestro evalops login\", \"logout\", or \"status\".',\n\t\t\t\t),\n\t\t\t);\n\t\t\tprocess.exit(1);\n\t}\n}\n\nasync function handleLogin(): Promise<void> {\n\tconsole.log(chalk.bold(\"Maestro EvalOps Login\"));\n\tawait login(\"evalops\", {\n\t\tonAuthUrl: (url) => {\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) => console.log(chalk.dim(status)),\n\t});\n\tconsole.log(chalk.green(\"EvalOps credentials saved successfully.\"));\n\tconsole.log(\n\t\tchalk.dim('Try \"maestro --provider evalops --model gpt-4o-mini\".'),\n\t);\n}\n\nasync function handleLogout(): Promise<void> {\n\tawait logout(\"evalops\");\n\tconsole.log(chalk.green(\"Removed stored EvalOps credentials.\"));\n}\n\nasync function handleStatus(): Promise<void> {\n\tif (!hasOAuthCredentials(\"evalops\")) {\n\t\tconsole.log(chalk.yellow(\"No stored EvalOps credentials.\"));\n\t\tconsole.log(\n\t\t\tchalk.dim('Run \"maestro evalops login\" to authenticate with EvalOps.'),\n\t\t);\n\t\treturn;\n\t}\n\n\tconst credentials = loadOAuthCredentials(\"evalops\");\n\tconst remainingMs = Math.max(\n\t\t0,\n\t\t(credentials?.expires ?? Date.now()) - Date.now(),\n\t);\n\tconst minutes = Math.round(remainingMs / 60_000);\n\tconst metadata = credentials?.metadata;\n\tconst agentMcp = getStoredEvalOpsAgentMcpMetadata();\n\tconst organizationId =\n\t\ttypeof metadata?.organizationId === \"string\"\n\t\t\t? metadata.organizationId\n\t\t\t: undefined;\n\tconst providerRef =\n\t\tmetadata?.providerRef &&\n\t\ttypeof metadata.providerRef === \"object\" &&\n\t\t!Array.isArray(metadata.providerRef)\n\t\t\t? (metadata.providerRef as Record<string, unknown>)\n\t\t\t: undefined;\n\n\tconsole.log(chalk.green(\"Stored EvalOps credentials detected.\"));\n\tif (organizationId) {\n\t\tconsole.log(chalk.dim(`Organization: ${organizationId}`));\n\t}\n\tif (providerRef) {\n\t\tconst provider =\n\t\t\ttypeof providerRef.provider === \"string\"\n\t\t\t\t? providerRef.provider\n\t\t\t\t: \"openai\";\n\t\tconst environment =\n\t\t\ttypeof providerRef.environment === \"string\"\n\t\t\t\t? providerRef.environment\n\t\t\t\t: \"prod\";\n\t\tconsole.log(chalk.dim(`Provider ref: ${provider}/${environment}`));\n\t}\n\tif (agentMcp) {\n\t\tconsole.log(chalk.green(\"EvalOps agent session configured.\"));\n\t\tconsole.log(chalk.dim(`MCP endpoint: ${agentMcp.endpoint}`));\n\t\tif (agentMcp.agentId) {\n\t\t\tconsole.log(chalk.dim(`Agent: ${agentMcp.agentId}`));\n\t\t}\n\t\tif (agentMcp.runId) {\n\t\t\tconsole.log(chalk.dim(`Run: ${agentMcp.runId}`));\n\t\t}\n\t\tif (agentMcp.keyPrefix) {\n\t\t\tconsole.log(chalk.dim(`API key: ${agentMcp.keyPrefix}`));\n\t\t}\n\t\tif (agentMcp.sessionExpiresAt) {\n\t\t\tconsole.log(chalk.dim(`Session expires: ${agentMcp.sessionExpiresAt}`));\n\t\t}\n\t} else {\n\t\tconsole.log(\n\t\t\tchalk.yellow('No EvalOps agent session yet. Run \"maestro init\".'),\n\t\t);\n\t}\n\tconsole.log(\n\t\tchalk.dim(\n\t\t\t`Access token expires in ~${minutes} minute${minutes === 1 ? \"\" : \"s\"} (auto-refresh enabled).`,\n\t\t),\n\t);\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type EvalOpsInitOptions } from "../../evalops/agent-bootstrap.js";
|
|
2
|
+
export declare function formatInitHelp(): string;
|
|
2
3
|
export declare function parseInitArgs(args: string[]): EvalOpsInitOptions;
|
|
3
4
|
export declare function handleInitCommand(args?: string[]): Promise<void>;
|
|
4
5
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,kBAAkB,EAEvB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,kBAAkB,EAEvB,MAAM,kCAAkC,CAAC;AAG1C,wBAAgB,cAAc,IAAI,MAAM,CAkBvC;AA4BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CA2EhE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE1E"}
|