drizzy-agent 0.6.0-beta.2 → 0.6.0

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.
@@ -1,6 +1,7 @@
1
1
  export declare function applyModelResolution(input: {
2
2
  uiSelectedModel?: string;
3
3
  userModel?: string;
4
+ computedDefaultModel?: string;
4
5
  requirement?: {
5
6
  fallbackChain?: {
6
7
  providers: string[];
@@ -1,2 +1,2 @@
1
1
  import type { InstallArgs } from "./types";
2
- export declare function runCliInstaller(args: InstallArgs, version: string): Promise<number>;
2
+ export declare function runCliInstaller(args: InstallArgs): Promise<number>;
@@ -1,2 +1,2 @@
1
1
  import type { ConfigMergeResult } from "../types";
2
- export declare function addPluginToOpenCodeConfig(currentVersion: string): Promise<ConfigMergeResult>;
2
+ export declare function addPluginToOpenCodeConfig(): Promise<ConfigMergeResult>;
@@ -1 +1 @@
1
- export declare function getPluginNameWithVersion(currentVersion: string): Promise<string>;
1
+ export declare function getPluginNameWithVersion(): string;
package/dist/cli/index.js CHANGED
@@ -2315,47 +2315,11 @@ var configContext = null;
2315
2315
  var init_config_context = __esm(() => {
2316
2316
  init_opencode_config_dir();
2317
2317
  });
2318
-
2319
- // src/cli/config-manager/npm-dist-tags.ts
2320
- async function fetchNpmDistTags(packageName) {
2321
- try {
2322
- const res = await fetch(`https://registry.npmjs.org/-/package/${encodeURIComponent(packageName)}/dist-tags`, {
2323
- signal: AbortSignal.timeout(NPM_FETCH_TIMEOUT_MS)
2324
- });
2325
- if (!res.ok)
2326
- return null;
2327
- const data = await res.json();
2328
- return data;
2329
- } catch {
2330
- return null;
2331
- }
2332
- }
2333
- var NPM_FETCH_TIMEOUT_MS = 5000;
2334
-
2335
2318
  // src/cli/config-manager/plugin-name-with-version.ts
2336
- function getFallbackEntry(version) {
2337
- const prereleaseMatch = version.match(/-([a-zA-Z][a-zA-Z0-9-]*)(?:\.|$)/);
2338
- if (prereleaseMatch) {
2339
- return `${PACKAGE_NAME}@${prereleaseMatch[1]}`;
2340
- }
2319
+ function getPluginNameWithVersion() {
2341
2320
  return PACKAGE_NAME;
2342
2321
  }
2343
- async function getPluginNameWithVersion(currentVersion) {
2344
- const distTags = await fetchNpmDistTags(PACKAGE_NAME);
2345
- if (distTags) {
2346
- const allTags = new Set([...PRIORITIZED_TAGS, ...Object.keys(distTags)]);
2347
- for (const tag of allTags) {
2348
- if (distTags[tag] === currentVersion) {
2349
- return `${PACKAGE_NAME}@${tag}`;
2350
- }
2351
- }
2352
- }
2353
- return getFallbackEntry(currentVersion);
2354
- }
2355
- var PACKAGE_NAME = "drizzy-agent", PRIORITIZED_TAGS;
2356
- var init_plugin_name_with_version = __esm(() => {
2357
- PRIORITIZED_TAGS = ["latest", "beta", "next"];
2358
- });
2322
+ var PACKAGE_NAME = "drizzy-agent";
2359
2323
 
2360
2324
  // src/cli/config-manager/ensure-config-directory-exists.ts
2361
2325
  import { existsSync as existsSync2, mkdirSync } from "fs";
@@ -3344,7 +3308,7 @@ var init_parse_opencode_config_file = __esm(() => {
3344
3308
 
3345
3309
  // src/cli/config-manager/add-plugin-to-opencode-config.ts
3346
3310
  import { readFileSync as readFileSync3, writeFileSync } from "fs";
3347
- async function addPluginToOpenCodeConfig(currentVersion) {
3311
+ async function addPluginToOpenCodeConfig() {
3348
3312
  try {
3349
3313
  ensureConfigDirectoryExists();
3350
3314
  } catch (err) {
@@ -3355,7 +3319,7 @@ async function addPluginToOpenCodeConfig(currentVersion) {
3355
3319
  };
3356
3320
  }
3357
3321
  const { format: format2, path } = detectConfigFormat();
3358
- const pluginEntry = await getPluginNameWithVersion(currentVersion);
3322
+ const pluginEntry = getPluginNameWithVersion();
3359
3323
  try {
3360
3324
  if (format2 === "none") {
3361
3325
  const config2 = { plugin: [pluginEntry] };
@@ -3418,7 +3382,6 @@ var init_add_plugin_to_opencode_config = __esm(() => {
3418
3382
  init_ensure_config_directory_exists();
3419
3383
  init_opencode_config_format();
3420
3384
  init_parse_opencode_config_file();
3421
- init_plugin_name_with_version();
3422
3385
  });
3423
3386
 
3424
3387
  // src/shared/install-defaults-contract.ts
@@ -3460,8 +3423,8 @@ var init_agent_model_defaults = __esm(() => {
3460
3423
  },
3461
3424
  gptcoder: {
3462
3425
  chain: [
3463
- { providers: ["openai", "venice", "opencode"], model: "gpt-5.4", variant: "medium" },
3464
- { providers: ["github-copilot"], model: "gpt-5.4", variant: "medium" }
3426
+ { providers: ["openai", "venice", "opencode"], model: "gpt-5.3-codex", variant: "medium" },
3427
+ { providers: ["github-copilot"], model: "gpt-5.3-codex", variant: "medium" }
3465
3428
  ],
3466
3429
  includeInInstall: true,
3467
3430
  requiresAnyProvider: ["openai", "github-copilot", "venice", "opencode"]
@@ -3500,8 +3463,8 @@ var init_agent_model_defaults = __esm(() => {
3500
3463
  explore: {
3501
3464
  chain: [
3502
3465
  { providers: ["github-copilot"], model: "grok-code-fast-1" },
3503
- { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true },
3504
3466
  { providers: ["anthropic", "opencode"], model: "claude-haiku-4-5" },
3467
+ { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true },
3505
3468
  { providers: ["opencode"], model: "gpt-5-nano", alwaysAvailable: true }
3506
3469
  ],
3507
3470
  includeInInstall: true,
@@ -3530,7 +3493,7 @@ var init_agent_model_defaults = __esm(() => {
3530
3493
  includeInInstall: true
3531
3494
  },
3532
3495
  "coder-junior": {
3533
- chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" }],
3496
+ chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.3-codex", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" }],
3534
3497
  includeInInstall: false
3535
3498
  },
3536
3499
  researcher: {
@@ -3611,14 +3574,14 @@ var init_agent_model_defaults = __esm(() => {
3611
3574
  chain: [
3612
3575
  { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" },
3613
3576
  { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" },
3614
- { providers: OPENAI_NATIVE_PROVIDERS, model: "gpt-5.4", variant: "medium" },
3577
+ { providers: OPENAI_NATIVE_PROVIDERS, model: "gpt-5.3-codex", variant: "medium" },
3615
3578
  { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" },
3616
3579
  { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true }
3617
3580
  ],
3618
3581
  includeInInstall: true
3619
3582
  },
3620
3583
  "unspecified-high": {
3621
- chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-opus-4-6", variant: "max" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "high" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" }],
3584
+ chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-opus-4-6", variant: "max" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.3-codex", variant: "high" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" }],
3622
3585
  includeInInstall: true
3623
3586
  },
3624
3587
  writing: {
@@ -3663,14 +3626,18 @@ var init_provider_model_id_transform = () => {};
3663
3626
 
3664
3627
  // src/cli/fallback-chain-resolution.ts
3665
3628
  function resolveModelFromChain(fallbackChain, availability) {
3629
+ let lastResort = null;
3666
3630
  for (const entry of fallbackChain) {
3667
3631
  if (entry.alwaysAvailable) {
3668
- const provider = entry.providers[0];
3669
- const transformedModel = transformModelForProvider(provider, entry.model);
3670
- return {
3671
- model: `${provider}/${transformedModel}`,
3672
- variant: entry.variant
3673
- };
3632
+ if (!lastResort) {
3633
+ const provider = entry.providers[0];
3634
+ const transformedModel = transformModelForProvider(provider, entry.model);
3635
+ lastResort = {
3636
+ model: `${provider}/${transformedModel}`,
3637
+ variant: entry.variant
3638
+ };
3639
+ }
3640
+ continue;
3674
3641
  }
3675
3642
  for (const provider of entry.providers) {
3676
3643
  if (isProviderAvailable(provider, availability)) {
@@ -3682,7 +3649,7 @@ function resolveModelFromChain(fallbackChain, availability) {
3682
3649
  }
3683
3650
  }
3684
3651
  }
3685
- return null;
3652
+ return lastResort;
3686
3653
  }
3687
3654
  function getCoderFallbackChain() {
3688
3655
  return CLI_AGENT_MODEL_REQUIREMENTS.coder.fallbackChain;
@@ -4402,7 +4369,6 @@ var init_detect_and_remove_oh_my_opencode = __esm(() => {
4402
4369
  // src/cli/config-manager.ts
4403
4370
  var init_config_manager = __esm(() => {
4404
4371
  init_config_context();
4405
- init_plugin_name_with_version();
4406
4372
  init_add_plugin_to_opencode_config();
4407
4373
  init_generate_drizzy_config();
4408
4374
  init_write_drizzy_config();
@@ -5438,106 +5404,6 @@ var {
5438
5404
  Option,
5439
5405
  Help
5440
5406
  } = import__.default;
5441
- // package.json
5442
- var package_default = {
5443
- name: "drizzy-agent",
5444
- version: "0.6.0-beta.2",
5445
- description: "DrizzyAgent - AI agent plugin for OpenCode",
5446
- main: "dist/index.js",
5447
- types: "dist/index.d.ts",
5448
- type: "module",
5449
- bin: {
5450
- "drizzy-agent": "bin/drizzy-agent.js"
5451
- },
5452
- files: [
5453
- "dist",
5454
- "bin",
5455
- "postinstall.mjs"
5456
- ],
5457
- exports: {
5458
- ".": {
5459
- types: "./dist/index.d.ts",
5460
- import: "./dist/index.js"
5461
- },
5462
- "./schema.json": "./dist/drizzy-agent.schema.json"
5463
- },
5464
- scripts: {
5465
- build: "bun build src/index.ts --outdir dist --target bun --format esm --external @ast-grep/napi && tsc --emitDeclarationOnly && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --external @ast-grep/napi && bun run build:schema",
5466
- "build:all": "bun run build && bun run build:binaries",
5467
- "build:binaries": "bun run script/build-binaries.ts",
5468
- "build:schema": "bun run script/build-schema.ts",
5469
- clean: "rm -rf dist",
5470
- prepare: "bun run build",
5471
- postinstall: "node postinstall.mjs",
5472
- prepublishOnly: "bun run clean && bun run build",
5473
- typecheck: "tsc --noEmit",
5474
- test: "bun test"
5475
- },
5476
- keywords: [
5477
- "opencode",
5478
- "plugin",
5479
- "oracle",
5480
- "librarian",
5481
- "agents",
5482
- "ai",
5483
- "llm"
5484
- ],
5485
- author: "YeonGyu-Kim",
5486
- license: "SUL-1.0",
5487
- repository: {
5488
- type: "git",
5489
- url: "git+https://github.com/AndreDalwin/DrizzyAgent.git"
5490
- },
5491
- bugs: {
5492
- url: "https://github.com/AndreDalwin/DrizzyAgent/issues"
5493
- },
5494
- homepage: "https://github.com/AndreDalwin/DrizzyAgent#readme",
5495
- dependencies: {
5496
- "@ast-grep/cli": "^0.41.1",
5497
- "@ast-grep/napi": "^0.41.1",
5498
- "@clack/prompts": "^0.11.0",
5499
- "@code-yeongyu/comment-checker": "^0.7.0",
5500
- "@modelcontextprotocol/sdk": "^1.25.2",
5501
- "@opencode-ai/plugin": "^1.2.24",
5502
- "@opencode-ai/sdk": "^1.2.24",
5503
- commander: "^14.0.2",
5504
- "detect-libc": "^2.0.0",
5505
- diff: "^8.0.3",
5506
- "js-yaml": "^4.1.1",
5507
- "jsonc-parser": "^3.3.1",
5508
- picocolors: "^1.1.1",
5509
- picomatch: "^4.0.2",
5510
- "vscode-jsonrpc": "^8.2.0",
5511
- zod: "^4.1.8"
5512
- },
5513
- devDependencies: {
5514
- "@types/js-yaml": "^4.0.9",
5515
- "@types/picomatch": "^3.0.2",
5516
- "bun-types": "1.3.10",
5517
- typescript: "^5.7.3"
5518
- },
5519
- optionalDependencies: {
5520
- "drizzy-agent-darwin-arm64": "0.6.0-beta.2",
5521
- "drizzy-agent-darwin-x64": "0.6.0-beta.2",
5522
- "drizzy-agent-darwin-x64-baseline": "0.6.0-beta.2",
5523
- "drizzy-agent-linux-arm64": "0.6.0-beta.2",
5524
- "drizzy-agent-linux-arm64-musl": "0.6.0-beta.2",
5525
- "drizzy-agent-linux-x64": "0.6.0-beta.2",
5526
- "drizzy-agent-linux-x64-baseline": "0.6.0-beta.2",
5527
- "drizzy-agent-linux-x64-musl": "0.6.0-beta.2",
5528
- "drizzy-agent-linux-x64-musl-baseline": "0.6.0-beta.2",
5529
- "drizzy-agent-windows-x64": "0.6.0-beta.2",
5530
- "drizzy-agent-windows-x64-baseline": "0.6.0-beta.2"
5531
- },
5532
- overrides: {
5533
- "@opencode-ai/sdk": "^1.2.24"
5534
- },
5535
- trustedDependencies: [
5536
- "@ast-grep/cli",
5537
- "@ast-grep/napi",
5538
- "@code-yeongyu/comment-checker"
5539
- ]
5540
- };
5541
5407
 
5542
5408
  // src/cli/cli-installer.ts
5543
5409
  init_config_manager();
@@ -5697,7 +5563,7 @@ function detectedToInitialValues(detected) {
5697
5563
  }
5698
5564
 
5699
5565
  // src/cli/cli-installer.ts
5700
- async function runCliInstaller(args, version) {
5566
+ async function runCliInstaller(args) {
5701
5567
  const validation = validateNonTuiArgs(args);
5702
5568
  if (!validation.valid) {
5703
5569
  printHeader(false);
@@ -5758,7 +5624,7 @@ async function runCliInstaller(args, version) {
5758
5624
  }
5759
5625
  const config = argsToConfig(args);
5760
5626
  printStep(step++, totalSteps + (omoDetected.isInstalled ? 1 : 0), "Adding drizzy-agent plugin...");
5761
- const pluginResult = await addPluginToOpenCodeConfig(version);
5627
+ const pluginResult = await addPluginToOpenCodeConfig();
5762
5628
  if (!pluginResult.success) {
5763
5629
  printError(`Failed: ${pluginResult.error}`);
5764
5630
  return 1;
@@ -6529,7 +6395,7 @@ async function promptOhMyOpencodeConfirmation(detected) {
6529
6395
  }
6530
6396
 
6531
6397
  // src/cli/tui-installer.ts
6532
- async function runTuiInstaller(args, version) {
6398
+ async function runTuiInstaller(args) {
6533
6399
  if (!process.stdin.isTTY || !process.stdout.isTTY) {
6534
6400
  console.error("Error: Interactive installer requires a TTY. Use --non-interactive or set environment variables directly.");
6535
6401
  return 1;
@@ -6584,7 +6450,7 @@ async function runTuiInstaller(args, version) {
6584
6450
  if (!config)
6585
6451
  return 1;
6586
6452
  spinner.start("Adding drizzy-agent to OpenCode config");
6587
- const pluginResult = await addPluginToOpenCodeConfig(version);
6453
+ const pluginResult = await addPluginToOpenCodeConfig();
6588
6454
  if (!pluginResult.success) {
6589
6455
  spinner.stop(`Failed to add plugin: ${pluginResult.error}`);
6590
6456
  Se(import_picocolors5.default.red("Installation failed."));
@@ -6632,9 +6498,8 @@ async function runTuiInstaller(args, version) {
6632
6498
  }
6633
6499
 
6634
6500
  // src/cli/install.ts
6635
- var VERSION = package_default.version;
6636
6501
  async function install(args) {
6637
- return args.tui ? runTuiInstaller(args, VERSION) : runCliInstaller(args, VERSION);
6502
+ return args.tui ? runTuiInstaller(args) : runCliInstaller(args);
6638
6503
  }
6639
6504
 
6640
6505
  // src/cli/run/runner.ts
@@ -29418,11 +29283,111 @@ function createMcpOAuthCommand() {
29418
29283
  mcp.addCommand(oauth);
29419
29284
  return mcp;
29420
29285
  }
29286
+ // package.json
29287
+ var package_default = {
29288
+ name: "drizzy-agent",
29289
+ version: "0.6.0",
29290
+ description: "DrizzyAgent - AI agent plugin for OpenCode",
29291
+ main: "dist/index.js",
29292
+ types: "dist/index.d.ts",
29293
+ type: "module",
29294
+ bin: {
29295
+ "drizzy-agent": "bin/drizzy-agent.js"
29296
+ },
29297
+ files: [
29298
+ "dist",
29299
+ "bin",
29300
+ "postinstall.mjs"
29301
+ ],
29302
+ exports: {
29303
+ ".": {
29304
+ types: "./dist/index.d.ts",
29305
+ import: "./dist/index.js"
29306
+ },
29307
+ "./schema.json": "./dist/drizzy-agent.schema.json"
29308
+ },
29309
+ scripts: {
29310
+ build: "bun build src/index.ts --outdir dist --target bun --format esm --external @ast-grep/napi && tsc --emitDeclarationOnly && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --external @ast-grep/napi && bun run build:schema",
29311
+ "build:all": "bun run build && bun run build:binaries",
29312
+ "build:binaries": "bun run script/build-binaries.ts",
29313
+ "build:schema": "bun run script/build-schema.ts",
29314
+ clean: "rm -rf dist",
29315
+ prepare: "bun run build",
29316
+ postinstall: "node postinstall.mjs",
29317
+ prepublishOnly: "bun run clean && bun run build",
29318
+ typecheck: "tsc --noEmit",
29319
+ test: "bun test"
29320
+ },
29321
+ keywords: [
29322
+ "opencode",
29323
+ "plugin",
29324
+ "oracle",
29325
+ "librarian",
29326
+ "agents",
29327
+ "ai",
29328
+ "llm"
29329
+ ],
29330
+ author: "YeonGyu-Kim",
29331
+ license: "SUL-1.0",
29332
+ repository: {
29333
+ type: "git",
29334
+ url: "git+https://github.com/AndreDalwin/DrizzyAgent.git"
29335
+ },
29336
+ bugs: {
29337
+ url: "https://github.com/AndreDalwin/DrizzyAgent/issues"
29338
+ },
29339
+ homepage: "https://github.com/AndreDalwin/DrizzyAgent#readme",
29340
+ dependencies: {
29341
+ "@ast-grep/cli": "^0.41.1",
29342
+ "@ast-grep/napi": "^0.41.1",
29343
+ "@clack/prompts": "^0.11.0",
29344
+ "@code-yeongyu/comment-checker": "^0.7.0",
29345
+ "@modelcontextprotocol/sdk": "^1.25.2",
29346
+ "@opencode-ai/plugin": "^1.2.24",
29347
+ "@opencode-ai/sdk": "^1.2.24",
29348
+ commander: "^14.0.2",
29349
+ "detect-libc": "^2.0.0",
29350
+ diff: "^8.0.3",
29351
+ "js-yaml": "^4.1.1",
29352
+ "jsonc-parser": "^3.3.1",
29353
+ picocolors: "^1.1.1",
29354
+ picomatch: "^4.0.2",
29355
+ "vscode-jsonrpc": "^8.2.0",
29356
+ zod: "^4.1.8"
29357
+ },
29358
+ devDependencies: {
29359
+ "@types/js-yaml": "^4.0.9",
29360
+ "@types/picomatch": "^3.0.2",
29361
+ "bun-types": "1.3.10",
29362
+ typescript: "^5.7.3"
29363
+ },
29364
+ optionalDependencies: {
29365
+ "drizzy-agent-darwin-arm64": "0.6.0",
29366
+ "drizzy-agent-darwin-x64": "0.6.0",
29367
+ "drizzy-agent-darwin-x64-baseline": "0.6.0",
29368
+ "drizzy-agent-linux-arm64": "0.6.0",
29369
+ "drizzy-agent-linux-arm64-musl": "0.6.0",
29370
+ "drizzy-agent-linux-x64": "0.6.0",
29371
+ "drizzy-agent-linux-x64-baseline": "0.6.0",
29372
+ "drizzy-agent-linux-x64-musl": "0.6.0",
29373
+ "drizzy-agent-linux-x64-musl-baseline": "0.6.0",
29374
+ "drizzy-agent-windows-x64": "0.6.0",
29375
+ "drizzy-agent-windows-x64-baseline": "0.6.0"
29376
+ },
29377
+ overrides: {
29378
+ "@opencode-ai/sdk": "^1.2.24"
29379
+ },
29380
+ trustedDependencies: [
29381
+ "@ast-grep/cli",
29382
+ "@ast-grep/napi",
29383
+ "@code-yeongyu/comment-checker"
29384
+ ]
29385
+ };
29421
29386
 
29422
29387
  // src/cli/cli-program.ts
29423
- var VERSION2 = package_default.version;
29388
+ var VERSION = package_default.version;
29424
29389
  var program2 = new Command;
29425
- program2.name("drizzy-agent").description("DrizzyAgent for OpenCode - multi-model orchestration, tools, and workflows").version(VERSION2, "-v, --version", "Show version number").enablePositionalOptions();
29390
+ program2.name("drizzy-agent").description("DrizzyAgent for OpenCode - multi-model orchestration, tools, and workflows").version(VERSION, "-v, --version", "Show version number").enablePositionalOptions();
29426
29391
  program2.command("install").description("Install and configure DrizzyAgent with interactive setup").option("--no-tui", "Run in non-interactive mode (requires all options)").option("--claude <value>", "Claude subscription: no, yes, max20").option("--openai <value>", "OpenAI/ChatGPT subscription: no, yes (default: no)").option("--gemini <value>", "Gemini integration: no, yes").option("--copilot <value>", "GitHub Copilot subscription: no, yes").option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)").option("--zai-coding-plan <value>", "Z.ai Coding Plan subscription: no, yes (default: no)").option("--kimi-for-coding <value>", "Kimi For Coding subscription: no, yes (default: no)").option("--skip-auth", "Skip authentication setup hints").addHelpText("after", `
29427
29392
  Examples:
29428
29393
  $ bunx drizzy-agent install
@@ -29532,7 +29497,7 @@ Examples:
29532
29497
  process.exit(exitCode);
29533
29498
  });
29534
29499
  program2.command("version").description("Show version information").action(() => {
29535
- console.log(`drizzy-agent v${VERSION2}`);
29500
+ console.log(`drizzy-agent v${VERSION}`);
29536
29501
  });
29537
29502
  program2.addCommand(createMcpOAuthCommand());
29538
29503
  function runCli() {
@@ -1,2 +1,2 @@
1
1
  import type { InstallArgs } from "./types";
2
- export declare function runTuiInstaller(args: InstallArgs, version: string): Promise<number>;
2
+ export declare function runTuiInstaller(args: InstallArgs): Promise<number>;
@@ -1,4 +1 @@
1
- export declare function mapClaudeModelToOpenCode(model: string | undefined): {
2
- providerID: string;
3
- modelID: string;
4
- } | undefined;
1
+ export declare function mapClaudeModelToOpenCode(model: string | undefined): string | undefined;
@@ -1,10 +1,7 @@
1
1
  import type { AgentConfig } from "@opencode-ai/sdk";
2
2
  export type AgentScope = "user" | "project";
3
3
  export type ClaudeCodeAgentConfig = Omit<AgentConfig, "model"> & {
4
- model?: string | {
5
- providerID: string;
6
- modelID: string;
7
- };
4
+ model?: string;
8
5
  };
9
6
  export interface AgentFrontmatter {
10
7
  name?: string;
package/dist/index.js CHANGED
@@ -16693,8 +16693,8 @@ var AGENT_MODEL_DEFAULTS = {
16693
16693
  },
16694
16694
  gptcoder: {
16695
16695
  chain: [
16696
- { providers: ["openai", "venice", "opencode"], model: "gpt-5.4", variant: "medium" },
16697
- { providers: ["github-copilot"], model: "gpt-5.4", variant: "medium" }
16696
+ { providers: ["openai", "venice", "opencode"], model: "gpt-5.3-codex", variant: "medium" },
16697
+ { providers: ["github-copilot"], model: "gpt-5.3-codex", variant: "medium" }
16698
16698
  ],
16699
16699
  includeInInstall: true,
16700
16700
  requiresAnyProvider: ["openai", "github-copilot", "venice", "opencode"]
@@ -16733,8 +16733,8 @@ var AGENT_MODEL_DEFAULTS = {
16733
16733
  explore: {
16734
16734
  chain: [
16735
16735
  { providers: ["github-copilot"], model: "grok-code-fast-1" },
16736
- { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true },
16737
16736
  { providers: ["anthropic", "opencode"], model: "claude-haiku-4-5" },
16737
+ { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true },
16738
16738
  { providers: ["opencode"], model: "gpt-5-nano", alwaysAvailable: true }
16739
16739
  ],
16740
16740
  includeInInstall: true,
@@ -16763,7 +16763,7 @@ var AGENT_MODEL_DEFAULTS = {
16763
16763
  includeInInstall: true
16764
16764
  },
16765
16765
  "coder-junior": {
16766
- chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" }],
16766
+ chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.3-codex", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" }],
16767
16767
  includeInInstall: false
16768
16768
  },
16769
16769
  researcher: {
@@ -16844,14 +16844,14 @@ var CATEGORY_MODEL_DEFAULTS = {
16844
16844
  chain: [
16845
16845
  { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" },
16846
16846
  { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" },
16847
- { providers: OPENAI_NATIVE_PROVIDERS, model: "gpt-5.4", variant: "medium" },
16847
+ { providers: OPENAI_NATIVE_PROVIDERS, model: "gpt-5.3-codex", variant: "medium" },
16848
16848
  { providers: GEMINI_PROVIDERS, model: "gemini-3-flash" },
16849
16849
  { providers: ["opencode"], model: "minimax-m2.5-free", alwaysAvailable: true }
16850
16850
  ],
16851
16851
  includeInInstall: true
16852
16852
  },
16853
16853
  "unspecified-high": {
16854
- chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-opus-4-6", variant: "max" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "high" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" }],
16854
+ chain: [{ providers: CLAUDE_PROVIDERS, model: "claude-opus-4-6", variant: "max" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.3-codex", variant: "high" }, { providers: ["zai-coding-plan", "opencode"], model: "glm-5" }, { providers: ["kimi-for-coding"], model: "k2p5" }, { providers: KIMI_K25_PROVIDERS, model: "kimi-k2.5" }],
16855
16855
  includeInInstall: true
16856
16856
  },
16857
16857
  writing: {
@@ -19059,23 +19059,6 @@ import { existsSync as existsSync16, readdirSync as readdirSync5, readFileSync a
19059
19059
  import { basename as basename2, join as join20 } from "path";
19060
19060
  init_logger();
19061
19061
 
19062
- // src/shared/model-format-normalizer.ts
19063
- function normalizeModelFormat(model) {
19064
- if (!model) {
19065
- return;
19066
- }
19067
- if (typeof model === "object" && "providerID" in model && "modelID" in model) {
19068
- return { providerID: model.providerID, modelID: model.modelID };
19069
- }
19070
- if (typeof model === "string") {
19071
- const parts = model.split("/");
19072
- if (parts.length >= 2) {
19073
- return { providerID: parts[0], modelID: parts.slice(1).join("/") };
19074
- }
19075
- }
19076
- return;
19077
- }
19078
-
19079
19062
  // src/features/claude-code-agent-loader/claude-model-mapper.ts
19080
19063
  var ANTHROPIC_PREFIX = "anthropic/";
19081
19064
  var CLAUDE_CODE_ALIAS_MAP = new Map([
@@ -19103,8 +19086,7 @@ function mapClaudeModelString(model) {
19103
19086
  return;
19104
19087
  }
19105
19088
  function mapClaudeModelToOpenCode(model) {
19106
- const mappedModel = mapClaudeModelString(model);
19107
- return mappedModel ? normalizeModelFormat(mappedModel) : undefined;
19089
+ return mapClaudeModelString(model);
19108
19090
  }
19109
19091
 
19110
19092
  // src/features/claude-code-plugin-loader/agent-loader.ts
@@ -19381,14 +19363,18 @@ function isProviderAvailable(provider, availability) {
19381
19363
  }
19382
19364
  // src/cli/fallback-chain-resolution.ts
19383
19365
  function resolveModelFromChain(fallbackChain, availability) {
19366
+ let lastResort = null;
19384
19367
  for (const entry of fallbackChain) {
19385
19368
  if (entry.alwaysAvailable) {
19386
- const provider = entry.providers[0];
19387
- const transformedModel = transformModelForProvider(provider, entry.model);
19388
- return {
19389
- model: `${provider}/${transformedModel}`,
19390
- variant: entry.variant
19391
- };
19369
+ if (!lastResort) {
19370
+ const provider = entry.providers[0];
19371
+ const transformedModel = transformModelForProvider(provider, entry.model);
19372
+ lastResort = {
19373
+ model: `${provider}/${transformedModel}`,
19374
+ variant: entry.variant
19375
+ };
19376
+ }
19377
+ continue;
19392
19378
  }
19393
19379
  for (const provider of entry.providers) {
19394
19380
  if (isProviderAvailable(provider, availability)) {
@@ -19400,7 +19386,7 @@ function resolveModelFromChain(fallbackChain, availability) {
19400
19386
  }
19401
19387
  }
19402
19388
  }
19403
- return null;
19389
+ return lastResort;
19404
19390
  }
19405
19391
  function getCoderFallbackChain() {
19406
19392
  return CLI_AGENT_MODEL_REQUIREMENTS.coder.fallbackChain;
@@ -74512,6 +74498,23 @@ Available categories: ${categoryNames.join(", ")}`
74512
74498
  fallbackChain: configuredFallbackChain ?? requirement?.fallbackChain
74513
74499
  };
74514
74500
  }
74501
+ // src/shared/model-format-normalizer.ts
74502
+ function normalizeModelFormat(model) {
74503
+ if (!model) {
74504
+ return;
74505
+ }
74506
+ if (typeof model === "object" && "providerID" in model && "modelID" in model) {
74507
+ return { providerID: model.providerID, modelID: model.modelID };
74508
+ }
74509
+ if (typeof model === "string") {
74510
+ const parts = model.split("/");
74511
+ if (parts.length >= 2) {
74512
+ return { providerID: parts[0], modelID: parts.slice(1).join("/") };
74513
+ }
74514
+ }
74515
+ return;
74516
+ }
74517
+
74515
74518
  // src/tools/delegate-task/subagent-resolver.ts
74516
74519
  init_logger();
74517
74520
  async function resolveSubagentExecution(args, executorCtx, parentAgent, categoryExamples) {
@@ -92446,9 +92449,9 @@ function applyEnvironmentContext(config4, directory, options = {}) {
92446
92449
 
92447
92450
  // src/agents/builtin-agents/model-resolution.ts
92448
92451
  function applyModelResolution(input) {
92449
- const { uiSelectedModel, userModel, requirement, availableModels, systemDefaultModel } = input;
92452
+ const { uiSelectedModel, userModel, computedDefaultModel, requirement, availableModels, systemDefaultModel } = input;
92450
92453
  return resolveModelPipeline({
92451
- intent: { uiSelectedModel, userModel },
92454
+ intent: { uiSelectedModel, userModel, categoryDefaultModel: computedDefaultModel },
92452
92455
  constraints: { availableModels },
92453
92456
  policy: { fallbackChain: requirement?.fallbackChain, systemDefaultModel }
92454
92457
  });
@@ -92500,6 +92503,7 @@ function collectPendingBuiltinAgents(input) {
92500
92503
  continue;
92501
92504
  const agentConfigKey = getAgentConfigKey(agentName);
92502
92505
  const override = getExplicitAgentOverride(agentOverrides, agentConfigKey);
92506
+ const effectiveOverride = getEffectiveAgentOverride(agentOverrides, agentConfigKey);
92503
92507
  const requirement = AGENT_MODEL_REQUIREMENTS[agentConfigKey];
92504
92508
  if (requirement?.requiresModel && availableModels) {
92505
92509
  if (!isModelAvailable(requirement.requiresModel, availableModels)) {
@@ -92510,6 +92514,7 @@ function collectPendingBuiltinAgents(input) {
92510
92514
  let resolution = applyModelResolution({
92511
92515
  uiSelectedModel: isPrimaryAgent && !override?.model ? uiSelectedModel : undefined,
92512
92516
  userModel: override?.model,
92517
+ computedDefaultModel: effectiveOverride?.model,
92513
92518
  requirement,
92514
92519
  availableModels,
92515
92520
  systemDefaultModel
@@ -92609,6 +92614,7 @@ function maybeCreateGptcoderConfig(input) {
92609
92614
  if (disabledAgents.includes("gptcoder"))
92610
92615
  return;
92611
92616
  const gptcoderOverride = getExplicitAgentOverride(agentOverrides, "gptcoder");
92617
+ const effectiveGptcoderOverride = getEffectiveAgentOverride(agentOverrides, "gptcoder");
92612
92618
  const gptcoderRequirement = AGENT_MODEL_REQUIREMENTS["gptcoder"];
92613
92619
  const hasGptcoderExplicitConfig = hasExplicitAgentOverride(agentOverrides, "gptcoder");
92614
92620
  const hasRequiredProvider = !gptcoderRequirement?.requiresProvider || hasGptcoderExplicitConfig || isFirstRunNoCache || isAnyProviderConnected(gptcoderRequirement.requiresProvider, availableModels);
@@ -92616,6 +92622,7 @@ function maybeCreateGptcoderConfig(input) {
92616
92622
  return;
92617
92623
  let gptcoderResolution = applyModelResolution({
92618
92624
  userModel: gptcoderOverride?.model,
92625
+ computedDefaultModel: effectiveGptcoderOverride?.model,
92619
92626
  requirement: gptcoderRequirement,
92620
92627
  availableModels,
92621
92628
  systemDefaultModel
@@ -44,16 +44,16 @@
44
44
  * | Agent | Unified Chain |
45
45
  * |-------|---------------|
46
46
  * | **coder** | claude-opus-4-6 → k2p5 → kimi-k2.5 → gpt-5.4 → glm-5 → big-pickle |
47
- * | **gptcoder** | gpt-5.4 (openai/venice/opencode) → gpt-5.4 (github-copilot) |
47
+ * | **gptcoder** | gpt-5.3-codex (openai/venice/opencode) → gpt-5.3-codex (github-copilot) |
48
48
  * | **planner** | claude-opus-4-6 → k2p5 → gpt-5.4 → gemini-3.1-pro |
49
49
  * | **oracle** | gpt-5.4 → kimi-k2.5 → gemini-3.1-pro → claude-opus-4-6 → big-pickle (free) |
50
50
  * | **librarian** | gemini-3-flash → glm-4.7 → claude-sonnet-4-5 → minimax → big-pickle → glm-4.7-free |
51
- * | **explore** | Custom resolver (ClaudeZenCopilotOpenAI) |
51
+ * | **explore** | grok-code-fast-1 (copilot)claude-haiku-4-5minimax-m2.5-free (free) gpt-5-nano (free) |
52
52
  * | **multimodal-looker** | gpt-5.4 → k2p5 → gemini-3-flash → glm-4.6v → gpt-5-nano |
53
53
  * | **plan-consultant** | claude-opus-4-6 → k2p5 → gpt-5.4 → gemini-3.1-pro |
54
54
  * | **plan-reviewer** | gpt-5.4 → kimi-k2.5 → claude-opus-4-6 → gemini-3.1-pro → big-pickle (free) |
55
55
  * | **atlas** | k2p5 → claude-sonnet-4-6 → claude-sonnet-4-5 → gpt-5.4 → gemini-3.1-pro |
56
- * | **coder-junior** | claude-sonnet-4-6 → gpt-5.4 → gemini-3-flash (runtime only) |
56
+ * | **coder-junior** | claude-sonnet-4-6 → gpt-5.3-codex → gemini-3-flash (runtime only) |
57
57
  *
58
58
  * ## Category Model Chains
59
59
  *
@@ -64,8 +64,8 @@
64
64
  * | **deep** | gpt-5.4 → claude-opus-4-6 → gemini-3.1-pro → kimi-k2.5 → big-pickle (free) |
65
65
  * | **artistry** | gemini-3.1-pro → claude-opus-4-6 → gpt-5.4 → kimi-k2.5 → minimax-m2.5-free (free) |
66
66
  * | **quick** | claude-haiku-4-5 → gemini-3-flash → gpt-5.1-codex-mini → gpt-5-nano (free) |
67
- * | **unspecified-low** | claude-sonnet-4-6 → kimi-k2.5 → gpt-5.4 → gemini-3-flash → minimax-m2.5-free (free) |
68
- * | **unspecified-high** | claude-opus-4-6 → gpt-5.4 → glm-5 → k2p5 → kimi-k2.5 |
67
+ * | **unspecified-low** | claude-sonnet-4-6 → kimi-k2.5 → gpt-5.3-codex → gemini-3-flash → minimax-m2.5-free (free) |
68
+ * | **unspecified-high** | claude-opus-4-6 → gpt-5.3-codex → glm-5 → k2p5 → kimi-k2.5 |
69
69
  * | **writing** | gemini-3-flash → k2p5 → claude-sonnet-4-6 |
70
70
  *
71
71
  * ## Special Cases
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzy-agent",
3
- "version": "0.6.0-beta.2",
3
+ "version": "0.6.0",
4
4
  "description": "DrizzyAgent - AI agent plugin for OpenCode",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -76,17 +76,17 @@
76
76
  "typescript": "^5.7.3"
77
77
  },
78
78
  "optionalDependencies": {
79
- "drizzy-agent-darwin-arm64": "0.6.0-beta.2",
80
- "drizzy-agent-darwin-x64": "0.6.0-beta.2",
81
- "drizzy-agent-darwin-x64-baseline": "0.6.0-beta.2",
82
- "drizzy-agent-linux-arm64": "0.6.0-beta.2",
83
- "drizzy-agent-linux-arm64-musl": "0.6.0-beta.2",
84
- "drizzy-agent-linux-x64": "0.6.0-beta.2",
85
- "drizzy-agent-linux-x64-baseline": "0.6.0-beta.2",
86
- "drizzy-agent-linux-x64-musl": "0.6.0-beta.2",
87
- "drizzy-agent-linux-x64-musl-baseline": "0.6.0-beta.2",
88
- "drizzy-agent-windows-x64": "0.6.0-beta.2",
89
- "drizzy-agent-windows-x64-baseline": "0.6.0-beta.2"
79
+ "drizzy-agent-darwin-arm64": "0.6.0",
80
+ "drizzy-agent-darwin-x64": "0.6.0",
81
+ "drizzy-agent-darwin-x64-baseline": "0.6.0",
82
+ "drizzy-agent-linux-arm64": "0.6.0",
83
+ "drizzy-agent-linux-arm64-musl": "0.6.0",
84
+ "drizzy-agent-linux-x64": "0.6.0",
85
+ "drizzy-agent-linux-x64-baseline": "0.6.0",
86
+ "drizzy-agent-linux-x64-musl": "0.6.0",
87
+ "drizzy-agent-linux-x64-musl-baseline": "0.6.0",
88
+ "drizzy-agent-windows-x64": "0.6.0",
89
+ "drizzy-agent-windows-x64-baseline": "0.6.0"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"