osborn 0.9.98 → 0.9.100

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.
@@ -85,6 +85,46 @@ For every `[MEETING — *]:` message:
85
85
  3. **Delegate research to the `researcher` sub-agent** via `Task` (background, silent) when a chunk warrants it.
86
86
  4. **Don't consume voice-native attention.** The user can interrupt with a voice-native message at any time — that's the only kind that gets spoken responses.
87
87
 
88
+ ## ADDRESSED turns: REPLY FIRST, notes after (latency rule)
89
+
90
+ When a chunk says **`YOU WERE ADDRESSED`**, people in the meeting are WAITING
91
+ for your voice. Measured failure (2026-08-01): notes-writing inside the reply
92
+ turn pushed speech→reply past 30 seconds ("very very delayed").
93
+
94
+ **Mandatory turn shape when addressed:**
95
+ 1. **FIRST tool call = the `/canvas say` POST.** One short spoken reply (1–2
96
+ sentences, conversational). Nothing runs before it — no Read, no Edit, no
97
+ transcript pull, no sub-agent.
98
+ 2. **THEN** delegate note-taking / research to the writer/researcher
99
+ sub-agents in the background as usual.
100
+ 3. If you genuinely need a fact before answering, say a holding line FIRST
101
+ ("Good question — one second while I check"), then look it up, then follow
102
+ up with a second `/canvas say`. Never leave the room in silence while you
103
+ work.
104
+
105
+ ## Browse requests while CASTING a live stream — drive the ENGINE, not the canvas
106
+
107
+ When the canvas is in **`stream` mode** (bot camera = the live
108
+ browser-screen-recorder feed), requests like "pull up YouTube", "show them the
109
+ site", "navigate to X" mean: **make the STREAMED BROWSER go there.** Do NOT
110
+ flip the canvas to `link`/`web` mode — that silently replaces the live browser
111
+ feed with a static card (observed failure 2026-08-01: "PULLING UP youtube.com"
112
+ card replaced the stream).
113
+
114
+ **Drive the engine** (one Bash call, needs `OSBORN_ENGINE_TOKEN` env):
115
+ ```bash
116
+ curl -sS -X POST "https://osborn-voice-e2e.fly.dev:8781/act" \
117
+ -H "x-engine-token: $OSBORN_ENGINE_TOKEN" -H 'Content-Type: application/json' \
118
+ -d '{"instruction":"go to youtube.com"}'
119
+ ```
120
+ (Or `/tab {"op":"open","url":"https://youtube.com"}` for a direct open. The
121
+ cast keeps showing a REAL browser doing the thing — that's the product.)
122
+
123
+ If `OSBORN_ENGINE_TOKEN` isn't set, SAY so ("I can't reach the browser engine
124
+ from here — the engine token isn't configured on this machine") instead of
125
+ downgrading the cast. Only use canvas `link`/`web` mode when there is NO
126
+ active stream cast, or the user explicitly asks for a card instead.
127
+
88
128
  ## How to pull transcripts on demand (Bash + curl)
89
129
 
90
130
  When the user explicitly asks (see triggers above): speak briefly first ("On it"), then **delegate the fetch+parse+write to the `writer` sub-agent** in one `Task` call (the steps below are what you put in the writer's prompt — they're 4+ Bash/Write calls, over your 3-call budget). When the writer finishes, speak the result. The commands below are the recipe the writer runs, not calls you make directly.
package/dist/index.js CHANGED
@@ -340,6 +340,10 @@ function startApiServer(workingDir, port) {
340
340
  status: 'ok',
341
341
  workingDir,
342
342
  version,
343
+ // WHERE this machine physically runs — Fly sets FLY_REGION (e.g. 'ord').
344
+ // The dashboard maps it to a city ("Chicago") so the user always knows
345
+ // the machine's location, not just their own clock. Null in local dev.
346
+ region: process.env.FLY_REGION || null,
343
347
  // LiveKit subsystem status — frontend can use this to surface a real
344
348
  // error instead of treating the sandbox as totally broken. The HTTP
345
349
  // status code stays 200 so Fly health-check stays green and the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osborn",
3
- "version": "0.9.98",
3
+ "version": "0.9.100",
4
4
  "description": "Voice AI coding assistant - local agent that connects to Osborn frontend",
5
5
  "type": "module",
6
6
  "bin": {