pim-agent 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/package.json +3 -3
  2. package/packages/core/src/attachments/AttachmentStore.ts +8 -13
  3. package/packages/core/src/attachments/Attachments.ts +2 -4
  4. package/packages/core/src/extensions/CoreExtensions.ts +1 -1
  5. package/packages/core/src/extensions/apply-patch/coordinator.ts +1 -1
  6. package/packages/core/src/extensions/apply-patch/executor.ts +21 -25
  7. package/packages/core/src/extensions/apply-patch/matcher.ts +1 -1
  8. package/packages/core/src/extensions/apply-patch/model.ts +2 -6
  9. package/packages/core/src/extensions/apply-patch/parser.ts +60 -162
  10. package/packages/core/src/extensions/apply-patch/schema.ts +0 -1
  11. package/packages/core/src/extensions/bash/MemoryCap.ts +5 -4
  12. package/packages/core/src/extensions/bash/capture.ts +16 -23
  13. package/packages/core/src/extensions/bash/format.ts +2 -2
  14. package/packages/core/src/extensions/bash/image.ts +4 -8
  15. package/packages/core/src/extensions/bash/index.ts +1 -1
  16. package/packages/core/src/extensions/bash/render.ts +1 -1
  17. package/packages/core/src/extensions/bash/run.ts +9 -15
  18. package/packages/core/src/extensions/bash/schema.ts +4 -4
  19. package/packages/core/src/extensions/edit/edit.ts +14 -33
  20. package/packages/core/src/extensions/glob/glob.ts +1 -3
  21. package/packages/core/src/extensions/glob/index.ts +7 -9
  22. package/packages/core/src/extensions/glob/render.ts +2 -4
  23. package/packages/core/src/extensions/glob/schema.ts +1 -1
  24. package/packages/core/src/extensions/grep/grep.ts +7 -7
  25. package/packages/core/src/extensions/grep/render.ts +5 -6
  26. package/packages/core/src/extensions/grep/schema.ts +3 -7
  27. package/packages/core/src/extensions/read/ImageMemory.ts +2 -8
  28. package/packages/core/src/extensions/read/image.ts +3 -3
  29. package/packages/core/src/extensions/read/index.ts +2 -14
  30. package/packages/core/src/extensions/read/read.ts +5 -6
  31. package/packages/core/src/extensions/read/render.ts +1 -1
  32. package/packages/core/src/extensions/read/schema.ts +2 -2
  33. package/packages/core/src/extensions/subagent/render.ts +2 -2
  34. package/packages/core/src/extensions/subagent/subagent.ts +10 -21
  35. package/packages/core/src/extensions/system-prompt/index.ts +1 -2
  36. package/packages/core/src/extensions/system-prompt/prompt.ts +2 -4
  37. package/packages/core/src/extensions/todo/render.ts +1 -4
  38. package/packages/core/src/extensions/todo/todo.ts +16 -23
  39. package/packages/core/src/extensions/web-fetch/JinaReaderClient.ts +3 -11
  40. package/packages/core/src/extensions/web-fetch/WebViewFetchClient.ts +1 -3
  41. package/packages/core/src/extensions/web-fetch/fetch.ts +4 -12
  42. package/packages/core/src/extensions/web-fetch/image.ts +3 -4
  43. package/packages/core/src/extensions/web-fetch/index.ts +2 -13
  44. package/packages/core/src/extensions/web-fetch/render.ts +3 -4
  45. package/packages/core/src/extensions/web-fetch/schema.ts +3 -4
  46. package/packages/core/src/extensions/web-search/ExaMcpClient.ts +23 -31
  47. package/packages/core/src/extensions/web-search/SearchBreaker.ts +1 -1
  48. package/packages/core/src/extensions/web-search/SearchChain.ts +6 -5
  49. package/packages/core/src/extensions/web-search/providers/DuckDuckGoProvider.ts +2 -2
  50. package/packages/core/src/extensions/web-search/providers/FirecrawlProvider.ts +1 -2
  51. package/packages/core/src/extensions/web-search/providers/SearchProvider.ts +3 -3
  52. package/packages/core/src/extensions/write/write.ts +1 -1
  53. package/packages/core/src/picker/InProcessFilePickerSuggestionEngine.ts +1 -3
  54. package/packages/core/src/picker/PickerItem.ts +1 -1
  55. package/packages/core/src/picker/PickerService.ts +3 -7
  56. package/packages/core/src/picker/RemoteFilePickerSuggestionEngine.ts +1 -2
  57. package/packages/core/src/picker/catalog.ts +7 -15
  58. package/packages/core/src/picker/filePickerWorker.ts +1 -3
  59. package/packages/core/src/picker/ranker.ts +1 -1
  60. package/packages/core/src/picker/token.ts +3 -4
  61. package/packages/core/src/session/AgentRuntime.ts +5 -8
  62. package/packages/core/src/session/EventLog.ts +6 -12
  63. package/packages/core/src/session/ReadCursors.ts +3 -4
  64. package/packages/core/src/session/SearchIndex.ts +49 -86
  65. package/packages/core/src/session/SearchTokens.ts +4 -7
  66. package/packages/core/src/session/SessionCache.ts +8 -6
  67. package/packages/core/src/session/SessionDigest.ts +10 -19
  68. package/packages/core/src/session/SessionHost.ts +53 -83
  69. package/packages/core/src/session/SessionLease.ts +12 -15
  70. package/packages/core/src/session/SessionMeta.ts +16 -32
  71. package/packages/core/src/session/SessionName.ts +3 -7
  72. package/packages/core/src/session/SessionRegistry.ts +13 -29
  73. package/packages/core/src/session/SessionUi.ts +12 -16
  74. package/packages/core/src/session/WriteMark.ts +7 -16
  75. package/packages/core/src/shared/Cli.ts +1 -1
  76. package/packages/core/src/shared/DaemonUnit.ts +1 -2
  77. package/packages/core/src/shared/DiffLines.ts +16 -34
  78. package/packages/core/src/shared/DiffRenderer.ts +8 -27
  79. package/packages/core/src/shared/Directories.ts +4 -4
  80. package/packages/core/src/shared/EditMatcher.ts +18 -50
  81. package/packages/core/src/shared/ExtensionToggles.ts +3 -6
  82. package/packages/core/src/shared/FileEnumerator.ts +73 -57
  83. package/packages/core/src/shared/FileScanner.ts +5 -13
  84. package/packages/core/src/shared/FileWatch.ts +13 -17
  85. package/packages/core/src/shared/Format.ts +2 -3
  86. package/packages/core/src/shared/FuzzyMatcher.ts +18 -19
  87. package/packages/core/src/shared/Git.ts +22 -47
  88. package/packages/core/src/shared/GitMonitor.ts +12 -23
  89. package/packages/core/src/shared/GlobExclusions.ts +0 -4
  90. package/packages/core/src/shared/Http.ts +1 -1
  91. package/packages/core/src/shared/ImageMime.ts +3 -5
  92. package/packages/core/src/shared/Images.ts +17 -27
  93. package/packages/core/src/shared/Languages.ts +2 -2
  94. package/packages/core/src/shared/Levenshtein.ts +1 -6
  95. package/packages/core/src/shared/Lines.ts +1 -1
  96. package/packages/core/src/shared/McpClient.ts +2 -2
  97. package/packages/core/src/shared/PatchSummary.ts +1 -1
  98. package/packages/core/src/shared/Paths.ts +4 -1
  99. package/packages/core/src/shared/PiExtensions.ts +5 -12
  100. package/packages/core/src/shared/PimSettings.ts +14 -15
  101. package/packages/core/src/shared/Proc.ts +2 -3
  102. package/packages/core/src/shared/RateLimiter.ts +1 -1
  103. package/packages/core/src/shared/Renderer.ts +1 -3
  104. package/packages/core/src/shared/RepoDiff.ts +24 -46
  105. package/packages/core/src/shared/SearchRender.ts +3 -4
  106. package/packages/core/src/shared/SpillCache.ts +2 -3
  107. package/packages/core/src/shared/SubagentLogs.ts +4 -6
  108. package/packages/core/src/shared/Supervisor.ts +19 -32
  109. package/packages/core/src/shared/Surface.ts +1 -1
  110. package/packages/core/src/shared/Sweeper.ts +1 -1
  111. package/packages/core/src/shared/Tools.ts +17 -30
  112. package/packages/core/src/shared/Updater.ts +15 -15
  113. package/packages/core/src/view/BodyRenderer.ts +1 -1
  114. package/packages/core/src/view/DiffBlocks.ts +0 -1
  115. package/packages/core/src/view/DiffExpand.ts +10 -25
  116. package/packages/core/src/view/DiffLayout.ts +2 -2
  117. package/packages/core/src/view/DiffPairs.ts +2 -2
  118. package/packages/core/src/view/MarkdownPainter.ts +2 -19
  119. package/packages/core/src/view/MovePath.ts +4 -17
  120. package/packages/core/src/view/Painting.ts +4 -4
  121. package/packages/core/src/view/ViewBlock.ts +11 -12
  122. package/packages/daemon/src/Daemon.ts +2 -7
  123. package/packages/daemon/src/DaemonInstall.ts +5 -12
  124. package/packages/daemon/src/Surfaces.ts +3 -12
  125. package/packages/daemon/src/TelegramSurface.ts +0 -1
  126. package/packages/daemon/src/index.ts +0 -1
  127. package/packages/protocol/src/Command.ts +33 -41
  128. package/packages/protocol/src/Diff.ts +0 -5
  129. package/packages/protocol/src/ImageRoute.ts +2 -5
  130. package/packages/protocol/src/ServerEvent.ts +68 -105
  131. package/packages/server/src/AttachmentEndpoint.ts +45 -19
  132. package/packages/server/src/ClientConnection.ts +11 -12
  133. package/packages/server/src/ImageEndpoint.ts +3 -4
  134. package/packages/server/src/ProbeClient.ts +26 -59
  135. package/packages/server/src/Reloader.ts +4 -7
  136. package/packages/server/src/SendFileTool.ts +1 -1
  137. package/packages/server/src/SessionCatalogue.ts +35 -47
  138. package/packages/server/src/SessionProjection.ts +7 -12
  139. package/packages/server/src/SessionStream.ts +33 -80
  140. package/packages/server/src/StaticClient.ts +7 -8
  141. package/packages/server/src/WebOptions.ts +2 -6
  142. package/packages/server/src/WsGateway.ts +35 -96
  143. package/packages/server/src/probe.ts +6 -18
  144. package/packages/telegram/src/Bot.ts +2 -2
  145. package/packages/telegram/src/Commands.ts +108 -65
  146. package/packages/telegram/src/Config.ts +1 -6
  147. package/packages/telegram/src/Markdown.ts +4 -13
  148. package/packages/telegram/src/Renderer.ts +1 -1
  149. package/packages/telegram/src/Session.ts +3 -10
  150. package/packages/telegram/src/TaskScheduler.ts +31 -10
  151. package/packages/telegram/src/TaskStore.ts +11 -1
  152. package/packages/telegram/src/TaskTool.ts +1 -1
  153. package/packages/telegram/src/UpdateConfirm.ts +2 -2
  154. package/packages/tui/src/extensions/_init/index.ts +2 -5
  155. package/packages/tui/src/extensions/file-picker/index.ts +2 -6
  156. package/packages/tui/src/extensions/footer/index.ts +0 -1
  157. package/packages/tui/src/extensions/footer/powerline.ts +16 -28
  158. package/packages/tui/src/extensions/pim/index.ts +1 -1
  159. package/packages/tui/src/extensions/session-lease/index.ts +5 -6
  160. package/packages/tui/src/extensions/working-indicator/index.ts +1 -2
  161. package/packages/tui/src/themes/themeCliArgs.ts +1 -1
  162. package/packages/web/dist/client/assets/{abnfDiagram-O67JEVCF-CZ7V84ot.js → abnfDiagram-O67JEVCF-WweOU5DK.js} +1 -1
  163. package/packages/web/dist/client/assets/{arc-DiHGkUvc.js → arc-O2PmZXWt.js} +1 -1
  164. package/packages/web/dist/client/assets/architecture-7GRP2DOG-COBxVilU.js +1 -0
  165. package/packages/web/dist/client/assets/{architectureDiagram-NJMV4G6O-XS5DhfJB.js → architectureDiagram-NJMV4G6O-DwYq1YaM.js} +1 -1
  166. package/packages/web/dist/client/assets/{blockDiagram-BEXU5L5S-BCsgLvy1.js → blockDiagram-BEXU5L5S-CVab041n.js} +1 -1
  167. package/packages/web/dist/client/assets/{c4Diagram-YGBWAQC7-Bj9LcWNm.js → c4Diagram-YGBWAQC7-BmotHez3.js} +1 -1
  168. package/packages/web/dist/client/assets/channel-BKV-IcTA.js +1 -0
  169. package/packages/web/dist/client/assets/{chunk-3FUC2YCW-BmDurFxp.js → chunk-3FUC2YCW-CWNS7-n4.js} +1 -1
  170. package/packages/web/dist/client/assets/{chunk-5DYCD2WN-DAjG-pqn.js → chunk-5DYCD2WN-DflvXohu.js} +1 -1
  171. package/packages/web/dist/client/assets/{chunk-742MDFTN-Bmxs5puY.js → chunk-742MDFTN-B_0t6_RE.js} +1 -1
  172. package/packages/web/dist/client/assets/{chunk-7INBJB4K-Di7kIxrQ.js → chunk-7INBJB4K-wKj0Q3Kv.js} +1 -1
  173. package/packages/web/dist/client/assets/{chunk-7M6MHVWA-CSc8sR0b.js → chunk-7M6MHVWA-BMvUghc8.js} +1 -1
  174. package/packages/web/dist/client/assets/{chunk-7PRAP22T-C8kd5QvY.js → chunk-7PRAP22T-BY41wkcT.js} +1 -1
  175. package/packages/web/dist/client/assets/{chunk-GTNCS2PH-DG2b2LYE.js → chunk-GTNCS2PH-PqY_YoS0.js} +1 -1
  176. package/packages/web/dist/client/assets/{chunk-GWA4HPMP-DdLaLQCu.js → chunk-GWA4HPMP-fozSU5ty.js} +1 -1
  177. package/packages/web/dist/client/assets/{chunk-MBY4JIJT-C1j0yQlk.js → chunk-MBY4JIJT-CrHrC3jw.js} +1 -1
  178. package/packages/web/dist/client/assets/{chunk-NETBCI7D-Bfq9H74p.js → chunk-NETBCI7D-DWdAxieG.js} +1 -1
  179. package/packages/web/dist/client/assets/{chunk-O7XYJQB3-ZHvBmBO-.js → chunk-O7XYJQB3-B6uOn9iS.js} +1 -1
  180. package/packages/web/dist/client/assets/{chunk-UA2S7LBM-ku1JeHSK.js → chunk-UA2S7LBM-BxYSHqyy.js} +1 -1
  181. package/packages/web/dist/client/assets/{chunk-WEXAMYUT-BP1iga_7.js → chunk-WEXAMYUT-CtwIaQDa.js} +1 -1
  182. package/packages/web/dist/client/assets/{chunk-XXDRQBXY-BBeccPcX.js → chunk-XXDRQBXY-fgBFe-PX.js} +1 -1
  183. package/packages/web/dist/client/assets/{chunk-Z7XXMR3K-SMHZugaR.js → chunk-Z7XXMR3K-CPonoV3p.js} +1 -1
  184. package/packages/web/dist/client/assets/{chunk-ZIGJFQKS-CFU_JLG4.js → chunk-ZIGJFQKS-Cdu87cTj.js} +1 -1
  185. package/packages/web/dist/client/assets/{classDiagram-v2-NBCMYWYE-CYviuQzJ.js → classDiagram-v2-NBCMYWYE-DSWsPaa7.js} +1 -1
  186. package/packages/web/dist/client/assets/{core-DyHsgs5k.js → core-CBoS7AST.js} +1 -1
  187. package/packages/web/dist/client/assets/{cose-bilkent-JH36ORCC-9v2ZkJzo.js → cose-bilkent-JH36ORCC-CTwlldtJ.js} +1 -1
  188. package/packages/web/dist/client/assets/{cynefin-OW5HDTMX-Bx5xRadi.js → cynefin-OW5HDTMX-CZQ4EPNJ.js} +1 -1
  189. package/packages/web/dist/client/assets/{cynefinDiagram-VND7K2PF-BRfGDKqa.js → cynefinDiagram-VND7K2PF-C2gp6H_Q.js} +1 -1
  190. package/packages/web/dist/client/assets/{dagre-6A5THRUB-C4l-2L2e.js → dagre-6A5THRUB-CDxTP47t.js} +1 -1
  191. package/packages/web/dist/client/assets/{diagram-22UHCM2B-d_hQ3kyi.js → diagram-22UHCM2B-BIohE1lI.js} +1 -1
  192. package/packages/web/dist/client/assets/{diagram-3UASUU5V-DrEeguPI.js → diagram-3UASUU5V-TwAUir-w.js} +1 -1
  193. package/packages/web/dist/client/assets/{diagram-ATOU4E4O-BmfQ22pD.js → diagram-ATOU4E4O-BM1JQrIu.js} +1 -1
  194. package/packages/web/dist/client/assets/{diagram-CDSNMT55-BjVWjuPF.js → diagram-CDSNMT55-BKIqhxSI.js} +1 -1
  195. package/packages/web/dist/client/assets/{diagram-MLGK6HIB-wDjk-O8i.js → diagram-MLGK6HIB-CVe3QDHr.js} +1 -1
  196. package/packages/web/dist/client/assets/{diagram-MPIPVDR6-DqXQFE1s.js → diagram-MPIPVDR6-Bj-MQIFI.js} +1 -1
  197. package/packages/web/dist/client/assets/{dist-BddGOpie.js → dist-DlZpcyc2.js} +1 -1
  198. package/packages/web/dist/client/assets/{ebnfDiagram-ZINNZB2B-UB8kOITM.js → ebnfDiagram-ZINNZB2B-C06mmvmz.js} +1 -1
  199. package/packages/web/dist/client/assets/{elk-276RUBZZ-D4miYQnD.js → elk-276RUBZZ-CizJSNEj.js} +1 -1
  200. package/packages/web/dist/client/assets/{erDiagram-OPXOYQCR--RXKv7KH.js → erDiagram-OPXOYQCR-M3FQkKI1.js} +1 -1
  201. package/packages/web/dist/client/assets/eventmodeling-NTZA5JFV-D_UXLpIu.js +1 -0
  202. package/packages/web/dist/client/assets/flowDiagram-KWPJA3E3-BT4eEEVm.js +1 -0
  203. package/packages/web/dist/client/assets/{ganttDiagram-FUAMR5RP-C0CFpE5x.js → ganttDiagram-FUAMR5RP-CojF9Q16.js} +1 -1
  204. package/packages/web/dist/client/assets/{gitGraph-4MIJSDKK-VPL7nv2c.js → gitGraph-4MIJSDKK-YvKqGEPk.js} +1 -1
  205. package/packages/web/dist/client/assets/{gitGraphDiagram-X574FWY7-CgxJA-T8.js → gitGraphDiagram-X574FWY7-XqNqIFo9.js} +1 -1
  206. package/packages/web/dist/client/assets/index--2CDtzvY.css +1 -0
  207. package/packages/web/dist/client/assets/{index-XTlTnQmx.js → index-bT6QPJZs.js} +7 -7
  208. package/packages/web/dist/client/assets/{info-A6RAGUB7-P0-o68pj.js → info-A6RAGUB7-B_1BCzM2.js} +1 -1
  209. package/packages/web/dist/client/assets/{infoDiagram-VRGFBTTK-DFJZNRUP.js → infoDiagram-VRGFBTTK-zFX8B-dP.js} +1 -1
  210. package/packages/web/dist/client/assets/{ishikawaDiagram-OU5B5YK6-ZkyhNd1T.js → ishikawaDiagram-OU5B5YK6-DLzQ_Uyf.js} +1 -1
  211. package/packages/web/dist/client/assets/{journeyDiagram-ZHPQQLJL-DFevH8my.js → journeyDiagram-ZHPQQLJL-S3WRMmoa.js} +1 -1
  212. package/packages/web/dist/client/assets/{kanban-definition-PNTS6WVX-l7e7ZZDC.js → kanban-definition-PNTS6WVX-B5Z8I-kM.js} +1 -1
  213. package/packages/web/dist/client/assets/{line-DO_s6Ujd.js → line-BGMH-i2X.js} +1 -1
  214. package/packages/web/dist/client/assets/{linear-C4xH5PPc.js → linear-KsrestXG.js} +1 -1
  215. package/packages/web/dist/client/assets/{mermaid-parser.core-nQaTP3VY.js → mermaid-parser.core-DNffyJJA.js} +3 -3
  216. package/packages/web/dist/client/assets/{mermaid.core-Cz05yTZh.js → mermaid.core-Cz3vJeQG.js} +4 -4
  217. package/packages/web/dist/client/assets/{mindmap-definition-NLK3R4M7-CHOEuHm2.js → mindmap-definition-NLK3R4M7-CzA61XUf.js} +1 -1
  218. package/packages/web/dist/client/assets/{packet-AYTQ26CC-BH3ehPMo.js → packet-AYTQ26CC-BO55e7cR.js} +1 -1
  219. package/packages/web/dist/client/assets/{pegDiagram-GJSIUBJH-CkWBLtad.js → pegDiagram-GJSIUBJH-DeRiXYNd.js} +1 -1
  220. package/packages/web/dist/client/assets/{pie-WAS4IAKB-nNVEq3dx.js → pie-WAS4IAKB-D9ibrQRe.js} +1 -1
  221. package/packages/web/dist/client/assets/{pieDiagram-5QR66LMP-DimUBAgN.js → pieDiagram-5QR66LMP-BaBpPP33.js} +1 -1
  222. package/packages/web/dist/client/assets/{quadrantDiagram-O4NWA36T-BR0XpRGQ.js → quadrantDiagram-O4NWA36T-DIfn4GjM.js} +1 -1
  223. package/packages/web/dist/client/assets/{radar-RG4KPBEZ-paA-H3mb.js → radar-RG4KPBEZ-Dmn5-nJq.js} +1 -1
  224. package/packages/web/dist/client/assets/{railroad-74A4TZTK-yEiKB3rz.js → railroad-74A4TZTK-ZCWNEd2Z.js} +1 -1
  225. package/packages/web/dist/client/assets/railroad-abnf-HS5TGJTU-_swqhy0y.js +1 -0
  226. package/packages/web/dist/client/assets/railroad-ebnf-LZEXJU2U-CytbazPx.js +1 -0
  227. package/packages/web/dist/client/assets/railroad-peg-WCYAUIDC-Bg8QW17T.js +1 -0
  228. package/packages/web/dist/client/assets/{railroadDiagram-XR7U4H2S--TXe6rdU.js → railroadDiagram-XR7U4H2S-CDPZ39sy.js} +1 -1
  229. package/packages/web/dist/client/assets/{requirementDiagram-PLB6GJNP-DyqH36Za.js → requirementDiagram-PLB6GJNP-CyCI8Yul.js} +1 -1
  230. package/packages/web/dist/client/assets/{sankeyDiagram-IPEJSGJF-Bg6e3BlM.js → sankeyDiagram-IPEJSGJF-p_XAPv72.js} +1 -1
  231. package/packages/web/dist/client/assets/{sequenceDiagram-PO4LG4MO-ClGf85My.js → sequenceDiagram-PO4LG4MO-DmR6IP_o.js} +1 -1
  232. package/packages/web/dist/client/assets/{src-DF7hQfMh.js → src-gnv7pJ1z.js} +1 -1
  233. package/packages/web/dist/client/assets/{stateDiagram-v2-GCMORJYK-BK8TpxNo.js → stateDiagram-v2-GCMORJYK-7ZTHl6ih.js} +1 -1
  234. package/packages/web/dist/client/assets/{swimlanes-2SLR337P-DDnTIT9M.js → swimlanes-2SLR337P-N6bj71pw.js} +1 -1
  235. package/packages/web/dist/client/assets/swimlanesDiagram-TC7HE7FX-BJQ2CBsp.js +8 -0
  236. package/packages/web/dist/client/assets/{timeline-definition-EJHVYXUP-mBBbH3bk.js → timeline-definition-EJHVYXUP-GNez0kW8.js} +1 -1
  237. package/packages/web/dist/client/assets/{treeView-Q6P3EWNA-CTK7tRwR.js → treeView-Q6P3EWNA-DyQZkboR.js} +1 -1
  238. package/packages/web/dist/client/assets/{treemap-WGGIJYW6-vOI-Ef_m.js → treemap-WGGIJYW6-_J8Pw2TM.js} +1 -1
  239. package/packages/web/dist/client/assets/{usecaseDiagram-POWQR4AR-COcii8x-.js → usecaseDiagram-POWQR4AR-Bg-CzKjl.js} +1 -1
  240. package/packages/web/dist/client/assets/{vennDiagram-UO4OBE2U-D6kmDGpM.js → vennDiagram-UO4OBE2U-DBQKHXhK.js} +1 -1
  241. package/packages/web/dist/client/assets/{wardley-WFR3VGLG-CtE2KI9r.js → wardley-WFR3VGLG-B5aAsQ3F.js} +1 -1
  242. package/packages/web/dist/client/assets/{wardleyDiagram-VNRHLVJA-ncxNGWnW.js → wardleyDiagram-VNRHLVJA-BKUQ1LK6.js} +1 -1
  243. package/packages/web/dist/client/assets/{xychartDiagram-PMCCYNJV-DUvd2Qze.js → xychartDiagram-PMCCYNJV-BI2sVbks.js} +1 -1
  244. package/packages/web/dist/client/index.html +2 -2
  245. package/packages/web/dist/client/assets/architecture-7GRP2DOG-HIzEIkwQ.js +0 -1
  246. package/packages/web/dist/client/assets/channel-BCA6qe9I.js +0 -1
  247. package/packages/web/dist/client/assets/eventmodeling-NTZA5JFV-l6SYFw1s.js +0 -1
  248. package/packages/web/dist/client/assets/flowDiagram-KWPJA3E3-CWW9qnqm.js +0 -1
  249. package/packages/web/dist/client/assets/index-D9_XJLSc.css +0 -1
  250. package/packages/web/dist/client/assets/railroad-abnf-HS5TGJTU-mVQx9aVM.js +0 -1
  251. package/packages/web/dist/client/assets/railroad-ebnf-LZEXJU2U-CllXx1OJ.js +0 -1
  252. package/packages/web/dist/client/assets/railroad-peg-WCYAUIDC-BBD2Q5W_.js +0 -1
  253. package/packages/web/dist/client/assets/swimlanesDiagram-TC7HE7FX-CM8UnP5t.js +0 -8
