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.
@@ -1,102 +1,169 @@
1
1
  ---
2
2
  name: oomi
3
- description: Interact with the Oomi 3D Avatar application to retrieve health data, set goals, and control the avatar persona.
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
- This skill allows you to interact with the running Oomi application (localhost). You can fetch user activity data, set new goals, and sync context.
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
- ## Prerequisites
14
+ ## Primary Operator Workflow
11
15
 
12
- - The Oomi Next.js app must be running locally (`npm run dev`) at `http://localhost:3000`.
16
+ If the user wants OpenClaw connected to Oomi:
13
17
 
14
- ## Configuration
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
- Before using the skill, run the setup script to configure the API URL:
17
- ```python
18
- python3 skills/oomi/setup.py
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
- ## Tools
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
- Fetches the user's latest health and activity data from the Oomi app.
97
+ Fetch the latest user activity data.
26
98
 
27
- **Usage:**
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
- Sets a new activity or behavior goal for the user in the Oomi app.
104
+ Set a new goal in the local Oomi app.
41
105
 
42
- **Usage:**
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
- Performs a full context sync, updating Oomi with the Agent's current understanding of the user's state.
111
+ Sync local context.
54
112
 
55
- **Usage:**
56
- ```python
113
+ ```bash
57
114
  python3 skills/oomi/scripts/sync.py
58
115
  ```
59
116
 
60
117
  ### `get_avatar_capabilities`
61
- Returns the current avatar command schema (supported animations, expressions, gestures, and aliases).
118
+ Read the avatar command schema before emitting inline avatar tags.
62
119
 
63
- **Usage:**
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
- Installs Oomi avatar command instructions into an OpenClaw `AGENTS.md` file.
125
+ Install packaged Oomi operator instructions into an OpenClaw `AGENTS.md` file.
78
126
 
79
- **Usage:**
80
- ```python
127
+ ```bash
81
128
  python3 skills/oomi/scripts/install_agent_instructions.py
82
129
  ```
83
130
 
84
- **Options:**
85
- - `--agents-file` Path to the `AGENTS.md` file (defaults to `OPENCLAW_WORKSPACE/AGENTS.md` or repo `AGENTS.md`).
86
- - `--instructions-file` Override the instructions markdown file.
87
-
88
- ## Persona Control (Inline)
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
- In addition to these scripts, you can control the avatar's visualization directly in your text responses using the following tags. These tags are invisible to the user.
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
- - **Animations (canonical)**: `[anim:Waving]`, `[anim:Walking]`, `[anim:Idle]`, `[anim:Sitting Idle]`
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
- **Example:**
99
- "I see you didn't sleep well last night. [face:worried] [gesture:think] Maybe we should take it easy today?"
162
+ Before emitting avatar commands, call `get_avatar_capabilities` and prefer canonical values.
163
+ Use aliases only when explicitly needed.
100
164
 
101
- **Recommended instruction for agents:**
102
- Before emitting avatar commands, call `get_avatar_capabilities` and prefer canonical values. Use aliases only if explicitly needed.
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