forked niri forked from okami.mom/niri

all pending coral work: per-model compaction config, snapcompact frames, web_search, skills, dm-debounce, subagent preset fix #59

Merged nano.sharkgirl.pet
targeting main from nano.sharkgirl.pet/coral:pr/all-coral-work
Merged opened by and assigned to nano.sharkgirl.pet
targeting main from nano.sharkgirl.pet/coral:pr/all-coral-work

One PR for everything unmerged on coral (14 commits, clean on main):

  • per-model context config (compaction_strategy/trigger/deep_archive, respect_prompt_cache rename)
  • snapcompact bitmap deep-archive frames via @oh-my-pi/pi-natives (Node loader bypass + startup-crash-on-load policy; the frames-intended check is inlined at the boot call site)
  • web_search tool (Exa)
  • skills index + skill tool
  • idle_compaction_minutes per-model preset
  • shutdown timeout fix, initJobManager restore, boredom wake, idle compaction wiring
  • discord DM wake debounce
  • resolve subagent model as preset key

Verified: tsc clean, 90/90 runtime tests, nix build .#coral succeeds.

Commits 14

refactor: inline snapcompactFramesIntended into the startup check
fix: resolve subagent model as preset key instead of raw model string
feat(discord): debounce DM wakes on typing/follow-ups
feat(compaction): crash on snapcompact renderer LOAD failure at startup; degrade only on per-render failure
feat(compaction): wire @oh-my-pi/pi-natives snapcompact bitmap renderer
feat(model): move compaction_strategy/compact_trigger_tokens/deep_archive + rename preserve_prompt_cache->respect_prompt_cache to per-model presets
feat(tools): add web_search tool backed by Exa
feat(model): make idle_compaction_minutes a per-model preset option
fix(jobs): restore initJobManager wiring lost in monorepo restructure
fix(shutdown): 60s->5min timeout + save raw snapshot before rich summary compaction
feat(skills): inject skills index into sysprompt + add skill tool
feat(runner): end_session compacts before saving
fix(runner): wire boredom wake back in as an activation
fix(runner): wire idle compaction back into the loop