oomi-ai 0.2.13 → 0.2.15
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/README.md +192 -116
- package/agent_instructions.md +175 -35
- package/bin/oomi-ai.js +337 -39
- package/bin/sessionBridgeState.js +29 -2
- package/openclaw.extension.js +41 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/skills/oomi/SKILL.md +127 -60
- package/skills/oomi/agent_instructions.md +30 -0
package/skills/oomi/SKILL.md
CHANGED
|
@@ -1,102 +1,169 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oomi
|
|
3
|
-
description:
|
|
3
|
+
description: Support Oomi OpenClaw installs, bridge health, managed chat and voice setup, and avatar control.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Oomi Skill
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use this skill when you need to:
|
|
9
|
+
- connect an OpenClaw machine to Oomi
|
|
10
|
+
- repair the Oomi plugin or bridge on a machine
|
|
11
|
+
- inspect managed chat or voice health
|
|
12
|
+
- control the Oomi avatar with inline tags
|
|
9
13
|
|
|
10
|
-
##
|
|
14
|
+
## Primary Operator Workflow
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
If the user wants OpenClaw connected to Oomi:
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
1. Ensure `oomi-ai` is installed or updated:
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add -g oomi-ai@latest
|
|
21
|
+
```
|
|
22
|
+
Fallback:
|
|
23
|
+
```bash
|
|
24
|
+
npm install -g oomi-ai@latest
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. Pair the device:
|
|
28
|
+
```bash
|
|
29
|
+
oomi openclaw pair --app-url https://www.oomi.ai --no-start
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
3. Install the plugin:
|
|
33
|
+
```bash
|
|
34
|
+
openclaw plugins install oomi-ai@latest
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. Print config guidance:
|
|
38
|
+
```bash
|
|
39
|
+
oomi openclaw plugin --show-secrets --backend-url https://api.oomi.ai
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
5. Apply the `channels.oomi.accounts.default` config and restart OpenClaw.
|
|
43
|
+
|
|
44
|
+
6. Start or repair the bridge:
|
|
45
|
+
```bash
|
|
46
|
+
oomi openclaw bridge ensure --detach
|
|
47
|
+
```
|
|
48
|
+
If stale:
|
|
49
|
+
```bash
|
|
50
|
+
oomi openclaw bridge restart --detach
|
|
51
|
+
```
|
|
52
|
+
On macOS, prefer supervised mode:
|
|
53
|
+
```bash
|
|
54
|
+
oomi openclaw bridge service install
|
|
55
|
+
```
|
|
15
56
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
57
|
+
## Health Checks
|
|
58
|
+
|
|
59
|
+
Use these when chat or voice is failing:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
oomi openclaw bridge ps
|
|
63
|
+
oomi openclaw bridge service status
|
|
64
|
+
oomi openclaw status
|
|
65
|
+
tail -f ~/.openclaw/logs/oomi-bridge-live.log
|
|
66
|
+
tail -f ~/.openclaw/logs/gateway.log
|
|
67
|
+
tail -f ~/.openclaw/logs/gateway.err.log
|
|
19
68
|
```
|
|
20
|
-
Default URL is `http://localhost:3000/api/skill`.
|
|
21
69
|
|
|
22
|
-
|
|
70
|
+
Interpret bridge states like this:
|
|
71
|
+
- `starting`: booting or waiting for managed subscription
|
|
72
|
+
- `connected`: ready for managed traffic
|
|
73
|
+
- `reconnecting`: retry scheduled after transport failure
|
|
74
|
+
- `degraded`: bridge caught a runtime fault but is still alive
|
|
75
|
+
- `error`: startup or auth failure blocked operation
|
|
76
|
+
- `stopped`: not running or intentionally shut down
|
|
77
|
+
|
|
78
|
+
## Common Failures
|
|
79
|
+
|
|
80
|
+
### Duplicate plugin id
|
|
81
|
+
- Cause: multiple discoverable `oomi-ai` installs
|
|
82
|
+
- Action: remove stale plugin copies and reinstall once
|
|
83
|
+
|
|
84
|
+
### `invalid handshake: first request must be connect`
|
|
85
|
+
- Cause: gateway request ordering broke
|
|
86
|
+
- Action: update `oomi-ai`, restart the bridge, confirm only one bridge worker exists
|
|
87
|
+
|
|
88
|
+
### STT works but the assistant does not reply
|
|
89
|
+
- Cause: the voice turn reached Oomi, but the managed gateway or OpenClaw run failed later
|
|
90
|
+
- Action: inspect `gateway.log`, `gateway.err.log`, and the session JSONL for that run
|
|
91
|
+
|
|
92
|
+
## Local Oomi API Tools
|
|
93
|
+
|
|
94
|
+
These scripts interact with the local Oomi application when it is running.
|
|
23
95
|
|
|
24
96
|
### `get_data`
|
|
25
|
-
|
|
97
|
+
Fetch the latest user activity data.
|
|
26
98
|
|
|
27
|
-
|
|
28
|
-
```python
|
|
99
|
+
```bash
|
|
29
100
|
python3 skills/oomi/scripts/get_data.py
|
|
30
101
|
```
|
|
31
102
|
|
|
32
|
-
**Returns:**
|
|
33
|
-
JSON string containing:
|
|
34
|
-
- `steps`: Daily step count
|
|
35
|
-
- `sleep`: Sleep duration in hours
|
|
36
|
-
- `energy`: Calculated energy level (0-100)
|
|
37
|
-
- `mood`: Current user mood (if tracked)
|
|
38
|
-
|
|
39
103
|
### `set_goal`
|
|
40
|
-
|
|
104
|
+
Set a new goal in the local Oomi app.
|
|
41
105
|
|
|
42
|
-
|
|
43
|
-
```python
|
|
106
|
+
```bash
|
|
44
107
|
python3 skills/oomi/scripts/send_goal.py --type "steps" --value 10000 --message "Let's hit 10k today!"
|
|
45
108
|
```
|
|
46
109
|
|
|
47
|
-
**Arguments:**
|
|
48
|
-
- `--type`: Type of goal (e.g., "steps", "sleep", "focus")
|
|
49
|
-
- `--value`: Target value (number)
|
|
50
|
-
- `--message`: Motivational message to display to the user
|
|
51
|
-
|
|
52
110
|
### `sync`
|
|
53
|
-
|
|
111
|
+
Sync local context.
|
|
54
112
|
|
|
55
|
-
|
|
56
|
-
```python
|
|
113
|
+
```bash
|
|
57
114
|
python3 skills/oomi/scripts/sync.py
|
|
58
115
|
```
|
|
59
116
|
|
|
60
117
|
### `get_avatar_capabilities`
|
|
61
|
-
|
|
118
|
+
Read the avatar command schema before emitting inline avatar tags.
|
|
62
119
|
|
|
63
|
-
|
|
64
|
-
```python
|
|
120
|
+
```bash
|
|
65
121
|
python3 skills/oomi/scripts/get_avatar_capabilities.py
|
|
66
122
|
```
|
|
67
123
|
|
|
68
|
-
**Returns:**
|
|
69
|
-
JSON containing:
|
|
70
|
-
- `commands.anim.values` (supported animation names)
|
|
71
|
-
- `commands.anim.aliases` (accepted shorthand -> animation name)
|
|
72
|
-
- `commands.face.values` (supported expressions)
|
|
73
|
-
- `commands.gesture.values` (supported gestures)
|
|
74
|
-
- `commands.look.values` (supported look targets)
|
|
75
|
-
|
|
76
124
|
### `install_agent_instructions`
|
|
77
|
-
|
|
125
|
+
Install packaged Oomi operator instructions into an OpenClaw `AGENTS.md` file.
|
|
78
126
|
|
|
79
|
-
|
|
80
|
-
```python
|
|
127
|
+
```bash
|
|
81
128
|
python3 skills/oomi/scripts/install_agent_instructions.py
|
|
82
129
|
```
|
|
83
130
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
131
|
+
## Hidden Speech Payload
|
|
132
|
+
|
|
133
|
+
Managed voice can carry a hidden TTS-only speech sidecar alongside the normal assistant message.
|
|
134
|
+
|
|
135
|
+
Use this shape when a voice turn needs more natural delivery without changing visible chat text:
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"metadata": {
|
|
140
|
+
"spoken": {
|
|
141
|
+
"text": "Speech-optimized text for TTS only.",
|
|
142
|
+
"instructions": "Speak with upbeat, warm excitement and slightly rising intonation.",
|
|
143
|
+
"style": {
|
|
144
|
+
"emotion": "excited",
|
|
145
|
+
"energy": "medium_high"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
89
151
|
|
|
90
|
-
|
|
152
|
+
Rules:
|
|
153
|
+
- keep visible assistant `content` clean and user-facing
|
|
154
|
+
- do not place raw intonation tags in visible chat
|
|
155
|
+
- for managed voice replies, include `metadata.spoken` when delivery benefits from cleaner phrasing or explicit speaking guidance
|
|
156
|
+
- `metadata.spoken.text` is backend TTS input only
|
|
157
|
+
- `metadata.spoken.instructions` should use natural-language speaking guidance
|
|
158
|
+
- if the speech sidecar is absent, Oomi speaks the visible assistant text
|
|
91
159
|
|
|
92
|
-
|
|
93
|
-
- **Aliases**: `wave -> Waving`, `walk -> Walking`, `idle -> Idle`, `sit/sitting -> Sitting Idle`
|
|
94
|
-
- **Expressions**: `[face:happy]`, `[face:sad]`, `[face:surprised]`, `[face:focused]`, `[face:gentle]`, `[face:thinking]`, `[face:curious]`, `[face:confused]`
|
|
95
|
-
- **Gestures**: `[gesture:nod]`, `[gesture:think]`, `[gesture:shrug]`, `[gesture:wave]`, `[gesture:bow]`
|
|
96
|
-
- **Gaze**: `[look:camera]`, `[look:left]`, `[look:right]`, `[look:up]`, `[look:down]`
|
|
160
|
+
## Avatar Control
|
|
97
161
|
|
|
98
|
-
|
|
99
|
-
|
|
162
|
+
Before emitting avatar commands, call `get_avatar_capabilities` and prefer canonical values.
|
|
163
|
+
Use aliases only when explicitly needed.
|
|
100
164
|
|
|
101
|
-
|
|
102
|
-
|
|
165
|
+
Supported inline tags include:
|
|
166
|
+
- animations: `[anim:Waving]`, `[anim:Walking]`, `[anim:Idle]`, `[anim:Sitting Idle]`
|
|
167
|
+
- expressions: `[face:happy]`, `[face:sad]`, `[face:surprised]`, `[face:focused]`, `[face:gentle]`, `[face:thinking]`
|
|
168
|
+
- gestures: `[gesture:nod]`, `[gesture:think]`, `[gesture:shrug]`, `[gesture:wave]`, `[gesture:bow]`
|
|
169
|
+
- gaze: `[look:camera]`, `[look:left]`, `[look:right]`, `[look:up]`, `[look:down]`
|
|
@@ -44,3 +44,33 @@ Primary UX requirement:
|
|
|
44
44
|
- Return `/connect/<invite-token>` auth links only.
|
|
45
45
|
|
|
46
46
|
Do not ask users to paste gateway IP/token/password when managed connect is available.
|
|
47
|
+
|
|
48
|
+
## Hidden Speech Payload
|
|
49
|
+
|
|
50
|
+
For managed voice turns, keep visible assistant chat text natural and user-facing.
|
|
51
|
+
Do not put spoken-style tags like `[happy]`, `[sad]`, or `[excited]` into visible chat text.
|
|
52
|
+
|
|
53
|
+
When the runtime supports it, voice turns may include a hidden speech sidecar on the assistant message:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"metadata": {
|
|
58
|
+
"spoken": {
|
|
59
|
+
"text": "Speech-optimized text for TTS only.",
|
|
60
|
+
"instructions": "Speak with upbeat, warm excitement and slightly rising intonation.",
|
|
61
|
+
"style": {
|
|
62
|
+
"emotion": "excited",
|
|
63
|
+
"energy": "medium_high"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Rules:
|
|
71
|
+
- visible `content` remains the source of truth for Oomi chat rendering
|
|
72
|
+
- for managed voice replies, include `metadata.spoken` when delivery benefits from cleaner phrasing or explicit speaking guidance
|
|
73
|
+
- `metadata.spoken.text` is for backend TTS only
|
|
74
|
+
- `metadata.spoken.instructions` should be natural-language guidance, not raw bracket tags
|
|
75
|
+
- `metadata.spoken.style` is optional metadata for debugging or future mapping
|
|
76
|
+
- if no hidden speech sidecar exists, Oomi falls back to speaking the visible assistant text
|