osborn 0.9.102 → 0.9.104

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.
@@ -1020,6 +1020,15 @@ class ClaudeLLMStream extends llm.LLMStream {
1020
1020
  console.log(`✅ Auto-approved writer ${toolName} to skill dir: ${filePath}`);
1021
1021
  return { behavior: 'allow', updatedInput: input };
1022
1022
  }
1023
+ // Auto-approve the meetings skill's notes file. It lives at the
1024
+ // WORKING DIRECTORY root (not /osb/), so it missed the workspace
1025
+ // auto-approve — every meeting notes write stalled the turn behind
1026
+ // a permission dialog nobody in a live meeting can answer (found
1027
+ // live 2026-08-01: addressed replies froze >30s, bot went silent).
1028
+ if (/(^|\/)meeting-(todos|notes)\.md$/.test(filePath)) {
1029
+ console.log(`✅ Auto-approved ${toolName} to meeting notes: ${filePath}`);
1030
+ return { behavior: 'allow', updatedInput: input };
1031
+ }
1023
1032
  // if (toolUseId && this.#approvedWriterToolUseIds.has(toolUseId)) {
1024
1033
  // this.#approvedWriterToolUseIds.delete(toolUseId)
1025
1034
  // console.log(`✅ Writer pre-approved ${toolName}: ${filePath}`)
package/dist/index.js CHANGED
@@ -1797,8 +1797,13 @@ async function main() {
1797
1797
  // the agent replies out loud into the meeting. This is the chat-mode path:
1798
1798
  // named/asked → prompt response. Un-addressed chunks stay in the silent
1799
1799
  // 20s batch for note-taking. That's the two-mode seam, mechanically.
1800
- if (/\bosborn\b/i.test(text)) {
1801
- console.log('📓 Addressed by name — immediate flush for a response');
1800
+ // Fuzzy name match: meeting STT routinely mangles "Osborn" — observed
1801
+ // live 2026-08-01: "Osborn can you hear me" → "i was born can you hear
1802
+ // me" (name trigger missed, bot stayed silent). Accept common
1803
+ // mis-transcriptions; mild false-positive risk is acceptable in a
1804
+ // room that invited the bot.
1805
+ if (/\b(osborne?|oz\s?born|os\s?born|was born|is born|ozborn|osbourne?|austin\b.{0,8}(hear|there|can you))/i.test(text)) {
1806
+ console.log('📓 Addressed by name (fuzzy) — immediate flush for a response');
1802
1807
  flushMeetingBuffer(botId, true);
1803
1808
  }
1804
1809
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osborn",
3
- "version": "0.9.102",
3
+ "version": "0.9.104",
4
4
  "description": "Voice AI coding assistant - local agent that connects to Osborn frontend",
5
5
  "type": "module",
6
6
  "bin": {