mulmoterminal 1.2.0 → 1.3.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 (183) hide show
  1. package/README.md +14 -0
  2. package/bin/mulmoterminal.js +24 -0
  3. package/common/themeColors.ts +30 -0
  4. package/dist/assets/{abnfDiagram-VRR7QNED-6nNByj6v-CK1tLzZi.js → abnfDiagram-VRR7QNED-6nNByj6v-DxXGZ8ah.js} +1 -1
  5. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-CGRTzfux.js +1 -0
  6. package/dist/assets/{architectureDiagram-ZJ3FMSHR-Bgnyaj_i-DYKRXxkz.js → architectureDiagram-ZJ3FMSHR-Bgnyaj_i-DVdTZaYg.js} +1 -1
  7. package/dist/assets/{blockDiagram-677ZJIJ3-DQ35o5E4-DkXlAnEd.js → blockDiagram-677ZJIJ3-DQ35o5E4-BUjwzYiL.js} +1 -1
  8. package/dist/assets/{c4Diagram-LMCZKHZV-ClWZeiWo-DXZ6SmWu.js → c4Diagram-LMCZKHZV-ClWZeiWo-DVufWqeb.js} +1 -1
  9. package/dist/assets/channel-Di5rtkx0-De0a789a.js +1 -0
  10. package/dist/assets/{chunk-32BRIVSS-CCt9wtYd-CzMB8O8i.js → chunk-32BRIVSS-CCt9wtYd-BZ0yWACh.js} +1 -1
  11. package/dist/assets/{chunk-52WLFC77-FbBbR4uI-hzUvoH_V.js → chunk-52WLFC77-FbBbR4uI-CXT-XvoC.js} +1 -1
  12. package/dist/assets/{chunk-C7G6YPKG-C87hlS9c-CrQXTywZ.js → chunk-C7G6YPKG-C87hlS9c-CnkZ8N1c.js} +1 -1
  13. package/dist/assets/{chunk-EX3LRPZG-BqGqMXLN-BSo1BpSI.js → chunk-EX3LRPZG-BqGqMXLN-BB3X7psT.js} +1 -1
  14. package/dist/assets/{chunk-FWX5IMBZ-BkbSAAuW-BN9xwFlf.js → chunk-FWX5IMBZ-BkbSAAuW-D_ITpYMt.js} +2 -2
  15. package/dist/assets/{chunk-HOUHSVGY-Cxu0eDlh-DilYgrtR.js → chunk-HOUHSVGY-Cxu0eDlh-DtH0CcTR.js} +1 -1
  16. package/dist/assets/{chunk-ICXQ74PX-hiraF_Xj-Ck8cH9BW.js → chunk-ICXQ74PX-hiraF_Xj-CAxRue72.js} +1 -1
  17. package/dist/assets/{chunk-MOJQB5TN-CqxshQHA-hb8sT9ul.js → chunk-MOJQB5TN-CqxshQHA-QQH5sWOZ.js} +1 -1
  18. package/dist/assets/{chunk-OGEWGWER-CjCr7ceX-FCREpp2S.js → chunk-OGEWGWER-CjCr7ceX-Blfojmss.js} +1 -1
  19. package/dist/assets/{chunk-PUDLZKDR-Dx6M-vz1-EOkNGOKy.js → chunk-PUDLZKDR-Dx6M-vz1-5dXqfAyQ.js} +1 -1
  20. package/dist/assets/{chunk-Q4XR5HBZ-CZd-9lTB-BHk1rWmk.js → chunk-Q4XR5HBZ-CZd-9lTB-Dgggyq-Y.js} +1 -1
  21. package/dist/assets/{chunk-V7JOEXUC-rI0xlC_O-CIs_bL1j.js → chunk-V7JOEXUC-rI0xlC_O-DrrpCTNA.js} +1 -1
  22. package/dist/assets/{chunk-VAUOI2AC-DrcykVNK-Cm1y1eF0.js → chunk-VAUOI2AC-DrcykVNK-BCZszPgC.js} +1 -1
  23. package/dist/assets/{chunk-VR4S4FIN-O6iF8Yvf-XaMLfxHT.js → chunk-VR4S4FIN-O6iF8Yvf-o61xwbcr.js} +1 -1
  24. package/dist/assets/{chunk-WYO6CB5R-B83L_z6I-C1WGAsfM.js → chunk-WYO6CB5R-B83L_z6I-Be0VbGoJ.js} +1 -1
  25. package/dist/assets/{chunk-ZGVPDNZ5-BpFv9JSP-BKMdOjwd.js → chunk-ZGVPDNZ5-BpFv9JSP-BICQ9aJs.js} +1 -1
  26. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-DVJA3t5B.js +1 -0
  27. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-DVJA3t5B.js +1 -0
  28. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-BxrBj-DI.js +1 -0
  29. package/dist/assets/{cynefinDiagram-TSTJHNR4-x0-0sQ15-vmlemYgO.js → cynefinDiagram-TSTJHNR4-x0-0sQ15-DFvWQYHV.js} +1 -1
  30. package/dist/assets/{dagre-VKFMJZFB-CQdfl-bx-D3bMpoFr.js → dagre-VKFMJZFB-CQdfl-bx-C6RuILUX.js} +1 -1
  31. package/dist/assets/{diagram-FQU43EPY-BOSB6VUb-Cb76gTiK.js → diagram-FQU43EPY-BOSB6VUb-37ofKWUh.js} +1 -1
  32. package/dist/assets/{diagram-G47NLZAW-DLXrcXsN-C3GKnaLY.js → diagram-G47NLZAW-DLXrcXsN-BtcZ-NrA.js} +1 -1
  33. package/dist/assets/{diagram-NH7WQ7WH-BMQp1rkF-CM69Zadf.js → diagram-NH7WQ7WH-BMQp1rkF-Cu-opGPx.js} +1 -1
  34. package/dist/assets/{diagram-OA4YK3LP-D1wQ0vUj-C_m2O-pS.js → diagram-OA4YK3LP-D1wQ0vUj-BOSp2edG.js} +1 -1
  35. package/dist/assets/{diagram-WEI45ONY-RR0DpF8R-CsLaijnw.js → diagram-WEI45ONY-RR0DpF8R-o2o8fkEM.js} +1 -1
  36. package/dist/assets/{ebnfDiagram-CCIWWBDH-M123uVJ8-vqN4J8aH.js → ebnfDiagram-CCIWWBDH-M123uVJ8-BLZrCpJZ.js} +1 -1
  37. package/dist/assets/{erDiagram-Q63AITRT-BWx_-PXG-BC2_Ti6R.js → erDiagram-Q63AITRT-BWx_-PXG-CdDm8yUq.js} +1 -1
  38. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-BBMcTtjD.js +1 -0
  39. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-CofbWT6z.js +1 -0
  40. package/dist/assets/{ganttDiagram-NO4QXBWP-BOoJ1eTw-BJ8RzW36.js → ganttDiagram-NO4QXBWP-BOoJ1eTw-Bz7l9tCX.js} +1 -1
  41. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-CjuBbb3l.js +1 -0
  42. package/dist/assets/{gitGraphDiagram-IHSO6WYX-B2CJhk_G-j7ZfRBi7.js → gitGraphDiagram-IHSO6WYX-B2CJhk_G-C1K6Dh6P.js} +1 -1
  43. package/dist/assets/index-BkezQA_M.js +607 -0
  44. package/dist/assets/{index-DhfRF3g0.css → index-Cn-IsW4P.css} +1 -1
  45. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-CKUwdoGo.js +1 -0
  46. package/dist/assets/{infoDiagram-FWYZ7A6U-Mp1X3pBP-BcxHFEoP.js → infoDiagram-FWYZ7A6U-Mp1X3pBP-CWP8dYG3.js} +1 -1
  47. package/dist/assets/{ishikawaDiagram-FXEZZL3T-BNG7tkJu-D4NHNB73.js → ishikawaDiagram-FXEZZL3T-BNG7tkJu-sFnH9pBC.js} +1 -1
  48. package/dist/assets/{journeyDiagram-5HDEW3XC-Dbp_hY9X-C5wWotnc.js → journeyDiagram-5HDEW3XC-Dbp_hY9X-BmrCa7oX.js} +1 -1
  49. package/dist/assets/{kanban-definition-HUTT4EX6-DSTc5u3q-DaM6ePy2.js → kanban-definition-HUTT4EX6-DSTc5u3q-jmvUmh_Z.js} +1 -1
  50. package/dist/assets/lib-CnI5_dB7.js +9 -0
  51. package/dist/assets/{line-B1wBwzrY-v5xPQ3Tb.js → line-B1wBwzrY-D2DIxhfm.js} +1 -1
  52. package/dist/assets/{marp-C5wXHEN-.js → marp-BD3FrYNL.js} +6 -6
  53. package/dist/assets/{mermaid-parser.core-DC7NPJ_M-CdLorTPK.js → mermaid-parser.core-DC7NPJ_M-E1qyqaHf.js} +2 -2
  54. package/dist/assets/{mermaid.core-DZM3Ha-E-H2ucOstP.js → mermaid.core-DZM3Ha-E-CIDG7HYi.js} +3 -3
  55. package/dist/assets/{mindmap-definition-LN4V7U3C-DYtgcMsY-BnSgJ097.js → mindmap-definition-LN4V7U3C-DYtgcMsY-_d3mZmSv.js} +1 -1
  56. package/dist/assets/packet-7NZHBO7P-lwb58iYx-CR5nKx9s.js +1 -0
  57. package/dist/assets/{pegDiagram-2B236MQR-C43eIpKM-mXxeIrN3.js → pegDiagram-2B236MQR-C43eIpKM-qN74Nqg3.js} +1 -1
  58. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-DPXpPnSu.js +1 -0
  59. package/dist/assets/{pieDiagram-ENE6RG2P-BkTqgJyR-BHLyQX_P.js → pieDiagram-ENE6RG2P-BkTqgJyR-yUPUMjfY.js} +1 -1
  60. package/dist/assets/{quadrantDiagram-ABIIQ3AL-Bm1Zjm45-CwECxXwc.js → quadrantDiagram-ABIIQ3AL-Bm1Zjm45-DJGu6JX_.js} +1 -1
  61. package/dist/assets/radar-I7S5WNFK-7CKcb_l--DwucQtaK.js +1 -0
  62. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-TaRPWy67.js +1 -0
  63. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--Du2Uw6Rv.js +1 -0
  64. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-BQzmOlUV.js +1 -0
  65. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-B_nc80Sy.js +1 -0
  66. package/dist/assets/{railroadDiagram-RFXS5EU6-BkfbdeAs-RtIkhujC.js → railroadDiagram-RFXS5EU6-BkfbdeAs-DeS-X5M4.js} +1 -1
  67. package/dist/assets/{requirementDiagram-TGXJPOKE-CrGTTjYg-Cn_wM9GJ.js → requirementDiagram-TGXJPOKE-CrGTTjYg-Z0jwe_3t.js} +1 -1
  68. package/dist/assets/{sankeyDiagram-HTMAVEWB-rWXPf03Z-B4NBlZda.js → sankeyDiagram-HTMAVEWB-rWXPf03Z-1opBvycI.js} +1 -1
  69. package/dist/assets/{sequenceDiagram-DBY2YBRQ-nkJYWO2m-CMIBxvlT.js → sequenceDiagram-DBY2YBRQ-nkJYWO2m-CmwooUIR.js} +1 -1
  70. package/dist/assets/{stateDiagram-2N3HPSRC-T4-clK8b-BAjJG2OJ.js → stateDiagram-2N3HPSRC-T4-clK8b-ChdecYpO.js} +1 -1
  71. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-fAwVOT0y.js +1 -0
  72. package/dist/assets/{swimlanes-5IMT3BWC-HmQNEntu-B75jvy7P.js → swimlanes-5IMT3BWC-HmQNEntu-Dg13ofec.js} +1 -1
  73. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-yHexCGwM.js +8 -0
  74. package/dist/assets/{timeline-definition-FHXFAJF6-CNc9jSTP-B1AaTzX1.js → timeline-definition-FHXFAJF6-CNc9jSTP-Dl_ipjIx.js} +1 -1
  75. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-WfWXHBUK.js +1 -0
  76. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-Dms1rAHj.js +1 -0
  77. package/dist/assets/{vennDiagram-L72KCM5P-Dr3pTJ_0-C4GAKsik.js → vennDiagram-L72KCM5P-Dr3pTJ_0-CEbSFm_A.js} +1 -1
  78. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-Dzf13uaZ.js +1 -0
  79. package/dist/assets/{wardleyDiagram-EHGQE667-DSFc7ZZa-DUTWbway.js → wardleyDiagram-EHGQE667-DSFc7ZZa-D7OYqfqr.js} +1 -1
  80. package/dist/assets/{xychartDiagram-FW5EYKEG-BP0Nn4Pp-DQTMNwv_.js → xychartDiagram-FW5EYKEG-BP0Nn4Pp-DZqTIa7u.js} +1 -1
  81. package/dist/index.html +2 -2
  82. package/package.json +17 -5
  83. package/plugins/plugins.json +3 -1
  84. package/server/backends/artifacts.ts +6 -43
  85. package/server/backends/collections.ts +59 -10
  86. package/server/backends/fileOps.ts +101 -0
  87. package/server/backends/google.ts +118 -0
  88. package/server/backends/hostLogger.ts +9 -0
  89. package/server/backends/mulmoscript.spec.ts +123 -0
  90. package/server/backends/mulmoscript.ts +200 -0
  91. package/server/backends/remoteHost/googleCalendar.spec.ts +227 -0
  92. package/server/backends/remoteHost/googleCalendar.ts +131 -0
  93. package/server/backends/remoteHost/handlers.spec.ts +4 -0
  94. package/server/backends/remoteHost/handlers.ts +12 -0
  95. package/server/cli-google.ts +74 -0
  96. package/server/config/config-schema.ts +2 -28
  97. package/server/config/header-config.ts +0 -2
  98. package/server/git/ghItem.ts +24 -0
  99. package/server/git/issues.ts +4 -20
  100. package/server/git/prs.ts +10 -18
  101. package/server/index.ts +53 -0
  102. package/server/infra/collection-tool.ts +40 -0
  103. package/server/infra/host-tools.ts +5 -1
  104. package/server/infra/pluginRuntime.ts +108 -0
  105. package/server/infra/plugins-registry.ts +26 -2
  106. package/bin/update-check.spec.ts +0 -46
  107. package/dist/assets/architecture-TIHT7OUA-CYMWc3UT-H5BlYssV.js +0 -1
  108. package/dist/assets/channel-Di5rtkx0-B0y8mvDO.js +0 -1
  109. package/dist/assets/classDiagram-OUVF2IWQ-BgAZMSbT-DaE02I1I.js +0 -1
  110. package/dist/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-DaE02I1I.js +0 -1
  111. package/dist/assets/cynefin-VYW2F7L2-DqA3n9nY-937NWG5-.js +0 -1
  112. package/dist/assets/eventmodeling-45OFAUF4-_BVSjAXf-Dr1OLGHI.js +0 -1
  113. package/dist/assets/flowDiagram-23GEKE2U-BeOc_anm-CCLlPnCf.js +0 -1
  114. package/dist/assets/gitGraph-TEB2WS4Q-CH12KLTN-BGZXN91M.js +0 -1
  115. package/dist/assets/index-CrPHIo_O.js +0 -357
  116. package/dist/assets/info-DKCQHKI2-Cbw3mbiK-U7eFrQdg.js +0 -1
  117. package/dist/assets/packet-7NZHBO7P-lwb58iYx-bUMa-SyO.js +0 -1
  118. package/dist/assets/pie-RZYD4A2V-B1UWb4Gu-BmvZFSbc.js +0 -1
  119. package/dist/assets/radar-I7S5WNFK-7CKcb_l--D2naYxey.js +0 -1
  120. package/dist/assets/railroad-3IZDKUUU-gCySKdnW-BB52Xytk.js +0 -1
  121. package/dist/assets/railroad-abnf-AHOZXSZD-BophH4r--pKzcYmzb.js +0 -1
  122. package/dist/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-BXf-VL0l.js +0 -1
  123. package/dist/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-BtIZNBUj.js +0 -1
  124. package/dist/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-CLL8JGdr.js +0 -1
  125. package/dist/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-5UMpA0Gl.js +0 -8
  126. package/dist/assets/treeView-QDETBFTQ-nIQcG1h9-DRcIJuj7.js +0 -1
  127. package/dist/assets/treemap-6X3UGDF4-BnsvC8yL-RxH8JYse.js +0 -1
  128. package/dist/assets/wardley-OPB4EBWU-8Odxkx6V-BMFgaEV7.js +0 -1
  129. package/server/agents/claude-args.spec.ts +0 -63
  130. package/server/agents/codex-args.spec.ts +0 -41
  131. package/server/agents/codex-session.spec.ts +0 -142
  132. package/server/agents/codex-sessions.spec.ts +0 -96
  133. package/server/agents/codex-skills.spec.ts +0 -70
  134. package/server/agents/registry.spec.ts +0 -44
  135. package/server/backends/collections.spec.ts +0 -662
  136. package/server/backends/feeds.spec.ts +0 -88
  137. package/server/backends/fileChange.spec.ts +0 -77
  138. package/server/backends/files.spec.ts +0 -67
  139. package/server/backends/html.spec.ts +0 -85
  140. package/server/backends/notifier.spec.ts +0 -80
  141. package/server/backends/scheduler.spec.ts +0 -175
  142. package/server/backends/shortcuts.spec.ts +0 -124
  143. package/server/backends/thumbnailStore.spec.ts +0 -61
  144. package/server/backends/translation.spec.ts +0 -133
  145. package/server/backends/viewToken.spec.ts +0 -111
  146. package/server/backends/wiki.spec.ts +0 -95
  147. package/server/backends/worklog.spec.ts +0 -49
  148. package/server/backends/workspaceSetup.spec.ts +0 -76
  149. package/server/config/app-config.spec.ts +0 -255
  150. package/server/config/config-schema.spec.ts +0 -131
  151. package/server/config/cwd-presets.spec.ts +0 -96
  152. package/server/config/dir-config.spec.ts +0 -269
  153. package/server/config/header-config.spec.ts +0 -147
  154. package/server/config/header-context.spec.ts +0 -16
  155. package/server/config/header-resolve.spec.ts +0 -179
  156. package/server/config/header-title.spec.ts +0 -156
  157. package/server/files/files-browse.spec.ts +0 -81
  158. package/server/files/open-dir.spec.ts +0 -14
  159. package/server/files/pick-file.spec.ts +0 -51
  160. package/server/files/scripts.spec.ts +0 -95
  161. package/server/git/git-status.spec.ts +0 -96
  162. package/server/git/gitRemote.spec.ts +0 -157
  163. package/server/git/issues.spec.ts +0 -38
  164. package/server/git/pr-for-branch.spec.ts +0 -50
  165. package/server/git/prs.spec.ts +0 -64
  166. package/server/git/worktree-diff.spec.ts +0 -83
  167. package/server/git/worktree-pr.spec.ts +0 -101
  168. package/server/git/worktree-routes.spec.ts +0 -252
  169. package/server/git/worktrees.spec.ts +0 -142
  170. package/server/infra/install-config-skill.spec.ts +0 -103
  171. package/server/infra/sandbox.spec.ts +0 -172
  172. package/server/infra/spa-fallback.spec.ts +0 -27
  173. package/server/infra/tmux-routes.spec.ts +0 -120
  174. package/server/infra/tmux.spec.ts +0 -59
  175. package/server/infra/web-push.spec.ts +0 -15
  176. package/server/session/activity-hook.spec.ts +0 -52
  177. package/server/session/activity-state.spec.ts +0 -55
  178. package/server/session/command-summary.spec.ts +0 -122
  179. package/server/session/cost.spec.ts +0 -107
  180. package/server/session/file-cache.spec.ts +0 -48
  181. package/server/session/session-resolve.spec.ts +0 -41
  182. package/server/session/terminal-replay.spec.ts +0 -41
  183. package/server/session/transcript.spec.ts +0 -390
