## Summary
Adds browser DOM repair suggestions inside `services/computer-use-mcp`.
Known browser DOM action failures now get structured, advisory-only
repair suggestions for selector misses, hidden elements, timeouts,
detached frames, and stale elements. The registration path uses the
suggestions for `browser_dom_click` and `browser_dom_wait_for_element`
thrown-error responses.
## Boundary
- Only touches `services/computer-use-mcp`.
- Does not touch app, renderer, overlay, extension assets, desktop v3
files, or root project governance files.
- Does not import preview changes that delete current upstream
Chrome/desktop files.
- Does not include local AI config, screenshots, tokens, account
identifiers, or raw environment dumps.
## Validation
Sanitized evidence is committed in
`services/computer-use-mcp/validation/browser-repair-contract.md`.
Ran:
- `pnpm install --ignore-scripts --frozen-lockfile`
- `pnpm -F @proj-airi/computer-use-mcp exec vitest run
src/browser-dom/browser-repair-contract.test.ts
src/server/register-tools-pty-approval.test.ts --config
./vitest.config.ts`
- `pnpm exec moeru-lint --fix
services/computer-use-mcp/validation/browser-repair-contract.md
services/computer-use-mcp/src/browser-dom/browser-repair-contract.ts
services/computer-use-mcp/src/browser-dom/browser-repair-contract.test.ts
services/computer-use-mcp/src/server/register-tools.ts
services/computer-use-mcp/src/server/register-tools-pty-approval.test.ts`
- `git diff --check`
`pnpm -F @proj-airi/computer-use-mcp typecheck` is currently blocked by
existing baseline errors in `chrome-session-manager` and
`desktop-grounding`, outside this patch. The validation note lists the
error classes without local paths or raw logs.
## Summary
Adds advisory-only tool lane hygiene inside `services/computer-use-mcp`.
This tracks the most recent non-exempt tool lane and appends a
non-blocking advisory when a registered tool is called from a different
active lane. The change is intentionally scoped to computer-use MCP
server registration and run state.
## Boundary
- Only touches `services/computer-use-mcp`.
- Does not touch app, renderer, overlay, extension, or root project
governance files.
- Does not include local AI config, local worktree artifacts,
screenshots, tokens, account identifiers, or raw environment dumps.
## Validation
Sanitized evidence is committed in
`services/computer-use-mcp/validation/tool-lane-hygiene.md`.
Ran:
- `pnpm install --ignore-scripts --frozen-lockfile`
- `pnpm -F @proj-airi/computer-use-mcp exec vitest run
src/server/tool-lane-hygiene.test.ts --config ./vitest.config.ts`
- `pnpm -F @proj-airi/computer-use-mcp exec vitest run
src/server/tool-lane-hygiene.test.ts
src/server/register-tools-coordinate-contract.test.ts
src/server/register-tools-pty-approval.test.ts --config
./vitest.config.ts`
- `pnpm exec moeru-lint --fix
services/computer-use-mcp/validation/tool-lane-hygiene.md
services/computer-use-mcp/src/server/tool-lane-hygiene.ts
services/computer-use-mcp/src/server/tool-lane-hygiene.test.ts
services/computer-use-mcp/src/server/register-tools.ts
services/computer-use-mcp/src/state.ts`
- `git diff --check`
`pnpm -F @proj-airi/computer-use-mcp typecheck` is currently blocked by
existing baseline errors in `chrome-session-manager` and
`desktop-grounding`, outside this patch. The validation note lists the
error classes without local paths or raw logs.
### Description
Upgrades Playwright from `^1.59.1` to `^1.60.0` across the monorepo
workspace.
### Why is this needed?
In clean CI environments using Node.js 24 (the current LTS), Playwright
versions older than `1.60.0` hang indefinitely during the zip extraction
phase of `playwright install chromium`.
This is a known compatibility issue with Playwright's older extraction
utility (`yauzl`) running on Node 24+. Playwright resolved this bug in
version `1.60.0`. Upgrading ensures the CI test pipeline runs smoothly
without hanging.
### Proposed Changes
- Upgraded `"playwright"` to `^1.60.0` in:
- Root `package.json`
- `packages/vishot-runner-browser/package.json`
- `packages/vishot-runner-electron/package.json`
- `services/twitter-services/package.json`
- Regenerated `pnpm-lock.yaml` via `pnpm install`.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
## Summary\n- Pass the remaining waitForElement budget into each
frame-level CU_ACTION send so unresponsive frames cannot consume the
fixed 8s sendMessage timeout.\n- Use the remaining deadline for each
poll and stop polling immediately when the budget is exhausted.\n-
Reduce the bridge-side waitForElement grace from the legacy 9.5s buffer
to a small transport grace.\n- Add a regression test covering the
hanging-extension case.\n\n## Validation\n- pnpm -C
services/computer-use-mcp exec vitest run --config ./vitest.config.ts
src/browser-dom/extension-bridge.test.ts
---------
Co-authored-by: Neko <neko@ayaka.moe>
Co-authored-by: 刘梓恒 <160735726+3361559784@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
## Summary
- cap local `terminal_exec` stdout/stderr capture at a fixed per-stream
limit
- report whether each stream was truncated, along with the original
captured length
- add runner coverage for commands that emit large stdout and stderr
payloads
## Why
The local shell runner currently appends stdout/stderr without a
boundary before returning `TerminalCommandResult`. Large command output
can grow the MCP response and stored terminal state far beyond what is
useful for the agent.
This keeps command execution semantics the same while bounding the
returned text and making truncation explicit to callers.
## Tests
- `pnpm -F @proj-airi/computer-use-mcp test --
src/terminal/runner.test.ts`
- `pnpm -F @proj-airi/computer-use-mcp typecheck`
- `git diff --check origin/main...HEAD`
Co-authored-by: 刘梓恒 <160735726+3361559784@users.noreply.github.com>
* feat(minecraft): contextflow integration
Add AiriBridge to cognitive engine to enable communication with Airi system. Expose `notifyAiri` and `updateAiriContext` functions in JS planner runtime globals for sending notifications and context updates from agent code.
* refactor(minecraft): remove redundant destinations field from airi-bridge
Remove hardcoded `destinations: ['minecraft']` from spark:command, spark:notify, and context:update events as the destination is already implied by the bridge context.
* feat(minecraft): complete AIRI context flow integration
Wire up bidirectional AIRI ↔ Minecraft communication via dedicated
signal channels instead of reusing signal:chat_message.
- Add airi_command and airi_context to PerceptionSignalType
- Route spark:command intents: action/plan/proposal/reroute emit
signal:airi_command; context intent emits signal:airi_context
- Add inbound context:update listener so AIRI can push context to
the Minecraft agent
- airi_context signals are injected into conversation history directly
without triggering a full cognitive cycle
- airi_command events reset the no-action budget (like player chat)
- enterContext/exitContext auto-emit context:update back to AIRI for
task lifecycle visibility
- Add sendEmit() helper for queued/working/done progress reporting
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(minecraft): report bot startup state to AIRI
Send initial context update to AIRI when brain comes online, including
bot username, server address, position, health, game mode, and list of
other online players. Tagged with 'startup' and bot username for
filtering.
* feat(minecraft): manage bot config through airi
* feat(stage-ui): add minecraft service shell
* fix(stage-ui): use applied minecraft config for chat context
* fix(minecraft): fall back on invalid env port
* fix(minecraft): support quoted env values
* fix(minecraft): ignore empty env overrides
* fix(stage-ui): keep minecraft draft during apply
* fix(stage-ui): simplify minecraft heartbeat label
* feat(stage-ui): simplify minecraft settings shell
* fix(minecraft): use registry heartbeat for stage liveness
* chore(minecraft): remove annoying detector decision logging
* fix(minecraft): limit context flow to bot pushes
* fix(minecraft): use workspace server sdk
* fix(stage-ui): replay registry snapshots for late listeners
* chore(minecraft): add todo for explicit stage deregistration
* feat: improve context flow observability
* fix(stage-ui): remove redundant header and callout from settings and context flow pages
* feat(stage-ui): enhance context flow prompt projection UI with readiness indicator
* docs(stage-ui): clarify context flow prompt projection terminology
* fix(stage-ui): add test for clone-safe context snapshots with nested fields
* todo
* fix(minecraft): avoid blocking startup on airi connection
* Remove LLM timeouts from the Minecraft brain
* Remove context boundary system from Minecraft brain
* feat(minecraft): use isolated-vm for JS planner sandbox
* refactor(minecraft): harden planner sandbox defaults
* Remove LLM attempt timeout guard
* [autofix.ci] apply automated fixes
* Fix server runtime shutdown signal handling
* Remove misleading Minecraft integration toggle
* contextflow destination to stage-*
* chore(deps): updated
* Add settings layout route for web devtools
* chore: default to expand context panels
* fix(server-*): should export more types, and for module:announced should ignore self
* refactor(minecraft): better context orchestration, handle module announce, context sync, and more
* feat(stage-ui): not spark command ready
* [autofix.ci] apply automated fixes
* clean up
* refactor: use :class arrays per AGENTS.md styling guidelines
* cleanup bloated tests
* rm more tests
* use errorMessageFrom
* hardcode to reduce bloat
* update setup instructions
* timeout for brain
* remove more bloat
* fix
---------
Co-authored-by-agent: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by-agent: Codex
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Neko Ayaka <neko@ayaka.moe>