mulmoterminal 0.8.0 → 0.9.1

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 (133) hide show
  1. package/README.md +41 -5
  2. package/dist/assets/{abnfDiagram-VRR7QNED-6nNByj6v-Ce1WbMGC.js → abnfDiagram-VRR7QNED-6nNByj6v-CVgYtC8A.js} +1 -1
  3. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-CcGK28Wb.js +1 -0
  4. package/dist/assets/{architectureDiagram-ZJ3FMSHR-Bgnyaj_i-l_QglMuj.js → architectureDiagram-ZJ3FMSHR-Bgnyaj_i-DIwUJtFo.js} +1 -1
  5. package/dist/assets/{blockDiagram-677ZJIJ3-DQ35o5E4-B7PBZdY-.js → blockDiagram-677ZJIJ3-DQ35o5E4-BOstxdgY.js} +1 -1
  6. package/dist/assets/{c4Diagram-LMCZKHZV-ClWZeiWo-Ddp2t63A.js → c4Diagram-LMCZKHZV-ClWZeiWo-CJgnuXMJ.js} +1 -1
  7. package/dist/assets/channel-Di5rtkx0-CJv7O5cW.js +1 -0
  8. package/dist/assets/{chunk-32BRIVSS-CCt9wtYd-Zqys0yUx.js → chunk-32BRIVSS-CCt9wtYd-D-DAaeXJ.js} +1 -1
  9. package/dist/assets/{chunk-52WLFC77-FbBbR4uI-DUyWsQQG.js → chunk-52WLFC77-FbBbR4uI-BgyQM603.js} +1 -1
  10. package/dist/assets/{chunk-C7G6YPKG-C87hlS9c-Cq_SmMH6.js → chunk-C7G6YPKG-C87hlS9c-CNU64g__.js} +1 -1
  11. package/dist/assets/{chunk-EX3LRPZG-BqGqMXLN-Sph0jyY5.js → chunk-EX3LRPZG-BqGqMXLN-BCZDGM-w.js} +1 -1
  12. package/dist/assets/{chunk-FWX5IMBZ-BkbSAAuW-BlO-Dd6B.js → chunk-FWX5IMBZ-BkbSAAuW-Bq9OtrcX.js} +2 -2
  13. package/dist/assets/{chunk-HOUHSVGY-Cxu0eDlh-CB1-bkOQ.js → chunk-HOUHSVGY-Cxu0eDlh-BIvtWbJ0.js} +1 -1
  14. package/dist/assets/{chunk-ICXQ74PX-hiraF_Xj-DL_g6Dk_.js → chunk-ICXQ74PX-hiraF_Xj-Dx5twF_S.js} +1 -1
  15. package/dist/assets/{chunk-MOJQB5TN-CqxshQHA-C1do_qle.js → chunk-MOJQB5TN-CqxshQHA-BV_RK3Vr.js} +1 -1
  16. package/dist/assets/{chunk-OGEWGWER-CjCr7ceX-Bphm1jnw.js → chunk-OGEWGWER-CjCr7ceX-DdaHiBxq.js} +1 -1
  17. package/dist/assets/{chunk-PUDLZKDR-Dx6M-vz1-BqWQHrIk.js → chunk-PUDLZKDR-Dx6M-vz1-DmN05gZD.js} +1 -1
  18. package/dist/assets/{chunk-Q4XR5HBZ-CZd-9lTB-DCx-gEjT.js → chunk-Q4XR5HBZ-CZd-9lTB-cw9QtxXY.js} +1 -1
  19. package/dist/assets/{chunk-V7JOEXUC-rI0xlC_O-C5XJW9gM.js → chunk-V7JOEXUC-rI0xlC_O-gsq823jB.js} +1 -1
  20. package/dist/assets/{chunk-VAUOI2AC-DrcykVNK-DNVpp2Bo.js → chunk-VAUOI2AC-DrcykVNK-D4zp9mNB.js} +1 -1
  21. package/dist/assets/{chunk-VR4S4FIN-O6iF8Yvf-uu4sPk_E.js → chunk-VR4S4FIN-O6iF8Yvf-CNstNe-T.js} +1 -1
  22. package/dist/assets/{chunk-WYO6CB5R-B83L_z6I-D-ILEUuT.js → chunk-WYO6CB5R-B83L_z6I-BGsPsjAI.js} +1 -1
  23. package/dist/assets/{chunk-ZGVPDNZ5-BpFv9JSP-B1byH7Ri.js → chunk-ZGVPDNZ5-BpFv9JSP-IiKGkWvT.js} +1 -1
  24. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-DdJSBc1F.js +1 -0
  25. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-DdJSBc1F.js +1 -0
  26. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-BIulluQj.js +1 -0
  27. package/dist/assets/{cynefinDiagram-TSTJHNR4-x0-0sQ15-D_ZPdHMW.js → cynefinDiagram-TSTJHNR4-x0-0sQ15-DKxBfSSe.js} +1 -1
  28. package/dist/assets/{dagre-VKFMJZFB-CQdfl-bx-B1T3S0FV.js → dagre-VKFMJZFB-CQdfl-bx-xPr09wi6.js} +1 -1
  29. package/dist/assets/{diagram-FQU43EPY-BOSB6VUb-4dUBHv_w.js → diagram-FQU43EPY-BOSB6VUb-BhBLu_3q.js} +1 -1
  30. package/dist/assets/{diagram-G47NLZAW-DLXrcXsN-B7k1DThA.js → diagram-G47NLZAW-DLXrcXsN-CFT5wbq3.js} +1 -1
  31. package/dist/assets/{diagram-NH7WQ7WH-BMQp1rkF-Pgg190OT.js → diagram-NH7WQ7WH-BMQp1rkF-OnMtnXwo.js} +1 -1
  32. package/dist/assets/{diagram-OA4YK3LP-D1wQ0vUj-D9NWXoRR.js → diagram-OA4YK3LP-D1wQ0vUj-Buf7sHLb.js} +1 -1
  33. package/dist/assets/{diagram-WEI45ONY-RR0DpF8R-B6gyFifz.js → diagram-WEI45ONY-RR0DpF8R-CiKo8dEV.js} +1 -1
  34. package/dist/assets/{ebnfDiagram-CCIWWBDH-M123uVJ8-Bq7bwZP7.js → ebnfDiagram-CCIWWBDH-M123uVJ8-BF7MJcAR.js} +1 -1
  35. package/dist/assets/{erDiagram-Q63AITRT-BWx_-PXG-BBuIT9tu.js → erDiagram-Q63AITRT-BWx_-PXG-CaNpcR0c.js} +1 -1
  36. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-D8Ivbop-.js +1 -0
  37. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-Dk5wVlnP.js +1 -0
  38. package/dist/assets/{ganttDiagram-NO4QXBWP-BOoJ1eTw-S7LYEVQU.js → ganttDiagram-NO4QXBWP-BOoJ1eTw-D43vlPZo.js} +1 -1
  39. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-MW0ISpSx.js +1 -0
  40. package/dist/assets/{gitGraphDiagram-IHSO6WYX-B2CJhk_G-BrDr5LgG.js → gitGraphDiagram-IHSO6WYX-B2CJhk_G-Plj2BffT.js} +1 -1
  41. package/dist/assets/index-3f30jaT0.css +1 -0
  42. package/dist/assets/index-De_Nmxpc.js +357 -0
  43. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-_OUQv6WN.js +1 -0
  44. package/dist/assets/{infoDiagram-FWYZ7A6U-Mp1X3pBP-l542FG7h.js → infoDiagram-FWYZ7A6U-Mp1X3pBP-CuA1P6ZB.js} +1 -1
  45. package/dist/assets/{ishikawaDiagram-FXEZZL3T-BNG7tkJu-CcYmE3rZ.js → ishikawaDiagram-FXEZZL3T-BNG7tkJu-BNMqzXxb.js} +1 -1
  46. package/dist/assets/{journeyDiagram-5HDEW3XC-Dbp_hY9X-8sbAzdt7.js → journeyDiagram-5HDEW3XC-Dbp_hY9X-NflQYiYP.js} +1 -1
  47. package/dist/assets/{kanban-definition-HUTT4EX6-DSTc5u3q-B4fcq4Yd.js → kanban-definition-HUTT4EX6-DSTc5u3q-DQm3IbIw.js} +1 -1
  48. package/dist/assets/{line-B1wBwzrY-BioBhEqP.js → line-B1wBwzrY-PYTdSGHu.js} +1 -1
  49. package/dist/assets/{marp-B82QTNqJ.js → marp-iErKCKYz.js} +1 -1
  50. package/dist/assets/{mermaid-parser.core-DC7NPJ_M-YbqcHI8U.js → mermaid-parser.core-DC7NPJ_M-DAhbeSgr.js} +2 -2
  51. package/dist/assets/{mermaid.core-DZM3Ha-E-2xRmGsJ0.js → mermaid.core-DZM3Ha-E-BNwp1SSa.js} +3 -3
  52. package/dist/assets/{mindmap-definition-LN4V7U3C-DYtgcMsY-BZWR0bBa.js → mindmap-definition-LN4V7U3C-DYtgcMsY-CdTgRgD3.js} +1 -1
  53. package/dist/assets/packet-7NZHBO7P-lwb58iYx-C10L-hFO.js +1 -0
  54. package/dist/assets/{pegDiagram-2B236MQR-C43eIpKM-CQpl0W1R.js → pegDiagram-2B236MQR-C43eIpKM-BoY9YcBj.js} +1 -1
  55. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu--5742Zz5.js +1 -0
  56. package/dist/assets/{pieDiagram-ENE6RG2P-BkTqgJyR-D2pqsEbd.js → pieDiagram-ENE6RG2P-BkTqgJyR-BvAMoz4E.js} +1 -1
  57. package/dist/assets/{quadrantDiagram-ABIIQ3AL-Bm1Zjm45-DYSLjuyi.js → quadrantDiagram-ABIIQ3AL-Bm1Zjm45-CGzER_DL.js} +1 -1
  58. package/dist/assets/radar-I7S5WNFK-7CKcb_l--BHQOivQG.js +1 -0
  59. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-BbRNCyKS.js +1 -0
  60. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--D0SwiYgD.js +1 -0
  61. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-DdB_RBGP.js +1 -0
  62. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-CeDMAu58.js +1 -0
  63. package/dist/assets/{railroadDiagram-RFXS5EU6-BkfbdeAs-CeM-YRhH.js → railroadDiagram-RFXS5EU6-BkfbdeAs-D3nWzhoi.js} +1 -1
  64. package/dist/assets/{requirementDiagram-TGXJPOKE-CrGTTjYg-5vdLxYpa.js → requirementDiagram-TGXJPOKE-CrGTTjYg-BXJOdcqX.js} +1 -1
  65. package/dist/assets/{sankeyDiagram-HTMAVEWB-rWXPf03Z-JPVcutnp.js → sankeyDiagram-HTMAVEWB-rWXPf03Z-BT7OPSSo.js} +1 -1
  66. package/dist/assets/{sequenceDiagram-DBY2YBRQ-nkJYWO2m-BxcX08nA.js → sequenceDiagram-DBY2YBRQ-nkJYWO2m-DUQmimHp.js} +1 -1
  67. package/dist/assets/{stateDiagram-2N3HPSRC-T4-clK8b-DihpQxVg.js → stateDiagram-2N3HPSRC-T4-clK8b-DLDU9NAl.js} +1 -1
  68. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-Bxnpzuaj.js +1 -0
  69. package/dist/assets/{swimlanes-5IMT3BWC-HmQNEntu-D3ChOi5U.js → swimlanes-5IMT3BWC-HmQNEntu-CiEjMDZR.js} +1 -1
  70. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-CWfgjlGg.js +8 -0
  71. package/dist/assets/{timeline-definition-FHXFAJF6-CNc9jSTP-BdGwxVIL.js → timeline-definition-FHXFAJF6-CNc9jSTP-qngINip4.js} +1 -1
  72. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-DswVl6Qi.js +1 -0
  73. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-JquGkPwZ.js +1 -0
  74. package/dist/assets/{vennDiagram-L72KCM5P-Dr3pTJ_0-xTmIjEaL.js → vennDiagram-L72KCM5P-Dr3pTJ_0-CI-qJgRs.js} +1 -1
  75. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-Cv0QuPfn.js +1 -0
  76. package/dist/assets/{wardleyDiagram-EHGQE667-DSFc7ZZa-C03D4kJr.js → wardleyDiagram-EHGQE667-DSFc7ZZa-DlPPC65K.js} +1 -1
  77. package/dist/assets/{xychartDiagram-FW5EYKEG-BP0Nn4Pp-DsSSHDBJ.js → xychartDiagram-FW5EYKEG-BP0Nn4Pp-BinlTtjN.js} +1 -1
  78. package/dist/index.html +2 -2
  79. package/package.json +14 -11
  80. package/server/activity-hook.spec.ts +37 -0
  81. package/server/activity-hook.ts +28 -0
  82. package/server/app-config.spec.ts +2 -2
  83. package/server/app-config.ts +14 -29
  84. package/server/command-summary.ts +6 -4
  85. package/server/config-routes.ts +13 -17
  86. package/server/config-schema.spec.ts +123 -0
  87. package/server/config-schema.ts +238 -0
  88. package/server/cwd-presets.ts +1 -5
  89. package/server/dir-config.spec.ts +45 -3
  90. package/server/dir-config.ts +32 -74
  91. package/server/header-config.spec.ts +45 -6
  92. package/server/header-config.ts +52 -44
  93. package/server/header-context.ts +1 -0
  94. package/server/header-resolve.spec.ts +48 -1
  95. package/server/header-resolve.ts +19 -14
  96. package/server/header-title.spec.ts +156 -0
  97. package/server/header-title.ts +129 -0
  98. package/server/index.ts +305 -52
  99. package/server/install-config-skill.spec.ts +103 -0
  100. package/server/install-config-skill.ts +62 -0
  101. package/server/pr-for-branch.spec.ts +50 -0
  102. package/server/pr-for-branch.ts +58 -0
  103. package/server/session-resolve.spec.ts +41 -0
  104. package/server/session-resolve.ts +37 -0
  105. package/server/skills/mulmoterminal-config/SKILL.md +216 -0
  106. package/server/skills/mulmoterminal-config/palettes.json +167 -0
  107. package/server/transcript.spec.ts +95 -0
  108. package/server/transcript.ts +61 -0
  109. package/server/waiting-state.spec.ts +50 -0
  110. package/server/waiting-state.ts +29 -0
  111. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-CkMBxcjf.js +0 -1
  112. package/dist/assets/channel-Di5rtkx0-CYQQVi2N.js +0 -1
  113. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-Bzx8Q5qy.js +0 -1
  114. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-Bzx8Q5qy.js +0 -1
  115. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-CGx24Ele.js +0 -1
  116. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-C9YZ30Wv.js +0 -1
  117. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-DhOuIXQo.js +0 -1
  118. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-CAvO-lxi.js +0 -1
  119. package/dist/assets/index-B2YpCMoV.css +0 -1
  120. package/dist/assets/index-kwYCy5ON.js +0 -357
  121. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-DvahfbDn.js +0 -1
  122. package/dist/assets/packet-7NZHBO7P-lwb58iYx-Buaj8ce2.js +0 -1
  123. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-Cb9jy6Ak.js +0 -1
  124. package/dist/assets/radar-I7S5WNFK-7CKcb_l--CsSL-fa_.js +0 -1
  125. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-wK2xnWS3.js +0 -1
  126. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--Ceaeq1Pr.js +0 -1
  127. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-fogZbeWf.js +0 -1
  128. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-mkHR05ng.js +0 -1
  129. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-DtpIS_aL.js +0 -1
  130. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-DdAPDSsw.js +0 -8
  131. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-BGcDmSH1.js +0 -1
  132. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-Clh2VUDB.js +0 -1
  133. 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. |
