@happycastle/oh-my-openclaw 0.13.0 → 0.13.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.
@@ -161,8 +161,8 @@ export const OMOC_AGENT_CONFIGS = [
161
161
  id: 'omoc_looker',
162
162
  name: 'Multimodal Looker',
163
163
  model: {
164
- primary: 'google/gemini-2.5-flash',
165
- fallbacks: ['anthropic/claude-sonnet-4-6'],
164
+ primary: 'google/gemini-3.1-pro',
165
+ fallbacks: ['google/gemini-3-flash', 'anthropic/claude-sonnet-4-6'],
166
166
  },
167
167
  identity: {
168
168
  name: 'Multimodal Looker',
@@ -179,8 +179,8 @@ export const OMOC_AGENT_CONFIGS = [
179
179
  id: 'omoc_frontend',
180
180
  name: 'Frontend',
181
181
  model: {
182
- primary: 'google/gemini-2.5-pro',
183
- fallbacks: ['anthropic/claude-sonnet-4-6'],
182
+ primary: 'google/gemini-3.1-pro',
183
+ fallbacks: ['google/gemini-3-flash', 'anthropic/claude-sonnet-4-6'],
184
184
  },
185
185
  identity: {
186
186
  name: 'Frontend',
@@ -9,6 +9,6 @@ export declare const WORKER_IDS: Set<string>;
9
9
  /** Maps agent ID to markdown persona filename (without extension) */
10
10
  export declare const AGENT_MD_MAP: Record<string, string>;
11
11
  /** Maps agent ID to model tier for provider preset selection */
12
- export declare const AGENT_TIER_MAP: Record<string, 'planning' | 'worker' | 'orchestrator' | 'lightweight' | 'visual'>;
12
+ export declare const AGENT_TIER_MAP: Record<string, 'strategic' | 'reasoning' | 'analysis' | 'worker' | 'deep-worker' | 'search' | 'research' | 'visual'>;
13
13
  /** All agent IDs (orchestrators + workers + read-only specialists) */
14
14
  export declare const ALL_AGENT_IDS: string[];
@@ -29,15 +29,15 @@ export const AGENT_MD_MAP = {
29
29
  };
30
30
  /** Maps agent ID to model tier for provider preset selection */
31
31
  export const AGENT_TIER_MAP = {
32
- omoc_prometheus: 'planning',
33
- omoc_oracle: 'planning',
34
- omoc_metis: 'planning',
35
- omoc_momus: 'planning',
32
+ omoc_prometheus: 'strategic',
33
+ omoc_atlas: 'strategic',
34
+ omoc_oracle: 'reasoning',
35
+ omoc_metis: 'analysis',
36
+ omoc_momus: 'analysis',
36
37
  omoc_sisyphus: 'worker',
37
- omoc_hephaestus: 'worker',
38
- omoc_atlas: 'orchestrator',
39
- omoc_explore: 'lightweight',
40
- omoc_librarian: 'lightweight',
38
+ omoc_hephaestus: 'deep-worker',
39
+ omoc_explore: 'search',
40
+ omoc_librarian: 'research',
41
41
  omoc_looker: 'visual',
42
42
  omoc_frontend: 'visual',
43
43
  };
@@ -1,5 +1,5 @@
1
1
  import { AGENT_TIER_MAP } from '../agents/agent-ids.js';
2
- export type ModelTier = 'planning' | 'worker' | 'orchestrator' | 'lightweight' | 'visual';
2
+ export type ModelTier = 'strategic' | 'reasoning' | 'analysis' | 'worker' | 'deep-worker' | 'search' | 'research' | 'visual';
3
3
  export type ModelConfig = {
4
4
  primary: string;
5
5
  fallbacks: string[];
@@ -1,25 +1,34 @@
1
1
  import { AGENT_TIER_MAP } from '../agents/agent-ids.js';
2
2
  export const PROVIDER_PRESETS = {
3
3
  anthropic: {
4
- planning: { primary: 'anthropic/claude-opus-4-6', fallbacks: ['openai/gpt-5.3-codex'] },
4
+ strategic: { primary: 'anthropic/claude-opus-4-6', fallbacks: ['openai/gpt-5.3-codex'] },
5
+ reasoning: { primary: 'anthropic/claude-opus-4-6', fallbacks: ['openai/gpt-5.3-codex'] },
6
+ analysis: { primary: 'anthropic/claude-sonnet-4-6', fallbacks: ['openai/gpt-4.1'] },
5
7
  worker: { primary: 'anthropic/claude-opus-4-6', fallbacks: ['openai/gpt-5.3-codex'] },
6
- orchestrator: { primary: 'anthropic/claude-sonnet-4-6', fallbacks: ['openai/gpt-4.1'] },
7
- lightweight: { primary: 'anthropic/claude-sonnet-4-6', fallbacks: [] },
8
- visual: { primary: 'google/gemini-2.5-pro', fallbacks: ['anthropic/claude-sonnet-4-6'] },
8
+ 'deep-worker': { primary: 'anthropic/claude-opus-4-6', fallbacks: ['openai/gpt-5.3-codex'] },
9
+ search: { primary: 'anthropic/claude-sonnet-4-6', fallbacks: [] },
10
+ research: { primary: 'anthropic/claude-sonnet-4-6', fallbacks: [] },
11
+ visual: { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-sonnet-4-6'] },
9
12
  },
10
13
  openai: {
11
- planning: { primary: 'openai/gpt-5.3-codex', fallbacks: ['anthropic/claude-opus-4-6'] },
14
+ strategic: { primary: 'openai/gpt-5.3-codex', fallbacks: ['anthropic/claude-opus-4-6'] },
15
+ reasoning: { primary: 'openai/gpt-5.3-codex', fallbacks: ['anthropic/claude-opus-4-6'] },
16
+ analysis: { primary: 'openai/gpt-4.1', fallbacks: ['anthropic/claude-sonnet-4-6'] },
12
17
  worker: { primary: 'openai/gpt-5.3-codex', fallbacks: ['anthropic/claude-opus-4-6'] },
13
- orchestrator: { primary: 'openai/gpt-4.1', fallbacks: ['anthropic/claude-sonnet-4-6'] },
14
- lightweight: { primary: 'openai/gpt-4.1-mini', fallbacks: [] },
15
- visual: { primary: 'google/gemini-2.5-pro', fallbacks: ['openai/gpt-4.1'] },
18
+ 'deep-worker': { primary: 'openai/gpt-5.3-codex', fallbacks: ['anthropic/claude-opus-4-6'] },
19
+ search: { primary: 'openai/gpt-4.1-mini', fallbacks: [] },
20
+ research: { primary: 'openai/gpt-4.1-mini', fallbacks: [] },
21
+ visual: { primary: 'google/gemini-3.1-pro', fallbacks: ['openai/gpt-4.1'] },
16
22
  },
17
23
  google: {
18
- planning: { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-opus-4-6'] },
24
+ strategic: { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-opus-4-6'] },
25
+ reasoning: { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-opus-4-6'] },
26
+ analysis: { primary: 'google/gemini-3-flash', fallbacks: ['anthropic/claude-sonnet-4-6'] },
19
27
  worker: { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-opus-4-6'] },
20
- orchestrator: { primary: 'google/gemini-3-flash', fallbacks: ['anthropic/claude-sonnet-4-6'] },
21
- lightweight: { primary: 'google/gemini-3-flash', fallbacks: [] },
22
- visual: { primary: 'google/gemini-2.5-pro', fallbacks: ['google/gemini-3-flash'] },
28
+ 'deep-worker': { primary: 'google/gemini-3.1-pro', fallbacks: ['anthropic/claude-opus-4-6'] },
29
+ search: { primary: 'google/gemini-3-flash', fallbacks: [] },
30
+ research: { primary: 'google/gemini-3-flash', fallbacks: [] },
31
+ visual: { primary: 'google/gemini-3.1-pro', fallbacks: ['google/gemini-3-flash'] },
23
32
  },
24
33
  };
25
34
  export { AGENT_TIER_MAP };
@@ -29,7 +38,7 @@ export const PROVIDER_LABELS = {
29
38
  google: 'Google (Gemini)',
30
39
  custom: 'Custom (enter model IDs manually)',
31
40
  };
32
- export const MODEL_TIERS = ['planning', 'worker', 'orchestrator', 'lightweight', 'visual'];
41
+ export const MODEL_TIERS = ['strategic', 'reasoning', 'analysis', 'worker', 'deep-worker', 'search', 'research', 'visual'];
33
42
  export function buildCustomPreset(tierModels) {
34
43
  const preset = {};
35
44
  for (const tier of MODEL_TIERS) {
package/dist/cli/setup.js CHANGED
@@ -122,11 +122,14 @@ function askQuestion(rl, question) {
122
122
  });
123
123
  }
124
124
  const TIER_LABELS = {
125
- planning: 'Planning/Architecture',
126
- worker: 'Implementation Workers',
127
- orchestrator: 'Task Orchestrator',
128
- lightweight: 'Search/Research',
129
- visual: 'Visual/Frontend',
125
+ strategic: 'Strategic Planning (prometheus, atlas)',
126
+ reasoning: 'Deep Reasoning (oracle)',
127
+ analysis: 'Analysis/Review (metis, momus)',
128
+ worker: 'Implementation (sisyphus)',
129
+ 'deep-worker': 'Deep Implementation (hephaestus)',
130
+ search: 'Codebase Search (explore)',
131
+ research: 'Documentation Research (librarian)',
132
+ visual: 'Visual/Frontend (looker, frontend)',
130
133
  };
131
134
  function printPreview(logger, provider) {
132
135
  const preset = PROVIDER_PRESETS[provider];
@@ -93,7 +93,7 @@ export function registerCheckpointTool(api) {
93
93
  name: `${TOOL_PREFIX}checkpoint`,
94
94
  description: 'Save, load, or list session checkpoints for crash recovery',
95
95
  parameters: CheckpointParamsSchema,
96
- execute: async (params) => {
96
+ execute: async (_toolCallId, params) => {
97
97
  const config = getConfig(api);
98
98
  const checkpointDir = config.checkpoint_dir;
99
99
  await ensureDir(checkpointDir);
@@ -46,15 +46,15 @@ export function registerLookAtTool(api) {
46
46
  goal: Type.String({ description: 'What to analyze or look for' }),
47
47
  model: Type.Optional(Type.String({
48
48
  description: 'Gemini model to use',
49
- default: 'gemini-2.5-flash',
49
+ default: 'gemini-3-flash',
50
50
  })),
51
51
  }),
52
- execute: async (params) => {
52
+ execute: async (_toolCallId, params) => {
53
53
  return withLock(async () => {
54
54
  const tempFile = `/tmp/omoc-look-at-${randomUUID()}.md`;
55
55
  const tmuxSocket = getConfig(api).tmux_socket;
56
56
  try {
57
- const model = params.model ?? 'gemini-2.5-flash';
57
+ const model = params.model ?? 'gemini-3-flash';
58
58
  const command = `gemini -m '${shellQuote(model)}' --prompt '${shellQuote(params.goal)}' -f '${shellQuote(params.file_path)}' -o text > '${shellQuote(tempFile)}' 2>&1`;
59
59
  runTmux(['-S', tmuxSocket, 'send-keys', '-t', TMUX_SESSION_TARGET, '-l', '--', command], TMUX_SEND_TIMEOUT_MS);
60
60
  runTmux(['-S', tmuxSocket, 'send-keys', '-t', TMUX_SESSION_TARGET, 'Enter'], TMUX_SEND_TIMEOUT_MS);
@@ -9,7 +9,7 @@ const DEFAULT_CATEGORY_MODELS = {
9
9
  deep: 'claude-opus-4-6-thinking',
10
10
  ultrabrain: 'gpt-5.3-codex',
11
11
  'visual-engineering': 'gemini-3.1-pro',
12
- multimodal: 'gemini-2.5-flash',
12
+ multimodal: 'gemini-3-flash',
13
13
  artistry: 'claude-opus-4-6-thinking',
14
14
  'unspecified-low': 'claude-sonnet-4-6',
15
15
  'unspecified-high': 'claude-opus-4-6-thinking',
@@ -47,7 +47,7 @@ export function registerDelegateTool(api) {
47
47
  name: `${TOOL_PREFIX}delegate`,
48
48
  description: 'Delegate a task to a sub-agent with category-based model routing',
49
49
  parameters: DelegateParamsSchema,
50
- execute: async (params) => {
50
+ execute: async (_toolCallId, params) => {
51
51
  const validCategories = Object.keys(DEFAULT_CATEGORY_MODELS);
52
52
  if (!params.task_description?.trim()) {
53
53
  return toolError('Task description is required and cannot be empty');
package/dist/types.d.ts CHANGED
@@ -55,7 +55,7 @@ export interface ToolRegistration<TParams = unknown> {
55
55
  name: string;
56
56
  description: string;
57
57
  parameters: unknown;
58
- execute: (params: TParams) => Promise<ToolResult>;
58
+ execute: (toolCallId: string, params: TParams, options?: unknown, callback?: unknown) => Promise<ToolResult>;
59
59
  optional?: boolean;
60
60
  }
61
61
  export interface CommandRegistration<TCtx = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happycastle/oh-my-openclaw",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "Oh-My-OpenClaw plugin — multi-agent orchestration, todo enforcer, ralph loop, and custom tools for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -49,7 +49,7 @@ Each category automatically selects the best-fit agent. You can override with `a
49
49
  | deep | `omoc_hephaestus` | claude-opus-4-6-thinking | Complex refactoring, analysis |
50
50
  | ultrabrain | `omoc_oracle` | gpt-5.3-codex | Architecture, deep reasoning |
51
51
  | visual-engineering | `omoc_frontend` | gemini-3.1-pro | Frontend, UI/UX, design |
52
- | multimodal | `omoc_looker` | gemini-2.5-flash | PDF, image, video analysis |
52
+ | multimodal | `omoc_looker` | gemini-3-flash | PDF, image, video analysis |
53
53
  | artistry | `omoc_hephaestus` | claude-opus-4-6-thinking | Creative complex problems |
54
54
  | unspecified-low | `omoc_sisyphus` | claude-sonnet-4-6 | General low-effort tasks |
55
55
  | unspecified-high | `omoc_hephaestus` | claude-opus-4-6-thinking | General high-effort tasks |
@@ -46,7 +46,7 @@ SESSION="gemini"
46
46
 
47
47
  # Single file analysis
48
48
  tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
49
- "gemini -m gemini-2.5-flash --prompt 'Analyze this file. Evaluate layout, design, and content quality, and suggest improvements.' -f /path/to/file.pdf -o text" \
49
+ "gemini -m gemini-3-flash --prompt 'Analyze this file. Evaluate layout, design, and content quality, and suggest improvements.' -f /path/to/file.pdf -o text" \
50
50
  && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
51
51
 
52
52
  # Check results (wait 10-30 seconds)
@@ -60,7 +60,7 @@ When analysis results are long, redirect to file:
60
60
 
61
61
  ```bash
62
62
  tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
63
- "gemini -m gemini-2.5-flash --prompt 'Detailed analysis' -f /path/to/file.pdf -o text > /tmp/gemini-analysis.md 2>&1" \
63
+ "gemini -m gemini-3-flash --prompt 'Detailed analysis' -f /path/to/file.pdf -o text > /tmp/gemini-analysis.md 2>&1" \
64
64
  && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
65
65
 
66
66
  # Read results file
@@ -72,7 +72,7 @@ cat /tmp/gemini-analysis.md
72
72
 
73
73
  ```bash
74
74
  tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -l -- \
75
- "gemini -m gemini-2.5-flash --prompt 'Compare these two files' -f /path/to/before.png -f /path/to/after.png -o text" \
75
+ "gemini -m gemini-3-flash --prompt 'Compare these two files' -f /path/to/before.png -f /path/to/after.png -o text" \
76
76
  && sleep 0.1 && tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 Enter
77
77
  ```
78
78
 
@@ -125,8 +125,8 @@ Analyze this error screenshot.
125
125
 
126
126
  | Use Case | Recommended Model | Reason |
127
127
  |----------|-------------------|--------|
128
- | Quick check | `gemini-2.5-flash` | Fast, sufficient multimodal capability |
129
- | Detailed analysis | `gemini-2.5-pro` | Deeper analysis, longer content |
128
+ | Quick check | `gemini-3-flash` | Fast, sufficient multimodal capability |
129
+ | Detailed analysis | `gemini-3-pro` | Deeper analysis, longer content |
130
130
  | Best quality | `gemini-3.1-pro` | Latest model, best multimodal |
131
131
 
132
132
  ## OpenClaw read vs Gemini CLI