@mutagent/cli 0.2.31 → 0.2.33

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.
Files changed (2) hide show
  1. package/dist/bin/cli.js +82 -11
  2. package/package.json +2 -2
package/dist/bin/cli.js CHANGED
@@ -21920,7 +21920,7 @@ Examples:
21920
21920
  ${chalk11.dim("$")} printf %s "$OPENAI_API_KEY" | mutagent providers add --provider openai --name "My OpenAI" --api-key-stdin
21921
21921
  ${chalk11.dim("$")} mutagent providers add --provider openai --name "My OpenAI" --api-key $OPENAI_API_KEY
21922
21922
  ${chalk11.dim("$")} mutagent providers add --provider azure --name "Azure GPT" --api-key $KEY \\
21923
- --hosted-family openai --resource-endpoint https://my.openai.azure.com --deployment-name gpt-5
21923
+ --hosted-family openai --resource-endpoint https://my.openai.azure.com --deployment-name gpt-5.6-sol
21924
21924
  ${chalk11.dim("$")} mutagent providers add --provider bedrock --name "Bedrock Claude" --api-key $KEY --region us-east-1
21925
21925
  ${chalk11.dim("$")} mutagent providers add --provider custom --name "My gateway" --api-key $KEY \\
21926
21926
  --base-url https://llm.example.com/v1 --api-format anthropic