@@ -299,6 +300,23 @@ The Settings modal (⚙) persists per-user UI choices to `~/.mulmoterminal/confi
299
300
  | `prRepos` | `owner/repo` entries whose open PRs/issues the cross-repo **PRs & Issues** view aggregates (via your `gh` login). |
300
301
  | `launchers` | `{ label, command }` entries offered in a grid cell's launcher besides Claude — a plain shell, `codex`, any interactive command. |
301
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
+ | `buttons` | Header action buttons — see [Header buttons](#header-buttons). Omit to keep the defaults; set to replace them. |
304
+ | `chips` | Header info chips. Omit to keep the default set; `[]` hides all built-ins. |
305
+
306
+ #### Header buttons
307
+
308
+ Each terminal header shows configurable **action buttons**. Omitting `buttons` (globally or per-dir)
309
+ keeps the built-in defaults — a **file-path picker** (📎) and an **OS file-manager reveal** (📂).
310
+ Setting `buttons` (at either level) **replaces** the defaults with your list, so you can drop, reorder,
311
+ or swap them — e.g. add the in-app **📁 file explorer** with `"open": { "files": "${dir}" }`.
312
+ A button has an `id`, `label`, and a `run` of `"shell"` (run a command), `"input"` (send text to the
313
+ agent), or `"open"`. An `open` button targets one of `url` / `reveal` (OS file manager) / `files`
314
+ (in-app explorer) / `view` (a built-in overlay) / `terminal` (a dir → a new cell running `$SHELL`,
315
+ opened next to the current one) / `pr: true` (open the current branch's PR — the button is hidden when
316
+ there's no open PR) / `pickFile: true` (OS file dialog → insert the path).
317
+ `${dir}`, `${branch}`, `${repo}`, … substitute live context, and `when` (e.g. `"isGitRepo"`) gates
318
+ visibility. The `/mulmoterminal-config` skill writes a valid config interactively; per-dir buttons
319
+ merge over the global ones by `id`.
302
320
 
303
321
  **Attention sound.** The default chime is generated with the Web Audio API — **no
304
322
  audio file is bundled**, so the npm package stays light and has no media-licensing
@@ -443,7 +461,8 @@ the last 32 KB of output. See
443
461
 
444
462
  ## Files view (browse & edit)
445
463
 
446
- Every terminal header has a **📁 Files** button that opens a full-screen file explorer
464
+ A terminal header can carry a **📁 Files** button add it as a [header button](#header-buttons)
465
+ (`"open": { "files": "${dir}" }`) — that opens a full-screen file explorer
447
466
  rooted at **that terminal's project directory** — so after Claude says "wrote `foo.md`"
448
467
  you can jump straight there to read or edit it. The left pane is a lazy-loaded directory
449
468
  tree; clicking a file opens it in a **CodeMirror** editor (Markdown / JS-TS / JSON
@@ -937,15 +956,31 @@ has its `/` and `.` characters replaced with `-` (e.g.
937
956
  A session's display **title** is derived by scanning its JSONL for, in order of
938
957
  preference:
939
958
 
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
959
+ 1. a live **AI title** the server generated for the session this run (see below),
960
+ 2. else the latest `ai-title` record's `aiTitle` (e.g. written by MulmoClaude),
961
+ 3. else the latest `last-prompt` record's `lastPrompt`,
962
+ 4. else the first real user message (slash/local-command wrappers like
943
963
  `<local-command-…>` are skipped),
944
- 4. else `"(untitled session)"`.
964
+ 5. else `"(untitled session)"`.
945
965
 
946
966
  In-memory sessions not yet persisted show as `"New session"` until their file
947
967
  appears, at which point the on-disk title takes over.
948
968
 
969
+ ### AI header title
970
+
971
+ The raw last prompt is a poor cell-header label once a session becomes a
972
+ back-and-forth: a follow-up is either a trivial ack (`ok`, `はい` — skipped, so the
973
+ header keeps showing the now-stale opening task) or context-dependent (`2番目にして`
974
+ — meaningless on its own). So the server summarizes the **recent turns** with a cheap
975
+ model (`MT_TITLE_MODEL`, default `haiku`) into a short title and shows it in the cell
976
+ header (falling back to the last prompt when there's no title yet).
977
+
978
+ Generation is kept low-cost — it runs at a turn's `Stop` (when the reply is on disk)
979
+ only when a title is **due**: none yet, the newest prompt was a trivial/context-dependent
980
+ ack (so the raw last prompt would be stale), or every few turns to keep a long session's
981
+ title current. The title lives in memory (never written into Claude's own transcript); a
982
+ resumed session falls back to any on-disk `ai-title`.
983
+
949
984
  ---
950
985
 
951
986
  ## Project structure
@@ -964,6 +999,7 @@ server/
964
999
  files-browse.ts file tree + read/write (contained to project root)
965
1000
  scripts.ts Run-menu script.json loader
966
1001
  command-summary.ts POST /api/command/summarize (claude -p headless)
1002
+ header-title.ts cheap-model AI title for the cell header (recent turns)
967
1003
  app-config.ts, config-routes.ts, dir-config.ts user + per-directory config
968
1004
  plugins-registry.ts, mcp/ GUI plugin registry + per-session MCP broker
969
1005
  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-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};
@@ -0,0 +1 @@
1
+ import{f as e}from"./mermaid-parser.core-DC7NPJ_M-DAhbeSgr.js";export{e as createArchitectureServices};