teernisse
|
e3e42e53f2
|
fix(spawn): handle special characters in project names
- Reject null bytes and control characters (U+0000-U+001F, U+007F) in
_validate_spawn_params with explicit INVALID_PROJECT error
- Reject whitespace-only project names as MISSING_PROJECT
- Reject non-string project names (int, list, etc.)
- Add _sanitize_pane_name() to clean Zellij pane names: replaces quotes,
backticks, and control chars with underscores; collapses whitespace;
truncates to 64 chars
- Add 44 new tests: safe chars (hyphens, spaces, dots, @, +, #),
dangerous chars (null byte, newline, tab, ESC, DEL), shell
metacharacters ($, ;, backtick, |), pane name sanitization, and
spawn command construction with special char names
Closes bd-14p
|
2026-02-26 17:09:51 -05:00 |
|
teernisse
|
a7a9ebbf2b
|
feat(server): implement SpawnMixin for agent spawning
Implement amc_server/mixins/spawn.py with:
- _handle_spawn: POST /api/spawn handler with auth, validation, rate limiting
- _validate_spawn_params: path traversal/symlink escape protection
- _check_zellij_session_exists: session availability check
- _wait_for_session_file: poll for spawn correlation via spawn_id
- _spawn_agent_in_project_tab: Zellij tab creation + pane spawn
- _handle_projects: GET cached project list
- _handle_projects_refresh: POST to refresh cache
- _handle_health: Zellij availability check
- load_projects_cache: module-level project directory scanner
Closes bd-5m4
|
2026-02-26 17:00:49 -05:00 |
|