mulmoterminal 0.6.0 → 0.6.2

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 (117) hide show
  1. package/README.md +40 -0
  2. package/dist/assets/{abnfDiagram-VRR7QNED-6nNByj6v-BByKSQ1Q.js → abnfDiagram-VRR7QNED-6nNByj6v-BR__eiyl.js} +1 -1
  3. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-DYR5YD-t.js +1 -0
  4. package/dist/assets/{architectureDiagram-ZJ3FMSHR-Bgnyaj_i-Csq4HwL0.js → architectureDiagram-ZJ3FMSHR-Bgnyaj_i-qvSM6uDf.js} +1 -1
  5. package/dist/assets/{blockDiagram-677ZJIJ3-DQ35o5E4-4ShA2H2m.js → blockDiagram-677ZJIJ3-DQ35o5E4-Dkdpl09F.js} +1 -1
  6. package/dist/assets/{c4Diagram-LMCZKHZV-ClWZeiWo-CNdU_xo7.js → c4Diagram-LMCZKHZV-ClWZeiWo-DG-F0pLX.js} +1 -1
  7. package/dist/assets/channel-Di5rtkx0-CFIdTKCo.js +1 -0
  8. package/dist/assets/{chunk-32BRIVSS-CCt9wtYd-B2rofcbe.js → chunk-32BRIVSS-CCt9wtYd-DL8ZqSXh.js} +1 -1
  9. package/dist/assets/{chunk-52WLFC77-FbBbR4uI-BLhNZizN.js → chunk-52WLFC77-FbBbR4uI-FcUCvUWm.js} +1 -1
  10. package/dist/assets/{chunk-C7G6YPKG-C87hlS9c-B4QXX3y4.js → chunk-C7G6YPKG-C87hlS9c-BglxD8Ds.js} +1 -1
  11. package/dist/assets/{chunk-EX3LRPZG-BqGqMXLN-DlNZDlHM.js → chunk-EX3LRPZG-BqGqMXLN-BPw6bHPB.js} +1 -1
  12. package/dist/assets/{chunk-FWX5IMBZ-BkbSAAuW-CeHi7YvX.js → chunk-FWX5IMBZ-BkbSAAuW-BeKan3Ew.js} +2 -2
  13. package/dist/assets/{chunk-HOUHSVGY-Cxu0eDlh-ClNEp6ex.js → chunk-HOUHSVGY-Cxu0eDlh-BKGIWayl.js} +1 -1
  14. package/dist/assets/{chunk-ICXQ74PX-hiraF_Xj-BO_ldshX.js → chunk-ICXQ74PX-hiraF_Xj-DqOS9Mmk.js} +1 -1
  15. package/dist/assets/{chunk-MOJQB5TN-CqxshQHA-R2kqmzCi.js → chunk-MOJQB5TN-CqxshQHA-o-9QjKwX.js} +1 -1
  16. package/dist/assets/{chunk-OGEWGWER-CjCr7ceX-C_SROTIS.js → chunk-OGEWGWER-CjCr7ceX-kayseL-o.js} +1 -1
  17. package/dist/assets/{chunk-PUDLZKDR-Dx6M-vz1-C1X6uVGY.js → chunk-PUDLZKDR-Dx6M-vz1-CP23uMqS.js} +1 -1
  18. package/dist/assets/{chunk-Q4XR5HBZ-CZd-9lTB-BxF51AnE.js → chunk-Q4XR5HBZ-CZd-9lTB-DlNEhGNE.js} +1 -1
  19. package/dist/assets/{chunk-V7JOEXUC-rI0xlC_O-DA0pqJO8.js → chunk-V7JOEXUC-rI0xlC_O-CU1r_K83.js} +1 -1
  20. package/dist/assets/{chunk-VAUOI2AC-DrcykVNK-CaAq2IRl.js → chunk-VAUOI2AC-DrcykVNK-Bx9_R8iV.js} +1 -1
  21. package/dist/assets/{chunk-VR4S4FIN-O6iF8Yvf-h2ZSZcSX.js → chunk-VR4S4FIN-O6iF8Yvf-Bxf47BHX.js} +1 -1
  22. package/dist/assets/{chunk-WYO6CB5R-B83L_z6I-COUtQsOc.js → chunk-WYO6CB5R-B83L_z6I-DmI80qCd.js} +1 -1
  23. package/dist/assets/{chunk-ZGVPDNZ5-BpFv9JSP-DUOwvtJ7.js → chunk-ZGVPDNZ5-BpFv9JSP-Dtt7_IXx.js} +1 -1
  24. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-BJvb6DM5.js +1 -0
  25. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-BJvb6DM5.js +1 -0
  26. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-Co1DLFQX.js +1 -0
  27. package/dist/assets/{cynefinDiagram-TSTJHNR4-x0-0sQ15-Pir6ZdsD.js → cynefinDiagram-TSTJHNR4-x0-0sQ15-FQw_dzEQ.js} +1 -1
  28. package/dist/assets/{dagre-VKFMJZFB-CQdfl-bx-ZwEh48jq.js → dagre-VKFMJZFB-CQdfl-bx-C8T5lvuy.js} +1 -1
  29. package/dist/assets/{diagram-FQU43EPY-BOSB6VUb-mekdVZr2.js → diagram-FQU43EPY-BOSB6VUb-BpatmYur.js} +1 -1
  30. package/dist/assets/{diagram-G47NLZAW-DLXrcXsN-DBLwyhUg.js → diagram-G47NLZAW-DLXrcXsN-BxnfDEMb.js} +1 -1
  31. package/dist/assets/{diagram-NH7WQ7WH-BMQp1rkF-Uc223toq.js → diagram-NH7WQ7WH-BMQp1rkF-CWqxxOxM.js} +1 -1
  32. package/dist/assets/{diagram-OA4YK3LP-D1wQ0vUj-BAGlAD9J.js → diagram-OA4YK3LP-D1wQ0vUj-DQ4TKrkb.js} +1 -1
  33. package/dist/assets/{diagram-WEI45ONY-RR0DpF8R-CjNyoFw4.js → diagram-WEI45ONY-RR0DpF8R-BdFnjQKM.js} +1 -1
  34. package/dist/assets/{ebnfDiagram-CCIWWBDH-M123uVJ8-B7KnU-km.js → ebnfDiagram-CCIWWBDH-M123uVJ8-B5xFis-E.js} +1 -1
  35. package/dist/assets/{erDiagram-Q63AITRT-BWx_-PXG-jdBg-CHo.js → erDiagram-Q63AITRT-BWx_-PXG-b7pLAdQs.js} +1 -1
  36. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-3OIl1Ld2.js +1 -0
  37. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-DTd1kyw3.js +1 -0
  38. package/dist/assets/{ganttDiagram-NO4QXBWP-BOoJ1eTw-Cxy1nDN_.js → ganttDiagram-NO4QXBWP-BOoJ1eTw-DJM3yEgW.js} +1 -1
  39. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-BASrfYk-.js +1 -0
  40. package/dist/assets/{gitGraphDiagram-IHSO6WYX-B2CJhk_G-BaPQ9s0d.js → gitGraphDiagram-IHSO6WYX-B2CJhk_G-DvqS3rw6.js} +1 -1
  41. package/dist/assets/index-BycNzdB5.js +355 -0
  42. package/dist/assets/index-Dj98e4nG.css +1 -0
  43. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-QQNWL0Ad.js +1 -0
  44. package/dist/assets/{infoDiagram-FWYZ7A6U-Mp1X3pBP-wh4NPzp_.js → infoDiagram-FWYZ7A6U-Mp1X3pBP-BH22go43.js} +1 -1
  45. package/dist/assets/{ishikawaDiagram-FXEZZL3T-BNG7tkJu-BNBYJFMY.js → ishikawaDiagram-FXEZZL3T-BNG7tkJu-DXVJne9S.js} +1 -1
  46. package/dist/assets/{journeyDiagram-5HDEW3XC-Dbp_hY9X-BTqESEaO.js → journeyDiagram-5HDEW3XC-Dbp_hY9X-DCaJQ65f.js} +1 -1
  47. package/dist/assets/{kanban-definition-HUTT4EX6-DSTc5u3q-COu6iNt2.js → kanban-definition-HUTT4EX6-DSTc5u3q-BvDaV1wR.js} +1 -1
  48. package/dist/assets/{line-B1wBwzrY-DAPpVANP.js → line-B1wBwzrY-BjL1-kEt.js} +1 -1
  49. package/dist/assets/{marp-cCC1_YXp.js → marp-BlNCU8cR.js} +1 -1
  50. package/dist/assets/{mermaid-parser.core-DC7NPJ_M-DgfQQlG5.js → mermaid-parser.core-DC7NPJ_M-ylD2dn6D.js} +2 -2
  51. package/dist/assets/{mermaid.core-DZM3Ha-E-UrlcsWOs.js → mermaid.core-DZM3Ha-E-BqB2NKvm.js} +3 -3
  52. package/dist/assets/{mindmap-definition-LN4V7U3C-DYtgcMsY-DegFPl5G.js → mindmap-definition-LN4V7U3C-DYtgcMsY-D30h8tu0.js} +1 -1
  53. package/dist/assets/packet-7NZHBO7P-lwb58iYx-CphYqnZh.js +1 -0
  54. package/dist/assets/{pegDiagram-2B236MQR-C43eIpKM-B-2IWlT1.js → pegDiagram-2B236MQR-C43eIpKM-DCkvtTme.js} +1 -1
  55. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-D0ZU1Leh.js +1 -0
  56. package/dist/assets/{pieDiagram-ENE6RG2P-BkTqgJyR-DQGWtOtQ.js → pieDiagram-ENE6RG2P-BkTqgJyR-C9ImPAXx.js} +1 -1
  57. package/dist/assets/{quadrantDiagram-ABIIQ3AL-Bm1Zjm45-Bk-ZumAJ.js → quadrantDiagram-ABIIQ3AL-Bm1Zjm45-BzatICF4.js} +1 -1
  58. package/dist/assets/radar-I7S5WNFK-7CKcb_l--DtPkSnh9.js +1 -0
  59. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-Du5FA7n1.js +1 -0
  60. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--DFxlg3Lr.js +1 -0
  61. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-CGHvjWhk.js +1 -0
  62. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-CFiLH0rH.js +1 -0
  63. package/dist/assets/{railroadDiagram-RFXS5EU6-BkfbdeAs-DLqSTJBT.js → railroadDiagram-RFXS5EU6-BkfbdeAs-Bh9xEuq9.js} +1 -1
  64. package/dist/assets/{requirementDiagram-TGXJPOKE-CrGTTjYg-BJLFYslH.js → requirementDiagram-TGXJPOKE-CrGTTjYg-BQgmdVSv.js} +1 -1
  65. package/dist/assets/{sankeyDiagram-HTMAVEWB-rWXPf03Z-1eoYoLKB.js → sankeyDiagram-HTMAVEWB-rWXPf03Z-DscRUZXT.js} +1 -1
  66. package/dist/assets/{sequenceDiagram-DBY2YBRQ-nkJYWO2m-Da486vHf.js → sequenceDiagram-DBY2YBRQ-nkJYWO2m-lgs6nNUU.js} +1 -1
  67. package/dist/assets/{stateDiagram-2N3HPSRC-T4-clK8b-gzc9roTr.js → stateDiagram-2N3HPSRC-T4-clK8b-DNeEa7rO.js} +1 -1
  68. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-B0W-KHx7.js +1 -0
  69. package/dist/assets/{swimlanes-5IMT3BWC-HmQNEntu-BdnM2nbO.js → swimlanes-5IMT3BWC-HmQNEntu--YSC6ziW.js} +1 -1
  70. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-Bpt8MBzh.js +8 -0
  71. package/dist/assets/{timeline-definition-FHXFAJF6-CNc9jSTP-BHcfy0iC.js → timeline-definition-FHXFAJF6-CNc9jSTP-C7YxL8qv.js} +1 -1
  72. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-N1od_Hb2.js +1 -0
  73. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-BWBbeqvg.js +1 -0
  74. package/dist/assets/{vennDiagram-L72KCM5P-Dr3pTJ_0-d5CJwnFU.js → vennDiagram-L72KCM5P-Dr3pTJ_0-BnYpqsms.js} +1 -1
  75. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-DvUPwP_X.js +1 -0
  76. package/dist/assets/{wardleyDiagram-EHGQE667-DSFc7ZZa-12eZ0IDX.js → wardleyDiagram-EHGQE667-DSFc7ZZa-CEBr6tXd.js} +1 -1
  77. package/dist/assets/{xychartDiagram-FW5EYKEG-BP0Nn4Pp-DZb0Smb-.js → xychartDiagram-FW5EYKEG-BP0Nn4Pp-BiY7UtJ1.js} +1 -1
  78. package/dist/index.html +2 -2
  79. package/package.json +10 -4
  80. package/server/app-config.spec.ts +59 -13
  81. package/server/app-config.ts +64 -4
  82. package/server/config-routes.ts +30 -3
  83. package/server/files-browse.spec.ts +81 -0
  84. package/server/files-browse.ts +182 -0
  85. package/server/gh.ts +29 -0
  86. package/server/index.ts +215 -16
  87. package/server/issues.spec.ts +38 -0
  88. package/server/issues.ts +67 -0
  89. package/server/prs.spec.ts +64 -0
  90. package/server/prs.ts +93 -0
  91. package/server/tmux.spec.ts +27 -0
  92. package/server/tmux.ts +79 -0
  93. package/server/transcript.spec.ts +25 -0
  94. package/server/transcript.ts +27 -0
  95. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-B5HjqBBd.js +0 -1
  96. package/dist/assets/channel-Di5rtkx0-YyAkNkxF.js +0 -1
  97. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-BhM1j4C-.js +0 -1
  98. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-BhM1j4C-.js +0 -1
  99. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-DVqvFjmO.js +0 -1
  100. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-CVJeUZil.js +0 -1
  101. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-Ylqb6QCq.js +0 -1
  102. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-0-bxbAxq.js +0 -1
  103. package/dist/assets/index-Cq5XDyLc.js +0 -317
  104. package/dist/assets/index-kR-L2IB1.css +0 -1
  105. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-B1AlA2o9.js +0 -1
  106. package/dist/assets/packet-7NZHBO7P-lwb58iYx-CmELGFsy.js +0 -1
  107. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-DiVVmG7A.js +0 -1
  108. package/dist/assets/radar-I7S5WNFK-7CKcb_l--InceodkN.js +0 -1
  109. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-CpiYXfZ8.js +0 -1
  110. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--CLWWLyo0.js +0 -1
  111. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-Bv73UD5y.js +0 -1
  112. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-Bgi_vV6V.js +0 -1
  113. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-D4MFbbJm.js +0 -1
  114. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-B_wjbfc4.js +0 -8
  115. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-C1ibbgjK.js +0 -1
  116. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-CnAyf6Jb.js +0 -1
  117. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-D-1DIEwz.js +0 -1
