mulmoterminal 0.8.0 → 0.9.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 (122) hide show
  1. package/README.md +22 -4
  2. package/dist/assets/{abnfDiagram-VRR7QNED-6nNByj6v-Ce1WbMGC.js → abnfDiagram-VRR7QNED-6nNByj6v-CcrZYOgs.js} +1 -1
  3. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-QInGApkV.js +1 -0
  4. package/dist/assets/{architectureDiagram-ZJ3FMSHR-Bgnyaj_i-l_QglMuj.js → architectureDiagram-ZJ3FMSHR-Bgnyaj_i-CUuVwmX4.js} +1 -1
  5. package/dist/assets/{blockDiagram-677ZJIJ3-DQ35o5E4-B7PBZdY-.js → blockDiagram-677ZJIJ3-DQ35o5E4-CvxU8aZe.js} +1 -1
  6. package/dist/assets/{c4Diagram-LMCZKHZV-ClWZeiWo-Ddp2t63A.js → c4Diagram-LMCZKHZV-ClWZeiWo-D8f1kYY_.js} +1 -1
  7. package/dist/assets/channel-Di5rtkx0-DHqL817r.js +1 -0
  8. package/dist/assets/{chunk-32BRIVSS-CCt9wtYd-Zqys0yUx.js → chunk-32BRIVSS-CCt9wtYd-Db_FZIf1.js} +1 -1
  9. package/dist/assets/{chunk-52WLFC77-FbBbR4uI-DUyWsQQG.js → chunk-52WLFC77-FbBbR4uI-7n2yHJ2K.js} +1 -1
  10. package/dist/assets/{chunk-C7G6YPKG-C87hlS9c-Cq_SmMH6.js → chunk-C7G6YPKG-C87hlS9c-DpkxPQKG.js} +1 -1
  11. package/dist/assets/{chunk-EX3LRPZG-BqGqMXLN-Sph0jyY5.js → chunk-EX3LRPZG-BqGqMXLN-BgqbD-Ak.js} +1 -1
  12. package/dist/assets/{chunk-FWX5IMBZ-BkbSAAuW-BlO-Dd6B.js → chunk-FWX5IMBZ-BkbSAAuW-BmYnGiYn.js} +2 -2
  13. package/dist/assets/{chunk-HOUHSVGY-Cxu0eDlh-CB1-bkOQ.js → chunk-HOUHSVGY-Cxu0eDlh-TqsiFF7j.js} +1 -1
  14. package/dist/assets/{chunk-ICXQ74PX-hiraF_Xj-DL_g6Dk_.js → chunk-ICXQ74PX-hiraF_Xj-Cx0hIueU.js} +1 -1
  15. package/dist/assets/{chunk-MOJQB5TN-CqxshQHA-C1do_qle.js → chunk-MOJQB5TN-CqxshQHA-pSbnAJ7U.js} +1 -1
  16. package/dist/assets/{chunk-OGEWGWER-CjCr7ceX-Bphm1jnw.js → chunk-OGEWGWER-CjCr7ceX-C2qBJ2Pg.js} +1 -1
  17. package/dist/assets/{chunk-PUDLZKDR-Dx6M-vz1-BqWQHrIk.js → chunk-PUDLZKDR-Dx6M-vz1-DvP2VeJc.js} +1 -1
  18. package/dist/assets/{chunk-Q4XR5HBZ-CZd-9lTB-DCx-gEjT.js → chunk-Q4XR5HBZ-CZd-9lTB-B9gNYRb9.js} +1 -1
  19. package/dist/assets/{chunk-V7JOEXUC-rI0xlC_O-C5XJW9gM.js → chunk-V7JOEXUC-rI0xlC_O-W1oR2e7R.js} +1 -1
  20. package/dist/assets/{chunk-VAUOI2AC-DrcykVNK-DNVpp2Bo.js → chunk-VAUOI2AC-DrcykVNK-UQ8qJq-D.js} +1 -1
  21. package/dist/assets/{chunk-VR4S4FIN-O6iF8Yvf-uu4sPk_E.js → chunk-VR4S4FIN-O6iF8Yvf-BEZ-hkFq.js} +1 -1
  22. package/dist/assets/{chunk-WYO6CB5R-B83L_z6I-D-ILEUuT.js → chunk-WYO6CB5R-B83L_z6I-zjc6vart.js} +1 -1
  23. package/dist/assets/{chunk-ZGVPDNZ5-BpFv9JSP-B1byH7Ri.js → chunk-ZGVPDNZ5-BpFv9JSP-WgpTVFz9.js} +1 -1
  24. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-VLjGJAJO.js +1 -0
  25. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-VLjGJAJO.js +1 -0
  26. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-DeDS-5by.js +1 -0
  27. package/dist/assets/{cynefinDiagram-TSTJHNR4-x0-0sQ15-D_ZPdHMW.js → cynefinDiagram-TSTJHNR4-x0-0sQ15-D6l6qqRO.js} +1 -1
  28. package/dist/assets/{dagre-VKFMJZFB-CQdfl-bx-B1T3S0FV.js → dagre-VKFMJZFB-CQdfl-bx-BVKoii9B.js} +1 -1
  29. package/dist/assets/{diagram-FQU43EPY-BOSB6VUb-4dUBHv_w.js → diagram-FQU43EPY-BOSB6VUb-OjDjlvVc.js} +1 -1
  30. package/dist/assets/{diagram-G47NLZAW-DLXrcXsN-B7k1DThA.js → diagram-G47NLZAW-DLXrcXsN-TSzEtHdz.js} +1 -1
  31. package/dist/assets/{diagram-NH7WQ7WH-BMQp1rkF-Pgg190OT.js → diagram-NH7WQ7WH-BMQp1rkF-6YpHLSkw.js} +1 -1
  32. package/dist/assets/{diagram-OA4YK3LP-D1wQ0vUj-D9NWXoRR.js → diagram-OA4YK3LP-D1wQ0vUj-D080UfcD.js} +1 -1
  33. package/dist/assets/{diagram-WEI45ONY-RR0DpF8R-B6gyFifz.js → diagram-WEI45ONY-RR0DpF8R-DAhnbGro.js} +1 -1
  34. package/dist/assets/{ebnfDiagram-CCIWWBDH-M123uVJ8-Bq7bwZP7.js → ebnfDiagram-CCIWWBDH-M123uVJ8-CgYjblvQ.js} +1 -1
  35. package/dist/assets/{erDiagram-Q63AITRT-BWx_-PXG-BBuIT9tu.js → erDiagram-Q63AITRT-BWx_-PXG-B-9YiTfM.js} +1 -1
  36. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-CF7wgGuX.js +1 -0
  37. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-CfWH0Tbu.js +1 -0
  38. package/dist/assets/{ganttDiagram-NO4QXBWP-BOoJ1eTw-S7LYEVQU.js → ganttDiagram-NO4QXBWP-BOoJ1eTw-DpUm7W4G.js} +1 -1
  39. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-C2PnVeMX.js +1 -0
  40. package/dist/assets/{gitGraphDiagram-IHSO6WYX-B2CJhk_G-BrDr5LgG.js → gitGraphDiagram-IHSO6WYX-B2CJhk_G-CXhq2YaR.js} +1 -1
  41. package/dist/assets/index-83utxopd.js +357 -0
  42. package/dist/assets/{index-B2YpCMoV.css → index-BVNLkhp4.css} +1 -1
  43. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-CLk5uJ5t.js +1 -0
  44. package/dist/assets/{infoDiagram-FWYZ7A6U-Mp1X3pBP-l542FG7h.js → infoDiagram-FWYZ7A6U-Mp1X3pBP-BH6ylmwo.js} +1 -1
  45. package/dist/assets/{ishikawaDiagram-FXEZZL3T-BNG7tkJu-CcYmE3rZ.js → ishikawaDiagram-FXEZZL3T-BNG7tkJu-DKlrUTwv.js} +1 -1
  46. package/dist/assets/{journeyDiagram-5HDEW3XC-Dbp_hY9X-8sbAzdt7.js → journeyDiagram-5HDEW3XC-Dbp_hY9X-B0zuSRxn.js} +1 -1
  47. package/dist/assets/{kanban-definition-HUTT4EX6-DSTc5u3q-B4fcq4Yd.js → kanban-definition-HUTT4EX6-DSTc5u3q-B2UMHQ_t.js} +1 -1
  48. package/dist/assets/{line-B1wBwzrY-BioBhEqP.js → line-B1wBwzrY-NlyrzQ8H.js} +1 -1
  49. package/dist/assets/{marp-B82QTNqJ.js → marp-Ak2po4xM.js} +1 -1
  50. package/dist/assets/{mermaid-parser.core-DC7NPJ_M-YbqcHI8U.js → mermaid-parser.core-DC7NPJ_M-uogn_ZQO.js} +2 -2
  51. package/dist/assets/{mermaid.core-DZM3Ha-E-2xRmGsJ0.js → mermaid.core-DZM3Ha-E-CTwQuxp4.js} +3 -3
  52. package/dist/assets/{mindmap-definition-LN4V7U3C-DYtgcMsY-BZWR0bBa.js → mindmap-definition-LN4V7U3C-DYtgcMsY-CF8BKsai.js} +1 -1
  53. package/dist/assets/packet-7NZHBO7P-lwb58iYx-3tUu63Qj.js +1 -0
  54. package/dist/assets/{pegDiagram-2B236MQR-C43eIpKM-CQpl0W1R.js → pegDiagram-2B236MQR-C43eIpKM-Byur3AI9.js} +1 -1
  55. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-DiT3qAWP.js +1 -0
  56. package/dist/assets/{pieDiagram-ENE6RG2P-BkTqgJyR-D2pqsEbd.js → pieDiagram-ENE6RG2P-BkTqgJyR-LmzmCqEK.js} +1 -1
  57. package/dist/assets/{quadrantDiagram-ABIIQ3AL-Bm1Zjm45-DYSLjuyi.js → quadrantDiagram-ABIIQ3AL-Bm1Zjm45-CvxrZG72.js} +1 -1
  58. package/dist/assets/radar-I7S5WNFK-7CKcb_l--C_JwXiDu.js +1 -0
  59. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-C30t7Eqd.js +1 -0
  60. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--CGjr3zMY.js +1 -0
  61. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-BLsfAiEh.js +1 -0
  62. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-DpWrKO8r.js +1 -0
  63. package/dist/assets/{railroadDiagram-RFXS5EU6-BkfbdeAs-CeM-YRhH.js → railroadDiagram-RFXS5EU6-BkfbdeAs-Dmaz7qwx.js} +1 -1
  64. package/dist/assets/{requirementDiagram-TGXJPOKE-CrGTTjYg-5vdLxYpa.js → requirementDiagram-TGXJPOKE-CrGTTjYg-DLd9Qy31.js} +1 -1
  65. package/dist/assets/{sankeyDiagram-HTMAVEWB-rWXPf03Z-JPVcutnp.js → sankeyDiagram-HTMAVEWB-rWXPf03Z-DuYt79nd.js} +1 -1
  66. package/dist/assets/{sequenceDiagram-DBY2YBRQ-nkJYWO2m-BxcX08nA.js → sequenceDiagram-DBY2YBRQ-nkJYWO2m-CN2BTBIe.js} +1 -1
  67. package/dist/assets/{stateDiagram-2N3HPSRC-T4-clK8b-DihpQxVg.js → stateDiagram-2N3HPSRC-T4-clK8b-CQkZXPtf.js} +1 -1
  68. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-TfY_5w1P.js +1 -0
  69. package/dist/assets/{swimlanes-5IMT3BWC-HmQNEntu-D3ChOi5U.js → swimlanes-5IMT3BWC-HmQNEntu-BxSqfUwA.js} +1 -1
  70. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-BXdsLx4g.js +8 -0
  71. package/dist/assets/{timeline-definition-FHXFAJF6-CNc9jSTP-BdGwxVIL.js → timeline-definition-FHXFAJF6-CNc9jSTP-XW10LDWA.js} +1 -1
  72. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-BbYxhc6_.js +1 -0
  73. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-C4IdHouD.js +1 -0
  74. package/dist/assets/{vennDiagram-L72KCM5P-Dr3pTJ_0-xTmIjEaL.js → vennDiagram-L72KCM5P-Dr3pTJ_0-BV8NVuqb.js} +1 -1
  75. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-BlJFib5h.js +1 -0
  76. package/dist/assets/{wardleyDiagram-EHGQE667-DSFc7ZZa-C03D4kJr.js → wardleyDiagram-EHGQE667-DSFc7ZZa-CPdAgmn_.js} +1 -1
  77. package/dist/assets/{xychartDiagram-FW5EYKEG-BP0Nn4Pp-DsSSHDBJ.js → xychartDiagram-FW5EYKEG-BP0Nn4Pp-CJCoz2E2.js} +1 -1
  78. package/dist/index.html +2 -2
  79. package/package.json +14 -11
  80. package/server/app-config.ts +11 -27
  81. package/server/command-summary.ts +6 -4
  82. package/server/config-routes.ts +2 -11
  83. package/server/config-schema.spec.ts +123 -0
  84. package/server/config-schema.ts +226 -0
  85. package/server/cwd-presets.ts +1 -5
  86. package/server/dir-config.spec.ts +43 -1
  87. package/server/dir-config.ts +29 -72
  88. package/server/header-config.ts +23 -37
  89. package/server/header-resolve.ts +2 -12
  90. package/server/header-title.spec.ts +130 -0
  91. package/server/header-title.ts +112 -0
  92. package/server/index.ts +126 -24
  93. package/server/install-config-skill.spec.ts +103 -0
  94. package/server/install-config-skill.ts +62 -0
  95. package/server/session-resolve.spec.ts +41 -0
  96. package/server/session-resolve.ts +37 -0
  97. package/server/skills/mulmoterminal-config/SKILL.md +208 -0
  98. package/server/skills/mulmoterminal-config/palettes.json +167 -0
  99. package/server/transcript.spec.ts +52 -0
  100. package/server/transcript.ts +45 -0
  101. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-CkMBxcjf.js +0 -1
  102. package/dist/assets/channel-Di5rtkx0-CYQQVi2N.js +0 -1
  103. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-Bzx8Q5qy.js +0 -1
  104. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-Bzx8Q5qy.js +0 -1
  105. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-CGx24Ele.js +0 -1
  106. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-C9YZ30Wv.js +0 -1
  107. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-DhOuIXQo.js +0 -1
  108. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-CAvO-lxi.js +0 -1
  109. package/dist/assets/index-kwYCy5ON.js +0 -357
  110. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-DvahfbDn.js +0 -1
  111. package/dist/assets/packet-7NZHBO7P-lwb58iYx-Buaj8ce2.js +0 -1
  112. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-Cb9jy6Ak.js +0 -1
  113. package/dist/assets/radar-I7S5WNFK-7CKcb_l--CsSL-fa_.js +0 -1
  114. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-wK2xnWS3.js +0 -1
  115. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--Ceaeq1Pr.js +0 -1
  116. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-fogZbeWf.js +0 -1
  117. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-mkHR05ng.js +0 -1
  118. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-DtpIS_aL.js +0 -1
  119. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-DdAPDSsw.js +0 -8
  120. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-BGcDmSH1.js +0 -1
  121. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-Clh2VUDB.js +0 -1
  122. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-BnqfBQz5.js +0 -1
