mulmoclaude 0.9.0 → 0.9.2
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 +95 -38
- package/bin/mulmoclaude.js +1 -2
- package/client/assets/JsonEditor-CPJfn76E.css +1 -0
- package/client/assets/JsonEditor-CoWGJG3Y.js +10 -0
- package/client/assets/abnfDiagram-VRR7QNED-6nNByj6v-By7GJ3xW.js +1 -0
- package/client/assets/abnfDiagram-VRR7QNED-BrQlVixL.js +1 -0
- package/client/assets/arc-BXutyUAX.js +1 -0
- package/client/assets/arc-zT0wd74V-DulGJNnb.js +1 -0
- package/client/assets/architecture-TIHT7OUA-CYMWc3UT-C7HoFzWN.js +1 -0
- package/client/assets/architecture-TIHT7OUA-aml8u-G9.js +1 -0
- package/client/assets/architectureDiagram-ZJ3FMSHR-Bgnyaj_i-CCpEsCHN.js +36 -0
- package/client/assets/architectureDiagram-ZJ3FMSHR-DJTFpPjB.js +36 -0
- package/client/assets/array-BifhSqXX.js +1 -0
- package/client/assets/array-CApNbSU9-BifhSqXX.js +1 -0
- package/client/assets/blockDiagram-677ZJIJ3-DQ35o5E4-BXS11D3J.js +132 -0
- package/client/assets/blockDiagram-677ZJIJ3-aYvCODxv.js +132 -0
- package/client/assets/c4Diagram-LMCZKHZV-Bau6RMBb.js +10 -0
- package/client/assets/c4Diagram-LMCZKHZV-ClWZeiWo-DXGnOOUf.js +10 -0
- package/client/assets/channel-D9VSi_QV.js +1 -0
- package/client/assets/channel-Di5rtkx0-C3gZcytF.js +1 -0
- package/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/client/assets/chunk-2Q5K7J3B-DfKpwyl9-DTxwf5E9.js +1 -0
- package/client/assets/chunk-32BRIVSS-CCt9wtYd-Cwa_IP35.js +1 -0
- package/client/assets/chunk-32BRIVSS-CxzHeys5.js +1 -0
- package/client/assets/chunk-52WLFC77-BtNjbTdw.js +10 -0
- package/client/assets/chunk-52WLFC77-FbBbR4uI-wsNC5d-f.js +10 -0
- package/client/assets/chunk-5VM5RSS4-BYnnUiN6-C4rOnu9A.js +15 -0
- package/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/client/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
- package/client/assets/chunk-7BUUIJ7U-hh8aCuGX-mGEpPzQy.js +1 -0
- package/client/assets/chunk-C7G6YPKG-BE8ehsnc.js +1 -0
- package/client/assets/chunk-C7G6YPKG-C87hlS9c-BitbJpTa.js +1 -0
- package/client/assets/{chunk-D8eiyYIV-BY16KEZc.js → chunk-D8eiyYIV-BeeEsA1B.js} +1 -1
- package/client/assets/chunk-EX3LRPZG-Bhgskzyy.js +231 -0
- package/client/assets/chunk-EX3LRPZG-BqGqMXLN-Cl2Eo1_u.js +231 -0
- package/client/assets/chunk-FWX5IMBZ-BkbSAAuW-C2r4AuAO.js +2 -0
- package/client/assets/chunk-FWX5IMBZ-D9sskZb_.js +2 -0
- package/client/assets/chunk-HOUHSVGY-CBCXk7rb.js +1 -0
- package/client/assets/chunk-HOUHSVGY-Cxu0eDlh-owg_DcY0.js +1 -0
- package/client/assets/chunk-ICXQ74PX-DTqPpDQ9.js +2 -0
- package/client/assets/chunk-ICXQ74PX-hiraF_Xj-CdaEwVin.js +2 -0
- package/client/assets/chunk-JWPE2WC7-BQ3zXr2k-DSd3Ct95.js +1 -0
- package/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/client/assets/chunk-KEIR6QF5-DNzq6p3w.js +161 -0
- package/client/assets/chunk-MOJQB5TN-CqxshQHA-Cn_EpDyZ.js +88 -0
- package/client/assets/chunk-MOJQB5TN-D1s_zUGz.js +88 -0
- package/client/assets/chunk-OGEWGWER-CjCr7ceX-Dfk5-70y.js +1 -0
- package/client/assets/chunk-OGEWGWER-DzfhxoQd.js +1 -0
- package/client/assets/chunk-PUDLZKDR-BZlebNhn.js +156 -0
- package/client/assets/chunk-PUDLZKDR-Dx6M-vz1-CLyVurOz.js +156 -0
- package/client/assets/chunk-Q4XR5HBZ-BcJb7mwA.js +70 -0
- package/client/assets/chunk-Q4XR5HBZ-CZd-9lTB-qPEYoRNc.js +11 -0
- package/client/assets/chunk-RYQCIY6F-B_IgMG7T.js +1 -0
- package/client/assets/chunk-RYQCIY6F-YkbemkCt-CX4fncTQ.js +1 -0
- package/client/assets/chunk-V7JOEXUC-Buce04o6.js +206 -0
- package/client/assets/chunk-V7JOEXUC-rI0xlC_O-C607vJXy.js +206 -0
- package/client/assets/chunk-VAUOI2AC-CxhkzXN0.js +1 -0
- package/client/assets/chunk-VAUOI2AC-DrcykVNK-CSROJWdE.js +1 -0
- package/client/assets/chunk-VR4S4FIN-D5afNrsS.js +1 -0
- package/client/assets/chunk-VR4S4FIN-O6iF8Yvf-CLIwrgqU.js +1 -0
- package/client/assets/chunk-WYO6CB5R-B83L_z6I-Cs8mg9If.js +127 -0
- package/client/assets/chunk-WYO6CB5R-BXTIdTMw.js +125 -0
- package/client/assets/chunk-XXDRQBXY-DFXH_lWn-B5HjCp2c.js +1 -0
- package/client/assets/chunk-XXDRQBXY-DXMD6ofA.js +1 -0
- package/client/assets/chunk-Y2CYZVJY-Bdt8pFDJ-DsF7k-Jl.js +1 -0
- package/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/client/assets/chunk-ZGVPDNZ5-BpFv9JSP-CHYySMjV.js +62 -0
- package/client/assets/chunk-ZGVPDNZ5-CYusI0J_.js +62 -0
- package/client/assets/chunk-ZIRB5QZD-Biy6ZNFG-D1maAiXb.js +32 -0
- package/client/assets/chunk-ZIRB5QZD-C6fEPe3t.js +32 -0
- package/client/assets/classDiagram-OUVF2IWQ-BgAZMSbT-BgxEE1D3.js +1 -0
- package/client/assets/classDiagram-OUVF2IWQ-CBD3Eidl.js +1 -0
- package/client/assets/classDiagram-v2-EOCWNBFH-CBD3Eidl.js +1 -0
- package/client/assets/classDiagram-v2-EOCWNBFH-DxHTyui1-BgxEE1D3.js +1 -0
- package/client/assets/cose-bilkent-JH36ORCC-CuSL2tA8-aMIqISfj.js +1 -0
- package/client/assets/cose-bilkent-JH36ORCC-WAJDBXv1.js +1 -0
- package/client/assets/cynefin-VYW2F7L2-DH2qkJKw.js +1 -0
- package/client/assets/cynefin-VYW2F7L2-DqA3n9nY-BNWhIK_n.js +1 -0
- package/client/assets/cynefinDiagram-TSTJHNR4-CUvPV9MV.js +62 -0
- package/client/assets/cynefinDiagram-TSTJHNR4-x0-0sQ15-Cq1gFcFu.js +62 -0
- package/client/assets/cytoscape.esm-CzdwbRaj-Djp6vQyU.js +321 -0
- package/client/assets/cytoscape.esm-Djp6vQyU.js +321 -0
- package/client/assets/dagre-CXRCoUWR.js +1 -0
- package/client/assets/dagre-VKFMJZFB-CQdfl-bx-CzZZuace.js +4 -0
- package/client/assets/dagre-VKFMJZFB-C_9IS7mB.js +4 -0
- package/client/assets/dagre-wczQIDso-CfevN9RO.js +1 -0
- package/client/assets/defaultLocale-C8Fc0cco.js +1 -0
- package/client/assets/defaultLocale-DUNguUWs-BbDo_yJX.js +1 -0
- package/client/assets/diagram-FQU43EPY-BOSB6VUb-isPdQ8WX.js +3 -0
- package/client/assets/diagram-FQU43EPY-BP8N00-b.js +3 -0
- package/client/assets/diagram-G47NLZAW-DLXrcXsN-BIqj7RKy.js +24 -0
- package/client/assets/diagram-G47NLZAW-ulE1JlWG.js +24 -0
- package/client/assets/diagram-NH7WQ7WH-BMQp1rkF-D6-fOq_v.js +24 -0
- package/client/assets/diagram-NH7WQ7WH-D_IXrL3i.js +24 -0
- package/client/assets/diagram-OA4YK3LP-C-pC6Eyu.js +30 -0
- package/client/assets/diagram-OA4YK3LP-D1wQ0vUj-BNi6QLCK.js +30 -0
- package/client/assets/diagram-WEI45ONY-Di9m35i-.js +41 -0
- package/client/assets/diagram-WEI45ONY-RR0DpF8R-BS3nrb3w.js +41 -0
- package/client/assets/dist-BQBs5pjy-BmtZ7Oc2.js +1 -0
- package/client/assets/dist-CQ3HaWOk.js +1 -0
- package/client/assets/ebnfDiagram-CCIWWBDH-Cbwnim2x.js +1 -0
- package/client/assets/ebnfDiagram-CCIWWBDH-M123uVJ8-9-dq55nQ.js +1 -0
- package/client/assets/erDiagram-Q63AITRT-BWx_-PXG-CWGfG4z5.js +85 -0
- package/client/assets/erDiagram-Q63AITRT-CMbtO3Sm.js +85 -0
- package/client/assets/eventmodeling-45OFAUF4--32SIpkL.js +1 -0
- package/client/assets/eventmodeling-45OFAUF4-_BVSjAXf-DQdL0Icr.js +1 -0
- package/client/assets/flowDiagram-23GEKE2U-BeOc_anm-CuVzKmmU.js +1 -0
- package/client/assets/flowDiagram-23GEKE2U-Dofa_qxG.js +1 -0
- package/client/assets/ganttDiagram-NO4QXBWP-BOoJ1eTw-TWoNmSvq.js +292 -0
- package/client/assets/ganttDiagram-NO4QXBWP-BgoAVKuc.js +292 -0
- package/client/assets/gitGraph-TEB2WS4Q-CH12KLTN-Bz4frAhV.js +1 -0
- package/client/assets/gitGraph-TEB2WS4Q-DIMvNvqt.js +1 -0
- package/client/assets/gitGraphDiagram-IHSO6WYX-B2CJhk_G-ClOKkjxw.js +106 -0
- package/client/assets/gitGraphDiagram-IHSO6WYX-Dmb6KnPz.js +106 -0
- package/client/assets/graphlib-B8gBHxth.js +1 -0
- package/client/assets/graphlib-hY-1btwe-DQjxxcnr.js +1 -0
- package/client/assets/{html2canvas-CDGcmOD3-CKJ6vKPo.js → html2canvas-CDGcmOD3-DRL9pFVl.js} +2 -2
- package/client/assets/{index-9lmYSaus.js → index-Dc0R-HW5.js} +129 -190
- package/client/assets/index-Dxo1Zdd-.css +2 -0
- package/client/assets/{index.es-DqtpmBm8-DFXjJgCa.js → index.es-DqtpmBm8-EQk3NgR8.js} +1 -1
- package/client/assets/info-DKCQHKI2-Cbw3mbiK-GsDZz9IO.js +1 -0
- package/client/assets/info-DKCQHKI2-ViCqobGo.js +1 -0
- package/client/assets/infoDiagram-FWYZ7A6U-HKV7LIG-.js +2 -0
- package/client/assets/infoDiagram-FWYZ7A6U-Mp1X3pBP-ATJv87Ur.js +2 -0
- package/client/assets/init-D6jRqBbL.js +1 -0
- package/client/assets/init-DEsX3bhM-D6jRqBbL.js +1 -0
- package/client/assets/ishikawaDiagram-FXEZZL3T-BNG7tkJu-CGCeOIlJ.js +70 -0
- package/client/assets/ishikawaDiagram-FXEZZL3T-CVDUj46f.js +70 -0
- package/client/assets/journeyDiagram-5HDEW3XC-BA-ESGLP.js +139 -0
- package/client/assets/journeyDiagram-5HDEW3XC-Dbp_hY9X-Bx-IoCe9.js +139 -0
- package/client/assets/kanban-definition-HUTT4EX6-Bqaet01L.js +89 -0
- package/client/assets/kanban-definition-HUTT4EX6-DSTc5u3q-C0JGckt1.js +89 -0
- package/client/assets/katex-CddkPoXu.js +257 -0
- package/client/assets/katex-M0IxphGf-CddkPoXu.js +257 -0
- package/client/assets/lib-4Tgx7rAy.js +114 -0
- package/client/assets/line-B1wBwzrY-f5wxpqoF.js +1 -0
- package/client/assets/line-CkyHfW7d.js +1 -0
- package/client/assets/linear-B9fuEF4c.js +1 -0
- package/client/assets/linear-lrGinF5_-CqNBync7.js +1 -0
- package/client/assets/map-CgrwEyH7-DWQFomlZ.js +1 -0
- package/client/assets/map-DsCK-0Cs.js +1 -0
- package/client/assets/marked.esm-CIU5FDdN.js +64 -0
- package/client/assets/marp-CSq0PPfK.js +3448 -0
- package/client/assets/material-symbols-outlined-DdRFxZLh.woff2 +0 -0
- package/client/assets/mermaid-parser.core-DC7NPJ_M-Ca6XzwfM.js +166 -0
- package/client/assets/mermaid-parser.core-SAwSf4_o.js +7 -0
- package/client/assets/mermaid.core-BBEQfkdJ.js +11 -0
- package/client/assets/mermaid.core-DZM3Ha-E-BxOo-RYG.js +11 -0
- package/client/assets/mindmap-definition-LN4V7U3C-B4BN0efL.js +96 -0
- package/client/assets/mindmap-definition-LN4V7U3C-DYtgcMsY-DynyLTNv.js +96 -0
- package/client/assets/ordinal-B9_Llu10-CU85fhaB.js +1 -0
- package/client/assets/ordinal-CopWnP7w.js +1 -0
- package/client/assets/packet-7NZHBO7P-CY4XRk9N.js +1 -0
- package/client/assets/packet-7NZHBO7P-lwb58iYx--vqSg65J.js +1 -0
- package/client/assets/path-BWPyau1x.js +1 -0
- package/client/assets/path-COivZ1Gw-C5riojK2.js +1 -0
- package/client/assets/pegDiagram-2B236MQR-BOKErjUu.js +1 -0
- package/client/assets/pegDiagram-2B236MQR-C43eIpKM-Bi_5Sxjt.js +1 -0
- package/client/assets/pie-RZYD4A2V-6BHB7bAx.js +1 -0
- package/client/assets/pie-RZYD4A2V-B1UWb4Gu-Dmn2hLWH.js +1 -0
- package/client/assets/pieDiagram-ENE6RG2P-BkTqgJyR-Bcdm19kR.js +39 -0
- package/client/assets/pieDiagram-ENE6RG2P-DtNjvz-U.js +39 -0
- package/client/assets/preload-helper-CZgWQFsJ.js +1 -0
- package/client/assets/purify.es-DY32g7DN.js +3 -0
- package/client/assets/quadrantDiagram-ABIIQ3AL-BQmAJL2v.js +7 -0
- package/client/assets/quadrantDiagram-ABIIQ3AL-Bm1Zjm45-B3orqx_f.js +7 -0
- package/client/assets/radar-I7S5WNFK-7CKcb_l--CqKdnR0v.js +1 -0
- package/client/assets/radar-I7S5WNFK-R7Jhjfdt.js +1 -0
- package/client/assets/railroad-3IZDKUUU-BepSPyHI.js +1 -0
- package/client/assets/railroad-3IZDKUUU-gCySKdnW-CKU26HTP.js +1 -0
- package/client/assets/railroad-abnf-AHOZXSZD-BlsHsp3c.js +1 -0
- package/client/assets/railroad-abnf-AHOZXSZD-BophH4r--CGkGHq54.js +1 -0
- package/client/assets/railroad-ebnf-EBAXGLYW-AZNjl_Zu-B7bn_PF3.js +1 -0
- package/client/assets/railroad-ebnf-EBAXGLYW-B4fMcGEH.js +1 -0
- package/client/assets/railroad-peg-LSFZ7HO6-B1ZrjJIu.js +1 -0
- package/client/assets/railroad-peg-LSFZ7HO6-BSiEEyeb-CP_B-N5g.js +1 -0
- package/client/assets/railroadDiagram-RFXS5EU6-8cz0Iby3.js +1 -0
- package/client/assets/railroadDiagram-RFXS5EU6-BkfbdeAs-Di6jH5I6.js +1 -0
- package/client/assets/requirementDiagram-TGXJPOKE-CrGTTjYg-DmIC7Shp.js +84 -0
- package/client/assets/requirementDiagram-TGXJPOKE-Dlqoe9TY.js +84 -0
- package/client/assets/rough.esm-CSKSodPl.js +1 -0
- package/client/assets/rough.esm-wVmwlXu7-CSKSodPl.js +1 -0
- package/client/assets/runtime-protocol-vue-WG3JLsjz.js +1 -0
- package/client/assets/runtime-vue-lHsY5zMj.js +1 -0
- package/client/assets/sankeyDiagram-HTMAVEWB-BkTKgu8Q.js +40 -0
- package/client/assets/sankeyDiagram-HTMAVEWB-rWXPf03Z-CjV9pCSJ.js +40 -0
- package/client/assets/{schemas-D_RbFtuQ.js → schemas-DGvl73AE.js} +3 -3
- package/client/assets/sequenceDiagram-DBY2YBRQ-BpuXUcFy.js +162 -0
- package/client/assets/sequenceDiagram-DBY2YBRQ-nkJYWO2m-BqS_sTCH.js +162 -0
- package/client/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
- package/client/assets/sizeCapture-X5ZJPWSS-F5SadAuT-VHIb4_NU.js +1 -0
- package/client/assets/src-Brzfja-q-DNc4Or4z.js +1 -0
- package/client/assets/src-Cqa3Jy1j.js +1 -0
- package/client/assets/stateDiagram-2N3HPSRC-CdlGXuo7.js +1 -0
- package/client/assets/stateDiagram-2N3HPSRC-T4-clK8b-DQRiB4va.js +1 -0
- package/client/assets/stateDiagram-v2-6OUMAXLB-BN8Jr3ZM.js +1 -0
- package/client/assets/stateDiagram-v2-6OUMAXLB-DIp7nhRd-DbrOhUn_.js +1 -0
- package/client/assets/swimlanes-5IMT3BWC-HmQNEntu-CNBgZdur.js +2 -0
- package/client/assets/swimlanes-5IMT3BWC-iEJg5gki.js +2 -0
- package/client/assets/swimlanesDiagram-G3AALYLV-BeoZhwg7-DpqgeNRA.js +8 -0
- package/client/assets/swimlanesDiagram-G3AALYLV-o-sS6aEP.js +8 -0
- package/client/assets/timeline-definition-FHXFAJF6-Bjh-7QmL.js +120 -0
- package/client/assets/timeline-definition-FHXFAJF6-CNc9jSTP-BKNSymgY.js +120 -0
- package/client/assets/treeView-QDETBFTQ-D3cqRl6k.js +1 -0
- package/client/assets/treeView-QDETBFTQ-nIQcG1h9-O_ri9HxD.js +1 -0
- package/client/assets/treemap-6X3UGDF4-BnsvC8yL-Cfsty1e3.js +1 -0
- package/client/assets/treemap-6X3UGDF4-DGkZcvDG.js +1 -0
- package/client/assets/v4-B29ayslu.js +1 -0
- package/client/assets/vennDiagram-L72KCM5P-Cz3dbe7b.js +34 -0
- package/client/assets/vennDiagram-L72KCM5P-Dr3pTJ_0-C38xwcVo.js +34 -0
- package/client/assets/vue-C6d2VveO.js +1 -0
- package/client/assets/vue-i18n-CL-ejuNu.js +3 -0
- package/client/assets/vue.runtime.esm-bundler-BeoTfMNc.js +4 -0
- package/client/assets/wardley-OPB4EBWU-8Odxkx6V-CCDIVuBs.js +1 -0
- package/client/assets/wardley-OPB4EBWU-CZsCDvKk.js +1 -0
- package/client/assets/wardleyDiagram-EHGQE667-DSFc7ZZa-mlWXRiWx.js +78 -0
- package/client/assets/wardleyDiagram-EHGQE667-DiyoyO_X.js +78 -0
- package/client/assets/xychartDiagram-FW5EYKEG-BP0Nn4Pp-DRRiStGZ.js +7 -0
- package/client/assets/xychartDiagram-FW5EYKEG-DhY1_UGM.js +7 -0
- package/client/index.html +16 -12
- package/package.json +17 -19
- package/server/agent/backend/types.ts +1 -1
- package/server/agent/backgroundSessions.ts +43 -0
- package/server/agent/config.ts +3 -2
- package/server/agent/mcp-tools/manageCollection.ts +4 -4
- package/server/agent/sandboxMounts.ts +1 -1
- package/server/agent/stream.ts +1 -3
- package/server/api/auth/viewToken.ts +1 -1
- package/server/api/bridge/sessionRole.ts +47 -0
- package/server/api/routes/agent.ts +79 -2
- package/server/api/routes/collections.ts +60 -7
- package/server/api/routes/collectionsRegistry.ts +113 -0
- package/server/api/routes/dashboard.ts +47 -0
- package/server/api/routes/feeds.ts +2 -2
- package/server/api/routes/files.ts +1 -2
- package/server/api/routes/pdf.ts +48 -9
- package/server/api/routes/plugins.ts +2 -2
- package/server/api/routes/remoteHost.ts +55 -0
- package/server/api/routes/sessions.ts +20 -11
- package/server/api/routes/share.ts +105 -0
- package/server/api/routes/transcribe.ts +1 -1
- package/server/api/routes/wiki/history.ts +2 -2
- package/server/api/routes/wiki.ts +29 -177
- package/server/api/sandboxStatus.ts +1 -1
- package/server/build/dispatcher.mjs +25 -14928
- package/server/events/collection-change.ts +4 -4
- package/server/events/file-change.ts +2 -2
- package/server/events/scheduler-adapter.ts +3 -3
- package/server/events/task-manager/index.ts +3 -3
- package/server/index.ts +53 -17
- package/server/notifier/engine.ts +3 -3
- package/server/notifier/types.ts +2 -2
- package/server/plugins/html-builtin.ts +15 -1
- package/server/prompts/system/system.md +4 -0
- package/server/remoteHost/auth.ts +29 -0
- package/server/remoteHost/commandChannel.ts +56 -0
- package/server/remoteHost/firebase.ts +16 -0
- package/server/remoteHost/handlers/collectionPage.ts +29 -0
- package/server/remoteHost/handlers/getCollection.ts +32 -0
- package/server/remoteHost/handlers/getFeed.ts +35 -0
- package/server/remoteHost/handlers/index.ts +19 -0
- package/server/remoteHost/handlers/listCollections.ts +29 -0
- package/server/remoteHost/handlers/listFeeds.ts +37 -0
- package/server/remoteHost/handlers/listShortcuts.ts +24 -0
- package/server/remoteHost/handlers/startChat.ts +78 -0
- package/server/remoteHost/hostRunner.ts +122 -0
- package/server/remoteHost/index.ts +117 -0
- package/server/system/config.ts +1 -1
- package/server/system/credentials.ts +2 -3
- package/server/system/docker.ts +9 -8
- package/server/system/env.ts +8 -0
- package/server/system/whisper/index.ts +4 -4
- package/server/utils/claudeConfigPath.ts +57 -0
- package/server/utils/files/dashboard-io.ts +87 -0
- package/server/utils/files/session-io.ts +11 -0
- package/server/utils/markdown/frontmatter.ts +8 -4
- package/server/utils/regex.ts +4 -3
- package/server/utils/share/packHtml.ts +108 -0
- package/server/utils/share/rewriteAssets.ts +178 -0
- package/server/workspace/chat-index/paths.ts +8 -2
- package/server/workspace/chat-index/summarizer.ts +23 -15
- package/server/workspace/collections/configure.ts +5 -3
- package/server/workspace/collections/index.ts +8 -6
- package/server/workspace/collections/notifications.ts +3 -3
- package/server/workspace/collections/types.ts +2 -2
- package/server/workspace/collections/watcher.ts +2 -2
- package/server/workspace/feeds/configure.ts +24 -0
- package/server/workspace/hooks/handlers/skillBridge.ts +2 -2
- package/server/workspace/hooks/handlers/wikiSnapshot.ts +1 -1
- package/server/workspace/paths.ts +8 -1
- package/server/workspace/skills/catalog.ts +1 -3
- package/server/workspace/skills/external/catalog.ts +1 -3
- package/server/workspace/skills/paths.ts +4 -3
- package/server/workspace/skills/writer.ts +1 -4
- package/server/workspace/skills-preset.ts +3 -3
- package/server/workspace/wiki-pages/io.ts +2 -2
- package/server/workspace/workspace.ts +2 -2
- package/src/App.vue +41 -18
- package/src/components/ChatInput.vue +1 -1
- package/src/components/DashboardView.vue +372 -0
- package/src/components/FileContentRenderer.vue +32 -7
- package/src/components/JsonEditor.vue +1 -1
- package/src/components/PluginLauncher.vue +122 -79
- package/src/components/RemoteHostControl.vue +159 -0
- package/src/components/SessionCountBadges.vue +32 -0
- package/src/components/SessionHeaderControls.vue +1 -8
- package/src/components/SessionHistoryPanel.vue +2 -0
- package/src/components/SessionHistoryToggleButton.vue +1 -15
- package/src/components/SidebarHeader.vue +2 -0
- package/src/components/collectionTypes.ts +2 -2
- package/src/composables/accountingHost.ts +24 -0
- package/src/composables/collections/uiHost.ts +17 -2
- package/src/composables/useDashboard.ts +191 -0
- package/src/composables/useMarkdownZip.ts +51 -0
- package/src/composables/useNotifications.ts +1 -4
- package/src/composables/useSharePack.ts +60 -0
- package/src/composables/useTranslatedQueries.ts +15 -95
- package/src/composables/useTranslatedStrings.ts +68 -0
- package/src/composables/useVoiceInput.ts +3 -3
- package/src/config/apiRoutes.ts +57 -9
- package/src/config/createFilePolicy.ts +1 -1
- package/src/config/firebase.ts +12 -0
- package/src/config/firebaseConfig.ts +18 -0
- package/src/config/historyFilters.ts +7 -0
- package/src/config/pubsubChannels.ts +7 -27
- package/src/config/roles.ts +12 -10
- package/src/config/workspacePaths.ts +10 -0
- package/src/index.css +1 -1
- package/src/lang/de.ts +39 -220
- package/src/lang/en.ts +39 -191
- package/src/lang/es.ts +39 -218
- package/src/lang/fr.ts +39 -220
- package/src/lang/ja.ts +39 -216
- package/src/lang/ko.ts +39 -216
- package/src/lang/pt-BR.ts +39 -217
- package/src/lang/zh.ts +39 -215
- package/src/main.ts +3 -0
- package/src/plugins/accounting/definition.ts +12 -8
- package/src/plugins/accounting/index.ts +7 -4
- package/src/plugins/accounting/meta.ts +23 -60
- package/src/plugins/manageSkills/View.vue +9 -1
- package/src/plugins/photoLocations/View.vue +2 -2
- package/src/plugins/presentCollection/definition.ts +2 -2
- package/src/plugins/presentCollection/plugin.ts +2 -2
- package/src/plugins/presentCollection/types.ts +2 -2
- package/src/plugins/presentHtml/definition.ts +1 -1
- package/src/plugins/presentMulmoScript/View.vue +2 -2
- package/src/plugins/presentMulmoScript/helpers.ts +1 -1
- package/src/plugins/presentSVG/View.vue +2 -2
- package/src/plugins/scheduler/TasksTab.vue +1 -2
- package/src/plugins/skill/View.vue +7 -3
- package/src/plugins/spreadsheet/View.vue +3 -3
- package/src/plugins/spreadsheet/engine/functions/logical.ts +8 -1
- package/src/plugins/textResponse/View.vue +43 -16
- package/src/plugins/wiki/View.vue +29 -2
- package/src/plugins/wiki/components/WikiGraphView.vue +1 -1
- package/src/plugins/wiki/components/WikiPageBody.vue +4 -1
- package/src/plugins/wiki/helpers.ts +13 -81
- package/src/plugins/wiki/index.ts +1 -1
- package/src/router/guards.ts +1 -1
- package/src/router/index.ts +12 -0
- package/src/router/pageRoutes.ts +2 -0
- package/src/types/dashboard.ts +40 -0
- package/src/types/session.ts +3 -0
- package/src/utils/blobDownload.ts +19 -0
- package/src/utils/collections/presentSeed.ts +1 -1
- package/src/utils/html/customViewSrcdoc.ts +31 -3
- package/src/utils/html/previewCsp.ts +1 -1
- package/src/utils/id.ts +1 -1
- package/src/utils/image/htmlSrcAttrs.ts +1 -1
- package/src/utils/markdown/frontmatter.ts +12 -7
- package/src/utils/markdown/highlight.ts +22 -0
- package/src/utils/markdown/marpCustomSize.ts +2 -2
- package/src/utils/markdown/mermaidExtension.ts +56 -0
- package/src/utils/markdown/mermaidRender.ts +147 -0
- package/src/utils/markdown/setup.ts +17 -4
- package/src/utils/markdown/useMermaid.ts +33 -0
- package/src/utils/session/longRunning.ts +33 -0
- package/src/utils/session/mergeSessions.ts +1 -1
- package/client/assets/JsonEditor-Di5xGeZY.css +0 -1
- package/client/assets/JsonEditor-o5--tPQH.js +0 -10
- package/client/assets/index-tOu5ArRZ.css +0 -2
- package/client/assets/lib-D6Xy0IFc.js +0 -114
- package/client/assets/marp-D6GXA-EB.js +0 -3452
- package/client/assets/material-symbols-outlined-DtIK7AQn.woff2 +0 -0
- package/client/assets/runtime-protocol-vue-pU0Mw7Zm.js +0 -1
- package/client/assets/runtime-vue-fFYhnNg3.js +0 -1
- package/client/assets/vue-UDIWDtr8.js +0 -1
- package/client/assets/vue-i18n-CQbxVmNs.js +0 -3
- package/client/assets/vue.runtime.esm-bundler-BTyIdNAI.js +0 -4
- package/server/accounting/accountNormalize.ts +0 -32
- package/server/accounting/defaultAccounts.ts +0 -87
- package/server/accounting/eventPublisher.ts +0 -52
- package/server/accounting/journal.ts +0 -252
- package/server/accounting/openingBalances.ts +0 -114
- package/server/accounting/report.ts +0 -237
- package/server/accounting/service.ts +0 -718
- package/server/accounting/snapshotCache.ts +0 -334
- package/server/accounting/timeSeries.ts +0 -265
- package/server/accounting/types.ts +0 -148
- package/server/api/routes/accounting.ts +0 -373
- package/server/api/routes/wiki/frontmatter.ts +0 -34
- package/server/api/routes/wiki/pageIndex.ts +0 -53
- package/server/system/logs/aaa +0 -737
- package/server/system/logs/bb +0 -446
- package/server/utils/files/accounting-io.ts +0 -294
- package/server/workspace/feeds/engine.ts +0 -143
- package/server/workspace/feeds/fetch/httpClient.ts +0 -127
- package/server/workspace/feeds/fetch/rssParser.ts +0 -117
- package/server/workspace/feeds/index.ts +0 -8
- package/server/workspace/feeds/ingestTypes.ts +0 -62
- package/server/workspace/feeds/pathResolver.ts +0 -74
- package/server/workspace/feeds/paths.ts +0 -30
- package/server/workspace/feeds/projectItem.ts +0 -92
- package/server/workspace/feeds/registry.ts +0 -43
- package/server/workspace/feeds/retrievers/httpJson.ts +0 -19
- package/server/workspace/feeds/retrievers/index.ts +0 -27
- package/server/workspace/feeds/retrievers/registerAll.ts +0 -5
- package/server/workspace/feeds/retrievers/rss.ts +0 -24
- package/server/workspace/feeds/state.ts +0 -55
- package/src/composables/useAccountingChannel.ts +0 -58
- package/src/lib/wiki-page/graph.ts +0 -108
- package/src/lib/wiki-page/index-parse.ts +0 -221
- package/src/lib/wiki-page/link.ts +0 -62
- package/src/lib/wiki-page/lint.ts +0 -105
- package/src/lib/wiki-page/paths.ts +0 -35
- package/src/lib/wiki-page/slug.ts +0 -54
- package/src/plugins/accounting/Preview.vue +0 -103
- package/src/plugins/accounting/View.vue +0 -633
- package/src/plugins/accounting/actions.ts +0 -34
- package/src/plugins/accounting/api.ts +0 -301
- package/src/plugins/accounting/components/AccountEditor.vue +0 -250
- package/src/plugins/accounting/components/AccountRow.vue +0 -50
- package/src/plugins/accounting/components/AccountsList.vue +0 -102
- package/src/plugins/accounting/components/AccountsModal.vue +0 -301
- package/src/plugins/accounting/components/BalanceSheet.vue +0 -186
- package/src/plugins/accounting/components/BookSettings.vue +0 -284
- package/src/plugins/accounting/components/BookSwitcher.vue +0 -78
- package/src/plugins/accounting/components/DateRangePicker.vue +0 -140
- package/src/plugins/accounting/components/JournalEntryForm.vue +0 -505
- package/src/plugins/accounting/components/JournalList.vue +0 -554
- package/src/plugins/accounting/components/Ledger.vue +0 -206
- package/src/plugins/accounting/components/NewBookForm.vue +0 -211
- package/src/plugins/accounting/components/OpeningBalancesForm.vue +0 -272
- package/src/plugins/accounting/components/ProfitLoss.vue +0 -160
- package/src/plugins/accounting/components/accountDraft.ts +0 -13
- package/src/plugins/accounting/components/accountNumbering.ts +0 -103
- package/src/plugins/accounting/components/accountValidation.ts +0 -75
- package/src/plugins/accounting/components/useLatestRequest.ts +0 -44
- package/src/plugins/accounting/countries.ts +0 -158
- package/src/plugins/accounting/currencies.ts +0 -77
- package/src/plugins/accounting/dates.ts +0 -51
- package/src/plugins/accounting/fiscalYear.ts +0 -136
- package/src/plugins/accounting/timeSeriesEnums.ts +0 -16
- package/src/plugins/wiki/route.ts +0 -137
- /package/client/assets/{_plugin-vue_export-helper-B67ILkmu.js → _plugin-vue_export-helper-BDNMzG2s.js} +0 -0
- /package/client/assets/{purify.es-B27wDFIb-51iYcXuK.js → purify.es-B27wDFIb-Bu4Grnl0.js} +0 -0
- /package/client/assets/{typeof-DBp4T-Ny-z2wCIsir.js → typeof-DBp4T-Ny-B5XbjTb1.js} +0 -0
package/src/lang/zh.ts
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const zhMessages = {
|
|
9
9
|
common: {
|
|
10
|
+
downloadZip: "ZIP",
|
|
11
|
+
downloadFailed: "下载失败",
|
|
10
12
|
save: "保存",
|
|
11
13
|
cancel: "取消",
|
|
12
14
|
loading: "加载中...",
|
|
@@ -57,6 +59,7 @@ const zhMessages = {
|
|
|
57
59
|
all: "全部",
|
|
58
60
|
unread: "未读",
|
|
59
61
|
bookmarked: "已收藏",
|
|
62
|
+
longRunning: "长期 (24h+)",
|
|
60
63
|
human: "人工",
|
|
61
64
|
scheduler: "调度器",
|
|
62
65
|
skill: "技能",
|
|
@@ -119,6 +122,21 @@ const zhMessages = {
|
|
|
119
122
|
hideDetails: "隐藏详情",
|
|
120
123
|
retry: "重试",
|
|
121
124
|
},
|
|
125
|
+
remoteHost: {
|
|
126
|
+
title: "远程主机",
|
|
127
|
+
online: "远程主机在线",
|
|
128
|
+
offline: "远程主机离线",
|
|
129
|
+
uid: "uid {uid}",
|
|
130
|
+
signIn: "使用 Google 登录",
|
|
131
|
+
connecting: "连接中…",
|
|
132
|
+
disconnect: "断开连接",
|
|
133
|
+
disconnecting: "断开中…",
|
|
134
|
+
noToken: "Google 登录未返回 idToken",
|
|
135
|
+
connectFailed: "连接失败",
|
|
136
|
+
disconnectFailed: "断开连接失败",
|
|
137
|
+
signInFailed: "Google 登录失败",
|
|
138
|
+
statusFailed: "加载状态失败",
|
|
139
|
+
},
|
|
122
140
|
sidebarHeader: {
|
|
123
141
|
home: "前往最新对话",
|
|
124
142
|
toolCallHistory: "工具调用历史",
|
|
@@ -326,11 +344,25 @@ const zhMessages = {
|
|
|
326
344
|
errAlreadyExists: "已存在",
|
|
327
345
|
errLabelConflict: '标签 "{label}" 已存在',
|
|
328
346
|
},
|
|
347
|
+
dashboard: {
|
|
348
|
+
empty: "暂无收藏的集合。",
|
|
349
|
+
emptyHint: "将集合固定(★)后会显示在这里。",
|
|
350
|
+
viewTable: "表格",
|
|
351
|
+
viewCalendar: "日历",
|
|
352
|
+
viewKanban: "看板",
|
|
353
|
+
viewPickerLabel: "选择视图",
|
|
354
|
+
openFull: "双击打开完整视图",
|
|
355
|
+
dragHint: "拖动以重新排序",
|
|
356
|
+
resizeHint: "拖动以调整高度",
|
|
357
|
+
},
|
|
329
358
|
pluginLauncher: {
|
|
359
|
+
chat: { label: "聊天" },
|
|
360
|
+
dashboard: { label: "仪表板" },
|
|
330
361
|
automations: { label: "自动化" },
|
|
331
362
|
wiki: { label: "百科" },
|
|
332
363
|
collections: { label: "集合" },
|
|
333
364
|
feeds: { label: "订阅源" },
|
|
365
|
+
accounting: { label: "会计" },
|
|
334
366
|
files: { label: "文件" },
|
|
335
367
|
},
|
|
336
368
|
shortcuts: {
|
|
@@ -346,6 +378,9 @@ const zhMessages = {
|
|
|
346
378
|
closeFile: "关闭文件",
|
|
347
379
|
},
|
|
348
380
|
fileContentRenderer: {
|
|
381
|
+
download: "ZIP",
|
|
382
|
+
downloadZip: "下载为自包含 zip(含资源)",
|
|
383
|
+
downloadError: "下载失败",
|
|
349
384
|
selectFile: "请选择一个文件",
|
|
350
385
|
htmlPreview: "HTML 预览",
|
|
351
386
|
pdfPreview: "PDF 预览",
|
|
@@ -636,221 +671,6 @@ const zhMessages = {
|
|
|
636
671
|
stylePromptWithPath: "将 `{path}` 处的图像转换为 {style} 风格的图像。",
|
|
637
672
|
stylePromptNoPath: "将我在画布上的绘图转换为 {style} 风格的图像。",
|
|
638
673
|
},
|
|
639
|
-
pluginAccounting: {
|
|
640
|
-
title: "会计",
|
|
641
|
-
noBook: '尚无账簿 — 点击上方 "+ 新建账簿" 创建第一个。',
|
|
642
|
-
common: {
|
|
643
|
-
cancel: "取消",
|
|
644
|
-
loading: "加载中…",
|
|
645
|
-
error: "错误: {error}",
|
|
646
|
-
empty: "尚无条目。",
|
|
647
|
-
},
|
|
648
|
-
tabs: {
|
|
649
|
-
journal: "日记账",
|
|
650
|
-
newEntry: "新建分录",
|
|
651
|
-
opening: "期初余额",
|
|
652
|
-
accounts: "科目",
|
|
653
|
-
ledger: "明细账",
|
|
654
|
-
balanceSheet: "资产负债表",
|
|
655
|
-
profitLoss: "损益",
|
|
656
|
-
settings: "设置",
|
|
657
|
-
},
|
|
658
|
-
bookSwitcher: {
|
|
659
|
-
label: "账簿",
|
|
660
|
-
newBook: "新建账簿…",
|
|
661
|
-
create: "创建",
|
|
662
|
-
nameLabel: "名称",
|
|
663
|
-
currencyLabel: "货币",
|
|
664
|
-
countryLabel: "国家/地区",
|
|
665
|
-
countryPlaceholder: "选择国家/地区…",
|
|
666
|
-
countryHint: "国家/地区决定税务管辖,助手可据此提供本地化建议(日本T号、欧盟VAT ID等)。",
|
|
667
|
-
fiscalYearEndLabel: "财年结束日",
|
|
668
|
-
fiscalYearEndQ1: "3月31日 (Q1)",
|
|
669
|
-
fiscalYearEndQ2: "6月30日 (Q2)",
|
|
670
|
-
fiscalYearEndQ3: "9月30日 (Q3)",
|
|
671
|
-
fiscalYearEndQ4: "12月31日 (Q4)",
|
|
672
|
-
fiscalYearEndHint: "决定本账簿日期范围快捷方式所使用的财年边界。默认 12月31日(Q4 — 自然年)。",
|
|
673
|
-
placeholder: "选择账簿…",
|
|
674
|
-
firstRunHint: "请为第一本账簿选择名称、货币、国家/地区与财年结束日。货币按账簿固定,登账后再更改会比较困难。",
|
|
675
|
-
},
|
|
676
|
-
deletedNotice: {
|
|
677
|
-
title: "“{bookName}” 已删除。",
|
|
678
|
-
body: "请从上方下拉菜单选择其他账簿,或新建一本。",
|
|
679
|
-
},
|
|
680
|
-
journalList: {
|
|
681
|
-
fromLabel: "起始",
|
|
682
|
-
toLabel: "结束",
|
|
683
|
-
accountLabel: "科目",
|
|
684
|
-
allAccounts: "所有科目",
|
|
685
|
-
void: "冲销",
|
|
686
|
-
edit: "编辑",
|
|
687
|
-
voidConfirm: "冲销此分录?原始分录保留在日记账中,会追加一对反向分录。",
|
|
688
|
-
voidReason: "原因(可选):",
|
|
689
|
-
columns: {
|
|
690
|
-
date: "日期",
|
|
691
|
-
kind: "类型",
|
|
692
|
-
memo: "备注",
|
|
693
|
-
lines: "明细",
|
|
694
|
-
},
|
|
695
|
-
kind: {
|
|
696
|
-
normal: "—",
|
|
697
|
-
opening: "期初",
|
|
698
|
-
void: "反向",
|
|
699
|
-
voidMarker: "冲销标记",
|
|
700
|
-
},
|
|
701
|
-
},
|
|
702
|
-
entryForm: {
|
|
703
|
-
title: "新建分录",
|
|
704
|
-
editTitle: "编辑分录",
|
|
705
|
-
editBanner: "提交后,原分录将被冲销并以此内容替换。",
|
|
706
|
-
dateLabel: "日期",
|
|
707
|
-
memoLabel: "备注",
|
|
708
|
-
accountLabel: "科目",
|
|
709
|
-
debitLabel: "借方",
|
|
710
|
-
creditLabel: "贷方",
|
|
711
|
-
taxRegistrationIdLabel: "税务登记号",
|
|
712
|
-
taxRegistrationIdPlaceholder: "T-number / VAT ID / GSTIN…",
|
|
713
|
-
taxRegistrationIdMissingWarning: "必填",
|
|
714
|
-
addLine: "添加行",
|
|
715
|
-
removeLine: "删除",
|
|
716
|
-
submit: "登账",
|
|
717
|
-
submitting: "登账中…",
|
|
718
|
-
update: "更新",
|
|
719
|
-
updating: "更新中…",
|
|
720
|
-
cancelEdit: "取消",
|
|
721
|
-
success: "已登账。",
|
|
722
|
-
editSuccess: "分录已更新。",
|
|
723
|
-
editVoidReason: "已编辑",
|
|
724
|
-
imbalance: "差额: {amount}",
|
|
725
|
-
balanced: "已平衡 ✓",
|
|
726
|
-
},
|
|
727
|
-
openingForm: {
|
|
728
|
-
title: "期初余额",
|
|
729
|
-
asOfLabel: "基准日",
|
|
730
|
-
explainer: "仅允许 B/S 科目(资产 / 负债 / 权益)。Σ借方=Σ贷方,差额会落入 Retained Earnings。",
|
|
731
|
-
emptyHint: "可以全部留空保存——期初余额稍后再更新。账簿只需先存在一条期初记录,其他标签页才会解锁。",
|
|
732
|
-
explainer2: "仅 B/S 科目。",
|
|
733
|
-
submit: "保存期初余额",
|
|
734
|
-
replaceWarning: "保存会替换现有期初余额(旧的会在日记账中冲销)。",
|
|
735
|
-
none: "尚未设置期初余额。",
|
|
736
|
-
setBy: "{date} 已设置",
|
|
737
|
-
success: "期初余额已保存。",
|
|
738
|
-
},
|
|
739
|
-
ledger: {
|
|
740
|
-
selectAccount: "选择科目",
|
|
741
|
-
closingBalance: "期末余额",
|
|
742
|
-
columns: {
|
|
743
|
-
date: "日期",
|
|
744
|
-
memo: "备注",
|
|
745
|
-
debit: "借方",
|
|
746
|
-
credit: "贷方",
|
|
747
|
-
balance: "余额",
|
|
748
|
-
taxRegistrationId: "税务登记号",
|
|
749
|
-
},
|
|
750
|
-
},
|
|
751
|
-
dateRange: {
|
|
752
|
-
shortcutLabel: "范围",
|
|
753
|
-
currentQuarter: "本季度",
|
|
754
|
-
previousQuarter: "上季度",
|
|
755
|
-
currentYear: "本年度",
|
|
756
|
-
previousYear: "上年度",
|
|
757
|
-
lifetime: "自开账以来",
|
|
758
|
-
all: "全部",
|
|
759
|
-
fromLabel: "起始",
|
|
760
|
-
toLabel: "结束",
|
|
761
|
-
},
|
|
762
|
-
balanceSheet: {
|
|
763
|
-
asOfLabel: "期间",
|
|
764
|
-
sections: {
|
|
765
|
-
asset: "资产",
|
|
766
|
-
liability: "负债",
|
|
767
|
-
equity: "权益",
|
|
768
|
-
},
|
|
769
|
-
total: "合计",
|
|
770
|
-
imbalance: "差额: {amount}",
|
|
771
|
-
currentEarnings: "当期净损益",
|
|
772
|
-
shortcutLabel: "快捷方式",
|
|
773
|
-
thisMonth: "本月",
|
|
774
|
-
lastMonth: "上月",
|
|
775
|
-
lastQuarter: "上季度",
|
|
776
|
-
lastYear: "上年",
|
|
777
|
-
},
|
|
778
|
-
profitLoss: {
|
|
779
|
-
fromLabel: "起始",
|
|
780
|
-
toLabel: "结束",
|
|
781
|
-
income: "收入",
|
|
782
|
-
expense: "支出",
|
|
783
|
-
netIncome: "净利润:",
|
|
784
|
-
},
|
|
785
|
-
accounts: {
|
|
786
|
-
listEmpty: "此分类下暂无科目。",
|
|
787
|
-
openLedgerAria: "打开 {code} {name} 的明细账",
|
|
788
|
-
manageButton: "管理科目",
|
|
789
|
-
modalTitle: "管理科目",
|
|
790
|
-
addAccount: "添加科目",
|
|
791
|
-
sectionTitle: {
|
|
792
|
-
asset: "资产",
|
|
793
|
-
liability: "负债",
|
|
794
|
-
equity: "权益",
|
|
795
|
-
income: "收入",
|
|
796
|
-
expense: "费用",
|
|
797
|
-
},
|
|
798
|
-
columnCode: "代码",
|
|
799
|
-
columnName: "名称",
|
|
800
|
-
columnType: "类型",
|
|
801
|
-
columnNote: "备注",
|
|
802
|
-
typeOption: {
|
|
803
|
-
asset: "资产",
|
|
804
|
-
liability: "负债",
|
|
805
|
-
equity: "权益",
|
|
806
|
-
income: "收入",
|
|
807
|
-
expense: "费用",
|
|
808
|
-
},
|
|
809
|
-
edit: "编辑",
|
|
810
|
-
save: "保存",
|
|
811
|
-
cancel: "取消",
|
|
812
|
-
saving: "保存中…",
|
|
813
|
-
addToCategory: "添加{type}",
|
|
814
|
-
deactivate: "停用",
|
|
815
|
-
reactivate: "启用",
|
|
816
|
-
deactivateConfirm: "在分录/明细账下拉框中隐藏“{name}”?现有日记账分录不受影响。",
|
|
817
|
-
errorEmptyCode: "代码不能为空。",
|
|
818
|
-
errorReservedCode: "以 “_” 开头的代码保留给系统行使用。",
|
|
819
|
-
errorInvalidCodeFormat: "科目代码必须为 4 位数字。",
|
|
820
|
-
errorCodeTypeMismatch: "代码首位必须与科目类型匹配:1xxx 资产,2xxx 负债,3xxx 权益,4xxx 收入,5xxx 费用。",
|
|
821
|
-
errorEmptyName: "名称不能为空。",
|
|
822
|
-
errorDuplicateCode: "此代码的科目已存在。",
|
|
823
|
-
errorDuplicateName: "此名称的科目已存在。",
|
|
824
|
-
success: "科目已保存。",
|
|
825
|
-
codeReadOnlyHint: "科目创建后代码不能更改。",
|
|
826
|
-
noteOptional: "(可选)",
|
|
827
|
-
},
|
|
828
|
-
settings: {
|
|
829
|
-
bookInfo: "账簿信息",
|
|
830
|
-
bookInfoExplain: "修改国家/地区可更新税务管辖相关建议。开始登账后货币不可更改。",
|
|
831
|
-
countryUnset: "(未设置)",
|
|
832
|
-
fiscalYearEndExplain: "仅影响今后日期范围快捷方式的解析方式;现有日记账分录不会移动。",
|
|
833
|
-
saveChanges: "保存更改",
|
|
834
|
-
updateOk: "账簿已更新。",
|
|
835
|
-
rebuild: "重建快照",
|
|
836
|
-
rebuildExplain: "删除全部月度快照缓存并从日记账重新计算。手动编辑日记账后可用。",
|
|
837
|
-
rebuildOk: "已重建 {count} 期。",
|
|
838
|
-
advanced: "高级设置…",
|
|
839
|
-
deleteBook: "删除账簿",
|
|
840
|
-
deleteBookExplain: "永久删除该账簿目录。无法撤销。",
|
|
841
|
-
deleteBookConfirm: '请输入 "{bookName}" 以确认:',
|
|
842
|
-
deleteBookButton: "彻底删除",
|
|
843
|
-
},
|
|
844
|
-
preview: {
|
|
845
|
-
entry: "已记账 {date} 的分录",
|
|
846
|
-
pl: "P&L {from} → {to}: 净额 {net}",
|
|
847
|
-
bs: "{date} 资产负债表 · 资产 {assets}",
|
|
848
|
-
bookCreated: '已创建账簿 "{name}" ({id})',
|
|
849
|
-
},
|
|
850
|
-
previewSummary: "会计 · {bookId}",
|
|
851
|
-
previewError: "会计: {error}",
|
|
852
|
-
previewGeneric: "会计结果",
|
|
853
|
-
},
|
|
854
674
|
pluginWiki: {
|
|
855
675
|
backToIndex: "返回目录",
|
|
856
676
|
pdf: "PDF",
|
|
@@ -1091,6 +911,10 @@ const zhMessages = {
|
|
|
1091
911
|
marpSplitExit: "关闭源代码编辑器",
|
|
1092
912
|
marpSplitEditorLabel: "源代码",
|
|
1093
913
|
},
|
|
914
|
+
markdownMermaid: {
|
|
915
|
+
loadFailed: "⚠ Mermaid 加载失败: {error}",
|
|
916
|
+
renderFailed: "⚠ Mermaid 渲染失败: {error}",
|
|
917
|
+
},
|
|
1094
918
|
pluginTextResponse: {
|
|
1095
919
|
pdf: "PDF",
|
|
1096
920
|
pdfFailed: "⚠ PDF 失败",
|
package/src/main.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { createApp } from "vue";
|
|
|
2
2
|
// Wire @mulmoclaude/collection-plugin/vue to this host's collection API +
|
|
3
3
|
// asset-URL scheme before any collection View mounts (side effect).
|
|
4
4
|
import "./composables/collections/uiHost";
|
|
5
|
+
// Wire @mulmoclaude/accounting-plugin/vue to this host's apiCall +
|
|
6
|
+
// pub/sub + stylesheet before any accounting View mounts (side effect).
|
|
7
|
+
import "./composables/accountingHost";
|
|
5
8
|
import App from "./App.vue";
|
|
6
9
|
import router from "./router/index";
|
|
7
10
|
import { installGuards } from "./router/guards";
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { ToolDefinition } from "gui-chat-protocol";
|
|
2
2
|
import { META } from "./meta";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import {
|
|
4
|
+
ACCOUNTING_ACTIONS,
|
|
5
|
+
SUPPORTED_COUNTRY_CODES,
|
|
6
|
+
FISCAL_YEAR_END_MONTHS,
|
|
7
|
+
TIME_SERIES_GRANULARITIES,
|
|
8
|
+
TIME_SERIES_METRICS,
|
|
9
|
+
} from "@mulmoclaude/accounting-plugin/shared";
|
|
7
10
|
|
|
8
11
|
// MCP tool definition for the accounting plugin.
|
|
9
12
|
//
|
|
@@ -56,10 +59,11 @@ const toolDefinition: ToolDefinition = {
|
|
|
56
59
|
"For 'createBook' / 'updateBook': ISO 3166-1 alpha-2 country code identifying the tax jurisdiction. Drives country-aware advice — e.g. when set to 'JP', strongly suggest the supplier's T-number (適格請求書発行事業者登録番号) on tax-related lines under インボイス制度. Only the codes listed in the enum are accepted; pass an empty string to 'updateBook' to clear the field.",
|
|
57
60
|
},
|
|
58
61
|
fiscalYearEnd: {
|
|
59
|
-
type: "
|
|
60
|
-
|
|
62
|
+
type: "integer",
|
|
63
|
+
minimum: FISCAL_YEAR_END_MONTHS[0],
|
|
64
|
+
maximum: FISCAL_YEAR_END_MONTHS[FISCAL_YEAR_END_MONTHS.length - 1],
|
|
61
65
|
description:
|
|
62
|
-
"For 'createBook' / 'updateBook':
|
|
66
|
+
"For 'createBook' / 'updateBook': the calendar month (1-12) on whose LAST DAY this book's fiscal year closes — e.g. 3 = March 31, 8 = August 31, 12 = December 31 (calendar year, the default). Any month is allowed. Drives the date-range shortcuts in the UI ('current quarter', 'current year', etc.). Pure metadata: changing it does not move existing entries.",
|
|
63
67
|
},
|
|
64
68
|
initialTab: { type: "string", description: "For 'openBook': initial tab to show (e.g. 'journal', 'opening', 'balanceSheet')." },
|
|
65
69
|
confirm: { type: "boolean", description: "For 'deleteBook': must be true to actually delete (guard against accidental deletion)." },
|
|
@@ -167,7 +171,7 @@ const toolDefinition: ToolDefinition = {
|
|
|
167
171
|
type: "string",
|
|
168
172
|
enum: [...TIME_SERIES_GRANULARITIES],
|
|
169
173
|
description:
|
|
170
|
-
"For 'getTimeSeries': bucket size. 'month' uses calendar months (label format YYYY-MM). 'quarter' and 'year' honour the book's fiscalYearEnd — for a
|
|
174
|
+
"For 'getTimeSeries': bucket size. 'month' uses calendar months (label format YYYY-MM). 'quarter' and 'year' honour the book's fiscalYearEnd — for a December year-end book (12) they coincide with calendar quarters / years; any other closing month shifts them accordingly. Quarter labels are 'FY{endYear}-Q{1..4}', year labels are 'FY{endYear}'; the FY is named by its END calendar year (e.g. an FY running Apr 2025 – Mar 2026 is FY2026).",
|
|
171
175
|
},
|
|
172
176
|
// opening
|
|
173
177
|
asOfDate: {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { PluginRegistration, ToolPlugin } from "../../tools/types";
|
|
2
2
|
import type { ToolResult } from "gui-chat-protocol";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
// The View + Preview now live in @mulmoclaude/accounting-plugin/vue (shared
|
|
4
|
+
// with MulmoTerminal). The built-in host still wraps them in its own plugin
|
|
5
|
+
// scope. The host injects the network + pub/sub seams via
|
|
6
|
+
// `configureAccountingHost(...)` in src/main.ts before any View mounts.
|
|
7
|
+
import { AccountingView, AccountingPreview } from "@mulmoclaude/accounting-plugin/vue";
|
|
5
8
|
import toolDefinition from "./definition";
|
|
6
9
|
import { META } from "./meta";
|
|
7
10
|
import { wrapWithScope } from "../scope";
|
|
@@ -37,8 +40,8 @@ const accountingPlugin: ToolPlugin<AccountingActionData> = {
|
|
|
37
40
|
|
|
38
41
|
isEnabled: () => true,
|
|
39
42
|
generatingMessage: "Working on the books...",
|
|
40
|
-
viewComponent: wrapWithScope("accounting",
|
|
41
|
-
previewComponent: wrapWithScope("accounting",
|
|
43
|
+
viewComponent: wrapWithScope("accounting", AccountingView),
|
|
44
|
+
previewComponent: wrapWithScope("accounting", AccountingPreview),
|
|
42
45
|
};
|
|
43
46
|
|
|
44
47
|
export default accountingPlugin;
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
// Central-registry-facing metadata that the accounting plugin owns.
|
|
2
2
|
// Imported by host aggregators (`src/config/*` and
|
|
3
3
|
// `server/workspace/paths.ts`) which iterate over every plugin's
|
|
4
|
-
// META and merge automatically
|
|
5
|
-
//
|
|
6
|
-
//
|
|
4
|
+
// META and merge automatically, plus the codegen barrels
|
|
5
|
+
// (`src/plugins/_generated/*`). Host code holds zero plugin-specific
|
|
6
|
+
// literals — when a constant is "produced by the plugin", the plugin
|
|
7
|
+
// is the source of truth.
|
|
7
8
|
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
9
|
+
// Stays host-side (not in @mulmoclaude/accounting-plugin) because the
|
|
10
|
+
// plugin-barrel codegen discovers every built-in plugin by scanning
|
|
11
|
+
// `src/plugins/<name>/meta.ts`. The reusable per-book channel/event
|
|
12
|
+
// contract moved to `@mulmoclaude/accounting-plugin/shared` (the
|
|
13
|
+
// backend needs it); this file keeps only the host-wiring META.
|
|
14
|
+
//
|
|
15
|
+
// Browser-safe: no Vue imports, no server-only imports.
|
|
10
16
|
|
|
11
17
|
import { definePluginMeta } from "../meta-types";
|
|
18
|
+
import { ACCOUNTING_DIRS } from "@mulmoclaude/accounting-plugin/shared";
|
|
12
19
|
|
|
13
20
|
/** Single object the host aggregators iterate over. `definePluginMeta`
|
|
14
21
|
* type-checks the shape (typo / missing field surfaces at compile
|
|
15
22
|
* time) AND preserves nested literal types via TS 5.0+'s `const`
|
|
16
|
-
* type parameter.
|
|
17
|
-
* (e.g. `bookChannel(bookId)`, `BookChannelPayload`) live below as
|
|
18
|
-
* separate named exports — the META object only carries the static
|
|
19
|
-
* values that aggregate generically. */
|
|
23
|
+
* type parameter. */
|
|
20
24
|
export const META = definePluginMeta({
|
|
21
25
|
toolName: "manageAccounting",
|
|
22
26
|
apiNamespace: "accounting",
|
|
@@ -28,64 +32,23 @@ export const META = definePluginMeta({
|
|
|
28
32
|
// Flat keys merged into the central `WORKSPACE_DIRS`. Created
|
|
29
33
|
// lazily on first `createBook` so default workspaces don't get a
|
|
30
34
|
// stub `accounting/` they never use.
|
|
35
|
+
// Sourced from the package's shared `ACCOUNTING_DIRS` (the single
|
|
36
|
+
// source of truth the backend io layer also reads) so the on-disk
|
|
37
|
+
// layout can't drift between this aggregator merge and the backend.
|
|
31
38
|
workspaceDirs: {
|
|
32
|
-
accounting:
|
|
39
|
+
accounting: ACCOUNTING_DIRS.accounting,
|
|
33
40
|
// `accounting/books/<bookId>/{accounts.json, journal/YYYY-MM.jsonl,
|
|
34
41
|
// snapshots/YYYY-MM.json}` — multi-book layout (#1078).
|
|
35
|
-
accountingBooks:
|
|
42
|
+
accountingBooks: ACCOUNTING_DIRS.accountingBooks,
|
|
36
43
|
},
|
|
37
44
|
// Static pubsub channel names merged into the central
|
|
38
45
|
// `PUBSUB_CHANNELS`. Per-book data changes ride
|
|
39
|
-
// `bookChannel(bookId)` (helper
|
|
40
|
-
// (a new book was created, an existing one
|
|
41
|
-
// `accountingBooks` so a `JournalList.vue`
|
|
42
|
-
// repaint when the user creates book B from
|
|
46
|
+
// `bookChannel(bookId)` (helper in the package's shared surface);
|
|
47
|
+
// book-list-level events (a new book was created, an existing one
|
|
48
|
+
// was deleted) ride `accountingBooks` so a `JournalList.vue`
|
|
49
|
+
// viewing book A doesn't repaint when the user creates book B from
|
|
50
|
+
// another window.
|
|
43
51
|
staticChannels: {
|
|
44
52
|
accountingBooks: "accounting:books",
|
|
45
53
|
},
|
|
46
54
|
});
|
|
47
|
-
|
|
48
|
-
/** Channel factory for per-book event streams. Subscribers:
|
|
49
|
-
* `useAccountingChannel(bookId)`. Publisher:
|
|
50
|
-
* `server/accounting/eventPublisher.ts`. */
|
|
51
|
-
export function bookChannel(bookId: string): string {
|
|
52
|
-
return `accounting:${bookId}`;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Event kinds that ride `bookChannel(bookId)`. Single source of
|
|
56
|
-
* truth for both publishers (server/accounting) and subscribers
|
|
57
|
-
* (the View) — anyone branching on event kind imports from here
|
|
58
|
-
* and the type system catches drift on either side.
|
|
59
|
-
*
|
|
60
|
-
* - `journal` — addEntry / voidEntry hit the books at `period`.
|
|
61
|
-
* Refetch the journal list and (if the View is
|
|
62
|
-
* showing balances at or after `period`) the
|
|
63
|
-
* relevant report.
|
|
64
|
-
* - `opening` — setOpeningBalances. Affects every period from
|
|
65
|
-
* the opening date forward; refetch everything.
|
|
66
|
-
* - `accounts` — chart-of-accounts mutation that may affect
|
|
67
|
-
* aggregation (account type changed). Refetch
|
|
68
|
-
* accounts and the active report.
|
|
69
|
-
* - `snapshotsRebuilding` / `snapshotsReady` — purely informational;
|
|
70
|
-
* the View can show a "calculating" spinner
|
|
71
|
-
* during rebuild, but the lazy-rebuild safety
|
|
72
|
-
* net means a refetch always returns the right
|
|
73
|
-
* answer regardless. */
|
|
74
|
-
export const BOOK_EVENT_KINDS = {
|
|
75
|
-
journal: "journal",
|
|
76
|
-
opening: "opening",
|
|
77
|
-
accounts: "accounts",
|
|
78
|
-
snapshotsRebuilding: "snapshots-rebuilding",
|
|
79
|
-
snapshotsReady: "snapshots-ready",
|
|
80
|
-
} as const;
|
|
81
|
-
|
|
82
|
-
export type BookEventKind = (typeof BOOK_EVENT_KINDS)[keyof typeof BOOK_EVENT_KINDS];
|
|
83
|
-
|
|
84
|
-
/** Payload published on `bookChannel(bookId)`. */
|
|
85
|
-
export interface BookChannelPayload {
|
|
86
|
-
kind: BookEventKind;
|
|
87
|
-
/** YYYY-MM. Present for `journal` (entry month) and the snapshot
|
|
88
|
-
* events (the earliest invalidated month). Absent for `opening`
|
|
89
|
-
* (which invalidates everything) and `accounts`. */
|
|
90
|
-
period?: string;
|
|
91
|
-
}
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
<div v-if="catalogDetailLoading" class="text-sm text-gray-400 italic">{{ t("pluginManageSkills.loading") }}</div>
|
|
290
290
|
<div v-else-if="catalogError" class="text-sm text-red-600">{{ catalogError }}</div>
|
|
291
291
|
<!-- eslint-disable vue/no-v-html -- markdown sanitized via sanitizeMarkdownHtml; same trust chain as the active-skill body below -->
|
|
292
|
-
<div v-else-if="catalogDetail" class="markdown-content text-gray-700" v-html="catalogRenderedBody"></div>
|
|
292
|
+
<div v-else-if="catalogDetail" ref="catalogMarkdownRef" class="markdown-content text-gray-700" v-html="catalogRenderedBody"></div>
|
|
293
293
|
<!-- eslint-enable vue/no-v-html -->
|
|
294
294
|
</div>
|
|
295
295
|
|
|
@@ -378,6 +378,7 @@
|
|
|
378
378
|
<!-- eslint-disable vue/no-v-html -- sanitized via DOMPurify; multi-line element so disable/enable pair (CLAUDE.md UI rule) instead of -next-line -->
|
|
379
379
|
<div
|
|
380
380
|
v-else-if="detail && renderedBody"
|
|
381
|
+
ref="skillMarkdownRef"
|
|
381
382
|
class="markdown-content text-gray-700"
|
|
382
383
|
data-testid="skill-body-rendered"
|
|
383
384
|
@click="handleExternalLinkClick"
|
|
@@ -488,6 +489,7 @@ import type { ManageSkillsData, SkillSummary } from "./index";
|
|
|
488
489
|
import { apiGet, apiPost, apiPut, apiDelete } from "../../utils/api";
|
|
489
490
|
import { handleExternalLinkClick } from "../../utils/dom/externalLink";
|
|
490
491
|
import { sanitizeMarkdownHtml } from "../../utils/markdown/sanitize";
|
|
492
|
+
import { useMermaidRenderer } from "../../utils/markdown/useMermaid";
|
|
491
493
|
import { pluginEndpoints } from "../api";
|
|
492
494
|
import { buildRouteUrl } from "../meta-types";
|
|
493
495
|
import type { SkillsEndpoints } from "./definition";
|
|
@@ -565,6 +567,9 @@ const renderedBody = computed(() => {
|
|
|
565
567
|
return sanitizeMarkdownHtml(marked(body) as string);
|
|
566
568
|
});
|
|
567
569
|
|
|
570
|
+
const skillMarkdownRef = ref<HTMLElement | null>(null);
|
|
571
|
+
useMermaidRenderer(skillMarkdownRef, renderedBody);
|
|
572
|
+
|
|
568
573
|
// Edit/Delete follows the backend writer contract (writer.ts rejects
|
|
569
574
|
// only source === "user"), NOT the mc- name heuristic. Under #1335
|
|
570
575
|
// PR-A the launcher syncs presets to data/skills/catalog/preset/ and
|
|
@@ -667,6 +672,9 @@ const catalogRenderedBody = computed(() => {
|
|
|
667
672
|
return sanitizeMarkdownHtml(marked(body) as string);
|
|
668
673
|
});
|
|
669
674
|
|
|
675
|
+
const catalogMarkdownRef = ref<HTMLElement | null>(null);
|
|
676
|
+
useMermaidRenderer(catalogMarkdownRef, catalogRenderedBody);
|
|
677
|
+
|
|
670
678
|
// External catalog entries grouped under their repo, in the repo
|
|
671
679
|
// order returned by `/external/repos`. Repos with zero discoverable
|
|
672
680
|
// entries still render (header + empty state) so an install that
|
|
@@ -193,7 +193,7 @@ h2 {
|
|
|
193
193
|
align-items: baseline;
|
|
194
194
|
}
|
|
195
195
|
.path {
|
|
196
|
-
font-family: monospace;
|
|
196
|
+
font-family: Consolas, "MS Gothic", "BIZ UDGothic", monospace;
|
|
197
197
|
font-size: 0.75rem;
|
|
198
198
|
color: #374151;
|
|
199
199
|
overflow: hidden;
|
|
@@ -216,7 +216,7 @@ h2 {
|
|
|
216
216
|
color: #4b5563;
|
|
217
217
|
}
|
|
218
218
|
.coords {
|
|
219
|
-
font-family: monospace;
|
|
219
|
+
font-family: Consolas, "MS Gothic", "BIZ UDGothic", monospace;
|
|
220
220
|
}
|
|
221
221
|
.altitude {
|
|
222
222
|
color: #9ca3af;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { META } from "./meta";
|
|
2
2
|
import type { ResolvedRoute } from "../meta-types";
|
|
3
|
-
import { TOOL_DEFINITION } from "@mulmoclaude/collection
|
|
3
|
+
import { TOOL_DEFINITION } from "@mulmoclaude/core/collection";
|
|
4
4
|
|
|
5
5
|
// presentCollection's tool schema + executor now live in the shared
|
|
6
|
-
// @mulmoclaude/collection
|
|
6
|
+
// @mulmoclaude/core/collection package (single source of truth, also consumed
|
|
7
7
|
// by MulmoTerminal). This built-in is a thin host adapter: it keeps MulmoClaude's
|
|
8
8
|
// host-specific routing META + endpoint types while sourcing the definition from
|
|
9
9
|
// the package. The plugin codegen scans this file's default ToolDefinition export.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// presentCollection's tool definition + executor now live in the shared
|
|
2
|
-
// @mulmoclaude/collection
|
|
2
|
+
// @mulmoclaude/core/collection package (single source of truth, also consumed
|
|
3
3
|
// by MulmoTerminal). Re-exported here so existing importers — the server
|
|
4
4
|
// dispatch route (server/api/routes/plugins.ts) and the plugin index — keep
|
|
5
5
|
// working unchanged.
|
|
6
|
-
export { executePresentCollection, TOOL_NAME, TOOL_DEFINITION } from "@mulmoclaude/collection
|
|
6
|
+
export { executePresentCollection, TOOL_NAME, TOOL_DEFINITION } from "@mulmoclaude/core/collection";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// presentCollection's render/arg types now live in the shared
|
|
2
|
-
// @mulmoclaude/collection
|
|
2
|
+
// @mulmoclaude/core/collection package. Re-exported here so existing relative
|
|
3
3
|
// imports (View.vue, Preview.vue, index.ts) keep working unchanged.
|
|
4
|
-
export type { PresentCollectionData, PresentCollectionArgs } from "@mulmoclaude/collection
|
|
4
|
+
export type { PresentCollectionData, PresentCollectionArgs } from "@mulmoclaude/core/collection";
|
|
@@ -7,7 +7,7 @@ import { TOOL_DEFINITION } from "@mulmoclaude/html-plugin";
|
|
|
7
7
|
// consumable by MulmoTerminal). This built-in is a thin host adapter: it keeps
|
|
8
8
|
// MulmoClaude's host-specific routing META and scoped-runtime wrapping while
|
|
9
9
|
// sourcing the schema/logic from the package. The Vue View stays host-side until
|
|
10
|
-
// phase 2 (see plans/feat-presenthtml-mulmoterminal.md).
|
|
10
|
+
// phase 2 (see plans/done/feat-presenthtml-mulmoterminal.md).
|
|
11
11
|
export const TOOL_NAME = META.toolName;
|
|
12
12
|
|
|
13
13
|
/** Resolved-URL view of the html plugin's routes (create / update). Plugin code
|
|
@@ -1718,7 +1718,7 @@ async function downloadPdf() {
|
|
|
1718
1718
|
padding: 0.5rem;
|
|
1719
1719
|
background: #f5f5f5;
|
|
1720
1720
|
border-top: 1px solid #e0e0e0;
|
|
1721
|
-
font-family: monospace;
|
|
1721
|
+
font-family: Consolas, "MS Gothic", "BIZ UDGothic", monospace;
|
|
1722
1722
|
font-size: 0.85rem;
|
|
1723
1723
|
}
|
|
1724
1724
|
|
|
@@ -1748,7 +1748,7 @@ async function downloadPdf() {
|
|
|
1748
1748
|
border: 1px solid #ccc;
|
|
1749
1749
|
border-radius: 4px;
|
|
1750
1750
|
color: #333;
|
|
1751
|
-
font-family: "Courier New", monospace;
|
|
1751
|
+
font-family: "Courier New", "MS Gothic", "BIZ UDGothic", monospace;
|
|
1752
1752
|
font-size: 0.9rem;
|
|
1753
1753
|
resize: vertical;
|
|
1754
1754
|
margin-bottom: 0.5rem;
|
|
@@ -50,7 +50,7 @@ export function parseSSEEventLine(line: string): SSEEvent | null {
|
|
|
50
50
|
* characters must be rendered first so they can be referenced by
|
|
51
51
|
* any character-using beat.
|
|
52
52
|
*/
|
|
53
|
-
export function shouldAutoRenderBeat(beat: { image?: { type?: string }
|
|
53
|
+
export function shouldAutoRenderBeat(beat: { image?: { type?: string } }, hasCharacters: boolean, autoRenderTypes: readonly string[]): boolean {
|
|
54
54
|
if (hasCharacters) return false;
|
|
55
55
|
const type = beat.image?.type;
|
|
56
56
|
if (typeof type !== "string") return false;
|
|
@@ -341,7 +341,7 @@ function triggerDownload(blob: Blob, filename: string) {
|
|
|
341
341
|
padding: 0.5rem;
|
|
342
342
|
background: #f5f5f5;
|
|
343
343
|
border-top: 1px solid #e0e0e0;
|
|
344
|
-
font-family: monospace;
|
|
344
|
+
font-family: Consolas, "MS Gothic", "BIZ UDGothic", monospace;
|
|
345
345
|
font-size: 0.85rem;
|
|
346
346
|
flex-shrink: 0;
|
|
347
347
|
}
|
|
@@ -372,7 +372,7 @@ function triggerDownload(blob: Blob, filename: string) {
|
|
|
372
372
|
border: 1px solid #ccc;
|
|
373
373
|
border-radius: 4px;
|
|
374
374
|
color: #333;
|
|
375
|
-
font-family: "Courier New", monospace;
|
|
375
|
+
font-family: "Courier New", "MS Gothic", "BIZ UDGothic", monospace;
|
|
376
376
|
font-size: 0.9rem;
|
|
377
377
|
resize: vertical;
|
|
378
378
|
margin-bottom: 0.5rem;
|
|
@@ -114,8 +114,7 @@
|
|
|
114
114
|
<pre
|
|
115
115
|
class="px-2 py-1.5 rounded bg-gray-50 border border-gray-200 text-gray-700 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed"
|
|
116
116
|
:data-testid="`scheduler-task-prompt-${task.id}`"
|
|
117
|
-
>{{ task.prompt }}</pre
|
|
118
|
-
>
|
|
117
|
+
>{{ task.prompt }}</pre>
|
|
119
118
|
</div>
|
|
120
119
|
</div>
|
|
121
120
|
</details>
|