map POSIX errno to actionable IPC error kinds (T-79)

pane.spawn (via PtyException.errno) and editor.open (via
FileSystemException.osError.errorCode) now route ENOENT to
not_found, EACCES/EPERM to user_error with a permissions hint,
EISDIR/ENOTDIR/EEXIST to distinct user-error/conflict, and
EMFILE/ENFILE to tool_error with a "fd limit hit" hint. The
mapping lives in lib/src/ipc/errno_mapping.dart so other handlers
can adopt the same surface as they pick up errno-bearing failures.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-06 09:56:04 +02:00
co-authored by Claude
parent 41fd586ca0
commit 5fb3df84ed
6 changed files with 224 additions and 5 deletions
+19 -5
View File
@@ -1,5 +1,5 @@
{
"exported_at": "2026-05-05T13:12:14Z",
"exported_at": "2026-05-06T07:56:04Z",
"decisions": [
{
"id": "D-1",
@@ -2624,10 +2624,10 @@
"id": "T-77",
"type": "task",
"title": "IPC server: per-request timeout, broadcast logging, stale-socket race",
"status": "in_progress",
"status": "done",
"priority": "high",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 13:10:57"
"updated_at": "2026-05-05 13:12:20"
},
{
"id": "T-78",
@@ -2642,10 +2642,10 @@
"id": "T-79",
"type": "task",
"title": "pane.spawn / editor.open: map errno to actionable error kinds",
"status": "backlog",
"status": "in_progress",
"priority": "medium",
"created_at": "2026-05-05 12:58:59",
"updated_at": "2026-05-05 12:58:59"
"updated_at": "2026-05-06 07:45:02"
},
{
"id": "T-80",
@@ -3975,6 +3975,20 @@
"old_value": "backlog",
"new_value": "in_progress",
"changed_at": "2026-05-05 13:10:57"
},
{
"ticket_id": "T-77",
"field": "status",
"old_value": "in_progress",
"new_value": "done",
"changed_at": "2026-05-05 13:12:20"
},
{
"ticket_id": "T-79",
"field": "status",
"old_value": "backlog",
"new_value": "in_progress",
"changed_at": "2026-05-06 07:45:02"
}
]
}