summaryrefslogtreecommitdiff
path: root/.agents
diff options
context:
space:
mode:
Diffstat (limited to '.agents')
-rw-r--r--.agents/skills/pardes-9p/SKILL.md15
1 files changed, 11 insertions, 4 deletions
diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md
index 39a6b1ce..844e028f 100644
--- a/.agents/skills/pardes-9p/SKILL.md
+++ b/.agents/skills/pardes-9p/SKILL.md
@@ -24,6 +24,7 @@ directory either way, and `$PARDES_PANE` is the calling pane's serial:
```sh
[ -n "$NINE_MOUNT" ] || echo 'no 9P mount: use the Python client below'
s=${PARDES_9P##*/pardes-9p-}; m=$NINE_MOUNT/pardes/${s%.sock}
+# under `9ns --unix SOCKET -- cmd` the session is the mount itself: m=$NINE_MOUNT
cat "$m/index"
cat "$m/pane/$PARDES_PANE/body"
```
@@ -51,7 +52,7 @@ match this document, that session predates the change; restart it.
```
$m/README the served guide, worth reading first
-$m/index one line per pane: serial, kind (text|term|pdf|image), dirty flag, name
+$m/index one line per pane: serial, kind (text|term|pdf|image), dirty flag, name, column serial
$m/status pid, version, panes
$m/look write a line = a right click on it at the active pane (file:/re/, file:#n, :/re/
select by address, as acme's look, from the file's dot: file:0/re/ for the
@@ -81,6 +82,10 @@ $m/ctl the settings, one a line as a write takes them; write a setting or
a pane's builtins (Del, Save f, Collapse, which folds that pane, and the
column word Delcol, which closes that pane's column) go to $m/pane/<n>/ctl
$m/commands every builtin: `Word`, `Word arg`, then `root` or `pane` (which ctl takes it)
+$m/layout one line per column: serial index x width current|notcurrent empty|full pane-serials...; active <serial>
+$m/tag the workspace tag (> replaces, >> appends, one line); $m/col/<serial>/tag a column's (serials stay, as panes' do)
+$m/col/<serial>/ctl Delcol, Joincol, New, Tty on that column; col/<serial>/exec a word as a click in its tag;
+ rmdir col/<serial> closes an empty column
$m/pane/new open it to make a pane (a scratch named <dir>/+New), read names it; it goes in
the ACTIVE column (the one last typed or clicked in, or Newcol's), filling it if
empty, else taking the bottom half of its last pane (ctl `Placement pardes`: the old rules);
@@ -149,9 +154,11 @@ would. `Repl -` unbinds; a bare `Repl` says the binding. With several
REPLs bound for a language an exec asks which, logged `ask <serial> repl a b`
(Del's side from the keyboard is `ask <serial> del k j`): answer with
`echo 'answer a' > $m/pane/<serial>/ctl`, or `answer -` to send nothing. Multi-line code
-written to `pty/data` should be a bracketed paste, `\e[200~<code>\e[201~`
-then `\r`, and a second `\r` when the code's last line is indented (a `def`
-or `for` body): one Enter leaves such a block open. Sent line by line, a blank line ends a Python block, and Python
+written to `pty/data` should be a bracketed paste, `\e[200~<code>\e[201~`,
+then, in a separate write once the REPL has echoed the paste (Python 3.13+
+takes a `\r` read with the paste as part of it, even for one line), `\r`,
+and a second `\r` when the code's last line is indented (a `def` or `for`
+body): one Enter leaves such a block open. 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`.