limixbot 0.2.1 → 0.2.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.
Files changed (151) hide show
  1. package/dist/assets/{ActivityPanel-wGakTVoB.js → ActivityPanel-BJ-KjzZQ.js} +1 -1
  2. package/dist/assets/{App-nn1CRFOF.js → App-B88ABHQh.js} +9 -9
  3. package/dist/assets/{AppEventEditor-qtzW6Wi9.js → AppEventEditor-C1j7B-on.js} +1 -1
  4. package/dist/assets/{BotSettingsDialog-BqdSZ6Bc.js → BotSettingsDialog-CVVgZ_Nc.js} +1 -1
  5. package/dist/assets/{BrowserPanel-DEPSYPbp.js → BrowserPanel-DD7r9HOn.js} +1 -1
  6. package/dist/assets/{BrowserProfilesManager-CdHa_Pzc.js → BrowserProfilesManager-D1rUYWVD.js} +1 -1
  7. package/dist/assets/{CloudAddDialog-kw0Xoy-f.js → CloudAddDialog-CZhJqPdM.js} +1 -1
  8. package/dist/assets/{ComputerFilesPane-dcjg6CsZ.js → ComputerFilesPane-B1y88sYp.js} +1 -1
  9. package/dist/assets/{ComputerPanel-DlRO3y4j.js → ComputerPanel-DBvlrkN9.js} +2 -2
  10. package/dist/assets/{DataPanel-BgEoMjKG.js → DataPanel-Bu3s4f1H.js} +1 -1
  11. package/dist/assets/{DesktopViewer-QXLtwr1X.js → DesktopViewer-D_Tc0DtD.js} +1 -1
  12. package/dist/assets/{FilesView-B6okgCEu.js → FilesView-DwGmVJUN.js} +1 -1
  13. package/dist/assets/{GrokMoveDialog-Da43KH3C.js → GrokMoveDialog-f1ta87oZ.js} +1 -1
  14. package/dist/assets/{InspectorPanel-DrLnVkYH.js → InspectorPanel-D0_Z99j4.js} +1 -1
  15. package/dist/assets/{KeyboardShortcutsModal-75ABeY6c.js → KeyboardShortcutsModal-CEwkgGoB.js} +1 -1
  16. package/dist/assets/{LiveDesktop-CWf3-i6p.js → LiveDesktop-E6f1BBs1.js} +1 -1
  17. package/dist/assets/{LocalVmWorkspace-CR3rH05s.js → LocalVmWorkspace-D6Eotsee.js} +1 -1
  18. package/dist/assets/{MacLocalControl-CExicJY4.js → MacLocalControl-B3YOye-H.js} +1 -1
  19. package/dist/assets/{MarkdownFilePreview-aTqNPS7m.js → MarkdownFilePreview-BLGAemwy.js} +1 -1
  20. package/dist/assets/{MenuMotion-DhUo51zl.js → MenuMotion-vm5ldfak.js} +1 -1
  21. package/dist/assets/{NewBotDialog-D4lQtbBE.js → NewBotDialog-B2X4qm4R.js} +1 -1
  22. package/dist/assets/{PhoneAppDialog-D2qWAW76.js → PhoneAppDialog-hQoVtk6q.js} +1 -1
  23. package/dist/assets/{PlacesRail-BDV0ABcM.js → PlacesRail-0dNv7oZB.js} +1 -1
  24. package/dist/assets/{PluginsPanel-DZTFKo1y.js → PluginsPanel-DtdtIk9h.js} +1 -1
  25. package/dist/assets/{ProIntroduction-Bwnff7uQ.js → ProIntroduction-B7TckG4N.js} +1 -1
  26. package/dist/assets/{RemoteAgentSettingsPanel-Bgma6TDp.js → RemoteAgentSettingsPanel-DxXqwhrm.js} +1 -1
  27. package/dist/assets/{RoomPanel-C_Sg2Z7z.js → RoomPanel-FwiCG8NY.js} +1 -1
  28. package/dist/assets/{RoutinesPage-BPQYVlnE.js → RoutinesPage-D7e6qR1n.js} +1 -1
  29. package/dist/assets/{SettingsModal-DHQ6sD8j.js → SettingsModal-DBR7IGpo.js} +1 -1
  30. package/dist/assets/{ShareTeamDialog-CilYt5Ya.js → ShareTeamDialog-TxtG8d2Y.js} +1 -1
  31. package/dist/assets/{SignedInSites-Cr70b2L2.js → SignedInSites-CVRfJGQY.js} +1 -1
  32. package/dist/assets/{TeamLibraryPanel-BDa1gQIZ.js → TeamLibraryPanel-NG1mKW-M.js} +1 -1
  33. package/dist/assets/{TeamMapPage-DqRb3TGJ.js → TeamMapPage-j9euCmPt.js} +1 -1
  34. package/dist/assets/{TriggersPage-CUpJCafe.js → TriggersPage-rajjjJ3z.js} +1 -1
  35. package/dist/assets/{VisibilitySection-c7NZIA9V.js → VisibilitySection-BVTc_bLr.js} +1 -1
  36. package/dist/assets/{WebhookTrigger-rWCF-fSk.js → WebhookTrigger-Bap1eB3c.js} +1 -1
  37. package/dist/assets/{WorksOnGrid-DihSwYt9.js → WorksOnGrid-BH9WTY-z.js} +1 -1
  38. package/dist/assets/{abnfDiagram-YUKMZFIV-BMYI5zF5.js → abnfDiagram-YUKMZFIV-DCjLKsgc.js} +1 -1
  39. package/dist/assets/{activity-D2PL1gFe.js → activity-BjR5nw9Z.js} +1 -1
  40. package/dist/assets/{architectureDiagram-47P4ROYG-Cq3f5Ag3.js → architectureDiagram-47P4ROYG-DhdUk3XR.js} +1 -1
  41. package/dist/assets/{blockDiagram-E7TT5TSB-8I28B3bb.js → blockDiagram-E7TT5TSB-CJN1G2VQ.js} +1 -1
  42. package/dist/assets/{c4Diagram-CRA5TL53-BtQWKLUx.js → c4Diagram-CRA5TL53-BfkzahxK.js} +1 -1
  43. package/dist/assets/{calendar-days-CkTnLcm-.js → calendar-days-DlTxBFXF.js} +1 -1
  44. package/dist/assets/channel-BAivii3N.js +1 -0
  45. package/dist/assets/{chunk-2Q5K7J3B-BcHz75It.js → chunk-2Q5K7J3B-BwH3UOL3.js} +1 -1
  46. package/dist/assets/{chunk-5VM5RSS4-BLe2eJnK.js → chunk-5VM5RSS4-qo9dxZfl.js} +1 -1
  47. package/dist/assets/{chunk-7TKQ45FW-DHES88ZT.js → chunk-7TKQ45FW-B_b-TvDW.js} +1 -1
  48. package/dist/assets/{chunk-AW2ZBBNX-PI3r7l8j.js → chunk-AW2ZBBNX-DTVjfWfo.js} +1 -1
  49. package/dist/assets/{chunk-FVRAUYC3-BXEZl-_w.js → chunk-FVRAUYC3-6Ej1chkf.js} +2 -2
  50. package/dist/assets/{chunk-HTAEGDNF-BmMsXJLi.js → chunk-HTAEGDNF-dGKAv3Ly.js} +1 -1
  51. package/dist/assets/{chunk-JWPE2WC7-C5dZ5J6R.js → chunk-JWPE2WC7-Dl30Op6i.js} +1 -1
  52. package/dist/assets/{chunk-KQW6MTUR-DvxBphgU.js → chunk-KQW6MTUR-C7I5DprK.js} +1 -1
  53. package/dist/assets/{chunk-XXDRQBXY-TMAqsYLp.js → chunk-XXDRQBXY-niGkH3Wm.js} +1 -1
  54. package/dist/assets/{classDiagram-v2-K4WV4PDN-BNcMl3ic.js → classDiagram-v2-K4WV4PDN-DV3eJqTd.js} +1 -1
  55. package/dist/assets/{coins-V4mVN2W-.js → coins-DEObq6EM.js} +1 -1
  56. package/dist/assets/{core-CLUt4bhC.js → core-CQuzVAof.js} +1 -1
  57. package/dist/assets/{cose-bilkent-JH36ORCC-SqFMExgo.js → cose-bilkent-JH36ORCC-Dw675nir.js} +1 -1
  58. package/dist/assets/{cynefin-EF2NZ3EQ-8KVnqRYL.js → cynefin-EF2NZ3EQ-rM_Vx_Nc.js} +1 -1
  59. package/dist/assets/{cynefinDiagram-3GCD6N5R-DJDKuhvE.js → cynefinDiagram-3GCD6N5R-LQIlP8_F.js} +1 -1
  60. package/dist/assets/{dagre-W4DXFKR2-BNOKfUQP.js → dagre-W4DXFKR2-DIGKS0Jz.js} +1 -1
  61. package/dist/assets/de-B1J17cai.js +8 -0
  62. package/dist/assets/{diagram-2UJZ2QOL-CtypQwWI.js → diagram-2UJZ2QOL-DHcKf8Wa.js} +1 -1
  63. package/dist/assets/{diagram-OVF4WLC6-DYGOe5dt.js → diagram-OVF4WLC6-CaakNCyA.js} +1 -1
  64. package/dist/assets/{diagram-PFPMY2P6-BmWki4-n.js → diagram-PFPMY2P6-BQTgTfVh.js} +1 -1
  65. package/dist/assets/{diagram-UMYRVEAY-BHkrgOw0.js → diagram-UMYRVEAY-Dz4tiefj.js} +1 -1
  66. package/dist/assets/{diagram-YEKJPTXX-BNnr9BVG.js → diagram-YEKJPTXX-4K0yWjUe.js} +1 -1
  67. package/dist/assets/{diagram-ZIFT7M5P-D6dgtxhx.js → diagram-ZIFT7M5P-rWWlZtci.js} +1 -1
  68. package/dist/assets/{ebnfDiagram-VR2GEFS7-BB0cZ0XH.js → ebnfDiagram-VR2GEFS7-QPG43w9u.js} +1 -1
  69. package/dist/assets/{elk-IJKZMXRS-DxEc1gip.js → elk-IJKZMXRS-hRSqsqP_.js} +1 -1
  70. package/dist/assets/{erDiagram-O2IAPWRE-g0lX3P7o.js → erDiagram-O2IAPWRE-V8e4toBc.js} +1 -1
  71. package/dist/assets/es-CS_V7OdX.js +6 -0
  72. package/dist/assets/{file-up-CVXxMYSO.js → file-up-DY1vL6py.js} +1 -1
  73. package/dist/assets/{flowDiagram-OXPTDLAJ-CDuQPMTL.js → flowDiagram-OXPTDLAJ-Cz7Ay48V.js} +1 -1
  74. package/dist/assets/fr-Dn65EJNi.js +8 -0
  75. package/dist/assets/{ganttDiagram-R7TSEDQI-BX2MBIv7.js → ganttDiagram-R7TSEDQI-CI6nugxH.js} +1 -1
  76. package/dist/assets/{gitGraphDiagram-XJZIOB7I-B3TKmfsg.js → gitGraphDiagram-XJZIOB7I-BjtDxt_s.js} +1 -1
  77. package/dist/assets/hi-CHU0sl7u.js +1 -0
  78. package/dist/assets/{import-name-AOCSrYeN.js → import-name-DqzojGXy.js} +1 -1
  79. package/dist/assets/{index-DUV18QHa.js → index-BfUxIMI-.js} +1 -1
  80. package/dist/assets/{index-CuCIbHWm.js → index-BiSZ69F2.js} +2 -2
  81. package/dist/assets/{index-qPZ2uEQ9.js → index-BjLGGSd_.js} +1 -1
  82. package/dist/assets/{infoDiagram-5W2HQ5XZ-DIr7IZbP.js → infoDiagram-5W2HQ5XZ-B7kSPI8x.js} +1 -1
  83. package/dist/assets/{ishikawaDiagram-K3B6WC7H-NMKEEmyA.js → ishikawaDiagram-K3B6WC7H-B80aI5uW.js} +1 -1
  84. package/dist/assets/it-CbDr93sA.js +13 -0
  85. package/dist/assets/ja-CJbW-M3a.js +13 -0
  86. package/dist/assets/{journeyDiagram-COXZFDF6-DgZisK1u.js → journeyDiagram-COXZFDF6-CjxmU5O_.js} +1 -1
  87. package/dist/assets/{kanban-definition-P3RFRI5V-D9DXm2W-.js → kanban-definition-P3RFRI5V-BIU0Q11m.js} +1 -1
  88. package/dist/assets/ko-ZQvzPil_.js +13 -0
  89. package/dist/assets/{mcp-servers-M4OhcNZG.js → mcp-servers-LGwHCvUp.js} +1 -1
  90. package/dist/assets/{mermaid.core-DfRakiWl.js → mermaid.core-C9748YDA.js} +4 -4
  91. package/dist/assets/{mindmap-definition-LZFPQGKD-Dssv5SKs.js → mindmap-definition-LZFPQGKD-C_QDmkR_.js} +1 -1
  92. package/dist/assets/{minimize-DCuQCut-.js → minimize-DxmLA74X.js} +1 -1
  93. package/dist/assets/{monitor-Dl1gHAr3.js → monitor-saVltJVe.js} +1 -1
  94. package/dist/assets/{new-bot-B4NPoOi_.js → new-bot-BdMgVWOM.js} +1 -1
  95. package/dist/assets/{org-library-Ccr_VDG6.js → org-library-DWY9-OyC.js} +1 -1
  96. package/dist/assets/{package-format-CxnG4Kw8.js → package-format-CqLquC8E.js} +1 -1
  97. package/dist/assets/{pegDiagram-BGZESJAR-CQbSQ3IE.js → pegDiagram-BGZESJAR-CWQyllhq.js} +1 -1
  98. package/dist/assets/{pieDiagram-CAPJLFHJ-C7ozPET8.js → pieDiagram-CAPJLFHJ-BXx9zdy3.js} +1 -1
  99. package/dist/assets/pl-tZIDksyW.js +13 -0
  100. package/dist/assets/pt-br-BtcqPDCE.js +15 -0
  101. package/dist/assets/{quadrantDiagram-GDMTTRAM-DJk_Kyy9.js → quadrantDiagram-GDMTTRAM-CT3VU9ss.js} +1 -1
  102. package/dist/assets/{rail-fMmyqhzW.js → rail-DDUwvn54.js} +1 -1
  103. package/dist/assets/{railroadDiagram-SM67HX2B-DMcwdEyc.js → railroadDiagram-SM67HX2B-DsZVUfT9.js} +1 -1
  104. package/dist/assets/{remote-desktop-panel-dbuIWW_m.js → remote-desktop-panel-B-L_Sc4G.js} +1 -1
  105. package/dist/assets/{requirementDiagram-X7JNWC4A-CLiopj9D.js → requirementDiagram-X7JNWC4A-DieBBfKD.js} +1 -1
  106. package/dist/assets/ru-Bfcy52OT.js +13 -0
  107. package/dist/assets/{sankeyDiagram-UM26HJRW-DWKPgJCC.js → sankeyDiagram-UM26HJRW-D1n5IJ1M.js} +1 -1
  108. package/dist/assets/{sequenceDiagram-ZO4K6R2Y-CGfF9z1U.js → sequenceDiagram-ZO4K6R2Y-Cn7_MLcn.js} +1 -1
  109. package/dist/assets/{sizeCapture-INFHLROL-CRjSCZFK.js → sizeCapture-INFHLROL-BCwe4Nln.js} +1 -1
  110. package/dist/assets/{stateDiagram-v2-TBUQTH76-CFIB5Of8.js → stateDiagram-v2-TBUQTH76-Dpy7t5Eb.js} +1 -1
  111. package/dist/assets/{styles-BjZJZe6I.js → styles-Df9bbQa1.js} +2 -2
  112. package/dist/assets/{swimlanes-N4OXWK64-DpmeGHcW.js → swimlanes-N4OXWK64-CAY2xzWw.js} +1 -1
  113. package/dist/assets/swimlanesDiagram-K3J5GTZL-25FmnC_u.js +8 -0
  114. package/dist/assets/{team-share-CML_7_yJ.js → team-share-B5XghBFg.js} +1 -1
  115. package/dist/assets/{timeline-definition-YOQAKGHF-DdTTKAK6.js → timeline-definition-YOQAKGHF-ClPw93T0.js} +1 -1
  116. package/dist/assets/tr-3Jw0E4fc.js +6 -0
  117. package/dist/assets/uk-B_Q6nXm0.js +1 -0
  118. package/dist/assets/{usecaseDiagram-VIAY4XPW-D5CELJJA.js → usecaseDiagram-VIAY4XPW-Bodg7BA2.js} +1 -1
  119. package/dist/assets/{vennDiagram-BLWOH2XV-CujsBy3r.js → vennDiagram-BLWOH2XV-jHU0_O9m.js} +1 -1
  120. package/dist/assets/vi-VlbIiohE.js +6 -0
  121. package/dist/assets/{wardleyDiagram-YMQ3BMBF-QfDuuGBm.js → wardleyDiagram-YMQ3BMBF-Bqb5Ov5q.js} +1 -1
  122. package/dist/assets/{xychartDiagram-TAQBALBS-B7n2GH_Y.js → xychartDiagram-TAQBALBS-cNVR4g0S.js} +1 -1
  123. package/dist/assets/zh-BwjuB8Xo.js +13 -0
  124. package/dist/assets/zh-tw-CWDGum-b.js +15 -0
  125. package/dist/index.html +2 -2
  126. package/dist/rail.html +4 -4
  127. package/dist-server/index.js +694 -714
  128. package/dist-server/openmausbot.js +548 -558
  129. package/dist-server/package.json +1 -1
  130. package/dist-server/pair-cli.js +61 -61
  131. package/dist-server/server/index.js +2 -2
  132. package/dist-server/server/limix-report-config.js +1 -0
  133. package/dist-server/server/limix-report-mail.js +59 -0
  134. package/package.json +1 -1
  135. package/dist/assets/channel-BFWribVc.js +0 -1
  136. package/dist/assets/de-SCUOqYm5.js +0 -8
  137. package/dist/assets/es-A3rM0HzK.js +0 -6
  138. package/dist/assets/fr-DRDEDuSU.js +0 -8
  139. package/dist/assets/hi-Bar1etD1.js +0 -1
  140. package/dist/assets/it-CaaGmE6C.js +0 -13
  141. package/dist/assets/ja-C8goxgXK.js +0 -13
  142. package/dist/assets/ko-ClPjw23W.js +0 -13
  143. package/dist/assets/pl-BZRlEjRG.js +0 -13
  144. package/dist/assets/pt-br-Pn296bZX.js +0 -15
  145. package/dist/assets/ru-BjNOFHlt.js +0 -13
  146. package/dist/assets/swimlanesDiagram-K3J5GTZL-aGF7VI1o.js +0 -8
  147. package/dist/assets/tr-DvCKopMI.js +0 -6
  148. package/dist/assets/uk-eQInRbS6.js +0 -1
  149. package/dist/assets/vi-BWcvK_yD.js +0 -6
  150. package/dist/assets/zh-CIfUJ9rS.js +0 -13
  151. package/dist/assets/zh-tw-DnyY-W7m.js +0 -15
