@zythum02/fello-server 0.1.48 → 0.1.49

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 (217) hide show
  1. package/out/renderer/assets/{_baseUniq-D023PlQD.js → _baseUniq-jsNn2Q0s.js} +1 -1
  2. package/out/renderer/assets/_baseUniq-jsNn2Q0s.js.br +0 -0
  3. package/out/renderer/assets/_baseUniq-jsNn2Q0s.js.gz +0 -0
  4. package/out/renderer/assets/{arc-Bgp6YWjh.js → arc-CZMdjunT.js} +1 -1
  5. package/out/renderer/assets/arc-CZMdjunT.js.br +0 -0
  6. package/out/renderer/assets/arc-CZMdjunT.js.gz +0 -0
  7. package/out/renderer/assets/{architectureDiagram-Q4EWVU46-B40mk-XJ.js → architectureDiagram-Q4EWVU46-BNFtPc1v.js} +5 -5
  8. package/out/renderer/assets/architectureDiagram-Q4EWVU46-BNFtPc1v.js.br +0 -0
  9. package/out/renderer/assets/architectureDiagram-Q4EWVU46-BNFtPc1v.js.gz +0 -0
  10. package/out/renderer/assets/{blockDiagram-DXYQGD6D-BBdankH4.js → blockDiagram-DXYQGD6D-CPK2QuaJ.js} +6 -6
  11. package/out/renderer/assets/blockDiagram-DXYQGD6D-CPK2QuaJ.js.br +0 -0
  12. package/out/renderer/assets/blockDiagram-DXYQGD6D-CPK2QuaJ.js.gz +0 -0
  13. package/out/renderer/assets/{c4Diagram-AHTNJAMY-BfRmGEJy.js → c4Diagram-AHTNJAMY-DLQf0xBh.js} +2 -2
  14. package/out/renderer/assets/c4Diagram-AHTNJAMY-DLQf0xBh.js.br +0 -0
  15. package/out/renderer/assets/c4Diagram-AHTNJAMY-DLQf0xBh.js.gz +0 -0
  16. package/out/renderer/assets/{channel-CHGPt1xL.js → channel-sFWrTS52.js} +1 -1
  17. package/out/renderer/assets/{chunk-4BX2VUAB-Dbg5pk8D.js → chunk-4BX2VUAB-CUoBhtu2.js} +1 -1
  18. package/out/renderer/assets/{chunk-4TB4RGXK-CBjV8oAS.js → chunk-4TB4RGXK-CRjlV65P.js} +5 -5
  19. package/out/renderer/assets/chunk-4TB4RGXK-CRjlV65P.js.br +0 -0
  20. package/out/renderer/assets/chunk-4TB4RGXK-CRjlV65P.js.gz +0 -0
  21. package/out/renderer/assets/{chunk-55IACEB6-_eYsto3b.js → chunk-55IACEB6-zrgWErN1.js} +1 -1
  22. package/out/renderer/assets/{chunk-EDXVE4YY-DaXCRd0a.js → chunk-EDXVE4YY-B5b9dJFI.js} +1 -1
  23. package/out/renderer/assets/chunk-EDXVE4YY-B5b9dJFI.js.br +0 -0
  24. package/out/renderer/assets/chunk-EDXVE4YY-B5b9dJFI.js.gz +0 -0
  25. package/out/renderer/assets/{chunk-FMBD7UC4-BwtLRaQu.js → chunk-FMBD7UC4-Bb0FhBnd.js} +1 -1
  26. package/out/renderer/assets/{chunk-OYMX7WX6-h3hRYV_y.js → chunk-OYMX7WX6-CkUp0SL9.js} +3 -3
  27. package/out/renderer/assets/chunk-OYMX7WX6-CkUp0SL9.js.br +0 -0
  28. package/out/renderer/assets/chunk-OYMX7WX6-CkUp0SL9.js.gz +0 -0
  29. package/out/renderer/assets/{chunk-QZHKN3VN-DUU1c_qe.js → chunk-QZHKN3VN-Bqt7zsAR.js} +1 -1
  30. package/out/renderer/assets/{chunk-YZCP3GAM-fw4tpwlW.js → chunk-YZCP3GAM-Crg82fz2.js} +1 -1
  31. package/out/renderer/assets/chunk-YZCP3GAM-Crg82fz2.js.br +0 -0
  32. package/out/renderer/assets/chunk-YZCP3GAM-Crg82fz2.js.gz +0 -0
  33. package/out/renderer/assets/{classDiagram-6PBFFD2Q-ql_64jJs.js → classDiagram-6PBFFD2Q-BInpfZnW.js} +6 -6
  34. package/out/renderer/assets/{classDiagram-v2-HSJHXN6E-ql_64jJs.js → classDiagram-v2-HSJHXN6E-BInpfZnW.js} +6 -6
  35. package/out/renderer/assets/{clone-DZQhm3qm.js → clone-Brsdp_jq.js} +1 -1
  36. package/out/renderer/assets/{cose-bilkent-S5V4N54A-Bjtibz95.js → cose-bilkent-S5V4N54A-CH_2zOJR.js} +1 -1
  37. package/out/renderer/assets/cose-bilkent-S5V4N54A-CH_2zOJR.js.br +0 -0
  38. package/out/renderer/assets/cose-bilkent-S5V4N54A-CH_2zOJR.js.gz +0 -0
  39. package/out/renderer/assets/{dagre-KV5264BT-DW9CSFRI.js → dagre-KV5264BT-H1wB7v-Q.js} +6 -6
  40. package/out/renderer/assets/dagre-KV5264BT-H1wB7v-Q.js.br +0 -0
  41. package/out/renderer/assets/dagre-KV5264BT-H1wB7v-Q.js.gz +0 -0
  42. package/out/renderer/assets/{diagram-5BDNPKRD-Dptg-C7O.js → diagram-5BDNPKRD-D9VV_-Xi.js} +6 -6
  43. package/out/renderer/assets/diagram-5BDNPKRD-D9VV_-Xi.js.br +0 -0
  44. package/out/renderer/assets/diagram-5BDNPKRD-D9VV_-Xi.js.gz +0 -0
  45. package/out/renderer/assets/{diagram-G4DWMVQ6-CX-JVWk7.js → diagram-G4DWMVQ6-CfRglPBg.js} +6 -6
  46. package/out/renderer/assets/diagram-G4DWMVQ6-CfRglPBg.js.br +0 -0
  47. package/out/renderer/assets/diagram-G4DWMVQ6-CfRglPBg.js.gz +0 -0
  48. package/out/renderer/assets/{diagram-MMDJMWI5-DUDbXS-d.js → diagram-MMDJMWI5-BnwRyNpR.js} +5 -5
  49. package/out/renderer/assets/diagram-MMDJMWI5-BnwRyNpR.js.br +0 -0
  50. package/out/renderer/assets/diagram-MMDJMWI5-BnwRyNpR.js.gz +0 -0
  51. package/out/renderer/assets/{diagram-TYMM5635-9K0cZf20.js → diagram-TYMM5635-BKn_5Ga7.js} +5 -5
  52. package/out/renderer/assets/diagram-TYMM5635-BKn_5Ga7.js.br +0 -0
  53. package/out/renderer/assets/diagram-TYMM5635-BKn_5Ga7.js.gz +0 -0
  54. package/out/renderer/assets/{erDiagram-SMLLAGMA-DaVqqCcL.js → erDiagram-SMLLAGMA-B35CLzqQ.js} +4 -4
  55. package/out/renderer/assets/erDiagram-SMLLAGMA-B35CLzqQ.js.br +0 -0
  56. package/out/renderer/assets/erDiagram-SMLLAGMA-B35CLzqQ.js.gz +0 -0
  57. package/out/renderer/assets/{flowDiagram-DWJPFMVM-BrHGujcg.js → flowDiagram-DWJPFMVM-BidIy8zc.js} +6 -6
  58. package/out/renderer/assets/flowDiagram-DWJPFMVM-BidIy8zc.js.br +0 -0
  59. package/out/renderer/assets/flowDiagram-DWJPFMVM-BidIy8zc.js.gz +0 -0
  60. package/out/renderer/assets/{ganttDiagram-T4ZO3ILL-D9tlSXpr.js → ganttDiagram-T4ZO3ILL-CqV1ei6S.js} +2 -2
  61. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CqV1ei6S.js.br +0 -0
  62. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-CqV1ei6S.js.gz +0 -0
  63. package/out/renderer/assets/{gitGraphDiagram-UUTBAWPF-dFtBMZmH.js → gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js} +6 -6
  64. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js.br +0 -0
  65. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-7wQ8gKPV.js.gz +0 -0
  66. package/out/renderer/assets/{graph-CNmSjTZd.js → graph-Ck9_bXv5.js} +2 -2
  67. package/out/renderer/assets/graph-Ck9_bXv5.js.br +0 -0
  68. package/out/renderer/assets/graph-Ck9_bXv5.js.gz +0 -0
  69. package/out/renderer/assets/{highlighted-body-OFNGDK62-EglK-D82.js → highlighted-body-OFNGDK62-gS-2OBX1.js} +1 -1
  70. package/out/renderer/assets/{index-BwSaFLCv.css → index-BtjFxpR5.css} +1 -1
  71. package/out/renderer/assets/index-BtjFxpR5.css.br +0 -0
  72. package/out/renderer/assets/index-BtjFxpR5.css.gz +0 -0
  73. package/out/renderer/assets/{index-BuO0MTa-.js → index-Cy_TZSUE.js} +811 -801
  74. package/out/renderer/assets/index-Cy_TZSUE.js.br +0 -0
  75. package/out/renderer/assets/index-Cy_TZSUE.js.gz +0 -0
  76. package/out/renderer/assets/{infoDiagram-42DDH7IO-CwoWvadJ.js → infoDiagram-42DDH7IO-DlKxzT4w.js} +4 -4
  77. package/out/renderer/assets/{ishikawaDiagram-UXIWVN3A-9MhN_EF5.js → ishikawaDiagram-UXIWVN3A-DmOMlIE8.js} +1 -1
  78. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-DmOMlIE8.js.br +0 -0
  79. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-DmOMlIE8.js.gz +0 -0
  80. package/out/renderer/assets/{journeyDiagram-VCZTEJTY-BwKJh5pl.js → journeyDiagram-VCZTEJTY-CYRPGJN7.js} +4 -4
  81. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CYRPGJN7.js.br +0 -0
  82. package/out/renderer/assets/journeyDiagram-VCZTEJTY-CYRPGJN7.js.gz +0 -0
  83. package/out/renderer/assets/{kanban-definition-6JOO6SKY-uDhuFOXv.js → kanban-definition-6JOO6SKY-Dovb_i6Z.js} +2 -2
  84. package/out/renderer/assets/kanban-definition-6JOO6SKY-Dovb_i6Z.js.br +0 -0
  85. package/out/renderer/assets/kanban-definition-6JOO6SKY-Dovb_i6Z.js.gz +0 -0
  86. package/out/renderer/assets/{layout-C7Mg2ajy.js → layout-BUs47sjz.js} +4 -4
  87. package/out/renderer/assets/layout-BUs47sjz.js.br +0 -0
  88. package/out/renderer/assets/layout-BUs47sjz.js.gz +0 -0
  89. package/out/renderer/assets/{linear-CkQXAw4A.js → linear-CO24wS_v.js} +1 -1
  90. package/out/renderer/assets/linear-CO24wS_v.js.br +0 -0
  91. package/out/renderer/assets/linear-CO24wS_v.js.gz +0 -0
  92. package/out/renderer/assets/{min-DRTvcNIL.js → min-Dd_ATNHv.js} +2 -2
  93. package/out/renderer/assets/min-Dd_ATNHv.js.br +0 -0
  94. package/out/renderer/assets/min-Dd_ATNHv.js.gz +0 -0
  95. package/out/renderer/assets/{mindmap-definition-QFDTVHPH-_8DjK16S.js → mindmap-definition-QFDTVHPH-CC3W7LA-.js} +3 -3
  96. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CC3W7LA-.js.br +0 -0
  97. package/out/renderer/assets/mindmap-definition-QFDTVHPH-CC3W7LA-.js.gz +0 -0
  98. package/out/renderer/assets/{pieDiagram-DEJITSTG-owvRXepN.js → pieDiagram-DEJITSTG-BN6Ummnw.js} +6 -6
  99. package/out/renderer/assets/pieDiagram-DEJITSTG-BN6Ummnw.js.br +0 -0
  100. package/out/renderer/assets/pieDiagram-DEJITSTG-BN6Ummnw.js.gz +0 -0
  101. package/out/renderer/assets/{quadrantDiagram-34T5L4WZ-C9LRroTe.js → quadrantDiagram-34T5L4WZ-DTE_dLJv.js} +2 -2
  102. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-DTE_dLJv.js.br +0 -0
  103. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-DTE_dLJv.js.gz +0 -0
  104. package/out/renderer/assets/{requirementDiagram-MS252O5E-Ds_36REQ.js → requirementDiagram-MS252O5E-DVDS2RYN.js} +3 -3
  105. package/out/renderer/assets/requirementDiagram-MS252O5E-DVDS2RYN.js.br +0 -0
  106. package/out/renderer/assets/requirementDiagram-MS252O5E-DVDS2RYN.js.gz +0 -0
  107. package/out/renderer/assets/{sankeyDiagram-XADWPNL6-6HuBoz3Q.js → sankeyDiagram-XADWPNL6-D4_LywJM.js} +1 -1
  108. package/out/renderer/assets/sankeyDiagram-XADWPNL6-D4_LywJM.js.br +0 -0
  109. package/out/renderer/assets/sankeyDiagram-XADWPNL6-D4_LywJM.js.gz +0 -0
  110. package/out/renderer/assets/{sequenceDiagram-FGHM5R23-BdGUPHNX.js → sequenceDiagram-FGHM5R23-89GBJZmd.js} +3 -3
  111. package/out/renderer/assets/sequenceDiagram-FGHM5R23-89GBJZmd.js.br +0 -0
  112. package/out/renderer/assets/sequenceDiagram-FGHM5R23-89GBJZmd.js.gz +0 -0
  113. package/out/renderer/assets/{stateDiagram-FHFEXIEX-CruNLY-0.js → stateDiagram-FHFEXIEX-YKrUbogP.js} +8 -8
  114. package/out/renderer/assets/stateDiagram-FHFEXIEX-YKrUbogP.js.br +0 -0
  115. package/out/renderer/assets/stateDiagram-FHFEXIEX-YKrUbogP.js.gz +0 -0
  116. package/out/renderer/assets/{stateDiagram-v2-QKLJ7IA2-CfBaNTRC.js → stateDiagram-v2-QKLJ7IA2-CO0pZRqI.js} +4 -4
  117. package/out/renderer/assets/{timeline-definition-GMOUNBTQ-CHPlJ2ZI.js → timeline-definition-GMOUNBTQ-BW2oxhj-.js} +2 -2
  118. package/out/renderer/assets/timeline-definition-GMOUNBTQ-BW2oxhj-.js.br +0 -0
  119. package/out/renderer/assets/timeline-definition-GMOUNBTQ-BW2oxhj-.js.gz +0 -0
  120. package/out/renderer/assets/{vennDiagram-DHZGUBPP-DMdQtt7i.js → vennDiagram-DHZGUBPP-DSy9zL6k.js} +1 -1
  121. package/out/renderer/assets/vennDiagram-DHZGUBPP-DSy9zL6k.js.br +0 -0
  122. package/out/renderer/assets/vennDiagram-DHZGUBPP-DSy9zL6k.js.gz +0 -0
  123. package/out/renderer/assets/{wardley-RL74JXVD-HjjY3yRY.js → wardley-RL74JXVD-DFRGDO55.js} +3 -3
  124. package/out/renderer/assets/wardley-RL74JXVD-DFRGDO55.js.br +0 -0
  125. package/out/renderer/assets/wardley-RL74JXVD-DFRGDO55.js.gz +0 -0
  126. package/out/renderer/assets/{wardleyDiagram-NUSXRM2D-BI-3rQpv.js → wardleyDiagram-NUSXRM2D-CJUPdnii.js} +5 -5
  127. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-CJUPdnii.js.br +0 -0
  128. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-CJUPdnii.js.gz +0 -0
  129. package/out/renderer/assets/{xychartDiagram-5P7HB3ND-Bzj4rKGX.js → xychartDiagram-5P7HB3ND-UGlSGsDE.js} +2 -2
  130. package/out/renderer/assets/xychartDiagram-5P7HB3ND-UGlSGsDE.js.br +0 -0
  131. package/out/renderer/assets/xychartDiagram-5P7HB3ND-UGlSGsDE.js.gz +0 -0
  132. package/out/renderer/index.html +2 -2
  133. package/out/renderer/index.html.br +0 -0
  134. package/out/renderer/index.html.gz +0 -0
  135. package/out/scripts/mcp-search/server.mjs +46 -46
  136. package/out/server/main.js +226 -125
  137. package/package.json +2 -1
  138. package/out/renderer/assets/_baseUniq-D023PlQD.js.br +0 -0
  139. package/out/renderer/assets/_baseUniq-D023PlQD.js.gz +0 -0
  140. package/out/renderer/assets/arc-Bgp6YWjh.js.br +0 -0
  141. package/out/renderer/assets/arc-Bgp6YWjh.js.gz +0 -0
  142. package/out/renderer/assets/architectureDiagram-Q4EWVU46-B40mk-XJ.js.br +0 -0
  143. package/out/renderer/assets/architectureDiagram-Q4EWVU46-B40mk-XJ.js.gz +0 -0
  144. package/out/renderer/assets/blockDiagram-DXYQGD6D-BBdankH4.js.br +0 -0
  145. package/out/renderer/assets/blockDiagram-DXYQGD6D-BBdankH4.js.gz +0 -0
  146. package/out/renderer/assets/c4Diagram-AHTNJAMY-BfRmGEJy.js.br +0 -0
  147. package/out/renderer/assets/c4Diagram-AHTNJAMY-BfRmGEJy.js.gz +0 -0
  148. package/out/renderer/assets/chunk-4TB4RGXK-CBjV8oAS.js.br +0 -0
  149. package/out/renderer/assets/chunk-4TB4RGXK-CBjV8oAS.js.gz +0 -0
  150. package/out/renderer/assets/chunk-EDXVE4YY-DaXCRd0a.js.br +0 -0
  151. package/out/renderer/assets/chunk-EDXVE4YY-DaXCRd0a.js.gz +0 -0
  152. package/out/renderer/assets/chunk-OYMX7WX6-h3hRYV_y.js.br +0 -0
  153. package/out/renderer/assets/chunk-OYMX7WX6-h3hRYV_y.js.gz +0 -0
  154. package/out/renderer/assets/chunk-YZCP3GAM-fw4tpwlW.js.br +0 -0
  155. package/out/renderer/assets/chunk-YZCP3GAM-fw4tpwlW.js.gz +0 -0
  156. package/out/renderer/assets/cose-bilkent-S5V4N54A-Bjtibz95.js.br +0 -0
  157. package/out/renderer/assets/cose-bilkent-S5V4N54A-Bjtibz95.js.gz +0 -0
  158. package/out/renderer/assets/dagre-KV5264BT-DW9CSFRI.js.br +0 -0
  159. package/out/renderer/assets/dagre-KV5264BT-DW9CSFRI.js.gz +0 -0
  160. package/out/renderer/assets/diagram-5BDNPKRD-Dptg-C7O.js.br +0 -0
  161. package/out/renderer/assets/diagram-5BDNPKRD-Dptg-C7O.js.gz +0 -0
  162. package/out/renderer/assets/diagram-G4DWMVQ6-CX-JVWk7.js.br +0 -0
  163. package/out/renderer/assets/diagram-G4DWMVQ6-CX-JVWk7.js.gz +0 -0
  164. package/out/renderer/assets/diagram-MMDJMWI5-DUDbXS-d.js.br +0 -0
  165. package/out/renderer/assets/diagram-MMDJMWI5-DUDbXS-d.js.gz +0 -0
  166. package/out/renderer/assets/diagram-TYMM5635-9K0cZf20.js.br +0 -0
  167. package/out/renderer/assets/diagram-TYMM5635-9K0cZf20.js.gz +0 -0
  168. package/out/renderer/assets/erDiagram-SMLLAGMA-DaVqqCcL.js.br +0 -0
  169. package/out/renderer/assets/erDiagram-SMLLAGMA-DaVqqCcL.js.gz +0 -0
  170. package/out/renderer/assets/flowDiagram-DWJPFMVM-BrHGujcg.js.br +0 -0
  171. package/out/renderer/assets/flowDiagram-DWJPFMVM-BrHGujcg.js.gz +0 -0
  172. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-D9tlSXpr.js.br +0 -0
  173. package/out/renderer/assets/ganttDiagram-T4ZO3ILL-D9tlSXpr.js.gz +0 -0
  174. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-dFtBMZmH.js.br +0 -0
  175. package/out/renderer/assets/gitGraphDiagram-UUTBAWPF-dFtBMZmH.js.gz +0 -0
  176. package/out/renderer/assets/graph-CNmSjTZd.js.br +0 -0
  177. package/out/renderer/assets/graph-CNmSjTZd.js.gz +0 -0
  178. package/out/renderer/assets/index-BuO0MTa-.js.br +0 -0
  179. package/out/renderer/assets/index-BuO0MTa-.js.gz +0 -0
  180. package/out/renderer/assets/index-BwSaFLCv.css.br +0 -0
  181. package/out/renderer/assets/index-BwSaFLCv.css.gz +0 -0
  182. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-9MhN_EF5.js.br +0 -0
  183. package/out/renderer/assets/ishikawaDiagram-UXIWVN3A-9MhN_EF5.js.gz +0 -0
  184. package/out/renderer/assets/journeyDiagram-VCZTEJTY-BwKJh5pl.js.br +0 -0
  185. package/out/renderer/assets/journeyDiagram-VCZTEJTY-BwKJh5pl.js.gz +0 -0
  186. package/out/renderer/assets/kanban-definition-6JOO6SKY-uDhuFOXv.js.br +0 -0
  187. package/out/renderer/assets/kanban-definition-6JOO6SKY-uDhuFOXv.js.gz +0 -0
  188. package/out/renderer/assets/layout-C7Mg2ajy.js.br +0 -0
  189. package/out/renderer/assets/layout-C7Mg2ajy.js.gz +0 -0
  190. package/out/renderer/assets/linear-CkQXAw4A.js.br +0 -0
  191. package/out/renderer/assets/linear-CkQXAw4A.js.gz +0 -0
  192. package/out/renderer/assets/min-DRTvcNIL.js.br +0 -0
  193. package/out/renderer/assets/min-DRTvcNIL.js.gz +0 -0
  194. package/out/renderer/assets/mindmap-definition-QFDTVHPH-_8DjK16S.js.br +0 -0
  195. package/out/renderer/assets/mindmap-definition-QFDTVHPH-_8DjK16S.js.gz +0 -0
  196. package/out/renderer/assets/pieDiagram-DEJITSTG-owvRXepN.js.br +0 -0
  197. package/out/renderer/assets/pieDiagram-DEJITSTG-owvRXepN.js.gz +0 -0
  198. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-C9LRroTe.js.br +0 -0
  199. package/out/renderer/assets/quadrantDiagram-34T5L4WZ-C9LRroTe.js.gz +0 -0
  200. package/out/renderer/assets/requirementDiagram-MS252O5E-Ds_36REQ.js.br +0 -0
  201. package/out/renderer/assets/requirementDiagram-MS252O5E-Ds_36REQ.js.gz +0 -0
  202. package/out/renderer/assets/sankeyDiagram-XADWPNL6-6HuBoz3Q.js.br +0 -0
  203. package/out/renderer/assets/sankeyDiagram-XADWPNL6-6HuBoz3Q.js.gz +0 -0
  204. package/out/renderer/assets/sequenceDiagram-FGHM5R23-BdGUPHNX.js.br +0 -0
  205. package/out/renderer/assets/sequenceDiagram-FGHM5R23-BdGUPHNX.js.gz +0 -0
  206. package/out/renderer/assets/stateDiagram-FHFEXIEX-CruNLY-0.js.br +0 -0
  207. package/out/renderer/assets/stateDiagram-FHFEXIEX-CruNLY-0.js.gz +0 -0
  208. package/out/renderer/assets/timeline-definition-GMOUNBTQ-CHPlJ2ZI.js.br +0 -0
  209. package/out/renderer/assets/timeline-definition-GMOUNBTQ-CHPlJ2ZI.js.gz +0 -0
  210. package/out/renderer/assets/vennDiagram-DHZGUBPP-DMdQtt7i.js.br +0 -0
  211. package/out/renderer/assets/vennDiagram-DHZGUBPP-DMdQtt7i.js.gz +0 -0
  212. package/out/renderer/assets/wardley-RL74JXVD-HjjY3yRY.js.br +0 -0
  213. package/out/renderer/assets/wardley-RL74JXVD-HjjY3yRY.js.gz +0 -0
  214. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BI-3rQpv.js.br +0 -0
  215. package/out/renderer/assets/wardleyDiagram-NUSXRM2D-BI-3rQpv.js.gz +0 -0
  216. package/out/renderer/assets/xychartDiagram-5P7HB3ND-Bzj4rKGX.js.br +0 -0
  217. package/out/renderer/assets/xychartDiagram-5P7HB3ND-Bzj4rKGX.js.gz +0 -0
