@plurnk/plurnk-contracts 1.4.0 → 1.6.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.
Files changed (64) hide show
  1. package/README.md +10 -6
  2. package/SPEC.md +368 -231
  3. package/dist/plurnk.gemma.gbnf +160 -0
  4. package/dist/plurnk.qwen.gbnf +149 -0
  5. package/dist/schema/ClientStatement.json +7 -1
  6. package/dist/schema/EntryReadResult.json +1 -9
  7. package/dist/schema/MatcherBody.json +1 -1
  8. package/dist/schema/OperationResult.json +3 -0
  9. package/dist/schema/PlurnkStatement.json +57 -12
  10. package/dist/schema/ProposalProjection.json +1 -1
  11. package/dist/schema/ProviderAccounting.json +30 -0
  12. package/dist/schema/ProviderCost.json +6 -15
  13. package/dist/schema/ProviderRequestAccounting.json +17 -0
  14. package/dist/schema/ProviderUsage.json +40 -0
  15. package/dist/schema/RangeExtent.json +47 -0
  16. package/dist/schema/ResourceSelection.json +1 -1
  17. package/dist/schema/TextLineMarker.json +21 -0
  18. package/dist/src/AstBuilder.d.ts.map +1 -1
  19. package/dist/src/AstBuilder.js +123 -22
  20. package/dist/src/AstBuilder.js.map +1 -1
  21. package/dist/src/JsonResult.d.ts +3 -0
  22. package/dist/src/JsonResult.d.ts.map +1 -0
  23. package/dist/src/JsonResult.js +37 -0
  24. package/dist/src/JsonResult.js.map +1 -0
  25. package/dist/src/PlurnkErrorStrategy.d.ts +1 -0
  26. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
  27. package/dist/src/PlurnkErrorStrategy.js +42 -19
  28. package/dist/src/PlurnkErrorStrategy.js.map +1 -1
  29. package/dist/src/PlurnkParser.d.ts.map +1 -1
  30. package/dist/src/PlurnkParser.js +22 -139
  31. package/dist/src/PlurnkParser.js.map +1 -1
  32. package/dist/src/TagSignal.d.ts +15 -0
  33. package/dist/src/TagSignal.d.ts.map +1 -0
  34. package/dist/src/TagSignal.js +48 -0
  35. package/dist/src/TagSignal.js.map +1 -0
  36. package/dist/src/Validator.d.ts +6 -1
  37. package/dist/src/Validator.d.ts.map +1 -1
  38. package/dist/src/Validator.js +36 -1
  39. package/dist/src/Validator.js.map +1 -1
  40. package/dist/src/generated/plurnkLexer.d.ts +99 -54
  41. package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
  42. package/dist/src/generated/plurnkLexer.js +889 -498
  43. package/dist/src/generated/plurnkLexer.js.map +1 -1
  44. package/dist/src/generated/plurnkParser.d.ts +99 -108
  45. package/dist/src/generated/plurnkParser.d.ts.map +1 -1
  46. package/dist/src/generated/plurnkParser.js +943 -1068
  47. package/dist/src/generated/plurnkParser.js.map +1 -1
  48. package/dist/src/generated/plurnkParserVisitor.d.ts +19 -5
  49. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
  50. package/dist/src/generated/plurnkParserVisitor.js +16 -4
  51. package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
  52. package/dist/src/index.d.ts +6 -2
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +4 -2
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/types.d.ts +2 -1
  57. package/dist/src/types.d.ts.map +1 -1
  58. package/dist/src/types.generated.d.ts +98 -24
  59. package/dist/src/types.generated.d.ts.map +1 -1
  60. package/dist/src/types.js +4 -1
  61. package/dist/src/types.js.map +1 -1
  62. package/package.json +8 -8
  63. package/plurnk.md +143 -133
  64. package/dist/plurnk.gbnf +0 -394
