mulmoterminal 0.9.1 → 0.9.3

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 (121) hide show
  1. package/README.md +13 -2
  2. package/dist/assets/{abnfDiagram-VRR7QNED-6nNByj6v-CVgYtC8A.js → abnfDiagram-VRR7QNED-6nNByj6v-DtVCunM4.js} +1 -1
  3. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-DwTylFBi.js +1 -0
  4. package/dist/assets/{architectureDiagram-ZJ3FMSHR-Bgnyaj_i-DIwUJtFo.js → architectureDiagram-ZJ3FMSHR-Bgnyaj_i-BlvfAzkT.js} +1 -1
  5. package/dist/assets/{blockDiagram-677ZJIJ3-DQ35o5E4-BOstxdgY.js → blockDiagram-677ZJIJ3-DQ35o5E4-DV5mC34o.js} +1 -1
  6. package/dist/assets/{c4Diagram-LMCZKHZV-ClWZeiWo-CJgnuXMJ.js → c4Diagram-LMCZKHZV-ClWZeiWo-gfTIn5Lw.js} +1 -1
  7. package/dist/assets/channel-Di5rtkx0-DkEgk-pd.js +1 -0
  8. package/dist/assets/{chunk-32BRIVSS-CCt9wtYd-D-DAaeXJ.js → chunk-32BRIVSS-CCt9wtYd-DpyNEnwu.js} +1 -1
  9. package/dist/assets/{chunk-52WLFC77-FbBbR4uI-BgyQM603.js → chunk-52WLFC77-FbBbR4uI-CcEzfpDT.js} +1 -1
  10. package/dist/assets/{chunk-C7G6YPKG-C87hlS9c-CNU64g__.js → chunk-C7G6YPKG-C87hlS9c-LvEVJ1IQ.js} +1 -1
  11. package/dist/assets/{chunk-EX3LRPZG-BqGqMXLN-BCZDGM-w.js → chunk-EX3LRPZG-BqGqMXLN-BmIsXusx.js} +1 -1
  12. package/dist/assets/{chunk-FWX5IMBZ-BkbSAAuW-Bq9OtrcX.js → chunk-FWX5IMBZ-BkbSAAuW-DQH0V6p8.js} +2 -2
  13. package/dist/assets/{chunk-HOUHSVGY-Cxu0eDlh-BIvtWbJ0.js → chunk-HOUHSVGY-Cxu0eDlh-CEUtBKYW.js} +1 -1
  14. package/dist/assets/{chunk-ICXQ74PX-hiraF_Xj-Dx5twF_S.js → chunk-ICXQ74PX-hiraF_Xj-DQR2BrrB.js} +1 -1
  15. package/dist/assets/{chunk-MOJQB5TN-CqxshQHA-BV_RK3Vr.js → chunk-MOJQB5TN-CqxshQHA-Czit54cz.js} +1 -1
  16. package/dist/assets/{chunk-OGEWGWER-CjCr7ceX-DdaHiBxq.js → chunk-OGEWGWER-CjCr7ceX-Dmr6jo33.js} +1 -1
  17. package/dist/assets/{chunk-PUDLZKDR-Dx6M-vz1-DmN05gZD.js → chunk-PUDLZKDR-Dx6M-vz1-C8-lXFhC.js} +1 -1
  18. package/dist/assets/{chunk-Q4XR5HBZ-CZd-9lTB-cw9QtxXY.js → chunk-Q4XR5HBZ-CZd-9lTB-fUkYcZLq.js} +1 -1
  19. package/dist/assets/{chunk-V7JOEXUC-rI0xlC_O-gsq823jB.js → chunk-V7JOEXUC-rI0xlC_O-BVaZytO-.js} +1 -1
  20. package/dist/assets/{chunk-VAUOI2AC-DrcykVNK-D4zp9mNB.js → chunk-VAUOI2AC-DrcykVNK-yJ-tlNfF.js} +1 -1
  21. package/dist/assets/{chunk-VR4S4FIN-O6iF8Yvf-CNstNe-T.js → chunk-VR4S4FIN-O6iF8Yvf-CVzjJQ5n.js} +1 -1
  22. package/dist/assets/{chunk-WYO6CB5R-B83L_z6I-BGsPsjAI.js → chunk-WYO6CB5R-B83L_z6I-TrxMG8rr.js} +1 -1
  23. package/dist/assets/{chunk-ZGVPDNZ5-BpFv9JSP-IiKGkWvT.js → chunk-ZGVPDNZ5-BpFv9JSP-BQhaQx6J.js} +1 -1
  24. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-B8VyQdV-.js +1 -0
  25. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-B8VyQdV-.js +1 -0
  26. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-BaTsKKi0.js +1 -0
  27. package/dist/assets/{cynefinDiagram-TSTJHNR4-x0-0sQ15-DKxBfSSe.js → cynefinDiagram-TSTJHNR4-x0-0sQ15-9Tm1QSku.js} +1 -1
  28. package/dist/assets/{dagre-VKFMJZFB-CQdfl-bx-xPr09wi6.js → dagre-VKFMJZFB-CQdfl-bx-Dwg9OMoG.js} +1 -1
  29. package/dist/assets/{diagram-FQU43EPY-BOSB6VUb-BhBLu_3q.js → diagram-FQU43EPY-BOSB6VUb-DnnqZnYR.js} +1 -1
  30. package/dist/assets/{diagram-G47NLZAW-DLXrcXsN-CFT5wbq3.js → diagram-G47NLZAW-DLXrcXsN-f983VIfA.js} +1 -1
  31. package/dist/assets/{diagram-NH7WQ7WH-BMQp1rkF-OnMtnXwo.js → diagram-NH7WQ7WH-BMQp1rkF-BiLjP0he.js} +1 -1
  32. package/dist/assets/{diagram-OA4YK3LP-D1wQ0vUj-Buf7sHLb.js → diagram-OA4YK3LP-D1wQ0vUj-DGc7Jn0K.js} +1 -1
  33. package/dist/assets/{diagram-WEI45ONY-RR0DpF8R-CiKo8dEV.js → diagram-WEI45ONY-RR0DpF8R-tDIw9Yke.js} +1 -1
  34. package/dist/assets/{ebnfDiagram-CCIWWBDH-M123uVJ8-BF7MJcAR.js → ebnfDiagram-CCIWWBDH-M123uVJ8-CQ3Je5fz.js} +1 -1
  35. package/dist/assets/{erDiagram-Q63AITRT-BWx_-PXG-CaNpcR0c.js → erDiagram-Q63AITRT-BWx_-PXG-CezHcRTF.js} +1 -1
  36. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-CyWTugzn.js +1 -0
  37. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-CdmnRPZw.js +1 -0
  38. package/dist/assets/{ganttDiagram-NO4QXBWP-BOoJ1eTw-D43vlPZo.js → ganttDiagram-NO4QXBWP-BOoJ1eTw-Clcd2QEr.js} +1 -1
  39. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-C_bw49Ma.js +1 -0
  40. package/dist/assets/{gitGraphDiagram-IHSO6WYX-B2CJhk_G-Plj2BffT.js → gitGraphDiagram-IHSO6WYX-B2CJhk_G-B2Hd148X.js} +1 -1
  41. package/dist/assets/{index-3f30jaT0.css → index-8xyJ3JLz.css} +1 -1
  42. package/dist/assets/index-BnjRaP6A.js +357 -0
  43. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-KtkQGqzk.js +1 -0
  44. package/dist/assets/{infoDiagram-FWYZ7A6U-Mp1X3pBP-CuA1P6ZB.js → infoDiagram-FWYZ7A6U-Mp1X3pBP-734PnMyt.js} +1 -1
  45. package/dist/assets/{ishikawaDiagram-FXEZZL3T-BNG7tkJu-BNMqzXxb.js → ishikawaDiagram-FXEZZL3T-BNG7tkJu-Cch0pp0L.js} +1 -1
  46. package/dist/assets/{journeyDiagram-5HDEW3XC-Dbp_hY9X-NflQYiYP.js → journeyDiagram-5HDEW3XC-Dbp_hY9X-Hgxk3xz1.js} +1 -1
  47. package/dist/assets/{kanban-definition-HUTT4EX6-DSTc5u3q-DQm3IbIw.js → kanban-definition-HUTT4EX6-DSTc5u3q-Dj2ygtwy.js} +1 -1
  48. package/dist/assets/{line-B1wBwzrY-PYTdSGHu.js → line-B1wBwzrY-BfNBRxmq.js} +1 -1
  49. package/dist/assets/{marp-iErKCKYz.js → marp-CBSoH1Vt.js} +1 -1
  50. package/dist/assets/{mermaid-parser.core-DC7NPJ_M-DAhbeSgr.js → mermaid-parser.core-DC7NPJ_M-Cfp31QX2.js} +2 -2
  51. package/dist/assets/{mermaid.core-DZM3Ha-E-BNwp1SSa.js → mermaid.core-DZM3Ha-E-s4una8R5.js} +3 -3
  52. package/dist/assets/{mindmap-definition-LN4V7U3C-DYtgcMsY-CdTgRgD3.js → mindmap-definition-LN4V7U3C-DYtgcMsY-DBtBWMe3.js} +1 -1
  53. package/dist/assets/packet-7NZHBO7P-lwb58iYx-DwSDPzqY.js +1 -0
  54. package/dist/assets/{pegDiagram-2B236MQR-C43eIpKM-BoY9YcBj.js → pegDiagram-2B236MQR-C43eIpKM-CGl0Mxne.js} +1 -1
  55. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-CiB48qnn.js +1 -0
  56. package/dist/assets/{pieDiagram-ENE6RG2P-BkTqgJyR-BvAMoz4E.js → pieDiagram-ENE6RG2P-BkTqgJyR-D2B2wsUi.js} +1 -1
  57. package/dist/assets/{quadrantDiagram-ABIIQ3AL-Bm1Zjm45-CGzER_DL.js → quadrantDiagram-ABIIQ3AL-Bm1Zjm45-OakSJ-Xf.js} +1 -1
  58. package/dist/assets/radar-I7S5WNFK-7CKcb_l--6l7KPMn8.js +1 -0
  59. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-8ClzQSfW.js +1 -0
  60. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--C0FLZOzv.js +1 -0
  61. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-DGtEHnA9.js +1 -0
  62. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-CreTgxNy.js +1 -0
  63. package/dist/assets/{railroadDiagram-RFXS5EU6-BkfbdeAs-D3nWzhoi.js → railroadDiagram-RFXS5EU6-BkfbdeAs-BcsE6Ggi.js} +1 -1
  64. package/dist/assets/{requirementDiagram-TGXJPOKE-CrGTTjYg-BXJOdcqX.js → requirementDiagram-TGXJPOKE-CrGTTjYg-tOFWf7Wj.js} +1 -1
  65. package/dist/assets/{sankeyDiagram-HTMAVEWB-rWXPf03Z-BT7OPSSo.js → sankeyDiagram-HTMAVEWB-rWXPf03Z-CynV8Q_B.js} +1 -1
  66. package/dist/assets/{sequenceDiagram-DBY2YBRQ-nkJYWO2m-DUQmimHp.js → sequenceDiagram-DBY2YBRQ-nkJYWO2m-CLgDqxDM.js} +1 -1
  67. package/dist/assets/{stateDiagram-2N3HPSRC-T4-clK8b-DLDU9NAl.js → stateDiagram-2N3HPSRC-T4-clK8b-DbWlwbcm.js} +1 -1
  68. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-DgqIU_8B.js +1 -0
  69. package/dist/assets/{swimlanes-5IMT3BWC-HmQNEntu-CiEjMDZR.js → swimlanes-5IMT3BWC-HmQNEntu-CULdZ2Ss.js} +1 -1
  70. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-Zht4hkxA.js +8 -0
  71. package/dist/assets/{timeline-definition-FHXFAJF6-CNc9jSTP-qngINip4.js → timeline-definition-FHXFAJF6-CNc9jSTP-DmFMY1Mv.js} +1 -1
  72. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-CxgFefwU.js +1 -0
  73. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-CyDDLqfk.js +1 -0
  74. package/dist/assets/{vennDiagram-L72KCM5P-Dr3pTJ_0-CI-qJgRs.js → vennDiagram-L72KCM5P-Dr3pTJ_0-BmBHfE4y.js} +1 -1
  75. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-DtA9dAOH.js +1 -0
  76. package/dist/assets/{wardleyDiagram-EHGQE667-DSFc7ZZa-DlPPC65K.js → wardleyDiagram-EHGQE667-DSFc7ZZa-DWvD9JbG.js} +1 -1
  77. package/dist/assets/{xychartDiagram-FW5EYKEG-BP0Nn4Pp-BinlTtjN.js → xychartDiagram-FW5EYKEG-BP0Nn4Pp-D2cjwNtU.js} +1 -1
  78. package/dist/index.html +2 -2
  79. package/package.json +4 -2
  80. package/server/activity-state.spec.ts +55 -0
  81. package/server/activity-state.ts +46 -0
  82. package/server/app-config.spec.ts +70 -2
  83. package/server/app-config.ts +37 -1
  84. package/server/backends/remoteHost/firebase.ts +9 -14
  85. package/server/backends/remoteHost/index.ts +25 -56
  86. package/server/backends/remoteHost/ingestAttachments.ts +6 -3
  87. package/server/backends/remoteHost/onExpire.ts +2 -2
  88. package/server/backends/remoteHost/routes.spec.ts +113 -0
  89. package/server/backends/remoteHost/routes.ts +97 -0
  90. package/server/backends/remoteHost/session.spec.ts +14 -0
  91. package/server/backends/remoteHost/session.ts +93 -0
  92. package/server/config-routes.ts +14 -12
  93. package/server/index.ts +51 -23
  94. package/server/pick-file.spec.ts +19 -0
  95. package/server/pick-file.ts +46 -38
  96. package/server/web-push.spec.ts +37 -0
  97. package/server/web-push.ts +56 -0
  98. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-CcGK28Wb.js +0 -1
  99. package/dist/assets/channel-Di5rtkx0-CJv7O5cW.js +0 -1
  100. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-DdJSBc1F.js +0 -1
  101. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-DdJSBc1F.js +0 -1
  102. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-BIulluQj.js +0 -1
  103. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-D8Ivbop-.js +0 -1
  104. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-Dk5wVlnP.js +0 -1
  105. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-MW0ISpSx.js +0 -1
  106. package/dist/assets/index-De_Nmxpc.js +0 -357
  107. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-_OUQv6WN.js +0 -1
  108. package/dist/assets/packet-7NZHBO7P-lwb58iYx-C10L-hFO.js +0 -1
  109. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu--5742Zz5.js +0 -1
  110. package/dist/assets/radar-I7S5WNFK-7CKcb_l--BHQOivQG.js +0 -1
  111. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-BbRNCyKS.js +0 -1
  112. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--D0SwiYgD.js +0 -1
  113. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-DdB_RBGP.js +0 -1
  114. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-CeDMAu58.js +0 -1
  115. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-Bxnpzuaj.js +0 -1
  116. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-CWfgjlGg.js +0 -8
  117. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-DswVl6Qi.js +0 -1
  118. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-JquGkPwZ.js +0 -1
  119. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-Cv0QuPfn.js +0 -1
  120. package/server/waiting-state.spec.ts +0 -50
  121. package/server/waiting-state.ts +0 -29
