@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.
- package/dist/agents/agent-configs.js +4 -4
- package/dist/agents/agent-ids.d.ts +1 -1
- package/dist/agents/agent-ids.js +8 -8
- package/dist/cli/model-presets.d.ts +1 -1
- package/dist/cli/model-presets.js +22 -13
- package/dist/cli/setup.js +8 -5
- package/dist/tools/checkpoint.js +1 -1
- package/dist/tools/look-at.js +3 -3
- package/dist/tools/task-delegation.js +2 -2
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/skills/delegation-prompt.md +1 -1
- package/skills/gemini-look-at.md +5 -5
|
@@ -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-
|
|
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-
|
|
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, '
|
|
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[];
|
package/dist/agents/agent-ids.js
CHANGED
|
@@ -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: '
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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 = '
|
|
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
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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 = ['
|
|
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
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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];
|
package/dist/tools/checkpoint.js
CHANGED
|
@@ -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);
|
package/dist/tools/look-at.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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
|
@@ -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-
|
|
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 |
|
package/skills/gemini-look-at.md
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
129
|
-
| Detailed analysis | `gemini-
|
|
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
|