summaryrefslogtreecommitdiff
path: root/.agents
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 16:59:45 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commit04e4323a27237bc886e92ce20c02c42c6f594d1f (patch)
treed4b3e0ae6e19d03e86d38c153ccc542f8d2a14c9 /.agents
parent84b04c8ea7f04ba7569628e49ca900622c8d7858 (diff)
downloadpardes-04e4323a27237bc886e92ce20c02c42c6f594d1f.tar.gz
pardes-04e4323a27237bc886e92ce20c02c42c6f594d1f.zip
The docs say which shell a command runs in, what Kill's word matches, where dumps go and in what time, and how to send code to a REPL
Dogfood found the docs saying $SHELL -c where commands run the root ctl's Shell, the README's log line missing run, exit, send, dump and restore, Kill's argument unexplained, and nothing on Repl - and bare Repl, on bracketed paste for multi-line code over pty/data, or on the UTC dump time. The Restore write's ECONNRESET through a mount is documented rather than fixed: pardes sends the answer before the hang-up, and 9ns drops it when its next send fails first. The REPL decision is recorded with the others, and the fs guide says a builtin's word still runs first. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to '.agents')
-rw-r--r--.agents/skills/pardes-9p/SKILL.md21
1 files changed, 15 insertions, 6 deletions
diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md
index 7cc3aeb1..0643e209 100644
--- a/.agents/skills/pardes-9p/SKILL.md
+++ b/.agents/skills/pardes-9p/SKILL.md
@@ -57,6 +57,7 @@ $m/pane/<n>/pty/run write one line, read `exit N` + its output, or `busy` / `e
exec 3<>$m/pane/$n/pty/run; echo make >&3; cat <&3
(a fresh terminal: waits for its first prompt; if none comes, interrupt the read)
$m/log recent events, then EOF: new|del|rename|save <serial> <name>, msg <serial|-> <text>,
+ run <serial> <line>, exit <serial> <N|?>, send <from> <to> <repl-id>,
dump|restore <path>, err <serial|-> <file>: <why>
(exec 3<>$m/log; echo follow >&3; cat <&3 waits for new ones; tail -f does not)
$m/screen the rendered screen as JSON, frozen per open
@@ -65,7 +66,8 @@ $m/focus the serial of the pane with the keyboard (empty while a column/wor
echo a serial into it to move the keyboard (a folded pane stays folded)
$m/ctl the settings, one a line as a write takes them; write a setting or a session builtin
(Newcol, Dump, Theme x; Exit QUITS the editor, Kill [word...] stops the
- commands pardes started (command panes, lines it typed into shells); Exit and Restore refuse once per
+ commands pardes started (command panes, lines it typed into shells), a word
+ matching a command line's first word; Exit and Restore refuse once per
unsaved pane, `<name>: Modified (Exit again to discard)`, and the same
word again DISCARDS that text -- not a retry, unlike lock's `file in use`;
Kill signals only the foreground job, so of `sleep 30; echo done` the
@@ -124,8 +126,8 @@ the editor, not as a write error, so inspect the resulting pane, index, message
or screen; only a malformed line fails the write itself. A word no builtin
knows (a typo included) is a command line: written at a terminal at its
prompt it is typed into that shell; from anywhere else it runs as a command
-pane, a terminal whose child is `$SHELL -c` the line in the pane's
-directory, which ends showing `exit N` (a typo: `exit 127`) and logs `run
+pane, a terminal whose child is the root ctl's `Shell` (fish unless set)
+running `-c` the line in the pane's directory, which ends showing `exit N` (a typo: `exit 127`) and logs `run
<serial> <line>` and `exit <serial> <N|?>` -- `exec` reads back its serial,
so follow `log` for the exit. The directory's next command reuses a finished
command pane, below what it showed. A terminal bound as a REPL (`Repl
@@ -134,7 +136,10 @@ but never a 9P write: a script sends code by writing the REPL pane's
`pty/data`, and runs a command from such a file with `Exec <text>` or the
tag. A bound terminal's `ctl` line ends with its id (`python-a`); an event
record written back from such a file's body goes to its REPL, as the click
-would. Every refused 9P write adds an `err <serial|->
+would. `Repl -` unbinds; a bare `Repl` says the binding. Multi-line code
+written to `pty/data` should be a bracketed paste, `\e[200~<code>\e[201~`
+then `\r`: sent line by line, a blank line ends a Python block, and Python
+3.14's REPL auto-indents each line it is typed. Every refused 9P write adds an `err <serial|->
<file>: <why>` record to `$m/log`; through a mount the write itself only says
`Invalid argument`.
@@ -247,8 +252,12 @@ A Restore puts a new editor under every client: the Restore write is
answered, then every connection is hung up (their fids name the old
editor's panes); dial again, and the new log names the restored panes then
`restore <path>` -- the authority, since a slow client may see the cut
-before the answer. `Dump` writes `pardes-<date>-<time>.zon` under `DumpDir`
-(`~/.local/share/pardes` by default) and logs `dump <path>`.
+before the answer. Through a 9ns mount the Restore write itself usually
+fails with ECONNRESET although the Restore went ahead: 9ns fails a request
+whose reply is already in when the hang-up breaks its next send. Trust the
+log. `Dump` writes `pardes-<date>-<time>.zon`, the time in UTC, under
+`DumpDir` (`$XDG_DATA_HOME/pardes`, else `~/.local/share/pardes`) and logs
+`dump <path>`.
Read the event implementation before building an interceptor. Close handles in
`finally`, and disconnect after a socket timeout. The service shares four
connection slots and 32 screen/terminal-history snapshot handles.