osborn 0.9.104 → 0.9.105

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.
Files changed (2) hide show
  1. package/dist/claude-llm.js +11 -0
  2. package/package.json +1 -1
@@ -990,6 +990,17 @@ class ClaudeLLMStream extends llm.LLMStream {
990
990
  loadAllSkills(this.#opts.sessionBaseDir || this.#opts.workingDirectory || process.cwd()),
991
991
  ].filter(Boolean).join('\n\n'),
992
992
  canUseTool: async (toolName, input, _options) => {
993
+ // Auto-approve Bash calls to the agent's OWN local API (/canvas,
994
+ // /tts) — how the agent SPEAKS into a meeting. A spoken reply must
995
+ // never wait on a permission dialog. Localhost-only, own endpoints
996
+ // only, no shell chaining — not a general curl allowance.
997
+ if (toolName === 'Bash') {
998
+ const cmd = String(input?.command || '');
999
+ if (/^\s*curl\b[^;&|]*https?:\/\/(localhost|127\.0\.0\.1):\d+\/(canvas|tts)\b/.test(cmd) && !/[;&|]/.test(cmd)) {
1000
+ console.log(`✅ Auto-approved Bash → own API (canvas/tts speak path)`);
1001
+ return { behavior: 'allow', updatedInput: input };
1002
+ }
1003
+ }
993
1004
  // Auto-approve writes to session workspace (but block spec.md and library/ — fast brain manages those)
994
1005
  if (toolName === 'Write' || toolName === 'Edit') {
995
1006
  const filePath = String(input?.file_path || '');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osborn",
3
- "version": "0.9.104",
3
+ "version": "0.9.105",
4
4
  "description": "Voice AI coding assistant - local agent that connects to Osborn frontend",
5
5
  "type": "module",
6
6
  "bin": {