Skip to content

Releases: ThinkOffApp/ide-agent-kit

v0.9.0: user-intent-kit embedded

10 Jun 10:47

Choose a tag to compare

Added

  • user-intent-kit embedded: the UIK codebase now lives at packages/user-intent-kit (JS client + adapters + Python/Swift/Kotlin ports), wired in as a file: dependency. It remains independently publishable.
  • src/intent.mjs: single construction point for intent clients/adapters from the intent config block (camelCase and snake_case keys both accepted), with a 30s intent cache shared by enrichment and nudge gating.
  • intent CLI command: ide-agent-kit intent <get|profile|derived|state|patch|heartbeat|daemon>. state shows the two-level user state plus the background gate verdict; daemon is the embedded equivalent of uik-daemon, driven by config.intent.* instead of env vars.
  • Nudge suppression in rooms watch: when config.intent is set and the user's urgency_mode is emergency-only, the poller still writes notification files but skips the tmux/command nudge. Opt out with intent.suppress_nudges: false. Fails open on API errors.

Fixed

  • Intent enrichment never worked: enrichment.mjs authenticated with Authorization: Bearer but the intent API expects X-API-Key, so every event carried the placeholder intent. Now uses the embedded IntentClient (correct auth) plus the shared cache, so message bursts cost one API call instead of one per event.
  • loadConfig dropped the intent, memory_api, and moltbook blocks: it rebuilds the config from an allowlist of known sections and these three were missing, so their settings silently never reached consumers through any CLI entry point. All three now pass through, with a regression test.

Changed

  • fetchIntentGate in background.mjs is built on the embedded IntentClient instead of a hand-rolled fetch. Same gate rules, same return shape, same fail-open behavior.
  • npm test now also runs the embedded user-intent-kit suite (101 tests).

Also includes ClaudeMB's MCP room tools, secure /wake endpoint, wake-script config canonicalization, and multi-agent routing docs (#12).

v0.8.2 — text-area-content wake skip (replaces frontmost over-skip)

03 May 09:36

Choose a tag to compare

@claudemm caught that v0.7.5's frontmost-app skip over-fired and made agents look offline whenever the user had Claude.app focused. Replaced with the precise text-area accessibility check claudemm originally proposed — skip only when prompt input is non-empty (user actively typing). Applied to all three osascript wake scripts.

v0.8.1 — per-agent author attribution

03 May 09:34

Choose a tag to compare

Per-agent API key map for the GroupMind announcer + from_handle override on POST /intent. Confirmation chat posts now show the originating agent (claudemm, CodexMB, etc.) rather than always the daemon owner. Configure via mcp.confirmations.api_keys = { '@handle': 'xfb_...', ... }.

v0.7.5 — skip wake when target app frontmost

03 May 08:53

Choose a tag to compare

@claudemm caught: auto-wake injected keystrokes mid-typing if user was already in the target Claude app, garbling the in-flight prompt. Fix: AppleScript checks if frontmost is the target before sending; skip if yes. The user's eventual submit will surface queued /tmp messages via UserPromptSubmit hook.

v0.7.4 — wake: 250ms delay between text and Enter

03 May 08:13

Choose a tag to compare

@Petrus reported 'tmux check rooms with no Enter' — typed text appears in Claude desktop app's prompt input but Enter doesn't actually submit the turn. Same class of bug @claudemm fixed in Feb 2026 for the CLI tmux Claude TUI: keystroke text and key code 36 (Return) fired back-to-back inside a single AppleScript tell-block sometimes meant the Enter landed before the typed text was processed.

Fix: split into two tell-blocks with a 250ms delay between. Applied across all three osascript wake scripts (claudemb-wake, codex_gui_nudge, gemini_gui_nudge).

v0.8.0 — wake-on-mention auto-path

02 May 21:56

Choose a tag to compare

Per @Petrus's ask: when a new room message contains @<peer> for any handle in mcp.confirmations.peers, the poller automatically fires POST /wake on that peer's daemon URL. Sub-second cross-machine nudge with no manual MCP call needed.

Configure in ide-agent-kit.json:

"mcp": {
  "confirmations": {
    "peers": {
      "@claudemm": "http://192.168.50.105:8788",
      "@CodexMB":  "http://192.168.50.105:8788"
    }
  }
}

