Operator Handler System (IDE / diff / browser launchers)
Status: Partially implemented — host affordance primitives (safe URL open, verified file export, host reveal/open) are shipped and documented; the configurable named-handler layer ([handler] config, jackin open/diff/web, console keybindings) is not built (Phase 1, Agent Orchestration Program)
Shipped facts
Capsule ships host affordances for the most common cases an operator needs today: safe scheme-limited URL opening, verified file export with reveal/open follow-up, and host reveal/open for launch-failure artifacts and diagnostics — see Host Affordances for the full operator-facing list. crates/jackin-host/src/host_desktop.rs implements the cross-platform open / xdg-open / explorer.exe dispatch these affordances share, and jackin_core::url_text::is_host_open_url enforces the http(s)/mailto scheme allowlist.
What is missing is the configurable handler layer this item is actually about: named operator handlers (diff, web, ide), platform defaults, and CLI/console routing that let an operator wire a diff viewer or IDE the same way multicode's [handler]/[compare] blocks do. There is no [handler] config surface in jackin-config, no jackin open / jackin diff / jackin web CLI subcommands (crates/jackin/src/cli.rs has no such variants), and no console o/d/w keybindings.
Remaining work
[handler.diff],[handler.web],[handler.ide]operator-config blocks with cross-platform defaults forweb(open/xdg-open) anddiff(git diffin-terminal fallback).- CLI subcommands
jackin open <selector>,jackin diff <selector>,jackin web <url>, resolving the same primary-mount / materialized-worktree pathjackin loaduses. - Console keybindings (
oopen in IDE,ddiff,wweb) on a selected workspace row. - IDE well-known table (
vscode,intellij,zed,cursor,none) with an explicit-command override.
Out of scope
- Per-workspace handler overrides — operator-config-level only for V1.
- In-console diff renderer —
git diffin a paged view is enough; external viewers stay external. - PTY allocation for the diff handler — defer until a TTY-aware diff tool needs it.
Related work
- Research: Operator Handler System: Design Exploration — multicode inspiration, recommended config/CLI/console shape, and open design questions.
- Host Affordances — shipped host-open/export/reveal primitives this handler layer reuses.
- GitHub link tracking — consumes the
webhandler. - Agent tag protocol — emitted
<jackin:repo>tags resolve throughdiffandide. - Custom operator tools — also uses the handler resolution machinery.