drizzy-agent 0.1.0 → 0.1.1

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.
@@ -25,5 +25,5 @@ export declare const EXIT_CODES: {
25
25
  readonly FAILURE: 1;
26
26
  };
27
27
  export declare const MIN_OPENCODE_VERSION = "1.0.150";
28
- export declare const PACKAGE_NAME = "oh-my-opencode";
28
+ export declare const PACKAGE_NAME = "drizzy-agent";
29
29
  export declare const OPENCODE_BINARIES: readonly ["opencode", "opencode-desktop"];
package/dist/cli/index.js CHANGED
@@ -4930,7 +4930,7 @@ function log(message, data) {
4930
4930
  }
4931
4931
  var logFile;
4932
4932
  var init_logger = __esm(() => {
4933
- logFile = path.join(os.tmpdir(), "oh-my-opencode.log");
4933
+ logFile = path.join(os.tmpdir(), "drizzy-agent.log");
4934
4934
  });
4935
4935
 
4936
4936
  // src/shared/deep-merge.ts
@@ -5022,7 +5022,7 @@ function getCacheDir() {
5022
5022
  return process.env.XDG_CACHE_HOME ?? path2.join(os2.homedir(), ".cache");
5023
5023
  }
5024
5024
  function getOmoOpenCodeCacheDir() {
5025
- return path2.join(getCacheDir(), "oh-my-opencode");
5025
+ return path2.join(getCacheDir(), "drizzy-agent");
5026
5026
  }
5027
5027
  function getOpenCodeCacheDir() {
5028
5028
  return path2.join(getCacheDir(), "opencode");
@@ -6266,7 +6266,7 @@ function getOpenCodeConfigPaths(options) {
6266
6266
  configJson: join3(configDir, "opencode.json"),
6267
6267
  configJsonc: join3(configDir, "opencode.jsonc"),
6268
6268
  packageJson: join3(configDir, "package.json"),
6269
- omoConfig: join3(configDir, "oh-my-opencode.json")
6269
+ omoConfig: join3(configDir, "drizzy-agent.json")
6270
6270
  };
6271
6271
  }
6272
6272
  var TAURI_APP_IDENTIFIER = "ai.opencode.desktop", TAURI_APP_IDENTIFIER_DEV = "ai.opencode.desktop.dev";
@@ -7184,7 +7184,7 @@ async function getPluginNameWithVersion(currentVersion) {
7184
7184
  }
7185
7185
  return getFallbackEntry(currentVersion);
7186
7186
  }
7187
- var PACKAGE_NAME = "oh-my-opencode", PRIORITIZED_TAGS;
7187
+ var PACKAGE_NAME = "drizzy-agent", PRIORITIZED_TAGS;
7188
7188
  var init_plugin_name_with_version = __esm(() => {
7189
7189
  PRIORITIZED_TAGS = ["latest", "beta", "next"];
7190
7190
  });
@@ -7351,7 +7351,7 @@ async function addPluginToOpenCodeConfig(currentVersion) {
7351
7351
  };
7352
7352
  }
7353
7353
  }
