a4258cfc2c
Makes `/skill:<name> [args]` work identically under both submission keybindings, mirroring how free text is already routed during streaming: - `/skill:foo` + Enter, streaming -> steer queue (interrupt) - `/skill:foo` + Ctrl+Enter, streaming -> followUp queue - `/skill:foo` + Enter, idle -> idle prompt - `/skill:foo` + Ctrl+Enter, idle -> idle prompt (was: literal text) A single private helper `#invokeSkillCommand(text, streamingBehavior)` on `InputController` handles the dispatch; the Enter submit handler calls it with "steer", and `handleFollowUp` calls it with "followUp" after the compaction short-circuit so a skill typed during compaction rides the same `queueCompactionMessage` queue as free text. Behavior deltas vs upstream/main: - Enter on `/skill:foo` during streaming now steers (was: queued as followUp). Users who relied on the followUp default can press Ctrl+Enter -- the same key they already use for free-text follow-ups. - Ctrl+Enter on `/skill:foo` is new capability; previously the literal string `/skill:foo ...` was sent as plain followUp text and the skill was never invoked. Op: extend