@@ -22284,6 +22284,25 @@ var harnessProviderIdSchema = z2.string().min(1).max(100).regex(/^[a-zA-Z0-9][a-
22284
22284
  var api = z2.enum(["openai-completions", "openai-responses", "anthropic-messages"]);
22285
22285
  var rate = z2.number().nonnegative().max(1e9);
22286
22286
  var cost = z2.object({ input: rate, output: rate, cacheRead: rate, cacheWrite: rate }).strict();
22287
+ var count = z2.number().int().min(1).max(1e9);
22288
+ var inputLimits = z2.object({
22289
+ maxRequestBytes: count.optional(),
22290
+ images: z2.object({
22291
+ resize: z2.object({
22292
+ maxWidth: count.optional(),
22293
+ maxHeight: count.optional(),
22294
+ maxBytes: count.optional(),
22295
+ jpegQuality: z2.number().int().min(1).max(100).optional()
22296
+ }).strict().optional(),
22297
+ maxPerMessage: count.optional(),
22298
+ maxPerRequest: count.optional()
22299
+ }).strict().optional()
22300
+ }).strict();
22301
+ var promptCache = z2.object({
22302
+ short: z2.number().positive().max(1e9).optional(),
22303
+ long: z2.number().positive().max(1e9).optional()
22304
+ }).strict();
22305
+ var fallbackModel = z2.object({ provider: harnessProviderIdSchema, model: safeId, cost }).strict();
22287
22306
  var compat = z2.object({
22288
22307
  supportsStore: z2.boolean().optional(),
22289
22308
  supportsDeveloperRole: z2.boolean().optional(),
@@ -22296,7 +22315,6 @@ var compat = z2.object({
22296
22315
  supportsStrictMode: z2.boolean().optional(),
22297
22316
  supportsTemperature: z2.boolean().optional(),
22298
22317
  supportsStrictTools: z2.boolean().optional(),
22299
- supportsToolReferences: z2.boolean().optional(),
22300
22318
  supportsEagerToolInputStreaming: z2.boolean().optional(),
22301
22319
  supportsCacheControlOnTools: z2.boolean().optional(),
22302
22320
  forceAdaptiveThinking: z2.boolean().optional(),
@@ -22314,7 +22332,16 @@ var compat = z2.object({
22314
22332
  "qwen-chat-template",
22315
22333
  "string-thinking",
22316
22334
  "ant-ling"
22317
- ]).optional()
22335
+ ]).optional(),
22336
+ supportsFinishReason: z2.boolean().optional(),
22337
+ supportsMaxOutputTokens: z2.boolean().optional(),
22338
+ supportsMidConvoEffort: z2.boolean().optional(),
22339
+ vllmPriority: z2.number().min(-1e9).max(1e9).optional(),
22340
+ allowedFallbackModels: z2.array(fallbackModel).max(3).optional(),
22341
+ supportsToolReferences: z2.boolean().optional(),
22342
+ supportsToolSearch: z2.boolean().optional(),
22343
+ supportsAdditionalTools: z2.boolean().optional(),
22344
+ deferredToolsMode: z2.enum(["kimi"]).optional()
22318
22345
  }).strict();
22319
22346
  var thinkingLevelMap = z2.object({
22320
22347
  off: safeName.nullable().optional(),
@@ -22331,6 +22358,8 @@ var capabilities = {
22331
22358
  input: z2.array(z2.enum(["text", "image"])).min(1).max(2).optional(),
22332
22359
  contextWindow: z2.number().int().positive().max(1e9).optional(),
22333
22360
  maxTokens: z2.number().int().positive().max(1e9).optional(),
22361
+ inputLimits: inputLimits.optional(),
22362
+ promptCache: promptCache.optional(),
22334
22363
  thinkingLevelMap: thinkingLevelMap.optional(),
22335
22364
  compat: compat.optional()
22336
22365
  };
@@ -22385,6 +22414,48 @@ function parseHarnessModelConfig(value) {
22385
22414
  return;
22386
22415
  }
22387
22416
  }
22417
+ var SHOWN_FIELD = /^[a-z][A-Za-z]{0,47}$/;
22418
+ function fieldPath(path, secrets) {
22419
+ const known = secrets.filter((secret) => secret !== "");
22420
+ let label = "";
22421
+ path.forEach((segment, index) => {
22422
+ if (typeof segment === "number") {
22423
+ label += `[${String(segment)}]`;
22424
+ return;
22425
+ }
22426
+ const name = String(segment);
22427
+ const shown = SHOWN_FIELD.test(name) && !known.some((secret) => name.includes(secret) || secret.includes(name));
22428
+ const part = path[index - 1] === "modelOverrides" ? "<model id>" : shown ? name : "<withheld>";
22429
+ label += label === "" ? part : `.${part}`;
22430
+ });
22431
+ return label === "" ? "(root)" : label;
22432
+ }
22433
+ function describeHarnessConfigRefusal(value, secrets = []) {
22434
+ let text;
22435
+ try {
22436
+ text = JSON.stringify(value, (key, member) => {
22437
+ if (key === "prototype" || Object.hasOwn(Object.prototype, key))
22438
+ throw new Error("Unsafe configuration field");
22439
+ return member;
22440
+ });
22441
+ } catch {
22442
+ return "unsupported models.json field name (__proto__, constructor or prototype); remove it";
22443
+ }
22444
+ if (text !== undefined && Buffer.byteLength(text, "utf8") > HARNESS_CONFIG_MAX_BYTES) {
22445
+ return "unsupported models.json configuration: larger than 64 KiB; declare fewer models or overrides";
22446
+ }
22447
+ const parsed = harnessModelConfigSchema.safeParse(value);
22448
+ if (parsed.success)
22449
+ return;
22450
+ for (const issue of parsed.error.issues) {
22451
+ if (issue.code !== "unrecognized_keys")
22452
+ continue;
22453
+ const field = fieldPath([...issue.path, issue.keys[0] ?? ""], secrets);
22454
+ return `unsupported models.json field "${field}": not a pi 0.84.2 or 1.0.0 setting this transport ` + "carries (headers, companion credentials and nested endpoints never are); fix the spelling or remove it";
22455
+ }
22456
+ const field = fieldPath(parsed.error.issues[0]?.path ?? [], secrets);
22457
+ return `unsupported models.json value at "${field}": wrong type, out of bounds, or a duplicate or ` + "invalid id; correct it against the pi models.json schema";
22458
+ }
22388
22459
 
22389
22460
  // src/lib/harness-providers.ts
22390
22461
  var HARNESS_PROVIDER_METADATA_KEY = "harnessProvider";
@@ -22592,7 +22663,7 @@ function readLocalProviderStore(agentDir) {
22592
22663
  const { apiKey: _key, baseUrl: _url, ...native } = raw;
22593
22664
  const harnessConfig = parseHarnessModelConfig(native);
22594
22665
  const builtin = HARNESS_CATALOG_IDS.includes(name) || Object.hasOwn(HARNESS_CUSTOM_ENDPOINTS, name);
22595
- let unsupported = harnessConfig === undefined ? "unsupported or oversized models.json fields; headers, companion credentials and nested endpoints are not mirrored" : undefined;
22666
+ let unsupported = harnessConfig === undefined ? describeHarnessConfigRefusal(native, [...secrets]) : undefined;
22596
22667
  if (baseUrl) {
22597
22668
  try {
22598
22669
  const url = new URL(baseUrl);
@@ -29969,8 +30040,8 @@ function registerModelsCommand(helix) {
29969
30040
  Examples:
29970
30041
  ${chalk31.dim("$")} mutagent helix models
29971
30042
  ${chalk31.dim("$")} mutagent helix models --json
29972
- ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.2
29973
- ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.2 openai/gpt-5
30043
+ ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.3
30044
+ ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.3 openai/gpt-5.6-sol
29974
30045
 
29975
30046
  Lists the models your workspace's active LLM providers ('mutagent providers') give
29976
30047
  Helix in the cloud. Each id is provider/model: pass it as --model to 'mutagent helix'
@@ -29999,8 +30070,8 @@ AI Agent Directive:
29999
30070
  });
30000
30071
  models.command("default").description("Set the workspace default model for Helix in the cloud, and its fallbacks").argument("[models...]", "Model ids from 'mutagent helix models'; the first is the default").option("--clear", "Remove the default model and every fallback").addHelpText("after", `
30001
30072
  Examples:
30002
- ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.2
30003
- ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.2 openai/gpt-5
30073
+ ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.3
30074
+ ${chalk31.dim("$")} mutagent helix models default zai-coding-cn/glm-5.3 openai/gpt-5.6-sol
30004
30075
  ${chalk31.dim("$")} mutagent helix models default --clear
30005
30076
 
30006
30077
  Replaces the list. The first id is the default; later ids are used in order when
@@ -37515,8 +37586,8 @@ function rescopeProviderApiKeyFlag(rawArgs) {
37515
37586
  }
37516
37587
  // src/commands/helix/helix-surface.json
37517
37588
  var helix_surface_default = {
37518
- helixVersion: "0.2.2",
37519
- harnessVersion: "0.84.2",
37589
+ helixVersion: "0.3.0",
37590
+ harnessVersion: "1.0.0",
37520
37591
  launcher: {
37521
37592
  commands: [
37522
37593
  "agent",
@@ -38029,4 +38100,4 @@ if (process.env.CLI_VERSION) {
38029
38100
  }
38030
38101
  runCli(process.argv.slice(2), cliVersion);
38031
38102
 
38032
- //# debugId=B78FA1E6E4FCE6E164756E2164756E21
38103
+ //# debugId=B38C807312D3A9DA64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutagent/cli",
3
- "version": "0.2.31",
3
+ "version": "0.2.33",
4
4
  "description": "Bun-native CLI for the MutagenT AI platform - auth, provider config, and lifecycle-tool installer for AI-native workflows",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@inquirer/prompts": "^8.7.2",
48
- "@mutagent/sdk": "0.8.16",
48
+ "@mutagent/sdk": "0.8.17",
49
49
  "@sinclair/typebox": "^0.34.0",
50
50
  "chalk": "^5.3.0",
51
51
  "commander": "^12.1.0",