schematex 0.5.0 → 0.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 (180) hide show
  1. package/README.md +89 -7
  2. package/dist/ai/ai-sdk.cjs +32 -26
  3. package/dist/ai/ai-sdk.cjs.map +1 -1
  4. package/dist/ai/ai-sdk.d.cts +4 -3
  5. package/dist/ai/ai-sdk.d.ts +4 -3
  6. package/dist/ai/ai-sdk.js +28 -22
  7. package/dist/ai/ai-sdk.js.map +1 -1
  8. package/dist/ai/index.cjs +37 -25
  9. package/dist/ai/index.d.cts +20 -153
  10. package/dist/ai/index.d.ts +20 -153
  11. package/dist/ai/index.js +17 -17
  12. package/dist/{api-C5UcmT7n.d.cts → api-XWHHAhQI.d.ts} +12 -2
  13. package/dist/{api-C5UcmT7n.d.ts → api-qVDutqXH.d.cts} +12 -2
  14. package/dist/browser.cjs +37 -19
  15. package/dist/browser.cjs.map +1 -1
  16. package/dist/browser.d.cts +12 -3
  17. package/dist/browser.d.ts +12 -3
  18. package/dist/browser.js +27 -19
  19. package/dist/browser.js.map +1 -1
  20. package/dist/{chunk-3YUUC6RN.cjs → chunk-25ZON47K.cjs} +4105 -267
  21. package/dist/chunk-25ZON47K.cjs.map +1 -0
  22. package/dist/{chunk-N7W5KZK7.cjs → chunk-2L4YXZAZ.cjs} +4 -4
  23. package/dist/{chunk-N7W5KZK7.cjs.map → chunk-2L4YXZAZ.cjs.map} +1 -1
  24. package/dist/{chunk-ZYRCPSBU.js → chunk-3IE7KZY4.js} +4 -4
  25. package/dist/{chunk-ZYRCPSBU.js.map → chunk-3IE7KZY4.js.map} +1 -1
  26. package/dist/{chunk-ZX74KJPM.js → chunk-3VB5AT4R.js} +3 -3
  27. package/dist/{chunk-ZX74KJPM.js.map → chunk-3VB5AT4R.js.map} +1 -1
  28. package/dist/{chunk-S2KJRHDZ.cjs → chunk-4UFR2LB6.cjs} +13 -13
  29. package/dist/{chunk-S2KJRHDZ.cjs.map → chunk-4UFR2LB6.cjs.map} +1 -1
  30. package/dist/{chunk-QTNPMIO2.cjs → chunk-6JI6FWLZ.cjs} +341 -35
  31. package/dist/chunk-6JI6FWLZ.cjs.map +1 -0
  32. package/dist/{chunk-GTDQAN2Z.js → chunk-7AFW2J6J.js} +4075 -247
  33. package/dist/chunk-7AFW2J6J.js.map +1 -0
  34. package/dist/{chunk-UFTYX73U.js → chunk-7F76AWOI.js} +339 -35
  35. package/dist/chunk-7F76AWOI.js.map +1 -0
  36. package/dist/{chunk-BW4KGTV7.cjs → chunk-C5C5EF3W.cjs} +4 -4
  37. package/dist/{chunk-BW4KGTV7.cjs.map → chunk-C5C5EF3W.cjs.map} +1 -1
  38. package/dist/{chunk-VJGMEGMR.js → chunk-DOK7LKLO.js} +125 -13
  39. package/dist/chunk-DOK7LKLO.js.map +1 -0
  40. package/dist/{chunk-3M6WB62Y.cjs → chunk-ECD5XHBM.cjs} +139 -7
  41. package/dist/chunk-ECD5XHBM.cjs.map +1 -0
  42. package/dist/{chunk-L3CTXXVZ.js → chunk-FBS3PACU.js} +3 -3
  43. package/dist/{chunk-L3CTXXVZ.js.map → chunk-FBS3PACU.js.map} +1 -1
  44. package/dist/{chunk-QUKVGHN4.cjs → chunk-FKJBXGWP.cjs} +4 -4
  45. package/dist/{chunk-QUKVGHN4.cjs.map → chunk-FKJBXGWP.cjs.map} +1 -1
  46. package/dist/{chunk-SZK376QB.js → chunk-H4MT5TJP.js} +3 -3
  47. package/dist/{chunk-SZK376QB.js.map → chunk-H4MT5TJP.js.map} +1 -1
  48. package/dist/{chunk-3M6T7KB4.js → chunk-HAZALB7U.js} +3 -3
  49. package/dist/{chunk-3M6T7KB4.js.map → chunk-HAZALB7U.js.map} +1 -1
  50. package/dist/{chunk-VFZOPRQP.cjs → chunk-HWVBHU3O.cjs} +5 -5
  51. package/dist/{chunk-VFZOPRQP.cjs.map → chunk-HWVBHU3O.cjs.map} +1 -1
  52. package/dist/{chunk-D7EHZFK4.cjs → chunk-L7POWM5B.cjs} +138 -2
  53. package/dist/chunk-L7POWM5B.cjs.map +1 -0
  54. package/dist/{chunk-6OSUNBZY.js → chunk-LGABFD3L.js} +135 -7
  55. package/dist/chunk-LGABFD3L.js.map +1 -0
  56. package/dist/{chunk-2VNMKOUO.js → chunk-LRI4RH2N.js} +135 -3
  57. package/dist/chunk-LRI4RH2N.js.map +1 -0
  58. package/dist/{chunk-VDSYMSUY.js → chunk-MVIEIKOI.js} +3 -3
  59. package/dist/{chunk-VDSYMSUY.js.map → chunk-MVIEIKOI.js.map} +1 -1
  60. package/dist/{chunk-ZL5RB4UV.js → chunk-N5B242WY.js} +3 -3
  61. package/dist/{chunk-ZL5RB4UV.js.map → chunk-N5B242WY.js.map} +1 -1
  62. package/dist/{chunk-IM4RCUHA.js → chunk-P63S7P6N.js} +1309 -69
  63. package/dist/chunk-P63S7P6N.js.map +1 -0
  64. package/dist/{chunk-YLEVMOK2.cjs → chunk-R66QG3XT.cjs} +5 -4
  65. package/dist/{chunk-YLEVMOK2.cjs.map → chunk-R66QG3XT.cjs.map} +1 -1
  66. package/dist/{chunk-I55HO32M.js → chunk-RJMCWT7Z.js} +3 -3
  67. package/dist/{chunk-I55HO32M.js.map → chunk-RJMCWT7Z.js.map} +1 -1
  68. package/dist/{chunk-TZTCIAYW.cjs → chunk-S3RMAXH5.cjs} +137 -25
  69. package/dist/chunk-S3RMAXH5.cjs.map +1 -0
  70. package/dist/{chunk-IBRW3UOA.js → chunk-TWLKXV2O.js} +3 -3
  71. package/dist/{chunk-IBRW3UOA.js.map → chunk-TWLKXV2O.js.map} +1 -1
  72. package/dist/{chunk-HUPDIRBX.js → chunk-UWA5MWCI.js} +949 -918
  73. package/dist/chunk-UWA5MWCI.js.map +1 -0
  74. package/dist/{chunk-RYVV5UVI.cjs → chunk-V4GILQR6.cjs} +4 -4
  75. package/dist/{chunk-RYVV5UVI.cjs.map → chunk-V4GILQR6.cjs.map} +1 -1
  76. package/dist/{chunk-XRCY75UV.cjs → chunk-V4RO5KYY.cjs} +951 -918
  77. package/dist/chunk-V4RO5KYY.cjs.map +1 -0
  78. package/dist/{chunk-VZ5LDNHK.cjs → chunk-VTSH4YPT.cjs} +12 -12
  79. package/dist/{chunk-VZ5LDNHK.cjs.map → chunk-VTSH4YPT.cjs.map} +1 -1
  80. package/dist/{chunk-UUBNQV2T.cjs → chunk-WQDIZH2Z.cjs} +12 -12
  81. package/dist/{chunk-UUBNQV2T.cjs.map → chunk-WQDIZH2Z.cjs.map} +1 -1
  82. package/dist/{chunk-EGSUMHCS.cjs → chunk-YB4XJY5L.cjs} +12 -12
  83. package/dist/{chunk-EGSUMHCS.cjs.map → chunk-YB4XJY5L.cjs.map} +1 -1
  84. package/dist/{chunk-JHDR56XO.js → chunk-YS6CGUNH.js} +3 -3
  85. package/dist/{chunk-JHDR56XO.js.map → chunk-YS6CGUNH.js.map} +1 -1
  86. package/dist/{chunk-NWPCY65Z.cjs → chunk-YVDUEUFV.cjs} +1311 -68
  87. package/dist/chunk-YVDUEUFV.cjs.map +1 -0
  88. package/dist/{types-BOAsqHoU.d.ts → diagnostics-DRxhodP6.d.cts} +74 -2
  89. package/dist/{types-BOAsqHoU.d.cts → diagnostics-DRxhodP6.d.ts} +74 -2
  90. package/dist/diagrams/blockdiagram/index.d.cts +1 -1
  91. package/dist/diagrams/blockdiagram/index.d.ts +1 -1
  92. package/dist/diagrams/circuit/index.cjs +8 -8
  93. package/dist/diagrams/circuit/index.d.cts +1 -1
  94. package/dist/diagrams/circuit/index.d.ts +1 -1
  95. package/dist/diagrams/circuit/index.js +2 -2
  96. package/dist/diagrams/ecomap/index.cjs +7 -7
  97. package/dist/diagrams/ecomap/index.d.cts +1 -1
  98. package/dist/diagrams/ecomap/index.d.ts +1 -1
  99. package/dist/diagrams/ecomap/index.js +2 -2
  100. package/dist/diagrams/entity/index.cjs +6 -6
  101. package/dist/diagrams/entity/index.d.cts +1 -1
  102. package/dist/diagrams/entity/index.d.ts +1 -1
  103. package/dist/diagrams/entity/index.js +2 -2
  104. package/dist/diagrams/fishbone/index.cjs +8 -8
  105. package/dist/diagrams/fishbone/index.d.cts +1 -1
  106. package/dist/diagrams/fishbone/index.d.ts +1 -1
  107. package/dist/diagrams/fishbone/index.js +2 -2
  108. package/dist/diagrams/flowchart/index.cjs +8 -8
  109. package/dist/diagrams/flowchart/index.d.cts +2 -2
  110. package/dist/diagrams/flowchart/index.d.ts +2 -2
  111. package/dist/diagrams/flowchart/index.js +2 -2
  112. package/dist/diagrams/genogram/index.cjs +9 -9
  113. package/dist/diagrams/genogram/index.d.cts +1 -1
  114. package/dist/diagrams/genogram/index.d.ts +1 -1
  115. package/dist/diagrams/genogram/index.js +2 -2
  116. package/dist/diagrams/ladder/index.cjs +6 -6
  117. package/dist/diagrams/ladder/index.d.cts +1 -1
  118. package/dist/diagrams/ladder/index.d.ts +1 -1
  119. package/dist/diagrams/ladder/index.js +2 -2
  120. package/dist/diagrams/logic/index.cjs +6 -6
  121. package/dist/diagrams/logic/index.d.cts +1 -1
  122. package/dist/diagrams/logic/index.d.ts +1 -1
  123. package/dist/diagrams/logic/index.js +2 -2
  124. package/dist/diagrams/orgchart/index.cjs +7 -7
  125. package/dist/diagrams/orgchart/index.d.cts +1 -1
  126. package/dist/diagrams/orgchart/index.d.ts +1 -1
  127. package/dist/diagrams/orgchart/index.js +2 -2
  128. package/dist/diagrams/pedigree/index.cjs +7 -7
  129. package/dist/diagrams/pedigree/index.d.cts +1 -1
  130. package/dist/diagrams/pedigree/index.d.ts +1 -1
  131. package/dist/diagrams/pedigree/index.js +2 -2
  132. package/dist/diagrams/phylo/index.cjs +7 -7
  133. package/dist/diagrams/phylo/index.d.cts +1 -1
  134. package/dist/diagrams/phylo/index.d.ts +1 -1
  135. package/dist/diagrams/phylo/index.js +2 -2
  136. package/dist/diagrams/sld/index.cjs +14 -6
  137. package/dist/diagrams/sld/index.d.cts +14 -2
  138. package/dist/diagrams/sld/index.d.ts +14 -2
  139. package/dist/diagrams/sld/index.js +2 -2
  140. package/dist/diagrams/sociogram/index.cjs +6 -6
  141. package/dist/diagrams/sociogram/index.d.cts +1 -1
  142. package/dist/diagrams/sociogram/index.d.ts +1 -1
  143. package/dist/diagrams/sociogram/index.js +2 -2
  144. package/dist/diagrams/timing/index.d.cts +1 -1
  145. package/dist/diagrams/timing/index.d.ts +1 -1
  146. package/dist/diagrams/venn/index.cjs +9 -9
  147. package/dist/diagrams/venn/index.d.cts +1 -1
  148. package/dist/diagrams/venn/index.d.ts +1 -1
  149. package/dist/diagrams/venn/index.js +2 -2
  150. package/dist/{index-CJai_TEZ.d.ts → index-BRIkOPnd.d.cts} +60 -2
  151. package/dist/{index-C9A0h-CB.d.cts → index-C7SN-FB3.d.ts} +60 -2
  152. package/dist/index.cjs +351 -51
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.d.cts +38 -4
  155. package/dist/index.d.ts +38 -4
  156. package/dist/index.js +283 -16
  157. package/dist/index.js.map +1 -1
  158. package/dist/react.cjs +21 -23
  159. package/dist/react.cjs.map +1 -1
  160. package/dist/react.d.cts +3 -2
  161. package/dist/react.d.ts +3 -2
  162. package/dist/react.js +21 -23
  163. package/dist/react.js.map +1 -1
  164. package/dist/tools-BVeUNdsU.d.ts +161 -0
  165. package/dist/tools-DdhP1kWY.d.cts +161 -0
  166. package/package.json +2 -2
  167. package/dist/chunk-2VNMKOUO.js.map +0 -1
  168. package/dist/chunk-3M6WB62Y.cjs.map +0 -1
  169. package/dist/chunk-3YUUC6RN.cjs.map +0 -1
  170. package/dist/chunk-6OSUNBZY.js.map +0 -1
  171. package/dist/chunk-D7EHZFK4.cjs.map +0 -1
  172. package/dist/chunk-GTDQAN2Z.js.map +0 -1
  173. package/dist/chunk-HUPDIRBX.js.map +0 -1
  174. package/dist/chunk-IM4RCUHA.js.map +0 -1
  175. package/dist/chunk-NWPCY65Z.cjs.map +0 -1
  176. package/dist/chunk-QTNPMIO2.cjs.map +0 -1
  177. package/dist/chunk-TZTCIAYW.cjs.map +0 -1
  178. package/dist/chunk-UFTYX73U.js.map +0 -1
  179. package/dist/chunk-VJGMEGMR.js.map +0 -1
  180. package/dist/chunk-XRCY75UV.cjs.map +0 -1