@@ -1 +1 @@
1
- {"type":"module","version":"0.2.1"}
1
+ {"type":"module","version":"0.2.2"}
@@ -1243,67 +1243,67 @@ RENAME_RETRY_DELAYS_MS[attempt])}}function writeFileAtomic(path3,data,options2={
1243
1243
  fd=openSync(path3,"r")}else fd=openSync(path3,constants.O_RDONLY|constants.O_NOFOLLOW|constants.O_NONBLOCK);let stat9=fstatSync(fd);if(!stat9.isFile()||stat9.size!==Buffer.byteLength(data))return!1;let uid=process.getuid?.();return uid!==void 0&&stat9.uid!==uid||mode!==void 0&&process.platform!=="win32"&&(stat9.mode&511&~mode)!==0?!1:readFileSync(fd).equals(Buffer.from(data))}catch{return!1}finally{if(fd!==null)try{closeSync(fd)}catch{}}}function writeFileAtomicIfChanged(path3,data,options2={}){
1244
1244
  return holdsExactly(path3,data,options2.mode)?!1:(writeFileAtomic(path3,data,options2),!0)}var RENAME_RETRY_DELAYS_MS,RETRYABLE_RENAME_CODES,init_atomic=__esm({"server/atomic.ts"(){"use strict";RENAME_RETRY_DELAYS_MS=[5,10,20,40,80],RETRYABLE_RENAME_CODES=new Set(["EPERM","EACCES","EBUSY"])}});function cliPrefix(env=process.env,script=process.argv[1]??""){let fixed=env.OMB_CLI_PREFIX?.trim();return fixed||(env.npm_lifecycle_event==="omb"?"pnpm omb":/[\\/]_npx[\\/]/.test(script)?"npx openmausbot":"openmausbot")}function cliCommand(rest,env,script){return`${cliPrefix(env,script)} ${rest}`}var init_cli_invocation=__esm({"server/cli-invocation.ts"(){"use strict"}});var en_default2,init_en2=__esm({"src/locales/en.json"(){en_default2={"server.moves.connectorStayedMail":"{name} stayed on {computer} when your bots moved to My Cloud, so bots here can't read or send mail through it. It keeps its accounts on {computer}, and it can't reach a mail server from here. To read and send mail from My Cloud, connect your mailbox under Connected apps.","server.moves.connectorStayedProgram":"{name} stayed on {computer} when your bots moved to My Cloud, so bots here can't us\
1245
1245
  e it. It needs {program}, which My Cloud doesn't have.","server.moves.connectorStayedHere":"{name} stayed on {computer} when your bots moved to My Cloud, so bots here can't use it. It uses files or an address only {computer} has.","server.moves.webhookMoved":'Now that I live on {place}, my webhook "{name}" has a new address. Open Automations, choose Copy address on "{name}", and paste it into the app that sends to it.',"server.teammates.sameRequest":"Another teammate asked the same a moment ago,\
1246
- so this gets that answer instead of a second one.","server.reports.sent":"Sent to the Limix Bot team (report {report}). Milind and Omkar get it by email.","server.reports.sentReply":"Sent to the Limix Bot team (report {report}). Milind and Omkar get it by email and will reply to {contact}.","server.reports.sentLater":"Sent to the Limix Bot team (report {report}) after an earlier try did not go through. Milind and Omkar get it by email.","server.reports.sentLaterReply":"Sent to the Limix Bot tea\
1247
- m (report {report}) after an earlier try did not go through. Milind and Omkar get it by email and will reply to {contact}.","server.reports.notYet":"Not sent yet: {why}. The report is saved and goes on its own {when}, so there is no need to send it again.","server.reports.why.limited":"the Limix Bot team takes only a few reports an hour from each app","server.reports.why.offline":"the Limix Bot team's server could not be reached","server.reports.why.busy":"the Limix Bot team's server could not t\
1248
- ake it right now","server.reports.when.minute":"in about {count} minute","server.reports.when.minutes":"in about {count} minutes","server.reports.when.soon":"as soon as it can","server.reports.refused":"The Limix Bot team's server refused this bug report, so nothing was sent: {detail}.","server.reports.full":"Not sent: {count} bug reports are already waiting to go to the Limix Bot team. Type @devs again once they have gone.","server.reports.dropped":"A bug report from this conversation could not\
1249
- reach the Limix Bot team for a week, so it was dropped. Type @devs again to send a new one.","server.reports.fixed":"Fixed in {version}. Want to try again?","server.questions.notAsked":"Not asked (Just do it): {question}","server.warmSummary.summarized":"summarized this conversation while it was idle; the latest messages carry on word for word","server.runs.didNotFinish":"This run didn't finish.","server.runs.didNotFinishWhy":"This run didn't finish: {detail}","server.runs.partlyDoneWhy":"This \
1250
- run was partly done: {detail}","server.runs.handoffApart":"{bot} couldn't hand this to {target}, because they're shared with different people. Nothing was sent.","server.runs.handoffRefusedTitle":"{bot}'s routine couldn't hand off its work","server.runs.recovered":"Recovered: {name} finished OK at {time}","server.runs.card.line":"Routine \u201C{name}\u201D {state}","server.runs.state.needsInput":"needs your input","server.runs.state.blocked":"was blocked","server.runs.state.limitReached":"reache\
1251
- d its limit","server.runs.state.stopped":"was stopped","server.runs.state.failed":"failed","server.runs.state.waiting":"needs your attention","server.runs.state.completed":"completed","server.runs.state.cancelled":"was cancelled","server.runs.state.missed":"was missed","server.runs.state.deferred":"deferred: target busy","server.runs.state.queued":"queued","server.runs.state.running":"running","server.model.orgBlockedAnswered":"{picked} is turned off by your organization, so {answered} answered \
1252
- instead. Choose another model to stop seeing this.","server.model.otherAnswered":"You chose {picked}, but {answered} answered instead.","server.incidents.where.room":'in the room "{room}"',"server.problem.failed":"{bot} hit a problem: its run {where} failed","server.problem.failedWhy":'{bot} hit a problem: its run {where} failed: "{detail}"',"server.problem.stalled":"{bot} hit a problem: its run {where} stopped after showing no activity","server.problem.stalledWhy":'{bot} hit a problem: its run \
1253
- {where} stopped after showing no activity: "{detail}"',"server.problem.couldNotStart":"{bot} hit a problem: its run {where} could not start","server.problem.couldNotStartWhy":'{bot} hit a problem: its run {where} could not start: "{detail}"',"server.problem.routineFailed":"{bot} hit a problem: its scheduled routine {where} failed","server.problem.routineFailedWhy":'{bot} hit a problem: its scheduled routine {where} failed: "{detail}"',"server.incidents.where.thread":"in its thread #{title}","ser\
1254
- ver.incidents.where.main":"in its main conversation","server.connect.signIn":"I need you to sign in to {site}.","server.connect.signInWhy":"I need you to sign in to {site}: {reason}","server.connect.app":"I need you to connect {app}.","server.connect.secret":"I need your {label}.","server.connect.card":"Connect {app} to continue.","server.connect.cardAs":"Connect {app} as \u201C{account}\u201D to continue.","server.connect.thisApp":"this app","server.connect.description":"Connect {app} so the bo\
1255
- t can continue","server.connect.descriptionAs":"Connect {app} as \u201C{account}\u201D so the bot can continue","server.connect.signInCard":"{bot} needs you to sign in to {site}. Open this conversation in Limix Bot to sign in, then press Done.","server.connect.emailLabel":"Connect your mailbox","server.connect.emailNote":"Limix Bot finds your mail server and checks it can read your mail. {bot} never sees the password.","server.connect.emailPlaceholder":"Mailbox password","server.connect.secretHa\
1256
- ndoff":"Securely provide the {label} from Limix Bot on your phone or computer. It is never added to chat.","server.connect.secretFile":"{bot}'s commands can read it from a private file for 24 hours; it is never added to chat.","server.connect.secretRef":"{bot} gets a one-use reference for Limix Bot's own tools and never sees it.","server.connect.secretKept":"Limix Bot keeps it safely, so {bot} can use it again without asking you.","server.connect.secretNeverRead":"{bot} can use it but never read\
1257
- it back.","server.connect.emailOutgoingLabel":"Outgoing server for {address}","server.connect.emailOutgoingNote":"Enter where it sends mail from. {bot} never sees the password.","server.connect.emailOutgoingPlaceholder":"Password for sending","server.mcp.added":"Added MCP server {name}","server.mcp.changed":"Changed MCP server {name}","server.mcp.turnedOn":"Turned on MCP server {name}","server.mcp.turnedOff":"Turned off MCP server {name}","server.mcp.restarted":"Restarted MCP server {name}","se\
1258
- rver.mcp.tested":"Tested MCP server {name}","server.mcp.signedOut":"Signed out of MCP server {name}","server.mcp.removed":"Removed MCP server {name}","server.skillSwitch.enable.title":'Turn on skill "{name}"?',"server.skillSwitch.enable.body":"The bot can use this skill again.","server.skillSwitch.enable.done":'Skill "{name}" turned on',"server.skillSwitch.disable.title":'Turn off skill "{name}"?',"server.skillSwitch.disable.body":"The bot stops using this skill until it is turned on again. Noth\
1259
- ing is deleted.","server.skillSwitch.disable.done":'Skill "{name}" turned off',"server.skillSwitch.delete.title":'Delete skill "{name}"?',"server.skillSwitch.delete.body":"Removes this skill and all its files from the bot for good. Its SKILL.md is shown below, with any secrets hidden.","server.skillSwitch.delete.done":'Skill "{name}" deleted',"server.mcp.listed":"Checked MCP servers","server.mcp.on":"Turned on","server.mcp.switchedOff":"Switched off","server.mcp.keysCleared":"Saved keys cleared",
1260
- "server.mcp.alsoOn":"Also on for {names}: switch it off for one in its settings, under Apps it can use","server.mcp.testTools.one":"Test: {count} tool","server.mcp.testTools.many":"Test: {count} tools","server.mcp.testSignIn":"Test: needs sign-in","server.mcp.testKey":"Test: needs a key","server.mcp.testFailed":"Test: failed","server.mcp.askedTurnOn":"Asked to turn on MCP server {name}","server.mcp.askedChange":"Asked to change MCP server {name}","server.mcp.askedRemove":"Asked to remove MCP ser\
1261
- ver {name}","server.mcp.card.turnOn":"Turn on {name}?","server.mcp.card.change":"Change {name}?","server.mcp.card.remove":"Remove {name}?","server.mcp.card.internet":"Reached over the internet. Once on, your bots can use its tools.","server.mcp.card.local":"Runs on this computer.","server.mcp.card.elsewhere":"Runs on {computer}.","server.mcp.card.newKey":"new key for {key}","server.mcp.card.cleared":"Clears the saved {items}.","server.mcp.card.usedBy":"Used by {names}.","server.mcp.card.usedByNo\
1262
- ne":"No other bot uses it.","server.mcp.card.newClientSecret":"new OAuth client secret","server.mcp.card.keyExpired":"The key expired before this was answered.","server.mcp.card.gone":"{name} no longer exists.","server.mcp.card.changedSince":"{name} changed after this was asked, so nothing was applied.","server.mcp.card.restarted":"Limix Bot restarted, so this request expired.","server.mcp.card.failed":"This change couldn't be applied.","server.mcp.askedSignIn":"Asked to sign in to MCP server {n\
1263
- ame}","server.mcp.signIn.card":"{label}'s MCP server needs a sign-in. Open this conversation in Limix Bot to sign in.","server.mcp.signIn.description":"{bot} added {label}'s MCP server ({host}). Sign in so {bot} can use it.","server.mcp.signIn.onYourMac":"Open this chat on your Mac to sign in to {label}.","server.mcp.signIn.inSettings":"Finish this sign-in in Apps \u2192 MCP servers.","server.mcp.signIn.onlyPerson":"Only {name} can sign in to this.","server.mcp.signIn.onlyOwner":"Only the person\
1264
- this chat is for can sign in to this.","server.mcp.signIn.adminOnly":"Only an admin of this installation can sign in to {label}.","server.mcp.signIn.expired":"The sign-in window closed. Try again.","server.mcp.signIn.failed":"The sign-in didn't finish. Try again.","server.notify.message":"Message from {who}","server.notify.workingFor":"{who}, working for {other}","server.notify.approval":"{who} needs approval","server.notify.question":"{who} has a question","server.notify.signIn":"{who} needs y\
1265
- ou to sign in to {site}","server.notify.signInWebsite":"{who} needs you to sign in to a website","server.notify.secret":"{who} needs your {label}","server.notify.connect":"{who} needs you to connect {app}","server.notify.routineFailed":"{who}'s routine failed","server.notify.routineDeferred":"{who}'s routine is waiting","server.notify.turnFailed":"{who} couldn't start","server.notify.incident":"{who} hit a problem","server.notify.delegationSettled":"{who} resumed with results","server.notify.men\
1266
- tion":"{who} mentioned you","server.notify.wait":"{who}'s wait is over","server.notify.done":"{who} finished","server.notify.inRoom":"{bot} in {room}","server.notify.assistantAnswered":"{title} \xB7 your assistant answered","server.notify.resultsFrom":"Results in from {who}","server.notify.openToSignIn":"Open Limix Bot to sign in to {site}.","server.rooms.finishingElsewhere":"{bot} is finishing another conversation \u2014 will reply here when free","server.rooms.finishingElsewhereSpoken":"{bot} \
1267
- is finishing another conversation","server.rooms.unavailable":"{bot} is no longer available \u2014 skipped this round","server.rooms.chiefRetargeted":"{chief} is the Chief of Staff now, so it leads this room in place of {former}.","server.stop.nothingRunning":"Nothing was running here, so nothing needed stopping.","server.memory.wait":"Waiting for memory on this Cloud. Running now: {running}. Ahead of this one: {ahead}. It starts by itself when there's room.","server.memory.still":"Still waiting\
1268
- for memory. Running now: {running}. Ahead of this one: {ahead}.","server.memory.starter":"Starter has room for about one task at a time. A bigger plan runs more at once.","server.planTurns.wait":"Waiting for a turn: Starter runs {limit} tasks at once on this Cloud. Ahead of this one: {ahead}. It starts by itself when one finishes, and a bigger plan runs more at once.","server.planTurns.still":"Still waiting: Starter runs {limit} tasks at once. Ahead of this one: {ahead}.","server.botPaused":"Pa\
1269
- used: Starter keeps {limit} bots awake. Upgrade to wake it, or swap which bots are awake.","server.teammates.queued.thread":"{bot} hasn't started this yet: an earlier turn in that thread is still running.","server.teammates.queued.slots":"{bot} hasn't started this yet: it's already running {busy} of {limit} threads at once.","server.teammates.queued.room":"{bot} hasn't started this yet: it's finishing a turn in a room.","server.queued.capacity":"Queued. Starts when this bot has a free thread slo\
1270
- t.","server.queued.capacityStarter":"Queued. Starter runs one thread at a time per bot, so this starts when the one running finishes. A bigger plan runs more.","server.queued.groupTurn":"Queued. This bot's room turn runs one at a time; it starts when that finishes.","server.rooms.stayedBusy.one":"{bot} stayed busy in another conversation for {count} minute \u2014 skipped this round","server.rooms.stayedBusy.many":"{bot} stayed busy in another conversation for {count} minutes \u2014 skipped this round",
1271
- "server.rooms.busyElsewhere":"{bot} is busy in another conversation \u2014 skipped this round","server.rooms.settingsChanged":"{bot}'s settings changed while starting \u2014 skipped this round","server.rooms.providerUpdating":"{bot}'s computer provider is being updated \u2014 skipped this round","server.rooms.cloudComputerChanging":"{bot}'s cloud computer is being changed \u2014 skipped this round","server.rooms.becameBusy":"{bot} became busy in another conversation \u2014 skipped this round","s\
1272
- erver.rooms.mentionMissed":"{bot} isn't in this room, so that mention didn't reach them \u2014 add them to the room to bring them in.","server.rooms.archived":"{bot} is archived and can't respond \u2014 restore it or mention an active room member.","server.rooms.sameName.two":'Two bots here are named "{name}": {first} and {second}. Pick the one you mean from the @ list.',"server.rooms.sameName.many":'{count} bots here are named "{name}": {choices}. Pick the one you mean from the @ list.',"server\
1273
- .rooms.sameName.choice":"{name}, {role}","server.rooms.sameName.chief":"Chief of Staff","server.rooms.sameNameMissed":'More than one bot here is named "{name}", so that mention reached none of them.',"server.rooms.noneActive":"No active room members can respond \u2014 restore an archived bot or add an active member.","server.rooms.stillStopping":"{bot} is still stopping \u2014 this message was not dispatched","server.rooms.someoneStillStopping":"A room member is still stopping \u2014 this message was\
1274
- not dispatched","server.outside.confinedHere":"Work from outside came into this conversation, so this bot works here without a shell. Start a new conversation to use it fully.","server.outside.bulletinTitle":"Change this group chat's instructions?","server.outside.memoryTitle":"Save this to the bot's memory?","server.outside.memoryChangeTitle":"Change or remove this in the bot's memory?","server.outside.save":"Save","server.outside.skip":"Skip","server.rooms.postedIn":"Posted in {room}","server\
1275
- .rooms.openedThread":"Opened thread #{title}","server.rooms.held":"{bot} is held (stopped by you) \u2014 @mention it or say resume","server.rooms.finishedNoSummary":"{bot} finished without a summary","server.rooms.finishedNoSummaryAsking":"{bot} finished without a summary \u2014 asking for a short result","server.rooms.turnStalled.one":"{bot}'s room turn made no progress for {count} minute and was stopped","server.rooms.turnStalled.many":"{bot}'s room turn made no progress for {count} minutes an\
1276
- d was stopped","server.rooms.compactedRequested":"compacted {bot}'s context ({percent}% full): fresh session with the room's recent messages","server.rooms.compactedThreshold":"{bot}'s context was {percent}% full: compacted to a fresh session with the room's recent messages","server.teammates.sent":"Sent to {bot}","server.teammates.sentInRoom":"Sent to {bot} \xB7 {room}","server.teammates.sentDirectly":"Sent to {bot} directly: it isn't in {room}.","server.teammates.sentDirectlyHere":"Sent to {bo\
1277
- t} directly: it isn't in this room.","server.teammates.teammateWork":"Teammate work","server.teammates.goalCoordinating":"{bot} is coordinating this goal.","server.teammates.goal.working":"Goal in progress: {detail}","server.burst.preview":"Burst ready: {count} tasks. Press Run on its card to start.","server.burst.running":"Burst running: {done} of {total} done, {failed} failed.","server.burst.merging":"Burst finished: writing one result.","server.burst.done":"Burst finished: {done} of {total} d\
1278
- one, {failed} failed.","server.burst.cancelled":"Burst cancelled.","server.burst.partFailed":"did not finish ({reason})","server.burst.partsHeader":"The parts of this burst, as they came: {task}","server.teammates.goal.completed":"Goal completed: {detail}","server.teammates.goal.needsInput":"Goal needs your input: {detail}","server.teammates.goal.blocked":"Goal blocked: {detail}","server.teammates.goal.limitReached":"Goal reached its limit: {detail}","server.teammates.goal.paused":"Goal paused: \
1279
- {detail}","server.teammates.goal.stopped":"Goal stopped: {detail}","server.teammates.goal.failed":"Goal failed: {detail}","server.teammates.noAnswerInTime":"Nobody answered {who}'s question in time","server.teammates.stillWaiting":"Still waiting on your answer: {question} This work closes in {days} days if nobody answers.","server.teammates.stillWaitingCard":"This work is still waiting on you. It closes in {days} days if nothing changes.","server.teammates.noApprovalInTime":"Nobody answered {who\
1280
- }'s approval in time \u2014 that step did not run","server.teammates.approvalAsk.one":"{who} needed your approval for {actions}, but nobody answered in time, so it did not run. Let it try again? It will ask you once more when it runs.","server.teammates.approvalAsk.many":"{who} needed your approval for {actions}, but nobody answered in time, so they did not run. Let it try again? It will ask you once more when it runs.","server.teammates.approvalAsk.retry":"Try again","server.teammates.turnEnded\
1281
- BeforeAnswer":"{who}'s turn ended before anyone answered its question","server.teammates.approvalClosed":"{who}'s approval closed before anyone answered \u2014 that step did not run","server.teammates.questionDismissed":"{who}'s question was dismissed","server.teammates.requestDenied":"{who}'s request was denied","server.teammates.gotYourAnswer":"{who} got your answer","server.teammates.gotYourApproval":"{who} got your approval","server.teammates.questionAnswered":"{who}'s question was answered",
1282
- "server.teammates.requestApproved":"{who}'s request was approved","server.teammates.queuedBehind.answer":"Queued for @{bot} behind your answer in \u201C{title}\u201D","server.teammates.queuedBehind.approval":"Queued for @{bot} behind your approval in \u201C{title}\u201D","server.teammates.queuedBehind.review":"Queued for @{bot} behind your review in \u201C{title}\u201D","server.teammates.recalled.one":"{bot} recalled {count} message from its private chat with you","server.teammates.recalled.many":"\
1283
- {bot} recalled {count} messages from its private chat with you","server.teammates.briefCovers.one":"{bot}'s recent-work brief covers {count} private chat with you","server.teammates.briefCovers.many":"{bot}'s recent-work brief covers {count} private chats with you","server.teammates.closedBy":"Closed by @{bot}","server.teammates.sendFailed":"Send failed \u2014 {detail}","server.teammates.resultWithheld":"Result withheld: {problem}","server.teammates.replied":"{bot} replied","server.teammates.rep\
1284
- liedInRoom":"{bot} replied \xB7 {room}","server.teammates.failed":"{bot} \u2014 failed: {detail}","server.teammates.cancelled":"{bot} \u2014 cancelled: {detail}","server.teammates.other":"{bot} \u2014 {status}: {detail}","server.teammates.teammate":"Teammate","server.teammates.room":"Room","server.teammates.resumedQuestion":"Resumed with a question from {who}, reviewing","server.teammates.resumedQuestionRestart":"Resumed with a question from {who} after a restart, reviewing","server.teammates.re\
1285
- sumedResults":"Resumed with {who} results, reviewing","server.teammates.resumedResultsRestart":"Resumed with {who} results after a restart, reviewing","server.teammates.backWithResults":"Back with the work it handed on, reviewing","server.teammates.backWithResultsRestart":"Back with the work it handed on after a restart, reviewing","server.teammates.handedWork":"work it handed on","server.lendingLift.title":"Let {bot} use your {device} for this?","server.lendingLift.wholeBotTitle":"{bot}'s notes\
1286
- changed in work you didn't write. Let it keep using your {device}?","server.lendingLift.memory":"Its notes changed in work you didn't write:","server.lendingLift.botOpened":"A bot opened this conversation with work for this bot. Allow lets only this message of yours use your {device}.","server.lendingLift.outside":"A webhook or a routine you didn't write posted in this conversation. Allow lets only this message of yours use your {device}.","server.lendingLift.more":"More in this bot's settings,\
1287
- under Memory.","server.lendingLift.allow":"Allow","server.lendingLift.notNow":"Not now","server.lendingLift.askAgain":"Allowed. Ask again to go on.","server.teammates.answerPassed":"Answer passed to the waiting work","server.teammates.answeredForPerson":"Answered {name}'s question for the person","server.teammates.personReplied":"{name} replied","server.teammates.personAssistantAnswered":"{name}'s assistant answered","server.teammates.told":"Told {name}","server.noAi.member":"{owner} needs to c\
1288
- onnect an AI before bots can answer. I've told them.","server.noAi.memberNoOwner":"The team's owner needs to connect an AI before bots can answer. I'll tell them when they first open the team.","server.noAi.admin":"Connect an AI first, so bots can answer.","server.noAi.nobodyHere":"No AI is connected yet, so nothing can run.","server.noAi.ownerTitle":"Connect an AI for {team}","server.noAi.ownerLine":"{name} tried to use a bot in {team}, but no AI is connected yet. Connect one so bots can answer\
1289
- .","server.teammates.notPassed":"Not passed to {name}","server.mcp.reconnect.one":"The MCP server {name} didn't connect, so its tools weren't available this time. It connects again on your next message.","server.mcp.problem.signIn":"{name} needs you to sign in before its tools work. Open Apps \u2192 MCP servers and sign in to it.","server.mcp.problem.refused":"{name} refused its sign-in or key. Open Apps \u2192 MCP servers to sign in again or update its key.","server.mcp.problem.notFound":"{name\
1290
- } wasn't found at its address. Check the address in Apps \u2192 MCP servers.","server.mcp.problem.timeout":"{name} didn't answer in time. Try again in a moment, and if it keeps happening, test it in Apps \u2192 MCP servers.","server.mcp.problem.cantConnect":"Couldn't connect to {name}. Test it in Apps \u2192 MCP servers to see why.","server.mcp.reconnect.many":"The MCP servers {names} didn't connect, so their tools weren't available this time. They connect again on your next message.","server.bo\
1291
- ts.nameClash":'{person} is also a person here, so "@{name}" reaches {person}, not this bot. Rename the bot to keep them apart.',"server.browser.waiting":"Waiting for the browser: {name} is using it. This continues by itself when it is free.","server.browser.waitingTask":"Waiting for the browser: {name} is using it for {task}. This continues by itself when it is free.","server.browser.free":"The browser is free. Continuing.","server.browser.stoppedWaiting":"Stopped waiting for the browser.","serv\
1292
- er.routines.cron.raw":"Cron {expression}","server.routines.cron.everyDay":"Every day at {time}","server.routines.cron.monthlyLastDay":"Monthly on the last day at {time}","server.routines.cron.monthlyDay":"Monthly on day {day} at {time}","server.routines.cron.yearly":"Yearly on {month} {day} at {time}","server.routines.cron.weekdays":"Every weekday at {time}","server.routines.cron.weekly":"Weekly on {weekday} at {time}","server.routines.cron.weeklySaturdaySunday":"Weekly on {weekday} at {time}","\
1293
- server.routines.cron.nth.first":"Monthly on the first {weekday} at {time}","server.routines.cron.nth.second":"Monthly on the second {weekday} at {time}","server.routines.cron.nth.third":"Monthly on the third {weekday} at {time}","server.routines.cron.nth.fourth":"Monthly on the fourth {weekday} at {time}","server.routines.cron.nth.fifth":"Monthly on the fifth {weekday} at {time}","server.routines.cron.nth.last":"Monthly on the last {weekday} at {time}","server.routines.cron.nthWeekend.first":"Mo\
1294
- nthly on the first {weekday} at {time}","server.routines.cron.nthWeekend.second":"Monthly on the second {weekday} at {time}","server.routines.cron.nthWeekend.third":"Monthly on the third {weekday} at {time}","server.routines.cron.nthWeekend.fourth":"Monthly on the fourth {weekday} at {time}","server.routines.cron.nthWeekend.fifth":"Monthly on the fifth {weekday} at {time}","server.routines.cron.nthWeekend.last":"Monthly on the last {weekday} at {time}","server.personFirst.stoppedSeconds":"Stoppe\
1295
- d a step that had run for {seconds} s, to answer you first","server.personFirst.stoppedMinutes":"Stopped a step that had run for {minutes} min, to answer you first","server.runOwner.onlyAskerStops":"Only {name} or an admin can stop this.","server.runOwner.notYourQueued":"Only the person who sent this message can remove it.","server.runOwner.waitsItsTurn":"This message waits its turn and runs after the request that is running now.","server.runOwner.onlyAskerRetries":"Only {name} or an admin can r\
1296
- un this request again.","server.routines.held.planCancelled":"Your routines are paused because the plan was cancelled. To keep one running until the plan ends, turn it back on in Routines.","server.routines.held.noEngine":"Your routines are paused: none of your AI accounts is signed in here any more. They turn back on by themselves when you sign in again.","server.routines.held.noConnections":"Your routines are paused: every connected app and MCP server was removed. They turn back on when you co\
1297
- nnect one, or turn one back on in Routines.","server.lendingLift.chooseAnswer":"Choose Allow or Not now.","server.lendingLift.ownerDeviceOnly":"Only you can allow this, from one of your own devices.","server.teammates.waitCardClosed":"The card it waited on was replaced or closed","server.outside.routineFromBefore":"This routine was made before this update. Open it and save it once to run it with full access.","server.outside.routineFromOutside":"A webhook's run made or changed this routine, so i\
1298
- t runs without full access. Open it and save it once to run it with full access.","server.outside.conversationFromBefore":"This conversation is from before My Cloud was only yours, so this bot works in it without a shell. Start a new conversation to use it fully.","server.outside.conversationFromOutside":"Work from outside came into this conversation, so this bot works in it without a shell. Start a new conversation to use it fully.","server.outside.engineRefusal":"This bot's AI can't run it tha\
1299
- t way. {why}","server.outside.engineRefusalOldConversation":"This conversation is from before the Cloud was only yours, and this bot's AI can't work in it. Start a new conversation.","server.memory.movedNote":"This note moved here from where the bot kept it before, so it can't be reverted here.","server.email.sent":"Sent from {address} to {count} recipient(s)","server.connect.emailOnComputer":"Type your email address and password on your computer.","server.botApi.engineRefusal":"This thread came\
1300
- in through the Bot API, and this bot's AI can't work in it. Start a new conversation.","server.botApi.confinedWhy":"This call came in through the Bot API, so it can only answer from what this bot already knows.","server.voice.noNoteNoVoice":"No voice note with this reply: this bot has no voice set up yet.","server.voice.noNoteFailed":"No voice note with this reply: the voice couldn't be made ({reason}).","server.voice.turnEnded":"I stopped before finishing: {reason}","server.meetings.card.title":"\
1301
- Meeting notes","server.meetings.card.starting":"Getting the cloud computer ready\u2026","server.meetings.card.joining":"Joining the meeting\u2026","server.meetings.card.lobby":"Waiting for the host to let me in","server.meetings.card.live":"In the meeting \xB7 others here: {count} \xB7 {minutes} min","server.meetings.card.ended":"Ended after {minutes} min. {reason}","server.meetings.card.questions":"Questions answered in the chat: {count}","server.meetings.card.writing":"Writing the notes\u2026",
1302
- "server.meetings.card.leave":"Leave meeting","server.meetings.notes.summary":"Summary","server.meetings.notes.decisions":"Decisions","server.meetings.notes.actions":"Action items","server.meetings.notes.questions":"Open questions","server.meetings.notes.attendees":"Attendees","server.meetings.notes.transcript":"The full transcript is attached below.","server.meetings.nothingHeard":"{reason} Nobody said anything I could transcribe, so there are no notes.","server.meetings.endedDetail":"{reason} (\
1303
- {detail})","server.meetings.end.left":"I left the meeting.","server.meetings.end.stop_requested":'Someone in the meeting typed "@notes stop", so I left.',"server.meetings.end.meeting_ended":"The meeting ended.","server.meetings.end.removed":"Someone removed me from the meeting.","server.meetings.end.denied":"The host turned down my request to join.","server.meetings.end.lobby_timeout":"Nobody let me in, so I gave up waiting.","server.meetings.end.guests_blocked":"This meeting doesn't let guests \
1304
- join (the organizer's settings need a signed-in account), so I couldn't get in.","server.meetings.end.not_found":"This meeting link isn't active. Check the link; the meeting may have ended.","server.meetings.end.join_failed":"I couldn't get through the meeting's join screen.","server.meetings.end.consent_failed":"I couldn't post my note-taking notice in the meeting chat (chat may be off for guests), so I left without recording anything.","server.meetings.end.alone":"Everyone else left, so I left\
1305
- too.","server.meetings.end.max_length":"The meeting reached the 4-hour limit, so I left.","server.meetings.end.crashed":"The meeting bot stopped unexpectedly. What it heard until then is kept.","server.meetings.end.lost":"I lost contact with the cloud computer running the meeting. What it heard until then is kept.","server.meetings.end.meet_refused":"Google Meet didn't let me in as a guest. The host can allow guests in Host controls, or the meeting may not allow people outside the organization.",
1306
- "server.meetings.end.speech_unavailable":"I couldn't get speech-to-text for this meeting, so I didn't join.","server.meetings.card.settingUp":"Setting up transcription (one-time, about a minute)\u2026","server.meetings.card.speechStopped":"Transcription stopped: {problem}"}}});function byLanguage(table3,language){let candidate=language?.trim().toLowerCase()||"en";for(;candidate;){let entry=table3[ALIASES[candidate]??candidate];if(entry!==void 0)return entry;let separator=candidate.lastIndexOf("-");if(separator<0)break;candidate=candidate.slice(0,separator)}return table3.en}var ALIASES,init_language=__esm({"server/language.ts"(){"use strict";ALIASES={pt:"pt-br","zh-hant":"zh-tw","zh-hk":"zh-tw","zh-mo":"zh-tw"}}});function serverLine(language,key2,params){let template=byLanguage(packs,language)[key2]??ENGLISH[key2]??key2;return params?template.replace(/\{(\w+)\}/g,(match,name)=>Object.hasOwn(params,name)?String(params[name]):match):template}function matcherOf(template){let matcher=matchers.get(template);return matcher||(matcher=new RegExp(["^",template.split(/\{\w+\}/).map(escaped).join("[\\s\\S]+"),"$"].join("")),matchers.set(template,matcher)),matcher}function isServerLine(key2,text13){return Object.values(
1246
+ so this gets that answer instead of a second one.","server.reports.sent":"Sent to the Limix Bot team (report {report}).","server.reports.sentReply":"Sent to the Limix Bot team (report {report}). We'll reply to {contact}.","server.reports.sentLater":"Sent to the Limix Bot team (report {report}) after an earlier try did not go through.","server.reports.sentLaterReply":"Sent to the Limix Bot team (report {report}) after an earlier try did not go through. We'll reply to {contact}.","server.reports.\
1247
+ notYet":"Not sent yet: {why}. The report is saved and goes on its own {when}, so there is no need to send it again.","server.reports.why.limited":"the Limix Bot team takes only a few reports an hour from each app","server.reports.why.offline":"the Limix Bot team's server could not be reached","server.reports.why.busy":"the Limix Bot team's server could not take it right now","server.reports.when.minute":"in about {count} minute","server.reports.when.minutes":"in about {count} minutes","server.re\
1248
+ ports.when.soon":"as soon as it can","server.reports.refused":"The Limix Bot team's server refused this bug report, so nothing was sent: {detail}.","server.reports.full":"Not sent: {count} bug reports are already waiting to go to the Limix Bot team. Type @devs again once they have gone.","server.reports.dropped":"A bug report from this conversation could not reach the Limix Bot team for a week, so it was dropped. Type @devs again to send a new one.","server.reports.fixed":"Fixed in {version}. Wa\
1249
+ nt to try again?","server.questions.notAsked":"Not asked (Just do it): {question}","server.warmSummary.summarized":"summarized this conversation while it was idle; the latest messages carry on word for word","server.runs.didNotFinish":"This run didn't finish.","server.runs.didNotFinishWhy":"This run didn't finish: {detail}","server.runs.partlyDoneWhy":"This run was partly done: {detail}","server.runs.handoffApart":"{bot} couldn't hand this to {target}, because they're shared with different peopl\
1250
+ e. Nothing was sent.","server.runs.handoffRefusedTitle":"{bot}'s routine couldn't hand off its work","server.runs.recovered":"Recovered: {name} finished OK at {time}","server.runs.card.line":"Routine \u201C{name}\u201D {state}","server.runs.state.needsInput":"needs your input","server.runs.state.blocked":"was blocked","server.runs.state.limitReached":"reached its limit","server.runs.state.stopped":"was stopped","server.runs.state.failed":"failed","server.runs.state.waiting":"needs your attention",
1251
+ "server.runs.state.completed":"completed","server.runs.state.cancelled":"was cancelled","server.runs.state.missed":"was missed","server.runs.state.deferred":"deferred: target busy","server.runs.state.queued":"queued","server.runs.state.running":"running","server.model.orgBlockedAnswered":"{picked} is turned off by your organization, so {answered} answered instead. Choose another model to stop seeing this.","server.model.otherAnswered":"You chose {picked}, but {answered} answered instead.","serve\
1252
+ r.incidents.where.room":'in the room "{room}"',"server.problem.failed":"{bot} hit a problem: its run {where} failed","server.problem.failedWhy":'{bot} hit a problem: its run {where} failed: "{detail}"',"server.problem.stalled":"{bot} hit a problem: its run {where} stopped after showing no activity","server.problem.stalledWhy":'{bot} hit a problem: its run {where} stopped after showing no activity: "{detail}"',"server.problem.couldNotStart":"{bot} hit a problem: its run {where} could not start","\
1253
+ server.problem.couldNotStartWhy":'{bot} hit a problem: its run {where} could not start: "{detail}"',"server.problem.routineFailed":"{bot} hit a problem: its scheduled routine {where} failed","server.problem.routineFailedWhy":'{bot} hit a problem: its scheduled routine {where} failed: "{detail}"',"server.incidents.where.thread":"in its thread #{title}","server.incidents.where.main":"in its main conversation","server.connect.signIn":"I need you to sign in to {site}.","server.connect.signInWhy":"I \
1254
+ need you to sign in to {site}: {reason}","server.connect.app":"I need you to connect {app}.","server.connect.secret":"I need your {label}.","server.connect.card":"Connect {app} to continue.","server.connect.cardAs":"Connect {app} as \u201C{account}\u201D to continue.","server.connect.thisApp":"this app","server.connect.description":"Connect {app} so the bot can continue","server.connect.descriptionAs":"Connect {app} as \u201C{account}\u201D so the bot can continue","server.connect.signInCard":"{\
1255
+ bot} needs you to sign in to {site}. Open this conversation in Limix Bot to sign in, then press Done.","server.connect.emailLabel":"Connect your mailbox","server.connect.emailNote":"Limix Bot finds your mail server and checks it can read your mail. {bot} never sees the password.","server.connect.emailPlaceholder":"Mailbox password","server.connect.secretHandoff":"Securely provide the {label} from Limix Bot on your phone or computer. It is never added to chat.","server.connect.secretFile":"{bot}'\
1256
+ s commands can read it from a private file for 24 hours; it is never added to chat.","server.connect.secretRef":"{bot} gets a one-use reference for Limix Bot's own tools and never sees it.","server.connect.secretKept":"Limix Bot keeps it safely, so {bot} can use it again without asking you.","server.connect.secretNeverRead":"{bot} can use it but never read it back.","server.connect.emailOutgoingLabel":"Outgoing server for {address}","server.connect.emailOutgoingNote":"Enter where it sends mail f\
1257
+ rom. {bot} never sees the password.","server.connect.emailOutgoingPlaceholder":"Password for sending","server.mcp.added":"Added MCP server {name}","server.mcp.changed":"Changed MCP server {name}","server.mcp.turnedOn":"Turned on MCP server {name}","server.mcp.turnedOff":"Turned off MCP server {name}","server.mcp.restarted":"Restarted MCP server {name}","server.mcp.tested":"Tested MCP server {name}","server.mcp.signedOut":"Signed out of MCP server {name}","server.mcp.removed":"Removed MCP server \
1258
+ {name}","server.skillSwitch.enable.title":'Turn on skill "{name}"?',"server.skillSwitch.enable.body":"The bot can use this skill again.","server.skillSwitch.enable.done":'Skill "{name}" turned on',"server.skillSwitch.disable.title":'Turn off skill "{name}"?',"server.skillSwitch.disable.body":"The bot stops using this skill until it is turned on again. Nothing is deleted.","server.skillSwitch.disable.done":'Skill "{name}" turned off',"server.skillSwitch.delete.title":'Delete skill "{name}"?',"ser\
1259
+ ver.skillSwitch.delete.body":"Removes this skill and all its files from the bot for good. Its SKILL.md is shown below, with any secrets hidden.","server.skillSwitch.delete.done":'Skill "{name}" deleted',"server.mcp.listed":"Checked MCP servers","server.mcp.on":"Turned on","server.mcp.switchedOff":"Switched off","server.mcp.keysCleared":"Saved keys cleared","server.mcp.alsoOn":"Also on for {names}: switch it off for one in its settings, under Apps it can use","server.mcp.testTools.one":"Test: {co\
1260
+ unt} tool","server.mcp.testTools.many":"Test: {count} tools","server.mcp.testSignIn":"Test: needs sign-in","server.mcp.testKey":"Test: needs a key","server.mcp.testFailed":"Test: failed","server.mcp.askedTurnOn":"Asked to turn on MCP server {name}","server.mcp.askedChange":"Asked to change MCP server {name}","server.mcp.askedRemove":"Asked to remove MCP server {name}","server.mcp.card.turnOn":"Turn on {name}?","server.mcp.card.change":"Change {name}?","server.mcp.card.remove":"Remove {name}?","s\
1261
+ erver.mcp.card.internet":"Reached over the internet. Once on, your bots can use its tools.","server.mcp.card.local":"Runs on this computer.","server.mcp.card.elsewhere":"Runs on {computer}.","server.mcp.card.newKey":"new key for {key}","server.mcp.card.cleared":"Clears the saved {items}.","server.mcp.card.usedBy":"Used by {names}.","server.mcp.card.usedByNone":"No other bot uses it.","server.mcp.card.newClientSecret":"new OAuth client secret","server.mcp.card.keyExpired":"The key expired before \
1262
+ this was answered.","server.mcp.card.gone":"{name} no longer exists.","server.mcp.card.changedSince":"{name} changed after this was asked, so nothing was applied.","server.mcp.card.restarted":"Limix Bot restarted, so this request expired.","server.mcp.card.failed":"This change couldn't be applied.","server.mcp.askedSignIn":"Asked to sign in to MCP server {name}","server.mcp.signIn.card":"{label}'s MCP server needs a sign-in. Open this conversation in Limix Bot to sign in.","server.mcp.signIn.des\
1263
+ cription":"{bot} added {label}'s MCP server ({host}). Sign in so {bot} can use it.","server.mcp.signIn.onYourMac":"Open this chat on your Mac to sign in to {label}.","server.mcp.signIn.inSettings":"Finish this sign-in in Apps \u2192 MCP servers.","server.mcp.signIn.onlyPerson":"Only {name} can sign in to this.","server.mcp.signIn.onlyOwner":"Only the person this chat is for can sign in to this.","server.mcp.signIn.adminOnly":"Only an admin of this installation can sign in to {label}.","server.mc\
1264
+ p.signIn.expired":"The sign-in window closed. Try again.","server.mcp.signIn.failed":"The sign-in didn't finish. Try again.","server.notify.message":"Message from {who}","server.notify.workingFor":"{who}, working for {other}","server.notify.approval":"{who} needs approval","server.notify.question":"{who} has a question","server.notify.signIn":"{who} needs you to sign in to {site}","server.notify.signInWebsite":"{who} needs you to sign in to a website","server.notify.secret":"{who} needs your {la\
1265
+ bel}","server.notify.connect":"{who} needs you to connect {app}","server.notify.routineFailed":"{who}'s routine failed","server.notify.routineDeferred":"{who}'s routine is waiting","server.notify.turnFailed":"{who} couldn't start","server.notify.incident":"{who} hit a problem","server.notify.delegationSettled":"{who} resumed with results","server.notify.mention":"{who} mentioned you","server.notify.wait":"{who}'s wait is over","server.notify.done":"{who} finished","server.notify.inRoom":"{bot} i\
1266
+ n {room}","server.notify.assistantAnswered":"{title} \xB7 your assistant answered","server.notify.resultsFrom":"Results in from {who}","server.notify.openToSignIn":"Open Limix Bot to sign in to {site}.","server.rooms.finishingElsewhere":"{bot} is finishing another conversation \u2014 will reply here when free","server.rooms.finishingElsewhereSpoken":"{bot} is finishing another conversation","server.rooms.unavailable":"{bot} is no longer available \u2014 skipped this round","server.rooms.chiefRet\
1267
+ argeted":"{chief} is the Chief of Staff now, so it leads this room in place of {former}.","server.stop.nothingRunning":"Nothing was running here, so nothing needed stopping.","server.memory.wait":"Waiting for memory on this Cloud. Running now: {running}. Ahead of this one: {ahead}. It starts by itself when there's room.","server.memory.still":"Still waiting for memory. Running now: {running}. Ahead of this one: {ahead}.","server.memory.starter":"Starter has room for about one task at a time. A b\
1268
+ igger plan runs more at once.","server.planTurns.wait":"Waiting for a turn: Starter runs {limit} tasks at once on this Cloud. Ahead of this one: {ahead}. It starts by itself when one finishes, and a bigger plan runs more at once.","server.planTurns.still":"Still waiting: Starter runs {limit} tasks at once. Ahead of this one: {ahead}.","server.botPaused":"Paused: Starter keeps {limit} bots awake. Upgrade to wake it, or swap which bots are awake.","server.teammates.queued.thread":"{bot} hasn't sta\
1269
+ rted this yet: an earlier turn in that thread is still running.","server.teammates.queued.slots":"{bot} hasn't started this yet: it's already running {busy} of {limit} threads at once.","server.teammates.queued.room":"{bot} hasn't started this yet: it's finishing a turn in a room.","server.queued.capacity":"Queued. Starts when this bot has a free thread slot.","server.queued.capacityStarter":"Queued. Starter runs one thread at a time per bot, so this starts when the one running finishes. A bigge\
1270
+ r plan runs more.","server.queued.groupTurn":"Queued. This bot's room turn runs one at a time; it starts when that finishes.","server.rooms.stayedBusy.one":"{bot} stayed busy in another conversation for {count} minute \u2014 skipped this round","server.rooms.stayedBusy.many":"{bot} stayed busy in another conversation for {count} minutes \u2014 skipped this round","server.rooms.busyElsewhere":"{bot} is busy in another conversation \u2014 skipped this round","server.rooms.settingsChanged":"{bot}'s\
1271
+ settings changed while starting \u2014 skipped this round","server.rooms.providerUpdating":"{bot}'s computer provider is being updated \u2014 skipped this round","server.rooms.cloudComputerChanging":"{bot}'s cloud computer is being changed \u2014 skipped this round","server.rooms.becameBusy":"{bot} became busy in another conversation \u2014 skipped this round","server.rooms.mentionMissed":"{bot} isn't in this room, so that mention didn't reach them \u2014 add them to the room to bring them in.",
1272
+ "server.rooms.archived":"{bot} is archived and can't respond \u2014 restore it or mention an active room member.","server.rooms.sameName.two":'Two bots here are named "{name}": {first} and {second}. Pick the one you mean from the @ list.',"server.rooms.sameName.many":'{count} bots here are named "{name}": {choices}. Pick the one you mean from the @ list.',"server.rooms.sameName.choice":"{name}, {role}","server.rooms.sameName.chief":"Chief of Staff","server.rooms.sameNameMissed":'More than one bo\
1273
+ t here is named "{name}", so that mention reached none of them.',"server.rooms.noneActive":"No active room members can respond \u2014 restore an archived bot or add an active member.","server.rooms.stillStopping":"{bot} is still stopping \u2014 this message was not dispatched","server.rooms.someoneStillStopping":"A room member is still stopping \u2014 this message was not dispatched","server.outside.confinedHere":"Work from outside came into this conversation, so this bot works here without a sh\
1274
+ ell. Start a new conversation to use it fully.","server.outside.bulletinTitle":"Change this group chat's instructions?","server.outside.memoryTitle":"Save this to the bot's memory?","server.outside.memoryChangeTitle":"Change or remove this in the bot's memory?","server.outside.save":"Save","server.outside.skip":"Skip","server.rooms.postedIn":"Posted in {room}","server.rooms.openedThread":"Opened thread #{title}","server.rooms.held":"{bot} is held (stopped by you) \u2014 @mention it or say resume",
1275
+ "server.rooms.finishedNoSummary":"{bot} finished without a summary","server.rooms.finishedNoSummaryAsking":"{bot} finished without a summary \u2014 asking for a short result","server.rooms.turnStalled.one":"{bot}'s room turn made no progress for {count} minute and was stopped","server.rooms.turnStalled.many":"{bot}'s room turn made no progress for {count} minutes and was stopped","server.rooms.compactedRequested":"compacted {bot}'s context ({percent}% full): fresh session with the room's recent \
1276
+ messages","server.rooms.compactedThreshold":"{bot}'s context was {percent}% full: compacted to a fresh session with the room's recent messages","server.teammates.sent":"Sent to {bot}","server.teammates.sentInRoom":"Sent to {bot} \xB7 {room}","server.teammates.sentDirectly":"Sent to {bot} directly: it isn't in {room}.","server.teammates.sentDirectlyHere":"Sent to {bot} directly: it isn't in this room.","server.teammates.teammateWork":"Teammate work","server.teammates.goalCoordinating":"{bot} is c\
1277
+ oordinating this goal.","server.teammates.goal.working":"Goal in progress: {detail}","server.burst.preview":"Burst ready: {count} tasks. Press Run on its card to start.","server.burst.running":"Burst running: {done} of {total} done, {failed} failed.","server.burst.merging":"Burst finished: writing one result.","server.burst.done":"Burst finished: {done} of {total} done, {failed} failed.","server.burst.cancelled":"Burst cancelled.","server.burst.partFailed":"did not finish ({reason})","server.bur\
1278
+ st.partsHeader":"The parts of this burst, as they came: {task}","server.teammates.goal.completed":"Goal completed: {detail}","server.teammates.goal.needsInput":"Goal needs your input: {detail}","server.teammates.goal.blocked":"Goal blocked: {detail}","server.teammates.goal.limitReached":"Goal reached its limit: {detail}","server.teammates.goal.paused":"Goal paused: {detail}","server.teammates.goal.stopped":"Goal stopped: {detail}","server.teammates.goal.failed":"Goal failed: {detail}","server.te\
1279
+ ammates.noAnswerInTime":"Nobody answered {who}'s question in time","server.teammates.stillWaiting":"Still waiting on your answer: {question} This work closes in {days} days if nobody answers.","server.teammates.stillWaitingCard":"This work is still waiting on you. It closes in {days} days if nothing changes.","server.teammates.noApprovalInTime":"Nobody answered {who}'s approval in time \u2014 that step did not run","server.teammates.approvalAsk.one":"{who} needed your approval for {actions}, but\
1280
+ nobody answered in time, so it did not run. Let it try again? It will ask you once more when it runs.","server.teammates.approvalAsk.many":"{who} needed your approval for {actions}, but nobody answered in time, so they did not run. Let it try again? It will ask you once more when it runs.","server.teammates.approvalAsk.retry":"Try again","server.teammates.turnEndedBeforeAnswer":"{who}'s turn ended before anyone answered its question","server.teammates.approvalClosed":"{who}'s approval closed be\
1281
+ fore anyone answered \u2014 that step did not run","server.teammates.questionDismissed":"{who}'s question was dismissed","server.teammates.requestDenied":"{who}'s request was denied","server.teammates.gotYourAnswer":"{who} got your answer","server.teammates.gotYourApproval":"{who} got your approval","server.teammates.questionAnswered":"{who}'s question was answered","server.teammates.requestApproved":"{who}'s request was approved","server.teammates.queuedBehind.answer":"Queued for @{bot} behind \
1282
+ your answer in \u201C{title}\u201D","server.teammates.queuedBehind.approval":"Queued for @{bot} behind your approval in \u201C{title}\u201D","server.teammates.queuedBehind.review":"Queued for @{bot} behind your review in \u201C{title}\u201D","server.teammates.recalled.one":"{bot} recalled {count} message from its private chat with you","server.teammates.recalled.many":"{bot} recalled {count} messages from its private chat with you","server.teammates.briefCovers.one":"{bot}'s recent-work brief co\
1283
+ vers {count} private chat with you","server.teammates.briefCovers.many":"{bot}'s recent-work brief covers {count} private chats with you","server.teammates.closedBy":"Closed by @{bot}","server.teammates.sendFailed":"Send failed \u2014 {detail}","server.teammates.resultWithheld":"Result withheld: {problem}","server.teammates.replied":"{bot} replied","server.teammates.repliedInRoom":"{bot} replied \xB7 {room}","server.teammates.failed":"{bot} \u2014 failed: {detail}","server.teammates.cancelled":"\
1284
+ {bot} \u2014 cancelled: {detail}","server.teammates.other":"{bot} \u2014 {status}: {detail}","server.teammates.teammate":"Teammate","server.teammates.room":"Room","server.teammates.resumedQuestion":"Resumed with a question from {who}, reviewing","server.teammates.resumedQuestionRestart":"Resumed with a question from {who} after a restart, reviewing","server.teammates.resumedResults":"Resumed with {who} results, reviewing","server.teammates.resumedResultsRestart":"Resumed with {who} results after\
1285
+ a restart, reviewing","server.teammates.backWithResults":"Back with the work it handed on, reviewing","server.teammates.backWithResultsRestart":"Back with the work it handed on after a restart, reviewing","server.teammates.handedWork":"work it handed on","server.lendingLift.title":"Let {bot} use your {device} for this?","server.lendingLift.wholeBotTitle":"{bot}'s notes changed in work you didn't write. Let it keep using your {device}?","server.lendingLift.memory":"Its notes changed in work you \
1286
+ didn't write:","server.lendingLift.botOpened":"A bot opened this conversation with work for this bot. Allow lets only this message of yours use your {device}.","server.lendingLift.outside":"A webhook or a routine you didn't write posted in this conversation. Allow lets only this message of yours use your {device}.","server.lendingLift.more":"More in this bot's settings, under Memory.","server.lendingLift.allow":"Allow","server.lendingLift.notNow":"Not now","server.lendingLift.askAgain":"Allowed.\
1287
+ Ask again to go on.","server.teammates.answerPassed":"Answer passed to the waiting work","server.teammates.answeredForPerson":"Answered {name}'s question for the person","server.teammates.personReplied":"{name} replied","server.teammates.personAssistantAnswered":"{name}'s assistant answered","server.teammates.told":"Told {name}","server.noAi.member":"{owner} needs to connect an AI before bots can answer. I've told them.","server.noAi.memberNoOwner":"The team's owner needs to connect an AI befor\
1288
+ e bots can answer. I'll tell them when they first open the team.","server.noAi.admin":"Connect an AI first, so bots can answer.","server.noAi.nobodyHere":"No AI is connected yet, so nothing can run.","server.noAi.ownerTitle":"Connect an AI for {team}","server.noAi.ownerLine":"{name} tried to use a bot in {team}, but no AI is connected yet. Connect one so bots can answer.","server.teammates.notPassed":"Not passed to {name}","server.mcp.reconnect.one":"The MCP server {name} didn't connect, so its \
1289
+ tools weren't available this time. It connects again on your next message.","server.mcp.problem.signIn":"{name} needs you to sign in before its tools work. Open Apps \u2192 MCP servers and sign in to it.","server.mcp.problem.refused":"{name} refused its sign-in or key. Open Apps \u2192 MCP servers to sign in again or update its key.","server.mcp.problem.notFound":"{name} wasn't found at its address. Check the address in Apps \u2192 MCP servers.","server.mcp.problem.timeout":"{name} didn't answer\
1290
+ in time. Try again in a moment, and if it keeps happening, test it in Apps \u2192 MCP servers.","server.mcp.problem.cantConnect":"Couldn't connect to {name}. Test it in Apps \u2192 MCP servers to see why.","server.mcp.reconnect.many":"The MCP servers {names} didn't connect, so their tools weren't available this time. They connect again on your next message.","server.bots.nameClash":'{person} is also a person here, so "@{name}" reaches {person}, not this bot. Rename the bot to keep them apart.',
1291
+ "server.browser.waiting":"Waiting for the browser: {name} is using it. This continues by itself when it is free.","server.browser.waitingTask":"Waiting for the browser: {name} is using it for {task}. This continues by itself when it is free.","server.browser.free":"The browser is free. Continuing.","server.browser.stoppedWaiting":"Stopped waiting for the browser.","server.routines.cron.raw":"Cron {expression}","server.routines.cron.everyDay":"Every day at {time}","server.routines.cron.monthlyLas\
1292
+ tDay":"Monthly on the last day at {time}","server.routines.cron.monthlyDay":"Monthly on day {day} at {time}","server.routines.cron.yearly":"Yearly on {month} {day} at {time}","server.routines.cron.weekdays":"Every weekday at {time}","server.routines.cron.weekly":"Weekly on {weekday} at {time}","server.routines.cron.weeklySaturdaySunday":"Weekly on {weekday} at {time}","server.routines.cron.nth.first":"Monthly on the first {weekday} at {time}","server.routines.cron.nth.second":"Monthly on the sec\
1293
+ ond {weekday} at {time}","server.routines.cron.nth.third":"Monthly on the third {weekday} at {time}","server.routines.cron.nth.fourth":"Monthly on the fourth {weekday} at {time}","server.routines.cron.nth.fifth":"Monthly on the fifth {weekday} at {time}","server.routines.cron.nth.last":"Monthly on the last {weekday} at {time}","server.routines.cron.nthWeekend.first":"Monthly on the first {weekday} at {time}","server.routines.cron.nthWeekend.second":"Monthly on the second {weekday} at {time}","se\
1294
+ rver.routines.cron.nthWeekend.third":"Monthly on the third {weekday} at {time}","server.routines.cron.nthWeekend.fourth":"Monthly on the fourth {weekday} at {time}","server.routines.cron.nthWeekend.fifth":"Monthly on the fifth {weekday} at {time}","server.routines.cron.nthWeekend.last":"Monthly on the last {weekday} at {time}","server.personFirst.stoppedSeconds":"Stopped a step that had run for {seconds} s, to answer you first","server.personFirst.stoppedMinutes":"Stopped a step that had run for\
1295
+ {minutes} min, to answer you first","server.runOwner.onlyAskerStops":"Only {name} or an admin can stop this.","server.runOwner.notYourQueued":"Only the person who sent this message can remove it.","server.runOwner.waitsItsTurn":"This message waits its turn and runs after the request that is running now.","server.runOwner.onlyAskerRetries":"Only {name} or an admin can run this request again.","server.routines.held.planCancelled":"Your routines are paused because the plan was cancelled. To keep o\
1296
+ ne running until the plan ends, turn it back on in Routines.","server.routines.held.noEngine":"Your routines are paused: none of your AI accounts is signed in here any more. They turn back on by themselves when you sign in again.","server.routines.held.noConnections":"Your routines are paused: every connected app and MCP server was removed. They turn back on when you connect one, or turn one back on in Routines.","server.lendingLift.chooseAnswer":"Choose Allow or Not now.","server.lendingLift.ow\
1297
+ nerDeviceOnly":"Only you can allow this, from one of your own devices.","server.teammates.waitCardClosed":"The card it waited on was replaced or closed","server.outside.routineFromBefore":"This routine was made before this update. Open it and save it once to run it with full access.","server.outside.routineFromOutside":"A webhook's run made or changed this routine, so it runs without full access. Open it and save it once to run it with full access.","server.outside.conversationFromBefore":"This \
1298
+ conversation is from before My Cloud was only yours, so this bot works in it without a shell. Start a new conversation to use it fully.","server.outside.conversationFromOutside":"Work from outside came into this conversation, so this bot works in it without a shell. Start a new conversation to use it fully.","server.outside.engineRefusal":"This bot's AI can't run it that way. {why}","server.outside.engineRefusalOldConversation":"This conversation is from before the Cloud was only yours, and this\
1299
+ bot's AI can't work in it. Start a new conversation.","server.memory.movedNote":"This note moved here from where the bot kept it before, so it can't be reverted here.","server.email.sent":"Sent from {address} to {count} recipient(s)","server.connect.emailOnComputer":"Type your email address and password on your computer.","server.botApi.engineRefusal":"This thread came in through the Bot API, and this bot's AI can't work in it. Start a new conversation.","server.botApi.confinedWhy":"This call c\
1300
+ ame in through the Bot API, so it can only answer from what this bot already knows.","server.voice.noNoteNoVoice":"No voice note with this reply: this bot has no voice set up yet.","server.voice.noNoteFailed":"No voice note with this reply: the voice couldn't be made ({reason}).","server.voice.turnEnded":"I stopped before finishing: {reason}","server.meetings.card.title":"Meeting notes","server.meetings.card.starting":"Getting the cloud computer ready\u2026","server.meetings.card.joining":"Joini\
1301
+ ng the meeting\u2026","server.meetings.card.lobby":"Waiting for the host to let me in","server.meetings.card.live":"In the meeting \xB7 others here: {count} \xB7 {minutes} min","server.meetings.card.ended":"Ended after {minutes} min. {reason}","server.meetings.card.questions":"Questions answered in the chat: {count}","server.meetings.card.writing":"Writing the notes\u2026","server.meetings.card.leave":"Leave meeting","server.meetings.notes.summary":"Summary","server.meetings.notes.decisions":"De\
1302
+ cisions","server.meetings.notes.actions":"Action items","server.meetings.notes.questions":"Open questions","server.meetings.notes.attendees":"Attendees","server.meetings.notes.transcript":"The full transcript is attached below.","server.meetings.nothingHeard":"{reason} Nobody said anything I could transcribe, so there are no notes.","server.meetings.endedDetail":"{reason} ({detail})","server.meetings.end.left":"I left the meeting.","server.meetings.end.stop_requested":'Someone in the meeting typ\
1303
+ ed "@notes stop", so I left.',"server.meetings.end.meeting_ended":"The meeting ended.","server.meetings.end.removed":"Someone removed me from the meeting.","server.meetings.end.denied":"The host turned down my request to join.","server.meetings.end.lobby_timeout":"Nobody let me in, so I gave up waiting.","server.meetings.end.guests_blocked":"This meeting doesn't let guests join (the organizer's settings need a signed-in account), so I couldn't get in.","server.meetings.end.not_found":"This meeti\
1304
+ ng link isn't active. Check the link; the meeting may have ended.","server.meetings.end.join_failed":"I couldn't get through the meeting's join screen.","server.meetings.end.consent_failed":"I couldn't post my note-taking notice in the meeting chat (chat may be off for guests), so I left without recording anything.","server.meetings.end.alone":"Everyone else left, so I left too.","server.meetings.end.max_length":"The meeting reached the 4-hour limit, so I left.","server.meetings.end.crashed":"Th\
1305
+ e meeting bot stopped unexpectedly. What it heard until then is kept.","server.meetings.end.lost":"I lost contact with the cloud computer running the meeting. What it heard until then is kept.","server.meetings.end.meet_refused":"Google Meet didn't let me in as a guest. The host can allow guests in Host controls, or the meeting may not allow people outside the organization.","server.meetings.end.speech_unavailable":"I couldn't get speech-to-text for this meeting, so I didn't join.","server.meeti\
1306
+ ngs.card.settingUp":"Setting up transcription (one-time, about a minute)\u2026","server.meetings.card.speechStopped":"Transcription stopped: {problem}"}}});function byLanguage(table3,language){let candidate=language?.trim().toLowerCase()||"en";for(;candidate;){let entry=table3[ALIASES[candidate]??candidate];if(entry!==void 0)return entry;let separator=candidate.lastIndexOf("-");if(separator<0)break;candidate=candidate.slice(0,separator)}return table3.en}var ALIASES,init_language=__esm({"server/language.ts"(){"use strict";ALIASES={pt:"pt-br","zh-hant":"zh-tw","zh-hk":"zh-tw","zh-mo":"zh-tw"}}});function serverLine(language,key2,params){let template=byLanguage(packs,language)[key2]??ENGLISH[key2]??key2;return params?template.replace(/\{(\w+)\}/g,(match,name)=>Object.hasOwn(params,name)?String(params[name]):match):template}function matcherOf(template){let matcher=matchers.get(template);return matcher||(matcher=new RegExp(["^",template.split(/\{\w+\}/).map(escaped).join("[\\s\\S]+"),"$"].join("")),matchers.set(template,matcher)),matcher}function isServerLine(key2,text13){return Object.values(
1307
1307
  packs).some(pack=>{let template=pack[key2];return template!==void 0&&matcherOf(template).test(text13)})}var ENGLISH,packs,escaped,matchers,languageOf,conversationLanguage,init_server_lines=__esm({"server/server-lines.ts"(){"use strict";init_en2();init_language();ENGLISH=en_default2,packs={en:ENGLISH};escaped=text13=>text13.replace(/[.*+?^$()|[\]{}\\]/g,"\\$&"),matchers=new Map;languageOf=()=>{},conversationLanguage=threadId=>languageOf(threadId)}});function ipv43(address2){let parts=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(address2);if(!parts)return null;let octets=parts.slice(1).map(Number);return octets.some(octet=>octet>255)?null:octets}function inTailscaleRange(address2){let value=bareAddress(address2),v4=ipv43(value);return v4?v4[0]===100&&v4[1]>=64&&v4[1]<=127:TAILSCALE_V6.test(value)}function isTailnetName(host2){return TAILNET_NAME.test(String(host2??"").trim().toLowerCase().replace(/\.$/,""))}function tailnetInterfaceAddresses(interfaces){
1308
1308
  let found=[];for(let[name,entries2=[]]of Object.entries(interfaces??{})){let list5=entries2??[];if(!(!/^tailscale/i.test(name)&&!list5.some(entry=>TAILSCALE_V6.test(entry?.address??""))))for(let entry of list5){let address2=bareAddress(entry?.address);inTailscaleRange(address2)&&!found.includes(address2)&&found.push(address2)}}return found.sort((a2,b3)=>Number(a2.includes(":"))-Number(b3.includes(":")))}function readTailscaleStatusJson(stdout2){let parsed;try{parsed=JSON.parse(String(stdout2??""))}catch{
1309
1309
  return null}if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return null;let self=parsed.Self&&typeof parsed.Self=="object"?parsed.Self:{},dns=typeof self.DNSName=="string"?self.DNSName.trim().toLowerCase().replace(/\.$/,""):"",backend=typeof parsed.BackendState=="string"?parsed.BackendState:"",state=backend==="Running"?"ready":backend==="NeedsMachineAuth"?"needs-approval":backend==="Stopped"||backend==="Starting"||backend==="NoState"?"not-running":"signed-out",addresses=(Array.isArray(
@@ -586,7 +586,7 @@ import { createPlaceInbox, guestNameIn, placeInboxViewer } from "./host/place-in
586
586
  import { relayedTurn } from "./host/relayed-turn.js";
587
587
  import { createPersonCalendar } from "./host/person-calendar.js";
588
588
  import { createDevsReports } from "./host/devs-reports.js";
589
- import { bugReportEndpoint, devsReportSender, devsStatusAsker } from "./devs-report-send.js";
589
+ import { limixReportAlias, limixReportSender, limixStatusAsker } from "./limix-report-mail.js";
590
590
  import { captureRecentLog } from "./recent-log.js";
591
591
  import { createShareAnswer } from "./host/share-answer.js";
592
592
  import { createCardRequester, linePersonKey } from "./host/thread-person.js";
@@ -2811,7 +2811,7 @@ const imageTools = createImageToolRoutes({ config: () => cfg, dataDir: DATA_DIR,
2811
2811
  const noAiNotice = createNoAiNotice({ team: CLOUD_TEAM, dataDir: DATA_DIR, people: () => teamOwners.people?.list() ?? [], personName: teamHost.personName, inbox: () => teamMessages.inbox, language: personLanguages.forLine, threadLanguage: conversationLanguage });
2812
2812
  const botNameClash = createBotNameClash({ store, people: () => teamMessages.people(), profileName: () => cfg.profile?.name });
2813
2813
  const refusedHandoffs = createRefusedHandoffs({ bots: () => store.bots, hides: (from, target) => personalReach.hides(from, target), runOf: (threadId) => (routines?.isActiveThread(threadId) ? routines.runForThread(threadId) ?? undefined : undefined), writerOf: (routineId) => cloudRoutineAuthors?.writer(routineId), askedPerson: teamOwners.routing.askedPerson, theirOwn: (threadId, person) => audienceMember(teamHost.audienceOf(threadId)) === person, inbox: () => teamMessages.inbox, language: conversationLanguage });
2814
- const devsReports = createDevsReports({ dataDir: DATA_DIR, store, installId: ENVIRONMENT_ID, appVersion: serverVersion(), runsOn: CLOUD_TEAM ? "Team Cloud" : CLOUD_HOME ? "My Cloud" : DESKTOP_MANAGED ? "desktop app" : HOSTED_WORKSPACE ? "hosted server" : "self-hosted server", recentLog: captureRecentLog(), send: devsReportSender(bugReportEndpoint(process.env, CLOUD_HOME?.adminOrigin)), askStatus: devsStatusAsker(bugReportEndpoint(process.env, CLOUD_HOME?.adminOrigin), CLOUD_HOME), statusEveryMs: Number(process.env.OMB_DEVS_STATUS_MS) || undefined, tell: (threadId, text, person) => { const group = store.groupByThread(threadId), bot = group ? store.bot(group.memberIds[0] ?? "") : store.botByThread(threadId); if (bot)
2814
+ const devsReports = createDevsReports({ dataDir: DATA_DIR, store, installId: ENVIRONMENT_ID, appVersion: serverVersion(), runsOn: CLOUD_TEAM ? "Team Cloud" : CLOUD_HOME ? "My Cloud" : DESKTOP_MANAGED ? "desktop app" : HOSTED_WORKSPACE ? "hosted server" : "self-hosted server", recentLog: captureRecentLog(), send: limixReportSender(limixReportAlias()), askStatus: limixStatusAsker(), statusEveryMs: Number(process.env.OMB_DEVS_STATUS_MS) || undefined, tell: (threadId, text, person) => { const group = store.groupByThread(threadId), bot = group ? store.bot(group.memberIds[0] ?? "") : store.botByThread(threadId); if (bot)
2815
2815
  notify({ ...buildNoticeNotification(bot, threadId, text), ...(group ? { groupId: group.id } : {}), ...(CLOUD_TEAM && person ? { forPerson: person } : {}) }); }, working: (threadId) => { const group = store.groupByThread(threadId), bot = group ? null : store.botByThread(threadId); return group ? Boolean(group.busyBotId) || groupThreadIsWorking(group.id, threadId) : Boolean(bot && threadBusy(bot.id, threadId)); }, automated: (threadId) => Boolean(routines?.isActiveThread(threadId)), engine: (instanceId) => (registry.get(instanceId) ? { name: engineName(instanceId), snapshot: registry.lastSnapshot(instanceId) } : null), appsReady: () => composio.configured(cfg), sessions: () => sessions.list(), ownerKey: CLOUD_OWNER_KEY, team: Boolean(CLOUD_TEAM), profileEmail: () => cfg.profile?.email, language: appLanguage, lineLanguage: personLanguages.forLine });
2816
2816
  const creditMoves = cloudCredit && createCreditMoves({ credit: cloudCredit, store, context: selectionContext, threadBusy, saveDefault: saveNewBotModel,
2817
2817
  defaults: () => [cfg.defaultModelSelection, cfg.newBotDefaults?.profile.modelSelection], engineName: id => registry.get(id)?.displayName ?? id,
@@ -0,0 +1 @@
1
+ export const LIMIX_REPORT_ALIAS = "71bc2c050ffdcbeea58fccd0a9daea46";
@@ -0,0 +1,59 @@
1
+ // Limix Bot: @devs bug reports go to the Limix owner's inbox through FormSubmit (https://formsubmit.co/documentation),
2
+ // addressed by the random alias FormSubmit hands out once the owner confirms their address, so neither the source nor
3
+ // the app carries the address itself. There is no status service behind an inbox, so nothing asks what became of a report.
4
+ import { randomBytes } from "node:crypto";
5
+ import { LIMIX_REPORT_ALIAS } from "./limix-report-config.js";
6
+ const ALIAS = /^[A-Za-z0-9]{8,128}$/;
7
+ const SEND_TIMEOUT_MS = 20_000;
8
+ /** Kept well under what an email body comfortably carries; the full diagnostics stay in the app's own log. */
9
+ const MAX_FIELD_CHARS = 20_000;
10
+ export function limixReportAlias(env = process.env) {
11
+ const alias = (env.LIMIX_REPORT_ALIAS ?? LIMIX_REPORT_ALIAS).trim();
12
+ return ALIAS.test(alias) ? alias : null;
13
+ }
14
+ const clipped = (text) => (text.length > MAX_FIELD_CHARS ? `${text.slice(0, MAX_FIELD_CHARS)}\n…` : text);
15
+ export function limixReportSender(alias, fetcher = fetch) {
16
+ return async (payload) => {
17
+ if (!alias)
18
+ return { ok: false, retry: false, why: "refused", detail: "bug reports are not set up in this Limix Bot build" };
19
+ const id = `LX-${randomBytes(4).toString("hex").toUpperCase()}`;
20
+ const fields = {
21
+ _subject: `Limix Bot bug report ${id} (${payload.appVersion}, ${payload.platform})`,
22
+ _template: "box",
23
+ _captcha: "false",
24
+ report: id,
25
+ version: payload.appVersion,
26
+ platform: payload.platform,
27
+ install: payload.installId,
28
+ message: clipped(payload.description),
29
+ diagnostics: clipped(payload.diagnostics),
30
+ };
31
+ if (payload.contactEmail) {
32
+ fields.email = payload.contactEmail;
33
+ fields._replyto = payload.contactEmail;
34
+ }
35
+ if (payload.contact)
36
+ fields.contact = payload.contact;
37
+ let response;
38
+ try {
39
+ response = await fetcher(`https://formsubmit.co/ajax/${alias}`, {
40
+ method: "POST", redirect: "error", cache: "no-store",
41
+ headers: { accept: "application/json", "content-type": "application/json" },
42
+ body: JSON.stringify(fields), signal: AbortSignal.timeout(SEND_TIMEOUT_MS),
43
+ });
44
+ }
45
+ catch {
46
+ return { ok: false, retry: true, why: "offline" };
47
+ }
48
+ const answer = (await response.json().catch(() => ({})));
49
+ if (response.ok && String(answer.success) === "true")
50
+ return { ok: true, id };
51
+ if (response.status === 429)
52
+ return { ok: false, retry: true, why: "limited" };
53
+ if (response.ok || response.status >= 500)
54
+ return { ok: false, retry: true, why: "server" };
55
+ const detail = typeof answer.message === "string" ? answer.message.replace(/\p{Cc}+/gu, " ").trim().slice(0, 200) : "";
56
+ return { ok: false, retry: false, why: "refused", detail: detail || `status ${response.status}` };
57
+ };
58
+ }
59
+ export const limixStatusAsker = () => async (_question) => null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "limixbot",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Run the Limix Bot server anywhere and pair your devices to it (Leox ৹ Limix AI)",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- import{U as a,C as n}from"./mermaid.core-DfRakiWl.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};