@@ -109,13 +109,8 @@ function renderMd(md: string, options: RenderOptions = {}): string {
109
109
  if (!md.trim()) {
110
110
  return "";
111
111
  }
112
- return Bun.markdown.render(md, renderers(options), {
113
- strikethrough: false,
114
- });
115
- }
116
-
117
- function renderers(options: RenderOptions): typeof RENDERERS {
118
- return options.italics ? ITALIC_RENDERERS : RENDERERS;
112
+ const renderers = options.italics ? ITALIC_RENDERERS : RENDERERS;
113
+ return Bun.markdown.render(md, renderers, { strikethrough: false });
119
114
  }
120
115
 
121
116
  function italic(text: string): string {
@@ -206,14 +201,10 @@ function renderTable(
206
201
  rows: ReadonlyArray<TableRow>,
207
202
  aligns: ReadonlyArray<Align | undefined>
208
203
  ): string {
209
- if (rows.length < 2) {
210
- return "";
211
- }
212
- const header = rows[0]!;
213
- const dataRows = rows.slice(1);
214
- if (dataRows.length === 0) {
204
+ if (rows.length === 0) {
215
205
  return "";
216
206
  }
207
+ const [header, ...dataRows] = rows as [TableRow, ...TableRow[]];
217
208
  const attr = (col: number): string => {
218
209
  const align = aligns[col];
219
210
  return align ? ` align="${align}"` : "";
@@ -132,7 +132,7 @@ export class Renderer {
132
132
  if (this.logsMode === "off") {
133
133
  return;
134
134
  }
135
- // A failed call's result is pi's synthetic empty error; repainting drops the row's details.
135
+ // A failed call's result has empty details; repainting would drop the row's.
136
136
  if (!event.isError) {
137
137
  this.refreshTool(event.toolCallId, event.result, false);
138
138
  }
@@ -18,7 +18,7 @@ import { SendFileTool } from "./SendFileTool";
18
18
  import type { TaskScheduler } from "./TaskScheduler";
19
19
  import { TaskTool } from "./TaskTool";
20
20
 
21
- export type { SessionCompactResult, SetCwdResult, SetModelResult };
21
+ export type { SessionCompactResult };
22
22
 
23
23
  export type SessionId = {
24
24
  readonly chatId: number;
@@ -30,12 +30,11 @@ export type SessionSettings = HostSettings & {
30
30
  readonly temporary?: boolean;
31
31
  };
32
32
 
33
- export type SessionDeps = {
33
+ type SessionDeps = {
34
34
  readonly id: SessionId;
35
35
  readonly settings: SessionSettings;
36
36
  readonly config: TelegramConfig;
37
37
  readonly api: Api;
38
- /** Pi's installation, shared with every other surface in this process. */
39
38
  readonly runtime: AgentRuntime;
40
39
  readonly scheduler: TaskScheduler;
41
40
  readonly persistSettings: (patch: Partial<SessionSettings>) => Promise<void>;
@@ -71,8 +70,7 @@ export class Session {
71
70
  modelRegistry: deps.runtime.modelRegistry,
72
71
  settingsManagerFor: (cwd) => deps.runtime.settingsManagerFor(cwd),
73
72
  persistSettings: deps.persistSettings,
74
- // Nothing else opens these files; the lease is here for the turn a crashed
75
- // daemon left behind, and for an eviction that races its own turn.
73
+ // Guards against a crashed daemon's leftover turn and eviction racing a turn.
76
74
  lease: "daemon",
77
75
  mainSessionPath: () => this.sessionPath("sessions"),
78
76
  isolatedSessionPath: () =>
@@ -119,11 +117,6 @@ export class Session {
119
117
  return this.host.sessionCost();
120
118
  }
121
119
 
122
- /** Pi's session UUID, once an agent exists. */
123
- public get sessionId(): string | undefined {
124
- return this.host.sessionId;
125
- }
126
-
127
120
  public get currentModelId(): string | undefined {
128
121
  return this.host.currentModelId;
129
122
  }
@@ -2,9 +2,9 @@ import type { SessionId } from "./Session";
2
2
  import type { ScheduleSpec, ScheduledTask } from "./TaskSchema";
3
3
  import { TaskStore } from "./TaskStore";
4
4
 
5
- export type RunTaskFn = (task: ScheduledTask) => Promise<void>;
5
+ type RunTaskFn = (task: ScheduledTask) => Promise<void>;
6
6
 
7
- export type TaskSchedulerOptions = {
7
+ type TaskSchedulerOptions = {
8
8
  readonly configDir: string;
9
9
  readonly runTask: RunTaskFn;
10
10
  readonly pollIntervalMs?: number;
@@ -21,12 +21,17 @@ export class TaskScheduler {
21
21
  private readonly now: () => number;
22
22
  private timer: Timer | undefined;
23
23
  private inflight: Promise<void> | undefined;
24
+ private readonly running: Set<string>;
25
+ private readonly fires: Set<Promise<void>>;
24
26
 
25
27
  public constructor(opts: TaskSchedulerOptions) {
26
28
  this.configDir = opts.configDir;
27
29
  this.runTask = opts.runTask;
28
30
  this.pollIntervalMs = opts.pollIntervalMs ?? 10_000;
29
31
  this.now = opts.now ?? ((): number => Date.now());
32
+ this.inflight = undefined;
33
+ this.running = new Set();
34
+ this.fires = new Set();
30
35
  }
31
36
 
32
37
  public async start(): Promise<void> {
@@ -47,6 +52,7 @@ export class TaskScheduler {
47
52
  if (this.inflight) {
48
53
  await this.inflight;
49
54
  }
55
+ await Promise.allSettled(this.fires);
50
56
  }
51
57
 
52
58
  public async tick(): Promise<void> {
@@ -167,10 +173,9 @@ export class TaskScheduler {
167
173
  private async runTick(): Promise<void> {
168
174
  const all = await TaskStore.loadAll(this.configDir);
169
175
  const now = this.now();
170
- const fires: Promise<void>[] = [];
171
176
 
172
177
  for (const task of all) {
173
- if (task.status !== "active") {
178
+ if (task.status !== "active" || this.running.has(task.id)) {
174
179
  continue;
175
180
  }
176
181
  const nextMs = Date.parse(task.nextRun);
@@ -190,19 +195,31 @@ export class TaskScheduler {
190
195
  const advanced = advanceNextRun(task, now);
191
196
  if (advanced) {
192
197
  await TaskStore.save(this.configDir, advanced);
198
+ console.warn(
199
+ `[scheduler] task ${task.id} missed by >24h, advanced to ${advanced.nextRun}`
200
+ );
193
201
  } else {
194
202
  await TaskStore.remove(this.configDir, task.id);
203
+ console.warn(`[scheduler] task ${task.id} missed by >24h, dropped`);
195
204
  }
196
- console.warn(
197
- `[scheduler] task ${task.id} missed by >24h, advanced silently`
198
- );
199
205
  continue;
200
206
  }
201
207
 
202
- fires.push(this.fireAndReschedule(task, now));
208
+ this.startFire(task, now);
203
209
  }
210
+ }
204
211
 
205
- await Promise.allSettled(fires);
212
+ private startFire(task: ScheduledTask, firedAt: number): void {
213
+ this.running.add(task.id);
214
+ const fire = this.fireAndReschedule(task, firedAt)
215
+ .catch((err: unknown) => {
216
+ console.error(`[scheduler] task ${task.id} reschedule failed:`, err);
217
+ })
218
+ .finally(() => {
219
+ this.running.delete(task.id);
220
+ this.fires.delete(fire);
221
+ });
222
+ this.fires.add(fire);
206
223
  }
207
224
 
208
225
  private async fireAndReschedule(
@@ -214,7 +231,11 @@ export class TaskScheduler {
214
231
  } catch (err) {
215
232
  console.error(`[scheduler] task ${task.id} runTask failed:`, err);
216
233
  }
217
- const next = advanceNextRun(task, firedAt);
234
+ const current = await TaskStore.load(this.configDir, task.id);
235
+ if (!current) {
236
+ return;
237
+ }
238
+ const next = advanceNextRun(current, firedAt);
218
239
  if (next) {
219
240
  await TaskStore.save(this.configDir, next);
220
241
  } else {
@@ -32,6 +32,16 @@ async function loadAll(
32
32
  );
33
33
  }
34
34
 
35
+ async function load(
36
+ configDir: string,
37
+ id: string
38
+ ): Promise<ScheduledTask | undefined> {
39
+ return Fs.readJsonOrEmpty<ScheduledTask | undefined>(
40
+ path(configDir, id),
41
+ undefined
42
+ );
43
+ }
44
+
35
45
  async function save(configDir: string, task: ScheduledTask): Promise<void> {
36
46
  await Fs.writeAtomic(path(configDir, task.id), JSON.stringify(task, null, 2));
37
47
  }
@@ -64,4 +74,4 @@ function path(configDir: string, id: string): string {
64
74
  return join(dir(configDir), `${id}.json`);
65
75
  }
66
76
 
67
- export const TaskStore = { loadAll, save, remove, makeId };
77
+ export const TaskStore = { loadAll, load, save, remove, makeId };
@@ -13,7 +13,7 @@ import {
13
13
  type TaskToolInput,
14
14
  } from "./TaskSchema";
15
15
 
16
- export type TaskToolDeps = {
16
+ type TaskToolDeps = {
17
17
  readonly scheduler: TaskScheduler;
18
18
  readonly sessionId: SessionId;
19
19
  };
@@ -5,8 +5,8 @@ import { Fs } from "#core/shared/Fs";
5
5
 
6
6
  const CONFIRM_FILE = "update-confirm.json";
7
7
 
8
- /** The "🔄 Updating..." message to edit once the restarted daemon is back. */
9
- export type UpdateConfirmEntry = {
8
+ /** The "🔄 Updating..." message to edit after the restart. */
9
+ type UpdateConfirmEntry = {
10
10
  readonly chatId: number;
11
11
  readonly threadId: number | undefined;
12
12
  readonly messageId: number;
@@ -53,11 +53,8 @@ export default async function (pi: ExtensionAPI): Promise<void> {
53
53
  const theme = ctx.ui.theme;
54
54
  const renderKey = (key: string, muted: string | undefined): string => {
55
55
  const padding = " ".repeat(Math.max(0, keyCol - key.length));
56
- if (!muted) {
57
- return theme.fg("mdCode", key + padding);
58
- }
59
- const idx = key.indexOf(muted);
60
- if (idx === -1) {
56
+ const idx = muted ? key.indexOf(muted) : -1;
57
+ if (!muted || idx === -1) {
61
58
  return theme.fg("mdCode", key + padding);
62
59
  }
63
60
  return (
@@ -26,7 +26,7 @@ function sameActiveAtToken(
26
26
  return a?.cursorLine === b.cursorLine && a.atCol === b.atCol;
27
27
  }
28
28
 
29
- export type FilePickerProviderFactoryOptions = {
29
+ type FilePickerProviderFactoryOptions = {
30
30
  readonly engine: FilePickerSuggestionEngine;
31
31
  };
32
32
 
@@ -38,10 +38,6 @@ type ActiveAtToken = {
38
38
  export function createFilePickerProviderFactory(
39
39
  options: FilePickerProviderFactoryOptions
40
40
  ): AutocompleteProviderFactory {
41
- const refreshRelative = (): void => {
42
- void options.engine.refreshRelative();
43
- };
44
-
45
41
  return (current: AutocompleteProvider): AutocompleteProvider => {
46
42
  let activeAtToken: ActiveAtToken | undefined;
47
43
 
@@ -65,7 +61,7 @@ export function createFilePickerProviderFactory(
65
61
  const atToken = { cursorLine, atCol: sigilOffset(atMatch) };
66
62
  if (!sameActiveAtToken(activeAtToken, atToken)) {
67
63
  activeAtToken = atToken;
68
- refreshRelative();
64
+ void options.engine.refreshRelative();
69
65
  }
70
66
 
71
67
  const items = await options.engine
@@ -50,7 +50,6 @@ export function createFooterWidget(
50
50
  const refresh = (): void => {
51
51
  void monitor.refresh(ctx.cwd);
52
52
  };
53
- // The monitor holds the state; a copy here would be a second one to keep.
54
53
  const unwatch = monitor.watch(ctx.cwd, () => {
55
54
  tui.requestRender();
56
55
  });
@@ -1,18 +1,18 @@
1
1
  import { visibleWidth } from "@earendil-works/pi-tui";
2
2
 
3
- export const SEP_RIGHT = "";
4
- export const SEP_LEFT = "";
5
- export const SEP_THIN_LEFT = "";
3
+ const SEP_RIGHT = "";
4
+ const SEP_LEFT = "";
5
+ const SEP_THIN_LEFT = "";
6
6
 
7
7
  export const GIT_ICON = "";
8
8
  export const GIT_DIRTY_ICON = "";
9
9
  export const GIT_AHEAD_ICON = "";
10
10
  export const GIT_BEHIND_ICON = "";
11
11
 
12
- export const RESET = "\x1b[0m";
13
- export const BG_DEFAULT = "\x1b[49m";
14
- export const REVERSE = "\x1b[7m";
15
- export const RESET_REVERSE = "\x1b[27m";
12
+ const RESET = "\x1b[0m";
13
+ const BG_DEFAULT = "\x1b[49m";
14
+ const REVERSE = "\x1b[7m";
15
+ const RESET_REVERSE = "\x1b[27m";
16
16
 
17
17
  export const FG_BLACK = "\x1b[30m";
18
18
  export const FG_WHITE = "\x1b[97m";
@@ -22,7 +22,7 @@ export const BG_BRIGHT_GREEN = "\x1b[102m";
22
22
  export const BG_BRIGHT_YELLOW = "\x1b[103m";
23
23
  export const BG_BRIGHT_MAGENTA = "\x1b[105m";
24
24
 
25
- export const BG_TO_FG: Record<string, string> = {
25
+ const BG_TO_FG: Record<string, string> = {
26
26
  [BG_GRAY]: "\x1b[90m",
27
27
  [BG_BRIGHT_RED]: "\x1b[91m",
28
28
  [BG_BRIGHT_GREEN]: "\x1b[92m",
@@ -36,24 +36,16 @@ export type Segment = {
36
36
  readonly bg: string;
37
37
  };
38
38
 
39
- export function paint(seg: Segment): string {
39
+ function paint(seg: Segment): string {
40
40
  return `${seg.bg}${seg.fg} ${seg.text} ${RESET}`;
41
41
  }
42
42
 
43
- export function chevronRight(prev: Segment, next: Segment | null): string {
44
- const fg = BG_TO_FG[prev.bg]!;
45
- if (next === null) {
46
- return `${fg}${SEP_RIGHT}${RESET}`;
47
- }
48
- return `${fg}${next.bg}${SEP_RIGHT}${RESET}`;
43
+ function chevronRight(prev: Segment, next: Segment | undefined): string {
44
+ return `${BG_TO_FG[prev.bg]}${next?.bg ?? ""}${SEP_RIGHT}${RESET}`;
49
45
  }
50
46
 
51
- export function chevronLeft(prev: Segment | null, next: Segment): string {
52
- const fg = BG_TO_FG[next.bg]!;
53
- if (prev === null) {
54
- return `${fg}${SEP_LEFT}${RESET}`;
55
- }
56
- return `${fg}${prev.bg}${SEP_LEFT}${RESET}`;
47
+ function chevronLeft(prev: Segment | undefined, next: Segment): string {
48
+ return `${BG_TO_FG[next.bg]}${prev?.bg ?? ""}${SEP_LEFT}${RESET}`;
57
49
  }
58
50
 
59
51
  export function thinChevronLeft(bg: string, fg: string): string {
@@ -64,7 +56,7 @@ export function renderLeftGroup(segs: readonly Segment[]): string {
64
56
  let out = "";
65
57
  for (let i = 0; i < segs.length; i++) {
66
58
  out += paint(segs[i]!);
67
- out += chevronRight(segs[i]!, segs[i + 1] ?? null);
59
+ out += chevronRight(segs[i]!, segs[i + 1]);
68
60
  }
69
61
  return out;
70
62
  }
@@ -72,16 +64,12 @@ export function renderLeftGroup(segs: readonly Segment[]): string {
72
64
  export function renderRightGroup(segs: readonly Segment[]): string {
73
65
  let out = "";
74
66
  for (let i = 0; i < segs.length; i++) {
75
- out += chevronLeft(segs[i - 1] ?? null, segs[i]!);
67
+ out += chevronLeft(segs[i - 1], segs[i]!);
76
68
  out += paint(segs[i]!);
77
69
  }
78
70
  return out;
79
71
  }
80
72
 
81
73
  export function groupWidth(segs: readonly Segment[]): number {
82
- let w = 0;
83
- for (const s of segs) {
84
- w += visibleWidth(s.text) + 3;
85
- }
86
- return w;
74
+ return segs.reduce((w, s) => w + visibleWidth(s.text) + 3, 0);
87
75
  }
@@ -32,7 +32,7 @@ export async function menuItems(): Promise<SettingItem[]> {
32
32
  }));
33
33
  }
34
34
 
35
- export function createToggleMenu(
35
+ function createToggleMenu(
36
36
  items: SettingItem[],
37
37
  onToggle: (name: PimExtensionName, disabled: boolean) => void,
38
38
  done: () => void
@@ -13,7 +13,7 @@ import { WriteMark } from "#core/session/WriteMark";
13
13
 
14
14
  const POLL_MS = 2_000;
15
15
 
16
- /** Survives the extension instance: `switchSession` re-runs every factory. */
16
+ /** Module-level because `switchSession` re-runs every factory. */
17
17
  let carried: { readonly path: string; readonly text: string } | undefined;
18
18
 
19
19
  function isForeign(record: LeaseRecord | undefined): record is LeaseRecord {
@@ -53,11 +53,11 @@ export default function (pi: ExtensionAPI): void {
53
53
  return await WriteMark.of(log, manager);
54
54
  };
55
55
 
56
- /** Absorb our own appends and a rename we can carry on without; anything else is another surface writing this session. */
56
+ /** Marks the session stale when another surface wrote it; our own appends and benign renames are absorbed. */
57
57
  const reconcile = async (): Promise<void> => {
58
58
  const current = log;
59
59
  const next = await measure();
60
- // Staleness only clears by re-anchoring, and re-deciding it costs a whole read.
60
+ // Only `anchor()` clears staleness.
61
61
  if (stale || current === undefined || next === undefined) {
62
62
  return;
63
63
  }
@@ -71,7 +71,6 @@ export default function (pi: ExtensionAPI): void {
71
71
  mark = next;
72
72
  };
73
73
 
74
- /** Whatever the file says right now is the truth pi was opened on. */
75
74
  const anchor = async (): Promise<void> => {
76
75
  mark = (await measure()) ?? WriteMark.UNREAD;
77
76
  stale = false;
@@ -95,7 +94,7 @@ export default function (pi: ExtensionAPI): void {
95
94
  }
96
95
  };
97
96
 
98
- // Idle only: during our own turn every append is ours and the lease is held.
97
+ // Idle only: during our own turn we hold the lease.
99
98
  const startIdleWatch = (): void => {
100
99
  stopIdleWatch();
101
100
  const current = path;
@@ -233,7 +232,7 @@ export default function (pi: ExtensionAPI): void {
233
232
  return;
234
233
  }
235
234
  try {
236
- // Reopening repairs a torn tail and rewrites on migration, so hold the lease over it.
235
+ // Reopening may rewrite the file, so hold the lease.
237
236
  await SessionLease.hold(
238
237
  current,
239
238
  "tui",
@@ -63,8 +63,7 @@ export default function (pi: ExtensionAPI): void {
63
63
  ctx.ui.setWidget(FINAL_WIDGET_ID, [ctx.ui.theme.fg("muted", message)]);
64
64
  });
65
65
 
66
- // Not redundant with `session_shutdown`: that is process exit, and a new chat or `/resume`
67
- // swaps the conversation under the widget without it.
66
+ // A new chat or `/resume` swaps the session without `session_shutdown`.
68
67
  pi.on("session_before_switch", (_event, ctx) => {
69
68
  clear(ctx);
70
69
  });
@@ -5,13 +5,13 @@ const PI_COMMANDS: ReadonlySet<string> = new Set([
5
5
  "config",
6
6
  "install",
7
7
  "list",
8
+ "mcp",
8
9
  "remove",
9
10
  "server",
10
11
  "uninstall",
11
12
  "update",
12
13
  ]);
13
14
 
14
- /** Per-run `--theme` args: the only channel early enough for pim's themes to resolve. */
15
15
  export function themeCliArgs(argv: readonly string[]): readonly string[] {
16
16
  if (PI_COMMANDS.has(argv[0] ?? "")) {
17
17
  return [];
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-nQaTP3VY.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-DF7hQfMh.js";import"./chunk-O7XYJQB3-ZHvBmBO-.js";import{n as i,r as a,t as o}from"./chunk-GTNCS2PH-DG2b2LYE.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-Cz05yTZh.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-DNffyJJA.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-gnv7pJ1z.js";import"./chunk-O7XYJQB3-B6uOn9iS.js";import{n as i,r as a,t as o}from"./chunk-GTNCS2PH-PqY_YoS0.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-Cz3vJeQG.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -1 +1 @@
1
- import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-BddGOpie.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
1
+ import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-DlZpcyc2.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-FOHPRMQF-CoA4358r.js";import{M as e}from"./mermaid-parser.core-DNffyJJA.js";export{e as createArchitectureServices};