package/README.md CHANGED
@@ -77,6 +77,20 @@ It's **idempotent** — re-run it any time to refresh the presets; it overwrites
77
77
  and keeps your other settings. When `claude` is installed it can hand off to the
78
78
  `/mulmoterminal-config` skill for interactive tweaks.
79
79
 
80
+ **Google account (optional).** Link a Google account to enable the chat's `google` tool and the
81
+ phone's `google.calendar.*` commands: read/create events on any calendar (not just your primary),
82
+ list the calendars you've subscribed to, and read the colour palettes. Sign in from
83
+ **Settings → Google account**, or run `npx mulmoterminal google login` — the CLI is the fallback
84
+ for when you're driving MulmoTerminal from another machine, since consent finishes on a loopback
85
+ listener and needs a browser **on the host**. Either way it needs a Desktop OAuth client JSON saved
86
+ as `~/.secrets/client_secret_*.json`; the refresh token lands in `~/.config/mulmo/google-token.json`
87
+ and is **shared with MulmoClaude**, so one link per machine covers both apps.
88
+
89
+ > **Already linked before the calendar-list / colour features?** They need a read scope your existing
90
+ > link doesn't have, so `listCalendars` (and, in practice, `colors`) fail with an insufficient-scope
91
+ > 403 until you re-authorize: **Settings → Google account → Unlink**, then sign in again (or re-run
92
+ > `google login`). Reading/creating events on your primary calendar keeps working without re-linking.
93
+
80
94
  A global install isn't auto-updated, so on startup MulmoTerminal checks npm and