7354
- var PACKAGE_NAME2 = "oh-my-opencode";
7354
+ var PACKAGE_NAME2 = "drizzy-agent";
7355
7355
  var init_add_plugin_to_opencode_config = __esm(() => {
7356
7356
  init_config_context();
7357
7357
  init_ensure_config_directory_exists();
@@ -7728,7 +7728,7 @@ function resolveModelFromChain(fallbackChain, availability) {
7728
7728
  return null;
7729
7729
  }
7730
7730
  function getCoderFallbackChain() {
7731
- return CLI_AGENT_MODEL_REQUIREMENTS.drizzy.fallbackChain;
7731
+ return CLI_AGENT_MODEL_REQUIREMENTS.coder.fallbackChain;
7732
7732
  }
7733
7733
  function isAnyFallbackEntryAvailable(fallbackChain, availability) {
7734
7734
  return fallbackChain.some((entry) => entry.providers.some((provider) => isProviderAvailable(provider, availability)));
@@ -7826,7 +7826,7 @@ function generateModelConfig(config) {
7826
7826
  };
7827
7827
  return isOpenAiOnlyAvailability(avail) ? applyOpenAiOnlyModelCatalog(generatedConfig) : generatedConfig;
7828
7828
  }
7829
- var ZAI_MODEL = "zai-coding-plan/glm-4.7", ULTIMATE_FALLBACK = "opencode/glm-4.7-free", SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json";
7829
+ var ZAI_MODEL = "zai-coding-plan/glm-4.7", ULTIMATE_FALLBACK = "opencode/glm-4.7-free", SCHEMA_URL = "https://raw.githubusercontent.com/yourusername/drizzy-agent/dev/assets/drizzy-agent.schema.json";
7830
7830
  var init_model_fallback = __esm(() => {
7831
7831
  init_model_fallback_requirements();
7832
7832
  init_openai_only_model_catalog();
@@ -7860,6 +7860,7 @@ function deepMergeRecord(target, source) {
7860
7860
 
7861
7861
  // src/cli/config-manager/write-omo-config.ts
7862
7862
  import { existsSync as existsSync7, readFileSync as readFileSync6, statSync as statSync2, writeFileSync as writeFileSync4 } from "fs";
7863
+ import { join as join7 } from "path";
7863
7864
  function isEmptyOrWhitespace2(content) {
7864
7865
  return content.trim().length === 0;
7865
7866
  }
@@ -7874,12 +7875,14 @@ function writeOmoConfig(installConfig) {
7874
7875
  };
7875
7876
  }
7876
7877
  const omoConfigPath = getOmoConfigPath();
7878
+ const legacyConfigPath = join7(getConfigDir(), "oh-my-opencode.json");
7879
+ const existingConfigPath = existsSync7(omoConfigPath) ? omoConfigPath : existsSync7(legacyConfigPath) ? legacyConfigPath : omoConfigPath;
7877
7880
  try {
7878
7881
  const newConfig = generateOmoConfig(installConfig);
7879
- if (existsSync7(omoConfigPath)) {
7882
+ if (existsSync7(existingConfigPath)) {
7880
7883
  try {
7881
- const stat = statSync2(omoConfigPath);
7882
- const content = readFileSync6(omoConfigPath, "utf-8");
7884
+ const stat = statSync2(existingConfigPath);
7885
+ const content = readFileSync6(existingConfigPath, "utf-8");
7883
7886
  if (stat.size === 0 || isEmptyOrWhitespace2(content)) {
7884
7887
  writeFileSync4(omoConfigPath, JSON.stringify(newConfig, null, 2) + `
7885
7888
  `);
@@ -7911,7 +7914,7 @@ function writeOmoConfig(installConfig) {
7911
7914
  return {
7912
7915
  success: false,
7913
7916
  configPath: omoConfigPath,
7914
- error: formatErrorWithSuggestion(err, "write oh-my-opencode config")
7917
+ error: formatErrorWithSuggestion(err, "write drizzy-agent config")
7915
7918
  };
7916
7919
  }
7917
7920
  }
@@ -8020,13 +8023,16 @@ var init_opencode_binary = __esm(() => {
8020
8023
 
8021
8024
  // src/cli/config-manager/detect-current-config.ts
8022
8025
  import { existsSync as existsSync8, readFileSync as readFileSync7 } from "fs";
8026
+ import { join as join8 } from "path";
8023
8027
  function detectProvidersFromOmoConfig() {
8024
8028
  const omoConfigPath = getOmoConfigPath();
8025
- if (!existsSync8(omoConfigPath)) {
8029
+ const legacyConfigPath = join8(getConfigDir(), "oh-my-opencode.json");
8030
+ const configPath = existsSync8(omoConfigPath) ? omoConfigPath : legacyConfigPath;
8031
+ if (!existsSync8(configPath)) {
8026
8032
  return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false, hasKimiForCoding: false };
8027
8033
  }
8028
8034
  try {
8029
- const content = readFileSync7(omoConfigPath, "utf-8");
8035
+ const content = readFileSync7(configPath, "utf-8");
8030
8036
  const omoConfig = parseJsonc(content);
8031
8037
  if (!omoConfig || typeof omoConfig !== "object") {
8032
8038
  return { hasOpenAI: true, hasOpencodeZen: true, hasZaiCodingPlan: false, hasKimiForCoding: false };
@@ -8063,7 +8069,7 @@ function detectCurrentConfig() {
8063
8069
  }
8064
8070
  const openCodeConfig = parseResult.config;
8065
8071
  const plugins = openCodeConfig.plugin ?? [];
8066
- result.isInstalled = plugins.some((p) => p.startsWith("oh-my-opencode"));
8072
+ result.isInstalled = plugins.some((p) => p.startsWith("drizzy-agent"));
8067
8073
  if (!result.isInstalled) {
8068
8074
  return result;
8069
8075
  }
@@ -9076,8 +9082,8 @@ var {
9076
9082
  // package.json
9077
9083
  var package_default = {
9078
9084
  name: "drizzy-agent",
9079
- version: "0.1.0",
9080
- description: "DrizzyAgent - AI Agent Harness built on Oh My OpenCode",
9085
+ version: "0.1.1",
9086
+ description: "DrizzyAgent - AI agent plugin for OpenCode",
9081
9087
  main: "dist/index.js",
9082
9088
  types: "dist/index.d.ts",
9083
9089
  type: "module",
@@ -9152,17 +9158,17 @@ var package_default = {
9152
9158
  typescript: "^5.7.3"
9153
9159
  },
9154
9160
  optionalDependencies: {
9155
- "drizzy-agent-darwin-arm64": "0.1.0",
9156
- "drizzy-agent-darwin-x64": "0.1.0",
9157
- "drizzy-agent-darwin-x64-baseline": "0.1.0",
9158
- "drizzy-agent-linux-arm64": "0.1.0",
9159
- "drizzy-agent-linux-arm64-musl": "0.1.0",
9160
- "drizzy-agent-linux-x64": "0.1.0",
9161
- "drizzy-agent-linux-x64-baseline": "0.1.0",
9162
- "drizzy-agent-linux-x64-musl": "0.1.0",
9163
- "drizzy-agent-linux-x64-musl-baseline": "0.1.0",
9164
- "drizzy-agent-windows-x64": "0.1.0",
9165
- "drizzy-agent-windows-x64-baseline": "0.1.0"
9161
+ "drizzy-agent-darwin-arm64": "0.1.1",
9162
+ "drizzy-agent-darwin-x64": "0.1.1",
9163
+ "drizzy-agent-darwin-x64-baseline": "0.1.1",
9164
+ "drizzy-agent-linux-arm64": "0.1.1",
9165
+ "drizzy-agent-linux-arm64-musl": "0.1.1",
9166
+ "drizzy-agent-linux-x64": "0.1.1",
9167
+ "drizzy-agent-linux-x64-baseline": "0.1.1",
9168
+ "drizzy-agent-linux-x64-musl": "0.1.1",
9169
+ "drizzy-agent-linux-x64-musl-baseline": "0.1.1",
9170
+ "drizzy-agent-windows-x64": "0.1.1",
9171
+ "drizzy-agent-windows-x64-baseline": "0.1.1"
9166
9172
  },
9167
9173
  overrides: {
9168
9174
  "@opencode-ai/sdk": "^1.2.24"
@@ -9327,7 +9333,7 @@ async function runCliInstaller(args, version) {
9327
9333
  console.log(` ${SYMBOLS.bullet} ${err}`);
9328
9334
  }
9329
9335
  console.log();
9330
- printInfo("Usage: bunx oh-my-opencode install --no-tui --claude=<no|yes|max20> --gemini=<no|yes> --copilot=<no|yes>");
9336
+ printInfo("Usage: bunx drizzy-agent install --no-tui --claude=<no|yes|max20> --gemini=<no|yes> --copilot=<no|yes>");
9331
9337
  console.log();
9332
9338
  return 1;
9333
9339
  }
@@ -9350,14 +9356,14 @@ async function runCliInstaller(args, version) {
9350
9356
  printInfo(`Current config: Claude=${initial.claude}, Gemini=${initial.gemini}`);
9351
9357
  }
9352
9358
  const config = argsToConfig(args);
9353
- printStep(step++, totalSteps, "Adding oh-my-opencode plugin...");
9359
+ printStep(step++, totalSteps, "Adding drizzy-agent plugin...");
9354
9360
  const pluginResult = await addPluginToOpenCodeConfig(version);
9355
9361
  if (!pluginResult.success) {
9356
9362
  printError(`Failed: ${pluginResult.error}`);
9357
9363
  return 1;
9358
9364
  }
9359
9365
  printSuccess(`Plugin ${isUpdate ? "verified" : "added"} ${SYMBOLS.arrow} ${import_picocolors2.default.dim(pluginResult.configPath)}`);
9360
- printStep(step++, totalSteps, "Writing oh-my-opencode configuration...");
9366
+ printStep(step++, totalSteps, "Writing drizzy-agent configuration...");
9361
9367
  const omoResult = writeOmoConfig(config);
9362
9368
  if (!omoResult.success) {
9363
9369
  printError(`Failed: ${omoResult.error}`);
@@ -9388,7 +9394,7 @@ async function runCliInstaller(args, version) {
9388
9394
  ` + `All features work like magic\u2014parallel agents, background tasks,
9389
9395
  ` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
9390
9396
  console.log(`${SYMBOLS.star} ${import_picocolors2.default.yellow("If you found this helpful, consider starring the repo!")}`);
9391
- console.log(` ${import_picocolors2.default.dim("gh api --silent --method PUT /user/starred/code-yeongyu/oh-my-openagent >/dev/null 2>&1 || true")}`);
9397
+ console.log(` ${import_picocolors2.default.dim("gh api --silent --method PUT /user/starred/yourusername/drizzy-agent >/dev/null 2>&1 || true")}`);
9392
9398
  console.log();
9393
9399
  console.log(import_picocolors2.default.dim("oMoMoMoMo... Enjoy!"));
9394
9400
  console.log();
@@ -10112,7 +10118,7 @@ async function runTuiInstaller(args, version) {
10112
10118
  const config = await promptInstallConfig(detected);
10113
10119
  if (!config)
10114
10120
  return 1;
10115
- spinner.start("Adding oh-my-opencode to OpenCode config");
10121
+ spinner.start("Adding drizzy-agent to OpenCode config");
10116
10122
  const pluginResult = await addPluginToOpenCodeConfig(version);
10117
10123
  if (!pluginResult.success) {
10118
10124
  spinner.stop(`Failed to add plugin: ${pluginResult.error}`);
@@ -10120,7 +10126,7 @@ async function runTuiInstaller(args, version) {
10120
10126
  return 1;
10121
10127
  }
10122
10128
  spinner.stop(`Plugin added to ${import_picocolors4.default.cyan(pluginResult.configPath)}`);
10123
- spinner.start("Writing oh-my-opencode configuration");
10129
+ spinner.start("Writing drizzy-agent configuration");
10124
10130
  const omoResult = writeOmoConfig(config);
10125
10131
  if (!omoResult.success) {
10126
10132
  spinner.stop(`Failed to write config: ${omoResult.error}`);
@@ -10151,7 +10157,7 @@ async function runTuiInstaller(args, version) {
10151
10157
  ` + `All features work like magic\u2014parallel agents, background tasks,
10152
10158
  ` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
10153
10159
  M2.message(`${import_picocolors4.default.yellow("\u2605")} If you found this helpful, consider starring the repo!`);
10154
- M2.message(` ${import_picocolors4.default.dim("gh api --silent --method PUT /user/starred/code-yeongyu/oh-my-openagent >/dev/null 2>&1 || true")}`);
10160
+ M2.message(` ${import_picocolors4.default.dim("gh api --silent --method PUT /user/starred/yourusername/drizzy-agent >/dev/null 2>&1 || true")}`);
10155
10161
  Se(import_picocolors4.default.green("oMoMoMoMo... Enjoy!"));
10156
10162
  if ((config.hasClaude || config.hasGemini || config.hasCopilot) && !args.skipAuth) {
10157
10163
  const providers = [];
@@ -24964,12 +24970,16 @@ function mergeConfigs(base, override) {
24964
24970
  }
24965
24971
  function loadPluginConfig(directory, ctx) {
24966
24972
  const configDir = getOpenCodeConfigDir({ binary: "opencode" });
24967
- const userBasePath = path3.join(configDir, "oh-my-opencode");
24973
+ const userBasePath = path3.join(configDir, "drizzy-agent");
24974
+ const legacyUserBasePath = path3.join(configDir, "oh-my-opencode");
24968
24975
  const userDetected = detectConfigFile(userBasePath);
24969
- const userConfigPath = userDetected.format !== "none" ? userDetected.path : userBasePath + ".json";
24970
- const projectBasePath = path3.join(directory, ".opencode", "oh-my-opencode");
24976
+ const legacyUserDetected = detectConfigFile(legacyUserBasePath);
24977
+ const userConfigPath = userDetected.format !== "none" ? userDetected.path : legacyUserDetected.format !== "none" ? legacyUserDetected.path : userBasePath + ".json";
24978
+ const projectBasePath = path3.join(directory, ".opencode", "drizzy-agent");
24979
+ const legacyProjectBasePath = path3.join(directory, ".opencode", "oh-my-opencode");
24971
24980
  const projectDetected = detectConfigFile(projectBasePath);
24972
- const projectConfigPath = projectDetected.format !== "none" ? projectDetected.path : projectBasePath + ".json";
24981
+ const legacyProjectDetected = detectConfigFile(legacyProjectBasePath);
24982
+ const projectConfigPath = projectDetected.format !== "none" ? projectDetected.path : legacyProjectDetected.format !== "none" ? legacyProjectDetected.path : projectBasePath + ".json";
24973
24983
  let config2 = loadConfigFromPath(userConfigPath, ctx) ?? {};
24974
24984
  const projectConfig = loadConfigFromPath(projectConfigPath, ctx);
24975
24985
  if (projectConfig) {
@@ -26435,7 +26445,7 @@ var import_picocolors9 = __toESM(require_picocolors(), 1);
26435
26445
 
26436
26446
  // src/cli/run/opencode-binary-resolver.ts
26437
26447
  init_spawn_with_windows_hide();
26438
- import { delimiter, dirname, join as join8 } from "path";
26448
+ import { delimiter, dirname, join as join10 } from "path";
26439
26449
  var OPENCODE_COMMANDS = ["opencode", "opencode-desktop"];
26440
26450
  var WINDOWS_SUFFIXES = ["", ".exe", ".cmd", ".bat", ".ps1"];
26441
26451
  function getCommandCandidates(platform) {
@@ -26458,7 +26468,7 @@ function collectCandidateBinaryPaths(pathEnv, which = Bun.which, platform = proc
26458
26468
  }
26459
26469
  for (const entry of (pathEnv ?? "").split(delimiter).filter(Boolean)) {
26460
26470
  for (const command of commandCandidates) {
26461
- addCandidate(join8(entry, command));
26471
+ addCandidate(join10(entry, command));
26462
26472
  }
26463
26473
  }
26464
26474
  return candidates;
@@ -26609,7 +26619,7 @@ async function resolveSession(options) {
26609
26619
  for (let attempt = 1;attempt <= SESSION_CREATE_MAX_RETRIES; attempt++) {
26610
26620
  const res = await client3.session.create({
26611
26621
  body: {
26612
- title: "oh-my-opencode run",
26622
+ title: "drizzy-agent run",
26613
26623
  permission: [
26614
26624
  { permission: "question", action: "deny", pattern: "*" }
26615
26625
  ]
@@ -26795,9 +26805,9 @@ var NOTEPAD_DIR = "notepads";
26795
26805
  var NOTEPAD_BASE_PATH = `${BOULDER_DIR}/${NOTEPAD_DIR}`;
26796
26806
  // src/features/boulder-state/storage.ts
26797
26807
  import { existsSync as existsSync11, readFileSync as readFileSync9, writeFileSync as writeFileSync5, mkdirSync as mkdirSync3, readdirSync } from "fs";
26798
- import { dirname as dirname2, join as join9, basename } from "path";
26808
+ import { dirname as dirname2, join as join11, basename } from "path";
26799
26809
  function getBoulderFilePath(directory) {
26800
- return join9(directory, BOULDER_DIR, BOULDER_FILE);
26810
+ return join11(directory, BOULDER_DIR, BOULDER_FILE);
26801
26811
  }
26802
26812
  function readBoulderState(directory) {
26803
26813
  const filePath = getBoulderFilePath(directory);
@@ -26841,9 +26851,9 @@ function getPlanProgress(planPath) {
26841
26851
  var CONTINUATION_MARKER_DIR = ".drizzy/run-continuation";
26842
26852
  // src/features/run-continuation-state/storage.ts
26843
26853
  import { existsSync as existsSync12, mkdirSync as mkdirSync4, readFileSync as readFileSync10, rmSync, writeFileSync as writeFileSync6 } from "fs";
26844
- import { join as join10 } from "path";
26854
+ import { join as join12 } from "path";
26845
26855
  function getMarkerPath(directory, sessionID) {
26846
- return join10(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
26856
+ return join12(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
26847
26857
  }
26848
26858
  function readContinuationMarker(directory, sessionID) {
26849
26859
  const markerPath = getMarkerPath(directory, sessionID);
@@ -26876,7 +26886,7 @@ function getActiveContinuationMarkerReason(marker) {
26876
26886
  // src/hooks/ralph-loop/storage.ts
26877
26887
  init_frontmatter();
26878
26888
  import { existsSync as existsSync13, readFileSync as readFileSync11, writeFileSync as writeFileSync7, unlinkSync, mkdirSync as mkdirSync5 } from "fs";
26879
- import { dirname as dirname3, join as join11 } from "path";
26889
+ import { dirname as dirname3, join as join13 } from "path";
26880
26890
 
26881
26891
  // src/hooks/ralph-loop/constants.ts
26882
26892
  var DEFAULT_STATE_FILE = ".drizzy/ralph-loop.local.md";
@@ -26885,7 +26895,7 @@ var DEFAULT_COMPLETION_PROMISE = "DONE";
26885
26895
 
26886
26896
  // src/hooks/ralph-loop/storage.ts
26887
26897
  function getStateFilePath(directory, customPath) {
26888
- return customPath ? join11(directory, customPath) : join11(directory, DEFAULT_STATE_FILE);
26898
+ return customPath ? join13(directory, customPath) : join13(directory, DEFAULT_STATE_FILE);
26889
26899
  }
26890
26900
  function readState(directory, customPath) {
26891
26901
  const filePath = getStateFilePath(directory, customPath);
@@ -27427,7 +27437,7 @@ var SYMBOLS2 = {
27427
27437
  function formatVersionOutput(info) {
27428
27438
  const lines = [];
27429
27439
  lines.push("");
27430
- lines.push(import_picocolors16.default.bold(import_picocolors16.default.white("oh-my-opencode Version Information")));
27440
+ lines.push(import_picocolors16.default.bold(import_picocolors16.default.white("drizzy-agent Version Information")));
27431
27441
  lines.push(import_picocolors16.default.dim("\u2500".repeat(50)));
27432
27442
  lines.push("");
27433
27443
  if (info.currentVersion) {
@@ -27445,7 +27455,7 @@ function formatVersionOutput(info) {
27445
27455
  break;
27446
27456
  case "outdated":
27447
27457
  lines.push(` ${SYMBOLS2.warn} ${import_picocolors16.default.yellow("Update available")}`);
27448
- lines.push(` ${import_picocolors16.default.dim("Run:")} ${import_picocolors16.default.cyan("cd ~/.config/opencode && bun update oh-my-opencode")}`);
27458
+ lines.push(` ${import_picocolors16.default.dim("Run:")} ${import_picocolors16.default.cyan("cd ~/.config/opencode && bun update drizzy-agent")}`);
27449
27459
  break;
27450
27460
  case "local-dev":
27451
27461
  lines.push(` ${SYMBOLS2.dev} ${import_picocolors16.default.cyan("Running in local development mode")}`);
@@ -27593,7 +27603,7 @@ var EXIT_CODES = {
27593
27603
  FAILURE: 1
27594
27604
  };
27595
27605
  var MIN_OPENCODE_VERSION = "1.0.150";
27596
- var PACKAGE_NAME4 = "oh-my-opencode";
27606
+ var PACKAGE_NAME4 = "drizzy-agent";
27597
27607
  var OPENCODE_BINARIES2 = ["opencode", "opencode-desktop"];
27598
27608
 
27599
27609
  // src/cli/doctor/checks/system.ts
@@ -27603,24 +27613,24 @@ import { existsSync as existsSync23, readFileSync as readFileSync21 } from "fs";
27603
27613
  init_spawn_with_windows_hide();
27604
27614
  import { existsSync as existsSync20 } from "fs";
27605
27615
  import { homedir as homedir5 } from "os";
27606
- import { join as join17 } from "path";
27616
+ import { join as join19 } from "path";
27607
27617
  function getDesktopAppPaths(platform) {
27608
27618
  const home = homedir5();
27609
27619
  switch (platform) {
27610
27620
  case "darwin":
27611
27621
  return [
27612
27622
  "/Applications/OpenCode.app/Contents/MacOS/OpenCode",
27613
- join17(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
27623
+ join19(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
27614
27624
  ];
27615
27625
  case "win32": {
27616
27626
  const programFiles = process.env.ProgramFiles;
27617
27627
  const localAppData = process.env.LOCALAPPDATA;
27618
27628
  const paths = [];
27619
27629
  if (programFiles) {
27620
- paths.push(join17(programFiles, "OpenCode", "OpenCode.exe"));
27630
+ paths.push(join19(programFiles, "OpenCode", "OpenCode.exe"));
27621
27631
  }
27622
27632
  if (localAppData) {
27623
- paths.push(join17(localAppData, "OpenCode", "OpenCode.exe"));
27633
+ paths.push(join19(localAppData, "OpenCode", "OpenCode.exe"));
27624
27634
  }
27625
27635
  return paths;
27626
27636
  }
@@ -27628,8 +27638,8 @@ function getDesktopAppPaths(platform) {
27628
27638
  return [
27629
27639
  "/usr/bin/opencode",
27630
27640
  "/usr/lib/opencode/opencode",
27631
- join17(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
27632
- join17(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
27641
+ join19(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
27642
+ join19(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
27633
27643
  ];
27634
27644
  default:
27635
27645
  return [];
@@ -27769,21 +27779,21 @@ init_checker();
27769
27779
  init_auto_update_checker();
27770
27780
  import { existsSync as existsSync22, readFileSync as readFileSync20 } from "fs";
27771
27781
  import { homedir as homedir6 } from "os";
27772
- import { join as join18 } from "path";
27782
+ import { join as join20 } from "path";
27773
27783
  init_shared();
27774
27784
  function getPlatformDefaultCacheDir(platform = process.platform) {
27775
27785
  if (platform === "darwin")
27776
- return join18(homedir6(), "Library", "Caches");
27786
+ return join20(homedir6(), "Library", "Caches");
27777
27787
  if (platform === "win32")
27778
- return process.env.LOCALAPPDATA ?? join18(homedir6(), "AppData", "Local");
27779
- return join18(homedir6(), ".cache");
27788
+ return process.env.LOCALAPPDATA ?? join20(homedir6(), "AppData", "Local");
27789
+ return join20(homedir6(), ".cache");
27780
27790
  }
27781
27791
  function resolveOpenCodeCacheDir() {
27782
27792
  const xdgCacheHome = process.env.XDG_CACHE_HOME;
27783
27793
  if (xdgCacheHome)
27784
- return join18(xdgCacheHome, "opencode");
27794
+ return join20(xdgCacheHome, "opencode");
27785
27795
  const fromShared = getOpenCodeCacheDir();
27786
- const platformDefault = join18(getPlatformDefaultCacheDir(), "opencode");
27796
+ const platformDefault = join20(getPlatformDefaultCacheDir(), "opencode");
27787
27797
  if (existsSync22(fromShared) || !existsSync22(platformDefault))
27788
27798
  return fromShared;
27789
27799
  return platformDefault;
@@ -27811,12 +27821,12 @@ function getLoadedPluginVersion() {
27811
27821
  {
27812
27822
  cacheDir: configPaths.configDir,
27813
27823
  cachePackagePath: configPaths.packageJson,
27814
- installedPackagePath: join18(configPaths.configDir, "node_modules", PACKAGE_NAME4, "package.json")
27824
+ installedPackagePath: join20(configPaths.configDir, "node_modules", PACKAGE_NAME4, "package.json")
27815
27825
  },
27816
27826
  {
27817
27827
  cacheDir,
27818
- cachePackagePath: join18(cacheDir, "package.json"),
27819
- installedPackagePath: join18(cacheDir, "node_modules", PACKAGE_NAME4, "package.json")
27828
+ cachePackagePath: join20(cacheDir, "package.json"),
27829
+ installedPackagePath: join20(cacheDir, "node_modules", PACKAGE_NAME4, "package.json")
27820
27830
  }
27821
27831
  ];
27822
27832
  const selectedCandidate = candidates.find((candidate) => existsSync22(candidate.installedPackagePath)) ?? candidates[0];
@@ -27911,9 +27921,9 @@ async function checkSystem() {
27911
27921
  }
27912
27922
  if (!pluginInfo.registered) {
27913
27923
  issues.push({
27914
- title: "oh-my-opencode is not registered",
27924
+ title: "drizzy-agent is not registered",
27915
27925
  description: "Plugin entry is missing from OpenCode configuration.",
27916
- fix: "Run: bunx oh-my-opencode install",
27926
+ fix: "Run: bunx drizzy-agent install",
27917
27927
  severity: "error",
27918
27928
  affects: ["all agents"]
27919
27929
  });
@@ -27931,7 +27941,7 @@ async function checkSystem() {
27931
27941
  issues.push({
27932
27942
  title: "Loaded plugin is outdated",
27933
27943
  description: `Loaded ${systemInfo.loadedVersion}, latest ${latestVersion}.`,
27934
- fix: `Update: cd "${loadedInfo.cacheDir}" && bun add oh-my-opencode@${installTag}`,
27944
+ fix: `Update: cd "${loadedInfo.cacheDir}" && bun add drizzy-agent@${installTag}`,
27935
27945
  severity: "warning",
27936
27946
  affects: ["plugin features"]
27937
27947
  });
@@ -27953,22 +27963,22 @@ async function checkSystem() {
27953
27963
 
27954
27964
  // src/cli/doctor/checks/config.ts
27955
27965
  import { readFileSync as readFileSync24 } from "fs";
27956
- import { join as join22 } from "path";
27966
+ import { join as join24 } from "path";
27957
27967
  init_shared();
27958
27968
 
27959
27969
  // src/cli/doctor/checks/model-resolution-cache.ts
27960
27970
  init_shared();
27961
27971
  import { existsSync as existsSync24, readFileSync as readFileSync22 } from "fs";
27962
27972
  import { homedir as homedir7 } from "os";
27963
- import { join as join19 } from "path";
27973
+ import { join as join21 } from "path";
27964
27974
  function getOpenCodeCacheDir2() {
27965
27975
  const xdgCache = process.env.XDG_CACHE_HOME;
27966
27976
  if (xdgCache)
27967
- return join19(xdgCache, "opencode");
27968
- return join19(homedir7(), ".cache", "opencode");
27977
+ return join21(xdgCache, "opencode");
27978
+ return join21(homedir7(), ".cache", "opencode");
27969
27979
  }
27970
27980
  function loadAvailableModelsFromCache() {
27971
- const cacheFile = join19(getOpenCodeCacheDir2(), "models.json");
27981
+ const cacheFile = join21(getOpenCodeCacheDir2(), "models.json");
27972
27982
  if (!existsSync24(cacheFile)) {
27973
27983
  return { providers: [], modelCount: 0, cacheExists: false };
27974
27984
  }
@@ -27995,10 +28005,10 @@ init_model_requirements();
27995
28005
  // src/cli/doctor/checks/model-resolution-config.ts
27996
28006
  init_shared();
27997
28007
  import { readFileSync as readFileSync23 } from "fs";
27998
- import { join as join20 } from "path";
27999
- var PACKAGE_NAME5 = "oh-my-opencode";
28000
- var USER_CONFIG_BASE = join20(getOpenCodeConfigPaths({ binary: "opencode", version: null }).configDir, PACKAGE_NAME5);
28001
- var PROJECT_CONFIG_BASE = join20(process.cwd(), ".opencode", PACKAGE_NAME5);
28008
+ import { join as join22 } from "path";
28009
+ var PACKAGE_NAME5 = "drizzy-agent";
28010
+ var USER_CONFIG_BASE = join22(getOpenCodeConfigPaths({ binary: "opencode", version: null }).configDir, PACKAGE_NAME5);
28011
+ var PROJECT_CONFIG_BASE = join22(process.cwd(), ".opencode", PACKAGE_NAME5);
28002
28012
  function loadOmoConfig() {
28003
28013
  const projectDetected = detectConfigFile(PROJECT_CONFIG_BASE);
28004
28014
  if (projectDetected.format !== "none") {
@@ -28023,7 +28033,7 @@ function loadOmoConfig() {
28023
28033
 
28024
28034
  // src/cli/doctor/checks/model-resolution-details.ts
28025
28035
  init_shared();
28026
- import { join as join21 } from "path";
28036
+ import { join as join23 } from "path";
28027
28037
 
28028
28038
  // src/cli/doctor/checks/model-resolution-variant.ts
28029
28039
  function formatModelWithVariant(model, variant) {
@@ -28062,7 +28072,7 @@ function getCategoryEffectiveVariant(categoryName, requirement, config2) {
28062
28072
  // src/cli/doctor/checks/model-resolution-details.ts
28063
28073
  function buildModelResolutionDetails(options) {
28064
28074
  const details = [];
28065
- const cacheFile = join21(getOpenCodeCacheDir(), "models.json");
28075
+ const cacheFile = join23(getOpenCodeCacheDir(), "models.json");
28066
28076
  details.push("\u2550\u2550\u2550 Available Models (from cache) \u2550\u2550\u2550");
28067
28077
  details.push("");
28068
28078
  if (options.available.cacheExists) {
@@ -28174,8 +28184,8 @@ async function checkModels() {
28174
28184
  }
28175
28185
 
28176
28186
  // src/cli/doctor/checks/config.ts
28177
- var USER_CONFIG_BASE2 = join22(getOpenCodeConfigDir({ binary: "opencode" }), PACKAGE_NAME4);
28178
- var PROJECT_CONFIG_BASE2 = join22(process.cwd(), ".opencode", PACKAGE_NAME4);
28187
+ var USER_CONFIG_BASE2 = join24(getOpenCodeConfigDir({ binary: "opencode" }), PACKAGE_NAME4);
28188
+ var PROJECT_CONFIG_BASE2 = join24(process.cwd(), ".opencode", PACKAGE_NAME4);
28179
28189
  function findConfigPath() {
28180
28190
  const projectConfig = detectConfigFile(PROJECT_CONFIG_BASE2);
28181
28191
  if (projectConfig.format !== "none")
@@ -28297,7 +28307,7 @@ async function checkConfig() {
28297
28307
  init_spawn_with_windows_hide();
28298
28308
  import { existsSync as existsSync25 } from "fs";
28299
28309
  import { createRequire } from "module";
28300
- import { dirname as dirname6, join as join23 } from "path";
28310
+ import { dirname as dirname6, join as join25 } from "path";
28301
28311
  async function checkBinaryExists(binary2) {
28302
28312
  try {
28303
28313
  const path10 = Bun.which(binary2);
@@ -28354,11 +28364,11 @@ async function checkAstGrepNapi() {
28354
28364
  };
28355
28365
  } catch {
28356
28366
  const { existsSync: existsSync26 } = await import("fs");
28357
- const { join: join24 } = await import("path");
28367
+ const { join: join26 } = await import("path");
28358
28368
  const { homedir: homedir8 } = await import("os");
28359
28369
  const pathsToCheck = [
28360
- join24(homedir8(), ".config", "opencode", "node_modules", "@ast-grep", "napi"),
28361
- join24(process.cwd(), "node_modules", "@ast-grep", "napi")
28370
+ join26(homedir8(), ".config", "opencode", "node_modules", "@ast-grep", "napi"),
28371
+ join26(process.cwd(), "node_modules", "@ast-grep", "napi")
28362
28372
  ];
28363
28373
  for (const napiPath of pathsToCheck) {
28364
28374
  if (existsSync26(napiPath)) {
@@ -28386,7 +28396,7 @@ function findCommentCheckerPackageBinary() {
28386
28396
  try {
28387
28397
  const require2 = createRequire(import.meta.url);
28388
28398
  const pkgPath = require2.resolve("@code-yeongyu/comment-checker/package.json");
28389
- const binaryPath = join23(dirname6(pkgPath), "bin", binaryName);
28399
+ const binaryPath = join25(dirname6(pkgPath), "bin", binaryName);
28390
28400
  if (existsSync25(binaryPath))
28391
28401
  return binaryPath;
28392
28402
  } catch {}
@@ -28506,20 +28516,20 @@ init_jsonc_parser();
28506
28516
 
28507
28517
  // src/tools/lsp/server-installation.ts
28508
28518
  import { existsSync as existsSync26 } from "fs";
28509
- import { delimiter as delimiter2, join as join25 } from "path";
28519
+ import { delimiter as delimiter2, join as join27 } from "path";
28510
28520
 
28511
28521
  // src/tools/lsp/server-path-bases.ts
28512
28522
  init_shared();
28513
- import { join as join24 } from "path";
28523
+ import { join as join26 } from "path";
28514
28524
  function getLspServerAdditionalPathBases(workingDirectory) {
28515
28525
  const configDir = getOpenCodeConfigDir({ binary: "opencode" });
28516
- const dataDir = join24(getDataDir(), "opencode");
28526
+ const dataDir = join26(getDataDir(), "opencode");
28517
28527
  return [
28518
- join24(workingDirectory, "node_modules", ".bin"),
28519
- join24(configDir, "bin"),
28520
- join24(configDir, "node_modules", ".bin"),
28521
- join24(dataDir, "bin"),
28522
- join24(dataDir, "bin", "node_modules", ".bin")
28528
+ join26(workingDirectory, "node_modules", ".bin"),
28529
+ join26(configDir, "bin"),
28530
+ join26(configDir, "node_modules", ".bin"),
28531
+ join26(dataDir, "bin"),
28532
+ join26(dataDir, "bin", "node_modules", ".bin")
28523
28533
  ];
28524
28534
  }
28525
28535
 
@@ -28550,14 +28560,14 @@ function isServerInstalled(command) {
28550
28560
  const paths = pathEnv.split(delimiter2);
28551
28561
  for (const p2 of paths) {
28552
28562
  for (const suffix of exts) {
28553
- if (existsSync26(join25(p2, cmd + suffix))) {
28563
+ if (existsSync26(join27(p2, cmd + suffix))) {
28554
28564
  return true;
28555
28565
  }
28556
28566
  }
28557
28567
  }
28558
28568
  for (const base of getLspServerAdditionalPathBases(process.cwd())) {
28559
28569
  for (const suffix of exts) {
28560
- if (existsSync26(join25(base, cmd + suffix))) {
28570
+ if (existsSync26(join27(base, cmd + suffix))) {
28561
28571
  return true;
28562
28572
  }
28563
28573
  }
@@ -28593,13 +28603,13 @@ function getLspServerStats(servers) {
28593
28603
  init_shared();
28594
28604
  import { existsSync as existsSync27, readFileSync as readFileSync25 } from "fs";
28595
28605
  import { homedir as homedir8 } from "os";
28596
- import { join as join26 } from "path";
28606
+ import { join as join28 } from "path";
28597
28607
  var BUILTIN_MCP_SERVERS = ["context7", "grep_app"];
28598
28608
  function getMcpConfigPaths() {
28599
28609
  return [
28600
- join26(homedir8(), ".claude", ".mcp.json"),
28601
- join26(process.cwd(), ".mcp.json"),
28602
- join26(process.cwd(), ".claude", ".mcp.json")
28610
+ join28(homedir8(), ".claude", ".mcp.json"),
28611
+ join28(process.cwd(), ".mcp.json"),
28612
+ join28(process.cwd(), ".claude", ".mcp.json")
28603
28613
  ];
28604
28614
  }
28605
28615
  function loadUserMcpConfig() {
@@ -28817,7 +28827,7 @@ function formatDefault(result) {
28817
28827
  if (allIssues.length === 0) {
28818
28828
  const opencodeVer = result.systemInfo.opencodeVersion ?? "unknown";
28819
28829
  const pluginVer = result.systemInfo.pluginVersion ?? "unknown";
28820
- lines.push(` ${import_picocolors19.default.green(SYMBOLS3.check)} ${import_picocolors19.default.green(`System OK (opencode ${opencodeVer} \xB7 oh-my-opencode ${pluginVer})`)}`);
28830
+ lines.push(` ${import_picocolors19.default.green(SYMBOLS3.check)} ${import_picocolors19.default.green(`System OK (opencode ${opencodeVer} \xB7 drizzy-agent ${pluginVer})`)}`);
28821
28831
  } else {
28822
28832
  const issueCount = allIssues.filter((i2) => i2.severity === "error").length;
28823
28833
  const warnCount = allIssues.filter((i2) => i2.severity === "warning").length;
@@ -28870,7 +28880,7 @@ function formatVerbose(result) {
28870
28880
  lines.push(`${import_picocolors21.default.bold("System Information")}`);
28871
28881
  lines.push(`${import_picocolors21.default.dim("\u2500".repeat(40))}`);
28872
28882
  lines.push(` ${formatStatusSymbol("pass")} opencode ${systemInfo.opencodeVersion ?? "unknown"}`);
28873
- lines.push(` ${formatStatusSymbol("pass")} oh-my-opencode ${systemInfo.pluginVersion ?? "unknown"}`);
28883
+ lines.push(` ${formatStatusSymbol("pass")} drizzy-agent ${systemInfo.pluginVersion ?? "unknown"}`);
28874
28884
  if (systemInfo.loadedVersion) {
28875
28885
  lines.push(` ${formatStatusSymbol("pass")} loaded ${systemInfo.loadedVersion}`);
28876
28886
  }
@@ -29011,10 +29021,10 @@ async function doctor(options = { mode: "default" }) {
29011
29021
  // src/features/mcp-oauth/storage.ts
29012
29022
  init_shared();
29013
29023
  import { chmodSync, existsSync as existsSync28, mkdirSync as mkdirSync6, readFileSync as readFileSync26, unlinkSync as unlinkSync4, writeFileSync as writeFileSync10 } from "fs";
29014
- import { dirname as dirname7, join as join27 } from "path";
29024
+ import { dirname as dirname7, join as join29 } from "path";
29015
29025
  var STORAGE_FILE_NAME = "mcp-oauth.json";
29016
29026
  function getMcpOauthStoragePath() {
29017
- return join27(getOpenCodeConfigDir({ binary: "opencode" }), STORAGE_FILE_NAME);
29027
+ return join29(getOpenCodeConfigDir({ binary: "opencode" }), STORAGE_FILE_NAME);
29018
29028
  }
29019
29029
  function normalizeHost(serverHost) {
29020
29030
  let host = serverHost.trim();
@@ -29633,12 +29643,12 @@ function createMcpOAuthCommand() {
29633
29643
  // src/cli/cli-program.ts
29634
29644
  var VERSION2 = package_default.version;
29635
29645
  var program2 = new Command;
29636
- program2.name("oh-my-opencode").description("The ultimate OpenCode plugin - multi-model orchestration, LSP tools, and more").version(VERSION2, "-v, --version", "Show version number").enablePositionalOptions();
29637
- program2.command("install").description("Install and configure oh-my-opencode 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", `
29646
+ program2.name("drizzy-agent").description("DrizzyAgent for OpenCode - multi-model orchestration, tools, and workflows").version(VERSION2, "-v, --version", "Show version number").enablePositionalOptions();
29647
+ 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", `
29638
29648
  Examples:
29639
- $ bunx oh-my-opencode install
29640
- $ bunx oh-my-opencode install --no-tui --claude=max20 --openai=yes --gemini=yes --copilot=no
29641
- $ bunx oh-my-opencode install --no-tui --claude=no --gemini=no --copilot=yes --opencode-zen=yes
29649
+ $ bunx drizzy-agent install
29650
+ $ bunx drizzy-agent install --no-tui --claude=max20 --openai=yes --gemini=yes --copilot=no
29651
+ $ bunx drizzy-agent install --no-tui --claude=no --gemini=no --copilot=yes --opencode-zen=yes
29642
29652
 
29643
29653
  Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi):
29644
29654
  Claude Native anthropic/ models (Opus, Sonnet, Haiku)
@@ -29665,20 +29675,20 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi):
29665
29675
  });
29666
29676
  program2.command("run <message>").allowUnknownOption().passThroughOptions().description("Run opencode with todo/background task completion enforcement").option("-a, --agent <name>", "Agent to use (default: from CLI/env/config, fallback: Coder)").option("-m, --model <provider/model>", "Model override (e.g., anthropic/claude-sonnet-4)").option("-d, --directory <path>", "Working directory").option("-p, --port <port>", "Server port (attaches if port already in use)", parseInt).option("--attach <url>", "Attach to existing opencode server URL").option("--on-complete <command>", "Shell command to run after completion").option("--json", "Output structured JSON result to stdout").option("--no-timestamp", "Disable timestamp prefix in run output").option("--verbose", "Show full event stream (default: messages/tools only)").option("--session-id <id>", "Resume existing session instead of creating new one").addHelpText("after", `
29667
29677
  Examples:
29668
- $ bunx oh-my-opencode run "Fix the bug in index.ts"
29669
- $ bunx oh-my-opencode run --agent Coder "Implement feature X"
29670
- $ bunx oh-my-opencode run --port 4321 "Fix the bug"
29671
- $ bunx oh-my-opencode run --attach http://127.0.0.1:4321 "Fix the bug"
29672
- $ bunx oh-my-opencode run --json "Fix the bug" | jq .sessionId
29673
- $ bunx oh-my-opencode run --on-complete "notify-send Done" "Fix the bug"
29674
- $ bunx oh-my-opencode run --session-id ses_abc123 "Continue the work"
29675
- $ bunx oh-my-opencode run --model anthropic/claude-sonnet-4 "Fix the bug"
29676
- $ bunx oh-my-opencode run --agent Coder --model openai/gpt-5.4 "Implement feature X"
29678
+ $ bunx drizzy-agent run "Fix the bug in index.ts"
29679
+ $ bunx drizzy-agent run --agent Coder "Implement feature X"
29680
+ $ bunx drizzy-agent run --port 4321 "Fix the bug"
29681
+ $ bunx drizzy-agent run --attach http://127.0.0.1:4321 "Fix the bug"
29682
+ $ bunx drizzy-agent run --json "Fix the bug" | jq .sessionId
29683
+ $ bunx drizzy-agent run --on-complete "notify-send Done" "Fix the bug"
29684
+ $ bunx drizzy-agent run --session-id ses_abc123 "Continue the work"
29685
+ $ bunx drizzy-agent run --model anthropic/claude-sonnet-4 "Fix the bug"
29686
+ $ bunx drizzy-agent run --agent Coder --model openai/gpt-5.4 "Implement feature X"
29677
29687
 
29678
29688
  Agent resolution order:
29679
29689
  1) --agent flag
29680
29690
  2) OPENCODE_DEFAULT_AGENT
29681
- 3) oh-my-opencode.json "default_run_agent"
29691
+ 3) drizzy-agent.json "default_run_agent"
29682
29692
  4) Coder (fallback)
29683
29693
 
29684
29694
  Available core agents:
@@ -29710,9 +29720,9 @@ Unlike 'opencode run', this command waits until:
29710
29720
  });
29711
29721
  program2.command("get-local-version").description("Show current installed version and check for updates").option("-d, --directory <path>", "Working directory to check config from").option("--json", "Output in JSON format for scripting").addHelpText("after", `
29712
29722
  Examples:
29713
- $ bunx oh-my-opencode get-local-version
29714
- $ bunx oh-my-opencode get-local-version --json
29715
- $ bunx oh-my-opencode get-local-version --directory /path/to/project
29723
+ $ bunx drizzy-agent get-local-version
29724
+ $ bunx drizzy-agent get-local-version --json
29725
+ $ bunx drizzy-agent get-local-version --directory /path/to/project
29716
29726
 
29717
29727
  This command shows:
29718
29728
  - Current installed version
@@ -29727,12 +29737,12 @@ This command shows:
29727
29737
  const exitCode = await getLocalVersion(versionOptions);
29728
29738
  process.exit(exitCode);
29729
29739
  });
29730
- program2.command("doctor").description("Check oh-my-opencode installation health and diagnose issues").option("--status", "Show compact system dashboard").option("--verbose", "Show detailed diagnostic information").option("--json", "Output results in JSON format").addHelpText("after", `
29740
+ program2.command("doctor").description("Check DrizzyAgent installation health and diagnose issues").option("--status", "Show compact system dashboard").option("--verbose", "Show detailed diagnostic information").option("--json", "Output results in JSON format").addHelpText("after", `
29731
29741
  Examples:
29732
- $ bunx oh-my-opencode doctor # Show problems only
29733
- $ bunx oh-my-opencode doctor --status # Compact dashboard
29734
- $ bunx oh-my-opencode doctor --verbose # Deep diagnostics
29735
- $ bunx oh-my-opencode doctor --json # JSON output
29742
+ $ bunx drizzy-agent doctor # Show problems only
29743
+ $ bunx drizzy-agent doctor --status # Compact dashboard
29744
+ $ bunx drizzy-agent doctor --verbose # Deep diagnostics
29745
+ $ bunx drizzy-agent doctor --json # JSON output
29736
29746
  `).action(async (options) => {
29737
29747
  const mode = options.status ? "status" : options.verbose ? "verbose" : "default";
29738
29748
  const doctorOptions = {
@@ -29743,7 +29753,7 @@ Examples:
29743
29753
  process.exit(exitCode);
29744
29754
  });
29745
29755
  program2.command("version").description("Show version information").action(() => {
29746
- console.log(`oh-my-opencode v${VERSION2}`);
29756
+ console.log(`drizzy-agent v${VERSION2}`);
29747
29757
  });
29748
29758
  program2.addCommand(createMcpOAuthCommand());
29749
29759
  function runCli() {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
4
- "title": "Oh My OpenCode Configuration",
5
- "description": "Configuration schema for oh-my-opencode plugin",
3
+ "$id": "https://raw.githubusercontent.com/yourusername/drizzy-agent/dev/assets/drizzy-agent.schema.json",
4
+ "title": "DrizzyAgent Configuration",
5
+ "description": "Configuration schema for the drizzy-agent plugin",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "$schema": {
package/dist/index.js CHANGED
@@ -68,7 +68,7 @@ function getLogFilePath() {
68
68
  }
69
69
  var logFile;
70
70
  var init_logger = __esm(() => {
71
- logFile = path.join(os.tmpdir(), "oh-my-opencode.log");
71
+ logFile = path.join(os.tmpdir(), "drizzy-agent.log");
72
72
  });
73
73
 
74
74
  // src/shared/truncate-description.ts
@@ -15578,7 +15578,7 @@ function getCacheDir() {
15578
15578
  return process.env.XDG_CACHE_HOME ?? path2.join(os2.homedir(), ".cache");
15579
15579
  }
15580
15580
  function getOmoOpenCodeCacheDir() {
15581
- return path2.join(getCacheDir(), "oh-my-opencode");
15581
+ return path2.join(getCacheDir(), "drizzy-agent");
15582
15582
  }
15583
15583
  function getOpenCodeCacheDir() {
15584
15584
  return path2.join(getCacheDir(), "opencode");
@@ -16785,7 +16785,7 @@ function getOpenCodeConfigPaths(options) {
16785
16785
  configJson: join5(configDir, "opencode.json"),
16786
16786
  configJsonc: join5(configDir, "opencode.jsonc"),
16787
16787
  packageJson: join5(configDir, "package.json"),
16788
- omoConfig: join5(configDir, "oh-my-opencode.json")
16788
+ omoConfig: join5(configDir, "drizzy-agent.json")
16789
16789
  };
16790
16790
  }
16791
16791
  // src/shared/opencode-version.ts
@@ -16985,16 +16985,16 @@ function detectExternalNotificationPlugin(directory) {
16985
16985
  };
16986
16986
  }
16987
16987
  function getNotificationConflictWarning(pluginName) {
16988
- return `[oh-my-opencode] External notification plugin detected: ${pluginName}
16988
+ return `[drizzy-agent] External notification plugin detected: ${pluginName}
16989
16989
 
16990
- Both oh-my-opencode and ${pluginName} listen to session.idle events.
16990
+ Both drizzy-agent and ${pluginName} listen to session.idle events.
16991
16991
  Running both simultaneously can cause crashes on Windows.
16992
16992
 
16993
- oh-my-opencode's session-notification has been auto-disabled.
16993
+ drizzy-agent's session-notification has been auto-disabled.
16994
16994
 
16995
- To use oh-my-opencode's notifications instead, either:
16995
+ To use drizzy-agent's notifications instead, either:
16996
16996
  1. Remove ${pluginName} from your opencode.json plugins
16997
- 2. Or set "notification": { "force_enable": true } in oh-my-opencode.json`;
16997
+ 2. Or set "notification": { "force_enable": true } in drizzy-agent.json`;
16998
16998
  }
16999
16999
  // src/shared/zip-extractor.ts
17000
17000
  var {spawn: spawn2, spawnSync } = globalThis.Bun;
@@ -52264,12 +52264,16 @@ function mergeConfigs(base, override) {
52264
52264
  }
52265
52265
  function loadPluginConfig(directory, ctx) {
52266
52266
  const configDir = getOpenCodeConfigDir({ binary: "opencode" });
52267
- const userBasePath = path11.join(configDir, "oh-my-opencode");
52267
+ const userBasePath = path11.join(configDir, "drizzy-agent");
52268
+ const legacyUserBasePath = path11.join(configDir, "oh-my-opencode");
52268
52269
  const userDetected = detectConfigFile(userBasePath);
52269
- const userConfigPath = userDetected.format !== "none" ? userDetected.path : userBasePath + ".json";
52270
- const projectBasePath = path11.join(directory, ".opencode", "oh-my-opencode");
52270
+ const legacyUserDetected = detectConfigFile(legacyUserBasePath);
52271
+ const userConfigPath = userDetected.format !== "none" ? userDetected.path : legacyUserDetected.format !== "none" ? legacyUserDetected.path : userBasePath + ".json";
52272
+ const projectBasePath = path11.join(directory, ".opencode", "drizzy-agent");
52273
+ const legacyProjectBasePath = path11.join(directory, ".opencode", "oh-my-opencode");
52271
52274
  const projectDetected = detectConfigFile(projectBasePath);
52272
- const projectConfigPath = projectDetected.format !== "none" ? projectDetected.path : projectBasePath + ".json";
52275
+ const legacyProjectDetected = detectConfigFile(legacyProjectBasePath);
52276
+ const projectConfigPath = projectDetected.format !== "none" ? projectDetected.path : legacyProjectDetected.format !== "none" ? legacyProjectDetected.path : projectBasePath + ".json";
52273
52277
  let config2 = loadConfigFromPath2(userConfigPath, ctx) ?? {};
52274
52278
  const projectConfig = loadConfigFromPath2(projectConfigPath, ctx);
52275
52279
  if (projectConfig) {
@@ -72050,7 +72054,7 @@ function createCallOmoAgent(ctx, backgroundManager, disabledAgents = [], agentOv
72050
72054
  const normalizedAgent = args.subagent_type.toLowerCase();
72051
72055
  args = { ...args, subagent_type: normalizedAgent };
72052
72056
  if (disabledAgents.some((disabled) => disabled.toLowerCase() === normalizedAgent)) {
72053
- return `Error: Agent "${normalizedAgent}" is disabled via disabled_agents configuration. Remove it from disabled_agents in your oh-my-opencode.json to use it.`;
72057
+ return `Error: Agent "${normalizedAgent}" is disabled via disabled_agents configuration. Remove it from disabled_agents in your drizzy-agent.json to use it.`;
72054
72058
  }
72055
72059
  const fallbackChain = resolveFallbackChainForCallOmoAgent({
72056
72060
  subagentType: args.subagent_type,
@@ -86818,7 +86822,7 @@ function createCoderAgent(model, availableAgents, availableToolNames, availableS
86818
86822
  if (isGpt5_4Model(model)) {
86819
86823
  const prompt2 = buildGpt54CoderPrompt(model, agents, tools, skills2, categories2, useTaskSystem);
86820
86824
  return {
86821
- description: "Powerful AI orchestrator. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically via category+skills combinations. Uses explore for internal code (parallel-friendly), librarian for external docs. (Coder - OhMyOpenCode)",
86825
+ description: "Powerful AI orchestrator. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically via category+skills combinations. Uses explore for internal code (parallel-friendly), librarian for external docs. (Coder - DrizzyAgent)",
86822
86826
  mode: MODE,
86823
86827
  model,
86824
86828
  maxTokens: 64000,
@@ -86854,7 +86858,7 @@ ${buildGeminiVerificationOverride()}
86854
86858
  call_omo_agent: "deny"
86855
86859
  };
86856
86860
  const base = {
86857
- description: "Powerful AI orchestrator. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically via category+skills combinations. Uses explore for internal code (parallel-friendly), librarian for external docs. (Coder - OhMyOpenCode)",
86861
+ description: "Powerful AI orchestrator. Plans obsessively with todos, assesses search complexity before exploration, delegates strategically via category+skills combinations. Uses explore for internal code (parallel-friendly), librarian for external docs. (Coder - DrizzyAgent)",
86858
86862
  mode: MODE,
86859
86863
  model,
86860
86864
  maxTokens: 64000,
@@ -87099,7 +87103,7 @@ function createOracleAgent(model) {
87099
87103
  "task"
87100
87104
  ]);
87101
87105
  const base = {
87102
- description: "Read-only consultation agent. High-IQ reasoning specialist for debugging hard problems and high-difficulty architecture design. (Oracle - OhMyOpenCode)",
87106
+ description: "Read-only consultation agent. High-IQ reasoning specialist for debugging hard problems and high-difficulty architecture design. (Oracle - DrizzyAgent)",
87103
87107
  mode: MODE2,
87104
87108
  model,
87105
87109
  temperature: 0.1,
@@ -87148,7 +87152,7 @@ function createLibrarianAgent(model) {
87148
87152
  "call_omo_agent"
87149
87153
  ]);
87150
87154
  return {
87151
- description: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source. (Librarian - OhMyOpenCode)",
87155
+ description: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source. (Librarian - DrizzyAgent)",
87152
87156
  mode: MODE3,
87153
87157
  model,
87154
87158
  temperature: 0.1,
@@ -87465,7 +87469,7 @@ function createExploreAgent(model) {
87465
87469
  "call_omo_agent"
87466
87470
  ]);
87467
87471
  return {
87468
- description: 'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis. (Explore - OhMyOpenCode)',
87472
+ description: 'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis. (Explore - DrizzyAgent)',
87469
87473
  mode: MODE4,
87470
87474
  model,
87471
87475
  temperature: 0.1,
@@ -87885,7 +87889,7 @@ var planConsultantRestrictions = createAgentToolRestrictions([
87885
87889
  ]);
87886
87890
  function createPlanConsultantAgent(model) {
87887
87891
  return {
87888
- description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points. (Plan Consultant - OhMyOpenCode)",
87892
+ description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points. (Plan Consultant - DrizzyAgent)",
87889
87893
  mode: MODE6,
87890
87894
  model,
87891
87895
  temperature: 0.3,
@@ -87920,7 +87924,7 @@ var planConsultantPromptMetadata = {
87920
87924
  // src/agents/atlas/default.ts
87921
87925
  var ATLAS_SYSTEM_PROMPT = `
87922
87926
  <identity>
87923
- You are Atlas - the Master Orchestrator from OhMyOpenCode.
87927
+ You are Atlas - the Master Orchestrator from DrizzyAgent.
87924
87928
 
87925
87929
  In Greek mythology, Atlas holds up the celestial heavens. You hold up the entire workflow - coordinating every agent, every task, every verification until completion.
87926
87930
 
@@ -88361,7 +88365,7 @@ function getDefaultAtlasPrompt() {
88361
88365
  // src/agents/atlas/gpt.ts
88362
88366
  var ATLAS_GPT_SYSTEM_PROMPT = `
88363
88367
  <identity>
88364
- You are Atlas - Master Orchestrator from OhMyOpenCode.
88368
+ You are Atlas - Master Orchestrator from DrizzyAgent.
88365
88369
  Role: Conductor, not musician. General, not soldier.
88366
88370
  You DELEGATE, COORDINATE, and VERIFY. You NEVER write code yourself.
88367
88371
  </identity>
@@ -88775,7 +88779,7 @@ function getGptAtlasPrompt() {
88775
88779
  // src/agents/atlas/gemini.ts
88776
88780
  var ATLAS_GEMINI_SYSTEM_PROMPT = `
88777
88781
  <identity>
88778
- You are Atlas - Master Orchestrator from OhMyOpenCode.
88782
+ You are Atlas - Master Orchestrator from DrizzyAgent.
88779
88783
  Role: Conductor, not musician. General, not soldier.
88780
88784
  You DELEGATE, COORDINATE, and VERIFY. You NEVER write code yourself.
88781
88785
 
@@ -89311,7 +89315,7 @@ function buildDynamicOrchestratorPrompt(ctx) {
89311
89315
  }
89312
89316
  function createAtlasAgent(ctx) {
89313
89317
  const baseConfig = {
89314
- description: "Orchestrates work via task() to complete ALL tasks in a todo list until fully done. (Atlas - OhMyOpenCode)",
89318
+ description: "Orchestrates work via task() to complete ALL tasks in a todo list until fully done. (Atlas - DrizzyAgent)",
89315
89319
  mode: MODE7,
89316
89320
  ...ctx.model ? { model: ctx.model } : {},
89317
89321
  temperature: 0.1,
@@ -89603,7 +89607,7 @@ function createPlanReviewerAgent(model) {
89603
89607
  "task"
89604
89608
  ]);
89605
89609
  const base = {
89606
- description: "Expert reviewer for evaluating work plans against rigorous clarity, verifiability, and completeness standards. (Plan Reviewer - OhMyOpenCode)",
89610
+ description: "Expert reviewer for evaluating work plans against rigorous clarity, verifiability, and completeness standards. (Plan Reviewer - DrizzyAgent)",
89607
89611
  mode: MODE8,
89608
89612
  model,
89609
89613
  temperature: 0.1,
@@ -90864,7 +90868,7 @@ function buildDefaultCoderJuniorPrompt(useTaskSystem, promptAppend) {
90864
90868
  const todoDiscipline = buildTodoDisciplineSection4(useTaskSystem);
90865
90869
  const verificationText = useTaskSystem ? "All tasks marked completed" : "All todos marked completed";
90866
90870
  const prompt = `<Role>
90867
- Coder-Junior - Focused executor from OhMyOpenCode.
90871
+ Coder-Junior - Focused executor from DrizzyAgent.
90868
90872
  Execute tasks directly.
90869
90873
  </Role>
90870
90874
 
@@ -91561,7 +91565,7 @@ function createCoderJuniorAgentWithOverrides(override, systemDefaultModel, useTa
91561
91565
  merged.call_omo_agent = "allow";
91562
91566
  const toolsConfig = { permission: { ...merged, ...basePermission } };
91563
91567
  const base = {
91564
- description: override?.description ?? "Focused task executor. Same discipline, no delegation. (Coder-Junior - OhMyOpenCode)",
91568
+ description: override?.description ?? "Focused task executor. Same discipline, no delegation. (Coder-Junior - DrizzyAgent)",
91565
91569
  mode: MODE11,
91566
91570
  model,
91567
91571
  temperature,
@@ -94424,7 +94428,7 @@ async function buildPlannerAgentConfig(params) {
94424
94428
  mode: "all",
94425
94429
  prompt: getPlannerPrompt(resolvedModel),
94426
94430
  permission: PLANNER_PERMISSION,
94427
- description: `${params.configAgentPlan?.description ?? "Plan agent"} (Planner - OhMyOpenCode)`,
94431
+ description: `${params.configAgentPlan?.description ?? "Plan agent"} (Planner - DrizzyAgent)`,
94428
94432
  color: params.configAgentPlan?.color ?? "#FF5722",
94429
94433
  ...temperatureToUse !== undefined ? { temperature: temperatureToUse } : {},
94430
94434
  ...topPToUse !== undefined ? { top_p: topPToUse } : {},
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "drizzy-agent",
3
- "version": "0.1.0",
4
- "description": "DrizzyAgent - AI Agent Harness built on Oh My OpenCode",
3
+ "version": "0.1.1",
4
+ "description": "DrizzyAgent - AI agent plugin for OpenCode",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
@@ -76,17 +76,17 @@
76
76
  "typescript": "^5.7.3"
77
77
  },
78
78
  "optionalDependencies": {
79
- "drizzy-agent-darwin-arm64": "0.1.0",
80
- "drizzy-agent-darwin-x64": "0.1.0",
81
- "drizzy-agent-darwin-x64-baseline": "0.1.0",
82
- "drizzy-agent-linux-arm64": "0.1.0",
83
- "drizzy-agent-linux-arm64-musl": "0.1.0",
84
- "drizzy-agent-linux-x64": "0.1.0",
85
- "drizzy-agent-linux-x64-baseline": "0.1.0",
86
- "drizzy-agent-linux-x64-musl": "0.1.0",
87
- "drizzy-agent-linux-x64-musl-baseline": "0.1.0",
88
- "drizzy-agent-windows-x64": "0.1.0",
89
- "drizzy-agent-windows-x64-baseline": "0.1.0"
79
+ "drizzy-agent-darwin-arm64": "0.1.1",
80
+ "drizzy-agent-darwin-x64": "0.1.1",
81
+ "drizzy-agent-darwin-x64-baseline": "0.1.1",
82
+ "drizzy-agent-linux-arm64": "0.1.1",
83
+ "drizzy-agent-linux-arm64-musl": "0.1.1",
84
+ "drizzy-agent-linux-x64": "0.1.1",
85
+ "drizzy-agent-linux-x64-baseline": "0.1.1",
86
+ "drizzy-agent-linux-x64-musl": "0.1.1",
87
+ "drizzy-agent-linux-x64-musl-baseline": "0.1.1",
88
+ "drizzy-agent-windows-x64": "0.1.1",
89
+ "drizzy-agent-windows-x64-baseline": "0.1.1"
90
90
  },
91
91
  "overrides": {
92
92
  "@opencode-ai/sdk": "^1.2.24"