Custom Operator Tools (`[[tool]]` extension points)
Status: Open — jackin-exec, the credential picker, and MCP execution primitives exist as reusable building blocks; the operator-configured [[tool]] surface itself has no config parsing, no keybinding registration, and no firing/substitution code yet (Phase 2, Agent Orchestration Program)
Shipped baseline
jackin❯ has in-container jackin-exec (crates/jackin-capsule/src/exec.rs, crates/jackin-runtime/src/exec_host.rs), a credential picker (crates/jackin-env/src/picker.rs), and MCP execution plumbing (crates/jackin-capsule/src/mcp_server.rs). These are the primitives a [[tool]] surface would reuse, but none of them expose an operator-configurable hotkey-to-command mechanism today. There is no [[tool]] array in config parsing, no reserved-key validation for custom tools, and no substitution/firing code in the console or capsule TUI.
Remaining work
[[tool]]config array (operator-config level):type = "exec" | "prompt",key,name,exec/prompt, optionalscoperole filter.- Reserved-key collision detection at config load.
- Substitution engine for
{instance},{workspace},{workdir},{host_workdir},{input}, and tag-protocol values ({repo},{issue},{pr},{link}) once agent tag protocol ships. - Console keybinding registration and output-capture rendering (modal for V1).
- Tool firing routed through the operator handler system once that command-resolution layer exists.
Out of scope (for now)
- Per-workspace tool overrides — operator-config-level only.
- Streaming output for long-running tools — capture-and-display-on-completion only.
- Tool authoring helpers, tool emission of
<jackin:*>tags, tool composability.
Related work
- Research: Custom Operator Tools: Design Exploration — multicode's
[[tool]]design, recommended config shape, and open questions. - Operator handler system — shared command-resolution machinery this item will route through.
- Agent tag protocol — source of
{repo},{issue},{pr},{link}substitutions. - Console resource panel — infrastructure a future scrolling tool-output log would need.