63 lines
3.5 KiB
Markdown
63 lines
3.5 KiB
Markdown
---
|
|
id: 20260531-043239-insomnia-pod-subcommand-runtime
|
|
slug: insomnia-pod-subcommand-runtime
|
|
title: 'CLI: add insomnia pod runtime entrypoint'
|
|
status: closed
|
|
kind: task
|
|
priority: P2
|
|
labels: [cli, pod, nix]
|
|
created_at: 2026-05-31T04:32:39Z
|
|
updated_at: 2026-05-31T04:50:14Z
|
|
assignee: null
|
|
---
|
|
|
|
## Background
|
|
|
|
Parent/umbrella ticket: `single-binary-insomnia-cli`.
|
|
|
|
The project currently has two installed command names:
|
|
|
|
- `insomnia` from the `tui` package for user-facing CLI/TUI/headless commands;
|
|
- `insomnia-pod` from the `pod` package for Pod runtime processes.
|
|
|
|
The target direction is one primary executable, `insomnia`, with `insomnia pod ...` as the Pod runtime entrypoint. Pod runtime remains a separate process when spawned; only the binary/entrypoint is unified.
|
|
|
|
This ticket is the first implementation step. It should add the new `insomnia pod ...` runtime entrypoint and share Pod runtime startup code, without yet requiring all internal spawn paths or packaging to drop `insomnia-pod` in the same diff.
|
|
|
|
## Requirements
|
|
|
|
- Extract the current `crates/pod/src/main.rs` runtime startup into a library-callable entrypoint in the `pod` crate.
|
|
- Keep existing Pod runtime flags/semantics.
|
|
- Preserve `INSOMNIA-READY` stderr handshake and detached process behavior.
|
|
- Keep the existing `insomnia-pod` binary only as a temporary transition wrapper if needed for tests/current spawn defaults.
|
|
- Do not present it as the long-term compatibility alias.
|
|
- Do not change Nix installed command set in this ticket unless it is mechanically necessary.
|
|
- Add `insomnia pod ...` to the existing `insomnia` binary in the `tui` crate.
|
|
- `insomnia pod --help` should reach the Pod runtime parser/help.
|
|
- `insomnia pod <runtime flags>` should invoke the same library entrypoint as the old runtime path.
|
|
- This means `insomnia pod` becomes reserved as a subcommand; a Pod literally named `pod` can still be addressed through explicit `--pod pod` if needed.
|
|
- Preserve existing user-facing TUI/CLI behavior for non-`pod` commands:
|
|
- `insomnia memory lint` remains headless and returns before terminal/TUI/Pod side effects;
|
|
- existing `insomnia <pod-name>` / `--pod` / `--multi` / resume behavior remains unchanged except for the reserved `pod` subcommand.
|
|
- Do not yet switch `client::spawn_pod`, `SpawnPod`, or `RestorePod` default command resolution to `insomnia pod` unless doing so is small and fully tested.
|
|
- If not switched, create/fill a follow-up note for command resolution `program + prefix_args` migration.
|
|
- Do not rename the `tui` package/crate in this ticket.
|
|
|
|
## Non-goals
|
|
|
|
- Removing `insomnia-pod` from packaging in this first step.
|
|
- Keeping `insomnia-pod` as a long-term alias.
|
|
- Merging Pod controller into the TUI process.
|
|
- Reworking Pod protocol or CLI UX beyond the new runtime subcommand.
|
|
- Feature-gating TUI dependencies.
|
|
|
|
## Acceptance criteria
|
|
|
|
- `insomnia pod --help` works and uses the Pod runtime parser/help.
|
|
- `insomnia-pod --help` still works if the temporary binary remains.
|
|
- `insomnia memory lint` still runs headlessly without TUI/raw-terminal/Pod startup side effects.
|
|
- Existing TUI parser tests are updated for the reserved `pod` subcommand and preserve other positional Pod-name behavior.
|
|
- Pod runtime startup code has one shared library path rather than duplicated main logic.
|
|
- Follow-up work for switching internal spawn defaults and removing `insomnia-pod` packaging is recorded if not completed here.
|
|
- `cargo fmt --check`, focused `cargo test` for affected TUI/Pod CLI parsing, `cargo check -p tui -p pod -p client`, `./tickets.sh doctor`, and `git diff --check` pass.
|