@plurnk/plurnk-grammar 0.54.0 → 0.60.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
@@ -21,7 +21,7 @@ const result = PlurnkParser.parse(input);
21
21
 
22
22
  Discriminate on `item.kind`. For `statement` items, narrow on `statement.op` (one of `FIND READ EDIT COPY MOVE OPEN FOLD SEND EXEC KILL PLAN`) to access per-OP typed fields. Full API: [SPEC.md §12](SPEC.md#12-public-api).
23
23
 
24
- `parsePath(raw)` is a top-level helper that decomposes a path/URI string into a `ParsedPath` (the same decomposition applied to `(target)` slots). Reach for it to resolve a **COPY destination**: COPY's body is an opaque string — a destination URI for an entry copy, a prompt for a run fork (`run:///`) — so the consumer interprets it by scheme and calls `parsePath` for the destination case. (MOVE destinations arrive pre-parsed; COPY's don't, because its body is polymorphic.)
24
+ `parsePath(raw)` is a top-level helper that decomposes a path/URI string into a `ParsedPath` (the same decomposition applied to `(target)` slots). Reach for it to resolve a **COPY destination**: COPY's body is an opaque string — a destination URI for an entry copy, a prompt for a run fork (`run://`) — so the consumer interprets it by scheme and calls `parsePath` for the destination case. (MOVE destinations arrive pre-parsed; COPY's don't, because its body is polymorphic.)
25
25
 
26
26
  ## cli
27
27
 
@@ -167,7 +167,7 @@ Nesting: outer body may contain inner `<<OP:…:OP` statements; outer must use a
167
167
  <<SEND[503](log:///errors):{"reason":"git unavailable","command":"git status"}:SEND
168
168
 
169
169
  30. Direct an informational message at a named agent
170
- <<SEND[102](agent://supervisor):decomposition complete; awaiting clearance:SEND
170
+ <<SEND(agent://supervisor):decomposition complete; awaiting clearance:SEND
171
171
 
172
172
  31. Kill a runaway process
173
173
  <<KILL(sh:///3/1/2)::KILL
package/dist/plurnk.gbnf CHANGED
@@ -488,80 +488,80 @@ send-b1 ::= ("S" send-b2 | ":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] se
488
488
  send-b2 ::= ("E" send-b3 | ":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-b0)?
489
489
  send-b3 ::= ("N" send-b4 | ":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-b0)?
490
490
  send-b4 ::= (":" send-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-b0)?
491
- send-mid ::= "<<SEND" "[" status "]" target ":" send-b0 ":SEND" | "<<SEND" target ":" send-b0 ":SEND" | "<<SEND" "[" status-mid "]" ":" send-b0 ":SEND" | "<<SEND" ":" send-b0 ":SEND"
492
- send-final ::= "<<SEND" "[" status-final "]" ":" send-b0 ":SEND"
491
+ send-mid ::= "<<SEND" "[" status-mid "]" target ":" send-b0 ":SEND" | "<<SEND" target ":" send-b0 ":SEND" | "<<SEND" "[" status-mid "]" ":" send-b0 ":SEND" | "<<SEND" ":" send-b0 ":SEND"
492
+ send-final ::= "<<SEND" "[" status-final "]" target? ":" send-b0 ":SEND"
493
493
  send-1-b0 ::= (":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-1-b0)?
494
494
  send-1-b1 ::= ("S" send-1-b2 | ":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-1-b0)?
495
495
  send-1-b2 ::= ("E" send-1-b3 | ":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-1-b0)?
496
496
  send-1-b3 ::= ("N" send-1-b4 | ":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-1-b0)?
497
497
  send-1-b4 ::= ("D" send-1-b5 | ":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-1-b0)?
498
498
  send-1-b5 ::= (":" send-1-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:1] send-1-b0)?
499
- send-1-mid ::= "<<SEND1" "[" status "]" target ":" send-1-b0 ":SEND1" | "<<SEND1" target ":" send-1-b0 ":SEND1" | "<<SEND1" "[" status-mid "]" ":" send-1-b0 ":SEND1" | "<<SEND1" ":" send-1-b0 ":SEND1"
500
- send-1-final ::= "<<SEND1" "[" status-final "]" ":" send-1-b0 ":SEND1"
499
+ send-1-mid ::= "<<SEND1" "[" status-mid "]" target ":" send-1-b0 ":SEND1" | "<<SEND1" target ":" send-1-b0 ":SEND1" | "<<SEND1" "[" status-mid "]" ":" send-1-b0 ":SEND1" | "<<SEND1" ":" send-1-b0 ":SEND1"
500
+ send-1-final ::= "<<SEND1" "[" status-final "]" target? ":" send-1-b0 ":SEND1"
501
501
  send-2-b0 ::= (":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-2-b0)?
502
502
  send-2-b1 ::= ("S" send-2-b2 | ":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-2-b0)?
503
503
  send-2-b2 ::= ("E" send-2-b3 | ":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-2-b0)?
504
504
  send-2-b3 ::= ("N" send-2-b4 | ":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-2-b0)?
505
505
  send-2-b4 ::= ("D" send-2-b5 | ":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-2-b0)?
506
506
  send-2-b5 ::= (":" send-2-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:2] send-2-b0)?
507
- send-2-mid ::= "<<SEND2" "[" status "]" target ":" send-2-b0 ":SEND2" | "<<SEND2" target ":" send-2-b0 ":SEND2" | "<<SEND2" "[" status-mid "]" ":" send-2-b0 ":SEND2" | "<<SEND2" ":" send-2-b0 ":SEND2"
508
- send-2-final ::= "<<SEND2" "[" status-final "]" ":" send-2-b0 ":SEND2"
507
+ send-2-mid ::= "<<SEND2" "[" status-mid "]" target ":" send-2-b0 ":SEND2" | "<<SEND2" target ":" send-2-b0 ":SEND2" | "<<SEND2" "[" status-mid "]" ":" send-2-b0 ":SEND2" | "<<SEND2" ":" send-2-b0 ":SEND2"
508
+ send-2-final ::= "<<SEND2" "[" status-final "]" target? ":" send-2-b0 ":SEND2"
509
509
  send-3-b0 ::= (":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-3-b0)?
510
510
  send-3-b1 ::= ("S" send-3-b2 | ":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-3-b0)?
511
511
  send-3-b2 ::= ("E" send-3-b3 | ":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-3-b0)?
512
512
  send-3-b3 ::= ("N" send-3-b4 | ":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-3-b0)?
513
513
  send-3-b4 ::= ("D" send-3-b5 | ":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-3-b0)?
514
514
  send-3-b5 ::= (":" send-3-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:3] send-3-b0)?
515
- send-3-mid ::= "<<SEND3" "[" status "]" target ":" send-3-b0 ":SEND3" | "<<SEND3" target ":" send-3-b0 ":SEND3" | "<<SEND3" "[" status-mid "]" ":" send-3-b0 ":SEND3" | "<<SEND3" ":" send-3-b0 ":SEND3"
516
- send-3-final ::= "<<SEND3" "[" status-final "]" ":" send-3-b0 ":SEND3"
515
+ send-3-mid ::= "<<SEND3" "[" status-mid "]" target ":" send-3-b0 ":SEND3" | "<<SEND3" target ":" send-3-b0 ":SEND3" | "<<SEND3" "[" status-mid "]" ":" send-3-b0 ":SEND3" | "<<SEND3" ":" send-3-b0 ":SEND3"
516
+ send-3-final ::= "<<SEND3" "[" status-final "]" target? ":" send-3-b0 ":SEND3"
517
517
  send-4-b0 ::= (":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-4-b0)?
518
518
  send-4-b1 ::= ("S" send-4-b2 | ":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-4-b0)?
519
519
  send-4-b2 ::= ("E" send-4-b3 | ":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-4-b0)?
520
520
  send-4-b3 ::= ("N" send-4-b4 | ":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-4-b0)?
521
521
  send-4-b4 ::= ("D" send-4-b5 | ":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-4-b0)?
522
522
  send-4-b5 ::= (":" send-4-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:4] send-4-b0)?
523
- send-4-mid ::= "<<SEND4" "[" status "]" target ":" send-4-b0 ":SEND4" | "<<SEND4" target ":" send-4-b0 ":SEND4" | "<<SEND4" "[" status-mid "]" ":" send-4-b0 ":SEND4" | "<<SEND4" ":" send-4-b0 ":SEND4"
524
- send-4-final ::= "<<SEND4" "[" status-final "]" ":" send-4-b0 ":SEND4"
523
+ send-4-mid ::= "<<SEND4" "[" status-mid "]" target ":" send-4-b0 ":SEND4" | "<<SEND4" target ":" send-4-b0 ":SEND4" | "<<SEND4" "[" status-mid "]" ":" send-4-b0 ":SEND4" | "<<SEND4" ":" send-4-b0 ":SEND4"
524
+ send-4-final ::= "<<SEND4" "[" status-final "]" target? ":" send-4-b0 ":SEND4"
525
525
  send-5-b0 ::= (":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-5-b0)?
526
526
  send-5-b1 ::= ("S" send-5-b2 | ":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-5-b0)?
527
527
  send-5-b2 ::= ("E" send-5-b3 | ":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-5-b0)?
528
528
  send-5-b3 ::= ("N" send-5-b4 | ":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-5-b0)?
529
529
  send-5-b4 ::= ("D" send-5-b5 | ":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-5-b0)?
530
530
  send-5-b5 ::= (":" send-5-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:5] send-5-b0)?
531
- send-5-mid ::= "<<SEND5" "[" status "]" target ":" send-5-b0 ":SEND5" | "<<SEND5" target ":" send-5-b0 ":SEND5" | "<<SEND5" "[" status-mid "]" ":" send-5-b0 ":SEND5" | "<<SEND5" ":" send-5-b0 ":SEND5"
532
- send-5-final ::= "<<SEND5" "[" status-final "]" ":" send-5-b0 ":SEND5"
531
+ send-5-mid ::= "<<SEND5" "[" status-mid "]" target ":" send-5-b0 ":SEND5" | "<<SEND5" target ":" send-5-b0 ":SEND5" | "<<SEND5" "[" status-mid "]" ":" send-5-b0 ":SEND5" | "<<SEND5" ":" send-5-b0 ":SEND5"
532
+ send-5-final ::= "<<SEND5" "[" status-final "]" target? ":" send-5-b0 ":SEND5"
533
533
  send-6-b0 ::= (":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-6-b0)?
534
534
  send-6-b1 ::= ("S" send-6-b2 | ":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-6-b0)?
535
535
  send-6-b2 ::= ("E" send-6-b3 | ":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-6-b0)?
536
536
  send-6-b3 ::= ("N" send-6-b4 | ":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-6-b0)?
537
537
  send-6-b4 ::= ("D" send-6-b5 | ":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-6-b0)?
538
538
  send-6-b5 ::= (":" send-6-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:6] send-6-b0)?
539
- send-6-mid ::= "<<SEND6" "[" status "]" target ":" send-6-b0 ":SEND6" | "<<SEND6" target ":" send-6-b0 ":SEND6" | "<<SEND6" "[" status-mid "]" ":" send-6-b0 ":SEND6" | "<<SEND6" ":" send-6-b0 ":SEND6"
540
- send-6-final ::= "<<SEND6" "[" status-final "]" ":" send-6-b0 ":SEND6"
539
+ send-6-mid ::= "<<SEND6" "[" status-mid "]" target ":" send-6-b0 ":SEND6" | "<<SEND6" target ":" send-6-b0 ":SEND6" | "<<SEND6" "[" status-mid "]" ":" send-6-b0 ":SEND6" | "<<SEND6" ":" send-6-b0 ":SEND6"
540
+ send-6-final ::= "<<SEND6" "[" status-final "]" target? ":" send-6-b0 ":SEND6"
541
541
  send-7-b0 ::= (":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-7-b0)?
542
542
  send-7-b1 ::= ("S" send-7-b2 | ":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-7-b0)?
543
543
  send-7-b2 ::= ("E" send-7-b3 | ":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-7-b0)?
544
544
  send-7-b3 ::= ("N" send-7-b4 | ":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-7-b0)?
545
545
  send-7-b4 ::= ("D" send-7-b5 | ":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-7-b0)?
546
546
  send-7-b5 ::= (":" send-7-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:7] send-7-b0)?
547
- send-7-mid ::= "<<SEND7" "[" status "]" target ":" send-7-b0 ":SEND7" | "<<SEND7" target ":" send-7-b0 ":SEND7" | "<<SEND7" "[" status-mid "]" ":" send-7-b0 ":SEND7" | "<<SEND7" ":" send-7-b0 ":SEND7"
548
- send-7-final ::= "<<SEND7" "[" status-final "]" ":" send-7-b0 ":SEND7"
547
+ send-7-mid ::= "<<SEND7" "[" status-mid "]" target ":" send-7-b0 ":SEND7" | "<<SEND7" target ":" send-7-b0 ":SEND7" | "<<SEND7" "[" status-mid "]" ":" send-7-b0 ":SEND7" | "<<SEND7" ":" send-7-b0 ":SEND7"
548
+ send-7-final ::= "<<SEND7" "[" status-final "]" target? ":" send-7-b0 ":SEND7"
549
549
  send-8-b0 ::= (":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-8-b0)?
550
550
  send-8-b1 ::= ("S" send-8-b2 | ":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-8-b0)?
551
551
  send-8-b2 ::= ("E" send-8-b3 | ":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-8-b0)?
552
552
  send-8-b3 ::= ("N" send-8-b4 | ":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-8-b0)?
553
553
  send-8-b4 ::= ("D" send-8-b5 | ":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-8-b0)?
554
554
  send-8-b5 ::= (":" send-8-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:8] send-8-b0)?
555
- send-8-mid ::= "<<SEND8" "[" status "]" target ":" send-8-b0 ":SEND8" | "<<SEND8" target ":" send-8-b0 ":SEND8" | "<<SEND8" "[" status-mid "]" ":" send-8-b0 ":SEND8" | "<<SEND8" ":" send-8-b0 ":SEND8"
556
- send-8-final ::= "<<SEND8" "[" status-final "]" ":" send-8-b0 ":SEND8"
555
+ send-8-mid ::= "<<SEND8" "[" status-mid "]" target ":" send-8-b0 ":SEND8" | "<<SEND8" target ":" send-8-b0 ":SEND8" | "<<SEND8" "[" status-mid "]" ":" send-8-b0 ":SEND8" | "<<SEND8" ":" send-8-b0 ":SEND8"
556
+ send-8-final ::= "<<SEND8" "[" status-final "]" target? ":" send-8-b0 ":SEND8"
557
557
  send-9-b0 ::= (":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] send-9-b0)?
558
558
  send-9-b1 ::= ("S" send-9-b2 | ":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:S] send-9-b0)?
559
559
  send-9-b2 ::= ("E" send-9-b3 | ":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] send-9-b0)?
560
560
  send-9-b3 ::= ("N" send-9-b4 | ":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:N] send-9-b0)?
561
561
  send-9-b4 ::= ("D" send-9-b5 | ":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:D] send-9-b0)?
562
562
  send-9-b5 ::= (":" send-9-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:9] send-9-b0)?
563
- send-9-mid ::= "<<SEND9" "[" status "]" target ":" send-9-b0 ":SEND9" | "<<SEND9" target ":" send-9-b0 ":SEND9" | "<<SEND9" "[" status-mid "]" ":" send-9-b0 ":SEND9" | "<<SEND9" ":" send-9-b0 ":SEND9"
564
- send-9-final ::= "<<SEND9" "[" status-final "]" ":" send-9-b0 ":SEND9"
563
+ send-9-mid ::= "<<SEND9" "[" status-mid "]" target ":" send-9-b0 ":SEND9" | "<<SEND9" target ":" send-9-b0 ":SEND9" | "<<SEND9" "[" status-mid "]" ":" send-9-b0 ":SEND9" | "<<SEND9" ":" send-9-b0 ":SEND9"
564
+ send-9-final ::= "<<SEND9" "[" status-final "]" target? ":" send-9-b0 ":SEND9"
565
565
  exec-b0 ::= (":" exec-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:] exec-b0)?
566
566
  exec-b1 ::= ("E" exec-b2 | ":" exec-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:E] exec-b0)?
567
567
  exec-b2 ::= ("X" exec-b3 | ":" exec-b1 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F:X] exec-b0)?
@@ -778,8 +778,8 @@ plan-statement ::= plan | plan-1 | plan-2 | plan-3 | plan-4 | plan-5 | plan-6 |
778
778
  op-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 | exec | exec-1 | exec-2 | exec-3 | exec-4 | exec-5 | exec-6 | exec-7 | exec-8 | exec-9 | kill | kill-1 | kill-2 | kill-3 | kill-4 | kill-5 | kill-6 | kill-7 | kill-8 | kill-9 | plan | plan-1 | plan-2 | plan-3 | plan-4 | plan-5 | plan-6 | plan-7 | plan-8 | plan-9
779
779
  send-mid-any ::= send-mid | send-1-mid | send-2-mid | send-3-mid | send-4-mid | send-5-mid | send-6-mid | send-7-mid | send-8-mid | send-9-mid
780
780
  send-final-any ::= send-final | send-1-final | send-2-final | send-3-final | send-4-final | send-5-final | send-6-final | send-7-final | send-8-final | send-9-final
781
- status-final ::= "102" | "200"
782
- status-mid ::= "10" [0-13-9] | "1" [1-9] [0-9] | "20" [1-9] | "2" [1-9] [0-9] | [03-9] [0-9] [0-9]
781
+ status-final ::= "102" | "200" | "202" | "500"
782
+ status-mid ::= "10" [0-13-9] | "1" [1-9] [0-9] | "20" [13-9] | "2" [1-9] [0-9] | [03-46-9] [0-9] [0-9] | "50" [1-9] | "5" [1-9] [0-9]
783
783
  tags ::= "[" tag tag-rest* "]"
784
784
  tag ::= [A-Za-z0-9_.-]+
785
785
  tag-rest ::= "," tag
@@ -788,6 +788,5 @@ line ::= "<" int line-rest* ">"
788
788
  line-rest ::= "," " "? int
789
789
  int ::= "-"? [0-9]+ frac?
790
790
  frac ::= "." [0-9]+
791
- status ::= [0-9] [0-9] [0-9]
792
791
  exec-sig ::= "[" [a-z] [a-z0-9_-]* "]"
793
792
  kill-sig ::= "[" [0-9] [0-9]? "]"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurnk/plurnk-grammar",
3
- "version": "0.54.0",
3
+ "version": "0.60.0",
4
4
  "description": "ANTLR4 grammar for the Plurnk LLM agent protocol",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/plurnk.md CHANGED
@@ -34,10 +34,10 @@ EXEC defaults to `sh`; override with an optional executor (`sqlite`, `node`, etc
34
34
 
35
35
  The agent maintains two surfaces for budgeting working-memory tokens:
36
36
 
37
- - **Log** — the record of every operation. FOLD contracts a log row to its one-line summary and saves tokens; OPEN shows the complete record but spends from your `tokensFree` context tokens. Non-destructive — folded rows remain listed and re-OPENable.
37
+ - **Log** — the record of every operation. FOLD contracts a log row to its one-line summary and saves tokens; OPEN shows the complete record but spends from your `tokensFree` context tokens. Non-destructive — FOLDed rows remain listed and re-OPENable.
38
38
  - **`plurnk:///manifest.json`** — what's available: the complete unranked directory of every entry. Query it to discover available entries.
39
39
 
40
- OPEN and FOLD operate on the log only.
40
+ OPEN and FOLD operate on the log only. Log items are read-only, but can be KILLed.
41
41
 
42
42
  ## `<Line> / <Result>`
43
43
 
@@ -122,8 +122,8 @@ Body content is character-perfect, exactly matching whitespace.
122
122
  <<MOVE[final](known:///draft/answer.md):known:///final/answer.md:MOVE
123
123
  <<KILL(obsolete/file.md)::KILL
124
124
  <<KILL(sh:///3/1/2)::KILL
125
- <<EDIT(run:///capital-check):Find the capital of France.:EDIT
126
- <<COPY(run:///.):Re-derive the capital from a primary source.:COPY
125
+ <<EDIT(run://capital-checker):Find the capital of France.:EDIT
126
+ <<COPY(run://.):Re-derive the capital from a primary source.:COPY
127
127
  <<OPEN(log:///**/get)<1,10>::OPEN
128
128
  <<FIND(known:///**)<5>:~french revolutionary history:FIND
129
129
  <<FIND(known:///**)<0.7>:~french territorial concessions:FIND
@@ -135,7 +135,7 @@ Body content is character-perfect, exactly matching whitespace.
135
135
  <<FIND(src/**):@<createCoder:FIND
136
136
 
137
137
  <<EDIT[tutorial,training,scripts](example.sh):#!/usr/bin/env sh
138
- echo "Hello, world!" > hello.txt
138
+ echo "Taxonomic path names and folksonomic tags on entries improve reasoning and recall!" > advice.txt
139
139
  :EDIT
140
140
 
141
141
  <<EXEC:
@@ -145,7 +145,9 @@ chmod +x ./example.sh
145
145
 
146
146
  <<EXEC[sqlite]:SELECT 22.0 / 7.0;:EXEC
147
147
 
148
- <<SEND(run:///capital-check):{"hint":"prefer primary sources over wikis"}:SEND
148
+ <<SEND(run://capital-checker):{"hint":"known entries are your persistent memory"}:SEND
149
149
 
150
- <<SEND[102]:decomposed prompt into unknowns; plan initialized:SEND
150
+ <<SEND[102]:Forking a research run, optimizing log relevance...:SEND
151
+ <<SEND[202]:Parked until the capital-checker reports.:SEND
152
+ <<SEND[500]:Failed to identify French capital:SEND
151
153
  <<SEND[200]:Paris:SEND