@@ -1800,11 +1800,11 @@ function createWebUIModule() {
1800
1800
  }
1801
1801
  });
1802
1802
  });
1803
- return new Promise((resolve8, reject) => {
1803
+ return new Promise((resolve9, reject) => {
1804
1804
  const listenPort = options?.port && options.port > 0 ? options.port : 0;
1805
1805
  httpServer.listen(listenPort, "0.0.0.0", () => {
1806
1806
  isEnabled = true;
1807
- resolve8({ url: getWebUIUrl(httpServer.address()) });
1807
+ resolve9({ url: getWebUIUrl(httpServer.address()) });
1808
1808
  });
1809
1809
  httpServer.on("error", reject);
1810
1810
  });
@@ -2189,7 +2189,7 @@ import { join as join12 } from "path";
2189
2189
 
2190
2190
  // src/shared/zod/mcp-search-schema.ts
2191
2191
  import { z } from "zod";
2192
- var searchRequestSchema = z.object({
2192
+ var grepRequestSchema = z.object({
2193
2193
  pattern: z.string().describe("Search pattern (literal text by default, set regex=true for regex)."),
2194
2194
  path: z.string().describe(
2195
2195
  "Directory or file(s) to search. Accepts: relative path (relative to project root), absolute path (POSIX or Windows), or file:// URI."
@@ -2204,20 +2204,10 @@ var searchRequestSchema = z.object({
2204
2204
  invertMatch: z.boolean().optional().describe("Show lines that do NOT match the pattern (-v)."),
2205
2205
  wordMatch: z.boolean().optional().describe("Only match whole words (-w).")
2206
2206
  });
2207
- var searchRespondSchema = z.object({
2207
+ var grepRespondSchema = z.object({
2208
2208
  output: z.string(),
2209
2209
  code: z.number()
2210
2210
  });
2211
- var rgRequestSchema = z.object({
2212
- args: z.array(z.string()).describe(
2213
- "Raw ripgrep CLI arguments (e.g. ['-i', 'pattern', 'src/']). The pattern and path are included in this array."
2214
- )
2215
- });
2216
- var rgRespondSchema = z.object({
2217
- output: z.string(),
2218
- code: z.number(),
2219
- stderr: z.string().optional()
2220
- });
2221
2211
  var fileOutlineRequestSchema = z.object({
2222
2212
  path: z.string().describe(
2223
2213
  "File path to analyze. Accepts: relative path (relative to project root), absolute path (POSIX or Windows), or file:// URI."
@@ -2226,6 +2216,20 @@ var fileOutlineRequestSchema = z.object({
2226
2216
  var fileOutlineRespondSchema = z.object({
2227
2217
  outline: z.string().describe("Structural outline of the file in text format.")
2228
2218
  });
2219
+ var globRequestSchema = z.object({
2220
+ pattern: z.string().describe("Glob pattern, e.g. '**/*.rs', 'src/**/*.{ts,tsx}'."),
2221
+ path: z.string().optional().describe("Root directory to search from. Defaults to project root."),
2222
+ limit: z.number().int().positive().optional().describe("Maximum number of results to return."),
2223
+ maxDepth: z.number().int().positive().optional().describe("Maximum directory depth to traverse."),
2224
+ dot: z.boolean().optional().describe("Include dotfiles (hidden files/directories). Default: false."),
2225
+ onlyFiles: z.boolean().optional().describe("Only match files, not directories. Default: false (includes directories)."),
2226
+ gitignore: z.boolean().optional().describe("Respect .gitignore patterns. Default: true.")
2227
+ });
2228
+ var globRespondSchema = z.object({
2229
+ filePaths: z.array(z.string()),
2230
+ totalFiles: z.number(),
2231
+ truncated: z.boolean()
2232
+ });
2229
2233
 
2230
2234
  // src/backend/search/file-outline.ts
2231
2235
  import { extname, join as join10, isAbsolute as isAbsolute4, resolve as resolve3, relative as relative5 } from "path";
@@ -2648,7 +2652,7 @@ var LANGUAGES = [
2648
2652
  }
2649
2653
  ];
2650
2654
  async function parseInChild(filePath, config, cwd, timeout = 3e4) {
2651
- return new Promise((resolve8, reject) => {
2655
+ return new Promise((resolve9, reject) => {
2652
2656
  const modulePath = join10(process.scriptsPath, "/worker-file-outline/worker.mjs");
2653
2657
  const child = fork(modulePath, [], { execArgv: [], cwd });
2654
2658
  const timer = setTimeout(() => {
@@ -2657,7 +2661,7 @@ async function parseInChild(filePath, config, cwd, timeout = 3e4) {
2657
2661
  }, timeout);
2658
2662
  child.on("message", (msg) => {
2659
2663
  clearTimeout(timer);
2660
- if (msg.type === "result") resolve8({ symbols: msg.symbols, totalLines: msg.totalLines });
2664
+ if (msg.type === "result") resolve9({ symbols: msg.symbols, totalLines: msg.totalLines });
2661
2665
  else reject(new Error(msg.error));
2662
2666
  });
2663
2667
  child.on("error", (err) => {
@@ -2820,7 +2824,7 @@ import { join as join11, isAbsolute as isAbsolute5, resolve as resolve4, relativ
2820
2824
  import { fileURLToPath as fileURLToPath4 } from "url";
2821
2825
  import { fork as fork2 } from "child_process";
2822
2826
  function ripgrepInChild(args2, cwd, timeout = 3e4) {
2823
- return new Promise((resolve8, reject) => {
2827
+ return new Promise((resolve9, reject) => {
2824
2828
  const child = fork2(join11(process.scriptsPath, "worker-ripgrep/worker.mjs"), [], { cwd });
2825
2829
  const timer = setTimeout(() => {
2826
2830
  child.kill();
@@ -2829,7 +2833,7 @@ function ripgrepInChild(args2, cwd, timeout = 3e4) {
2829
2833
  child.on("message", (msg) => {
2830
2834
  clearTimeout(timer);
2831
2835
  if (msg.type === "error") reject(new Error(msg.error));
2832
- else resolve8({ code: msg.code, stdout: msg.stdout, stderr: msg.stderr });
2836
+ else resolve9({ code: msg.code, stdout: msg.stdout, stderr: msg.stderr });
2833
2837
  });
2834
2838
  child.on("error", (err) => {
2835
2839
  clearTimeout(timer);
@@ -2852,7 +2856,7 @@ function normalizePath2(inputPath, cwd) {
2852
2856
  }
2853
2857
  return resolve4(cwd ?? process.cwd(), inputPath);
2854
2858
  }
2855
- async function search(options) {
2859
+ async function grep(options) {
2856
2860
  const args2 = [];
2857
2861
  args2.push("--heading");
2858
2862
  args2.push("--line-number");
@@ -2874,16 +2878,38 @@ async function search(options) {
2874
2878
  const { code, stdout } = await ripgrepInChild(args2, options.projectDir, options.timeout);
2875
2879
  return { output: stdout || "", code };
2876
2880
  }
2877
- async function rg(options) {
2878
- const { code, stdout, stderr } = await ripgrepInChild(
2879
- options.args,
2880
- options.projectDir,
2881
- options.timeout
2882
- );
2881
+
2882
+ // src/backend/search/glob.ts
2883
+ import { globby } from "globby";
2884
+ import { isAbsolute as isAbsolute6, resolve as resolve5 } from "path";
2885
+ import { fileURLToPath as fileURLToPath5 } from "url";
2886
+ function normalizePath3(inputPath, cwd) {
2887
+ if (inputPath.startsWith("file://")) {
2888
+ return fileURLToPath5(inputPath);
2889
+ }
2890
+ if (isAbsolute6(inputPath)) {
2891
+ return inputPath;
2892
+ }
2893
+ return resolve5(cwd ?? process.cwd(), inputPath);
2894
+ }
2895
+ async function glob(options) {
2896
+ const cwd = options.path ? normalizePath3(options.path, options.projectDir) : options.projectDir;
2897
+ const entries = await globby(options.pattern, {
2898
+ cwd,
2899
+ dot: options.dot ?? false,
2900
+ onlyFiles: options.onlyFiles ?? false,
2901
+ markDirectories: true,
2902
+ gitignore: options.gitignore ?? true,
2903
+ deep: options.maxDepth
2904
+ });
2905
+ entries.sort();
2906
+ const limit = options.limit ?? 500;
2907
+ const truncated = entries.length > limit;
2908
+ const filePaths = truncated ? entries.slice(0, limit) : entries;
2883
2909
  return {
2884
- output: stdout || "",
2885
- code,
2886
- stderr: stderr || void 0
2910
+ filePaths,
2911
+ totalFiles: entries.length,
2912
+ truncated
2887
2913
  };
2888
2914
  }
2889
2915
 
@@ -2892,21 +2918,21 @@ function createSearchModule(_ctx) {
2892
2918
  return { registerSearchRoute, buildSearchMcpServer };
2893
2919
  }
2894
2920
  function registerSearchRoute(server, projectDir) {
2895
- server.registry("search/search", async (payload) => {
2896
- const params = searchRequestSchema.parse(payload);
2897
- const result = await search({ projectDir, ...params });
2898
- return searchRespondSchema.parse(result);
2899
- });
2900
- server.registry("search/rg", async (payload) => {
2901
- const params = rgRequestSchema.parse(payload);
2902
- const result = await rg({ projectDir, ...params });
2903
- return rgRespondSchema.parse(result);
2921
+ server.registry("search/grep", async (payload) => {
2922
+ const params = grepRequestSchema.parse(payload);
2923
+ const result = await grep({ projectDir, ...params });
2924
+ return grepRespondSchema.parse(result);
2904
2925
  });
2905
2926
  server.registry("search/file_outline", async (payload) => {
2906
2927
  const params = fileOutlineRequestSchema.parse(payload);
2907
2928
  const result = await fileOutline({ projectDir, ...params });
2908
2929
  return fileOutlineRespondSchema.parse(result);
2909
2930
  });
2931
+ server.registry("search/glob", async (payload) => {
2932
+ const params = globRequestSchema.parse(payload);
2933
+ const result = await glob({ projectDir, ...params });
2934
+ return globRespondSchema.parse(result);
2935
+ });
2910
2936
  }
2911
2937
  function buildSearchMcpServer(options) {
2912
2938
  return {
@@ -2988,13 +3014,13 @@ function createAskUserModule(ctx, deps) {
2988
3014
  });
2989
3015
  }
2990
3016
  }
2991
- return new Promise((resolve8) => {
3017
+ return new Promise((resolve9) => {
2992
3018
  const timeoutId = setTimeout(() => {
2993
3019
  const pending = pendingRequests.get(askUserId);
2994
3020
  if (pending) {
2995
3021
  pendingRequests.delete(askUserId);
2996
3022
  const response = { value: null, reason: "timeout" };
2997
- resolve8(response);
3023
+ resolve9(response);
2998
3024
  sendEvent("ask-user-response", {
2999
3025
  sessionId,
3000
3026
  askUserId,
@@ -3005,7 +3031,7 @@ function createAskUserModule(ctx, deps) {
3005
3031
  console.warn(`[askUser] timeout fired but no pending request found for ${askUserId}`);
3006
3032
  }
3007
3033
  }, USER_REQUEST_TIMEOUT_MS);
3008
- pendingRequests.set(askUserId, { resolve: resolve8, timeoutId, sessionId, request });
3034
+ pendingRequests.set(askUserId, { resolve: resolve9, timeoutId, sessionId, request });
3009
3035
  });
3010
3036
  }
3011
3037
  async function getPendingAskUserRequests({ sessionId }) {
@@ -3073,8 +3099,8 @@ function createAskUserModule(ctx, deps) {
3073
3099
 
3074
3100
  // src/backend/share-to-user.ts
3075
3101
  import { randomUUID as randomUUID3 } from "crypto";
3076
- import { join as join14 } from "path";
3077
- import { fileURLToPath as fileURLToPath5 } from "url";
3102
+ import { join as join14, relative as relative7, isAbsolute as isAbsolute7 } from "path";
3103
+ import { fileURLToPath as fileURLToPath6 } from "url";
3078
3104
  import { readFile as readFile5, writeFile } from "fs/promises";
3079
3105
  import { existsSync as existsSync6, mkdirSync as mkdirSync6 } from "fs";
3080
3106
  import * as mimeTypes3 from "mime-types";
@@ -3123,23 +3149,29 @@ function createShareToUserModule(ctx, deps) {
3123
3149
  const { sessionId, type, uri, data, name, mimeType } = options;
3124
3150
  const resolvedMimeType = resolveMimeType(name, mimeType);
3125
3151
  if (type === "project" && uri) {
3152
+ const session = storage.getSession(sessionId);
3153
+ if (!session) throw new Error(`Session not found: ${sessionId}`);
3154
+ let projectPath = uri.startsWith("file://") ? fileURLToPath6(uri) : uri;
3155
+ if (isAbsolute7(projectPath)) {
3156
+ const rel = relative7(session.cwd, projectPath);
3157
+ if (!rel.startsWith("..") && !isAbsolute7(rel)) {
3158
+ projectPath = rel;
3159
+ }
3160
+ }
3126
3161
  const ilinkBridge2 = deps.ilink.getBridge();
3127
3162
  const ilinkActiveSessionId2 = deps.ilink.getActiveSessionId();
3128
3163
  if (ilinkBridge2?.isConnected && sessionId === ilinkActiveSessionId2) {
3129
3164
  const toUserId = ilinkBridge2.userId;
3130
3165
  if (toUserId) {
3131
- const session = storage.getSession(sessionId);
3132
- if (session) {
3133
- deps.ilink.appendMediaBuffer({
3134
- filePath: join14(session.cwd, uri),
3135
- name,
3136
- toUserId,
3137
- mimeType: resolvedMimeType
3138
- });
3139
- }
3166
+ deps.ilink.appendMediaBuffer({
3167
+ filePath: join14(session.cwd, projectPath),
3168
+ name,
3169
+ toUserId,
3170
+ mimeType: resolvedMimeType
3171
+ });
3140
3172
  }
3141
3173
  }
3142
- return { name, projectPath: uri, mimeType: resolvedMimeType };
3174
+ return { name, projectPath, mimeType: resolvedMimeType };
3143
3175
  }
3144
3176
  const shareId = randomUUID3();
3145
3177
  const shareDir = storage.sessionShareDir(sessionId);
@@ -3157,7 +3189,7 @@ function createShareToUserModule(ctx, deps) {
3157
3189
  if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.statusText}`);
3158
3190
  buffer = Buffer.from(await response.arrayBuffer());
3159
3191
  } else {
3160
- const sourcePath = uri.startsWith("file://") ? fileURLToPath5(uri) : uri;
3192
+ const sourcePath = uri.startsWith("file://") ? fileURLToPath6(uri) : uri;
3161
3193
  buffer = await readFile5(sourcePath);
3162
3194
  }
3163
3195
  } catch (err) {
@@ -3249,9 +3281,9 @@ function spawnStdioAgent(options) {
3249
3281
  proc.stdin.end();
3250
3282
  } catch {
3251
3283
  }
3252
- await new Promise((resolve8) => {
3284
+ await new Promise((resolve9) => {
3253
3285
  if (proc.exitCode !== null) {
3254
- resolve8();
3286
+ resolve9();
3255
3287
  return;
3256
3288
  }
3257
3289
  let killTimer = null;
@@ -3259,13 +3291,13 @@ function spawnStdioAgent(options) {
3259
3291
  if (killTimer) {
3260
3292
  clearTimeout(killTimer);
3261
3293
  }
3262
- resolve8();
3294
+ resolve9();
3263
3295
  };
3264
3296
  proc.once("exit", onExit);
3265
3297
  killProcessGroup(proc, "SIGTERM");
3266
3298
  killTimer = setTimeout(() => {
3267
3299
  killProcessGroup(proc, "SIGKILL");
3268
- resolve8();
3300
+ resolve9();
3269
3301
  }, 2e3);
3270
3302
  });
3271
3303
  }
@@ -3381,7 +3413,7 @@ var AgentClientProxy = class {
3381
3413
  };
3382
3414
 
3383
3415
  // src/agents/acp-client-tools.ts
3384
- import { resolve as resolve5 } from "path";
3416
+ import { resolve as resolve6 } from "path";
3385
3417
  import { tool } from "ai";
3386
3418
  import { z as z4 } from "zod";
3387
3419
 
@@ -3574,7 +3606,7 @@ Always prefer using line/limit to read specific sections, or use the Search MCP'
3574
3606
  if (!connection) {
3575
3607
  throw new Error("ACP connection is not available.");
3576
3608
  }
3577
- const filename = resolve5(cwd ?? params.cwd, path2);
3609
+ const filename = resolve6(cwd ?? params.cwd, path2);
3578
3610
  let title = `ReadFile ${filename}`;
3579
3611
  if (line || limit) {
3580
3612
  title += `:${line ?? 0}`;
@@ -3681,7 +3713,7 @@ Always prefer using line/limit to read specific sections, or use the Search MCP'
3681
3713
  if (!connection) {
3682
3714
  throw new Error("ACP connection is not available.");
3683
3715
  }
3684
- const filename = resolve5(cwd ?? params.cwd, path2);
3716
+ const filename = resolve6(cwd ?? params.cwd, path2);
3685
3717
  let title = `WriteFile ${filename}`;
3686
3718
  const toolCall = {
3687
3719
  toolCallId,
@@ -3766,7 +3798,7 @@ Use exact string matching for oldText and set replaceAll=true when needed.`,
3766
3798
  if (!connection) {
3767
3799
  throw new Error("ACP connection is not available.");
3768
3800
  }
3769
- const filename = resolve5(cwd ?? params.cwd, path2);
3801
+ const filename = resolve6(cwd ?? params.cwd, path2);
3770
3802
  const title = `EditFile ${filename}`;
3771
3803
  const toolCall = {
3772
3804
  toolCallId,
@@ -3946,8 +3978,8 @@ Avoid destructive commands and prefer deterministic, non-interactive commands.`,
3946
3978
  try {
3947
3979
  const waitPromise = terminal.waitForExit();
3948
3980
  if (timeoutMs) {
3949
- const timeoutPromise = new Promise((resolve8) => {
3950
- setTimeout(() => resolve8(null), timeoutMs);
3981
+ const timeoutPromise = new Promise((resolve9) => {
3982
+ setTimeout(() => resolve9(null), timeoutMs);
3951
3983
  });
3952
3984
  const waitResult = await Promise.race([waitPromise, timeoutPromise]);
3953
3985
  if (waitResult === null) {
@@ -4287,7 +4319,7 @@ function toEnvRecord(env) {
4287
4319
  }
4288
4320
  function inferToolKind(name) {
4289
4321
  const normalized = name.toLowerCase();
4290
- if (normalized.includes("read") || normalized.includes("list") || normalized.includes("search")) {
4322
+ if (normalized.includes("read") || normalized.includes("list") || normalized.includes("search") || normalized.includes("grep") || normalized.includes("glob")) {
4291
4323
  return "read";
4292
4324
  }
4293
4325
  if (normalized.includes("write") || normalized.includes("edit") || normalized.includes("update")) {
@@ -4568,7 +4600,7 @@ Working style:
4568
4600
  File reading & editing strategy:
4569
4601
  - ReadFile will REJECT full reads of files over 100KB. Use line/limit to read specific sections, or set force=true if you genuinely need the full file content (rare).
4570
4602
  - Use the Search MCP's file_outline tool to preview file structure before reading (function/class/interface names with line ranges). Supports TypeScript, JavaScript, TSX, Python, Go, C, C++, Swift, Kotlin, Dart.
4571
- - Use the Search MCP's search tool (structured) or rg tool (raw args) to search file contents instead of reading entire files.
4603
+ - Use the Search MCP's grep tool (structured pattern search) or glob tool (file finder) to search file contents instead of reading entire files.
4572
4604
  - EditFile uses exact string matching (StrReplace style). Use unique surrounding code context in oldText to make matches precise. Set replaceAll=true when you intend to replace all occurrences.
4573
4605
  - You do NOT need to re-read a file after editing it \u2014 the changes are already saved.
4574
4606
 
@@ -4592,7 +4624,7 @@ import { tool as tool3 } from "ai";
4592
4624
  import { z as z6 } from "zod";
4593
4625
 
4594
4626
  // src/agents/image-tools.ts
4595
- import { resolve as resolve6 } from "path";
4627
+ import { resolve as resolve7 } from "path";
4596
4628
  import { readFile as readFile6 } from "fs/promises";
4597
4629
  import mime from "mime-types";
4598
4630
  import { tool as tool2, generateText } from "ai";
@@ -4629,7 +4661,7 @@ Provide a specific query describing what you want to know about the image \u2014
4629
4661
  });
4630
4662
  }
4631
4663
  try {
4632
- const absPath = resolve6(params.cwd, imgPath);
4664
+ const absPath = resolve7(params.cwd, imgPath);
4633
4665
  const buffer = await readFile6(absPath);
4634
4666
  const base64 = buffer.toString("base64");
4635
4667
  const mimeType = mime.lookup(absPath) || "image/png";
@@ -5832,11 +5864,11 @@ var AgentTerminalManager = class {
5832
5864
  if (terminal.isFinished) {
5833
5865
  return { exitCode: terminal.exitCode, signal: terminal.signal };
5834
5866
  }
5835
- return new Promise((resolve8) => {
5867
+ return new Promise((resolve9) => {
5836
5868
  const originalOnExit = terminal.onExit;
5837
5869
  terminal.onExit = (code, signal) => {
5838
5870
  originalOnExit(code, signal);
5839
- resolve8({ exitCode: code, signal });
5871
+ resolve9({ exitCode: code, signal });
5840
5872
  };
5841
5873
  });
5842
5874
  }
@@ -6004,7 +6036,14 @@ var ACPBridge = class {
6004
6036
  }
6005
6037
  async connect() {
6006
6038
  const acpId = this.id;
6007
- const proc = this.options.agentInfo.type === "stdio" ? spawnStdioAgent({ ...this.options.agentInfo, cwd: this.options.cwd }) : this.options.agentInfo.provider === "openai-compatible" ? spawnOpenaiCompatibleApiAgent(this.options.agentInfo) : (() => {
6039
+ const proc = this.options.agentInfo.type === "stdio" ? spawnStdioAgent({
6040
+ ...this.options.agentInfo,
6041
+ cwd: this.options.cwd,
6042
+ env: {
6043
+ ...this.options.agentEnv,
6044
+ ...this.options.agentInfo.env
6045
+ }
6046
+ }) : this.options.agentInfo.provider === "openai-compatible" ? spawnOpenaiCompatibleApiAgent(this.options.agentInfo) : (() => {
6008
6047
  throw new Error(`Unsupported api provider: ${this.options.agentInfo.provider}`);
6009
6048
  })();
6010
6049
  this.process = proc;
@@ -6319,7 +6358,9 @@ var ACPBridge = class {
6319
6358
  }
6320
6359
  async sendPrompt(params) {
6321
6360
  if (!this.connection) throw new Error("Not connected");
6322
- return this.connection.agent.request(methods3.agent.session.prompt, params);
6361
+ const res = await this.connection.agent.request(methods3.agent.session.prompt, params);
6362
+ this.options.onPromptCompleted?.(params.sessionId, res);
6363
+ return res;
6323
6364
  }
6324
6365
  async cancel(params) {
6325
6366
  if (!this.connection) return;
@@ -6378,6 +6419,27 @@ var AcpAdapter = class {
6378
6419
  handleExtNotification(_method, _params, _currentSessionId, _agentId) {
6379
6420
  return [];
6380
6421
  }
6422
+ /**
6423
+ * Agent process env vars to inject when spawning the agent. Protocol-
6424
+ * specific environment needed by the agent process (e.g.
6425
+ * CODEBUDDY_DEFER_TOOL_LOADING for CodeBuddy). Aggregated by
6426
+ * adapters.ts and applied by ACPBridge when spawning a stdio agent;
6427
+ * agent-specific agentInfo.env still takes precedence.
6428
+ */
6429
+ getAgentEnv() {
6430
+ return {};
6431
+ }
6432
+ /**
6433
+ * Called by the bridge when a prompt round completes, with the full
6434
+ * PromptResponse in hand. Adapters that do turn-boundary / replay detection
6435
+ * override this to extract the agent's own protocol-clock timestamp and
6436
+ * freeze the boundary. Default no-op — only protocol-specific adapters
6437
+ * (e.g. CodeBuddy, which stamps PromptResponse._meta with
6438
+ * codebuddy.ai/requestId + timestamp) need it; generic adapters have no
6439
+ * protocol timestamp to work from.
6440
+ */
6441
+ handlePromptCompleted(_sessionId, _res) {
6442
+ }
6381
6443
  // ── State lifecycle (default no-ops) ───────────────────────────────
6382
6444
  rekey(_oldKey, _newKey) {
6383
6445
  }
@@ -6398,22 +6460,46 @@ var CODEBUDDY_STATUS_MAP = {
6398
6460
  var CodebuddyAdapter = class extends AcpAdapter {
6399
6461
  stateMap = /* @__PURE__ */ new Map();
6400
6462
  /**
6401
- * Per-session max _meta.timestamp for content chunks
6402
- * (agent_message_chunk / agent_thought_chunk). Used to detect
6403
- * replayed chunks whose timestamp is earlier than the max seen
6404
- * for the same session. Only content chunks with
6405
- * codebuddy.ai/requestId participate — other notification types
6406
- * (tool_call, session_info_update, etc.) are not tracked.
6463
+ * Per-session turn-boundary timestamp (epoch ms, from the agent's own
6464
+ * protocol clock). Frozen when a prompt completes (via handlePromptCompleted),
6465
+ * so content chunks emitted afterwards with an earlier protocol timestamp
6466
+ * are previous-turn replays. Only CodeBuddy stamps PromptResponse._meta
6467
+ * with a protocol timestamp, so this stays here rather than in the base.
6468
+ */
6469
+ turnBoundaryTs = /* @__PURE__ */ new Map();
6470
+ /**
6471
+ * CodeBuddy spawn env.
6472
+ */
6473
+ getAgentEnv() {
6474
+ return {
6475
+ CODEBUDDY_DEFER_TOOL_LOADING: "0",
6476
+ CODEBUDDY_DISABLE_AUTO_MEMORY: "1"
6477
+ };
6478
+ }
6479
+ /**
6480
+ * Freeze the turn-boundary on prompt completion. Only CodeBuddy stamps the
6481
+ * PromptResponse._meta with codebuddy.ai/requestId + a protocol timestamp,
6482
+ * so this stays here rather than in the generic bridge — the agent's own
6483
+ * clock is the boundary used to drop replayed prior-turn chunks (avoids
6484
+ * timezone / clock-skew issues that wall-clock Date.now() would introduce).
6407
6485
  */
6408
- sessionUpdateTimestamp = /* @__PURE__ */ new Map();
6486
+ handlePromptCompleted(sessionId, res) {
6487
+ const meta = res._meta;
6488
+ if (meta && typeof meta["codebuddy.ai/requestId"] === "string") {
6489
+ const ts = Date.parse(typeof meta["timestamp"] === "string" ? meta["timestamp"] : "");
6490
+ if (!isNaN(ts)) this.turnBoundaryTs.set(sessionId, ts);
6491
+ }
6492
+ }
6409
6493
  /**
6410
6494
  * One unified hook for all notification processing:
6411
6495
  *
6412
- * 1. Replay detection — drop agent_message_chunk / agent_thought_chunk
6413
- * whose _meta.timestamp is earlier than the max seen for the same
6414
- * session. CodeBuddy sometimes re-sends previous responses during
6415
- * a new prompt; these replayed chunks carry original (earlier)
6416
- * timestamps. Only applies to chunks that carry codebuddy.ai/requestId.
6496
+ * 1. Replay detection — the adapter freezes a turn-boundary timestamp in
6497
+ * handlePromptCompleted() when a prompt completes (using the agent's own
6498
+ * protocol clock). Drop agent_message_chunk / agent_thought_chunk whose
6499
+ * _meta.timestamp is earlier than that boundary: CodeBuddy re-broadcasts
6500
+ * the previous turn's messages when a new prompt begins, and those
6501
+ * re-emitted chunks carry the previous turn's (earlier) timestamps. Only
6502
+ * applies to chunks that carry codebuddy.ai/requestId.
6417
6503
  * 2. memberEvent chunk routing — rewrite notification.sessionId from
6418
6504
  * parent to member sessionId (CodeBuddy stamps all member chunks
6419
6505
  * with the parent session).
@@ -6434,13 +6520,10 @@ var CodebuddyAdapter = class extends AcpAdapter {
6434
6520
  if (typeof requestId === "string" && typeof metaTimestamp === "string" && (sessionUpdate === "agent_message_chunk" || sessionUpdate === "agent_thought_chunk")) {
6435
6521
  const ts = Date.parse(metaTimestamp);
6436
6522
  if (!isNaN(ts)) {
6437
- const maxTs = this.sessionUpdateTimestamp.get(currentSessionId);
6438
- if (maxTs !== void 0 && ts < maxTs) {
6523
+ const boundary = this.turnBoundaryTs.get(currentSessionId);
6524
+ if (boundary !== void 0 && ts < boundary) {
6439
6525
  return null;
6440
6526
  }
6441
- if (maxTs === void 0 || ts > maxTs) {
6442
- this.sessionUpdateTimestamp.set(currentSessionId, ts);
6443
- }
6444
6527
  }
6445
6528
  }
6446
6529
  const memberEvent = meta?.["codebuddy.ai/memberEvent"];
@@ -6560,14 +6643,19 @@ var CodebuddyAdapter = class extends AcpAdapter {
6560
6643
  this.stateMap.delete(oldKey);
6561
6644
  this.stateMap.set(newKey, state);
6562
6645
  }
6646
+ const boundary = this.turnBoundaryTs.get(oldKey);
6647
+ if (boundary !== void 0) {
6648
+ this.turnBoundaryTs.delete(oldKey);
6649
+ this.turnBoundaryTs.set(newKey, boundary);
6650
+ }
6563
6651
  }
6564
6652
  cleanup(sessionKey) {
6565
6653
  this.stateMap.delete(sessionKey);
6566
- this.sessionUpdateTimestamp.delete(sessionKey);
6654
+ this.turnBoundaryTs.delete(sessionKey);
6567
6655
  }
6568
6656
  clearAll() {
6569
6657
  this.stateMap.clear();
6570
- this.sessionUpdateTimestamp.clear();
6658
+ this.turnBoundaryTs.clear();
6571
6659
  }
6572
6660
  };
6573
6661
 
@@ -6675,6 +6763,10 @@ var codebuddyAdapter = new CodebuddyAdapter();
6675
6763
  var kiroAdapter = new KiroAdapter();
6676
6764
  var adapters = [codebuddyAdapter, kiroAdapter];
6677
6765
  var extNotificationSpecs = adapters.flatMap((a) => a.extNotificationSpecs);
6766
+ var agentEnv = Object.assign(
6767
+ {},
6768
+ ...adapters.map((a) => a.getAgentEnv())
6769
+ );
6678
6770
 
6679
6771
  // src/backend/agent/resolve-agent-info.ts
6680
6772
  function resolveAgentInfo(agentId) {
@@ -6789,6 +6881,7 @@ function createBridgeConnectModule(ctx, deps) {
6789
6881
  agentInfo,
6790
6882
  cwd,
6791
6883
  extNotificationSpecs,
6884
+ agentEnv,
6792
6885
  onSessionConnect: (connection) => {
6793
6886
  currentSessionId = `${agentId}:${connection.sessionId}`;
6794
6887
  storage.updateSession(currentSessionId, { connectionStatus: "connected" }, false);
@@ -6863,6 +6956,13 @@ function createBridgeConnectModule(ctx, deps) {
6863
6956
  console.error("write terminal output error: ", { sessionId, terminalId, err });
6864
6957
  }
6865
6958
  sendEvent("agent-terminal-output", { sessionId, terminalId, data });
6959
+ },
6960
+ // On prompt completion, hand the full PromptResponse to each adapter so
6961
+ // it can freeze its own turn-boundary (CodeBuddy extracts its protocol
6962
+ // timestamp; other adapters are no-ops).
6963
+ onPromptCompleted: (sessionId, res) => {
6964
+ const key = `${agentId}:${sessionId}`;
6965
+ for (const a of adapters) a.handlePromptCompleted(key, res);
6866
6966
  }
6867
6967
  });
6868
6968
  let newConnectPromise;
@@ -7186,16 +7286,16 @@ import {
7186
7286
  copyFile
7187
7287
  } from "fs/promises";
7188
7288
  import * as mimeTypes4 from "mime-types";
7189
- import { dirname as dirname7, join as join17, relative as relative8, extname as extname2, basename as basename3 } from "path";
7289
+ import { dirname as dirname7, join as join17, relative as relative9, extname as extname2, basename as basename3 } from "path";
7190
7290
 
7191
7291
  // src/backend/project/git-utils.ts
7192
7292
  import { execFile, spawn as spawn3 } from "child_process";
7193
- import { dirname as dirname6, relative as relative7 } from "path";
7293
+ import { dirname as dirname6, relative as relative8 } from "path";
7194
7294
  import { promisify } from "util";
7195
7295
  var execFileAsync = promisify(execFile);
7196
7296
  async function getGitIgnoredPaths(cwd, relPaths) {
7197
7297
  if (relPaths.length === 0) return /* @__PURE__ */ new Set();
7198
- return new Promise((resolve8) => {
7298
+ return new Promise((resolve9) => {
7199
7299
  const child = spawn3("git", ["check-ignore", "-z", "--stdin"], {
7200
7300
  cwd,
7201
7301
  timeout: 3e3,
@@ -7205,19 +7305,19 @@ async function getGitIgnoredPaths(cwd, relPaths) {
7205
7305
  });
7206
7306
  const chunks = [];
7207
7307
  child.stdout.on("data", (chunk) => chunks.push(chunk));
7208
- child.on("error", () => resolve8(/* @__PURE__ */ new Set()));
7308
+ child.on("error", () => resolve9(/* @__PURE__ */ new Set()));
7209
7309
  child.on("close", () => {
7210
7310
  const ignored = /* @__PURE__ */ new Set();
7211
7311
  for (const p of Buffer.concat(chunks).toString("utf8").split("\0")) {
7212
7312
  if (p) ignored.add(toPosixPath(p));
7213
7313
  }
7214
- resolve8(ignored);
7314
+ resolve9(ignored);
7215
7315
  });
7216
7316
  try {
7217
7317
  child.stdin.write(relPaths.join("\0") + "\0");
7218
7318
  child.stdin.end();
7219
7319
  } catch {
7220
- resolve8(/* @__PURE__ */ new Set());
7320
+ resolve9(/* @__PURE__ */ new Set());
7221
7321
  }
7222
7322
  });
7223
7323
  }
@@ -7259,7 +7359,7 @@ async function getGitStatus(cwd) {
7259
7359
  async function readGitHeadFile(targetPath, encoding) {
7260
7360
  try {
7261
7361
  const cwd = dirname6(targetPath);
7262
- const relPath = relative7(cwd, targetPath);
7362
+ const relPath = relative8(cwd, targetPath);
7263
7363
  const { stdout } = await execFileAsync("git", ["show", `HEAD:./${relPath}`], {
7264
7364
  cwd,
7265
7365
  maxBuffer: 10 * 1024 * 1024,
@@ -7279,7 +7379,7 @@ var IGNORE_NAME_SET = /* @__PURE__ */ new Set([".git", ".svn", ".hg"]);
7279
7379
  var SEARCH_IGNORE_NAME_SET = /* @__PURE__ */ new Set(["node_modules", "vendor", "__pycache__"]);
7280
7380
  function hasForbiddenSegment(fullPath, cwd, ...nameSets) {
7281
7381
  if (fullPath === cwd) return false;
7282
- const relPath = relative8(cwd, fullPath);
7382
+ const relPath = relative9(cwd, fullPath);
7283
7383
  if (!relPath) return false;
7284
7384
  const segments = relPath.split(/[\\/]+/);
7285
7385
  for (let i = 0; i < segments.length; i++) {
@@ -7323,7 +7423,7 @@ function createFilesystemState(ctx) {
7323
7423
  if (!s) continue;
7324
7424
  if (hasForbiddenSegment(full, cwd, IGNORE_NAME_SET, SEARCH_IGNORE_NAME_SET)) continue;
7325
7425
  if (fileScene.has(full)) continue;
7326
- const rel = relative8(cwd, full);
7426
+ const rel = relative9(cwd, full);
7327
7427
  const posixRel = toPosixPath(rel);
7328
7428
  allFiles.push({ id: posixRel, filename: rel, isFolder: s.isDirectory() });
7329
7429
  if (s.isDirectory()) await collect(full);
@@ -7335,12 +7435,12 @@ function createFilesystemState(ctx) {
7335
7435
  async function getSystemFilePath({
7336
7436
  projectId,
7337
7437
  path: inputPath,
7338
- isAbsolute: isAbsolute6
7438
+ isAbsolute: isAbsolute8
7339
7439
  }) {
7340
7440
  const project = storage.getProject(projectId);
7341
7441
  if (!project) throw new Error("Project not found");
7342
- if (isAbsolute6) return resolveSafePath(project.cwd, inputPath);
7343
- return relative8(project.cwd, resolveSafePath(project.cwd, inputPath));
7442
+ if (isAbsolute8) return resolveSafePath(project.cwd, inputPath);
7443
+ return relative9(project.cwd, resolveSafePath(project.cwd, inputPath));
7344
7444
  }
7345
7445
  async function copyFileToWorkspace({
7346
7446
  projectId,
@@ -7363,7 +7463,7 @@ function createFilesystemState(ctx) {
7363
7463
  }
7364
7464
  await copyFile(sourcePath, destPath);
7365
7465
  markProjectFsDirty(projectId);
7366
- return { success: true, destPath: toPosixPath(relative8(cwd, destPath)) };
7466
+ return { success: true, destPath: toPosixPath(relative9(cwd, destPath)) };
7367
7467
  }
7368
7468
  async function readUrlAsDataUrl({ url: inputUrl, mimeType }) {
7369
7469
  const MAX_FILE_SIZE = 20 * 1024 * 1024;
@@ -7418,7 +7518,7 @@ function createFilesystemState(ctx) {
7418
7518
  fileScene.add(full);
7419
7519
  const s = await stat4(full).catch(() => null);
7420
7520
  if (!s) continue;
7421
- const rel = relative8(cwd, full);
7521
+ const rel = relative9(cwd, full);
7422
7522
  results.push({ id: toPosixPath(rel), filename: rel, isFolder: s.isDirectory() });
7423
7523
  if (results.length >= SEARCH_MAX_RESULTS) break;
7424
7524
  }
@@ -7458,7 +7558,7 @@ function createFilesystemState(ctx) {
7458
7558
  const s = await stat4(full).catch(() => null);
7459
7559
  if (!s) continue;
7460
7560
  if (hasForbiddenSegment(full, cwd, IGNORE_NAME_SET)) continue;
7461
- const relId = toPosixPath(relative8(cwd, full));
7561
+ const relId = toPosixPath(relative9(cwd, full));
7462
7562
  results.push({ id: relId, name, isFolder: s.isDirectory(), ignored: false });
7463
7563
  }
7464
7564
  results.sort((a, b) => {
@@ -7737,7 +7837,7 @@ async function startSocketServer(socketPath) {
7737
7837
  res.writeHead(404, { "Content-Type": "application/json" });
7738
7838
  res.end(JSON.stringify({ error: "Not found" }));
7739
7839
  });
7740
- return new Promise((resolve8, reject) => {
7840
+ return new Promise((resolve9, reject) => {
7741
7841
  server.listen(socketPath, () => {
7742
7842
  const serverRef = {
7743
7843
  stop: () => {
@@ -7757,7 +7857,7 @@ async function startSocketServer(socketPath) {
7757
7857
  },
7758
7858
  socketPath
7759
7859
  };
7760
- resolve8(serverRef);
7860
+ resolve9(serverRef);
7761
7861
  });
7762
7862
  server.on("error", (err) => {
7763
7863
  console.error("[socket-server] Failed to start:", err);
@@ -8826,7 +8926,7 @@ function createSessionModule(ctx, deps) {
8826
8926
  askUser,
8827
8927
  shareToUser,
8828
8928
  skills,
8829
- search: search2,
8929
+ search,
8830
8930
  memory,
8831
8931
  imageGeneration,
8832
8932
  toolbox,
@@ -8836,7 +8936,7 @@ function createSessionModule(ctx, deps) {
8836
8936
  skills,
8837
8937
  askUser,
8838
8938
  shareToUser,
8839
- search: search2,
8939
+ search,
8840
8940
  memory,
8841
8941
  imageGeneration,
8842
8942
  toolbox
@@ -8854,7 +8954,7 @@ function createSessionModule(ctx, deps) {
8854
8954
  const server = await startSocketServer(options.socketPath);
8855
8955
  toolbox.registerToolboxRoute(server, options.project.cwd);
8856
8956
  skills.registerSkillsRoute(server, options.project.cwd);
8857
- search2.registerSearchRoute(server, options.project.cwd);
8957
+ search.registerSearchRoute(server, options.project.cwd);
8858
8958
  imageGeneration.registerImageGenerationRoute(server, sessionId);
8859
8959
  memory.registerMemoryRoute(server, options.project.id, sessionId);
8860
8960
  askUser.registerAskUserRoute(server, sessionId);
@@ -9113,7 +9213,7 @@ function createSessionModule(ctx, deps) {
9113
9213
  `[SendPrompt] Killed ${killed} agent terminal(s) from previous generation for session ${sessionId}`
9114
9214
  );
9115
9215
  }
9116
- await new Promise((resolve8) => setTimeout(resolve8, 30));
9216
+ await new Promise((resolve9) => setTimeout(resolve9, 30));
9117
9217
  }
9118
9218
  if (!session.title) {
9119
9219
  const firstTextContent = contents.find((c) => c.type === "text");
@@ -10016,6 +10116,7 @@ function createInferenceModule(_ctx, deps) {
10016
10116
  agentInfo,
10017
10117
  cwd,
10018
10118
  extNotificationSpecs,
10119
+ agentEnv,
10019
10120
  onSessionConnect: (connection) => {
10020
10121
  currentSessionId = `${agentId}:${connection.sessionId}`;
10021
10122
  },
@@ -10985,7 +11086,7 @@ function createImageGenerationModule(ctx, deps) {
10985
11086
  }
10986
11087
 
10987
11088
  // src/backend/toolbox.ts
10988
- import { join as join23, resolve as resolve7, dirname as dirname9, basename as basename4, extname as extname3 } from "path";
11089
+ import { join as join23, resolve as resolve8, dirname as dirname9, basename as basename4, extname as extname3 } from "path";
10989
11090
  import { writeFile as writeFile6 } from "fs/promises";
10990
11091
  import { createHash as createHash6, randomUUID as randomUUID13, randomInt } from "crypto";
10991
11092
  import * as qr from "qr-image";
@@ -11232,15 +11333,15 @@ function createToolboxModule(_ctx) {
11232
11333
  });
11233
11334
  server.registry("toolbox/image-metadata", async (payload) => {
11234
11335
  const { path: imgPath } = imageMetadataRequestSchema.parse(payload);
11235
- const absPath = resolve7(projectDir, imgPath);
11336
+ const absPath = resolve8(projectDir, imgPath);
11236
11337
  const sharp = await getSharp();
11237
11338
  const metadata = await sharp(absPath).metadata();
11238
11339
  return { result: extractMetadata(metadata) };
11239
11340
  });
11240
11341
  server.registry("toolbox/image-thumbnail", async (payload) => {
11241
11342
  const { path: imgPath, width, output } = imageThumbnailRequestSchema.parse(payload);
11242
- const absPath = resolve7(projectDir, imgPath);
11243
- const outputPath = output ? resolve7(projectDir, output) : join23(
11343
+ const absPath = resolve8(projectDir, imgPath);
11344
+ const outputPath = output ? resolve8(projectDir, output) : join23(
11244
11345
  dirname9(absPath),
11245
11346
  `${basename4(absPath, extname3(absPath))}.thumb${width}${extname3(absPath)}`
11246
11347
  );
@@ -11251,7 +11352,7 @@ function createToolboxModule(_ctx) {
11251
11352
  });
11252
11353
  server.registry("toolbox/image-resize", async (payload) => {
11253
11354
  const { path: imgPath, width, height, fit, output } = imageResizeRequestSchema.parse(payload);
11254
- const absPath = resolve7(projectDir, imgPath);
11355
+ const absPath = resolve8(projectDir, imgPath);
11255
11356
  const sharp = await getSharp();
11256
11357
  const resized = await sharp(absPath).resize({ width, height, fit }).toBuffer();
11257
11358
  const resizedMeta = await sharp(resized).metadata();
@@ -11259,15 +11360,15 @@ function createToolboxModule(_ctx) {
11259
11360
  const actualHeight = resizedMeta.height ?? height ?? 0;
11260
11361
  const ext = extname3(absPath);
11261
11362
  const base = basename4(absPath, ext);
11262
- const outputPath = output ? resolve7(projectDir, output) : join23(dirname9(absPath), `${base}.${actualWidth}x${actualHeight}${ext}`);
11363
+ const outputPath = output ? resolve8(projectDir, output) : join23(dirname9(absPath), `${base}.${actualWidth}x${actualHeight}${ext}`);
11263
11364
  await writeFile6(outputPath, resized);
11264
11365
  const metadata = await sharp(outputPath).metadata();
11265
11366
  return { result: { output: outputPath, metadata: extractMetadata(metadata) } };
11266
11367
  });
11267
11368
  server.registry("toolbox/image-convert", async (payload) => {
11268
11369
  const { path: imgPath, format, quality, output } = imageConvertRequestSchema.parse(payload);
11269
- const absPath = resolve7(projectDir, imgPath);
11270
- const outputPath = output ? resolve7(projectDir, output) : join23(dirname9(absPath), `${basename4(absPath, extname3(absPath))}.${format}`);
11370
+ const absPath = resolve8(projectDir, imgPath);
11371
+ const outputPath = output ? resolve8(projectDir, output) : join23(dirname9(absPath), `${basename4(absPath, extname3(absPath))}.${format}`);
11271
11372
  const sharp = await getSharp();
11272
11373
  let pipeline = sharp(absPath);
11273
11374
  const opts = {};
@@ -11279,7 +11380,7 @@ function createToolboxModule(_ctx) {
11279
11380
  });
11280
11381
  server.registry("toolbox/image-qrcode", async (payload) => {
11281
11382
  const { text, output, size, margin, errorCorrection } = qrCodeRequestSchema.parse(payload);
11282
- const outputPath = resolve7(projectDir, output ?? "qrcode.png");
11383
+ const outputPath = resolve8(projectDir, output ?? "qrcode.png");
11283
11384
  const png = qr.imageSync(text, {
11284
11385
  type: "png",
11285
11386
  size,
@@ -11328,11 +11429,11 @@ function initBackend(emitter) {
11328
11429
  const askUser = createAskUserModule(ctx, { ilink: ilink.state });
11329
11430
  const shareToUser = createShareToUserModule(ctx, { ilink: ilink.state });
11330
11431
  const skills = createSkillsModule(ctx);
11331
- const search2 = createSearchModule(ctx);
11432
+ const search = createSearchModule(ctx);
11332
11433
  const watcher2 = createWatcherModule(ctx);
11333
11434
  const toolbox = createToolboxModule(ctx);
11334
11435
  const bridgeConnect = createBridgeConnectModule(ctx, { askUser });
11335
- const _inference = createInferenceModule(ctx, { skills, search: search2, toolbox });
11436
+ const _inference = createInferenceModule(ctx, { skills, search, toolbox });
11336
11437
  const memory = createMemoryModule(ctx, { inference: _inference });
11337
11438
  const imageGeneration = createImageGenerationModule(ctx, { ilink: ilink.state });
11338
11439
  const session = createSessionModule(ctx, {
@@ -11340,7 +11441,7 @@ function initBackend(emitter) {
11340
11441
  askUser,
11341
11442
  shareToUser,
11342
11443
  skills,
11343
- search: search2,
11444
+ search,
11344
11445
  memory,
11345
11446
  imageGeneration,
11346
11447
  toolbox,
@@ -11725,7 +11826,7 @@ function initBackend(emitter) {
11725
11826
  await ilink.stopIlink({ logout: false });
11726
11827
  session.clearSession();
11727
11828
  await bridgeConnect.clearAll();
11728
- await new Promise((resolve8) => setTimeout(resolve8, 100));
11829
+ await new Promise((resolve9) => setTimeout(resolve9, 100));
11729
11830
  terminal.killAllTerminals();
11730
11831
  await watcher2.stopAll();
11731
11832
  for (const file of await readdir2(TEMP_DIR)) {
@@ -11736,7 +11837,7 @@ function initBackend(emitter) {
11736
11837
  }
11737
11838
 
11738
11839
  // package.json
11739
- var version = "0.1.48";
11840
+ var version = "0.1.49";
11740
11841
 
11741
11842
  // src/server/main.ts
11742
11843
  var port;