mulmoterminal 2.5.3 → 2.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.
- package/README.md +9 -9
- package/bin/mulmoterminal.js +4 -1
- package/common/toolGroups.ts +23 -5
- package/dist/assets/{abnfDiagram-VRR7QNED-RjiYivmv-CkfTvNiT.js → abnfDiagram-VRR7QNED-RjiYivmv-2UuooAL1.js} +1 -1
- package/dist/assets/architecture-TIHT7OUA-0NsD2xW1-BgkdTJQE.js +1 -0
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-3nWA91tG-DU5fnnYi.js → architectureDiagram-ZJ3FMSHR-3nWA91tG-Cadi87eN.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-BPuAJQRW-DJtyRfct.js → blockDiagram-677ZJIJ3-BPuAJQRW-DqOBzK4r.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-C0LAqQso-CaAB4hIh.js → c4Diagram-LMCZKHZV-C0LAqQso-Czc9LUxD.js} +1 -1
- package/dist/assets/channel-7wUqSdoX-C1cie6OA.js +1 -0
- package/dist/assets/{chunk-32BRIVSS-BRrYpgtb-C2pc6s6p.js → chunk-32BRIVSS-BRrYpgtb-DPioxLNJ.js} +1 -1
- package/dist/assets/{chunk-52WLFC77-BJ-ss3Xr-BiDQ5LS-.js → chunk-52WLFC77-BJ-ss3Xr-BGc0pGjo.js} +1 -1
- package/dist/assets/{chunk-C7G6YPKG-BZEucKEL-B6NLudrF.js → chunk-C7G6YPKG-BZEucKEL-C4mkPiqB.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-DLS6FBN1-Dydj9mRL.js → chunk-EX3LRPZG-DLS6FBN1-C3Wn7cGn.js} +1 -1
- package/dist/assets/chunk-FWX5IMBZ-DHLSFw1H-C8DnOSSj.js +2 -0
- package/dist/assets/{chunk-HOUHSVGY-Bhlt8hXJ-460OsWXy.js → chunk-HOUHSVGY-Bhlt8hXJ-BT_GFYXY.js} +1 -1
- package/dist/assets/{chunk-ICXQ74PX-DwgHBX_g-CSp9RB18.js → chunk-ICXQ74PX-DwgHBX_g-DY-sDZ2-.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-CMZRaeqt-CC-mdXDP.js → chunk-MOJQB5TN-CMZRaeqt-DvOpObYg.js} +1 -1
- package/dist/assets/{chunk-OGEWGWER-8Qy4a8b5-nrJtDZ0I.js → chunk-OGEWGWER-8Qy4a8b5-BxAWKfDq.js} +1 -1
- package/dist/assets/{chunk-PUDLZKDR-DcrWQRYh-D7s7UkTC.js → chunk-PUDLZKDR-DcrWQRYh-HeYWroWP.js} +1 -1
- package/dist/assets/{chunk-Q4XR5HBZ-ZXVGkG8Z-Vjuup2uc.js → chunk-Q4XR5HBZ-ZXVGkG8Z-Cqn2FjJe.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-DmGdheTX-V1zSMg_1.js → chunk-V7JOEXUC-DmGdheTX-WySfFBLu.js} +1 -1
- package/dist/assets/{chunk-VAUOI2AC-CS9QJ4yz-C1PM97Ei.js → chunk-VAUOI2AC-CS9QJ4yz-xhVI0AT_.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-C6a91eNY-zf8Ln3gQ.js → chunk-VR4S4FIN-C6a91eNY-Dawtxx1M.js} +1 -1
- package/dist/assets/{chunk-WYO6CB5R-BlzOfotS-CgOwOaF2.js → chunk-WYO6CB5R-BlzOfotS-cPQQuq_p.js} +1 -1
- package/dist/assets/{chunk-ZGVPDNZ5-BYwxNFTK-C17Ongqc.js → chunk-ZGVPDNZ5-BYwxNFTK-CwEy22EH.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-BYlRi6YQ-Do5m3IoG.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-BCHaYHxj-Do5m3IoG.js +1 -0
- package/dist/assets/cynefin-VYW2F7L2-CGYr2F6h-DwN-y4W_.js +1 -0
- package/dist/assets/{cynefinDiagram-TSTJHNR4-DHA9iPo--rvKNlp57.js → cynefinDiagram-TSTJHNR4-DHA9iPo--6gP3lGiQ.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB--oJKqXBZ-DAPicxb0.js → dagre-VKFMJZFB--oJKqXBZ-Ogb4ZCJY.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-CcJCB9bG-Cwk0uscZ.js → diagram-FQU43EPY-CcJCB9bG-En7Wv4VU.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-C_o-WGG1-CLLr3WWX.js → diagram-G47NLZAW-C_o-WGG1-CvfDKE9B.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-CXJCYvY--YbeWvGrQ.js → diagram-NH7WQ7WH-CXJCYvY--D_SuUUUL.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-BMzeJ87A-CCzLGMoX.js → diagram-OA4YK3LP-BMzeJ87A-COaQX8ss.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-D_93NKqo-C_vctp-i.js → diagram-WEI45ONY-D_93NKqo-B5qjqS3m.js} +1 -1
- package/dist/assets/dist-CBx3SN5Y.js +9 -0
- package/dist/assets/dist-CXRReMvS.js +1 -0
- package/dist/assets/dist-CeY8Kgqb.js +1 -0
- package/dist/assets/dist-Ci7pnEU6.js +11 -0
- package/dist/assets/dist-DyY2Odgu.js +1 -0
- package/dist/assets/dist-FzB0wwv6.js +1 -0
- package/dist/assets/dist-IEKl3ifz.js +11 -0
- package/dist/assets/dist-Lnp6Clqz.js +1 -0
- package/dist/assets/dist-berHSMWa.js +1 -0
- package/dist/assets/dist-kXEjeiqx.js +2 -0
- package/dist/assets/{ebnfDiagram-CCIWWBDH-CVai1Ii9-C9RE0jib.js → ebnfDiagram-CCIWWBDH-CVai1Ii9-Bbl_CbGD.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-CiABnA0s-DNe_dsG7.js → erDiagram-Q63AITRT-CiABnA0s-DtNjq60k.js} +1 -1
- package/dist/assets/eventmodeling-45OFAUF4-CWmqhm3a-EIcAkJu9.js +1 -0
- package/dist/assets/flowDiagram-23GEKE2U-DKSB5AiY-BLvmawCu.js +1 -0
- package/dist/assets/{ganttDiagram-NO4QXBWP-DQZvdFo1-D0fBB7vz.js → ganttDiagram-NO4QXBWP-DQZvdFo1-Dtybxb5k.js} +1 -1
- package/dist/assets/gitGraph-TEB2WS4Q-BR9qPwdN-CWvVulXn.js +1 -0
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-C2ovBouh-_9JEvhUj.js → gitGraphDiagram-IHSO6WYX-C2ovBouh-CibskzGI.js} +1 -1
- package/dist/assets/index-B1LdU5cE.js +610 -0
- package/dist/assets/index-Dwz79YwY.css +1 -0
- package/dist/assets/info-DKCQHKI2-Dplx5kMp-CBgSXevA.js +1 -0
- package/dist/assets/{infoDiagram-FWYZ7A6U-7UnoB5AP-sf0LZ0TR.js → infoDiagram-FWYZ7A6U-7UnoB5AP-WyZaP5rz.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-ByUDM_N2-Dh3uJwRU.js → ishikawaDiagram-FXEZZL3T-ByUDM_N2-C_Q9CmwS.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-c5xIah9o-BaIw2Adh.js → journeyDiagram-5HDEW3XC-c5xIah9o-D-Ru3_wb.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-Cnt6loYD-BLIQlGsE.js → kanban-definition-HUTT4EX6-Cnt6loYD-eWJL56Xd.js} +1 -1
- package/dist/assets/lib-CTNrhK1N.js +9 -0
- package/dist/assets/{line-D7ziSjKi-BnFPtJcd.js → line-D7ziSjKi-CEMKL39T.js} +1 -1
- package/dist/assets/{marp-JKciXjDr.js → marp-C4na0vHp.js} +37 -37
- package/dist/assets/{mermaid-parser.core-DxEa8E3F-CscC8Qqr.js → mermaid-parser.core-DxEa8E3F-3f1dQMCy.js} +2 -2
- package/dist/assets/{mermaid.core-V0OYwIz3-g362i9RA.js → mermaid.core-V0OYwIz3-Dg1HWQ_i.js} +3 -3
- package/dist/assets/{mindmap-definition-LN4V7U3C-CexN3O6L-CEmgqxM2.js → mindmap-definition-LN4V7U3C-CexN3O6L-CyxV57-U.js} +1 -1
- package/dist/assets/packet-7NZHBO7P-CQI3flND-BlXZ8rUp.js +1 -0
- package/dist/assets/{pegDiagram-2B236MQR-BiM4G0cW-xR2ciIPB.js → pegDiagram-2B236MQR-BiM4G0cW-B40BLiy-.js} +1 -1
- package/dist/assets/pie-RZYD4A2V-CnmKE2Wa-elRgXCv3.js +1 -0
- package/dist/assets/{pieDiagram-ENE6RG2P-B_fBBS-2-Do2rjuXg.js → pieDiagram-ENE6RG2P-B_fBBS-2-j0wsTlPA.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-BigGVxCR-CYjBsLx8.js → quadrantDiagram-ABIIQ3AL-BigGVxCR-BVxlsDNI.js} +1 -1
- package/dist/assets/radar-I7S5WNFK-us6x-Z9R-BZqQUr3N.js +1 -0
- package/dist/assets/railroad-3IZDKUUU-BKdz6pdN-Cb5GXZCb.js +1 -0
- package/dist/assets/railroad-abnf-AHOZXSZD-m_CSSIfd-BddD0JXg.js +1 -0
- package/dist/assets/railroad-ebnf-EBAXGLYW-Nu3nAG7C-7VkImbqm.js +1 -0
- package/dist/assets/railroad-peg-LSFZ7HO6--Y3mD4R_-DHko1-Zq.js +1 -0
- package/dist/assets/{railroadDiagram-RFXS5EU6--lNIlG64-DrRDvGFv.js → railroadDiagram-RFXS5EU6--lNIlG64-7RnYoafQ.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-D-B0Y5Wu-AohyoXS1.js → requirementDiagram-TGXJPOKE-D-B0Y5Wu-xH07LQI_.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-DlutaXDv-BeuhDKAh.js → sankeyDiagram-HTMAVEWB-DlutaXDv-BUmys5rr.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-BOLgtggH-BMS6Xghs.js → sequenceDiagram-DBY2YBRQ-BOLgtggH-BYyf27T3.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-jf_dXUEU-1ccT8EBF.js → stateDiagram-2N3HPSRC-jf_dXUEU-DGzqzTG5.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-CuzgCL2v-DDeTaew1.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-CYjtALQH-B7FjNmUf.js → swimlanes-5IMT3BWC-CYjtALQH-BD-WjB9j.js} +1 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-3bmSBtKs-DZLi_c2t.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-DYJ4oUm8-Cv5APELs.js → timeline-definition-FHXFAJF6-DYJ4oUm8-BL8HXryX.js} +1 -1
- package/dist/assets/treeView-QDETBFTQ-D27HWG6Q-C9kkOUqZ.js +1 -0
- package/dist/assets/treemap-6X3UGDF4-CmGIU3H5-zjv1syce.js +1 -0
- package/dist/assets/{vennDiagram-L72KCM5P-CdKAHoek-DDVhQ5s2.js → vennDiagram-L72KCM5P-CdKAHoek-_pUekkpD.js} +1 -1
- package/dist/assets/wardley-OPB4EBWU-CbHWsb2k-DE_WhSD_.js +1 -0
- package/dist/assets/{wardleyDiagram-EHGQE667-BF6c4_CW-BGrTblgg.js → wardleyDiagram-EHGQE667-BF6c4_CW-BVNPNGsg.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-CGiKngj7-D9-hceiL.js → xychartDiagram-FW5EYKEG-CGiKngj7-C5EYDD6T.js} +1 -1
- package/dist/index.html +3 -2
- package/package.json +12 -1
- package/server/agents/codex-args.ts +30 -5
- package/server/agents/codex-rollout.spec.ts +46 -0
- package/server/agents/codex-rollout.ts +13 -23
- package/server/agents/probe-session.spec.ts +18 -0
- package/server/agents/probe-session.ts +10 -2
- package/server/agents/probe-transcript.spec.ts +282 -0
- package/server/agents/probe-transcript.ts +190 -0
- package/server/agents/rate-limit-persist.spec.ts +64 -0
- package/server/agents/rate-limit-persist.ts +21 -6
- package/server/agents/rate-limit-probe.spec.ts +52 -0
- package/server/agents/rate-limit-probe.ts +6 -2
- package/server/agents/rate-limit-store.spec.ts +15 -0
- package/server/agents/rate-limit-store.ts +8 -2
- package/server/agents/statusline.spec.ts +8 -3
- package/server/agents/statusline.ts +6 -4
- package/server/backends/remoteHost/firestoreSafeResult.ts +72 -0
- package/server/backends/remoteHost/index.ts +20 -11
- package/server/backends/remoteHost/presenceProbe.ts +67 -0
- package/server/backends/remoteHost/resilientRunner.ts +57 -0
- package/server/backends/remoteHost/terminalScreen.ts +13 -5
- package/server/config/header-title.ts +7 -1
- package/server/index.ts +42 -8
- package/server/infra/gui-mcp-registration.ts +77 -11
- package/server/infra/jsonl-file.ts +88 -0
- package/server/infra/spawnCapture.ts +1 -1
- package/server/routes/gui-mcp-routes.ts +5 -3
- package/server/routes/plugin-routes.ts +1 -1
- package/server/routes/ws-routes.ts +64 -17
- package/server/session/cost.ts +23 -10
- package/server/session/decision-scan.ts +2 -10
- package/server/session/early-frames.ts +39 -0
- package/server/session/last-turn.ts +6 -1
- package/server/session/launcher-gui-mcp.ts +55 -0
- package/server/session/mcp-config.ts +44 -0
- package/server/session/pty-spawn.ts +13 -1
- package/server/session/session-reads.ts +62 -50
- package/server/session/session-title.ts +14 -6
- package/server/session/spawn-claude.ts +23 -5
- package/server/session/spawn-codex.ts +20 -5
- package/server/session/summary-scan.ts +93 -0
- package/server/session/transcript.ts +35 -22
- package/dist/assets/architecture-TIHT7OUA-0NsD2xW1-F7APysNp.js +0 -1
- package/dist/assets/channel-7wUqSdoX-o7hjueM_.js +0 -1
- package/dist/assets/chunk-FWX5IMBZ-DHLSFw1H-BtzzUMmo.js +0 -2
- package/dist/assets/classDiagram-OUVF2IWQ-BYlRi6YQ-dAb2Nqej.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-BCHaYHxj-dAb2Nqej.js +0 -1
- package/dist/assets/cynefin-VYW2F7L2-CGYr2F6h-CcNtA1jr.js +0 -1
- package/dist/assets/eventmodeling-45OFAUF4-CWmqhm3a-CWY7xW6B.js +0 -1
- package/dist/assets/flowDiagram-23GEKE2U-DKSB5AiY-BQbNqK8I.js +0 -1
- package/dist/assets/gitGraph-TEB2WS4Q-BR9qPwdN-DndYDaiz.js +0 -1
- package/dist/assets/index-BLn_JWl1.js +0 -620
- package/dist/assets/index-BZb3UNXf.css +0 -1
- package/dist/assets/info-DKCQHKI2-Dplx5kMp-Ch8HtmdN.js +0 -1
- package/dist/assets/lib-BkHCzFsd.js +0 -9
- package/dist/assets/packet-7NZHBO7P-CQI3flND-kVLgbrf9.js +0 -1
- package/dist/assets/pie-RZYD4A2V-CnmKE2Wa-D1l75ZW4.js +0 -1
- package/dist/assets/radar-I7S5WNFK-us6x-Z9R-CgFu134o.js +0 -1
- package/dist/assets/railroad-3IZDKUUU-BKdz6pdN-_koCxt7R.js +0 -1
- package/dist/assets/railroad-abnf-AHOZXSZD-m_CSSIfd-y8_SdxMu.js +0 -1
- package/dist/assets/railroad-ebnf-EBAXGLYW-Nu3nAG7C-CREWWR2J.js +0 -1
- package/dist/assets/railroad-peg-LSFZ7HO6--Y3mD4R_-DkxX3rOi.js +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-CuzgCL2v-COjV9W1k.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-3bmSBtKs-CEARqU8w.js +0 -8
- package/dist/assets/treeView-QDETBFTQ-D27HWG6Q-CrGq3OoF.js +0 -1
- package/dist/assets/treemap-6X3UGDF4-CmGIU3H5-C7DIaiQ8.js +0 -1
- package/dist/assets/wardley-OPB4EBWU-CbHWsb2k-WP0WCRL-.js +0 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ color-coded so you see at a glance which are **working**, which **need you**, an
|
|
|
24
24
|
ping to your phone when a task finishes. One `npx` command, no Electron, no config.
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
npx mulmoterminal # starts on http://localhost:34567 and opens your browser
|
|
27
|
+
npx mulmoterminal@latest # starts on http://localhost:34567 and opens your browser
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
> **Something looks wrong?** Type `/mulmoterminal-bug-report` in any MulmoTerminal session. The
|
|
@@ -146,17 +146,17 @@ Needs **Node ≥ 22.9**, plus these CLIs on your `PATH`:
|
|
|
146
146
|
|
|
147
147
|
The server starts without any of the non-required rows; you just lose that row's feature,
|
|
148
148
|
and the header/panel for it says so. `git` and `gh` are marked required because losing them
|
|
149
|
-
costs whole views rather than one button. `npx mulmoterminal init` (below) reports which of
|
|
149
|
+
costs whole views rather than one button. `npx mulmoterminal@latest init` (below) reports which of
|
|
150
150
|
these it can find.
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
|
-
npx mulmoterminal # start on http://localhost:34567 and open the browser
|
|
153
|
+
npx mulmoterminal@latest # start on http://localhost:34567 and open the browser
|
|
154
154
|
# or install globally:
|
|
155
155
|
npm install -g mulmoterminal
|
|
156
156
|
mulmoterminal
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
-
**First-run setup (optional).** `npx mulmoterminal init` checks your environment (Node ≥ 22.9
|
|
159
|
+
**First-run setup (optional).** `npx mulmoterminal@latest init` checks your environment (Node ≥ 22.9
|
|
160
160
|
and every CLI in the table above), seeds the launcher's **directory
|
|
161
161
|
presets** from the projects in your Claude Code history, and writes `~/.mulmoterminal/config.json`.
|
|
162
162
|
It's **idempotent** — re-run it any time to refresh the presets; it overwrites the managed parts
|
|
@@ -166,7 +166,7 @@ and keeps your other settings. When `claude` is installed it can hand off to the
|
|
|
166
166
|
**Google account (optional).** Link a Google account to enable the chat's `google` tool and the
|
|
167
167
|
phone's `google.calendar.*` commands: read/create events on any calendar (not just your primary),
|
|
168
168
|
list the calendars you've subscribed to, and read the colour palettes. Sign in from
|
|
169
|
-
**Settings → Google account**, or run `npx mulmoterminal google login` — the CLI is the fallback
|
|
169
|
+
**Settings → Google account**, or run `npx mulmoterminal@latest google login` — the CLI is the fallback
|
|
170
170
|
for when you're driving MulmoTerminal from another machine, since consent finishes on a loopback
|
|
171
171
|
listener and needs a browser **on the host**. Either way it needs a Desktop OAuth client JSON saved
|
|
172
172
|
as `~/.secrets/client_secret_*.json`; the refresh token lands in `~/.config/mulmo/google-token.json`
|
|
@@ -200,11 +200,11 @@ directory you run the command from), `--port <n>` (default 34567), `--no-open`,
|
|
|
200
200
|
`--version`, `--help`.
|
|
201
201
|
|
|
202
202
|
```bash
|
|
203
|
-
npx mulmoterminal --cwd ./my-project # work in a specific directory
|
|
203
|
+
npx mulmoterminal@latest --cwd ./my-project # work in a specific directory
|
|
204
204
|
```
|
|
205
205
|
|
|
206
206
|
The published package ships the server (run via `tsx`) plus the pre-built web UI;
|
|
207
|
-
`npx mulmoterminal` checks for the `claude` CLI, picks a free port, starts the
|
|
207
|
+
`npx mulmoterminal@latest` checks for the `claude` CLI, picks a free port, starts the
|
|
208
208
|
server, and opens the browser. For local development from a clone, see
|
|
209
209
|
[Running](#running).
|
|
210
210
|
|
|
@@ -426,7 +426,7 @@ Requires **Node ≥ 22.9** (uses `node --env-file-if-exists`) and the `claude` C
|
|
|
426
426
|
## Configuration
|
|
427
427
|
|
|
428
428
|
The server is configured entirely through environment variables, optionally
|
|
429
|
-
loaded from a `.env` file. `npx mulmoterminal` reads the `.env` **in the
|
|
429
|
+
loaded from a `.env` file. `npx mulmoterminal@latest` reads the `.env` **in the
|
|
430
430
|
directory you run it from**; the npm scripts read the one in the repo root. The
|
|
431
431
|
`.env` is optional — every variable below has a default, so the server runs
|
|
432
432
|
without one.
|
|
@@ -441,7 +441,7 @@ the `claude` / `codex` sessions themselves.
|
|
|
441
441
|
| `PORT` | `34567` | Backend HTTP/WebSocket port (prod: the URL you open). |
|
|
442
442
|
| `CLIENT_PORT` | `6856` | Vite dev-server port (dev only: the URL you open with `yarn dev`). |
|
|
443
443
|
| `CLAUDE_BIN` | `claude` | The Claude Code binary to spawn. On Windows a bare name is resolved on `PATH` before it reaches the PTY layer (which matches file names exactly): to the `.exe` when there is one, otherwise to the `.cmd` shim an npm-global install leaves, run through `cmd.exe`. |
|
|
444
|
-
| `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). |
|
|
444
|
+
| `CLAUDE_CWD` | current dir | Working directory each `claude` PTY runs in; determines which project's sessions the sidebar lists. Via `npx mulmoterminal@latest` 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). |
|
|
445
445
|
| `CLAUDE_PERMISSION_MODE` | `auto` | Permission mode passed to each `claude` spawn. |
|
|
446
446
|
| `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. |
|
|
447
447
|
| `CODEX_BIN` | `codex` | The Codex CLI binary to spawn. |
|
package/bin/mulmoterminal.js
CHANGED
|
@@ -155,7 +155,10 @@ async function runInit(initArgs) {
|
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
if (hasClaude) log("Later: run `claude` in any project and use /mulmoterminal-config");
|
|
158
|
-
|
|
158
|
+
// Pinned to @latest: an unpinned `npx` reuses whatever it already has cached, so the very
|
|
159
|
+
// command printed for someone to type next would start an older version than the one they
|
|
160
|
+
// just set up with.
|
|
161
|
+
log("Setup done. Start MulmoTerminal: npx mulmoterminal@latest");
|
|
159
162
|
}
|
|
160
163
|
|
|
161
164
|
// `npx mulmoterminal google <command>` — Google account linking. Consent needs a
|
package/common/toolGroups.ts
CHANGED
|
@@ -18,11 +18,24 @@ export type ToolGroup = (typeof TOOL_GROUPS)[number];
|
|
|
18
18
|
|
|
19
19
|
export const isToolGroup = (value: unknown): value is ToolGroup => TOOL_GROUPS.some((group) => group === value);
|
|
20
20
|
|
|
21
|
-
// The
|
|
22
|
-
// availability is decided by
|
|
23
|
-
// as `"render"` at each of those sites, so a rename cannot leave one of them
|
|
24
|
-
// at a group that no longer exists.
|
|
25
|
-
|
|
21
|
+
// The groups the Canvas pane is made of. The launcher offers a switch per group, the panel's
|
|
22
|
+
// availability is decided by them, and the server routes on them — named here rather than
|
|
23
|
+
// written as `"render"` / `"media"` at each of those sites, so a rename cannot leave one of them
|
|
24
|
+
// silently pointing at a group that no longer exists.
|
|
25
|
+
//
|
|
26
|
+
// `media` is in because its tools DRAW: generateImage and presentMulmoScript land in the same
|
|
27
|
+
// panel a render tool does. It is a separate switch rather than part of one because the two
|
|
28
|
+
// differ in what a call costs — render stops at the pane, media is slow, paid and writes files —
|
|
29
|
+
// and that is exactly the line the grouping exists to draw. Neither media tool is in
|
|
30
|
+
// AUTO_ALLOWED_TOOLS, so enabling the group still leaves Claude Code's permission prompt in
|
|
31
|
+
// front of the spend (same reasoning as presentDocument below).
|
|
32
|
+
export const CANVAS_TOOL_GROUPS: readonly ToolGroup[] = ["render", "media"];
|
|
33
|
+
|
|
34
|
+
// Does a session/directory reach the Canvas at all? Asked of the group list the server reports,
|
|
35
|
+
// whose members arrive as plain strings — validated rather than cast, since an unknown name from
|
|
36
|
+
// a newer server must not count as a canvas group.
|
|
37
|
+
export const hasCanvasGroup = (groups: unknown): boolean =>
|
|
38
|
+
Array.isArray(groups) && groups.some((group) => isToolGroup(group) && CANVAS_TOOL_GROUPS.includes(group));
|
|
26
39
|
|
|
27
40
|
// Which group each GUI tool belongs to.
|
|
28
41
|
//
|
|
@@ -60,6 +73,11 @@ const GROUP_BY_TOOL = new Map<string, ToolGroup>([
|
|
|
60
73
|
|
|
61
74
|
export const groupOfTool = (toolName: string): ToolGroup | null => GROUP_BY_TOOL.get(toolName) ?? null;
|
|
62
75
|
|
|
76
|
+
// Every tool in a group, in the order declared above. The Canvas panel's empty state names them,
|
|
77
|
+
// so a tool added to a group here reaches that list without a second edit — the list had been
|
|
78
|
+
// written out by hand and named two of the four.
|
|
79
|
+
export const toolsInGroup = (group: ToolGroup): string[] => [...GROUP_BY_TOOL].filter(([, g]) => g === group).map(([name]) => name);
|
|
80
|
+
|
|
63
81
|
// The MCP server id a group is expected to be registered under. `--allowedTools` matches on
|
|
64
82
|
// `mcp__<server id>__<tool>`, and the id comes from the USER's config key — so this is a
|
|
65
83
|
// convention the enable-it-for-this-folder affordance has to write, and a user who registers
|
|
@@ -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-DxEa8E3F-
|
|
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-DxEa8E3F-3f1dQMCy.js";import"./chunk-WYO6CB5R-BlzOfotS-cPQQuq_p.js";import"./chunk-VAUOI2AC-CS9QJ4yz-xhVI0AT_.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CMZRaeqt-DvOpObYg.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-DxEa8E3F-3f1dQMCy.js";export{e as createArchitectureServices};
|