package/README.md CHANGED
@@ -121,6 +121,21 @@ SDK; we drive the real interactive CLI and relay its TTY over the WebSocket.
121
121
 
122
122
  ---
123
123
 
124
+ ## Session persistence (tmux)
125
+
126
+ If **`tmux` is installed**, MulmoTerminal runs each Claude session and launcher inside
127
+ a tmux session, so **a server crash or restart doesn't kill your terminals** — the
128
+ processes keep running and reattach when the server comes back (like `screen`/`tmux`).
129
+ A long build, a dev server, or a mid-turn Claude session all survive `node --watch`
130
+ reloads and crashes. It uses its **own** tmux server (`-L mulmoterminal`) and config, so
131
+ it never touches your personal tmux sessions or keybindings.
132
+
133
+ **No tmux? No problem** — terminals fall back to plain (non-persistent) PTYs, exactly as
134
+ before. An explicit close (a cell's ✕) ends the tmux session; a machine reboot does not
135
+ survive (tmux itself is gone). Command-cell scripts are ephemeral and not persisted.
136
+
137
+ ---
138
+
124
139
  ## Tech stack
125
140
 
126
141
  | Layer | Technology |
@@ -162,6 +177,8 @@ The Settings modal (⚙) persists per-user UI choices to `~/.mulmoterminal/confi
162
177
  | ------------ | ------- |
163
178
  | `cwdPresets` | Quick-pick directories offered when launching a terminal. |
164
179
  | `soundFile` | Absolute path to a custom **attention sound** (played when a session needs attention). Empty/unset uses the built-in synthesized chime. |
180
+ | `prRepos` | `owner/repo` entries whose open PRs/issues the cross-repo **PRs & Issues** view aggregates (via your `gh` login). |
181
+ | `launchers` | `{ label, command }` entries offered in a grid cell's launcher besides Claude — a plain shell, `codex`, any interactive command. |
165
182
 
166
183
  **Attention sound.** The default chime is generated with the Web Audio API — **no
167
184
  audio file is bundled**, so the npm package stays light and has no media-licensing
@@ -238,6 +255,13 @@ alongside the Claude sessions. Scripts are **per-directory**: the cell reads the
238
255
  `script.json` of whatever directory you select, so different cells can offer
239
256
  different projects' scripts.
240
257
 
258
+ The same launcher also has an **or launch** row for your configured **launch commands**
259
+ — a plain interactive shell, `codex`, any command — set in Settings (⚙) → **Launch
260
+ commands** as `{ label, command }` (e.g. `Shell` → `$SHELL`, `Codex` → `codex`). Unlike
261
+ a one-shot script, a launcher runs as a **persistent terminal in the cell's directory**:
262
+ it survives grid page switches and reconnects, and its dot shows running vs. exited (it
263
+ has no Claude hooks, so no blocked/done states).
264
+
241
265
  Every running terminal's header also has a **▶ Run ▾** dropdown (next to the
242
266
  connection status), in both the single view and each grid cell — but **only when the
243
267
  open project has scripts** (no `script.json`, no button). It lists the **open
@@ -278,6 +302,22 @@ command, so the file is the allowlist of what can run.
278
302
 
279
303
  ---
280
304
 
305
+ ## Files view (browse & edit)
306
+
307
+ Every terminal header has a **📁 Files** button that opens a full-screen file explorer
308
+ rooted at **that terminal's project directory** — so after Claude says "wrote `foo.md`"
309
+ you can jump straight there to read or edit it. The left pane is a lazy-loaded directory
310
+ tree; clicking a file opens it in a **CodeMirror** editor (Markdown / JS-TS / JSON
311
+ highlighting, everything else as plain text). Markdown files get a **Preview** toggle
312
+ that renders via the server's sandboxed `…/md` HTML. **Save** (or ⌘/Ctrl-S) writes back.
313
+
314
+ All reads and writes go through `GET/PUT /api/files/browse/*?cwd=&path=`, and every
315
+ `path` is **contained within the project root** (server-side) — `..`/absolute escapes
316
+ are rejected for reads and writes alike, so editing can't reach outside the directory
317
+ the terminal is pointed at.
318
+
319
+ ---
320
+
281
321
  ## Server API specification
282
322
 
283
323
  Base URL: `http://localhost:$PORT` (default `http://localhost:34567`).
@@ -1 +1 @@
1
- import{n as e}from"./chunk-Y2CYZVJY-Bdt8pFDJ-DsF7k-Jl.js";import{f as t}from"./src-Brzfja-q-ch1VcTiG.js";import{_ as n,g as r}from"./mermaid-parser.core-DC7NPJ_M-DgfQQlG5.js";import"./chunk-WYO6CB5R-B83L_z6I-COUtQsOc.js";import"./chunk-VAUOI2AC-DrcykVNK-CaAq2IRl.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-R2kqmzCi.js";import{t as s}from"./chunk-JWPE2WC7-BQ3zXr2k-DSd3Ct95.js";var c=r().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{s(e,a),e.title&&a.setTitle(e.title),e.rules.map(e=>a.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{a.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let r=c.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new n(r);let i=r.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:a}},db:a,renderer:o,styles:i};export{g as diagram};
1
+ import{n as e}from"./chunk-Y2CYZVJY-Bdt8pFDJ-DsF7k-Jl.js";import{f as t}from"./src-Brzfja-q-ch1VcTiG.js";import{_ as n,g as r}from"./mermaid-parser.core-DC7NPJ_M-ylD2dn6D.js";import"./chunk-WYO6CB5R-B83L_z6I-DmI80qCd.js";import"./chunk-VAUOI2AC-DrcykVNK-Bx9_R8iV.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-o-9QjKwX.js";import{t as s}from"./chunk-JWPE2WC7-BQ3zXr2k-DSd3Ct95.js";var c=r().RailroadAbnf.parser.LangiumParser,l=e(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=e(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=e(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=e(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=e(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=e(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=e(e=>{s(e,a),e.title&&a.setTitle(e.title),e.rules.map(e=>a.addRule(m(e)))},`populateDb`),g={parser:{parse:e(e=>{a.clear(),t.debug(`[ABNF Parser] Starting Langium parse`);let r=c.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new n(r);let i=r.value;t.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),t.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:a}},db:a,renderer:o,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import{f as e}from"./mermaid-parser.core-DC7NPJ_M-ylD2dn6D.js";export{e as createArchitectureServices};