81
95
  prints a one-line notice when a newer version is available (`npm i -g mulmoterminal`
82
96
  to update). Disable with `MULMOTERMINAL_NO_UPDATE_CHECK=1` (or `NO_UPDATE_NOTIFIER=1`).
@@ -128,6 +128,23 @@ async function runInit(initArgs) {
128
128
  log("Setup done. Start MulmoTerminal: npx mulmoterminal");
129
129
  }
130
130
 
131
+ // `npx mulmoterminal google <command>` — Google account linking. Consent needs a
132
+ // loopback listener on this machine, so it can't be driven from the web UI (a phone
133
+ // browser can't reach 127.0.0.1 here); the flow lives in the tsx-run server/cli-google.ts.
134
+ function runGoogle(googleArgs) {
135
+ return new Promise((res) => {
136
+ const child = spawn(process.execPath, ["--import", "tsx", join(PKG_DIR, "server", "cli-google.ts"), ...googleArgs], {
137
+ cwd: PKG_DIR,
138
+ env: { ...process.env },
139
+ stdio: "inherit",
140
+ });
141
+ child.on("exit", (code) => {
142
+ process.exitCode = code ?? 0;
143
+ res();
144
+ });
145
+ });
146
+ }
147
+
131
148
  function pickOpenCommand() {
132
149
  if (process.platform === "darwin") return "open";
133
150
  if (process.platform === "win32") return "start";
@@ -304,6 +321,8 @@ Commands:
304
321
  init First-run setup: check your environment, seed working-directory
305
322
  presets from your Claude Code history, and write
306
323
  ~/.mulmoterminal/config.json (idempotent — safe to re-run)
324
+ google login Link a Google account (browser consent, on this machine) so the
325
+ Calendar tool and the phone's google.calendar.* commands can run
307
326
 
308
327
  Options:
309
328
  --cwd <dir> Working directory claude runs in (default: current directory; relative paths allowed)
@@ -322,6 +341,11 @@ async function main() {
322
341
  return;
323
342
  }
324
343
 
344
+ if (args[0] === "google") {
345
+ await runGoogle(args.slice(1));
346
+ return;
347
+ }
348
+
325
349
  if (args.includes("--help") || args.includes("-h")) {
326
350
  printHelp();
327
351
  return;
@@ -0,0 +1,30 @@
1
+ // The xterm ITheme keys a `.mulmoterminal.json` `colors` block may override. Shared across
2
+ // the build boundary: the server config schema validates/strips a config against this set,
3
+ // and the client dir-config parser re-checks the server-sanitized response against the same
4
+ // set. Kept in common/ so the two can't drift — a key in one list but not the other would be
5
+ // silently accepted on one side and dropped on the other.
6
+ export const THEME_COLOR_KEYS = [
7
+ "foreground",
8
+ "background",
9
+ "cursor",
10
+ "cursorAccent",
11
+ "selectionBackground",
12
+ "selectionForeground",
13
+ "selectionInactiveBackground",
14
+ "black",
15
+ "red",
16
+ "green",
17
+ "yellow",
18
+ "blue",
19
+ "magenta",
20
+ "cyan",
21
+ "white",
22
+ "brightBlack",
23
+ "brightRed",
24
+ "brightGreen",
25
+ "brightYellow",
26
+ "brightBlue",
27
+ "brightMagenta",
28
+ "brightCyan",
29
+ "brightWhite",
30
+ ] as const;
@@ -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-CdLorTPK.js";import"./chunk-WYO6CB5R-B83L_z6I-C1WGAsfM.js";import"./chunk-VAUOI2AC-DrcykVNK-Cm1y1eF0.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-hb8sT9ul.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-E1qyqaHf.js";import"./chunk-WYO6CB5R-B83L_z6I-Be0VbGoJ.js";import"./chunk-VAUOI2AC-DrcykVNK-BCZszPgC.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CqxshQHA-QQH5sWOZ.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-E1qyqaHf.js";export{e as createArchitectureServices};