Skip to content

Releases: ThinkOffApp/ide-agent-kit

v0.10.1 — agents that stay awake, and wake each other

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 14 Jul 19:22

v0.10.1 — agents that stay awake, and wake each other

Where v0.10.0 made agents stop typing over you, v0.10.1 goes after the bigger daily pain: unresponsive IDEs you have to poke by hand.

Self-arming agents

Every agent now re-arms its own wake path on SessionStart — automatically, straight from iak init. Before, an agent went dead after a restart until a human manually re-armed it (the exact reason an agent could be unreachable overnight). Now it comes back reachable on its own. iak init also upgrades existing installs instead of aborting, so current users actually receive new hooks.

Peer wake — colleagues revive each other

A same-machine agent can now revive a stuck or sleeping colleague using computer control, through the guarded wake path — no human in the loop. If one agent goes quiet, another on the same machine wakes it. This is productized from the mechanism that revived a stuck agent live during testing: opt-in (IAK_INSTALL_WATCHDOG=1), roster-driven config, launchd-wired, and it inherits v0.10.0's human-idle guard so it never types over you.

Still true from v0.10.0

Lose-nothing delivery (deferred wakes retry, nothing dropped) and the human-idle keyboard guard remain the foundation this builds on.

Every change cross-model reviewed. 142 tests.

Full changelog: v0.10.0...v0.10.1

v0.10.0 — never type over the human

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 14 Jul 08:19

IAK v0.10.0 — never type over the human

First release since June 10, and the theme is respect for the human at the keyboard. It came out of a real incident: on 2026-07-13 our own wake nudges started typing into sentences while a human was mid-message. Everything here makes sure that can never happen, and that a deferred wake never loses a message. Every change was reviewed adversarially by a second, different model before merge.

Keyboard safety (the headline)

  • A human-idle guard (HIDIdleTime, fail-closed) gates every path that can type. Garbage or zero thresholds clamp to a safe default and never authorize injection.
  • Wake scripts recheck idle immediately before every click, keypress, and Enter, so a human who returns mid-wake aborts the injection instead of being typed over.
  • Every abort restores the human's frontmost window. The old "type it anyway" fallback is gone.

Delivery that never loses a message

  • Ack-after-success: a wake that aborts is retried next cycle, tracked so an already-woken session is not re-nudged.
  • room_ack now clears only the lines it actually consumed, so a message that arrives between reading and acking survives.

Hygiene and security

  • Pre-commit secret scanner blocks accidental key leaks in this public repo.
  • Watchdog roster is config and env driven; no machine paths or private IPs in the tree.

Upgrade notes

  • Wake scripts may legitimately take up to ~5 minutes when a human is actively using the machine. Raise external supervisor timeouts to 320s or more.

v0.9.0: user-intent-kit embedded

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 10 Jun 10:47

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)

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 03 May 09:36

@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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 03 May 09:34

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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 03 May 08:53

@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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 03 May 08:13

@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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 02 May 21:56

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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 02 May 21:55

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

Choose a tag to compare

@ThinkOffApp ThinkOffApp released this 02 May 21:54

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.