package/README.md CHANGED
@@ -302,6 +302,7 @@ The Settings modal (⚙) persists per-user UI choices to `~/.mulmoterminal/confi
302
302
  | `userMcpServers` | `{ id, url }` HTTP MCP servers merged into the **single-view** Claude session's `--mcp-config` (a `localhost` URL is reached over `host.docker.internal` in the Docker sandbox). Takes effect on the next session. |
303
303
  | `buttons` | Header action buttons — see [Header buttons](#header-buttons). Omit to keep the defaults; set to replace them. |
304
304
  | `chips` | Header info chips. Omit to keep the default set; `[]` hides all built-ins. |
305
+ | `pushEnabled` | `true` to send a **Web Push** to your registered devices when a background task finishes. Off by default; only sends while the **RemoteHost** channel is connected (see below). |
305
306
 
306
307
  #### Header buttons
307
308
 
@@ -325,6 +326,14 @@ chime) or in the config file; the server streams that file at `GET /api/sound` a
325
326
  the client decodes it (falling back to the chime if it's missing or not audio). It's
326
327
  your own local file referenced by absolute path — nothing is added to the package.
327
328
 
329
+ **Web Push on task finish.** Enable `pushEnabled` in Settings to have the server send a
330
+ push (title = the project dir, body = the last prompt) to your registered devices each
331
+ time a **background** task finishes — the same signal as the attention chime, but for the
332
+ panes you're not watching. Delivery is handled by the separate `mulmoserver` `sendPush`
333
+ Cloud Function; MulmoTerminal only makes the call, and only while the **RemoteHost**
334
+ channel is connected (its Google sign-in supplies the notification auth). With RemoteHost
335
+ disconnected, or with no device registered, the toggle is a no-op.
336
+
328
337
  ### Per-directory settings (`<project>/.mulmoterminal.json`)
329
338
 
330
339
  Drop a `.mulmoterminal.json` in a project directory to give terminals opened **in
@@ -398,7 +407,9 @@ In dev, open the Vite URL; its proxy forwards `/ws`, `/ws/pubsub`, and `/api` to
398
407
 
399
408
  ## Scripts (Run menu)
400
409
 
401
- An empty grid cell's launcher (the directory picker) offers a **run a script** row
410
+ An empty grid cell's launcher sets the **Working directory** by typing, by a preset
411
+ chip, or with the **📁 folder button** (a native OS folder dialog). It also offers a
412
+ **run a script** row
402
413
  that launches project scripts (a dev server, tests, a build, …) **in that cell, in
403
414
  the directory the cell is pointed at** — so a whole workflow lives in one window
404
415
  alongside the Claude sessions. Scripts are **per-directory**: the cell reads the
@@ -755,7 +766,7 @@ same-origin-guarded.
755
766
  | `POST /api/transcribe`(`/model`…) | Voice-input transcription (Whisper, macOS). |
756
767
  | `POST /api/translation` | Runtime UI-string translation. |
757
768
  | `GET /api/remote-host/status` · `POST /api/remote-host/{connect,disconnect}` | Companion phone-client link. |
758
- | `POST /api/open-dir` · `POST /api/pick-file` | Reveal a dir in Finder/Explorer; OS file-picker → path. |
769
+ | `POST /api/open-dir` · `POST /api/pick-file` | Reveal a dir in Finder/Explorer; OS file-picker → path (`{ directory: true }` opens the folder picker — used by the launcher's Working-directory 📁 button). |
759
770
 
760
771
  ### WebSocket: `/ws` (terminal)
761
772
 
@@ -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-DAhbeSgr.js";import"./chunk-WYO6CB5R-B83L_z6I-BGsPsjAI.js";import"./chunk-VAUOI2AC-DrcykVNK-D4zp9mNB.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-BV_RK3Vr.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-Cfp31QX2.js";import"./chunk-WYO6CB5R-B83L_z6I-TrxMG8rr.js";import"./chunk-VAUOI2AC-DrcykVNK-yJ-tlNfF.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-Czit54cz.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-Cfp31QX2.js";export{e as createArchitectureServices};