@reinamaccredy/oh-my-opencode 3.0.0-beta.11 → 3.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,6 +40,8 @@ export interface AgentPromptMetadata {
40
40
  keyTrigger?: string;
41
41
  }
42
42
  export declare function isGptModel(model: string): boolean;
43
+ export declare function isProxyPalGptModel(model: string): boolean;
44
+ export declare function getGptReasoningEffort(model: string): "medium" | "xhigh";
43
45
  export type BuiltinAgentName = "Sisyphus" | "oracle" | "librarian" | "explore" | "frontend-ui-ux-engineer" | "document-writer" | "multimodal-looker" | "Metis (Plan Consultant)" | "Momus (Plan Reviewer)" | "orchestrator-sisyphus";
44
46
  export type OverridableAgentName = "build" | BuiltinAgentName;
45
47
  export type AgentName = BuiltinAgentName;
package/dist/cli/index.js CHANGED
@@ -2253,7 +2253,7 @@ var require_picocolors = __commonJS((exports, module) => {
2253
2253
  var require_package = __commonJS((exports, module) => {
2254
2254
  module.exports = {
2255
2255
  name: "@reinamaccredy/oh-my-opencode",
2256
- version: "3.0.0-beta.11",
2256
+ version: "3.0.0-beta.12",
2257
2257
  description: "Fork of oh-my-opencode with Maestro workflow integration - Multi-Model Orchestration, Parallel Background Agents, Design Phases, and TDD Methodology",
2258
2258
  main: "dist/index.js",
2259
2259
  types: "dist/index.d.ts",
package/dist/index.js CHANGED
@@ -9048,11 +9048,15 @@ function createTodoContinuationEnforcer(ctx, options = {}) {
9048
9048
  }).catch(() => {});
9049
9049
  }
9050
9050
  async function injectContinuation(sessionID, incompleteCount, total) {
9051
- const state2 = sessions.get(sessionID);
9052
- if (state2?.isRecovering) {
9051
+ const sessionState = getState(sessionID);
9052
+ if (sessionState.isRecovering) {
9053
9053
  log(`[${HOOK_NAME}] Skipped injection: in recovery`, { sessionID });
9054
9054
  return;
9055
9055
  }
9056
+ if (sessionState.injectionFailed) {
9057
+ log(`[${HOOK_NAME}] Skipped injection: previous injection permanently failed`, { sessionID });
9058
+ return;
9059
+ }
9056
9060
  const hasRunningBgTasks = backgroundManager ? backgroundManager.getTasksByParentSession(sessionID).some((t) => t.status === "running") : false;
9057
9061
  if (hasRunningBgTasks) {
9058
9062
  log(`[${HOOK_NAME}] Skipped injection: background tasks running`, { sessionID });
@@ -9098,9 +9102,31 @@ function createTodoContinuationEnforcer(ctx, options = {}) {
9098
9102
  },
9099
9103
  query: { directory: ctx.directory }
9100
9104
  });
9105
+ sessionState.consecutiveFailures = 0;
9101
9106
  log(`[${HOOK_NAME}] Injection successful`, { sessionID });
9102
9107
  } catch (err) {
9103
- log(`[${HOOK_NAME}] Injection failed`, { sessionID, error: String(err) });
9108
+ const errorStr = String(err);
9109
+ const isProviderError = errorStr.includes("ProviderModelNotFoundError") || errorStr.includes("ProviderNotFoundError") || errorStr.includes("provider") && errorStr.includes("not found");
9110
+ sessionState.consecutiveFailures = (sessionState.consecutiveFailures ?? 0) + 1;
9111
+ if (isProviderError || sessionState.consecutiveFailures >= 3) {
9112
+ sessionState.injectionFailed = true;
9113
+ log(`[${HOOK_NAME}] Injection permanently failed - stopping retries`, {
9114
+ sessionID,
9115
+ error: errorStr,
9116
+ isProviderError,
9117
+ consecutiveFailures: sessionState.consecutiveFailures
9118
+ });
9119
+ await ctx.client.tui.showToast({
9120
+ body: {
9121
+ title: "Todo Continuation Error",
9122
+ message: isProviderError ? "Model not found. Check your provider configuration." : "Failed to continue after 3 attempts. Please continue manually.",
9123
+ variant: "error",
9124
+ duration: 5000
9125
+ }
9126
+ }).catch(() => {});
9127
+ } else {
9128
+ log(`[${HOOK_NAME}] Injection failed (attempt ${sessionState.consecutiveFailures}/3)`, { sessionID, error: errorStr });
9129
+ }
9104
9130
  }
9105
9131
  }
9106
9132
  function startCountdown(sessionID, incompleteCount, total) {
@@ -45216,7 +45242,7 @@ function resolveCategoryConfig(categoryName, userCategories) {
45216
45242
  const config3 = {
45217
45243
  ...defaultConfig,
45218
45244
  ...userConfig,
45219
- model: userConfig?.model ?? defaultConfig?.model ?? "anthropic/claude-sonnet-4-5"
45245
+ model: userConfig?.model ?? defaultConfig?.model ?? "proxypal/gemini-claude-sonnet-4-5-thinking"
45220
45246
  };
45221
45247
  let promptAppend = defaultPromptAppend;
45222
45248
  if (userConfig?.prompt_append) {
@@ -45375,10 +45401,20 @@ Session ID: ${args.resume}
45375
45401
  ${textContent || "(No text output)"}`;
45376
45402
  }
45377
45403
  if (args.category && args.subagent_type) {
45378
- return `\u274C Invalid arguments: Provide EITHER category OR subagent_type, not both.`;
45404
+ return `\u274C Invalid arguments: Provide EITHER category OR subagent_type, not both.
45405
+
45406
+ WRONG: sisyphus_task(category="general", subagent_type="Sisyphus-Junior-general", ...)
45407
+ RIGHT: sisyphus_task(category="general", ...) // Uses Sisyphus-Junior with general config
45408
+ RIGHT: sisyphus_task(subagent_type="oracle", ...) // Uses oracle agent directly`;
45379
45409
  }
45380
45410
  if (!args.category && !args.subagent_type) {
45381
- return `\u274C Invalid arguments: Must provide either category or subagent_type.`;
45411
+ return `\u274C Invalid arguments: Must provide either category or subagent_type.
45412
+
45413
+ Examples:
45414
+ - sisyphus_task(category="general", ...) \u2192 Uses Sisyphus-Junior with general config
45415
+ - sisyphus_task(category="visual-engineering", ...) \u2192 Uses Sisyphus-Junior with visual config
45416
+ - sisyphus_task(subagent_type="oracle", ...) \u2192 Uses oracle agent directly
45417
+ - sisyphus_task(subagent_type="explore", ...) \u2192 Uses explore agent directly`;
45382
45418
  }
45383
45419
  let agentToUse;
45384
45420
  let categoryModel;
@@ -49297,7 +49333,13 @@ function getModelLimit(state2, providerID, modelID) {
49297
49333
 
49298
49334
  // src/agents/types.ts
49299
49335
  function isGptModel(model) {
49300
- return model.startsWith("openai/") || model.startsWith("github-copilot/gpt-");
49336
+ return model.startsWith("openai/") || model.startsWith("github-copilot/gpt-") || model.includes("/gpt-");
49337
+ }
49338
+ function isProxyPalGptModel(model) {
49339
+ return model.startsWith("proxypal/") && model.includes("gpt-");
49340
+ }
49341
+ function getGptReasoningEffort(model) {
49342
+ return isProxyPalGptModel(model) ? "xhigh" : "medium";
49301
49343
  }
49302
49344
 
49303
49345
  // src/agents/sisyphus-prompt-builder.ts
@@ -50134,7 +50176,7 @@ function createSisyphusAgent(model = DEFAULT_MODEL, availableAgents, availableTo
50134
50176
  tools: { call_omo_agent: false }
50135
50177
  };
50136
50178
  if (isGptModel(model)) {
50137
- return { ...base, reasoningEffort: "medium" };
50179
+ return { ...base, reasoningEffort: getGptReasoningEffort(model) };
50138
50180
  }
50139
50181
  return { ...base, thinking: { type: "enabled", budgetTokens: 32000 } };
50140
50182
  }
@@ -50247,7 +50289,7 @@ function createOracleAgent(model = DEFAULT_MODEL2) {
50247
50289
  prompt: ORACLE_SYSTEM_PROMPT
50248
50290
  };
50249
50291
  if (isGptModel(model)) {
50250
- return { ...base, reasoningEffort: "medium", textVerbosity: "high" };
50292
+ return { ...base, reasoningEffort: getGptReasoningEffort(model), textVerbosity: "high" };
50251
50293
  }
50252
50294
  return { ...base, thinking: { type: "enabled", budgetTokens: 32000 } };
50253
50295
  }
@@ -51370,7 +51412,8 @@ function buildCategorySection(userCategories) {
51370
51412
  });
51371
51413
  return `##### Option A: Use CATEGORY (for domain-specific work)
51372
51414
 
51373
- Categories spawn \`Sisyphus-Junior-{category}\` with optimized settings:
51415
+ Categories configure \`Sisyphus-Junior\` with optimized settings for each domain.
51416
+ **Use \`category\` parameter only - do NOT include \`subagent_type\` when using category!**
51374
51417
 
51375
51418
  | Category | Temperature | Best For |
51376
51419
  |----------|-------------|----------|
@@ -51378,8 +51421,9 @@ ${categoryRows.join(`
51378
51421
  `)}
51379
51422
 
51380
51423
  \`\`\`typescript
51381
- sisyphus_task(category="visual-engineering", prompt="...") // UI/frontend work
51382
- sisyphus_task(category="ultrabrain", prompt="...") // Backend/strategic work
51424
+ sisyphus_task(category="visual-engineering", prompt="...") // UI/frontend work
51425
+ sisyphus_task(category="ultrabrain", prompt="...") // Backend/strategic work
51426
+ sisyphus_task(category="general", prompt="...") // General tasks
51383
51427
  \`\`\``;
51384
51428
  }
51385
51429
  function buildSkillsSection(skills) {
@@ -53102,7 +53146,7 @@ function createMomusAgent(model = DEFAULT_MODEL10) {
53102
53146
  prompt: MOMUS_SYSTEM_PROMPT
53103
53147
  };
53104
53148
  if (isGptModel(model)) {
53105
- return { ...base, reasoningEffort: "medium", textVerbosity: "high" };
53149
+ return { ...base, reasoningEffort: getGptReasoningEffort(model), textVerbosity: "high" };
53106
53150
  }
53107
53151
  return { ...base, thinking: { type: "enabled", budgetTokens: 32000 } };
53108
53152
  }
@@ -53348,7 +53392,7 @@ function createSisyphusJuniorAgent(categoryConfig, promptAppend) {
53348
53392
  };
53349
53393
  }
53350
53394
  if (isGptModel(model)) {
53351
- return { ...base, reasoningEffort: "medium" };
53395
+ return { ...base, reasoningEffort: getGptReasoningEffort(model) };
53352
53396
  }
53353
53397
  return {
53354
53398
  ...base,
@@ -56065,7 +56109,7 @@ function createConfigHandler(deps) {
56065
56109
  Sisyphus: builtinAgents.Sisyphus
56066
56110
  };
56067
56111
  agentConfig["Sisyphus-Junior"] = createSisyphusJuniorAgent({
56068
- model: "anthropic/claude-sonnet-4-5",
56112
+ model: "proxypal/gemini-claude-sonnet-4-5-thinking",
56069
56113
  temperature: 0.1
56070
56114
  });
56071
56115
  if (builderEnabled) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reinamaccredy/oh-my-opencode",
3
- "version": "3.0.0-beta.11",
3
+ "version": "3.0.0-beta.12",
4
4
  "description": "Fork of oh-my-opencode with Maestro workflow integration - Multi-Model Orchestration, Parallel Background Agents, Design Phases, and TDD Methodology",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",