927437a8d8
Sistema FleetView para centralizar la flota de procesos Claude Code vivos en una sola ventana kitty + tmux (socket aislado -L fleet) con un panel TUI: - list_claude_fleet (+ tipo claude_fleet): escanea ~/.claude/sessions + goals + runtime, valida procesos vivos (anti-PID-reciclado), join por sessionId. - list_resumable_claudes (+ tipo resumable_claude): sesiones cerradas reanudables. - wrappers tmux: tmux_new_claude_window (con --resume), tmux_swap_window_into_console (preserva ancho del sidebar), tmux_map_claude_panes. - launch_kittyclaude: comando entrypoint; instala atajos alt+flechas/enter/n/0/k/r, mouse on, remain-on-exit off; fija el ancho del sidebar con hooks. - docs/capabilities/claude-fleet.md + entrada en el INDEX. Incluye ademas funciones datascience en progreso (excel/duckdb/postgres) y ajustes varios de docs e infra de otra sesion, agrupados aqui para no perderlos. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path, notes
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | notes | |||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tmux_new_claude_window | function | go | infra | 1.0.0 | impure | func TmuxNewClaudeWindow(socket, session, cwd string) (string, error) | Crea una window detached nueva en una sesion tmux de un socket aislado (tmux -L <socket>) que corre `claude --dangerously-skip-permissions` en el cwd dado, y devuelve su window_id (ej @7). No cambia el foco. Capa de control tmux de la app TUI fleetview para arrancar un Claude nuevo dentro de la sesion fleet. Como el pane corre claude via exec, el #{pane_pid} del pane resultante es el PID del proceso claude. |
|
false | error_go_core |
|
window_id de la window creada (string con la forma @N, ej '@7'), tal cual lo imprime `tmux new-window -P -F '#{window_id}'`. Error si socket/session/cwd vienen vacios o si tmux falla (sesion inexistente, socket no accesible). | true |
|
functions/infra/tmux_new_claude_window_test.go | functions/infra/tmux_new_claude_window.go | Build tag //go:build !windows (capa tmux de fleetview, no portable a Windows). Comparte el helper runTmux con tmux_swap_window_into_console y tmux_map_claude_panes (mismo paquete infra). El comando que corre el pane es literalmente 'claude --dangerously-skip-permissions'; tmux lo arranca via su shell pero claude reemplaza al proceso, asi que pane_pid == claude PID. |
Ejemplo
package main
import (
"fmt"
"fn-registry/functions/infra"
)
func main() {
// Arranca un Claude nuevo en /home/enmanuel/fn_registry dentro de la
// sesion 'fleet' del socket aislado 'fleet'. No roba el foco.
windowID, err := infra.TmuxNewClaudeWindow("fleet", "fleet", "/home/enmanuel/fn_registry")
if err != nil {
panic(err)
}
fmt.Println("Claude nuevo en window", windowID) // ej: @7
}
Cuando usarla
Cuando la TUI fleetview necesita arrancar un Claude nuevo dentro de la sesion fleet sin sacar al usuario de la consola actual. El Claude nace parkeado en su propia window (detached); luego TmuxSwapWindowIntoConsole lo trae a la derecha de la TUI cuando el usuario lo selecciona.
Gotchas
- Opera SIEMPRE sobre el socket aislado (
tmux -L <socket>). Nunca toca el servidor tmux por defecto del usuario. - La sesion
sessiondebe existir antes de llamar; la funcion crea la window, no la sesion. - Devuelve el
window_id(@N), no elwindow_index. El swap posterior usa este id. -dgarantiza que no cambia el foco: el Claude nuevo queda parkeado, no se muestra solo.- Build tag
//go:build !windows: no compila ni corre en Windows.