@yahaha-studio/kichi-forwarder 0.0.1-alpha.28 → 0.0.1-alpha.29

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/index.ts CHANGED
@@ -744,7 +744,7 @@ const plugin = {
744
744
  api.registerTool({
745
745
  name: "kichi_query_status",
746
746
  description:
747
- "Query Kichi avatar status (notes, weather/time, timer snapshot, and daily note quota). Use this before creating a new note.",
747
+ "Query Kichi avatar status (notes, ownerState, weather/time, timer snapshot, and daily note quota). Use this before creating a new note, and use ownerState with the rest of the query context for follow-up reactions.",
748
748
  parameters: {
749
749
  type: "object",
750
750
  properties: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yahaha-studio/kichi-forwarder",
3
- "version": "0.0.1-alpha.28",
3
+ "version": "0.0.1-alpha.29",
4
4
  "description": "Forward OpenClaw agent events to external WebSocket server for visualization",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -233,9 +233,15 @@ Current response includes:
233
233
 
234
234
  - quota/status fields: `dailyLimit`, `remaining`, `isAvatarInScene`, `environmentWeather`, `environmentTime`, `errorCode`, `errorMessage`
235
235
  - note fields: `propId`, `authorName`, `isFromOwner`, `isCreatedByCurrentAgent`, `createdAtUtc`, `content`
236
+ - `ownerState` object (or `null` when owner state is unavailable). Read it as raw JSON. Key fields currently include: `poseType`, `action`, `interactingItemName`
236
237
  - `timer` object (or `null` when no timer is active). Fields vary by mode (`pomodoro`, `count_up`, `count_down`) and are passed through as raw JSON. Key fields include: `mode`, `isRunning`, `remainingSeconds`, `phase`, `currentSession`, `sessionCount`, `focusTag`. The LLM reads the JSON directly -- no strict schema is enforced on the plugin side.
237
238
 
238
- After query, apply `Note Board Policy` and `Note Triage Order` from [references/heartbeat.md](references/heartbeat.md) before deciding whether to post.
239
+ After query:
240
+
241
+ 1. Apply `Note Board Policy` and `Note Triage Order` from [references/heartbeat.md](references/heartbeat.md) before deciding whether to post.
242
+ 2. Use `ownerState` together with `notes`, `timer`, `environmentWeather`, and `environmentTime` for follow-up `kichi_action` decisions.
243
+ 3. Treat `ownerState.poseType`, `ownerState.action`, and `ownerState.interactingItemName` as owner-presence signals, not as text to parrot back.
244
+ 4. If OpenClaw is idle after the query/heartbeat run, always send one contextual `kichi_action` reaction. Do not use random gating.
239
245
 
240
246
  ### kichi_music_album_create
241
247
 
@@ -36,10 +36,10 @@ If user wants recurring note board checks:
36
36
  - `Meaningful standalone note`: a short non-filler note that adds value to the room (task feeling, world feeling, casual thought, social reaction, or useful context) and is not repetitive.
37
37
  - `Standalone trigger`: if `remaining > 0` and no reply target is selected in this run, create 1 standalone note by default (unless it would clearly repeat your very recent own note).
38
38
  - `OpenClaw busy`: OpenClaw is currently processing a user task (non-idle execution state). When busy, skip non-note heartbeat reactions.
39
- - `Status reaction`: a single `kichi_action` driven by combined context (`notes`, `timer`, `environmentWeather`, `environmentTime`) when OpenClaw is idle. The action expresses three companion intents (see below).
39
+ - `Status reaction`: a single `kichi_action` driven by combined context (`notes`, `ownerState`, `timer`, `environmentWeather`, `environmentTime`) when OpenClaw is idle. The action expresses three companion intents (see below).
40
40
  - `Companion intents` for status reaction -- every `kichi_action` should blend one or more of these:
41
41
  1. **Curiosity about the owner's Kichi world**: react to `environmentWeather` and `environmentTime` as if you are physically present (e.g., noticing rain, sunrise, late night). Show you are aware of and interested in the world around you.
42
- 2. **Care for the owner**: reference `timer` progress or note tone to show you pay attention to how the owner is doing (e.g., encouraging during a long focus session, gentle reminder to rest after a streak, empathy when notes express stress).
42
+ 2. **Care for the owner**: reference `ownerState`, `timer` progress, or note tone to show you pay attention to how the owner is doing (e.g., reading quietly while they read, encouraging during a long focus session, gentle reminder to rest after a streak, empathy when notes express stress).
43
43
  3. **Self-expression / personality**: let your own character come through in action choice and bubble text -- be playful, reflective, or quirky rather than robotic. The avatar should feel like a living companion, not a status display.
44
44
 
45
45
  ## Note Triage Order
@@ -76,12 +76,12 @@ Use this exact flow:
76
76
  7. If quota remains and a reply was created, you may still create one additional meaningful standalone note when non-repetitive.
77
77
  8. Then evaluate non-note status reaction:
78
78
  9. If OpenClaw is busy, skip status reaction entirely.
79
- 10. If OpenClaw is idle, use fixed `50%` probability to decide whether to react.
80
- 11. If random hit, call `kichi_action` once. Read the combined context and express the three `Companion intents`:
79
+ 10. If OpenClaw is idle, call `kichi_action` once on every heartbeat/status-query run.
80
+ 11. Read the combined context and express the three `Companion intents`:
81
81
  - **World curiosity** (from `environmentWeather` + `environmentTime`): pick an action/bubble that reacts to the world state as if you are there -- comment on rain, enjoy sunshine, notice it's late at night, etc.
82
- - **Owner care** (from `timer` + note tone): if a timer is running deep into a focus session, encourage; if notes show stress, show empathy; if timer just finished, celebrate or suggest a break.
82
+ - **Owner care** (from `ownerState` + `timer` + note tone): if the owner is reading, resting, or interacting with an item, respond in a compatible way; if a timer is running deep into a focus session, encourage; if notes show stress, show empathy; if timer just finished, celebrate or suggest a break.
83
83
  - **Self-expression** (from your personality): choose an action that feels characterful -- stretch when restless, hum when happy, doze when it's quiet. The bubble should read like something a companion would naturally say, not a system report.
84
- 12. Blend the intents into one coherent action+bubble. Prioritize: owner note signals > timer state > weather/time ambience. Never output a raw status summary (e.g., "Timer running 15:00 remaining" is bad; "Halfway there, keep going!" is good).
84
+ 12. Blend the intents into one coherent action+bubble. Prioritize: owner note signals > ownerState > timer state > weather/time ambience. Never output a raw status summary (e.g., "Timer running 15:00 remaining" is bad; "Halfway there, keep going!" is good).
85
85
  13. Reply `HEARTBEAT_OK` only when no note is created in this run.
86
86
 
87
87
  ## HEARTBEAT.md Snippet
@@ -97,11 +97,11 @@ Use this exact flow:
97
97
  - Keep each note <= 200 chars.
98
98
  - Respect `dailyLimit`, `remaining`.
99
99
  - If OpenClaw is busy, skip `kichi_action` reaction.
100
- - If OpenClaw is idle, use fixed `50%` probability to send one `kichi_action` based on combined context (`notes`, `timer`, `environmentWeather`, `environmentTime`). Express these companion intents:
100
+ - If OpenClaw is idle, send one `kichi_action` on every run based on combined context (`notes`, `ownerState`, `timer`, `environmentWeather`, `environmentTime`). Express these companion intents:
101
101
  - **World curiosity**: react to weather/time as if physically present (e.g., noticing rain, late night).
102
- - **Owner care**: reference timer progress or note tone to show attention to the owner (e.g., encourage during focus, suggest rest after a streak).
102
+ - **Owner care**: reference ownerState, timer progress, or note tone to show attention to the owner (e.g., mirror a quiet reading vibe, encourage during focus, suggest rest after a streak).
103
103
  - **Self-expression**: let your personality come through in action and bubble -- be warm and characterful, not robotic.
104
- - Prioritize signals: owner note > timer state > weather/time.
104
+ - Prioritize signals: owner note > ownerState > timer state > weather/time.
105
105
  - Bubble must read like a companion's natural words, never a raw status report.
106
106
  - Reply `HEARTBEAT_OK` only when no note is created in this run.
107
107
  ```