And set IAK_SELF_HANDLE=@claudeMB (or your handle) on the poller to skip self-mentions.

Logs to /tmp/iak-wake-on-mention.log.

v0.7.3 — wake fix coverage for tools/codex_gui_nudge.sh

02 May 21:55

Choose a tag to compare

Final straggler from the grep — tools/codex_gui_nudge.sh had the same osascript race bug as the other two wake scripts. Same fix pattern. All three are now consistent.

v0.7.2 — wake fix coverage for tools/gemini_gui_nudge.sh

02 May 21:54

Choose a tag to compare

Patch on v0.7.1. Apply the same process-targeted keystroke fix to tools/gemini_gui_nudge.sh, which @claudemm flagged still had the System Events race bug. Identical pattern: tell process appName / set frontmost / keystroke + try/log fallback. Diagnosis: @claudemm.

v0.7.1 — fix silent osascript wake keystroke race

02 May 21:52

Choose a tag to compare

Patch release.

Bug: claudemb-wake.sh used tell application "System Events" to keystroke which routes to whichever process is frontmost at execution time. If Claude.app didn't fully take focus during the 0.3s activation delay (multi-window, focus contention), keystrokes landed in the user's actual foreground app with NO error logged. @claudemm observed ~10 lost wakes in a 16-min window on the mini.

Fix: bind the keystroke target to the process explicitly via tell process "$APP_NAME" / set frontmost to true / keystroke. Plus a post-keystroke verify check that logs WARN when finalFront != target for any remaining edge cases.

Affected: anyone using the AppleScript wake path (claudemb-wake.sh in the IAK poller). The Stop hook path (claudecode-stop-resume.sh) was unaffected — it uses exit code 2 + stderr, no keystroke.

Diagnosis credit: @claudemm. Fix design: @claudemb.

v0.7.0 — MCP server + confirmations + easy install

02 May 20:29

Choose a tag to compare

First release with the full IAK confirmation pipeline + the matching CodeWatch app integration.

Highlights

MCP server

New iak-mcp-server (stdio) and long-running iak-mcp-daemon (HTTP). Tools:

  • wake_ide, wake_all, wake_remote — nudge agent sessions locally and across machines.
  • request_confirmation — block until the user approves / denies, surfaced via GroupMind chat, the daemon's web UI on port 8788, and CodeWatch on Android.
  • tmux_run, read_session, list_sessions, list_intents, approve_intent, deny_intent.

Confirmation registry

  • HTTP server on port 8788: POST /intent, GET /intents, POST /intent/<id>/decision, POST /wake.
  • Browser UI at / with Approve/Deny buttons (works on Wear OS / phone / Mac).
  • Chat-reply poller catches /approve <id> and /deny <id> from any subscribed room member.
  • GroupMind announcements include metadata.actions + metadata.intent_id so the chat UI renders inline buttons (matching antfarm PR #13).

One-shot macOS installer

curl -fsSL https://raw.githubusercontent.com/ThinkOffApp/ide-agent-kit/main/scripts/install.sh | bash

Idempotent. Installs prereqs via brew, clones, npm install, writes starter config, wires UserPromptSubmit + Stop hooks into ~/.claude/settings.json, starts daemon in tmux, prints LAN URL to paste into CodeWatch.

Auto-wake mechanisms

  • scripts/claudemb-poll.sh — room poller that drops new messages into /tmp/iak-new-messages.txt.
  • scripts/claudemb-wake.sh — osascript injector that types check rooms into the Claude desktop app (focus-preserving).
  • scripts/claudecode-stop-resume.sh — Stop hook that resumes a turn with new messages, no Accessibility permission required.
  • scripts/check-rooms-hook.sh — UserPromptSubmit hook that prepends new room messages to user prompts.

Docs

docs/auto-wake.md — full setup with ASCII diagram and troubleshooting.

Companion repos

  • CodeWatch — phone app, Settings + Setup card + notification action buttons end-to-end.
  • antfarm (GroupMind) PR #13 — inline Approve/Deny buttons on chat messages.

Tests

76 / 76 passing across 13 suites on Node 18, 20, 22.