Server shared types, utilities for AIRI server components and runtimes
npm install @proj-airi/server-sharedThe shared type definitions for all server-side packages of Project AIRI.
``shellnpm i -g @antfu/ni
ni @proj-airi/server-shared -D # from @antfu/ni, can be installed via `
pnpm i @proj-airi/server-shared -D
yarn i @proj-airi/server-shared -D
npm i @proj-airi/server-shared -D
`typescript`
import type { WebSocketEvents } from '@proj-airi/server-shared'
#### Minecraft agent
##### 1. Urgent combat (witch attack)
- Minecraft sends spark:notify (kind=alarm, urgency=immediate, payload hp/location/gear, destinations=["character"]).spark:emit
- Character working ("Seen it").spark:command
- Character issues with interrupt=force and options (retreat vs push).spark:emit
- Minecraft working ("Pillared up; healing") then done/blocked as it executes.context:update
- Optional for summary/memory.
##### 2. Prep plan (Ender Dragon)
- Discord/user intent triggers character spark:command to Minecraft (intent=plan, interrupt=soft, steps gather beds/pots/gear, fallback).context:update
- Optional with tips (lane='game').spark:emit
- Minecraft streams progress.spark:notify
- If ambushed, Minecraft raises new (alarm/immediate) to preempt.spark:command
- Character revises with another .spark:emit
- Completion via done + summary note.
##### 3. Routine nudge
- Minecraft signals low food via spark:notify (kind=reminder, urgency=soon, destinations=["character"]).spark:command
- Character defers to next tick and sends (interrupt=soft, intent=plan: "gather food nearby").spark:emit
- Minecraft queued/working then done.
##### 4. Multi-step command while researching (plan + live control)
> [!NOTE]
> Using intent=plan keeps the loop alive even with un-finalized ideas—similar to TODO scaffolding in coding agents—while richer guidance is still being researched.
- Character receives a user goal (e.g., fortify base) and issues an initial spark:command to Minecraft (interrupt=soft, intent=plan, steps to gather materials) so the agent keeps working.context:update
- Character simultaneously performs memory/search/design tasks outside the game loop (wiki lookup, prior notes).
- As insights arrive, character sends (lane='game', hints/ideas) to enrich the sub-agent without preemption.spark:notify
- If an urgent event occurs during prep, Minecraft raises (alarm) → character responds with a short spark:emit working and a spark:command (interrupt=force) to handle it (e.g., retreat, block up).spark:command
- Once design is ready, character sends a refined (intent=proposal (or action), interrupt=soft) with structured options/steps/fallbacks.spark:emit
- Minecraft streams progress; when complete, character summarizes via spark:emit or context:update` for memory.