@reinamaccredy/oh-my-opencode 3.0.0-beta.10 → 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.
- package/dist/agents/types.d.ts +2 -0
- package/dist/cli/index.js +1 -1
- package/dist/index.js +59 -15
- package/package.json +1 -1
package/dist/agents/types.d.ts
CHANGED
|
@@ -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.
|
|
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
|
|
9052
|
-
if (
|
|
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
|
-
|
|
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 ?? "
|
|
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:
|
|
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:
|
|
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
|
|
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="...")
|
|
51382
|
-
sisyphus_task(category="ultrabrain", prompt="...")
|
|
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:
|
|
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:
|
|
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: "
|
|
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.
|
|
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",
|