oh-my-magento 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -2145,7 +2145,7 @@ var package_default;
2145
2145
  var init_package = __esm(() => {
2146
2146
  package_default = {
2147
2147
  name: "oh-my-magento",
2148
- version: "0.3.1",
2148
+ version: "0.3.2",
2149
2149
  description: "Magento 2 + Hyv\xE4 Enterprise E-Commerce Intelligent Agent Orchestration System - OpenCode Plugin",
2150
2150
  main: "dist/index.js",
2151
2151
  types: "dist/index.d.ts",
@@ -2225,17 +2225,17 @@ var init_package = __esm(() => {
2225
2225
  typescript: "^5.7.3"
2226
2226
  },
2227
2227
  optionalDependencies: {
2228
- "oh-my-magento-darwin-arm64": "0.3.1",
2229
- "oh-my-magento-darwin-x64": "0.3.1",
2230
- "oh-my-magento-darwin-x64-baseline": "0.3.1",
2231
- "oh-my-magento-linux-arm64": "0.3.1",
2232
- "oh-my-magento-linux-arm64-musl": "0.3.1",
2233
- "oh-my-magento-linux-x64": "0.3.1",
2234
- "oh-my-magento-linux-x64-baseline": "0.3.1",
2235
- "oh-my-magento-linux-x64-musl": "0.3.1",
2236
- "oh-my-magento-linux-x64-musl-baseline": "0.3.1",
2237
- "oh-my-magento-windows-x64": "0.3.1",
2238
- "oh-my-magento-windows-x64-baseline": "0.3.1"
2228
+ "oh-my-magento-darwin-arm64": "0.3.2",
2229
+ "oh-my-magento-darwin-x64": "0.3.2",
2230
+ "oh-my-magento-darwin-x64-baseline": "0.3.2",
2231
+ "oh-my-magento-linux-arm64": "0.3.2",
2232
+ "oh-my-magento-linux-arm64-musl": "0.3.2",
2233
+ "oh-my-magento-linux-x64": "0.3.2",
2234
+ "oh-my-magento-linux-x64-baseline": "0.3.2",
2235
+ "oh-my-magento-linux-x64-musl": "0.3.2",
2236
+ "oh-my-magento-linux-x64-musl-baseline": "0.3.2",
2237
+ "oh-my-magento-windows-x64": "0.3.2",
2238
+ "oh-my-magento-windows-x64-baseline": "0.3.2"
2239
2239
  },
2240
2240
  overrides: {
2241
2241
  "@opencode-ai/sdk": "^1.2.24"
@@ -6456,7 +6456,6 @@ var init_model_requirements = __esm(() => {
6456
6456
  variant: "max"
6457
6457
  },
6458
6458
  { providers: ["opencode-go"], model: "kimi-k2.5" },
6459
- { providers: ["kimi-for-coding"], model: "k2p5" },
6460
6459
  {
6461
6460
  providers: [
6462
6461
  "opencode",
@@ -6468,6 +6467,7 @@ var init_model_requirements = __esm(() => {
6468
6467
  ],
6469
6468
  model: "kimi-k2.5"
6470
6469
  },
6470
+ { providers: ["kimi-for-coding"], model: "k2p5" },
6471
6471
  { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" },
6472
6472
  { providers: ["zai-coding-plan", "opencode"], model: "glm-5" },
6473
6473
  { providers: ["opencode"], model: "big-pickle" }
@@ -6685,10 +6685,6 @@ var init_model_requirements = __esm(() => {
6685
6685
  },
6686
6686
  quick: {
6687
6687
  fallbackChain: [
6688
- {
6689
- providers: ["openai", "github-copilot", "opencode"],
6690
- model: "gpt-5.4-mini"
6691
- },
6692
6688
  {
6693
6689
  providers: ["anthropic", "github-copilot", "opencode"],
6694
6690
  model: "claude-haiku-4-5"
@@ -7626,7 +7622,7 @@ var init_openai_only_model_catalog = __esm(() => {
7626
7622
  };
7627
7623
  OPENAI_ONLY_CATEGORY_OVERRIDES = {
7628
7624
  artistry: { model: "openai/gpt-5.4", variant: "xhigh" },
7629
- quick: { model: "openai/gpt-5.4-mini" },
7625
+ quick: { model: "openai/gpt-5.3-codex", variant: "low" },
7630
7626
  "visual-engineering": { model: "openai/gpt-5.4", variant: "high" },
7631
7627
  writing: { model: "openai/gpt-5.4", variant: "medium" }
7632
7628
  };
@@ -7714,14 +7710,6 @@ function generateModelConfig(config) {
7714
7710
  const agents = {};
7715
7711
  const categories = {};
7716
7712
  for (const [role, req] of Object.entries(CLI_AGENT_MODEL_REQUIREMENTS)) {
7717
- if (role === "librarian") {
7718
- if (avail.opencodeGo) {
7719
- agents[role] = { model: "opencode-go/minimax-m2.5" };
7720
- } else if (avail.zai) {
7721
- agents[role] = { model: ZAI_MODEL };
7722
- }
7723
- continue;
7724
- }
7725
7713
  if (role === "explore") {
7726
7714
  if (avail.native.claude) {
7727
7715
  agents[role] = { model: "anthropic/claude-haiku-4-5" };
@@ -7785,7 +7773,7 @@ function generateModelConfig(config) {
7785
7773
  };
7786
7774
  return isOpenAiOnlyAvailability(avail) ? applyOpenAiOnlyModelCatalog(generatedConfig) : generatedConfig;
7787
7775
  }
7788
- var ZAI_MODEL = "zai-coding-plan/glm-4.7", ULTIMATE_FALLBACK = "opencode/gpt-5-nano", SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json";
7776
+ var ULTIMATE_FALLBACK = "opencode/gpt-5-nano", SCHEMA_URL = "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json";
7789
7777
  var init_model_fallback = __esm(() => {
7790
7778
  init_model_fallback_requirements();
7791
7779
  init_openai_only_model_catalog();
@@ -9693,6 +9681,41 @@ class dD extends x {
9693
9681
  }
9694
9682
  var A;
9695
9683
  A = new WeakMap;
9684
+ var kD = Object.defineProperty;
9685
+ var $D = (e, u, t) => (u in e) ? kD(e, u, { enumerable: true, configurable: true, writable: true, value: t }) : e[u] = t;
9686
+ var H = (e, u, t) => ($D(e, typeof u != "symbol" ? u + "" : u, t), t);
9687
+ var SD = class extends x {
9688
+ constructor(u) {
9689
+ super(u, false), H(this, "options"), H(this, "cursor", 0), this.options = u.options, this.value = [...u.initialValues ?? []], this.cursor = Math.max(this.options.findIndex(({ value: t }) => t === u.cursorAt), 0), this.on("key", (t) => {
9690
+ t === "a" && this.toggleAll();
9691
+ }), this.on("cursor", (t) => {
9692
+ switch (t) {
9693
+ case "left":
9694
+ case "up":
9695
+ this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;
9696
+ break;
9697
+ case "down":
9698
+ case "right":
9699
+ this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;
9700
+ break;
9701
+ case "space":
9702
+ this.toggleValue();
9703
+ break;
9704
+ }
9705
+ });
9706
+ }
9707
+ get _value() {
9708
+ return this.options[this.cursor].value;
9709
+ }
9710
+ toggleAll() {
9711
+ const u = this.value.length === this.options.length;
9712
+ this.value = u ? [] : this.options.map((t) => t.value);
9713
+ }
9714
+ toggleValue() {
9715
+ const u = this.value.includes(this._value);
9716
+ this.value = u ? this.value.filter((t) => t !== this._value) : [...this.value, this._value];
9717
+ }
9718
+ };
9696
9719
  var OD = Object.defineProperty;
9697
9720
  var PD = (e, u, t) => (u in e) ? OD(e, u, { enumerable: true, configurable: true, writable: true, value: t }) : e[u] = t;
9698
9721
  var J = (e, u, t) => (PD(e, typeof u != "symbol" ? u + "" : u, t), t);
@@ -9864,6 +9887,47 @@ ${import_picocolors4.default.cyan(d2)}
9864
9887
  }
9865
9888
  } }).prompt();
9866
9889
  };
9890
+ var fe = (t) => {
9891
+ const n = (r2, i2) => {
9892
+ const s = r2.label ?? String(r2.value);
9893
+ return i2 === "active" ? `${import_picocolors4.default.cyan(A2)} ${s} ${r2.hint ? import_picocolors4.default.dim(`(${r2.hint})`) : ""}` : i2 === "selected" ? `${import_picocolors4.default.green(T)} ${import_picocolors4.default.dim(s)} ${r2.hint ? import_picocolors4.default.dim(`(${r2.hint})`) : ""}` : i2 === "cancelled" ? `${import_picocolors4.default.strikethrough(import_picocolors4.default.dim(s))}` : i2 === "active-selected" ? `${import_picocolors4.default.green(T)} ${s} ${r2.hint ? import_picocolors4.default.dim(`(${r2.hint})`) : ""}` : i2 === "submitted" ? `${import_picocolors4.default.dim(s)}` : `${import_picocolors4.default.dim(F)} ${import_picocolors4.default.dim(s)}`;
9894
+ };
9895
+ return new SD({ options: t.options, initialValues: t.initialValues, required: t.required ?? true, cursorAt: t.cursorAt, validate(r2) {
9896
+ if (this.required && r2.length === 0)
9897
+ return `Please select at least one option.
9898
+ ${import_picocolors4.default.reset(import_picocolors4.default.dim(`Press ${import_picocolors4.default.gray(import_picocolors4.default.bgWhite(import_picocolors4.default.inverse(" space ")))} to select, ${import_picocolors4.default.gray(import_picocolors4.default.bgWhite(import_picocolors4.default.inverse(" enter ")))} to submit`))}`;
9899
+ }, render() {
9900
+ const r2 = `${import_picocolors4.default.gray(o)}
9901
+ ${b2(this.state)} ${t.message}
9902
+ `, i2 = (s, c) => {
9903
+ const a = this.value.includes(s.value);
9904
+ return c && a ? n(s, "active-selected") : a ? n(s, "selected") : n(s, c ? "active" : "inactive");
9905
+ };
9906
+ switch (this.state) {
9907
+ case "submit":
9908
+ return `${r2}${import_picocolors4.default.gray(o)} ${this.options.filter(({ value: s }) => this.value.includes(s)).map((s) => n(s, "submitted")).join(import_picocolors4.default.dim(", ")) || import_picocolors4.default.dim("none")}`;
9909
+ case "cancel": {
9910
+ const s = this.options.filter(({ value: c }) => this.value.includes(c)).map((c) => n(c, "cancelled")).join(import_picocolors4.default.dim(", "));
9911
+ return `${r2}${import_picocolors4.default.gray(o)} ${s.trim() ? `${s}
9912
+ ${import_picocolors4.default.gray(o)}` : ""}`;
9913
+ }
9914
+ case "error": {
9915
+ const s = this.error.split(`
9916
+ `).map((c, a) => a === 0 ? `${import_picocolors4.default.yellow(d2)} ${import_picocolors4.default.yellow(c)}` : ` ${c}`).join(`
9917
+ `);
9918
+ return `${r2 + import_picocolors4.default.yellow(o)} ${G2({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style: i2 }).join(`
9919
+ ${import_picocolors4.default.yellow(o)} `)}
9920
+ ${s}
9921
+ `;
9922
+ }
9923
+ default:
9924
+ return `${r2}${import_picocolors4.default.cyan(o)} ${G2({ options: this.options, cursor: this.cursor, maxItems: t.maxItems, style: i2 }).join(`
9925
+ ${import_picocolors4.default.cyan(o)} `)}
9926
+ ${import_picocolors4.default.cyan(d2)}
9927
+ `;
9928
+ }
9929
+ } }).prompt();
9930
+ };
9867
9931
  var Me = (t = "", n = "") => {
9868
9932
  const r2 = `
9869
9933
  ${t}
@@ -9939,7 +10003,7 @@ var Y2 = ({ indicator: t = "dots" } = {}) => {
9939
10003
  }, R2 = (m2) => m2.replace(/\.+$/, ""), O2 = (m2) => {
9940
10004
  const h2 = (performance.now() - m2) / 1000, w2 = Math.floor(h2 / 60), I2 = Math.floor(h2 % 60);
9941
10005
  return w2 > 0 ? `[${w2}m ${I2}s]` : `[${I2}s]`;
9942
- }, H = (m2 = "") => {
10006
+ }, H2 = (m2 = "") => {
9943
10007
  a = true, s = fD(), l2 = R2(m2), g2 = performance.now(), process.stdout.write(`${import_picocolors4.default.gray(o)}
9944
10008
  `);
9945
10009
  let h2 = 0, w2 = 0;
@@ -9965,7 +10029,7 @@ var Y2 = ({ indicator: t = "dots" } = {}) => {
9965
10029
  `) : process.stdout.write(`${w2} ${l2}
9966
10030
  `), E(), s();
9967
10031
  };
9968
- return { start: H, stop: N2, message: (m2 = "") => {
10032
+ return { start: H2, stop: N2, message: (m2 = "") => {
9969
10033
  l2 = R2(m2 ?? l2);
9970
10034
  } };
9971
10035
  };
@@ -31083,11 +31147,175 @@ async function copilotXCli() {
31083
31147
  }
31084
31148
  }
31085
31149
 
31150
+ // src/cli/minimax/tui.ts
31151
+ init_config_context();
31152
+ init_ensure_config_directory_exists();
31153
+ init_shared();
31154
+ var import_picocolors24 = __toESM(require_picocolors(), 1);
31155
+ import { existsSync as existsSync33, readFileSync as readFileSync28, statSync as statSync4, writeFileSync as writeFileSync11 } from "fs";
31156
+ var MINIMAX_PROVIDER = "minimax-cn-coding-plan";
31157
+ var MINIMAX_MODELS = ["MiniMax-M2.7", "MiniMax-M2.7-highspeed"];
31158
+ function buildAssignments(config2) {
31159
+ const map3 = new Map;
31160
+ for (const [agent, cfg] of Object.entries(config2.agents ?? {})) {
31161
+ const model = cfg.model;
31162
+ if (!model)
31163
+ continue;
31164
+ const entry = map3.get(model) ?? { agents: [], categories: [] };
31165
+ entry.agents.push(agent);
31166
+ map3.set(model, entry);
31167
+ }
31168
+ for (const [cat, cfg] of Object.entries(config2.categories ?? {})) {
31169
+ const model = cfg.model;
31170
+ if (!model)
31171
+ continue;
31172
+ const entry = map3.get(model) ?? { agents: [], categories: [] };
31173
+ entry.categories.push(cat);
31174
+ map3.set(model, entry);
31175
+ }
31176
+ return map3;
31177
+ }
31178
+ function isEmptyOrWhitespace3(content) {
31179
+ return content.trim().length === 0;
31180
+ }
31181
+ function hintForModel(_model, assignments) {
31182
+ const parts = [];
31183
+ if (assignments.agents.length)
31184
+ parts.push(`agents: ${assignments.agents.join(", ")}`);
31185
+ if (assignments.categories.length)
31186
+ parts.push(`categories: ${assignments.categories.join(", ")}`);
31187
+ return parts.join(" ");
31188
+ }
31189
+ async function runMinimaxTui() {
31190
+ Ie(import_picocolors24.default.bgMagenta(import_picocolors24.default.black(" Minimax Model Replacement ")));
31191
+ const minimaxModel = await ve({
31192
+ message: "Select Minimax model to replace with:",
31193
+ options: MINIMAX_MODELS.map((m2) => ({
31194
+ value: m2,
31195
+ label: m2,
31196
+ hint: m2 === "MiniMax-M2.7-highspeed" ? "Premium plan required" : "Basic plan"
31197
+ })),
31198
+ initialValue: "MiniMax-M2.7"
31199
+ });
31200
+ if (pD(minimaxModel)) {
31201
+ Se(import_picocolors24.default.dim("Aborted."));
31202
+ return 0;
31203
+ }
31204
+ const qualifiedModel = `${MINIMAX_PROVIDER}/${minimaxModel}`;
31205
+ const configPath = getOmoConfigPath();
31206
+ let config2 = {};
31207
+ if (existsSync33(configPath)) {
31208
+ try {
31209
+ const stat = statSync4(configPath);
31210
+ if (stat.size > 0) {
31211
+ const content = readFileSync28(configPath, "utf-8");
31212
+ if (!isEmptyOrWhitespace3(content)) {
31213
+ const parsed = parseJsonc(content);
31214
+ if (parsed && typeof parsed === "object")
31215
+ config2 = parsed;
31216
+ }
31217
+ }
31218
+ } catch {}
31219
+ }
31220
+ const assignments = buildAssignments(config2);
31221
+ const models = Array.from(assignments.keys()).sort();
31222
+ if (models.length === 0) {
31223
+ M2.warn("No models found in config \u2014 nothing to replace.");
31224
+ Se(import_picocolors24.default.dim("Done."));
31225
+ return 0;
31226
+ }
31227
+ const selected = await fe({
31228
+ message: `Replace with ${import_picocolors24.default.cyan(qualifiedModel)} (select models to swap):`,
31229
+ options: models.map((m2) => ({
31230
+ value: m2,
31231
+ label: m2,
31232
+ hint: hintForModel(m2, assignments.get(m2))
31233
+ })),
31234
+ required: false
31235
+ });
31236
+ if (pD(selected)) {
31237
+ Se(import_picocolors24.default.dim("Aborted."));
31238
+ return 0;
31239
+ }
31240
+ if (!selected || Array.isArray(selected) && selected.length === 0) {
31241
+ Se(import_picocolors24.default.dim("No models selected \u2014 nothing changed."));
31242
+ return 0;
31243
+ }
31244
+ const patch = {};
31245
+ for (const model of selected) {
31246
+ const assign = assignments.get(model);
31247
+ if (!assign)
31248
+ continue;
31249
+ for (const agent of assign.agents) {
31250
+ if (!patch.agents)
31251
+ patch.agents = {};
31252
+ patch.agents[agent] = { model: qualifiedModel };
31253
+ }
31254
+ for (const cat of assign.categories) {
31255
+ if (!patch.categories)
31256
+ patch.categories = {};
31257
+ patch.categories[cat] = { model: qualifiedModel };
31258
+ }
31259
+ }
31260
+ try {
31261
+ ensureConfigDirectoryExists();
31262
+ } catch (err) {
31263
+ console.error(formatErrorWithSuggestion(err, "create config directory"));
31264
+ return 1;
31265
+ }
31266
+ try {
31267
+ if (existsSync33(configPath)) {
31268
+ const stat = statSync4(configPath);
31269
+ const content = readFileSync28(configPath, "utf-8");
31270
+ if (stat.size > 0 && !isEmptyOrWhitespace3(content)) {
31271
+ try {
31272
+ const existing = parseJsonc(content);
31273
+ if (existing && typeof existing === "object" && !Array.isArray(existing)) {
31274
+ const merged = deepMergeRecord(existing, patch);
31275
+ writeFileSync11(configPath, JSON.stringify(merged, null, 2) + `
31276
+ `);
31277
+ } else {
31278
+ writeFileSync11(configPath, JSON.stringify(patch, null, 2) + `
31279
+ `);
31280
+ }
31281
+ } catch {
31282
+ writeFileSync11(configPath, JSON.stringify(patch, null, 2) + `
31283
+ `);
31284
+ }
31285
+ } else {
31286
+ writeFileSync11(configPath, JSON.stringify(patch, null, 2) + `
31287
+ `);
31288
+ }
31289
+ } else {
31290
+ writeFileSync11(configPath, JSON.stringify(patch, null, 2) + `
31291
+ `);
31292
+ }
31293
+ } catch (err) {
31294
+ console.error(formatErrorWithSuggestion(err, "write oh-my-magento config"));
31295
+ return 1;
31296
+ }
31297
+ M2.success(`Replaced ${import_picocolors24.default.yellow(String(selected.length))} model(s) \u2192 ${import_picocolors24.default.cyan(qualifiedModel)} in ${import_picocolors24.default.dim(configPath)}`);
31298
+ Se(import_picocolors24.default.dim("Done."));
31299
+ return 0;
31300
+ }
31301
+
31302
+ // src/cli/minimax/index.ts
31303
+ function createMinimaxCommand() {
31304
+ const minimax = new Command("minimax").description("Replace configured models with Minimax").addHelpText("after", `
31305
+ Examples:
31306
+ $ bunx oh-my-magento minimax
31307
+ `).action(async () => {
31308
+ const exitCode = await runMinimaxTui();
31309
+ process.exit(exitCode);
31310
+ });
31311
+ return minimax;
31312
+ }
31313
+
31086
31314
  // src/cli/usage/opencode-db-connection.ts
31087
31315
  init_data_path();
31088
31316
  import { Database } from "bun:sqlite";
31089
31317
  import { join as join32 } from "path";
31090
- import { existsSync as existsSync33 } from "fs";
31318
+ import { existsSync as existsSync34 } from "fs";
31091
31319
  function getDbPath() {
31092
31320
  const envPath = process.env.OPENCODE_DB;
31093
31321
  if (envPath)
@@ -31095,7 +31323,7 @@ function getDbPath() {
31095
31323
  return join32(getDataDir(), "opencode", "opencode.db");
31096
31324
  }
31097
31325
  function createConnection(dbPath) {
31098
- if (!existsSync33(dbPath)) {
31326
+ if (!existsSync34(dbPath)) {
31099
31327
  throw new Error(`OpenCode database not found at ${dbPath}
31100
31328
  Set OPENCODE_DB env var to override.`);
31101
31329
  }
@@ -31410,7 +31638,7 @@ class OpenCodeDB {
31410
31638
  }
31411
31639
 
31412
31640
  // src/cli/usage/render-format.ts
31413
- var import_picocolors24 = __toESM(require_picocolors(), 1);
31641
+ var import_picocolors25 = __toESM(require_picocolors(), 1);
31414
31642
  function formatTokens(n) {
31415
31643
  if (n >= 1e9)
31416
31644
  return `${(n / 1e9).toFixed(1)}B`;
@@ -31429,10 +31657,10 @@ function formatCost(c) {
31429
31657
  }
31430
31658
  function formatDelta(pct) {
31431
31659
  if (pct > 0)
31432
- return import_picocolors24.default.red(`+${pct.toFixed(0)}%`);
31660
+ return import_picocolors25.default.red(`+${pct.toFixed(0)}%`);
31433
31661
  if (pct < 0)
31434
- return import_picocolors24.default.green(`${pct.toFixed(0)}%`);
31435
- return import_picocolors24.default.dim("0%");
31662
+ return import_picocolors25.default.green(`${pct.toFixed(0)}%`);
31663
+ return import_picocolors25.default.dim("0%");
31436
31664
  }
31437
31665
  // src/cli/usage/render-helpers.ts
31438
31666
  function stripAnsi2(str3) {
@@ -31486,20 +31714,20 @@ function bottomBorder(widths) {
31486
31714
  return "\u2514" + widths.map((w2) => "\u2500".repeat(w2 + 2)).join("\u2534") + "\u2518";
31487
31715
  }
31488
31716
  // src/cli/usage/render-summary.ts
31489
- var import_picocolors25 = __toESM(require_picocolors(), 1);
31717
+ var import_picocolors26 = __toESM(require_picocolors(), 1);
31490
31718
  function renderSummary(total, period, prevTotal) {
31491
31719
  const parts = [];
31492
- parts.push(`Calls: ${import_picocolors25.default.bold(import_picocolors25.default.magenta(total.calls.toLocaleString()))}`);
31720
+ parts.push(`Calls: ${import_picocolors26.default.bold(import_picocolors26.default.magenta(total.calls.toLocaleString()))}`);
31493
31721
  if (prevTotal && prevTotal.calls > 0) {
31494
31722
  const pct = (total.calls - prevTotal.calls) / prevTotal.calls * 100;
31495
31723
  parts.push(` ${formatDelta(pct)}`);
31496
31724
  }
31497
- parts.push(` \u2502 Tokens: ${import_picocolors25.default.bold(formatTokens(total.tokens.total))}`);
31725
+ parts.push(` \u2502 Tokens: ${import_picocolors26.default.bold(formatTokens(total.tokens.total))}`);
31498
31726
  if (prevTotal && prevTotal.tokens.total > 0) {
31499
31727
  const pct = (total.tokens.total - prevTotal.tokens.total) / prevTotal.tokens.total * 100;
31500
31728
  parts.push(` ${formatDelta(pct)}`);
31501
31729
  }
31502
- parts.push(` \u2502 Cost: ${import_picocolors25.default.bold(import_picocolors25.default.red(formatCost(total.cost)))}`);
31730
+ parts.push(` \u2502 Cost: ${import_picocolors26.default.bold(import_picocolors26.default.red(formatCost(total.cost)))}`);
31503
31731
  if (prevTotal && prevTotal.cost > 0) {
31504
31732
  const pct = (total.cost - prevTotal.cost) / prevTotal.cost * 100;
31505
31733
  parts.push(` ${formatDelta(pct)}`);
@@ -31509,7 +31737,7 @@ function renderSummary(total, period, prevTotal) {
31509
31737
  const title = `OpenCode Usage \u2014 ${period}`;
31510
31738
  const innerWidth = Math.max(title.length + 6, rawContentLen + 2);
31511
31739
  const titlePad = innerWidth - title.length - 5;
31512
- const titleLine = `\u256D\u2500\u2500\u2500 ${import_picocolors25.default.bold(title)} ${"\u2500".repeat(Math.max(1, titlePad))}\u256E`;
31740
+ const titleLine = `\u256D\u2500\u2500\u2500 ${import_picocolors26.default.bold(title)} ${"\u2500".repeat(Math.max(1, titlePad))}\u256E`;
31513
31741
  const contentLine = `\u2502 ${content}${" ".repeat(Math.max(0, innerWidth - rawContentLen - 2))} \u2502`;
31514
31742
  const bottomLine = `\u2570${"\u2500".repeat(innerWidth)}\u256F`;
31515
31743
  console.log();
@@ -31518,16 +31746,16 @@ function renderSummary(total, period, prevTotal) {
31518
31746
  console.log(bottomLine);
31519
31747
  }
31520
31748
  // src/cli/usage/render-tables.ts
31521
- var import_picocolors26 = __toESM(require_picocolors(), 1);
31749
+ var import_picocolors27 = __toESM(require_picocolors(), 1);
31522
31750
  function renderDaily(rows, period) {
31523
- const title = import_picocolors26.default.bold(`Daily Usage (${period})`);
31751
+ const title = import_picocolors27.default.bold(`Daily Usage (${period})`);
31524
31752
  console.log();
31525
31753
  console.log(` ${title}`);
31526
31754
  const widths = [12, 7, 7, 7, 7, 7, 8, 8, 10];
31527
31755
  const headers = ["Date", "Calls", "Input", "Output", "Cache R", "Cache W", "Total", "Cost", "Trend"];
31528
- console.log(import_picocolors26.default.dim(topBorder(widths)));
31529
- console.log(import_picocolors26.default.cyan(import_picocolors26.default.bold(headerRow(headers, widths))));
31530
- console.log(import_picocolors26.default.dim(separator(widths)));
31756
+ console.log(import_picocolors27.default.dim(topBorder(widths)));
31757
+ console.log(import_picocolors27.default.cyan(import_picocolors27.default.bold(headerRow(headers, widths))));
31758
+ console.log(import_picocolors27.default.dim(separator(widths)));
31531
31759
  const maxTokens = Math.max(...rows.map((r2) => r2.tokens.total), 1);
31532
31760
  for (const r2 of rows) {
31533
31761
  const cells = [
@@ -31539,11 +31767,11 @@ function renderDaily(rows, period) {
31539
31767
  ` ${padLeft(formatTokens(r2.tokens.cacheWrite), widths[5])} `,
31540
31768
  ` ${padLeft(formatTokens(r2.tokens.total), widths[6])} `,
31541
31769
  ` ${padLeft(formatCost(r2.cost), widths[7])} `,
31542
- ` ${padRight(import_picocolors26.default.cyan(sparkBar(r2.tokens.total, maxTokens, widths[8])), widths[8])} `
31770
+ ` ${padRight(import_picocolors27.default.cyan(sparkBar(r2.tokens.total, maxTokens, widths[8])), widths[8])} `
31543
31771
  ];
31544
31772
  console.log("\u2502" + cells.join("\u2502") + "\u2502");
31545
31773
  }
31546
- console.log(import_picocolors26.default.dim(bottomBorder(widths)));
31774
+ console.log(import_picocolors27.default.dim(bottomBorder(widths)));
31547
31775
  }
31548
31776
  function renderGrouped(rows, groupBy, period, deltas) {
31549
31777
  const labelMap = {
@@ -31555,7 +31783,7 @@ function renderGrouped(rows, groupBy, period, deltas) {
31555
31783
  const labelHeader = labelMap[groupBy] ?? groupBy;
31556
31784
  const showDetail = groupBy === "agent";
31557
31785
  const showBreakdown = groupBy !== "session" && groupBy !== "agent";
31558
- const title = import_picocolors26.default.bold(`Usage by ${labelHeader} (${period})`);
31786
+ const title = import_picocolors27.default.bold(`Usage by ${labelHeader} (${period})`);
31559
31787
  console.log();
31560
31788
  console.log(` ${title}`);
31561
31789
  const widths = [24];
@@ -31576,14 +31804,14 @@ function renderGrouped(rows, groupBy, period, deltas) {
31576
31804
  widths.push(7);
31577
31805
  headers.push("Delta");
31578
31806
  }
31579
- console.log(import_picocolors26.default.dim(topBorder(widths)));
31580
- console.log(import_picocolors26.default.cyan(import_picocolors26.default.bold(headerRow(headers, widths))));
31581
- console.log(import_picocolors26.default.dim(separator(widths)));
31807
+ console.log(import_picocolors27.default.dim(topBorder(widths)));
31808
+ console.log(import_picocolors27.default.cyan(import_picocolors27.default.bold(headerRow(headers, widths))));
31809
+ console.log(import_picocolors27.default.dim(separator(widths)));
31582
31810
  let prevLabel = "";
31583
31811
  for (let i2 = 0;i2 < rows.length; i2++) {
31584
31812
  const r2 = rows[i2];
31585
31813
  if (showDetail && prevLabel && r2.label !== prevLabel) {
31586
- console.log(import_picocolors26.default.dim(separator(widths)));
31814
+ console.log(import_picocolors27.default.dim(separator(widths)));
31587
31815
  }
31588
31816
  const displayLabel = r2.label !== prevLabel ? r2.label : "";
31589
31817
  prevLabel = r2.label;
@@ -31592,89 +31820,89 @@ function renderGrouped(rows, groupBy, period, deltas) {
31592
31820
  ];
31593
31821
  let colIdx = 1;
31594
31822
  if (showDetail) {
31595
- cells.push(` ${padRight(import_picocolors26.default.dim(r2.detail ?? ""), widths[colIdx])} `);
31823
+ cells.push(` ${padRight(import_picocolors27.default.dim(r2.detail ?? ""), widths[colIdx])} `);
31596
31824
  colIdx++;
31597
31825
  }
31598
- cells.push(` ${padLeft(import_picocolors26.default.magenta(String(r2.calls)), widths[colIdx])} `);
31826
+ cells.push(` ${padLeft(import_picocolors27.default.magenta(String(r2.calls)), widths[colIdx])} `);
31599
31827
  colIdx++;
31600
31828
  if (showBreakdown) {
31601
- cells.push(` ${padLeft(import_picocolors26.default.green(formatTokens(r2.tokens.input)), widths[colIdx])} `);
31829
+ cells.push(` ${padLeft(import_picocolors27.default.green(formatTokens(r2.tokens.input)), widths[colIdx])} `);
31602
31830
  colIdx++;
31603
- cells.push(` ${padLeft(import_picocolors26.default.yellow(formatTokens(r2.tokens.output)), widths[colIdx])} `);
31831
+ cells.push(` ${padLeft(import_picocolors27.default.yellow(formatTokens(r2.tokens.output)), widths[colIdx])} `);
31604
31832
  colIdx++;
31605
- cells.push(` ${padLeft(import_picocolors26.default.dim(formatTokens(r2.tokens.cacheRead)), widths[colIdx])} `);
31833
+ cells.push(` ${padLeft(import_picocolors27.default.dim(formatTokens(r2.tokens.cacheRead)), widths[colIdx])} `);
31606
31834
  colIdx++;
31607
- cells.push(` ${padLeft(import_picocolors26.default.dim(formatTokens(r2.tokens.cacheWrite)), widths[colIdx])} `);
31835
+ cells.push(` ${padLeft(import_picocolors27.default.dim(formatTokens(r2.tokens.cacheWrite)), widths[colIdx])} `);
31608
31836
  colIdx++;
31609
31837
  }
31610
- cells.push(` ${padLeft(import_picocolors26.default.bold(formatTokens(r2.tokens.total)), widths[colIdx])} `);
31838
+ cells.push(` ${padLeft(import_picocolors27.default.bold(formatTokens(r2.tokens.total)), widths[colIdx])} `);
31611
31839
  colIdx++;
31612
- cells.push(` ${padLeft(import_picocolors26.default.red(formatCost(r2.cost)), widths[colIdx])} `);
31840
+ cells.push(` ${padLeft(import_picocolors27.default.red(formatCost(r2.cost)), widths[colIdx])} `);
31613
31841
  colIdx++;
31614
31842
  if (deltas) {
31615
31843
  const d3 = deltas[i2];
31616
- const deltaStr = d3 !== undefined ? formatDelta(d3) : import_picocolors26.default.dim("-");
31844
+ const deltaStr = d3 !== undefined ? formatDelta(d3) : import_picocolors27.default.dim("-");
31617
31845
  cells.push(` ${padLeft(deltaStr, widths[colIdx])} `);
31618
31846
  }
31619
31847
  console.log("\u2502" + cells.join("\u2502") + "\u2502");
31620
31848
  }
31621
- console.log(import_picocolors26.default.dim(bottomBorder(widths)));
31849
+ console.log(import_picocolors27.default.dim(bottomBorder(widths)));
31622
31850
  }
31623
31851
  function renderNoData() {
31624
31852
  console.log();
31625
- console.log(import_picocolors26.default.yellow("No usage data found for the specified period."));
31626
- console.log(import_picocolors26.default.dim("Make sure OpenCode has been used and the database exists."));
31853
+ console.log(import_picocolors27.default.yellow("No usage data found for the specified period."));
31854
+ console.log(import_picocolors27.default.dim("Make sure OpenCode has been used and the database exists."));
31627
31855
  }
31628
31856
  // src/cli/usage/render-report.ts
31629
- var import_picocolors27 = __toESM(require_picocolors(), 1);
31857
+ var import_picocolors28 = __toESM(require_picocolors(), 1);
31630
31858
  function renderReportAsTerminal(report, options) {
31631
- const content = `User: ${import_picocolors27.default.cyan(options.user)} \u2502 Period: ${options.date} full day`;
31859
+ const content = `User: ${import_picocolors28.default.cyan(options.user)} \u2502 Period: ${options.date} full day`;
31632
31860
  const rawContentLen = stripAnsi2(content).length;
31633
31861
  const title = `AI Usage Report \u2014 ${options.date}`;
31634
31862
  const innerWidth = Math.max(title.length + 6, rawContentLen + 2);
31635
31863
  const titlePad = innerWidth - title.length - 5;
31636
- const titleLine = `\u256D\u2500\u2500\u2500 ${import_picocolors27.default.bold(title)} ${"\u2500".repeat(Math.max(1, titlePad))}\u256E`;
31864
+ const titleLine = `\u256D\u2500\u2500\u2500 ${import_picocolors28.default.bold(title)} ${"\u2500".repeat(Math.max(1, titlePad))}\u256E`;
31637
31865
  const contentLine = `\u2502 ${content}${" ".repeat(Math.max(0, innerWidth - rawContentLen - 2))} \u2502`;
31638
31866
  const bottomLine = `\u2570${"\u2500".repeat(innerWidth)}\u256F`;
31639
31867
  console.log();
31640
31868
  console.log(titleLine);
31641
31869
  console.log(contentLine);
31642
31870
  console.log(bottomLine);
31643
- const investmentTitle = import_picocolors27.default.bold("Investment");
31871
+ const investmentTitle = import_picocolors28.default.bold("Investment");
31644
31872
  console.log();
31645
31873
  console.log(` ${investmentTitle}`);
31646
31874
  const invW = [16, 12];
31647
- console.log(import_picocolors27.default.dim(topBorder(invW)));
31875
+ console.log(import_picocolors28.default.dim(topBorder(invW)));
31648
31876
  console.log("\u2502" + ` ${padRight("Metric", invW[0])} ` + "\u2502" + ` ${padRight("Value", invW[1])} ` + "\u2502");
31649
- console.log(import_picocolors27.default.dim(separator(invW)));
31877
+ console.log(import_picocolors28.default.dim(separator(invW)));
31650
31878
  console.log("\u2502" + ` ${padRight("Sessions", invW[0])} ` + "\u2502" + ` ${padLeft(String(report.investment.sessions), invW[1])} ` + "\u2502");
31651
31879
  console.log("\u2502" + ` ${padRight("Total Tokens", invW[0])} ` + "\u2502" + ` ${padLeft(formatTokens(report.investment.tokens), invW[1])} ` + "\u2502");
31652
31880
  console.log("\u2502" + ` ${padRight("Estimated Cost", invW[0])} ` + "\u2502" + ` ${padLeft(formatCost(report.investment.cost), invW[1])} ` + "\u2502");
31653
31881
  console.log("\u2502" + ` ${padRight("Models Used", invW[0])} ` + "\u2502" + ` ${padLeft(String(report.investment.models_used.length), invW[1])} ` + "\u2502");
31654
- console.log(import_picocolors27.default.dim(bottomBorder(invW)));
31882
+ console.log(import_picocolors28.default.dim(bottomBorder(invW)));
31655
31883
  if (report.output) {
31656
- const outputTitle = import_picocolors27.default.bold("Output");
31884
+ const outputTitle = import_picocolors28.default.bold("Output");
31657
31885
  console.log();
31658
31886
  console.log(` ${outputTitle}`);
31659
31887
  const outW = [16, 12];
31660
- console.log(import_picocolors27.default.dim(topBorder(outW)));
31888
+ console.log(import_picocolors28.default.dim(topBorder(outW)));
31661
31889
  console.log("\u2502" + ` ${padRight("Metric", outW[0])} ` + "\u2502" + ` ${padRight("Value", outW[1])} ` + "\u2502");
31662
- console.log(import_picocolors27.default.dim(separator(outW)));
31890
+ console.log(import_picocolors28.default.dim(separator(outW)));
31663
31891
  console.log("\u2502" + ` ${padRight("Commits", outW[0])} ` + "\u2502" + ` ${padLeft(String(report.output.commits), outW[1])} ` + "\u2502");
31664
31892
  console.log("\u2502" + ` ${padRight("Files Changed", outW[0])} ` + "\u2502" + ` ${padLeft(String(report.output.files_changed), outW[1])} ` + "\u2502");
31665
31893
  console.log("\u2502" + ` ${padRight("Lines Added", outW[0])} ` + "\u2502" + ` ${padLeft(report.output.lines_added.toLocaleString(), outW[1])} ` + "\u2502");
31666
31894
  console.log("\u2502" + ` ${padRight("Lines Removed", outW[0])} ` + "\u2502" + ` ${padLeft(report.output.lines_removed.toLocaleString(), outW[1])} ` + "\u2502");
31667
31895
  console.log("\u2502" + ` ${padRight("Branches", outW[0])} ` + "\u2502" + ` ${padLeft(String(report.output.branches.length), outW[1])} ` + "\u2502");
31668
- console.log(import_picocolors27.default.dim(bottomBorder(outW)));
31896
+ console.log(import_picocolors28.default.dim(bottomBorder(outW)));
31669
31897
  }
31670
31898
  if (report.efficiency) {
31671
- const efficiencyTitle = import_picocolors27.default.bold("Efficiency");
31899
+ const efficiencyTitle = import_picocolors28.default.bold("Efficiency");
31672
31900
  console.log();
31673
31901
  console.log(` ${efficiencyTitle}`);
31674
31902
  const effW = [24, 16];
31675
- console.log(import_picocolors27.default.dim(topBorder(effW)));
31903
+ console.log(import_picocolors28.default.dim(topBorder(effW)));
31676
31904
  console.log("\u2502" + ` ${padRight("Metric", effW[0])} ` + "\u2502" + ` ${padRight("Value", effW[1])} ` + "\u2502");
31677
- console.log(import_picocolors27.default.dim(separator(effW)));
31905
+ console.log(import_picocolors28.default.dim(separator(effW)));
31678
31906
  if (report.efficiency.cost_per_commit !== null) {
31679
31907
  console.log("\u2502" + ` ${padRight("Cost per Commit", effW[0])} ` + "\u2502" + ` ${padLeft(formatCost(report.efficiency.cost_per_commit), effW[1])} ` + "\u2502");
31680
31908
  }
@@ -31687,7 +31915,7 @@ function renderReportAsTerminal(report, options) {
31687
31915
  if (report.efficiency.session_productivity_score !== null) {
31688
31916
  console.log("\u2502" + ` ${padRight("Session Productivity", effW[0])} ` + "\u2502" + ` ${padLeft(report.efficiency.session_productivity_score.toFixed(2), effW[1])} ` + "\u2502");
31689
31917
  }
31690
- console.log(import_picocolors27.default.dim(bottomBorder(effW)));
31918
+ console.log(import_picocolors28.default.dim(bottomBorder(effW)));
31691
31919
  }
31692
31920
  if (report.project_breakdown && report.project_breakdown.length > 1) {
31693
31921
  renderBreakdownTable("Project Breakdown", report.project_breakdown);
@@ -31698,26 +31926,26 @@ function renderReportAsTerminal(report, options) {
31698
31926
  }
31699
31927
  function renderBreakdownTable(title, entries) {
31700
31928
  console.log();
31701
- console.log(` ${import_picocolors27.default.bold(title)}`);
31929
+ console.log(` ${import_picocolors28.default.bold(title)}`);
31702
31930
  const labelWidth = Math.max(16, ...entries.map((e2) => e2.label.length + 2));
31703
31931
  const colWidths = [labelWidth, 8, 10, 7, 8];
31704
31932
  const headers = ["Name", "Sessions", "Tokens", "Commits", "+Lines"];
31705
- console.log(import_picocolors27.default.dim(topBorder(colWidths)));
31933
+ console.log(import_picocolors28.default.dim(topBorder(colWidths)));
31706
31934
  console.log(headerRow(headers, colWidths));
31707
- console.log(import_picocolors27.default.dim(separator(colWidths)));
31935
+ console.log(import_picocolors28.default.dim(separator(colWidths)));
31708
31936
  for (const entry of entries) {
31709
31937
  console.log("\u2502" + ` ${padRight(entry.label, colWidths[0])} ` + "\u2502" + ` ${padLeft(String(entry.sessions), colWidths[1])} ` + "\u2502" + ` ${padLeft(formatTokens(entry.tokens), colWidths[2])} ` + "\u2502" + ` ${padLeft(String(entry.commits), colWidths[3])} ` + "\u2502" + ` ${padLeft(`+${entry.lines_added.toLocaleString()}`, colWidths[4])} ` + "\u2502");
31710
31938
  }
31711
- console.log(import_picocolors27.default.dim(bottomBorder(colWidths)));
31939
+ console.log(import_picocolors28.default.dim(bottomBorder(colWidths)));
31712
31940
  }
31713
31941
  // src/cli/usage/report-generator.ts
31714
31942
  import { execSync } from "child_process";
31715
- import { writeFileSync as writeFileSync11 } from "fs";
31943
+ import { writeFileSync as writeFileSync12 } from "fs";
31716
31944
 
31717
31945
  // src/cli/usage/report-data-aggregator.ts
31718
31946
  init_data_path();
31719
31947
  import { Database as Database3 } from "bun:sqlite";
31720
- import { existsSync as existsSync35 } from "fs";
31948
+ import { existsSync as existsSync36 } from "fs";
31721
31949
  import { join as join34 } from "path";
31722
31950
 
31723
31951
  // src/cli/usage/efficiency-calculator.ts
@@ -31756,7 +31984,7 @@ function calculateAllMetrics(params) {
31756
31984
  init_data_path();
31757
31985
  import { Database as Database2 } from "bun:sqlite";
31758
31986
  import { join as join33 } from "path";
31759
- import { existsSync as existsSync34, mkdirSync as mkdirSync8 } from "fs";
31987
+ import { existsSync as existsSync35, mkdirSync as mkdirSync8 } from "fs";
31760
31988
 
31761
31989
  // src/features/dev-metrics/schema.ts
31762
31990
  var CREATE_SESSION_CONTEXT_TABLE = `
@@ -31811,7 +32039,7 @@ class DevMetricsDB {
31811
32039
  constructor(dbPath) {
31812
32040
  this.path = dbPath ?? join33(getDataDir(), "oh-my-opencode", "dev-metrics.db");
31813
32041
  const dir = this.path.substring(0, this.path.lastIndexOf("/"));
31814
- if (!existsSync34(dir)) {
32042
+ if (!existsSync35(dir)) {
31815
32043
  mkdirSync8(dir, { recursive: true });
31816
32044
  }
31817
32045
  this.db = new Database2(this.path);
@@ -32156,7 +32384,7 @@ function buildReportData(options) {
32156
32384
  sessions: investmentSessions
32157
32385
  };
32158
32386
  const devMetricsPath = options.devMetricsDbPath ?? getDefaultDevMetricsDbPath();
32159
- if (!existsSync35(devMetricsPath)) {
32387
+ if (!existsSync36(devMetricsPath)) {
32160
32388
  return { investment, output: null, efficiency: null, project_breakdown: null, branch_breakdown: null };
32161
32389
  }
32162
32390
  const outputResult = readOutputData(devMetricsPath, dateRange);
@@ -32383,7 +32611,7 @@ function executeReport(options) {
32383
32611
  }
32384
32612
  if (options.output) {
32385
32613
  const markdown = renderReportAsMarkdown(report, { user: userName, date: dateLabel });
32386
- writeFileSync11(options.output, markdown, "utf-8");
32614
+ writeFileSync12(options.output, markdown, "utf-8");
32387
32615
  console.log(`Report saved to ${options.output}`);
32388
32616
  } else {
32389
32617
  renderReportAsTerminal(report, { user: userName, date: dateLabel });
@@ -32881,6 +33109,7 @@ program2.command("version").description("Show version information").action(() =>
32881
33109
  });
32882
33110
  program2.addCommand(createMcpOAuthCommand());
32883
33111
  program2.addCommand(createUsageCommand());
33112
+ program2.addCommand(createMinimaxCommand());
32884
33113
  program2.command("copilot-x").description("Manage GitHub Copilot accounts: add, switch, check quotas, toggle Loop Safety/Network Retry").addHelpText("after", `
32885
33114
  Examples:
32886
33115
  $ bunx oh-my-opencode copilot-x
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function createMinimaxCommand(): Command;
@@ -0,0 +1 @@
1
+ export declare function runMinimaxTui(): Promise<number>;
package/dist/index.js CHANGED
@@ -51,7 +51,7 @@ var package_default;
51
51
  var init_package = __esm(() => {
52
52
  package_default = {
53
53
  name: "oh-my-magento",
54
- version: "0.3.1",
54
+ version: "0.3.2",
55
55
  description: "Magento 2 + Hyv\xE4 Enterprise E-Commerce Intelligent Agent Orchestration System - OpenCode Plugin",
56
56
  main: "dist/index.js",
57
57
  types: "dist/index.d.ts",
@@ -131,17 +131,17 @@ var init_package = __esm(() => {
131
131
  typescript: "^5.7.3"
132
132
  },
133
133
  optionalDependencies: {
134
- "oh-my-magento-darwin-arm64": "0.3.1",
135
- "oh-my-magento-darwin-x64": "0.3.1",
136
- "oh-my-magento-darwin-x64-baseline": "0.3.1",
137
- "oh-my-magento-linux-arm64": "0.3.1",
138
- "oh-my-magento-linux-arm64-musl": "0.3.1",
139
- "oh-my-magento-linux-x64": "0.3.1",
140
- "oh-my-magento-linux-x64-baseline": "0.3.1",
141
- "oh-my-magento-linux-x64-musl": "0.3.1",
142
- "oh-my-magento-linux-x64-musl-baseline": "0.3.1",
143
- "oh-my-magento-windows-x64": "0.3.1",
144
- "oh-my-magento-windows-x64-baseline": "0.3.1"
134
+ "oh-my-magento-darwin-arm64": "0.3.2",
135
+ "oh-my-magento-darwin-x64": "0.3.2",
136
+ "oh-my-magento-darwin-x64-baseline": "0.3.2",
137
+ "oh-my-magento-linux-arm64": "0.3.2",
138
+ "oh-my-magento-linux-arm64-musl": "0.3.2",
139
+ "oh-my-magento-linux-x64": "0.3.2",
140
+ "oh-my-magento-linux-x64-baseline": "0.3.2",
141
+ "oh-my-magento-linux-x64-musl": "0.3.2",
142
+ "oh-my-magento-linux-x64-musl-baseline": "0.3.2",
143
+ "oh-my-magento-windows-x64": "0.3.2",
144
+ "oh-my-magento-windows-x64-baseline": "0.3.2"
145
145
  },
146
146
  overrides: {
147
147
  "@opencode-ai/sdk": "^1.2.24"
@@ -17323,7 +17323,6 @@ var AGENT_MODEL_REQUIREMENTS = {
17323
17323
  variant: "max"
17324
17324
  },
17325
17325
  { providers: ["opencode-go"], model: "kimi-k2.5" },
17326
- { providers: ["kimi-for-coding"], model: "k2p5" },
17327
17326
  {
17328
17327
  providers: [
17329
17328
  "opencode",
@@ -17335,6 +17334,7 @@ var AGENT_MODEL_REQUIREMENTS = {
17335
17334
  ],
17336
17335
  model: "kimi-k2.5"
17337
17336
  },
17337
+ { providers: ["kimi-for-coding"], model: "k2p5" },
17338
17338
  { providers: ["openai", "github-copilot", "opencode"], model: "gpt-5.4", variant: "medium" },
17339
17339
  { providers: ["zai-coding-plan", "opencode"], model: "glm-5" },
17340
17340
  { providers: ["opencode"], model: "big-pickle" }
@@ -17552,10 +17552,6 @@ var CATEGORY_MODEL_REQUIREMENTS = {
17552
17552
  },
17553
17553
  quick: {
17554
17554
  fallbackChain: [
17555
- {
17556
- providers: ["openai", "github-copilot", "opencode"],
17557
- model: "gpt-5.4-mini"
17558
- },
17559
17555
  {
17560
17556
  providers: ["anthropic", "github-copilot", "opencode"],
17561
17557
  model: "claude-haiku-4-5"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-magento",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Magento 2 + Hyvä Enterprise E-Commerce Intelligent Agent Orchestration System - OpenCode Plugin",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -80,17 +80,17 @@
80
80
  "typescript": "^5.7.3"
81
81
  },
82
82
  "optionalDependencies": {
83
- "oh-my-magento-darwin-arm64": "0.3.1",
84
- "oh-my-magento-darwin-x64": "0.3.1",
85
- "oh-my-magento-darwin-x64-baseline": "0.3.1",
86
- "oh-my-magento-linux-arm64": "0.3.1",
87
- "oh-my-magento-linux-arm64-musl": "0.3.1",
88
- "oh-my-magento-linux-x64": "0.3.1",
89
- "oh-my-magento-linux-x64-baseline": "0.3.1",
90
- "oh-my-magento-linux-x64-musl": "0.3.1",
91
- "oh-my-magento-linux-x64-musl-baseline": "0.3.1",
92
- "oh-my-magento-windows-x64": "0.3.1",
93
- "oh-my-magento-windows-x64-baseline": "0.3.1"
83
+ "oh-my-magento-darwin-arm64": "0.3.2",
84
+ "oh-my-magento-darwin-x64": "0.3.2",
85
+ "oh-my-magento-darwin-x64-baseline": "0.3.2",
86
+ "oh-my-magento-linux-arm64": "0.3.2",
87
+ "oh-my-magento-linux-arm64-musl": "0.3.2",
88
+ "oh-my-magento-linux-x64": "0.3.2",
89
+ "oh-my-magento-linux-x64-baseline": "0.3.2",
90
+ "oh-my-magento-linux-x64-musl": "0.3.2",
91
+ "oh-my-magento-linux-x64-musl-baseline": "0.3.2",
92
+ "oh-my-magento-windows-x64": "0.3.2",
93
+ "oh-my-magento-windows-x64-baseline": "0.3.2"
94
94
  },
95
95
  "overrides": {
96
96
  "@opencode-ai/sdk": "^1.2.24"