openvisio-agent 0.15.0 → 0.15.1

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/README.md CHANGED
@@ -58,7 +58,7 @@ Runs the **autonomy loop** — the agent replies to @mentions and picks up ticke
58
58
 
59
59
  Backend/BYO watchers reconcile immediately whenever the process starts or the WebSocket connects. A direct MCP session uses the backend's actual tools (`list_agents`, `list_projects`, `list_tasks`, `list_task_types`, and `list_activity`) to recover assigned tasks and recent mention activity missed while offline. The same zero-model check runs every five minutes as a safety net; a model starts only when pending work exists.
60
60
 
61
- Routine messages, triage, introductions, catch-up checks, and ticket movement use a lower-cost model by default. Claude uses Haiku and Codex uses `gpt-5.6-terra`; Luna is intentionally not used because watcher coordination depends on reliable MCP tool use. Requests that require repository work route to the coding model: Sonnet for Claude and `gpt-5.6-sol` for Codex. Override either lane with `--chat-model` and `--model`.
61
+ Claude uses Haiku for routine coordination and Sonnet for repository work. Codex uses `gpt-5.6-sol` for every cycle, including messages, mentions, triage, board movement, MCP calls, and coding. This intentionally favors reliability and consistent tool use over the cheaper Codex tiers.
62
62
 
63
63
  ```bash
64
64
  openvisio-agent watch --name ada # run in this terminal
package/bin/cli.mjs CHANGED
@@ -59,8 +59,8 @@ connect --backend
59
59
  gpt-5.6-sol; OpenCode uses its configured default.
60
60
  Engineers can also change it live from chat: "@agent /model …".
61
61
  --chat-model <m> coordination model for chat, triage, and board movement.
62
- Defaults: Claude haiku, Codex gpt-5.6-terra.
63
- Coding work stays on --model.
62
+ Claude defaults to haiku. Codex uses gpt-5.6-sol for every
63
+ cycle, including coordination and messaging.
64
64
  --no-service skip the background service — just save config + print the
65
65
  watch commands to run yourself.
66
66
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openvisio-agent",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
4
4
  "description": "Connect Claude Code, Codex, or OpenCode to an OpenVisio team — MCP tools + optional autonomy — in one command.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/watch.mjs CHANGED
@@ -215,11 +215,10 @@ export async function runWatch({ flags }) {
215
215
  const workdir = chatOnly ? '' : (explicitWorkdir || (saved && (saved.workspace || saved.workdir)) || DEFAULT_WORKSPACE)
216
216
  if (workdir) { try { mkdirSync(workdir, { recursive: true }) } catch { /* best-effort; spawn will surface a real problem */ } }
217
217
 
218
- // Keep routine coordination on a balanced tool-capable tier. Luna proved too
219
- // willing to narrate instead of acting in MCP-heavy watcher cycles, so Codex
220
- // defaults to Terra for coordination and reserves Sol for repository work.
218
+ // Codex uses Sol for every watcher cycle. Reliability and consistent MCP/tool
219
+ // behaviour take priority over maintaining a cheaper coordination lane.
221
220
  const defaultModel = agent === 'claude' ? 'sonnet' : agent === 'codex' ? 'gpt-5.6-sol' : ''
222
- const defaultChatModel = agent === 'claude' ? 'haiku' : agent === 'codex' ? 'gpt-5.6-terra' : ''
221
+ const defaultChatModel = agent === 'claude' ? 'haiku' : agent === 'codex' ? 'gpt-5.6-sol' : ''
223
222
  const model = String(flags.model || (saved && saved.model) || defaultModel)
224
223
  const chatModel = String(flags['chat-model'] || (saved && saved.chatModel) || defaultChatModel)
225
224
 
@@ -597,7 +596,7 @@ function loopBackendWs({ wsUrl, apiKey, identifier, slug, claude, agent, mcpConf
597
596
  }
598
597
  const ensureMcpSession = async () => {
599
598
  if (mcpSessionId) return
600
- const res = await mcpPost({ jsonrpc: '2.0', id: ++mcpRpcId, method: 'initialize', params: { protocolVersion: '2025-03-26', capabilities: {}, clientInfo: { name: 'openvisio-agent', version: '0.15.0' } } }, false)
599
+ const res = await mcpPost({ jsonrpc: '2.0', id: ++mcpRpcId, method: 'initialize', params: { protocolVersion: '2025-03-26', capabilities: {}, clientInfo: { name: 'openvisio-agent', version: '0.15.1' } } }, false)
601
600
  if (!res.ok) throw new Error('MCP initialize HTTP ' + res.status)
602
601
  await mcpPayload(res)
603
602
  mcpSessionId = res.headers.get('mcp-session-id') || ''
@@ -700,7 +699,7 @@ function loopBackendWs({ wsUrl, apiKey, identifier, slug, claude, agent, mcpConf
700
699
  const prompt = (ctx.length ? ctx.join('\n') + '\n\n' : '') + baseFor(kind)
701
700
  // Chat-shaped cycles (mentions/intro) may run on the cheaper chat model; code
702
701
  // work (full/sweep) uses the main model.
703
- const useModel = kind === 'full' ? codeModel : liteModel
702
+ const useModel = agent === 'codex' ? codeModel : kind === 'full' ? codeModel : liteModel
704
703
  log('running ' + kind + ' cycle…' + (ctx.length ? ' (' + ctx.length + ' event' + (ctx.length === 1 ? '' : 's') + ')' : '') + (useModel ? ' [' + useModel + ']' : ''))
705
704
  // Live status: "working" now + a heartbeat so the UI (and its TTL) stays lit
706
705
  // through a long cycle; onTool flips it to "typing" when post_message fires.