Repository navigation
v0.9.0: user-intent-kit embedded
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 afile:dependency. It remains independently publishable. src/intent.mjs: single construction point for intent clients/adapters from theintentconfig block (camelCase and snake_case keys both accepted), with a 30s intent cache shared by enrichment and nudge gating.intentCLI command:ide-agent-kit intent <get|profile|derived|state|patch|heartbeat|daemon>.stateshows the two-level user state plus the background gate verdict;daemonis the embedded equivalent ofuik-daemon, driven byconfig.intent.*instead of env vars.- Nudge suppression in
rooms watch: whenconfig.intentis set and the user'surgency_modeisemergency-only, the poller still writes notification files but skips the tmux/command nudge. Opt out withintent.suppress_nudges: false. Fails open on API errors.
Fixed
- Intent enrichment never worked:
enrichment.mjsauthenticated withAuthorization: Bearerbut the intent API expectsX-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. loadConfigdropped theintent,memory_api, andmoltbookblocks: 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
fetchIntentGateinbackground.mjsis built on the embedded IntentClient instead of a hand-rolled fetch. Same gate rules, same return shape, same fail-open behavior.npm testnow 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).