package/README.md CHANGED
@@ -29,15 +29,16 @@
29
29
 
30
30
  ---
31
31
 
32
- **Schematex** is the open-source rendering engine for the diagrams professionals actually use — medical, electrical, legal, and analytical. 30 diagram families across nine domains:
32
+ **Schematex** is the open-source rendering engine for the diagrams professionals actually use — medical, electrical, legal, and analytical. 33 diagram families across ten domains:
33
33
 
34
34
  - 👪 **Relationships** — genograms, ecomaps, pedigrees, sociograms, phylogenetic trees
35
35
  - ⚡ **Electrical & Industrial** — ladder logic, single-line diagrams, circuit schematics, logic gates, timing, block diagrams, **FBD**, **SFC**, breadboard, **P&ID** (ISA-5.1)
36
36
  - 🏢 **Corporate & Legal** — entity structures, cap tables
37
37
  - 🐟 **Causality & Analysis** — fishbone / Ishikawa, decision trees (Howard-Raiffa EV · CART/sklearn · taxonomy)
38
- - 🔄 **Behavior modeling** — UML 2.5 / Harel **state diagrams** (Mermaid-compatible superset), **BPMN 2.0** (OMG), **use case diagrams** (UML 2.5.1 §18)
38
+ - 🔄 **Behavior modeling** — UML 2.5 / Harel **state diagrams** (Mermaid-compatible superset), **BPMN 2.0** (OMG), **use case diagrams** (UML 2.5.1 §18), **sequence diagrams** (UML 2.5.1 §17 — all 12 combined fragments + `ref`)
39
39
  - 🗄️ **Data modeling** — ERD crow's-foot notation
40
40
  - 🗓️ **Project management** — **PERT / CPM** networks (PMBOK 7) that *compute* the schedule: ES/EF/LS/LF, slack, critical path, three-point estimation, swimlanes, time-scaled layout
