@plurnk/plurnk-grammar 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,7 +19,7 @@ const result = PlurnkParser.parse(input);
19
19
  // result.unparsedTail?: { from, reason }
20
20
  ```
21
21
 
22
- Discriminate on `item.kind`. For `statement` items, narrow on `statement.op` (one of `FIND READ EDIT COPY MOVE SHOW HIDE SEND EXEC`) to access per-OP typed fields. Full API: [SPEC.md §12](SPEC.md#12-public-api).
22
+ Discriminate on `item.kind`. For `statement` items, narrow on `statement.op` (one of `FIND READ EDIT COPY MOVE OPEN FOLD SEND EXEC`) to access per-OP typed fields. Full API: [SPEC.md §12](SPEC.md#12-public-api).
23
23
 
24
24
  ## cli
25
25
 
@@ -38,7 +38,7 @@ Exit `0` on clean parse, `1` on any error or unparsed tail.
38
38
 
39
39
  | slot | shape |
40
40
  |----------|----------------------------------------------------|
41
- | `OP` | `FIND READ EDIT COPY MOVE SHOW HIDE SEND EXEC` |
41
+ | `OP` | `FIND READ EDIT COPY MOVE OPEN FOLD SEND EXEC` |
42
42
  | `suffix` | `[A-Za-z0-9_]*` glued to `OP`; used for nesting |
43
43
  | `[…]` | optional CSV; per-OP semantics |
44
44
  | `(…)` | optional URI |
@@ -52,8 +52,8 @@ Exit `0` on clean parse, `1` on any error or unparsed tail.
52
52
  | EDIT | tags | content (empty=clear) | entry lines |
53
53
  | COPY | tags-to-apply | destination URI | entry lines |
54
54
  | MOVE | tags-to-apply | destination URI | entry lines |
55
- | SHOW | tag filter | matcher | result-set range |
56
- | HIDE | tag filter | matcher | result-set range |
55
+ | OPEN | tag filter | matcher | result-set range |
56
+ | FOLD | tag filter | matcher | result-set range |
57
57
  | SEND | HTTP status int | payload (JSON conv.) | n/a |
58
58
  | EXEC | executor | command or code | n/a |
59
59
 
@@ -109,10 +109,10 @@ Nesting: outer body may contain inner `<<OP:…:OP` statements; outer must use a
109
109
  <<EDIT(known://countries/france/capital)::EDIT
110
110
 
111
111
  13. Collapse every distilled fetch-log row
112
- <<HIDE(log://1/*/*/get)::HIDE
112
+ <<FOLD(log://1/*/*/get)::FOLD
113
113
 
114
114
  14. Restore collapsed log rows by tag filter
115
- <<SHOW[france](log://**)::SHOW
115
+ <<OPEN[france](log://**)::OPEN
116
116
 
117
117
  15. Rename a draft entry
118
118
  <<MOVE(known://draft):known://final/answer:MOVE
@@ -148,16 +148,16 @@ Nesting: outer body may contain inner `<<OP:…:OP` statements; outer must use a
148
148
  :EXEC
149
149
 
150
150
  25. Restore log rows tagged france whose content matches (combined filters)
151
- <<SHOW[france](log://**):Paris*:SHOW
151
+ <<OPEN[france](log://**):Paris*:OPEN
152
152
 
153
153
  26. Collapse the second hundred of stale fetch-log rows (pagination)
154
- <<HIDE(log://**/get)<101-200>::HIDE
154
+ <<FOLD(log://**/get)<101-200>::FOLD
155
155
 
156
156
  27. Deliver a structured answer (JSON body)
157
157
  <<SEND[200]:{"answer":"Paris","confidence":0.95}:SEND
158
158
 
159
159
  28. Report a client error (JSON body the model can traverse with jsonpath)
160
- <<SEND[400]:{"reason":"unrecognized OP","got":"FOOBAR","expected":["FIND","READ","EDIT","COPY","MOVE","SHOW","HIDE","SEND","EXEC"]}:SEND
160
+ <<SEND[400]:{"reason":"unrecognized OP","got":"FOOBAR","expected":["FIND","READ","EDIT","COPY","MOVE","OPEN","FOLD","SEND","EXEC"]}:SEND
161
161
 
162
162
  29. Report a server error with explicit recipient
163
163
  <<SEND[503](log://errors):{"reason":"git unavailable","command":"git status"}:SEND
package/dist/plurnk.gbnf CHANGED
@@ -344,144 +344,144 @@ move-9-b3 ::= ("V" move-9-b4 | ":" move-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F
344
344
  move-9-b4 ::= ("E" move-9-b5 | ":" move-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] move-9-b0)?
345
345
  move-9-b5 ::= (":" move-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] move-9-b0)?
346
346
  move-9 ::= "<<MOVE9" tags? target line? ":" move-9-b0 ":MOVE9"
347
- show-b0 ::= (":" show-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-b0)?
348
- show-b1 ::= ("S" show-b2 | ":" show-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-b0)?
349
- show-b2 ::= ("H" show-b3 | ":" show-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-b0)?
350
- show-b3 ::= ("O" show-b4 | ":" show-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-b0)?
351
- show-b4 ::= (":" show-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-b0)?
352
- show ::= "<<SHOW" tags? target line? ":" show-b0 ":SHOW"
353
- show-1-b0 ::= (":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-1-b0)?
354
- show-1-b1 ::= ("S" show-1-b2 | ":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-1-b0)?
355
- show-1-b2 ::= ("H" show-1-b3 | ":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-1-b0)?
356
- show-1-b3 ::= ("O" show-1-b4 | ":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-1-b0)?
357
- show-1-b4 ::= ("W" show-1-b5 | ":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-1-b0)?
358
- show-1-b5 ::= (":" show-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:1] show-1-b0)?
359
- show-1 ::= "<<SHOW1" tags? target line? ":" show-1-b0 ":SHOW1"
360
- show-2-b0 ::= (":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-2-b0)?
361
- show-2-b1 ::= ("S" show-2-b2 | ":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-2-b0)?
362
- show-2-b2 ::= ("H" show-2-b3 | ":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-2-b0)?
363
- show-2-b3 ::= ("O" show-2-b4 | ":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-2-b0)?
364
- show-2-b4 ::= ("W" show-2-b5 | ":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-2-b0)?
365
- show-2-b5 ::= (":" show-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:2] show-2-b0)?
366
- show-2 ::= "<<SHOW2" tags? target line? ":" show-2-b0 ":SHOW2"
367
- show-3-b0 ::= (":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-3-b0)?
368
- show-3-b1 ::= ("S" show-3-b2 | ":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-3-b0)?
369
- show-3-b2 ::= ("H" show-3-b3 | ":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-3-b0)?
370
- show-3-b3 ::= ("O" show-3-b4 | ":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-3-b0)?
371
- show-3-b4 ::= ("W" show-3-b5 | ":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-3-b0)?
372
- show-3-b5 ::= (":" show-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:3] show-3-b0)?
373
- show-3 ::= "<<SHOW3" tags? target line? ":" show-3-b0 ":SHOW3"
374
- show-4-b0 ::= (":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-4-b0)?
375
- show-4-b1 ::= ("S" show-4-b2 | ":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-4-b0)?
376
- show-4-b2 ::= ("H" show-4-b3 | ":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-4-b0)?
377
- show-4-b3 ::= ("O" show-4-b4 | ":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-4-b0)?
378
- show-4-b4 ::= ("W" show-4-b5 | ":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-4-b0)?
379
- show-4-b5 ::= (":" show-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:4] show-4-b0)?
380
- show-4 ::= "<<SHOW4" tags? target line? ":" show-4-b0 ":SHOW4"
381
- show-5-b0 ::= (":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-5-b0)?
382
- show-5-b1 ::= ("S" show-5-b2 | ":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-5-b0)?
383
- show-5-b2 ::= ("H" show-5-b3 | ":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-5-b0)?
384
- show-5-b3 ::= ("O" show-5-b4 | ":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-5-b0)?
385
- show-5-b4 ::= ("W" show-5-b5 | ":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-5-b0)?
386
- show-5-b5 ::= (":" show-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:5] show-5-b0)?
387
- show-5 ::= "<<SHOW5" tags? target line? ":" show-5-b0 ":SHOW5"
388
- show-6-b0 ::= (":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-6-b0)?
389
- show-6-b1 ::= ("S" show-6-b2 | ":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-6-b0)?
390
- show-6-b2 ::= ("H" show-6-b3 | ":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-6-b0)?
391
- show-6-b3 ::= ("O" show-6-b4 | ":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-6-b0)?
392
- show-6-b4 ::= ("W" show-6-b5 | ":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-6-b0)?
393
- show-6-b5 ::= (":" show-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:6] show-6-b0)?
394
- show-6 ::= "<<SHOW6" tags? target line? ":" show-6-b0 ":SHOW6"
395
- show-7-b0 ::= (":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-7-b0)?
396
- show-7-b1 ::= ("S" show-7-b2 | ":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-7-b0)?
397
- show-7-b2 ::= ("H" show-7-b3 | ":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-7-b0)?
398
- show-7-b3 ::= ("O" show-7-b4 | ":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-7-b0)?
399
- show-7-b4 ::= ("W" show-7-b5 | ":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-7-b0)?
400
- show-7-b5 ::= (":" show-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:7] show-7-b0)?
401
- show-7 ::= "<<SHOW7" tags? target line? ":" show-7-b0 ":SHOW7"
402
- show-8-b0 ::= (":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-8-b0)?
403
- show-8-b1 ::= ("S" show-8-b2 | ":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-8-b0)?
404
- show-8-b2 ::= ("H" show-8-b3 | ":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-8-b0)?
405
- show-8-b3 ::= ("O" show-8-b4 | ":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-8-b0)?
406
- show-8-b4 ::= ("W" show-8-b5 | ":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-8-b0)?
407
- show-8-b5 ::= (":" show-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:8] show-8-b0)?
408
- show-8 ::= "<<SHOW8" tags? target line? ":" show-8-b0 ":SHOW8"
409
- show-9-b0 ::= (":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] show-9-b0)?
410
- show-9-b1 ::= ("S" show-9-b2 | ":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] show-9-b0)?
411
- show-9-b2 ::= ("H" show-9-b3 | ":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] show-9-b0)?
412
- show-9-b3 ::= ("O" show-9-b4 | ":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] show-9-b0)?
413
- show-9-b4 ::= ("W" show-9-b5 | ":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:W] show-9-b0)?
414
- show-9-b5 ::= (":" show-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] show-9-b0)?
415
- show-9 ::= "<<SHOW9" tags? target line? ":" show-9-b0 ":SHOW9"
416
- hide-b0 ::= (":" hide-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-b0)?
417
- hide-b1 ::= ("H" hide-b2 | ":" hide-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-b0)?
418
- hide-b2 ::= ("I" hide-b3 | ":" hide-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-b0)?
419
- hide-b3 ::= ("D" hide-b4 | ":" hide-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-b0)?
420
- hide-b4 ::= (":" hide-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-b0)?
421
- hide ::= "<<HIDE" tags? target line? ":" hide-b0 ":HIDE"
422
- hide-1-b0 ::= (":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-1-b0)?
423
- hide-1-b1 ::= ("H" hide-1-b2 | ":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-1-b0)?
424
- hide-1-b2 ::= ("I" hide-1-b3 | ":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-1-b0)?
425
- hide-1-b3 ::= ("D" hide-1-b4 | ":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-1-b0)?
426
- hide-1-b4 ::= ("E" hide-1-b5 | ":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-1-b0)?
427
- hide-1-b5 ::= (":" hide-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:1] hide-1-b0)?
428
- hide-1 ::= "<<HIDE1" tags? target line? ":" hide-1-b0 ":HIDE1"
429
- hide-2-b0 ::= (":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-2-b0)?
430
- hide-2-b1 ::= ("H" hide-2-b2 | ":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-2-b0)?
431
- hide-2-b2 ::= ("I" hide-2-b3 | ":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-2-b0)?
432
- hide-2-b3 ::= ("D" hide-2-b4 | ":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-2-b0)?
433
- hide-2-b4 ::= ("E" hide-2-b5 | ":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-2-b0)?
434
- hide-2-b5 ::= (":" hide-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:2] hide-2-b0)?
435
- hide-2 ::= "<<HIDE2" tags? target line? ":" hide-2-b0 ":HIDE2"
436
- hide-3-b0 ::= (":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-3-b0)?
437
- hide-3-b1 ::= ("H" hide-3-b2 | ":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-3-b0)?
438
- hide-3-b2 ::= ("I" hide-3-b3 | ":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-3-b0)?
439
- hide-3-b3 ::= ("D" hide-3-b4 | ":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-3-b0)?
440
- hide-3-b4 ::= ("E" hide-3-b5 | ":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-3-b0)?
441
- hide-3-b5 ::= (":" hide-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:3] hide-3-b0)?
442
- hide-3 ::= "<<HIDE3" tags? target line? ":" hide-3-b0 ":HIDE3"
443
- hide-4-b0 ::= (":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-4-b0)?
444
- hide-4-b1 ::= ("H" hide-4-b2 | ":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-4-b0)?
445
- hide-4-b2 ::= ("I" hide-4-b3 | ":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-4-b0)?
446
- hide-4-b3 ::= ("D" hide-4-b4 | ":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-4-b0)?
447
- hide-4-b4 ::= ("E" hide-4-b5 | ":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-4-b0)?
448
- hide-4-b5 ::= (":" hide-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:4] hide-4-b0)?
449
- hide-4 ::= "<<HIDE4" tags? target line? ":" hide-4-b0 ":HIDE4"
450
- hide-5-b0 ::= (":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-5-b0)?
451
- hide-5-b1 ::= ("H" hide-5-b2 | ":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-5-b0)?
452
- hide-5-b2 ::= ("I" hide-5-b3 | ":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-5-b0)?
453
- hide-5-b3 ::= ("D" hide-5-b4 | ":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-5-b0)?
454
- hide-5-b4 ::= ("E" hide-5-b5 | ":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-5-b0)?
455
- hide-5-b5 ::= (":" hide-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:5] hide-5-b0)?
456
- hide-5 ::= "<<HIDE5" tags? target line? ":" hide-5-b0 ":HIDE5"
457
- hide-6-b0 ::= (":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-6-b0)?
458
- hide-6-b1 ::= ("H" hide-6-b2 | ":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-6-b0)?
459
- hide-6-b2 ::= ("I" hide-6-b3 | ":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-6-b0)?
460
- hide-6-b3 ::= ("D" hide-6-b4 | ":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-6-b0)?
461
- hide-6-b4 ::= ("E" hide-6-b5 | ":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-6-b0)?
462
- hide-6-b5 ::= (":" hide-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:6] hide-6-b0)?
463
- hide-6 ::= "<<HIDE6" tags? target line? ":" hide-6-b0 ":HIDE6"
464
- hide-7-b0 ::= (":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-7-b0)?
465
- hide-7-b1 ::= ("H" hide-7-b2 | ":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-7-b0)?
466
- hide-7-b2 ::= ("I" hide-7-b3 | ":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-7-b0)?
467
- hide-7-b3 ::= ("D" hide-7-b4 | ":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-7-b0)?
468
- hide-7-b4 ::= ("E" hide-7-b5 | ":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-7-b0)?
469
- hide-7-b5 ::= (":" hide-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:7] hide-7-b0)?
470
- hide-7 ::= "<<HIDE7" tags? target line? ":" hide-7-b0 ":HIDE7"
471
- hide-8-b0 ::= (":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-8-b0)?
472
- hide-8-b1 ::= ("H" hide-8-b2 | ":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-8-b0)?
473
- hide-8-b2 ::= ("I" hide-8-b3 | ":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-8-b0)?
474
- hide-8-b3 ::= ("D" hide-8-b4 | ":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-8-b0)?
475
- hide-8-b4 ::= ("E" hide-8-b5 | ":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-8-b0)?
476
- hide-8-b5 ::= (":" hide-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:8] hide-8-b0)?
477
- hide-8 ::= "<<HIDE8" tags? target line? ":" hide-8-b0 ":HIDE8"
478
- hide-9-b0 ::= (":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] hide-9-b0)?
479
- hide-9-b1 ::= ("H" hide-9-b2 | ":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:H] hide-9-b0)?
480
- hide-9-b2 ::= ("I" hide-9-b3 | ":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:I] hide-9-b0)?
481
- hide-9-b3 ::= ("D" hide-9-b4 | ":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] hide-9-b0)?
482
- hide-9-b4 ::= ("E" hide-9-b5 | ":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] hide-9-b0)?
483
- hide-9-b5 ::= (":" hide-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] hide-9-b0)?
484
- hide-9 ::= "<<HIDE9" tags? target line? ":" hide-9-b0 ":HIDE9"
347
+ open-b0 ::= (":" open-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-b0)?
348
+ open-b1 ::= ("O" open-b2 | ":" open-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-b0)?
349
+ open-b2 ::= ("P" open-b3 | ":" open-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-b0)?
350
+ open-b3 ::= ("E" open-b4 | ":" open-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-b0)?
351
+ open-b4 ::= (":" open-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-b0)?
352
+ open ::= "<<OPEN" tags? target line? ":" open-b0 ":OPEN"
353
+ open-1-b0 ::= (":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-1-b0)?
354
+ open-1-b1 ::= ("O" open-1-b2 | ":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-1-b0)?
355
+ open-1-b2 ::= ("P" open-1-b3 | ":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-1-b0)?
356
+ open-1-b3 ::= ("E" open-1-b4 | ":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-1-b0)?
357
+ open-1-b4 ::= ("N" open-1-b5 | ":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-1-b0)?
358
+ open-1-b5 ::= (":" open-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:1] open-1-b0)?
359
+ open-1 ::= "<<OPEN1" tags? target line? ":" open-1-b0 ":OPEN1"
360
+ open-2-b0 ::= (":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-2-b0)?
361
+ open-2-b1 ::= ("O" open-2-b2 | ":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-2-b0)?
362
+ open-2-b2 ::= ("P" open-2-b3 | ":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-2-b0)?
363
+ open-2-b3 ::= ("E" open-2-b4 | ":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-2-b0)?
364
+ open-2-b4 ::= ("N" open-2-b5 | ":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-2-b0)?
365
+ open-2-b5 ::= (":" open-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:2] open-2-b0)?
366
+ open-2 ::= "<<OPEN2" tags? target line? ":" open-2-b0 ":OPEN2"
367
+ open-3-b0 ::= (":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-3-b0)?
368
+ open-3-b1 ::= ("O" open-3-b2 | ":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-3-b0)?
369
+ open-3-b2 ::= ("P" open-3-b3 | ":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-3-b0)?
370
+ open-3-b3 ::= ("E" open-3-b4 | ":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-3-b0)?
371
+ open-3-b4 ::= ("N" open-3-b5 | ":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-3-b0)?
372
+ open-3-b5 ::= (":" open-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:3] open-3-b0)?
373
+ open-3 ::= "<<OPEN3" tags? target line? ":" open-3-b0 ":OPEN3"
374
+ open-4-b0 ::= (":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-4-b0)?
375
+ open-4-b1 ::= ("O" open-4-b2 | ":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-4-b0)?
376
+ open-4-b2 ::= ("P" open-4-b3 | ":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-4-b0)?
377
+ open-4-b3 ::= ("E" open-4-b4 | ":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-4-b0)?
378
+ open-4-b4 ::= ("N" open-4-b5 | ":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-4-b0)?
379
+ open-4-b5 ::= (":" open-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:4] open-4-b0)?
380
+ open-4 ::= "<<OPEN4" tags? target line? ":" open-4-b0 ":OPEN4"
381
+ open-5-b0 ::= (":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-5-b0)?
382
+ open-5-b1 ::= ("O" open-5-b2 | ":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-5-b0)?
383
+ open-5-b2 ::= ("P" open-5-b3 | ":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-5-b0)?
384
+ open-5-b3 ::= ("E" open-5-b4 | ":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-5-b0)?
385
+ open-5-b4 ::= ("N" open-5-b5 | ":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-5-b0)?
386
+ open-5-b5 ::= (":" open-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:5] open-5-b0)?
387
+ open-5 ::= "<<OPEN5" tags? target line? ":" open-5-b0 ":OPEN5"
388
+ open-6-b0 ::= (":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-6-b0)?
389
+ open-6-b1 ::= ("O" open-6-b2 | ":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-6-b0)?
390
+ open-6-b2 ::= ("P" open-6-b3 | ":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-6-b0)?
391
+ open-6-b3 ::= ("E" open-6-b4 | ":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-6-b0)?
392
+ open-6-b4 ::= ("N" open-6-b5 | ":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-6-b0)?
393
+ open-6-b5 ::= (":" open-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:6] open-6-b0)?
394
+ open-6 ::= "<<OPEN6" tags? target line? ":" open-6-b0 ":OPEN6"
395
+ open-7-b0 ::= (":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-7-b0)?
396
+ open-7-b1 ::= ("O" open-7-b2 | ":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-7-b0)?
397
+ open-7-b2 ::= ("P" open-7-b3 | ":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-7-b0)?
398
+ open-7-b3 ::= ("E" open-7-b4 | ":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-7-b0)?
399
+ open-7-b4 ::= ("N" open-7-b5 | ":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-7-b0)?
400
+ open-7-b5 ::= (":" open-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:7] open-7-b0)?
401
+ open-7 ::= "<<OPEN7" tags? target line? ":" open-7-b0 ":OPEN7"
402
+ open-8-b0 ::= (":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-8-b0)?
403
+ open-8-b1 ::= ("O" open-8-b2 | ":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-8-b0)?
404
+ open-8-b2 ::= ("P" open-8-b3 | ":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-8-b0)?
405
+ open-8-b3 ::= ("E" open-8-b4 | ":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-8-b0)?
406
+ open-8-b4 ::= ("N" open-8-b5 | ":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-8-b0)?
407
+ open-8-b5 ::= (":" open-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:8] open-8-b0)?
408
+ open-8 ::= "<<OPEN8" tags? target line? ":" open-8-b0 ":OPEN8"
409
+ open-9-b0 ::= (":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] open-9-b0)?
410
+ open-9-b1 ::= ("O" open-9-b2 | ":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] open-9-b0)?
411
+ open-9-b2 ::= ("P" open-9-b3 | ":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:P] open-9-b0)?
412
+ open-9-b3 ::= ("E" open-9-b4 | ":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] open-9-b0)?
413
+ open-9-b4 ::= ("N" open-9-b5 | ":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] open-9-b0)?
414
+ open-9-b5 ::= (":" open-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] open-9-b0)?
415
+ open-9 ::= "<<OPEN9" tags? target line? ":" open-9-b0 ":OPEN9"
416
+ fold-b0 ::= (":" fold-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-b0)?
417
+ fold-b1 ::= ("F" fold-b2 | ":" fold-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-b0)?
418
+ fold-b2 ::= ("O" fold-b3 | ":" fold-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-b0)?
419
+ fold-b3 ::= ("L" fold-b4 | ":" fold-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-b0)?
420
+ fold-b4 ::= (":" fold-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-b0)?
421
+ fold ::= "<<FOLD" tags? target line? ":" fold-b0 ":FOLD"
422
+ fold-1-b0 ::= (":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-1-b0)?
423
+ fold-1-b1 ::= ("F" fold-1-b2 | ":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-1-b0)?
424
+ fold-1-b2 ::= ("O" fold-1-b3 | ":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-1-b0)?
425
+ fold-1-b3 ::= ("L" fold-1-b4 | ":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-1-b0)?
426
+ fold-1-b4 ::= ("D" fold-1-b5 | ":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-1-b0)?
427
+ fold-1-b5 ::= (":" fold-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:1] fold-1-b0)?
428
+ fold-1 ::= "<<FOLD1" tags? target line? ":" fold-1-b0 ":FOLD1"
429
+ fold-2-b0 ::= (":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-2-b0)?
430
+ fold-2-b1 ::= ("F" fold-2-b2 | ":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-2-b0)?
431
+ fold-2-b2 ::= ("O" fold-2-b3 | ":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-2-b0)?
432
+ fold-2-b3 ::= ("L" fold-2-b4 | ":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-2-b0)?
433
+ fold-2-b4 ::= ("D" fold-2-b5 | ":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-2-b0)?
434
+ fold-2-b5 ::= (":" fold-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:2] fold-2-b0)?
435
+ fold-2 ::= "<<FOLD2" tags? target line? ":" fold-2-b0 ":FOLD2"
436
+ fold-3-b0 ::= (":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-3-b0)?
437
+ fold-3-b1 ::= ("F" fold-3-b2 | ":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-3-b0)?
438
+ fold-3-b2 ::= ("O" fold-3-b3 | ":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-3-b0)?
439
+ fold-3-b3 ::= ("L" fold-3-b4 | ":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-3-b0)?
440
+ fold-3-b4 ::= ("D" fold-3-b5 | ":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-3-b0)?
441
+ fold-3-b5 ::= (":" fold-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:3] fold-3-b0)?
442
+ fold-3 ::= "<<FOLD3" tags? target line? ":" fold-3-b0 ":FOLD3"
443
+ fold-4-b0 ::= (":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-4-b0)?
444
+ fold-4-b1 ::= ("F" fold-4-b2 | ":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-4-b0)?
445
+ fold-4-b2 ::= ("O" fold-4-b3 | ":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-4-b0)?
446
+ fold-4-b3 ::= ("L" fold-4-b4 | ":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-4-b0)?
447
+ fold-4-b4 ::= ("D" fold-4-b5 | ":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-4-b0)?
448
+ fold-4-b5 ::= (":" fold-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:4] fold-4-b0)?
449
+ fold-4 ::= "<<FOLD4" tags? target line? ":" fold-4-b0 ":FOLD4"
450
+ fold-5-b0 ::= (":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-5-b0)?
451
+ fold-5-b1 ::= ("F" fold-5-b2 | ":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-5-b0)?
452
+ fold-5-b2 ::= ("O" fold-5-b3 | ":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-5-b0)?
453
+ fold-5-b3 ::= ("L" fold-5-b4 | ":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-5-b0)?
454
+ fold-5-b4 ::= ("D" fold-5-b5 | ":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-5-b0)?
455
+ fold-5-b5 ::= (":" fold-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:5] fold-5-b0)?
456
+ fold-5 ::= "<<FOLD5" tags? target line? ":" fold-5-b0 ":FOLD5"
457
+ fold-6-b0 ::= (":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-6-b0)?
458
+ fold-6-b1 ::= ("F" fold-6-b2 | ":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-6-b0)?
459
+ fold-6-b2 ::= ("O" fold-6-b3 | ":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-6-b0)?
460
+ fold-6-b3 ::= ("L" fold-6-b4 | ":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-6-b0)?
461
+ fold-6-b4 ::= ("D" fold-6-b5 | ":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-6-b0)?
462
+ fold-6-b5 ::= (":" fold-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:6] fold-6-b0)?
463
+ fold-6 ::= "<<FOLD6" tags? target line? ":" fold-6-b0 ":FOLD6"
464
+ fold-7-b0 ::= (":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-7-b0)?
465
+ fold-7-b1 ::= ("F" fold-7-b2 | ":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-7-b0)?
466
+ fold-7-b2 ::= ("O" fold-7-b3 | ":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-7-b0)?
467
+ fold-7-b3 ::= ("L" fold-7-b4 | ":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-7-b0)?
468
+ fold-7-b4 ::= ("D" fold-7-b5 | ":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-7-b0)?
469
+ fold-7-b5 ::= (":" fold-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:7] fold-7-b0)?
470
+ fold-7 ::= "<<FOLD7" tags? target line? ":" fold-7-b0 ":FOLD7"
471
+ fold-8-b0 ::= (":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-8-b0)?
472
+ fold-8-b1 ::= ("F" fold-8-b2 | ":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-8-b0)?
473
+ fold-8-b2 ::= ("O" fold-8-b3 | ":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-8-b0)?
474
+ fold-8-b3 ::= ("L" fold-8-b4 | ":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-8-b0)?
475
+ fold-8-b4 ::= ("D" fold-8-b5 | ":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-8-b0)?
476
+ fold-8-b5 ::= (":" fold-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:8] fold-8-b0)?
477
+ fold-8 ::= "<<FOLD8" tags? target line? ":" fold-8-b0 ":FOLD8"
478
+ fold-9-b0 ::= (":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] fold-9-b0)?
479
+ fold-9-b1 ::= ("F" fold-9-b2 | ":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:F] fold-9-b0)?
480
+ fold-9-b2 ::= ("O" fold-9-b3 | ":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:O] fold-9-b0)?
481
+ fold-9-b3 ::= ("L" fold-9-b4 | ":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:L] fold-9-b0)?
482
+ fold-9-b4 ::= ("D" fold-9-b5 | ":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] fold-9-b0)?
483
+ fold-9-b5 ::= (":" fold-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] fold-9-b0)?
484
+ fold-9 ::= "<<FOLD9" tags? target line? ":" fold-9-b0 ":FOLD9"
485
485
  send-b0 ::= (":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-b0)?
486
486
  send-b1 ::= ("S" send-b2 | ":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-b0)?
487
487
  send-b2 ::= ("E" send-b3 | ":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-b0)?
@@ -622,7 +622,7 @@ exec-9-b5 ::= (":" exec-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] exec-9-b0)?
622
622
  exec-9 ::= "<<EXEC9" exec-sig? target? ":" exec-9-b0 ":EXEC9"
623
623
  root ::= "\n"* statement root-rest* "\n"*
624
624
  root-rest ::= "\n"+ statement
625
- statement ::= find | find-1 | find-2 | find-3 | find-4 | find-5 | find-6 | find-7 | find-8 | find-9 | read | read-1 | read-2 | read-3 | read-4 | read-5 | read-6 | read-7 | read-8 | read-9 | edit | edit-1 | edit-2 | edit-3 | edit-4 | edit-5 | edit-6 | edit-7 | edit-8 | edit-9 | copy | copy-1 | copy-2 | copy-3 | copy-4 | copy-5 | copy-6 | copy-7 | copy-8 | copy-9 | move | move-1 | move-2 | move-3 | move-4 | move-5 | move-6 | move-7 | move-8 | move-9 | show | show-1 | show-2 | show-3 | show-4 | show-5 | show-6 | show-7 | show-8 | show-9 | hide | hide-1 | hide-2 | hide-3 | hide-4 | hide-5 | hide-6 | hide-7 | hide-8 | hide-9 | send | send-1 | send-2 | send-3 | send-4 | send-5 | send-6 | send-7 | send-8 | send-9 | exec | exec-1 | exec-2 | exec-3 | exec-4 | exec-5 | exec-6 | exec-7 | exec-8 | exec-9
625
+ statement ::= find | find-1 | find-2 | find-3 | find-4 | find-5 | find-6 | find-7 | find-8 | find-9 | read | read-1 | read-2 | read-3 | read-4 | read-5 | read-6 | read-7 | read-8 | read-9 | edit | edit-1 | edit-2 | edit-3 | edit-4 | edit-5 | edit-6 | edit-7 | edit-8 | edit-9 | copy | copy-1 | copy-2 | copy-3 | copy-4 | copy-5 | copy-6 | copy-7 | copy-8 | copy-9 | move | move-1 | move-2 | move-3 | move-4 | move-5 | move-6 | move-7 | move-8 | move-9 | open | open-1 | open-2 | open-3 | open-4 | open-5 | open-6 | open-7 | open-8 | open-9 | fold | fold-1 | fold-2 | fold-3 | fold-4 | fold-5 | fold-6 | fold-7 | fold-8 | fold-9 | send | send-1 | send-2 | send-3 | send-4 | send-5 | send-6 | send-7 | send-8 | send-9 | exec | exec-1 | exec-2 | exec-3 | exec-4 | exec-5 | exec-6 | exec-7 | exec-8 | exec-9
626
626
  tags ::= "[" tag tag-rest* "]"
627
627
  tag ::= [A-Za-z0-9_.-]+
628
628
  tag-rest ::= "," tag
@@ -26,7 +26,7 @@
26
26
  "sequence": { "type": "integer", "minimum": 1, "description": "1-based within the turn; resets at each new turn." },
27
27
  "at": { "type": "string", "format": "date-time" },
28
28
  "origin": { "enum": ["model", "client", "system", "plugin"] },
29
- "op": { "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "SHOW", "HIDE", "SEND", "EXEC"] },
29
+ "op": { "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD", "SEND", "EXEC"] },
30
30
  "suffix": { "type": "string" },
31
31
  "signal": {
32
32
  "oneOf": [
@@ -93,7 +93,7 @@
93
93
  }
94
94
  },
95
95
  {
96
- "if": { "properties": { "op": { "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "SHOW", "HIDE"] } } },
96
+ "if": { "properties": { "op": { "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD"] } } },
97
97
  "then": {
98
98
  "properties": {
99
99
  "signal": {
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://schemas.plurnk.dev/v0/MatcherBody.json",
4
4
  "title": "MatcherBody",
5
- "description": "Parsed body of a FIND/READ/SHOW/HIDE statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.",
5
+ "description": "Parsed body of a FIND/READ/OPEN/FOLD statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.",
6
6
  "oneOf": [
7
7
  { "$ref": "#/$defs/XPathBody" },
8
8
  { "$ref": "#/$defs/RegexBody" },
@@ -2,12 +2,12 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://schemas.plurnk.dev/v0/PlurnkStatement.json",
4
4
  "title": "PlurnkStatement",
5
- "description": "The parsed AST of one plurnk statement. Discriminated on `op`. SEND and EXEC have no `<L>` slot — `lineMarker` is always null for those. `target` is the URI of the operand (parsed into ParsedPath structure); null when the operand slot was omitted. Body shape varies per op: matcher dialect for FIND/READ/SHOW/HIDE, raw string for EDIT/EXEC, ParsedPath for COPY/MOVE (destination URI), SendBody for SEND.",
5
+ "description": "The parsed AST of one plurnk statement. Discriminated on `op`. SEND and EXEC have no `<L>` slot — `lineMarker` is always null for those. `target` is the URI of the operand (parsed into ParsedPath structure); null when the operand slot was omitted. Body shape varies per op: matcher dialect for FIND/READ/OPEN/FOLD, raw string for EDIT/EXEC, ParsedPath for COPY/MOVE (destination URI), SendBody for SEND.",
6
6
  "oneOf": [
7
7
  { "$ref": "#/$defs/FindStatement" },
8
8
  { "$ref": "#/$defs/ReadStatement" },
9
- { "$ref": "#/$defs/ShowStatement" },
10
- { "$ref": "#/$defs/HideStatement" },
9
+ { "$ref": "#/$defs/OpenStatement" },
10
+ { "$ref": "#/$defs/FoldStatement" },
11
11
  { "$ref": "#/$defs/EditStatement" },
12
12
  { "$ref": "#/$defs/CopyStatement" },
13
13
  { "$ref": "#/$defs/MoveStatement" },
@@ -76,12 +76,12 @@
76
76
  "position": { "$ref": "#/$defs/PositionRef" }
77
77
  }
78
78
  },
79
- "ShowStatement": {
79
+ "OpenStatement": {
80
80
  "type": "object",
81
81
  "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
82
82
  "additionalProperties": false,
83
83
  "properties": {
84
- "op": { "const": "SHOW" },
84
+ "op": { "const": "OPEN" },
85
85
  "suffix": { "type": "string" },
86
86
  "signal": { "$ref": "#/$defs/TagSignal" },
87
87
  "target": { "$ref": "#/$defs/PathOrNull" },
@@ -90,12 +90,12 @@
90
90
  "position": { "$ref": "#/$defs/PositionRef" }
91
91
  }
92
92
  },
93
- "HideStatement": {
93
+ "FoldStatement": {
94
94
  "type": "object",
95
95
  "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
96
96
  "additionalProperties": false,
97
97
  "properties": {
98
- "op": { "const": "HIDE" },
98
+ "op": { "const": "FOLD" },
99
99
  "suffix": { "type": "string" },
100
100
  "signal": { "$ref": "#/$defs/TagSignal" },
101
101
  "target": { "$ref": "#/$defs/PathOrNull" },
@@ -30,12 +30,12 @@ export default class AstBuilder {
30
30
  const move = ctx.moveStatement();
31
31
  if (move)
32
32
  return AstBuilder.#buildMove(move);
33
- const show = ctx.showStatement();
34
- if (show)
35
- return AstBuilder.#buildShow(show);
36
- const hide = ctx.hideStatement();
37
- if (hide)
38
- return AstBuilder.#buildHide(hide);
33
+ const open = ctx.openStatement();
34
+ if (open)
35
+ return AstBuilder.#buildOpen(open);
36
+ const fold = ctx.foldStatement();
37
+ if (fold)
38
+ return AstBuilder.#buildFold(fold);
39
39
  const send = ctx.sendStatement();
40
40
  if (send)
41
41
  return AstBuilder.#buildSend(send);
@@ -68,25 +68,25 @@ export default class AstBuilder {
68
68
  position,
69
69
  };
70
70
  }
71
- static #buildShow(ctx) {
71
+ static #buildOpen(ctx) {
72
72
  const position = AstBuilder.#positionOf(ctx);
73
73
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
74
74
  const raw = AstBuilder.#bodyTextOf(ctx);
75
75
  return {
76
- op: "SHOW",
77
- suffix: AstBuilder.#splitSuffix(ctx.OPEN_SHOW().getText(), "SHOW"),
76
+ op: "OPEN",
77
+ suffix: AstBuilder.#splitSuffix(ctx.OPEN_OPEN().getText(), "OPEN"),
78
78
  ...slots,
79
79
  body: raw !== null ? AstBuilder.#parseMatcherBody(raw, position) : null,
80
80
  position,
81
81
  };
82
82
  }
83
- static #buildHide(ctx) {
83
+ static #buildFold(ctx) {
84
84
  const position = AstBuilder.#positionOf(ctx);
85
85
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
86
86
  const raw = AstBuilder.#bodyTextOf(ctx);
87
87
  return {
88
- op: "HIDE",
89
- suffix: AstBuilder.#splitSuffix(ctx.OPEN_HIDE().getText(), "HIDE"),
88
+ op: "FOLD",
89
+ suffix: AstBuilder.#splitSuffix(ctx.OPEN_FOLD().getText(), "FOLD"),
90
90
  ...slots,
91
91
  body: raw !== null ? AstBuilder.#parseMatcherBody(raw, position) : null,
92
92
  position,
@@ -17,8 +17,8 @@ export default class PlurnkErrorStrategy extends DefaultErrorStrategy {
17
17
  [plurnkParser.OPEN_EDIT]: "open tag `<<OPsuffix`",
18
18
  [plurnkParser.OPEN_COPY]: "open tag `<<OPsuffix`",
19
19
  [plurnkParser.OPEN_MOVE]: "open tag `<<OPsuffix`",
20
- [plurnkParser.OPEN_SHOW]: "open tag `<<OPsuffix`",
21
- [plurnkParser.OPEN_HIDE]: "open tag `<<OPsuffix`",
20
+ [plurnkParser.OPEN_OPEN]: "open tag `<<OPsuffix`",
21
+ [plurnkParser.OPEN_FOLD]: "open tag `<<OPsuffix`",
22
22
  [plurnkParser.OPEN_SEND]: "open tag `<<OPsuffix`",
23
23
  [plurnkParser.OPEN_EXEC]: "open tag `<<OPsuffix`",
24
24
  [plurnkParser.LBRACKET]: "`[` (signal slot opener)",
@@ -19,8 +19,8 @@ export declare class plurnkLexer extends antlr.Lexer {
19
19
  static readonly OPEN_EDIT = 17;
20
20
  static readonly OPEN_COPY = 18;
21
21
  static readonly OPEN_MOVE = 19;
22
- static readonly OPEN_SHOW = 20;
23
- static readonly OPEN_HIDE = 21;
22
+ static readonly OPEN_OPEN = 20;
23
+ static readonly OPEN_FOLD = 21;
24
24
  static readonly OPEN_SEND = 22;
25
25
  static readonly OPEN_EXEC = 23;
26
26
  static readonly SLOTS_WS = 24;
@@ -67,8 +67,8 @@ export declare class plurnkLexer extends antlr.Lexer {
67
67
  private OPEN_EDIT_action;
68
68
  private OPEN_COPY_action;
69
69
  private OPEN_MOVE_action;
70
- private OPEN_SHOW_action;
71
- private OPEN_HIDE_action;
70
+ private OPEN_OPEN_action;
71
+ private OPEN_FOLD_action;
72
72
  private OPEN_SEND_action;
73
73
  private OPEN_EXEC_action;
74
74
  private B_CLOSE_action;
@@ -19,8 +19,8 @@ export class plurnkLexer extends antlr.Lexer {
19
19
  static OPEN_EDIT = 17;
20
20
  static OPEN_COPY = 18;
21
21
  static OPEN_MOVE = 19;
22
- static OPEN_SHOW = 20;
23
- static OPEN_HIDE = 21;
22
+ static OPEN_OPEN = 20;
23
+ static OPEN_FOLD = 21;
24
24
  static OPEN_SEND = 22;
25
25
  static OPEN_EXEC = 23;
26
26
  static SLOTS_WS = 24;
@@ -47,7 +47,7 @@ export class plurnkLexer extends antlr.Lexer {
47
47
  null, "LBRACKET", "RBRACKET", "LPAREN", "RPAREN", "L_MARKER", "COLON",
48
48
  "COMMA", "INT", "IDENT", "TAG", "TARGET_TEXT", "BODY_TEXT", "CLOSE_TAG",
49
49
  "TEXT", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE",
50
- "OPEN_SHOW", "OPEN_HIDE", "OPEN_SEND", "OPEN_EXEC", "SLOTS_WS",
50
+ "OPEN_OPEN", "OPEN_FOLD", "OPEN_SEND", "OPEN_EXEC", "SLOTS_WS",
51
51
  "ST_WS", "SI_WS", "SD_WS", "ST_COMMA", "B_COLON"
52
52
  ];
53
53
  static modeNames = [
@@ -56,7 +56,7 @@ export class plurnkLexer extends antlr.Lexer {
56
56
  ];
57
57
  static ruleNames = [
58
58
  "SUFFIX", "L_PATTERN", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY",
59
- "OPEN_MOVE", "OPEN_SHOW", "OPEN_HIDE", "OPEN_SEND", "OPEN_EXEC",
59
+ "OPEN_MOVE", "OPEN_OPEN", "OPEN_FOLD", "OPEN_SEND", "OPEN_EXEC",
60
60
  "TEXT", "SLOTS_WS", "SLOTS_LB_TAGS", "SLOTS_LB_INT", "SLOTS_LB_IDENT",
61
61
  "SLOTS_LPAREN", "SLOTS_L", "SLOTS_COLON", "ST_WS", "ST_COMMA", "ST_TAG",
62
62
  "ST_END", "SI_WS", "SI_INT", "SI_END", "SD_WS", "SD_IDENT", "SD_END",
@@ -102,7 +102,7 @@ export class plurnkLexer extends antlr.Lexer {
102
102
  }
103
103
  }
104
104
  isOpKeywordAfterLtLt() {
105
- const ops = ["FIND", "READ", "EDIT", "COPY", "MOVE", "SHOW", "HIDE", "SEND", "EXEC"];
105
+ const ops = ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD", "SEND", "EXEC"];
106
106
  for (const op of ops) {
107
107
  let matches = true;
108
108
  for (let i = 0; i < op.length; i++) {
@@ -147,10 +147,10 @@ export class plurnkLexer extends antlr.Lexer {
147
147
  this.OPEN_MOVE_action(localContext, actionIndex);
148
148
  break;
149
149
  case 7:
150
- this.OPEN_SHOW_action(localContext, actionIndex);
150
+ this.OPEN_OPEN_action(localContext, actionIndex);
151
151
  break;
152
152
  case 8:
153
- this.OPEN_HIDE_action(localContext, actionIndex);
153
+ this.OPEN_FOLD_action(localContext, actionIndex);
154
154
  break;
155
155
  case 9:
156
156
  this.OPEN_SEND_action(localContext, actionIndex);
@@ -198,14 +198,14 @@ export class plurnkLexer extends antlr.Lexer {
198
198
  break;
199
199
  }
200
200
  }
201
- OPEN_SHOW_action(localContext, actionIndex) {
201
+ OPEN_OPEN_action(localContext, actionIndex) {
202
202
  switch (actionIndex) {
203
203
  case 5:
204
204
  this.setOpenTag();
205
205
  break;
206
206
  }
207
207
  }
208
- OPEN_HIDE_action(localContext, actionIndex) {
208
+ OPEN_FOLD_action(localContext, actionIndex) {
209
209
  switch (actionIndex) {
210
210
  case 6:
211
211
  this.setOpenTag();
@@ -363,12 +363,12 @@ export class plurnkLexer extends antlr.Lexer {
363
363
  166, 167, 5, 77, 0, 0, 167, 168, 5, 79, 0, 0, 168, 169, 5, 86, 0, 0, 169, 170, 5, 69,
364
364
  0, 0, 170, 172, 1, 0, 0, 0, 171, 173, 3, 7, 0, 0, 172, 171, 1, 0, 0, 0, 172, 173, 1, 0,
365
365
  0, 0, 173, 174, 1, 0, 0, 0, 174, 175, 6, 6, 5, 0, 175, 176, 1, 0, 0, 0, 176, 177, 6, 6,
366
- 1, 0, 177, 20, 1, 0, 0, 0, 178, 179, 5, 60, 0, 0, 179, 180, 5, 60, 0, 0, 180, 181, 5, 83,
367
- 0, 0, 181, 182, 5, 72, 0, 0, 182, 183, 5, 79, 0, 0, 183, 184, 5, 87, 0, 0, 184, 186, 1,
366
+ 1, 0, 177, 20, 1, 0, 0, 0, 178, 179, 5, 60, 0, 0, 179, 180, 5, 60, 0, 0, 180, 181, 5, 79,
367
+ 0, 0, 181, 182, 5, 80, 0, 0, 182, 183, 5, 69, 0, 0, 183, 184, 5, 78, 0, 0, 184, 186, 1,
368
368
  0, 0, 0, 185, 187, 3, 7, 0, 0, 186, 185, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 1,
369
369
  0, 0, 0, 188, 189, 6, 7, 6, 0, 189, 190, 1, 0, 0, 0, 190, 191, 6, 7, 1, 0, 191, 22, 1, 0,
370
- 0, 0, 192, 193, 5, 60, 0, 0, 193, 194, 5, 60, 0, 0, 194, 195, 5, 72, 0, 0, 195, 196, 5,
371
- 73, 0, 0, 196, 197, 5, 68, 0, 0, 197, 198, 5, 69, 0, 0, 198, 200, 1, 0, 0, 0, 199, 201,
370
+ 0, 0, 192, 193, 5, 60, 0, 0, 193, 194, 5, 60, 0, 0, 194, 195, 5, 70, 0, 0, 195, 196, 5,
371
+ 79, 0, 0, 196, 197, 5, 76, 0, 0, 197, 198, 5, 68, 0, 0, 198, 200, 1, 0, 0, 0, 199, 201,
372
372
  3, 7, 0, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203,
373
373
  6, 8, 7, 0, 203, 204, 1, 0, 0, 0, 204, 205, 6, 8, 1, 0, 205, 24, 1, 0, 0, 0, 206, 207, 5,
374
374
  60, 0, 0, 207, 208, 5, 60, 0, 0, 208, 209, 5, 83, 0, 0, 209, 210, 5, 69, 0, 0, 210, 211,
@@ -20,8 +20,8 @@ export declare class plurnkParser extends antlr.Parser {
20
20
  static readonly OPEN_EDIT = 17;
21
21
  static readonly OPEN_COPY = 18;
22
22
  static readonly OPEN_MOVE = 19;
23
- static readonly OPEN_SHOW = 20;
24
- static readonly OPEN_HIDE = 21;
23
+ static readonly OPEN_OPEN = 20;
24
+ static readonly OPEN_FOLD = 21;
25
25
  static readonly OPEN_SEND = 22;
26
26
  static readonly OPEN_EXEC = 23;
27
27
  static readonly SLOTS_WS = 24;
@@ -37,8 +37,8 @@ export declare class plurnkParser extends antlr.Parser {
37
37
  static readonly RULE_editStatement = 4;
38
38
  static readonly RULE_copyStatement = 5;
39
39
  static readonly RULE_moveStatement = 6;
40
- static readonly RULE_showStatement = 7;
41
- static readonly RULE_hideStatement = 8;
40
+ static readonly RULE_openStatement = 7;
41
+ static readonly RULE_foldStatement = 8;
42
42
  static readonly RULE_sendStatement = 9;
43
43
  static readonly RULE_execStatement = 10;
44
44
  static readonly RULE_tagOpModifiers = 11;
@@ -67,8 +67,8 @@ export declare class plurnkParser extends antlr.Parser {
67
67
  editStatement(): EditStatementContext;
68
68
  copyStatement(): CopyStatementContext;
69
69
  moveStatement(): MoveStatementContext;
70
- showStatement(): ShowStatementContext;
71
- hideStatement(): HideStatementContext;
70
+ openStatement(): OpenStatementContext;
71
+ foldStatement(): FoldStatementContext;
72
72
  sendStatement(): SendStatementContext;
73
73
  execStatement(): ExecStatementContext;
74
74
  tagOpModifiers(): TagOpModifiersContext;
@@ -104,8 +104,8 @@ export declare class StatementContext extends antlr.ParserRuleContext {
104
104
  editStatement(): EditStatementContext | null;
105
105
  copyStatement(): CopyStatementContext | null;
106
106
  moveStatement(): MoveStatementContext | null;
107
- showStatement(): ShowStatementContext | null;
108
- hideStatement(): HideStatementContext | null;
107
+ openStatement(): OpenStatementContext | null;
108
+ foldStatement(): FoldStatementContext | null;
109
109
  sendStatement(): SendStatementContext | null;
110
110
  execStatement(): ExecStatementContext | null;
111
111
  get ruleIndex(): number;
@@ -161,9 +161,9 @@ export declare class MoveStatementContext extends antlr.ParserRuleContext {
161
161
  get ruleIndex(): number;
162
162
  accept<Result>(visitor: plurnkParserVisitor<Result>): Result | null;
163
163
  }
164
- export declare class ShowStatementContext extends antlr.ParserRuleContext {
164
+ export declare class OpenStatementContext extends antlr.ParserRuleContext {
165
165
  constructor(parent: antlr.ParserRuleContext | null, invokingState: number);
166
- OPEN_SHOW(): antlr.TerminalNode;
166
+ OPEN_OPEN(): antlr.TerminalNode;
167
167
  COLON(): antlr.TerminalNode;
168
168
  CLOSE_TAG(): antlr.TerminalNode;
169
169
  tagOpModifiers(): TagOpModifiersContext | null;
@@ -171,9 +171,9 @@ export declare class ShowStatementContext extends antlr.ParserRuleContext {
171
171
  get ruleIndex(): number;
172
172
  accept<Result>(visitor: plurnkParserVisitor<Result>): Result | null;
173
173
  }
174
- export declare class HideStatementContext extends antlr.ParserRuleContext {
174
+ export declare class FoldStatementContext extends antlr.ParserRuleContext {
175
175
  constructor(parent: antlr.ParserRuleContext | null, invokingState: number);
176
- OPEN_HIDE(): antlr.TerminalNode;
176
+ OPEN_FOLD(): antlr.TerminalNode;
177
177
  COLON(): antlr.TerminalNode;
178
178
  CLOSE_TAG(): antlr.TerminalNode;
179
179
  tagOpModifiers(): TagOpModifiersContext | null;
@@ -19,8 +19,8 @@ export class plurnkParser extends antlr.Parser {
19
19
  static OPEN_EDIT = 17;
20
20
  static OPEN_COPY = 18;
21
21
  static OPEN_MOVE = 19;
22
- static OPEN_SHOW = 20;
23
- static OPEN_HIDE = 21;
22
+ static OPEN_OPEN = 20;
23
+ static OPEN_FOLD = 21;
24
24
  static OPEN_SEND = 22;
25
25
  static OPEN_EXEC = 23;
26
26
  static SLOTS_WS = 24;
@@ -36,8 +36,8 @@ export class plurnkParser extends antlr.Parser {
36
36
  static RULE_editStatement = 4;
37
37
  static RULE_copyStatement = 5;
38
38
  static RULE_moveStatement = 6;
39
- static RULE_showStatement = 7;
40
- static RULE_hideStatement = 8;
39
+ static RULE_openStatement = 7;
40
+ static RULE_foldStatement = 8;
41
41
  static RULE_sendStatement = 9;
42
42
  static RULE_execStatement = 10;
43
43
  static RULE_tagOpModifiers = 11;
@@ -58,12 +58,12 @@ export class plurnkParser extends antlr.Parser {
58
58
  null, "LBRACKET", "RBRACKET", "LPAREN", "RPAREN", "L_MARKER", "COLON",
59
59
  "COMMA", "INT", "IDENT", "TAG", "TARGET_TEXT", "BODY_TEXT", "CLOSE_TAG",
60
60
  "TEXT", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE",
61
- "OPEN_SHOW", "OPEN_HIDE", "OPEN_SEND", "OPEN_EXEC", "SLOTS_WS",
61
+ "OPEN_OPEN", "OPEN_FOLD", "OPEN_SEND", "OPEN_EXEC", "SLOTS_WS",
62
62
  "ST_WS", "SI_WS", "SD_WS", "ST_COMMA", "B_COLON"
63
63
  ];
64
64
  static ruleNames = [
65
65
  "document", "statement", "findStatement", "readStatement", "editStatement",
66
- "copyStatement", "moveStatement", "showStatement", "hideStatement",
66
+ "copyStatement", "moveStatement", "openStatement", "foldStatement",
67
67
  "sendStatement", "execStatement", "tagOpModifiers", "sendModifiers",
68
68
  "execModifiers", "tagSignal", "intSignal", "identSignal", "target",
69
69
  "lineMarker", "body",
@@ -100,8 +100,8 @@ export class plurnkParser extends antlr.Parser {
100
100
  case plurnkParser.OPEN_EDIT:
101
101
  case plurnkParser.OPEN_COPY:
102
102
  case plurnkParser.OPEN_MOVE:
103
- case plurnkParser.OPEN_SHOW:
104
- case plurnkParser.OPEN_HIDE:
103
+ case plurnkParser.OPEN_OPEN:
104
+ case plurnkParser.OPEN_FOLD:
105
105
  case plurnkParser.OPEN_SEND:
106
106
  case plurnkParser.OPEN_EXEC:
107
107
  {
@@ -183,18 +183,18 @@ export class plurnkParser extends antlr.Parser {
183
183
  this.moveStatement();
184
184
  }
185
185
  break;
186
- case plurnkParser.OPEN_SHOW:
186
+ case plurnkParser.OPEN_OPEN:
187
187
  this.enterOuterAlt(localContext, 6);
188
188
  {
189
189
  this.state = 54;
190
- this.showStatement();
190
+ this.openStatement();
191
191
  }
192
192
  break;
193
- case plurnkParser.OPEN_HIDE:
193
+ case plurnkParser.OPEN_FOLD:
194
194
  this.enterOuterAlt(localContext, 7);
195
195
  {
196
196
  this.state = 55;
197
- this.hideStatement();
197
+ this.foldStatement();
198
198
  }
199
199
  break;
200
200
  case plurnkParser.OPEN_SEND:
@@ -464,15 +464,15 @@ export class plurnkParser extends antlr.Parser {
464
464
  }
465
465
  return localContext;
466
466
  }
467
- showStatement() {
468
- let localContext = new ShowStatementContext(this.context, this.state);
469
- this.enterRule(localContext, 14, plurnkParser.RULE_showStatement);
467
+ openStatement() {
468
+ let localContext = new OpenStatementContext(this.context, this.state);
469
+ this.enterRule(localContext, 14, plurnkParser.RULE_openStatement);
470
470
  let _la;
471
471
  try {
472
472
  this.enterOuterAlt(localContext, 1);
473
473
  {
474
474
  this.state = 110;
475
- this.match(plurnkParser.OPEN_SHOW);
475
+ this.match(plurnkParser.OPEN_OPEN);
476
476
  this.state = 112;
477
477
  this.errorHandler.sync(this);
478
478
  _la = this.tokenStream.LA(1);
@@ -511,15 +511,15 @@ export class plurnkParser extends antlr.Parser {
511
511
  }
512
512
  return localContext;
513
513
  }
514
- hideStatement() {
515
- let localContext = new HideStatementContext(this.context, this.state);
516
- this.enterRule(localContext, 16, plurnkParser.RULE_hideStatement);
514
+ foldStatement() {
515
+ let localContext = new FoldStatementContext(this.context, this.state);
516
+ this.enterRule(localContext, 16, plurnkParser.RULE_foldStatement);
517
517
  let _la;
518
518
  try {
519
519
  this.enterOuterAlt(localContext, 1);
520
520
  {
521
521
  this.state = 120;
522
- this.match(plurnkParser.OPEN_HIDE);
522
+ this.match(plurnkParser.OPEN_FOLD);
523
523
  this.state = 122;
524
524
  this.errorHandler.sync(this);
525
525
  _la = this.tokenStream.LA(1);
@@ -1302,11 +1302,11 @@ export class StatementContext extends antlr.ParserRuleContext {
1302
1302
  moveStatement() {
1303
1303
  return this.getRuleContext(0, MoveStatementContext);
1304
1304
  }
1305
- showStatement() {
1306
- return this.getRuleContext(0, ShowStatementContext);
1305
+ openStatement() {
1306
+ return this.getRuleContext(0, OpenStatementContext);
1307
1307
  }
1308
- hideStatement() {
1309
- return this.getRuleContext(0, HideStatementContext);
1308
+ foldStatement() {
1309
+ return this.getRuleContext(0, FoldStatementContext);
1310
1310
  }
1311
1311
  sendStatement() {
1312
1312
  return this.getRuleContext(0, SendStatementContext);
@@ -1481,12 +1481,12 @@ export class MoveStatementContext extends antlr.ParserRuleContext {
1481
1481
  }
1482
1482
  }
1483
1483
  }
1484
- export class ShowStatementContext extends antlr.ParserRuleContext {
1484
+ export class OpenStatementContext extends antlr.ParserRuleContext {
1485
1485
  constructor(parent, invokingState) {
1486
1486
  super(parent, invokingState);
1487
1487
  }
1488
- OPEN_SHOW() {
1489
- return this.getToken(plurnkParser.OPEN_SHOW, 0);
1488
+ OPEN_OPEN() {
1489
+ return this.getToken(plurnkParser.OPEN_OPEN, 0);
1490
1490
  }
1491
1491
  COLON() {
1492
1492
  return this.getToken(plurnkParser.COLON, 0);
@@ -1501,23 +1501,23 @@ export class ShowStatementContext extends antlr.ParserRuleContext {
1501
1501
  return this.getRuleContext(0, BodyContext);
1502
1502
  }
1503
1503
  get ruleIndex() {
1504
- return plurnkParser.RULE_showStatement;
1504
+ return plurnkParser.RULE_openStatement;
1505
1505
  }
1506
1506
  accept(visitor) {
1507
- if (visitor.visitShowStatement) {
1508
- return visitor.visitShowStatement(this);
1507
+ if (visitor.visitOpenStatement) {
1508
+ return visitor.visitOpenStatement(this);
1509
1509
  }
1510
1510
  else {
1511
1511
  return visitor.visitChildren(this);
1512
1512
  }
1513
1513
  }
1514
1514
  }
1515
- export class HideStatementContext extends antlr.ParserRuleContext {
1515
+ export class FoldStatementContext extends antlr.ParserRuleContext {
1516
1516
  constructor(parent, invokingState) {
1517
1517
  super(parent, invokingState);
1518
1518
  }
1519
- OPEN_HIDE() {
1520
- return this.getToken(plurnkParser.OPEN_HIDE, 0);
1519
+ OPEN_FOLD() {
1520
+ return this.getToken(plurnkParser.OPEN_FOLD, 0);
1521
1521
  }
1522
1522
  COLON() {
1523
1523
  return this.getToken(plurnkParser.COLON, 0);
@@ -1532,11 +1532,11 @@ export class HideStatementContext extends antlr.ParserRuleContext {
1532
1532
  return this.getRuleContext(0, BodyContext);
1533
1533
  }
1534
1534
  get ruleIndex() {
1535
- return plurnkParser.RULE_hideStatement;
1535
+ return plurnkParser.RULE_foldStatement;
1536
1536
  }
1537
1537
  accept(visitor) {
1538
- if (visitor.visitHideStatement) {
1539
- return visitor.visitHideStatement(this);
1538
+ if (visitor.visitFoldStatement) {
1539
+ return visitor.visitFoldStatement(this);
1540
1540
  }
1541
1541
  else {
1542
1542
  return visitor.visitChildren(this);
@@ -6,8 +6,8 @@ import { ReadStatementContext } from "./plurnkParser.ts";
6
6
  import { EditStatementContext } from "./plurnkParser.ts";
7
7
  import { CopyStatementContext } from "./plurnkParser.ts";
8
8
  import { MoveStatementContext } from "./plurnkParser.ts";
9
- import { ShowStatementContext } from "./plurnkParser.ts";
10
- import { HideStatementContext } from "./plurnkParser.ts";
9
+ import { OpenStatementContext } from "./plurnkParser.ts";
10
+ import { FoldStatementContext } from "./plurnkParser.ts";
11
11
  import { SendStatementContext } from "./plurnkParser.ts";
12
12
  import { ExecStatementContext } from "./plurnkParser.ts";
13
13
  import { TagOpModifiersContext } from "./plurnkParser.ts";
@@ -70,17 +70,17 @@ export declare class plurnkParserVisitor<Result> extends AbstractParseTreeVisito
70
70
  */
71
71
  visitMoveStatement?: (ctx: MoveStatementContext) => Result;
72
72
  /**
73
- * Visit a parse tree produced by `plurnkParser.showStatement`.
73
+ * Visit a parse tree produced by `plurnkParser.openStatement`.
74
74
  * @param ctx the parse tree
75
75
  * @return the visitor result
76
76
  */
77
- visitShowStatement?: (ctx: ShowStatementContext) => Result;
77
+ visitOpenStatement?: (ctx: OpenStatementContext) => Result;
78
78
  /**
79
- * Visit a parse tree produced by `plurnkParser.hideStatement`.
79
+ * Visit a parse tree produced by `plurnkParser.foldStatement`.
80
80
  * @param ctx the parse tree
81
81
  * @return the visitor result
82
82
  */
83
- visitHideStatement?: (ctx: HideStatementContext) => Result;
83
+ visitFoldStatement?: (ctx: FoldStatementContext) => Result;
84
84
  /**
85
85
  * Visit a parse tree produced by `plurnkParser.sendStatement`.
86
86
  * @param ctx the parse tree
@@ -50,17 +50,17 @@ export class plurnkParserVisitor extends AbstractParseTreeVisitor {
50
50
  */
51
51
  visitMoveStatement;
52
52
  /**
53
- * Visit a parse tree produced by `plurnkParser.showStatement`.
53
+ * Visit a parse tree produced by `plurnkParser.openStatement`.
54
54
  * @param ctx the parse tree
55
55
  * @return the visitor result
56
56
  */
57
- visitShowStatement;
57
+ visitOpenStatement;
58
58
  /**
59
- * Visit a parse tree produced by `plurnkParser.hideStatement`.
59
+ * Visit a parse tree produced by `plurnkParser.foldStatement`.
60
60
  * @param ctx the parse tree
61
61
  * @return the visitor result
62
62
  */
63
- visitHideStatement;
63
+ visitFoldStatement;
64
64
  /**
65
65
  * Visit a parse tree produced by `plurnkParser.sendStatement`.
66
66
  * @param ctx the parse tree
@@ -6,5 +6,5 @@ export { default as RecordingListener } from "./RecordingListener.ts";
6
6
  export { default as Validator } from "./Validator.ts";
7
7
  export type { ValidationResult } from "./Validator.ts";
8
8
  export type { ErrorSource } from "./PlurnkParseError.ts";
9
- export type { ContentOffset, CopyStatement, EditStatement, ExecStatement, FindStatement, HideStatement, LineMarker, LocalPath, LogCoordinate, MatcherBody, MoveStatement, ParseItem, ParseResult, ParsedPath, PlurnkOp, PlurnkStatement, Position, ReadStatement, SendBody, SendStatement, ShowStatement, TelemetryEvent, UrlPath, } from "./types.ts";
9
+ export type { ContentOffset, CopyStatement, EditStatement, ExecStatement, FindStatement, FoldStatement, LineMarker, LocalPath, LogCoordinate, MatcherBody, MoveStatement, ParseItem, ParseResult, ParsedPath, PlurnkOp, PlurnkStatement, Position, ReadStatement, SendBody, SendStatement, OpenStatement, TelemetryEvent, UrlPath, } from "./types.ts";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  export * from "./types.generated.ts";
2
2
  import type { Position, PlurnkStatement } from "./types.generated.ts";
3
3
  import type PlurnkParseError from "./PlurnkParseError.ts";
4
- export type PlurnkOp = "FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SHOW" | "HIDE" | "SEND" | "EXEC";
4
+ export type PlurnkOp = "FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "OPEN" | "FOLD" | "SEND" | "EXEC";
5
5
  export type ParseItem = {
6
6
  kind: "statement";
7
7
  statement: PlurnkStatement;
@@ -117,7 +117,7 @@ export type LogEntry = ({
117
117
  sequence: number;
118
118
  at: string;
119
119
  origin: ("model" | "client" | "system" | "plugin");
120
- op: ("FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SHOW" | "HIDE" | "SEND" | "EXEC");
120
+ op: ("FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "OPEN" | "FOLD" | "SEND" | "EXEC");
121
121
  suffix: string;
122
122
  signal: (string[] | number | string | null);
123
123
  scheme: (string | null);
@@ -221,13 +221,13 @@ export interface GlobBody {
221
221
  dialect: "glob";
222
222
  raw: string;
223
223
  }
224
- export type PlurnkStatement = (FindStatement | ReadStatement | ShowStatement | HideStatement | EditStatement | CopyStatement | MoveStatement | SendStatement | ExecStatement);
224
+ export type PlurnkStatement = (FindStatement | ReadStatement | OpenStatement | FoldStatement | EditStatement | CopyStatement | MoveStatement | SendStatement | ExecStatement);
225
225
  /**
226
226
  * A parsed path slot from a plurnk statement. Discriminated on `kind`: either a bare local path (no scheme) or a fully decomposed URL.
227
227
  */
228
228
  export type ParsedPath = (LocalPath | UrlPath);
229
229
  /**
230
- * Parsed body of a FIND/READ/SHOW/HIDE statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.
230
+ * Parsed body of a FIND/READ/OPEN/FOLD statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.
231
231
  */
232
232
  export interface Packet {
233
233
  /**
@@ -372,8 +372,8 @@ export interface ReadStatement {
372
372
  body: (MatcherBody | null);
373
373
  position: Position;
374
374
  }
375
- export interface ShowStatement {
376
- op: "SHOW";
375
+ export interface OpenStatement {
376
+ op: "OPEN";
377
377
  suffix: string;
378
378
  signal: (string[] | null);
379
379
  target: (ParsedPath | null);
@@ -381,8 +381,8 @@ export interface ShowStatement {
381
381
  body: (MatcherBody | null);
382
382
  position: Position;
383
383
  }
384
- export interface HideStatement {
385
- op: "HIDE";
384
+ export interface FoldStatement {
385
+ op: "FOLD";
386
386
  suffix: string;
387
387
  signal: (string[] | null);
388
388
  target: (ParsedPath | null);
@@ -450,7 +450,7 @@ export type PathOrNull = (ParsedPath | null);
450
450
  export type LineMarkerOrNull = (LineMarker | null);
451
451
  export type MatcherBodyOrNull = (MatcherBody | null);
452
452
  /**
453
- * Parsed body of a FIND/READ/SHOW/HIDE statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.
453
+ * Parsed body of a FIND/READ/OPEN/FOLD statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `@` graph, else glob). The regex variant carries pattern/flags split out of the `/pattern/flags` literal; the compiled `RegExp` object on the in-memory AST is a runtime ergonomic only and is not part of the persisted/wire contract.
454
454
  */
455
455
  export type SendBodyOrNull = (SendBody | null);
456
456
  export interface Run {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-grammar",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "ANTLR4 grammar for the Plurnk LLM agent protocol",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/plurnk.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Plurnk System Grammar
2
2
 
3
- YOU MUST ONLY use the Extended HEREDOC Plurnk Operations (FIND|READ|EDIT|COPY|MOVE|SHOW|HIDE|SEND|EXEC).
3
+ YOU MUST ONLY use the Extended HEREDOC Plurnk Operations (FIND|READ|EDIT|COPY|MOVE|OPEN|FOLD|SEND|EXEC).
4
4
 
5
5
  ## Syntax
6
6
 
@@ -17,8 +17,8 @@ Slots between `<<OPsuffix` and `:body:` are all optional. `:body:` fences are re
17
17
  | EDIT | tags | required | lines `N,M` | content |
18
18
  | COPY | apply tags | required | lines `N,M` | destination URI |
19
19
  | MOVE | apply tags | required | lines `N,M` | destination URI |
20
- | SHOW | filter tags | log path | results `N,M` | matcher |
21
- | HIDE | filter tags | log path | results `N,M` | matcher |
20
+ | OPEN | filter tags | log path | results `N,M` | matcher |
21
+ | FOLD | filter tags | log path | results `N,M` | matcher |
22
22
  | SEND | status code | recipient | — | message body |
23
23
  | EXEC | executor | cwd | — | command or code |
24
24
 
@@ -31,12 +31,12 @@ EXEC defaults to `sh`; override with an optional executor (`node`, `python`, `se
31
31
 
32
32
  The agent maintains two surfaces for budgeting working-memory tokens:
33
33
 
34
- - **Log** — what you did: the chronological record of every operation. HIDE collapses a log row to its path and saves tokens; SHOW restores its body and spends tokens. Non-destructive — collapsed rows remain listed and re-SHOWable.
34
+ - **Log** — what you did: the chronological record of every operation. FOLD contracts a log row to its one-line summary and saves tokens; OPEN restores the complete record and spends tokens. Non-destructive — folded rows remain listed and re-OPENable.
35
35
  - **`plurnk://manifest.json`** — what's available: the complete, unranked directory of every entry (items are `{ path, channels }`). Query it to discover what exists; the system never ranks for you.
36
36
 
37
- READ pulls an entry's content (full, ranged, or matcher-filtered) and appends a fresh log row. SHOW and HIDE operate on the log only; against an entry they return 501.
37
+ READ pulls an entry's content (full, ranged, or matcher-filtered) and appends a fresh log row. OPEN and FOLD operate on the log only; against an entry they return 501.
38
38
 
39
- YOU SHOULD collapse distilled and irrelevant log rows with HIDE to save tokens and optimize context relevance.
39
+ YOU SHOULD FOLD distilled and irrelevant log rows to save tokens and optimize context relevance.
40
40
  YOU SHOULD distill durable findings into `known://` entries with EDIT.
41
41
  YOU MAY permanently delete entries by MOVE to `/dev/null` (works regardless of environment).
42
42
 
@@ -51,7 +51,7 @@ Clearing content: `<1,-1>` selects every position; combine with an empty body to
51
51
 
52
52
  On structured entries, `<Result>` addresses result index, not line number.
53
53
 
54
- ## Body matcher dispatch (FIND, READ, SHOW, HIDE)
54
+ ## Body matcher dispatch (FIND, READ, OPEN, FOLD)
55
55
 
56
56
  | leading prefix | dialect | form |
57
57
  |----------------|----------|-----------------------------------|
@@ -120,9 +120,9 @@ Body content is character-perfect, exactly matching whitespace.
120
120
  <<COPY[archive,2026-05-14](known://draft.md):known://archive/2026-05-14/draft.md:COPY
121
121
  <<MOVE[final](known://draft/answer.md):known://final/answer.md:MOVE
122
122
  <<MOVE(known://obsolete/note.md):/dev/null:MOVE
123
- <<SHOW(log://**/get)<1,10>::SHOW
123
+ <<OPEN(log://**/get)<1,10>::OPEN
124
124
  <<FIND(known://**)<5>:~french revolutionary history:FIND
125
- <<HIDE(log://**/get)<101,200>::HIDE
125
+ <<FOLD(log://**/get)<101,200>::FOLD
126
126
  <<FIND(log://**/error):/timeout|deadline exceeded/i:FIND
127
127
  <<FIND(known://**):revolution:FIND
128
128
  <<FIND(src/**):@<createCoder:FIND