package/README.md CHANGED
@@ -270,6 +270,7 @@ the server runs without one.
270
270
  | `CLAUDE_BIN` | `claude` | The Claude Code binary to spawn. |
271
271
  | `CLAUDE_CWD` | current dir | Working directory each `claude` PTY runs in; determines which project's sessions the sidebar lists. Via `npx mulmoterminal` it defaults to the directory you ran the command from (override with `--cwd <dir>`, relative allowed); when the server is run directly it falls back to `~/mulmoclaude`. A value read from `.env` must be an absolute path (`~` is not expanded). |
272
272
  | `CLAUDE_PERMISSION_MODE` | `auto` | Permission mode passed to each `claude` spawn. |
273
+ | `MT_TITLE_MODEL` | `haiku` | Model used for the cell header's AI title (a cheap/fast model summarizing the recent turns). Accepts a `--model` alias or a full model id. |
273
274
  | `CODEX_BIN` | `codex` | The Codex CLI binary to spawn. |
274
275
  | `CODEX_MODEL`| codex default | Model passed to Codex as `--model` (unset = Codex's own default). |
275
276
  | `CODEX_HOME` | `~/.codex` | Codex home — where its session rollouts and MulmoTerminal-mirrored skills live. |
@@ -937,15 +938,31 @@ has its `/` and `.` characters replaced with `-` (e.g.
937
938
  A session's display **title** is derived by scanning its JSONL for, in order of
938
939
  preference:
939
940
 
940
- 1. the latest `ai-title` record's `aiTitle`,
941
- 2. else the latest `last-prompt` record's `lastPrompt`,
942
- 3. else the first real user message (slash/local-command wrappers like
941
+ 1. a live **AI title** the server generated for the session this run (see below),
942
+ 2. else the latest `ai-title` record's `aiTitle` (e.g. written by MulmoClaude),
943
+ 3. else the latest `last-prompt` record's `lastPrompt`,
944
+ 4. else the first real user message (slash/local-command wrappers like
943
945
  `<local-command-…>` are skipped),
944
- 4. else `"(untitled session)"`.
946
+ 5. else `"(untitled session)"`.
945
947
 
946
948
  In-memory sessions not yet persisted show as `"New session"` until their file
947
949
  appears, at which point the on-disk title takes over.
948
950
 
951
+ ### AI header title
952
+
953
+ The raw last prompt is a poor cell-header label once a session becomes a
954
+ back-and-forth: a follow-up is either a trivial ack (`ok`, `はい` — skipped, so the
955
+ header keeps showing the now-stale opening task) or context-dependent (`2番目にして`
956
+ — meaningless on its own). So the server summarizes the **recent turns** with a cheap
957
+ model (`MT_TITLE_MODEL`, default `haiku`) into a short title and shows it in the cell
958
+ header (falling back to the last prompt when there's no title yet).
959
+
960
+ Generation is kept low-cost — it runs at a turn's `Stop` (when the reply is on disk)
961
+ only when a title is **due**: none yet, the newest prompt was a trivial/context-dependent
962
+ ack (so the raw last prompt would be stale), or every few turns to keep a long session's
963
+ title current. The title lives in memory (never written into Claude's own transcript); a
964
+ resumed session falls back to any on-disk `ai-title`.
965
+
949
966
  ---
950
967
 
951
968
  ## Project structure
@@ -964,6 +981,7 @@ server/
964
981
  files-browse.ts file tree + read/write (contained to project root)
965
982
  scripts.ts Run-menu script.json loader
966
983
  command-summary.ts POST /api/command/summarize (claude -p headless)
984
+ header-title.ts cheap-model AI title for the cell header (recent turns)
967
985
  app-config.ts, config-routes.ts, dir-config.ts user + per-directory config
968
986
  plugins-registry.ts, mcp/ GUI plugin registry + per-session MCP broker
969
987
  backends/ wiki, collections, feeds, accounting, notifier,
@@ -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-YbqcHI8U.js";import"./chunk-WYO6CB5R-B83L_z6I-D-ILEUuT.js";import"./chunk-VAUOI2AC-DrcykVNK-DNVpp2Bo.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-C1do_qle.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-uogn_ZQO.js";import"./chunk-WYO6CB5R-B83L_z6I-zjc6vart.js";import"./chunk-VAUOI2AC-DrcykVNK-UQ8qJq-D.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-pSbnAJ7U.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-uogn_ZQO.js";export{e as createArchitectureServices};