41
+ - 🖧 **Network & Infrastructure** — **network topology** diagrams (Cisco-convention icons) with device/link/port integrity, IP-CCTV camera systems, three-tier campus, spine-leaf fabric, subnets & VLANs
41
42
  - 📅 **Timelines** — proportional / equidistant / log axis · swimlane · gantt · lollipop · BC dates · geological Ma scale
42
43
 
43
44
  Mermaid draws generic flowcharts. Schematex draws the diagrams doctors, engineers, and lawyers actually use — a genogram a genetic counselor accepts clinically, ladder logic that maps 1:1 to IEC 61131-3, a cap table that survives a Series A review.
@@ -73,7 +74,7 @@ import { render } from 'schematex/genogram';
73
74
 
74
75
  ## Gallery
75
76
 
76
- 30 diagram types, one unified pipeline. **Try any of these live at [schematex.dev/playground](https://schematex.dev/playground).**
77
+ 31 diagram types, one unified pipeline. **Try any of these live at [schematex.dev/playground](https://schematex.dev/playground).**
77
78
 
78
79
  ### 👪 Genogram — *McGoldrick family-systems standard*
79
80
 
@@ -502,6 +503,79 @@ task G "Launch event" duration: 2 after: E, F
502
503
 
503
504
  [PERT / CPM syntax →](https://schematex.dev/docs/pert)
504
505
 
506
+ ---
507
+
508
+ ### ◉ Petri net — *Murata 1989 / ISO-IEC 15909 place-transition net*
509
+
510
+ The only text-DSL Petri net tool that **understands the dynamics**, not just the shapes. You declare places (circles holding tokens), transitions (bars), and weighted arcs; the engine validates the bipartite structure, computes which transitions are *enabled* under the marking (highlighted green), and can `fire:` a sequence forward to render any reachable marking. Immediate vs. timed transitions, arc weights, capacity, and inhibitor / read / reset arcs — the recognised concurrency vocabulary.
511
+
512
+ ```
513
+ petri "Mutual Exclusion — two processes, one resource"
514
+ place idleA *1 "A idle"
515
+ place idleB *1 "B idle"
516
+ place mutex *1 "resource"
517
+ place critA "A critical"
518
+ place critB "B critical"
519
+ transition enterA
520
+ transition exitA
521
+ transition enterB
522
+ transition exitB
523
+ idleA -> enterA
524
+ mutex -> enterA
525
+ enterA -> critA
526
+ critA -> exitA
527
+ exitA -> idleA
528
+ exitA -> mutex
529
+ idleB -> enterB
530
+ mutex -> enterB
531
+ enterB -> critB
532
+ critB -> exitB
533
+ exitB -> idleB
534
+ exitB -> mutex
535
+ ```
536
+
537
+ ![Mutual Exclusion Petri Net](examples/petri/mutual-exclusion.svg)
538
+
539
+ [Petri net syntax →](https://schematex.dev/docs/petri)
540
+
541
+ ---
542
+
543
+ ### 🖧 Network topology — *Cisco-convention icons · device / link / port integrity*
544
+
545
+ The free, text-first, zero-dependency network-diagram engine. Declare typed devices (router, switch, firewall, AP, server, **IP camera / NVR / PoE switch**, …) and typed annotated links (copper / fiber / wireless / serial / **PoE** / VPN / LAG, carrying VLAN / speed / port / mode), group them into sites, racks, subnets and VLANs, and let the engine lay out the topology class correctly — `tiered` (three-tier campus), `star`, `ring`, `bus`, `mesh`, `spine-leaf` (auto-meshed Clos), or `tree`. Unlike an LLM emitting raw Mermaid, it **never drops a device, a port, or a link**, and it validates IP-in-subnet and VLAN ranges.
546
+
547
+ ```
548
+ network "Acme HQ — CCTV"
549
+ layout: tiered
550
+ internet net "Internet"
551
+ firewall fw1 "Perimeter FW" tier: edge
552
+ l3switch core1 "Core SW" tier: core
553
+ poeswitch poe1 "PoE Switch A" tier: access
554
+ poeswitch poe2 "PoE Switch B" tier: access
555
+ nvr nvr1 "Video Recorder"
556
+ monitor wall1 "Guard Station"
557
+ subnet cams "192.168.20.0/24" {
558
+ camera cam1 "Lobby Dome" type: dome ip: 192.168.20.11
559
+ camera cam2 "Gate PTZ" type: ptz ip: 192.168.20.12
560
+ camera cam3 "Dock Bullet" type: bullet ip: 192.168.20.13
561
+ poe1
562
+ poe2
563
+ }
564
+ net -- fw1 : wan "ISP 1Gbps"
565
+ fw1 -- core1 : fiber 10G
566
+ core1 -- poe1 : trunk vlan: 20 1G
567
+ core1 -- poe2 : trunk vlan: 20 1G
568
+ core1 -- nvr1 : 1G
569
+ core1 -- wall1
570
+ poe1 -- cam1 : poe
571
+ poe1 -- cam2 : poe
572
+ poe2 -- cam3 : poe
573
+ ```
574
+
575
+ ![CCTV camera network topology](examples/network/cctv-camera-network.svg)
576
+
577
+ [Network topology syntax →](https://schematex.dev/docs/network)
578
+
505
579
  ## Why SchemaTex?
506
580
 
507
581
  **Generic flowchart tools can't draw professional diagrams.** Every diagram domain has published standards — symbol conventions, layout rules, labelling grammars — and when you ignore them, domain experts reject the output:
@@ -538,16 +612,24 @@ Written by humans, shaped by what LLMs get wrong.
538
612
 
539
613
  ```ts
540
614
  // Universal entry — auto-detects diagram type from first keyword
541
- import { render, parse } from 'schematex';
615
+ import { render, renderPreview, renderResult, parse, parseResult } from 'schematex';
542
616
 
543
- const svg = render(text, config?); // → SVG string
544
- const ast = parse(text, config?); // → AST (JSON-serializable)
617
+ const svg = render(text, config?); // strict → SVG string or throw
618
+ const ast = parse(text, config?); // strict → AST or throw
619
+ const previewSvg = renderPreview(text, config?); // always → SVG, including a visible diagnostic fallback
620
+ const renderState = renderResult(text, config?); // → SVG + diagnostics + valid/partial/invalid status
621
+ const parseState = parseResult(text, config?); // → AST or diagnostics without throwing
545
622
 
546
623
  // Per-diagram tree-shaking
547
624
  import { render } from 'schematex/genogram';
548
625
 
549
626
  // Browser DOM
550
- import { renderToElement, renderToContainer } from 'schematex/browser';
627
+ import {
628
+ renderToElement,
629
+ renderToContainer,
630
+ renderPreviewToElement,
631
+ renderPreviewToContainer,
632
+ } from 'schematex/browser';
551
633
  container.appendChild(renderToElement(dsl));
552
634
 
553
635
  // React
@@ -1,27 +1,27 @@
1
1
  'use strict';
2
2
 
3
- var chunkNWPCY65Z_cjs = require('../chunk-NWPCY65Z.cjs');
4
- require('../chunk-3YUUC6RN.cjs');
5
- require('../chunk-QUKVGHN4.cjs');
6
- require('../chunk-XRCY75UV.cjs');
3
+ var chunkYVDUEUFV_cjs = require('../chunk-YVDUEUFV.cjs');
4
+ require('../chunk-25ZON47K.cjs');
5
+ require('../chunk-FKJBXGWP.cjs');
6
+ require('../chunk-V4RO5KYY.cjs');
7
7
  require('../chunk-SUIDD2C5.cjs');
8
- require('../chunk-N7W5KZK7.cjs');
9
- require('../chunk-3M6WB62Y.cjs');
8
+ require('../chunk-2L4YXZAZ.cjs');
9
+ require('../chunk-ECD5XHBM.cjs');
10
10
  require('../chunk-SBB6C4OP.cjs');
11
- require('../chunk-RYVV5UVI.cjs');
12
- require('../chunk-VFZOPRQP.cjs');
13
- require('../chunk-BW4KGTV7.cjs');
14
- require('../chunk-QTNPMIO2.cjs');
15
- require('../chunk-TZTCIAYW.cjs');
16
- require('../chunk-VZ5LDNHK.cjs');
17
- require('../chunk-EGSUMHCS.cjs');
11
+ require('../chunk-V4GILQR6.cjs');
12
+ require('../chunk-HWVBHU3O.cjs');
13
+ require('../chunk-C5C5EF3W.cjs');
14
+ require('../chunk-6JI6FWLZ.cjs');
15
+ require('../chunk-S3RMAXH5.cjs');
16
+ require('../chunk-VTSH4YPT.cjs');
17
+ require('../chunk-YB4XJY5L.cjs');
18
18
  require('../chunk-3KRL2EGN.cjs');
19
- require('../chunk-S2KJRHDZ.cjs');
20
- require('../chunk-UUBNQV2T.cjs');
19
+ require('../chunk-4UFR2LB6.cjs');
20
+ require('../chunk-WQDIZH2Z.cjs');
21
21
  require('../chunk-5UCXMYE7.cjs');
22
22
  require('../chunk-ST5YRTTV.cjs');
23
- require('../chunk-YLEVMOK2.cjs');
24
- require('../chunk-D7EHZFK4.cjs');
23
+ require('../chunk-R66QG3XT.cjs');
24
+ require('../chunk-L7POWM5B.cjs');
25
25
  require('../chunk-NAGUZFXX.cjs');
26
26
  require('../chunk-3WNW5Y7P.cjs');
27
27
  var ai = require('ai');
@@ -31,16 +31,22 @@ var schematexTools = {
31
31
  listDiagrams: ai.tool({
32
32
  description: "List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.",
33
33
  inputSchema: zod.z.object({}),
34
- execute: async () => chunkNWPCY65Z_cjs.listDiagrams()
34
+ execute: async () => chunkYVDUEUFV_cjs.listDiagrams()
35
35
  }),
36
36
  getSyntax: ai.tool({
37
- description: "Return a compact syntax reference for one diagram type \u2014 rules, grammar (EBNF), and inline examples. Trimmed for LLM consumption (~2,000\u20134,000 tokens). Call after listDiagrams once you've chosen a type.",
37
+ description: "Return syntax for one diagram type. Default `detail: canonical` is the compact first-shot generation path: canonical header, preferred forms, rules, and repair checks. Request `detail: reference` only for advanced forms or imported adapters after choosing a type.",
38
38
  inputSchema: zod.z.object({
39
39
  type: zod.z.string().describe(
40
40
  "Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone')."
41
+ ),
42
+ detail: zod.z.enum(["canonical", "reference"]).optional().describe(
43
+ "Default `canonical` is best for generation. Use `reference` for the fuller grammar/tutorial."
41
44
  )
42
45
  }),
43
- execute: async ({ type }) => chunkNWPCY65Z_cjs.getSyntax(type)
46
+ execute: async ({
47
+ type,
48
+ detail
49
+ }) => chunkYVDUEUFV_cjs.getSyntax(type, { detail })
44
50
  }),
45
51
  getExamples: ai.tool({
46
52
  description: "Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.",
@@ -50,26 +56,26 @@ var schematexTools = {
50
56
  preferFeatured: zod.z.boolean().optional().describe("Rank featured examples first."),
51
57
  maxComplexity: zod.z.number().int().min(1).max(5).optional().describe("Only return examples with complexity <= this value (1=simplest).")
52
58
  }),
53
- execute: async (args) => chunkNWPCY65Z_cjs.getExamples(args.type, {
59
+ execute: async (args) => chunkYVDUEUFV_cjs.getExamples(args.type, {
54
60
  limit: args.limit,
55
61
  preferFeatured: args.preferFeatured,
56
62
  maxComplexity: args.maxComplexity
57
63
  })
58
64
  }),
59
65
  validateDsl: ai.tool({
60
- description: "Validate Schematex DSL. Returns { ok: true } or { ok: false, errors: [{line, column, message, source}] }. Call before returning DSL to the user and self-correct on errors.",
66
+ description: "Validate Schematex DSL. Pass the selected diagram `type` whenever you know it. Returns { ok: true } or { ok: false, errors: [{line, column, message, source, hint}] }. Call before returning DSL and self-correct on errors.",
61
67
  inputSchema: zod.z.object({
62
68
  type: zod.z.string().optional().describe(
63
- "Diagram type. Optional \u2014 Schematex auto-detects from the first line if omitted."
69
+ "Selected diagram type. Optional for adapters/autodetect, but explicit canonical types are more robust."
64
70
  ),
65
71
  dsl: zod.z.string().describe("The DSL source text to validate.")
66
72
  }),
67
- execute: async ({ type, dsl }) => chunkNWPCY65Z_cjs.validateDsl(type, dsl)
73
+ execute: async ({ type, dsl }) => chunkYVDUEUFV_cjs.validateDsl(type, dsl)
68
74
  }),
69
75
  renderDsl: ai.tool({
70
76
  description: "Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.",
71
77
  inputSchema: zod.z.object({
72
- type: zod.z.string().optional().describe("Diagram type (auto-detected if omitted)."),
78
+ type: zod.z.string().optional().describe("Selected diagram type. Prefer passing it once chosen."),
73
79
  dsl: zod.z.string().describe("The DSL source text to render."),
74
80
  theme: zod.z.string().optional().describe("Theme name, e.g. 'default' or 'dark'."),
75
81
  padding: zod.z.number().optional().describe("Outer padding in pixels.")
@@ -79,7 +85,7 @@ var schematexTools = {
79
85
  dsl,
80
86
  theme,
81
87
  padding
82
- }) => chunkNWPCY65Z_cjs.renderDsl(type, dsl, { theme, padding })
88
+ }) => chunkYVDUEUFV_cjs.renderDsl(type, dsl, { theme, padding })
83
89
  })
84
90
  };
85
91
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ai/ai-sdk.ts"],"names":["tool","z","listDiagrams","getSyntax","getExamples","validateDsl","renderDsl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,IAAM,cAAA,GAAiB;AAAA,EAC5B,cAAcA,OAAA,CAAK;AAAA,IACjB,WAAA,EACE,8JAAA;AAAA,IACF,WAAA,EAAaC,KAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACxB,OAAA,EAAS,YAAYC,8BAAA;AAAiB,GACvC,CAAA;AAAA,EAED,WAAWF,OAAA,CAAK;AAAA,IACd,WAAA,EACE,sNAAA;AAAA,IACF,WAAA,EAAaC,MAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAMA,KAAA,CACH,MAAA,EAAO,CACP,QAAA;AAAA,QACC;AAAA;AACF,KACH,CAAA;AAAA,IACD,SAAS,OAAO,EAAE,IAAA,EAAK,KAAwBE,4BAAc,IAAI;AAAA,GAClE,CAAA;AAAA,EAED,aAAaH,OAAA,CAAK;AAAA,IAChB,WAAA,EACE,8IAAA;AAAA,IACF,WAAA,EAAaC,MAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA,MAC5C,KAAA,EAAOA,KAAA,CACJ,MAAA,EAAO,CACP,KAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,IAAI,EAAE,CAAA,CACN,QAAA,EAAS,CACT,SAAS,qCAAqC,CAAA;AAAA,MACjD,gBAAgBA,KAAA,CACb,OAAA,GACA,QAAA,EAAS,CACT,SAAS,+BAA+B,CAAA;AAAA,MAC3C,aAAA,EAAeA,KAAA,CACZ,MAAA,EAAO,CACP,KAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,IAAI,CAAC,CAAA,CACL,QAAA,EAAS,CACT,SAAS,kEAAkE;AAAA,KAC/E,CAAA;AAAA,IACD,OAAA,EAAS,OAAO,IAAA,KAMdG,6BAAA,CAAgB,KAAK,IAAA,EAAM;AAAA,MACzB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,gBAAgB,IAAA,CAAK,cAAA;AAAA,MACrB,eAAe,IAAA,CAAK;AAAA,KACrB;AAAA,GACJ,CAAA;AAAA,EAED,aAAaJ,OAAA,CAAK;AAAA,IAChB,WAAA,EACE,6KAAA;AAAA,IACF,WAAA,EAAaC,MAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAMA,KAAA,CACH,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,QACC;AAAA,OACF;AAAA,MACF,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kCAAkC;AAAA,KAC5D,CAAA;AAAA,IACD,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,KAAI,KAC1BI,6BAAA,CAAgB,MAAM,GAAG;AAAA,GAC5B,CAAA;AAAA,EAED,WAAWL,OAAA,CAAK;AAAA,IACd,WAAA,EACE,sKAAA;AAAA,IACF,WAAA,EAAaC,MAAE,MAAA,CAAO;AAAA,MACpB,MAAMA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,MAC/E,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gCAAgC,CAAA;AAAA,MACzD,OAAOA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,MAC7E,SAASA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA,KACnE,CAAA;AAAA,IACD,SAAS,OAAO;AAAA,MACd,IAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,UAMIK,2BAAA,CAAc,IAAA,EAAM,KAAK,EAAE,KAAA,EAAO,SAAS;AAAA,GAClD;AACH","file":"ai-sdk.cjs","sourcesContent":["/**\n * Vercel AI SDK adapter — ready-to-use `tools` object for `generateText` /\n * `streamText`.\n *\n * @example\n * ```ts\n * import { streamText } from 'ai';\n * import { schematexTools } from 'schematex/ai/sdk';\n *\n * const result = streamText({\n * model: 'anthropic/claude-opus-4-7',\n * tools: schematexTools,\n * maxSteps: 5,\n * system: `You write Schematex DSL. Discover types with listDiagrams,\n * then fetch getSyntax + getExamples before writing. Call validateDsl\n * before returning DSL to the user.`,\n * prompt: userMessage,\n * });\n * ```\n *\n * Peer-deps `ai` and `zod` are optional — this module only loads if both\n * are installed.\n */\nimport { tool } from \"ai\";\nimport { z } from \"zod\";\n\nimport {\n listDiagrams as listDiagramsImpl,\n getSyntax as getSyntaxImpl,\n getExamples as getExamplesImpl,\n validateDsl as validateDslImpl,\n renderDsl as renderDslImpl,\n} from \"./tools\";\n\nexport const schematexTools = {\n listDiagrams: tool({\n description:\n \"List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.\",\n inputSchema: z.object({}),\n execute: async () => listDiagramsImpl(),\n }),\n\n getSyntax: tool({\n description:\n \"Return a compact syntax reference for one diagram type rules, grammar (EBNF), and inline examples. Trimmed for LLM consumption (~2,000–4,000 tokens). Call after listDiagrams once you've chosen a type.\",\n inputSchema: z.object({\n type: z\n .string()\n .describe(\n \"Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone').\"\n ),\n }),\n execute: async ({ type }: { type: string }) => getSyntaxImpl(type),\n }),\n\n getExamples: tool({\n description:\n \"Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.\",\n inputSchema: z.object({\n type: z.string().describe(\"Diagram type id.\"),\n limit: z\n .number()\n .int()\n .min(1)\n .max(10)\n .optional()\n .describe(\"Max examples to return (default 5).\"),\n preferFeatured: z\n .boolean()\n .optional()\n .describe(\"Rank featured examples first.\"),\n maxComplexity: z\n .number()\n .int()\n .min(1)\n .max(5)\n .optional()\n .describe(\"Only return examples with complexity <= this value (1=simplest).\"),\n }),\n execute: async (args: {\n type: string;\n limit?: number;\n preferFeatured?: boolean;\n maxComplexity?: number;\n }) =>\n getExamplesImpl(args.type, {\n limit: args.limit,\n preferFeatured: args.preferFeatured,\n maxComplexity: args.maxComplexity,\n }),\n }),\n\n validateDsl: tool({\n description:\n \"Validate Schematex DSL. Returns { ok: true } or { ok: false, errors: [{line, column, message, source}] }. Call before returning DSL to the user and self-correct on errors.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\n \"Diagram type. Optional Schematex auto-detects from the first line if omitted.\"\n ),\n dsl: z.string().describe(\"The DSL source text to validate.\"),\n }),\n execute: async ({ type, dsl }: { type?: string; dsl: string }) =>\n validateDslImpl(type, dsl),\n }),\n\n renderDsl: tool({\n description:\n \"Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.\",\n inputSchema: z.object({\n type: z.string().optional().describe(\"Diagram type (auto-detected if omitted).\"),\n dsl: z.string().describe(\"The DSL source text to render.\"),\n theme: z.string().optional().describe(\"Theme name, e.g. 'default' or 'dark'.\"),\n padding: z.number().optional().describe(\"Outer padding in pixels.\"),\n }),\n execute: async ({\n type,\n dsl,\n theme,\n padding,\n }: {\n type?: string;\n dsl: string;\n theme?: string;\n padding?: number;\n }) => renderDslImpl(type, dsl, { theme, padding }),\n }),\n} as const;\n\nexport type SchematexTools = typeof schematexTools;\n"]}
1
+ {"version":3,"sources":["../../src/ai/ai-sdk.ts"],"names":["tool","z","listDiagrams","getSyntax","getExamples","validateDsl","renderDsl"],"mappings":"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","file":"ai-sdk.cjs","sourcesContent":["/**\n * Vercel AI SDK adapter — ready-to-use `tools` object for `generateText` /\n * `streamText`.\n *\n * @example\n * ```ts\n * import { streamText } from 'ai';\n * import { schematexTools } from 'schematex/ai/sdk';\n *\n * const result = streamText({\n * model: 'anthropic/claude-opus-4-7',\n * tools: schematexTools,\n * maxSteps: 5,\n * system: `You write Schematex DSL. Discover types with listDiagrams,\n * then fetch getSyntax + getExamples before writing. Call validateDsl\n * before returning DSL to the user.`,\n * prompt: userMessage,\n * });\n * ```\n *\n * Peer-deps `ai` and `zod` are optional — this module only loads if both\n * are installed.\n */\nimport { tool } from \"ai\";\nimport { z } from \"zod\";\n\nimport {\n listDiagrams as listDiagramsImpl,\n getSyntax as getSyntaxImpl,\n getExamples as getExamplesImpl,\n validateDsl as validateDslImpl,\n renderDsl as renderDslImpl,\n} from \"./tools\";\n\nexport const schematexTools = {\n listDiagrams: tool({\n description:\n \"List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.\",\n inputSchema: z.object({}),\n execute: async () => listDiagramsImpl(),\n }),\n\n getSyntax: tool({\n description:\n \"Return syntax for one diagram type. Default `detail: canonical` is the compact first-shot generation path: canonical header, preferred forms, rules, and repair checks. Request `detail: reference` only for advanced forms or imported adapters after choosing a type.\",\n inputSchema: z.object({\n type: z\n .string()\n .describe(\n \"Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone').\"\n ),\n detail: z\n .enum([\"canonical\", \"reference\"])\n .optional()\n .describe(\n \"Default `canonical` is best for generation. Use `reference` for the fuller grammar/tutorial.\"\n ),\n }),\n execute: async ({\n type,\n detail,\n }: {\n type: string;\n detail?: \"canonical\" | \"reference\";\n }) => getSyntaxImpl(type, { detail }),\n }),\n\n getExamples: tool({\n description:\n \"Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.\",\n inputSchema: z.object({\n type: z.string().describe(\"Diagram type id.\"),\n limit: z\n .number()\n .int()\n .min(1)\n .max(10)\n .optional()\n .describe(\"Max examples to return (default 5).\"),\n preferFeatured: z\n .boolean()\n .optional()\n .describe(\"Rank featured examples first.\"),\n maxComplexity: z\n .number()\n .int()\n .min(1)\n .max(5)\n .optional()\n .describe(\"Only return examples with complexity <= this value (1=simplest).\"),\n }),\n execute: async (args: {\n type: string;\n limit?: number;\n preferFeatured?: boolean;\n maxComplexity?: number;\n }) =>\n getExamplesImpl(args.type, {\n limit: args.limit,\n preferFeatured: args.preferFeatured,\n maxComplexity: args.maxComplexity,\n }),\n }),\n\n validateDsl: tool({\n description:\n \"Validate Schematex DSL. Pass the selected diagram `type` whenever you know it. Returns { ok: true } or { ok: false, errors: [{line, column, message, source, hint}] }. Call before returning DSL and self-correct on errors.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\n \"Selected diagram type. Optional for adapters/autodetect, but explicit canonical types are more robust.\"\n ),\n dsl: z.string().describe(\"The DSL source text to validate.\"),\n }),\n execute: async ({ type, dsl }: { type?: string; dsl: string }) =>\n validateDslImpl(type, dsl),\n }),\n\n renderDsl: tool({\n description:\n \"Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\"Selected diagram type. Prefer passing it once chosen.\"),\n dsl: z.string().describe(\"The DSL source text to render.\"),\n theme: z.string().optional().describe(\"Theme name, e.g. 'default' or 'dark'.\"),\n padding: z.number().optional().describe(\"Outer padding in pixels.\"),\n }),\n execute: async ({\n type,\n dsl,\n theme,\n padding,\n }: {\n type?: string;\n dsl: string;\n theme?: string;\n padding?: number;\n }) => renderDslImpl(type, dsl, { theme, padding }),\n }),\n} as const;\n\nexport type SchematexTools = typeof schematexTools;\n"]}
@@ -1,12 +1,13 @@
1
1
  import * as ai from 'ai';
2
- import { DiagramListItem, GetSyntaxResult, GetExamplesResult, ValidateDslResult, RenderDslResult } from './index.cjs';
3
- import '../api-C5UcmT7n.cjs';
4
- import '../types-BOAsqHoU.cjs';
2
+ import { c as DiagramListItem, g as GetSyntaxResult, e as GetExamplesResult, V as ValidateDslResult, R as RenderDslResult } from '../tools-DdhP1kWY.cjs';
3
+ import '../api-qVDutqXH.cjs';
4
+ import '../diagnostics-DRxhodP6.cjs';
5
5
 
6
6
  declare const schematexTools: {
7
7
  readonly listDiagrams: ai.Tool<{}, DiagramListItem[]>;
8
8
  readonly getSyntax: ai.Tool<{
9
9
  type: string;
10
+ detail?: "canonical" | "reference" | undefined;
10
11
  }, GetSyntaxResult>;
11
12
  readonly getExamples: ai.Tool<{
12
13
  type: string;
@@ -1,12 +1,13 @@
1
1
  import * as ai from 'ai';
2
- import { DiagramListItem, GetSyntaxResult, GetExamplesResult, ValidateDslResult, RenderDslResult } from './index.js';
3
- import '../api-C5UcmT7n.js';
4
- import '../types-BOAsqHoU.js';
2
+ import { c as DiagramListItem, g as GetSyntaxResult, e as GetExamplesResult, V as ValidateDslResult, R as RenderDslResult } from '../tools-BVeUNdsU.js';
3
+ import '../api-XWHHAhQI.js';
4
+ import '../diagnostics-DRxhodP6.js';
5
5
 
6
6
  declare const schematexTools: {
7
7
  readonly listDiagrams: ai.Tool<{}, DiagramListItem[]>;
8
8
  readonly getSyntax: ai.Tool<{
9
9
  type: string;
10
+ detail?: "canonical" | "reference" | undefined;
10
11
  }, GetSyntaxResult>;
11
12
  readonly getExamples: ai.Tool<{
12
13
  type: string;
package/dist/ai/ai-sdk.js CHANGED
@@ -1,25 +1,25 @@
1
- import { renderDsl, validateDsl, getExamples, getSyntax, listDiagrams } from '../chunk-IM4RCUHA.js';
2
- import '../chunk-GTDQAN2Z.js';
3
- import '../chunk-I55HO32M.js';
4
- import '../chunk-HUPDIRBX.js';
1
+ import { renderDsl, validateDsl, getExamples, getSyntax, listDiagrams } from '../chunk-P63S7P6N.js';
2
+ import '../chunk-7AFW2J6J.js';
3
+ import '../chunk-RJMCWT7Z.js';
4
+ import '../chunk-UWA5MWCI.js';
5
5
  import '../chunk-EPKIJEH7.js';
6
- import '../chunk-IBRW3UOA.js';
7
- import '../chunk-6OSUNBZY.js';
6
+ import '../chunk-TWLKXV2O.js';
7
+ import '../chunk-LGABFD3L.js';
8
8
  import '../chunk-PIV2A3HG.js';
9
- import '../chunk-SZK376QB.js';
10
- import '../chunk-3M6T7KB4.js';
11
- import '../chunk-L3CTXXVZ.js';
12
- import '../chunk-UFTYX73U.js';
13
- import '../chunk-VJGMEGMR.js';
14
- import '../chunk-JHDR56XO.js';
15
- import '../chunk-ZL5RB4UV.js';
9
+ import '../chunk-H4MT5TJP.js';
10
+ import '../chunk-HAZALB7U.js';
11
+ import '../chunk-FBS3PACU.js';
12
+ import '../chunk-7F76AWOI.js';
13
+ import '../chunk-DOK7LKLO.js';
14
+ import '../chunk-YS6CGUNH.js';
15
+ import '../chunk-N5B242WY.js';
16
16
  import '../chunk-2KTQ75LN.js';
17
- import '../chunk-VDSYMSUY.js';
18
- import '../chunk-ZX74KJPM.js';
17
+ import '../chunk-MVIEIKOI.js';
18
+ import '../chunk-3VB5AT4R.js';
19
19
  import '../chunk-FO7BLCEW.js';
20
20
  import '../chunk-6URNSB6G.js';
21
- import '../chunk-ZYRCPSBU.js';
22
- import '../chunk-2VNMKOUO.js';
21
+ import '../chunk-3IE7KZY4.js';
22
+ import '../chunk-LRI4RH2N.js';
23
23
  import '../chunk-5IKOLUWK.js';
24
24
  import '../chunk-SYYBKDL7.js';
25
25
  import { tool } from 'ai';
@@ -32,13 +32,19 @@ var schematexTools = {
32
32
  execute: async () => listDiagrams()
33
33
  }),
34
34
  getSyntax: tool({
35
- description: "Return a compact syntax reference for one diagram type \u2014 rules, grammar (EBNF), and inline examples. Trimmed for LLM consumption (~2,000\u20134,000 tokens). Call after listDiagrams once you've chosen a type.",
35
+ description: "Return syntax for one diagram type. Default `detail: canonical` is the compact first-shot generation path: canonical header, preferred forms, rules, and repair checks. Request `detail: reference` only for advanced forms or imported adapters after choosing a type.",
36
36
  inputSchema: z.object({
37
37
  type: z.string().describe(
38
38
  "Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone')."
39
+ ),
40
+ detail: z.enum(["canonical", "reference"]).optional().describe(
41
+ "Default `canonical` is best for generation. Use `reference` for the fuller grammar/tutorial."
39
42
  )
40
43
  }),
41
- execute: async ({ type }) => getSyntax(type)
44
+ execute: async ({
45
+ type,
46
+ detail
47
+ }) => getSyntax(type, { detail })
42
48
  }),
43
49
  getExamples: tool({
44
50
  description: "Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.",
@@ -55,10 +61,10 @@ var schematexTools = {
55
61
  })
56
62
  }),
57
63
  validateDsl: tool({
58
- description: "Validate Schematex DSL. Returns { ok: true } or { ok: false, errors: [{line, column, message, source}] }. Call before returning DSL to the user and self-correct on errors.",
64
+ description: "Validate Schematex DSL. Pass the selected diagram `type` whenever you know it. Returns { ok: true } or { ok: false, errors: [{line, column, message, source, hint}] }. Call before returning DSL and self-correct on errors.",
59
65
  inputSchema: z.object({
60
66
  type: z.string().optional().describe(
61
- "Diagram type. Optional \u2014 Schematex auto-detects from the first line if omitted."
67
+ "Selected diagram type. Optional for adapters/autodetect, but explicit canonical types are more robust."
62
68
  ),
63
69
  dsl: z.string().describe("The DSL source text to validate.")
64
70
  }),
@@ -67,7 +73,7 @@ var schematexTools = {
67
73
  renderDsl: tool({
68
74
  description: "Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.",
69
75
  inputSchema: z.object({
70
- type: z.string().optional().describe("Diagram type (auto-detected if omitted)."),
76
+ type: z.string().optional().describe("Selected diagram type. Prefer passing it once chosen."),
71
77
  dsl: z.string().describe("The DSL source text to render."),
72
78
  theme: z.string().optional().describe("Theme name, e.g. 'default' or 'dark'."),
73
79
  padding: z.number().optional().describe("Outer padding in pixels.")
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ai/ai-sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,IAAM,cAAA,GAAiB;AAAA,EAC5B,cAAc,IAAA,CAAK;AAAA,IACjB,WAAA,EACE,8JAAA;AAAA,IACF,WAAA,EAAa,CAAA,CAAE,MAAA,CAAO,EAAE,CAAA;AAAA,IACxB,OAAA,EAAS,YAAY,YAAA;AAAiB,GACvC,CAAA;AAAA,EAED,WAAW,IAAA,CAAK;AAAA,IACd,WAAA,EACE,sNAAA;AAAA,IACF,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAM,CAAA,CACH,MAAA,EAAO,CACP,QAAA;AAAA,QACC;AAAA;AACF,KACH,CAAA;AAAA,IACD,SAAS,OAAO,EAAE,IAAA,EAAK,KAAwB,UAAc,IAAI;AAAA,GAClE,CAAA;AAAA,EAED,aAAa,IAAA,CAAK;AAAA,IAChB,WAAA,EACE,8IAAA;AAAA,IACF,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kBAAkB,CAAA;AAAA,MAC5C,KAAA,EAAO,CAAA,CACJ,MAAA,EAAO,CACP,KAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,IAAI,EAAE,CAAA,CACN,QAAA,EAAS,CACT,SAAS,qCAAqC,CAAA;AAAA,MACjD,gBAAgB,CAAA,CACb,OAAA,GACA,QAAA,EAAS,CACT,SAAS,+BAA+B,CAAA;AAAA,MAC3C,aAAA,EAAe,CAAA,CACZ,MAAA,EAAO,CACP,KAAI,CACJ,GAAA,CAAI,CAAC,CAAA,CACL,IAAI,CAAC,CAAA,CACL,QAAA,EAAS,CACT,SAAS,kEAAkE;AAAA,KAC/E,CAAA;AAAA,IACD,OAAA,EAAS,OAAO,IAAA,KAMd,WAAA,CAAgB,KAAK,IAAA,EAAM;AAAA,MACzB,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,gBAAgB,IAAA,CAAK,cAAA;AAAA,MACrB,eAAe,IAAA,CAAK;AAAA,KACrB;AAAA,GACJ,CAAA;AAAA,EAED,aAAa,IAAA,CAAK;AAAA,IAChB,WAAA,EACE,6KAAA;AAAA,IACF,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,MACpB,IAAA,EAAM,CAAA,CACH,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,QACC;AAAA,OACF;AAAA,MACF,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kCAAkC;AAAA,KAC5D,CAAA;AAAA,IACD,OAAA,EAAS,OAAO,EAAE,IAAA,EAAM,KAAI,KAC1B,WAAA,CAAgB,MAAM,GAAG;AAAA,GAC5B,CAAA;AAAA,EAED,WAAW,IAAA,CAAK;AAAA,IACd,WAAA,EACE,sKAAA;AAAA,IACF,WAAA,EAAa,EAAE,MAAA,CAAO;AAAA,MACpB,MAAM,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,MAC/E,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gCAAgC,CAAA;AAAA,MACzD,OAAO,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,MAC7E,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B;AAAA,KACnE,CAAA;AAAA,IACD,SAAS,OAAO;AAAA,MACd,IAAA;AAAA,MACA,GAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,UAMI,SAAA,CAAc,IAAA,EAAM,KAAK,EAAE,KAAA,EAAO,SAAS;AAAA,GAClD;AACH","file":"ai-sdk.js","sourcesContent":["/**\n * Vercel AI SDK adapter — ready-to-use `tools` object for `generateText` /\n * `streamText`.\n *\n * @example\n * ```ts\n * import { streamText } from 'ai';\n * import { schematexTools } from 'schematex/ai/sdk';\n *\n * const result = streamText({\n * model: 'anthropic/claude-opus-4-7',\n * tools: schematexTools,\n * maxSteps: 5,\n * system: `You write Schematex DSL. Discover types with listDiagrams,\n * then fetch getSyntax + getExamples before writing. Call validateDsl\n * before returning DSL to the user.`,\n * prompt: userMessage,\n * });\n * ```\n *\n * Peer-deps `ai` and `zod` are optional — this module only loads if both\n * are installed.\n */\nimport { tool } from \"ai\";\nimport { z } from \"zod\";\n\nimport {\n listDiagrams as listDiagramsImpl,\n getSyntax as getSyntaxImpl,\n getExamples as getExamplesImpl,\n validateDsl as validateDslImpl,\n renderDsl as renderDslImpl,\n} from \"./tools\";\n\nexport const schematexTools = {\n listDiagrams: tool({\n description:\n \"List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.\",\n inputSchema: z.object({}),\n execute: async () => listDiagramsImpl(),\n }),\n\n getSyntax: tool({\n description:\n \"Return a compact syntax reference for one diagram type rules, grammar (EBNF), and inline examples. Trimmed for LLM consumption (~2,000–4,000 tokens). Call after listDiagrams once you've chosen a type.\",\n inputSchema: z.object({\n type: z\n .string()\n .describe(\n \"Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone').\"\n ),\n }),\n execute: async ({ type }: { type: string }) => getSyntaxImpl(type),\n }),\n\n getExamples: tool({\n description:\n \"Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.\",\n inputSchema: z.object({\n type: z.string().describe(\"Diagram type id.\"),\n limit: z\n .number()\n .int()\n .min(1)\n .max(10)\n .optional()\n .describe(\"Max examples to return (default 5).\"),\n preferFeatured: z\n .boolean()\n .optional()\n .describe(\"Rank featured examples first.\"),\n maxComplexity: z\n .number()\n .int()\n .min(1)\n .max(5)\n .optional()\n .describe(\"Only return examples with complexity <= this value (1=simplest).\"),\n }),\n execute: async (args: {\n type: string;\n limit?: number;\n preferFeatured?: boolean;\n maxComplexity?: number;\n }) =>\n getExamplesImpl(args.type, {\n limit: args.limit,\n preferFeatured: args.preferFeatured,\n maxComplexity: args.maxComplexity,\n }),\n }),\n\n validateDsl: tool({\n description:\n \"Validate Schematex DSL. Returns { ok: true } or { ok: false, errors: [{line, column, message, source}] }. Call before returning DSL to the user and self-correct on errors.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\n \"Diagram type. Optional Schematex auto-detects from the first line if omitted.\"\n ),\n dsl: z.string().describe(\"The DSL source text to validate.\"),\n }),\n execute: async ({ type, dsl }: { type?: string; dsl: string }) =>\n validateDslImpl(type, dsl),\n }),\n\n renderDsl: tool({\n description:\n \"Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.\",\n inputSchema: z.object({\n type: z.string().optional().describe(\"Diagram type (auto-detected if omitted).\"),\n dsl: z.string().describe(\"The DSL source text to render.\"),\n theme: z.string().optional().describe(\"Theme name, e.g. 'default' or 'dark'.\"),\n padding: z.number().optional().describe(\"Outer padding in pixels.\"),\n }),\n execute: async ({\n type,\n dsl,\n theme,\n padding,\n }: {\n type?: string;\n dsl: string;\n theme?: string;\n padding?: number;\n }) => renderDslImpl(type, dsl, { theme, padding }),\n }),\n} as const;\n\nexport type SchematexTools = typeof schematexTools;\n"]}
1
+ {"version":3,"sources":["../../src/ai/ai-sdk.ts"],"names":[],"mappings":"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","file":"ai-sdk.js","sourcesContent":["/**\n * Vercel AI SDK adapter — ready-to-use `tools` object for `generateText` /\n * `streamText`.\n *\n * @example\n * ```ts\n * import { streamText } from 'ai';\n * import { schematexTools } from 'schematex/ai/sdk';\n *\n * const result = streamText({\n * model: 'anthropic/claude-opus-4-7',\n * tools: schematexTools,\n * maxSteps: 5,\n * system: `You write Schematex DSL. Discover types with listDiagrams,\n * then fetch getSyntax + getExamples before writing. Call validateDsl\n * before returning DSL to the user.`,\n * prompt: userMessage,\n * });\n * ```\n *\n * Peer-deps `ai` and `zod` are optional — this module only loads if both\n * are installed.\n */\nimport { tool } from \"ai\";\nimport { z } from \"zod\";\n\nimport {\n listDiagrams as listDiagramsImpl,\n getSyntax as getSyntaxImpl,\n getExamples as getExamplesImpl,\n validateDsl as validateDslImpl,\n renderDsl as renderDslImpl,\n} from \"./tools\";\n\nexport const schematexTools = {\n listDiagrams: tool({\n description:\n \"List every Schematex diagram type with a tagline, 'use when' hint, domain cluster, and authoritative standard. Call this first to discover what's available.\",\n inputSchema: z.object({}),\n execute: async () => listDiagramsImpl(),\n }),\n\n getSyntax: tool({\n description:\n \"Return syntax for one diagram type. Default `detail: canonical` is the compact first-shot generation path: canonical header, preferred forms, rules, and repair checks. Request `detail: reference` only for advanced forms or imported adapters after choosing a type.\",\n inputSchema: z.object({\n type: z\n .string()\n .describe(\n \"Diagram type id from listDiagrams (e.g. 'genogram', 'sld', 'fishbone').\"\n ),\n detail: z\n .enum([\"canonical\", \"reference\"])\n .optional()\n .describe(\n \"Default `canonical` is best for generation. Use `reference` for the fuller grammar/tutorial.\"\n ),\n }),\n execute: async ({\n type,\n detail,\n }: {\n type: string;\n detail?: \"canonical\" | \"reference\";\n }) => getSyntaxImpl(type, { detail }),\n }),\n\n getExamples: tool({\n description:\n \"Return curated real-world DSL examples for a diagram type, each with scenario notes and tags. Use as few-shot context before generating DSL.\",\n inputSchema: z.object({\n type: z.string().describe(\"Diagram type id.\"),\n limit: z\n .number()\n .int()\n .min(1)\n .max(10)\n .optional()\n .describe(\"Max examples to return (default 5).\"),\n preferFeatured: z\n .boolean()\n .optional()\n .describe(\"Rank featured examples first.\"),\n maxComplexity: z\n .number()\n .int()\n .min(1)\n .max(5)\n .optional()\n .describe(\"Only return examples with complexity <= this value (1=simplest).\"),\n }),\n execute: async (args: {\n type: string;\n limit?: number;\n preferFeatured?: boolean;\n maxComplexity?: number;\n }) =>\n getExamplesImpl(args.type, {\n limit: args.limit,\n preferFeatured: args.preferFeatured,\n maxComplexity: args.maxComplexity,\n }),\n }),\n\n validateDsl: tool({\n description:\n \"Validate Schematex DSL. Pass the selected diagram `type` whenever you know it. Returns { ok: true } or { ok: false, errors: [{line, column, message, source, hint}] }. Call before returning DSL and self-correct on errors.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\n \"Selected diagram type. Optional for adapters/autodetect, but explicit canonical types are more robust.\"\n ),\n dsl: z.string().describe(\"The DSL source text to validate.\"),\n }),\n execute: async ({ type, dsl }: { type?: string; dsl: string }) =>\n validateDslImpl(type, dsl),\n }),\n\n renderDsl: tool({\n description:\n \"Render Schematex DSL to an SVG string. Returns { ok: true, svg } or { ok: false, errors }. Use when the caller needs the actual diagram output, not just validation.\",\n inputSchema: z.object({\n type: z\n .string()\n .optional()\n .describe(\"Selected diagram type. Prefer passing it once chosen.\"),\n dsl: z.string().describe(\"The DSL source text to render.\"),\n theme: z.string().optional().describe(\"Theme name, e.g. 'default' or 'dark'.\"),\n padding: z.number().optional().describe(\"Outer padding in pixels.\"),\n }),\n execute: async ({\n type,\n dsl,\n theme,\n padding,\n }: {\n type?: string;\n dsl: string;\n theme?: string;\n padding?: number;\n }) => renderDslImpl(type, dsl, { theme, padding }),\n }),\n} as const;\n\nexport type SchematexTools = typeof schematexTools;\n"]}
package/dist/ai/index.cjs CHANGED
@@ -1,27 +1,27 @@
1
1
  'use strict';
2
2
 
3
- var chunkNWPCY65Z_cjs = require('../chunk-NWPCY65Z.cjs');
4
- require('../chunk-3YUUC6RN.cjs');
5
- require('../chunk-QUKVGHN4.cjs');
6
- require('../chunk-XRCY75UV.cjs');
3
+ var chunkYVDUEUFV_cjs = require('../chunk-YVDUEUFV.cjs');
4
+ require('../chunk-25ZON47K.cjs');
5
+ require('../chunk-FKJBXGWP.cjs');
6
+ require('../chunk-V4RO5KYY.cjs');
7
7
  require('../chunk-SUIDD2C5.cjs');
8
- require('../chunk-N7W5KZK7.cjs');
9
- require('../chunk-3M6WB62Y.cjs');
8
+ require('../chunk-2L4YXZAZ.cjs');
9
+ require('../chunk-ECD5XHBM.cjs');
10
10
  require('../chunk-SBB6C4OP.cjs');
11
- require('../chunk-RYVV5UVI.cjs');
12
- require('../chunk-VFZOPRQP.cjs');
13
- require('../chunk-BW4KGTV7.cjs');
14
- require('../chunk-QTNPMIO2.cjs');
15
- require('../chunk-TZTCIAYW.cjs');
16
- require('../chunk-VZ5LDNHK.cjs');
17
- require('../chunk-EGSUMHCS.cjs');
11
+ require('../chunk-V4GILQR6.cjs');
12
+ require('../chunk-HWVBHU3O.cjs');
13
+ require('../chunk-C5C5EF3W.cjs');
14
+ require('../chunk-6JI6FWLZ.cjs');
15
+ require('../chunk-S3RMAXH5.cjs');
16
+ require('../chunk-VTSH4YPT.cjs');
17
+ require('../chunk-YB4XJY5L.cjs');
18
18
  require('../chunk-3KRL2EGN.cjs');
19
- require('../chunk-S2KJRHDZ.cjs');
20
- require('../chunk-UUBNQV2T.cjs');
19
+ require('../chunk-4UFR2LB6.cjs');
20
+ require('../chunk-WQDIZH2Z.cjs');
21
21
  require('../chunk-5UCXMYE7.cjs');
22
22
  require('../chunk-ST5YRTTV.cjs');
23
- require('../chunk-YLEVMOK2.cjs');
24
- require('../chunk-D7EHZFK4.cjs');
23
+ require('../chunk-R66QG3XT.cjs');
24
+ require('../chunk-L7POWM5B.cjs');
25
25
  require('../chunk-NAGUZFXX.cjs');
26
26
  require('../chunk-3WNW5Y7P.cjs');
27
27
 
@@ -29,35 +29,47 @@ require('../chunk-3WNW5Y7P.cjs');
29
29
 
30
30
  Object.defineProperty(exports, "DIAGRAM_REGISTRY", {
31
31
  enumerable: true,
32
- get: function () { return chunkNWPCY65Z_cjs.DIAGRAM_REGISTRY; }
32
+ get: function () { return chunkYVDUEUFV_cjs.DIAGRAM_REGISTRY; }
33
+ });
34
+ Object.defineProperty(exports, "DIAGRAM_SINCE", {
35
+ enumerable: true,
36
+ get: function () { return chunkYVDUEUFV_cjs.DIAGRAM_SINCE; }
33
37
  });
34
38
  Object.defineProperty(exports, "getAllDiagramTypes", {
35
39
  enumerable: true,
36
- get: function () { return chunkNWPCY65Z_cjs.getAllDiagramTypes; }
40
+ get: function () { return chunkYVDUEUFV_cjs.getAllDiagramTypes; }
37
41
  });
38
42
  Object.defineProperty(exports, "getDiagramMeta", {
39
43
  enumerable: true,
40
- get: function () { return chunkNWPCY65Z_cjs.getDiagramMeta; }
44
+ get: function () { return chunkYVDUEUFV_cjs.getDiagramMeta; }
45
+ });
46
+ Object.defineProperty(exports, "getDiagramSince", {
47
+ enumerable: true,
48
+ get: function () { return chunkYVDUEUFV_cjs.getDiagramSince; }
41
49
  });
42
50
  Object.defineProperty(exports, "getExamples", {
43
51
  enumerable: true,
44
- get: function () { return chunkNWPCY65Z_cjs.getExamples; }
52
+ get: function () { return chunkYVDUEUFV_cjs.getExamples; }
45
53
  });
46
54
  Object.defineProperty(exports, "getSyntax", {
47
55
  enumerable: true,
48
- get: function () { return chunkNWPCY65Z_cjs.getSyntax; }
56
+ get: function () { return chunkYVDUEUFV_cjs.getSyntax; }
49
57
  });
50
58
  Object.defineProperty(exports, "listDiagrams", {
51
59
  enumerable: true,
52
- get: function () { return chunkNWPCY65Z_cjs.listDiagrams; }
60
+ get: function () { return chunkYVDUEUFV_cjs.listDiagrams; }
53
61
  });
54
62
  Object.defineProperty(exports, "renderDsl", {
55
63
  enumerable: true,
56
- get: function () { return chunkNWPCY65Z_cjs.renderDsl; }
64
+ get: function () { return chunkYVDUEUFV_cjs.renderDsl; }
65
+ });
66
+ Object.defineProperty(exports, "resolveDiagramType", {
67
+ enumerable: true,
68
+ get: function () { return chunkYVDUEUFV_cjs.resolveDiagramType; }
57
69
  });
58
70
  Object.defineProperty(exports, "validateDsl", {
59
71
  enumerable: true,
60
- get: function () { return chunkNWPCY65Z_cjs.validateDsl; }
72
+ get: function () { return chunkYVDUEUFV_cjs.validateDsl; }
61
73
  });
62
74
  //# sourceMappingURL=index.cjs.map
63
75
  //# sourceMappingURL=index.cjs.map