@@ -0,0 +1,160 @@
1
+ # @generated by scriptify/generate-gbnf.ts — do not edit; run `npm run build:gbnf`.
2
+ # @plurnk-response-root root-gemma
3
+ root ::= root-gemma
4
+ section-body-b0 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
5
+ section-body-b1 ::= ("#" section-body-b6 | " " section-body-b2 | [PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
6
+ section-body-b2 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b3 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
7
+ section-body-b3 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | "L" section-body-b4 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
8
+ section-body-b4 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b5 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
9
+ section-body-b5 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
10
+ section-body-b6 ::= ("#" section-body-b6 | " " section-body-b7 | [PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
11
+ section-body-b7 ::= ("#" section-body-b1 | [ LANIDTYVX] section-body-b0 | "P" section-body-b3 | "F" section-body-b8 | "R" section-body-b11 | "E" section-body-b14 | "C" section-body-b17 | "O" section-body-b23 | "M" section-body-b20 | "S" section-body-b28 | "B" section-body-b33 | "W" section-body-b36 | "K" section-body-b40 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
12
+ section-body-b8 ::= ("#" section-body-b1 | [ PLANFDRETCYMVSXBWK] section-body-b0 | "I" section-body-b9 | "O" section-body-b26 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
13
+ section-body-b9 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | "N" section-body-b10 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
14
+ section-body-b10 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
15
+ section-body-b11 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b12 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
16
+ section-body-b12 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b13 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
17
+ section-body-b13 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
18
+ section-body-b14 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSBWK] section-body-b0 | "D" section-body-b15 | "X" section-body-b31 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
19
+ section-body-b15 ::= ("#" section-body-b1 | [ PLANFDRETCOYMVSXBWK] section-body-b0 | "I" section-body-b16 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
20
+ section-body-b16 ::= ("#" section-body-b1 | [ PLANFIDRECOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
21
+ section-body-b17 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b18 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
22
+ section-body-b18 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b19 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
23
+ section-body-b19 ::= ("#" section-body-b1 | [ PLANFIDRETCOMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
24
+ section-body-b20 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b21 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
25
+ section-body-b21 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMSXBWK] section-body-b0 | "V" section-body-b22 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
26
+ section-body-b22 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
27
+ section-body-b23 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b24 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
28
+ section-body-b24 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b25 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
29
+ section-body-b25 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
30
+ section-body-b26 ::= ("#" section-body-b1 | [ PANFIDETCOYMVSXBWK] section-body-b0 | "L" section-body-b27 | "R" section-body-b39 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
31
+ section-body-b27 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
32
+ section-body-b28 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b29 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
33
+ section-body-b29 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | "N" section-body-b30 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
34
+ section-body-b30 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
35
+ section-body-b31 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b32 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
36
+ section-body-b32 ::= ("#" section-body-b1 | [ PLANFIDRETOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
37
+ section-body-b33 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b34 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
38
+ section-body-b34 ::= ("#" section-body-b1 | [ PLANFIDETCOYMVSXBWK] section-body-b0 | "R" section-body-b35 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
39
+ section-body-b35 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
40
+ section-body-b36 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b37 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
41
+ section-body-b37 ::= ("#" section-body-b1 | [ PLANFIDETCOYMVSXBWK] section-body-b0 | "R" section-body-b38 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
42
+ section-body-b38 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBW] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
43
+ section-body-b39 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBW] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
44
+ section-body-b40 ::= ("#" section-body-b1 | [ PLANFDRETCOYMVSXBWK] section-body-b0 | "I" section-body-b41 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
45
+ section-body-b41 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | "L" section-body-b42 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
46
+ section-body-b42 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
47
+ section-body-ne ::= "#" section-body-b1 | [ PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0
48
+ pattern-body-ne ::= [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\n\r:#] [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\n\r]*
49
+ log-selection ::= (curation-tags-slot log-target-slot? | log-target-slot)?
50
+ plan ::= "# PLAN0" "\n" section-body-ne "\n\n"
51
+ find ::= "## FIND0" add-tags-slot? target-slot line-slot? "\n\n" | "## FIND0" add-tags-slot? target-slot line-slot? "\n" pattern-body-ne "\n\n"
52
+ read ::= "## READ0" add-tags-slot? target-slot text-line-slot? "\n\n" | "## READ0" add-tags-slot? target-slot text-line-slot? "\n" pattern-body-ne "\n\n"
53
+ edit ::= "## EDIT0" add-tags-slot? target-slot text-line-slot? "\n\n" | "## EDIT0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
54
+ copy ::= "## COPY0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
55
+ move ::= "## MOVE0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
56
+ open ::= "## OPEN0" log-selection "\n\n" | "## OPEN0" log-selection "\n" pattern-body-ne "\n\n"
57
+ fold ::= "## FOLD0" log-selection "\n\n" | "## FOLD0" log-selection "\n" pattern-body-ne "\n\n"
58
+ exec ::= "## EXEC0" exec-slot? target-slot? line-slot? "\n\n" | "## EXEC0" exec-slot? target-slot? line-slot? "\n" section-body-ne "\n\n"
59
+ bare ::= "## BARE0" add-tags-slot? "\n" section-body-ne "\n\n"
60
+ work ::= "## WORK0" branch-slot? target-slot "\n" section-body-ne "\n\n"
61
+ fork ::= "## FORK0" branch-slot? target-slot "\n" section-body-ne "\n\n"
62
+ kill ::= "## KILL0" kill-slot? target-slot "\n\n"
63
+ send-mid ::= "## SEND0" status-mid-slot target-slot? "\n\n" | "## SEND0" status-mid-slot target-slot? "\n" section-body-ne "\n\n" | "## SEND0" target-slot? "\n\n" | "## SEND0" target-slot? "\n" section-body-ne "\n\n"
64
+ send-102 ::= "## SEND0 [102]" target-slot? "\n" section-body-ne
65
+ send-200 ::= "## SEND0 [200]" target-slot? "\n" section-body-ne
66
+ send-202 ::= "## SEND0 [202]" target-slot? park-slot? "\n" section-body-ne
67
+ send-300 ::= "## SEND0 [300]" target-slot? "\n" section-body-ne
68
+ send-499 ::= "## SEND0 [499]" target-slot? "\n" section-body-ne
69
+ send-final-any ::= send-102 | send-200 | send-202 | send-300 | send-499
70
+ send-final-first ::= send-200 | send-202 | send-300 | send-499
71
+ op-statement ::= find | read | edit | copy | move | open | fold | exec | bare | work | fork | kill
72
+ tail-0 ::= send-mid tail-1 | op-statement tail-1 | send-final-first
73
+ tail-1 ::= send-mid tail-2 | op-statement tail-2 | send-final-any
74
+ tail-2 ::= send-mid tail-3 | op-statement tail-3 | send-final-any
75
+ tail-3 ::= send-mid tail-4 | op-statement tail-4 | send-final-any
76
+ tail-4 ::= send-mid tail-5 | op-statement tail-5 | send-final-any
77
+ tail-5 ::= send-mid tail-6 | op-statement tail-6 | send-final-any
78
+ tail-6 ::= send-mid tail-7 | op-statement tail-7 | send-final-any
79
+ tail-7 ::= send-mid tail-8 | op-statement tail-8 | send-final-any
80
+ tail-8 ::= send-mid tail-9 | op-statement tail-9 | send-final-any
81
+ tail-9 ::= send-mid tail-10 | op-statement tail-10 | send-final-any
82
+ tail-10 ::= send-mid tail-11 | op-statement tail-11 | send-final-any
83
+ tail-11 ::= send-mid tail-12 | op-statement tail-12 | send-final-any
84
+ tail-12 ::= send-mid tail-13 | op-statement tail-13 | send-final-any
85
+ tail-13 ::= send-mid tail-14 | op-statement tail-14 | send-final-any
86
+ tail-14 ::= send-final-any
87
+ sep ::= [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]?
88
+ rz-chan-b0 ::= ("<" rz-chan-b1 | [|chanel>toug\n] rz-chan-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
89
+ rz-chan-b1 ::= ("<" rz-chan-b1 | "|" rz-chan-b2 | "c" rz-chan-b18 | [hanel>toug\n] rz-chan-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
90
+ rz-chan-b2 ::= ("<" rz-chan-b1 | [|hanel>toug\n] rz-chan-b0 | "c" rz-chan-b3 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
91
+ rz-chan-b3 ::= ("<" rz-chan-b1 | [|canel>toug\n] rz-chan-b0 | "h" rz-chan-b4 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
92
+ rz-chan-b4 ::= ("<" rz-chan-b1 | [|chnel>toug\n] rz-chan-b0 | "a" rz-chan-b5 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
93
+ rz-chan-b5 ::= ("<" rz-chan-b1 | [|chael>toug\n] rz-chan-b0 | "n" rz-chan-b6 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
94
+ rz-chan-b6 ::= ("<" rz-chan-b1 | [|chael>toug\n] rz-chan-b0 | "n" rz-chan-b7 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
95
+ rz-chan-b7 ::= ("<" rz-chan-b1 | [|chanl>toug\n] rz-chan-b0 | "e" rz-chan-b8 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
96
+ rz-chan-b8 ::= ("<" rz-chan-b1 | [|chane>toug\n] rz-chan-b0 | "l" rz-chan-b9 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
97
+ rz-chan-b9 ::= ("<" rz-chan-b1 | [|chaneltoug\n] rz-chan-b0 | ">" rz-chan-b10 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
98
+ rz-chan-b10 ::= ("<" rz-chan-b1 | [|chanel>oug\n] rz-chan-b0 | "t" rz-chan-b11 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
99
+ rz-chan-b11 ::= ("<" rz-chan-b1 | [|canel>toug\n] rz-chan-b0 | "h" rz-chan-b12 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
100
+ rz-chan-b12 ::= ("<" rz-chan-b1 | [|chanel>tug\n] rz-chan-b0 | "o" rz-chan-b13 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
101
+ rz-chan-b13 ::= ("<" rz-chan-b1 | [|chanel>tog\n] rz-chan-b0 | "u" rz-chan-b14 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
102
+ rz-chan-b14 ::= ("<" rz-chan-b1 | [|chanel>tou\n] rz-chan-b0 | "g" rz-chan-b15 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
103
+ rz-chan-b15 ::= ("<" rz-chan-b1 | [|canel>toug\n] rz-chan-b0 | "h" rz-chan-b16 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
104
+ rz-chan-b16 ::= ("<" rz-chan-b1 | [|chanel>oug\n] rz-chan-b0 | "t" rz-chan-b17 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
105
+ rz-chan-b17 ::= ("<" rz-chan-b1 | [|chanel>toug] rz-chan-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
106
+ rz-chan-b18 ::= ("<" rz-chan-b1 | [|canel>toug\n] rz-chan-b0 | "h" rz-chan-b19 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
107
+ rz-chan-b19 ::= ("<" rz-chan-b1 | [|chnel>toug\n] rz-chan-b0 | "a" rz-chan-b20 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
108
+ rz-chan-b20 ::= ("<" rz-chan-b1 | [|chael>toug\n] rz-chan-b0 | "n" rz-chan-b21 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
109
+ rz-chan-b21 ::= ("<" rz-chan-b1 | [|chael>toug\n] rz-chan-b0 | "n" rz-chan-b22 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
110
+ rz-chan-b22 ::= ("<" rz-chan-b1 | [|chanl>toug\n] rz-chan-b0 | "e" rz-chan-b23 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
111
+ rz-chan-b23 ::= ("<" rz-chan-b1 | [|chane>toug\n] rz-chan-b0 | "l" rz-chan-b24 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
112
+ rz-chan-b24 ::= ("<" rz-chan-b1 | "|" rz-chan-b25 | [chanel>toug\n] rz-chan-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
113
+ rz-chan-b25 ::= ("<" rz-chan-b1 | [|chaneltoug\n] rz-chan-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<|chanel>toug\n] rz-chan-b0)?
114
+ channel ::= "<|channel>thought\n" rz-chan-b0 "<channel|>"
115
+ turn ::= plan tail-0
116
+ framed-turn ::= turn | "```plurnk\n" turn "\n```"
117
+ root-gemma ::= channel sep framed-turn
118
+ add-tags-slot ::= " " add-tags
119
+ curation-tags-slot ::= " " curation-tags
120
+ log-target-slot ::= " (log:" target-atom+ ")"
121
+ target-slot ::= " " target
122
+ line-slot ::= " " line
123
+ text-line-slot ::= " " text-line
124
+ exec-slot ::= " " exec-sig
125
+ branch-slot ::= " " branch
126
+ kill-slot ::= " " kill-sig
127
+ status-mid-slot ::= " [" status-mid "]"
128
+ park-slot ::= " " park
129
+ status-mid ::= [05-9] [0-9] [0-9] | "1" status-mid-1 | "2" status-mid-2 | "3" status-mid-3 | "4" status-mid-4
130
+ status-mid-1 ::= "0" [0-13-9] | [1-9] [0-9]
131
+ status-mid-2 ::= "0" [13-9] | [1-9] [0-9]
132
+ status-mid-3 ::= "0" [1-9] | [1-9] [0-9]
133
+ status-mid-4 ::= "9" [0-8] | [0-8] [0-9]
134
+ add-tags ::= "[" add-tag add-tag-rest* "]"
135
+ curation-tags ::= "[" curation-term curation-term-rest* "]"
136
+ branch ::= "[" [A-Za-z0-9_./-]+ "]"
137
+ tag ::= [A-Za-z0-9_.] [A-Za-z0-9_.+-]*
138
+ add-tag ::= "+" tag
139
+ remove-tag ::= "-" tag
140
+ signed-tag ::= add-tag | remove-tag
141
+ curation-term ::= tag | signed-tag
142
+ add-tag-rest ::= "," add-tag
143
+ curation-term-rest ::= "," curation-term
144
+ target ::= "(" target-inner ")"
145
+ target-inner ::= target-atom+
146
+ target-atom ::= [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\\()<\r\n] | target-escape
147
+ target-escape ::= "\\\\" | "\\(" | "\\)"
148
+ line ::= "<" int line-rest* ">"
149
+ line-rest ::= "," int
150
+ text-line ::= "<" text-coordinate text-line-rest* ">"
151
+ text-line-rest ::= "," text-coordinate
152
+ text-coordinate ::= int | line-anchor
153
+ line-anchor ::= "@" [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z]
154
+ int ::= "-"? [0-9]+ frac?
155
+ frac ::= "." [0-9]+
156
+ park ::= "<" park-t park-poll? ">"
157
+ park-t ::= "-1" | [0-9]+
158
+ park-poll ::= "," [0-9]+
159
+ exec-sig ::= "[" [a-z] [a-z0-9_-]* "]"
160
+ kill-sig ::= "[" [0-9] [0-9]? "]"
@@ -0,0 +1,149 @@
1
+ # @generated by scriptify/generate-gbnf.ts — do not edit; run `npm run build:gbnf`.
2
+ # @plurnk-response-root root-qwen-response
3
+ root ::= root-qwen
4
+ section-body-b0 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
5
+ section-body-b1 ::= ("#" section-body-b6 | " " section-body-b2 | [PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
6
+ section-body-b2 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b3 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
7
+ section-body-b3 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | "L" section-body-b4 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
8
+ section-body-b4 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b5 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
9
+ section-body-b5 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
10
+ section-body-b6 ::= ("#" section-body-b6 | " " section-body-b7 | [PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
11
+ section-body-b7 ::= ("#" section-body-b1 | [ LANIDTYVX] section-body-b0 | "P" section-body-b3 | "F" section-body-b8 | "R" section-body-b11 | "E" section-body-b14 | "C" section-body-b17 | "O" section-body-b23 | "M" section-body-b20 | "S" section-body-b28 | "B" section-body-b33 | "W" section-body-b36 | "K" section-body-b40 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
12
+ section-body-b8 ::= ("#" section-body-b1 | [ PLANFDRETCYMVSXBWK] section-body-b0 | "I" section-body-b9 | "O" section-body-b26 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
13
+ section-body-b9 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | "N" section-body-b10 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
14
+ section-body-b10 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
15
+ section-body-b11 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b12 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
16
+ section-body-b12 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b13 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
17
+ section-body-b13 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
18
+ section-body-b14 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSBWK] section-body-b0 | "D" section-body-b15 | "X" section-body-b31 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
19
+ section-body-b15 ::= ("#" section-body-b1 | [ PLANFDRETCOYMVSXBWK] section-body-b0 | "I" section-body-b16 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
20
+ section-body-b16 ::= ("#" section-body-b1 | [ PLANFIDRECOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
21
+ section-body-b17 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b18 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
22
+ section-body-b18 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b19 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
23
+ section-body-b19 ::= ("#" section-body-b1 | [ PLANFIDRETCOMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
24
+ section-body-b20 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b21 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
25
+ section-body-b21 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMSXBWK] section-body-b0 | "V" section-body-b22 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
26
+ section-body-b22 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
27
+ section-body-b23 ::= ("#" section-body-b1 | [ LANFIDRETCOYMVSXBWK] section-body-b0 | "P" section-body-b24 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
28
+ section-body-b24 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b25 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
29
+ section-body-b25 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
30
+ section-body-b26 ::= ("#" section-body-b1 | [ PANFIDETCOYMVSXBWK] section-body-b0 | "L" section-body-b27 | "R" section-body-b39 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
31
+ section-body-b27 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
32
+ section-body-b28 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b29 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
33
+ section-body-b29 ::= ("#" section-body-b1 | [ PLAFIDRETCOYMVSXBWK] section-body-b0 | "N" section-body-b30 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
34
+ section-body-b30 ::= ("#" section-body-b1 | [ PLANFIRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
35
+ section-body-b31 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | "E" section-body-b32 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
36
+ section-body-b32 ::= ("#" section-body-b1 | [ PLANFIDRETOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
37
+ section-body-b33 ::= ("#" section-body-b1 | [ PLNFIDRETCOYMVSXBWK] section-body-b0 | "A" section-body-b34 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
38
+ section-body-b34 ::= ("#" section-body-b1 | [ PLANFIDETCOYMVSXBWK] section-body-b0 | "R" section-body-b35 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
39
+ section-body-b35 ::= ("#" section-body-b1 | [ PLANFIDRTCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
40
+ section-body-b36 ::= ("#" section-body-b1 | [ PLANFIDRETCYMVSXBWK] section-body-b0 | "O" section-body-b37 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
41
+ section-body-b37 ::= ("#" section-body-b1 | [ PLANFIDETCOYMVSXBWK] section-body-b0 | "R" section-body-b38 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
42
+ section-body-b38 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBW] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
43
+ section-body-b39 ::= ("#" section-body-b1 | [ PLANFIDRETCOYMVSXBW] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
44
+ section-body-b40 ::= ("#" section-body-b1 | [ PLANFDRETCOYMVSXBWK] section-body-b0 | "I" section-body-b41 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
45
+ section-body-b41 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | "L" section-body-b42 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
46
+ section-body-b42 ::= ("#" section-body-b1 | [ PANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0)?
47
+ section-body-ne ::= "#" section-body-b1 | [ PLANFIDRETCOYMVSXBWK] section-body-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F# PLANFIDRETCOYMVSXBWK] section-body-b0
48
+ pattern-body-ne ::= [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\n\r:#] [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\n\r]*
49
+ log-selection ::= (curation-tags-slot log-target-slot? | log-target-slot)?
50
+ plan ::= "# PLAN0" "\n" section-body-ne "\n\n"
51
+ find ::= "## FIND0" add-tags-slot? target-slot line-slot? "\n\n" | "## FIND0" add-tags-slot? target-slot line-slot? "\n" pattern-body-ne "\n\n"
52
+ read ::= "## READ0" add-tags-slot? target-slot text-line-slot? "\n\n" | "## READ0" add-tags-slot? target-slot text-line-slot? "\n" pattern-body-ne "\n\n"
53
+ edit ::= "## EDIT0" add-tags-slot? target-slot text-line-slot? "\n\n" | "## EDIT0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
54
+ copy ::= "## COPY0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
55
+ move ::= "## MOVE0" add-tags-slot? target-slot text-line-slot? "\n" section-body-ne "\n\n"
56
+ open ::= "## OPEN0" log-selection "\n\n" | "## OPEN0" log-selection "\n" pattern-body-ne "\n\n"
57
+ fold ::= "## FOLD0" log-selection "\n\n" | "## FOLD0" log-selection "\n" pattern-body-ne "\n\n"
58
+ exec ::= "## EXEC0" exec-slot? target-slot? line-slot? "\n\n" | "## EXEC0" exec-slot? target-slot? line-slot? "\n" section-body-ne "\n\n"
59
+ bare ::= "## BARE0" add-tags-slot? "\n" section-body-ne "\n\n"
60
+ work ::= "## WORK0" branch-slot? target-slot "\n" section-body-ne "\n\n"
61
+ fork ::= "## FORK0" branch-slot? target-slot "\n" section-body-ne "\n\n"
62
+ kill ::= "## KILL0" kill-slot? target-slot "\n\n"
63
+ send-mid ::= "## SEND0" status-mid-slot target-slot? "\n\n" | "## SEND0" status-mid-slot target-slot? "\n" section-body-ne "\n\n" | "## SEND0" target-slot? "\n\n" | "## SEND0" target-slot? "\n" section-body-ne "\n\n"
64
+ send-102 ::= "## SEND0 [102]" target-slot? "\n" section-body-ne
65
+ send-200 ::= "## SEND0 [200]" target-slot? "\n" section-body-ne
66
+ send-202 ::= "## SEND0 [202]" target-slot? park-slot? "\n" section-body-ne
67
+ send-300 ::= "## SEND0 [300]" target-slot? "\n" section-body-ne
68
+ send-499 ::= "## SEND0 [499]" target-slot? "\n" section-body-ne
69
+ send-final-any ::= send-102 | send-200 | send-202 | send-300 | send-499
70
+ send-final-first ::= send-200 | send-202 | send-300 | send-499
71
+ op-statement ::= find | read | edit | copy | move | open | fold | exec | bare | work | fork | kill
72
+ tail-0 ::= send-mid tail-1 | op-statement tail-1 | send-final-first
73
+ tail-1 ::= send-mid tail-2 | op-statement tail-2 | send-final-any
74
+ tail-2 ::= send-mid tail-3 | op-statement tail-3 | send-final-any
75
+ tail-3 ::= send-mid tail-4 | op-statement tail-4 | send-final-any
76
+ tail-4 ::= send-mid tail-5 | op-statement tail-5 | send-final-any
77
+ tail-5 ::= send-mid tail-6 | op-statement tail-6 | send-final-any
78
+ tail-6 ::= send-mid tail-7 | op-statement tail-7 | send-final-any
79
+ tail-7 ::= send-mid tail-8 | op-statement tail-8 | send-final-any
80
+ tail-8 ::= send-mid tail-9 | op-statement tail-9 | send-final-any
81
+ tail-9 ::= send-mid tail-10 | op-statement tail-10 | send-final-any
82
+ tail-10 ::= send-mid tail-11 | op-statement tail-11 | send-final-any
83
+ tail-11 ::= send-mid tail-12 | op-statement tail-12 | send-final-any
84
+ tail-12 ::= send-mid tail-13 | op-statement tail-13 | send-final-any
85
+ tail-13 ::= send-mid tail-14 | op-statement tail-14 | send-final-any
86
+ tail-14 ::= send-final-any
87
+ sep ::= [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]? [ \t\r\n]?
88
+ rz-think-b0 ::= ("<" rz-think-b1 | [think>\n/] rz-think-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
89
+ rz-think-b1 ::= ("<" rz-think-b1 | "t" rz-think-b2 | [hink>\n] rz-think-b0 | "/" rz-think-b8 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
90
+ rz-think-b2 ::= ("<" rz-think-b1 | [tink>\n/] rz-think-b0 | "h" rz-think-b3 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
91
+ rz-think-b3 ::= ("<" rz-think-b1 | [thnk>\n/] rz-think-b0 | "i" rz-think-b4 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
92
+ rz-think-b4 ::= ("<" rz-think-b1 | [thik>\n/] rz-think-b0 | "n" rz-think-b5 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
93
+ rz-think-b5 ::= ("<" rz-think-b1 | [thin>\n/] rz-think-b0 | "k" rz-think-b6 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
94
+ rz-think-b6 ::= ("<" rz-think-b1 | [think\n/] rz-think-b0 | ">" rz-think-b7 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
95
+ rz-think-b7 ::= ("<" rz-think-b1 | [think>/] rz-think-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
96
+ rz-think-b8 ::= ("<" rz-think-b1 | "t" rz-think-b9 | [hink>\n/] rz-think-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
97
+ rz-think-b9 ::= ("<" rz-think-b1 | [tink>\n/] rz-think-b0 | "h" rz-think-b10 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
98
+ rz-think-b10 ::= ("<" rz-think-b1 | [thnk>\n/] rz-think-b0 | "i" rz-think-b11 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
99
+ rz-think-b11 ::= ("<" rz-think-b1 | [thik>\n/] rz-think-b0 | "n" rz-think-b12 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
100
+ rz-think-b12 ::= ("<" rz-think-b1 | [thin>\n/] rz-think-b0 | "k" rz-think-b13 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
101
+ rz-think-b13 ::= ("<" rz-think-b1 | [think\n/] rz-think-b0 | [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F<think>\n/] rz-think-b0)?
102
+ qwen-tail ::= rz-think-b0 "</think>"
103
+ turn ::= plan tail-0
104
+ framed-turn ::= turn | "```plurnk\n" turn "\n```"
105
+ root-qwen ::= qwen-tail sep framed-turn
106
+ root-qwen-response ::= "<think>\n" root-qwen
107
+ add-tags-slot ::= " " add-tags
108
+ curation-tags-slot ::= " " curation-tags
109
+ log-target-slot ::= " (log:" target-atom+ ")"
110
+ target-slot ::= " " target
111
+ line-slot ::= " " line
112
+ text-line-slot ::= " " text-line
113
+ exec-slot ::= " " exec-sig
114
+ branch-slot ::= " " branch
115
+ kill-slot ::= " " kill-sig
116
+ status-mid-slot ::= " [" status-mid "]"
117
+ park-slot ::= " " park
118
+ status-mid ::= [05-9] [0-9] [0-9] | "1" status-mid-1 | "2" status-mid-2 | "3" status-mid-3 | "4" status-mid-4
119
+ status-mid-1 ::= "0" [0-13-9] | [1-9] [0-9]
120
+ status-mid-2 ::= "0" [13-9] | [1-9] [0-9]
121
+ status-mid-3 ::= "0" [1-9] | [1-9] [0-9]
122
+ status-mid-4 ::= "9" [0-8] | [0-8] [0-9]
123
+ add-tags ::= "[" add-tag add-tag-rest* "]"
124
+ curation-tags ::= "[" curation-term curation-term-rest* "]"
125
+ branch ::= "[" [A-Za-z0-9_./-]+ "]"
126
+ tag ::= [A-Za-z0-9_.] [A-Za-z0-9_.+-]*
127
+ add-tag ::= "+" tag
128
+ remove-tag ::= "-" tag
129
+ signed-tag ::= add-tag | remove-tag
130
+ curation-term ::= tag | signed-tag
131
+ add-tag-rest ::= "," add-tag
132
+ curation-term-rest ::= "," curation-term
133
+ target ::= "(" target-inner ")"
134
+ target-inner ::= target-atom+
135
+ target-atom ::= [^\x00-\x08\x0B-\x0C\x0E-\x1F\x7F\\()<\r\n] | target-escape
136
+ target-escape ::= "\\\\" | "\\(" | "\\)"
137
+ line ::= "<" int line-rest* ">"
138
+ line-rest ::= "," int
139
+ text-line ::= "<" text-coordinate text-line-rest* ">"
140
+ text-line-rest ::= "," text-coordinate
141
+ text-coordinate ::= int | line-anchor
142
+ line-anchor ::= "@" [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z] [0-9A-Za-z]
143
+ int ::= "-"? [0-9]+ frac?
144
+ frac ::= "." [0-9]+
145
+ park ::= "<" park-t park-poll? ">"
146
+ park-t ::= "-1" | [0-9]+
147
+ park-poll ::= "," [0-9]+
148
+ exec-sig ::= "[" [a-z] [a-z0-9_-]* "]"
149
+ kill-sig ::= "[" [0-9] [0-9]? "]"
@@ -27,6 +27,12 @@
27
27
  { "type": "null" }
28
28
  ]
29
29
  },
30
+ "TextLineMarkerOrNull": {
31
+ "oneOf": [
32
+ { "$ref": "https://schemas.plurnk.dev/v0/TextLineMarker.json" },
33
+ { "type": "null" }
34
+ ]
35
+ },
30
36
  "MatcherBodyOrNull": {
31
37
  "oneOf": [
32
38
  { "$ref": "https://schemas.plurnk.dev/v0/MatcherBody.json" },
@@ -45,7 +51,7 @@
45
51
  "suffix": { "type": "string" },
46
52
  "signal": { "$ref": "#/$defs/TagSignal" },
47
53
  "target": { "$ref": "#/$defs/PathOrNull" },
48
- "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
54
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
49
55
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
50
56
  "position": { "$ref": "#/$defs/PositionRef" }
51
57
  }
@@ -32,7 +32,7 @@
32
32
  "entry": {
33
33
  "title": "ClientEntry",
34
34
  "type": "object",
35
- "required": ["entryId", "target", "channels", "tags"],
35
+ "required": ["entryId", "target", "channels"],
36
36
  "additionalProperties": false,
37
37
  "properties": {
38
38
  "entryId": {
@@ -48,14 +48,6 @@
48
48
  "type": "object",
49
49
  "propertyNames": { "minLength": 1 },
50
50
  "additionalProperties": { "$ref": "#/$defs/channel" }
51
- },
52
- "tags": {
53
- "type": "array",
54
- "uniqueItems": true,
55
- "items": {
56
- "type": "string",
57
- "minLength": 1
58
- }
59
51
  }
60
52
  }
61
53
  },
@@ -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/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 and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.",
5
+ "description": "Parsed body of a FIND/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 and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.",
6
6
  "oneOf": [
7
7
  { "$ref": "#/$defs/XPathBody" },
8
8
  { "$ref": "#/$defs/RegexBody" },
@@ -15,6 +15,9 @@
15
15
  "problem": {
16
16
  "$ref": "https://schemas.plurnk.dev/v0/ProblemDetails.json"
17
17
  },
18
+ "range": {
19
+ "$ref": "https://schemas.plurnk.dev/v0/RangeExtent.json"
20
+ },
18
21
  "error": false
19
22
  },
20
23
  "oneOf": [
@@ -13,6 +13,7 @@
13
13
  { "$ref": "#/$defs/MoveStatement" },
14
14
  { "$ref": "#/$defs/SendStatement" },
15
15
  { "$ref": "#/$defs/ExecStatement" },
16
+ { "$ref": "#/$defs/BareStatement" },
16
17
  { "$ref": "#/$defs/WorkStatement" },
17
18
  { "$ref": "#/$defs/ForkStatement" },
18
19
  { "$ref": "#/$defs/KillStatement" },
@@ -25,6 +26,30 @@
25
26
  { "type": "null" }
26
27
  ]
27
28
  },
29
+ "AppliedTagSignal": {
30
+ "oneOf": [
31
+ {
32
+ "type": "array",
33
+ "items": {
34
+ "type": "string",
35
+ "pattern": "^\\+?[^+\\-\\[\\],\\s\\u0000-\\u001F\\u007F-\\u009F][^\\[\\],\\s\\u0000-\\u001F\\u007F-\\u009F]*$"
36
+ }
37
+ },
38
+ { "type": "null" }
39
+ ]
40
+ },
41
+ "CurationTagSignal": {
42
+ "oneOf": [
43
+ {
44
+ "type": "array",
45
+ "items": {
46
+ "type": "string",
47
+ "pattern": "^[+-]?[^+\\-\\[\\],\\s\\u0000-\\u001F\\u007F-\\u009F][^\\[\\],\\s\\u0000-\\u001F\\u007F-\\u009F]*$"
48
+ }
49
+ },
50
+ { "type": "null" }
51
+ ]
52
+ },
28
53
  "PathOrNull": {
29
54
  "oneOf": [
30
55
  { "$ref": "https://schemas.plurnk.dev/v0/ParsedPath.json" },
@@ -37,6 +62,12 @@
37
62
  { "type": "null" }
38
63
  ]
39
64
  },
65
+ "TextLineMarkerOrNull": {
66
+ "oneOf": [
67
+ { "$ref": "https://schemas.plurnk.dev/v0/TextLineMarker.json" },
68
+ { "type": "null" }
69
+ ]
70
+ },
40
71
  "MatcherBodyOrNull": {
41
72
  "oneOf": [
42
73
  { "$ref": "https://schemas.plurnk.dev/v0/MatcherBody.json" },
@@ -65,7 +96,7 @@
65
96
  "properties": {
66
97
  "op": { "const": "FIND" },
67
98
  "suffix": { "type": "string" },
68
- "signal": { "$ref": "#/$defs/TagSignal" },
99
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
69
100
  "target": { "$ref": "#/$defs/PathOrNull" },
70
101
  "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
71
102
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
@@ -79,10 +110,10 @@
79
110
  "properties": {
80
111
  "op": { "const": "READ" },
81
112
  "suffix": { "type": "string" },
82
- "signal": { "$ref": "#/$defs/TagSignal" },
113
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
83
114
  "target": { "$ref": "#/$defs/PathOrNull" },
84
- "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
85
- "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
115
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
116
+ "body": { "type": "null" },
86
117
  "position": { "$ref": "#/$defs/PositionRef" }
87
118
  }
88
119
  },
@@ -93,7 +124,7 @@
93
124
  "properties": {
94
125
  "op": { "const": "OPEN" },
95
126
  "suffix": { "type": "string" },
96
- "signal": { "$ref": "#/$defs/TagSignal" },
127
+ "signal": { "$ref": "#/$defs/CurationTagSignal" },
97
128
  "target": { "$ref": "#/$defs/PathOrNull" },
98
129
  "lineMarker": { "type": "null" },
99
130
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
@@ -107,7 +138,7 @@
107
138
  "properties": {
108
139
  "op": { "const": "FOLD" },
109
140
  "suffix": { "type": "string" },
110
- "signal": { "$ref": "#/$defs/TagSignal" },
141
+ "signal": { "$ref": "#/$defs/CurationTagSignal" },
111
142
  "target": { "$ref": "#/$defs/PathOrNull" },
112
143
  "lineMarker": { "type": "null" },
113
144
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
@@ -121,9 +152,9 @@
121
152
  "properties": {
122
153
  "op": { "const": "EDIT" },
123
154
  "suffix": { "type": "string" },
124
- "signal": { "$ref": "#/$defs/TagSignal" },
155
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
125
156
  "target": { "$ref": "#/$defs/PathOrNull" },
126
- "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
157
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
127
158
  "body": { "type": ["string", "null"] },
128
159
  "position": { "$ref": "#/$defs/PositionRef" }
129
160
  }
@@ -135,9 +166,9 @@
135
166
  "properties": {
136
167
  "op": { "const": "COPY" },
137
168
  "suffix": { "type": "string" },
138
- "signal": { "$ref": "#/$defs/TagSignal" },
169
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
139
170
  "target": { "$ref": "#/$defs/PathOrNull" },
140
- "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
171
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
141
172
  "body": { "$ref": "#/$defs/ResourceSelectionOrNull" },
142
173
  "position": { "$ref": "#/$defs/PositionRef" }
143
174
  }
@@ -149,9 +180,9 @@
149
180
  "properties": {
150
181
  "op": { "const": "MOVE" },
151
182
  "suffix": { "type": "string" },
152
- "signal": { "$ref": "#/$defs/TagSignal" },
183
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
153
184
  "target": { "$ref": "#/$defs/PathOrNull" },
154
- "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
185
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
155
186
  "body": { "$ref": "#/$defs/ResourceSelectionOrNull" },
156
187
  "position": { "$ref": "#/$defs/PositionRef" }
157
188
  }
@@ -189,6 +220,20 @@
189
220
  "position": { "$ref": "#/$defs/PositionRef" }
190
221
  }
191
222
  },
223
+ "BareStatement": {
224
+ "type": "object",
225
+ "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
226
+ "additionalProperties": false,
227
+ "properties": {
228
+ "op": { "const": "BARE" },
229
+ "suffix": { "type": "string" },
230
+ "signal": { "$ref": "#/$defs/AppliedTagSignal" },
231
+ "target": { "type": "null" },
232
+ "lineMarker": { "type": "null" },
233
+ "body": { "type": "string", "minLength": 1 },
234
+ "position": { "$ref": "#/$defs/PositionRef" }
235
+ }
236
+ },
192
237
  "PlanStatement": {
193
238
  "type": "object",
194
239
  "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
@@ -24,7 +24,7 @@
24
24
  "loopId": { "type": "integer", "minimum": 1 },
25
25
  "turnId": { "type": "integer", "minimum": 1 },
26
26
  "op": {
27
- "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD", "SEND", "EXEC", "WORK", "FORK", "KILL", "PLAN"]
27
+ "enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD", "SEND", "EXEC", "BARE", "WORK", "FORK", "KILL", "PLAN"]
28
28
  },
29
29
  "target": {
30
30
  "type": "object",
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.plurnk.dev/ProviderAccounting.json",
4
+ "title": "ProviderAccounting",
5
+ "description": "Ordered physical provider-request evidence and its deterministic aggregate projection.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["requests", "usage", "costUsd"],
9
+ "properties": {
10
+ "requests": {
11
+ "type": "array",
12
+ "items": { "$ref": "https://schemas.plurnk.dev/ProviderRequestAccounting.json" }
13
+ },
14
+ "usage": {
15
+ "oneOf": [
16
+ { "$ref": "https://schemas.plurnk.dev/ProviderUsage.json" },
17
+ { "type": "null" }
18
+ ]
19
+ },
20
+ "costUsd": {
21
+ "oneOf": [
22
+ {
23
+ "type": "string",
24
+ "pattern": "^(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"
25
+ },
26
+ { "type": "null" }
27
+ ]
28
+ }
29
+ }
30
+ }